I have seen that a few people have been wanting to move on to other languages and the scratch admins and other experienced users also encourage this. I just think that since scratch does such a good job introducing the basics of programming they should also have a place for people who want to move on to more complex languages. That way they have a place that is familiar to them and they can ask questions on different languages. I am sure a few people here to want to start programming in a new language have no idea how to start and it would be helpful to talk to other people who know how to program and would explain things so that a beginner could undersand.
Please tell me what you think about this.
Last edited by archmage (2008-06-04 22:04:57)
Offline
yeah really, I'll be switching to Python soon and I have a class at a summer school that's going to teach it to me, but I might not learn everything I'll need to know
Offline
Your going to a class? I was gonna, but then my mom said she was doing, so she'll give me the stuff. I'll probably end up tutoring her...
Offline
This is a great idea! There are many programming languages out there and they all have their strengths and weaknesses. It would be helpful to provide language overviews as well as links to learning resources. A place to post questions would also be valuable.
What is the best way to address this idea? You could start with a gallery with a project for each language that provided a brief overview and provided a place for people to ask questions. The downside of that approach is that the discussion would not be seen by many people. Maybe a gallery like that coupled with a Forum area or at least a Forum posting in Advanced Topics.
Offline
I like archmage's idea and Paddle2See's elaborations! I think questions like: Can anybody get me started how to do what I did in my Scratch project (link) in [...Fortran...] would be a perfect "Advanced Topic".
Offline
archmage wrote:
I have seen that a few people have been wanting to move on to other languages and the scratch admins and other experienced users also encourage this. I just think that since scratch does such a good job introducing the basics of programming they should also have a place for people who want to move on to more complex languages. That way they have a place that is familiar to them and they can ask questions on different languages. I am sure a few people here to want to start programming in a new language have no idea how to start and it would be helpful to talk to other people who know how to program and would explain things so that a beginner could undersand.
Please tell me what you think about this.
One of the problems that everyone must face is that Scratch gives students the impression that programming is deceptively simple. In other words, it is easy to do fun (but not particularly useful) things using Scratch. Another problem is that Scratch uses non-standard terminology for loops, which will increase the student's difficulty of making the transition into a more traditional programming language.
While Scratch is very weak in many of the things that are required of real-world programmers (data structures, OOP, 3D, file IO, etc), Scratch makes it easy to do many of the things that are fun but difficult in other languages (music, animation, etc.)
With the exception of Scratch and Alice, I know of no other programming language that makes it easy to do the fun things.
My concern is that after getting started with Scratch (which is a good thing if it causes them to become interested in programming), students will develop a false sense of programming expertise and feel that they are up against a brick wall once they start trying to learn how to program in Java, Python, PHP, C++, C#, VB.net, etc. For most, the transition will require a great deal of study and effort to learn enough to be able to do something like create an original musical composition, or control an animation using events, which they found to be very easy in Scratch. For many, that will be discouraging, particularly for those who have developed a false sense of programming expertise while writing Scratch scripts.
I am concerned that many students will simply give up at that point and either leave the programming field altogether or slide back into Scratch. That would be unfortunate because once a students learns the fundamentals of Scratch, further involvement in Scratch will do very little for them from a programming education and/or career viewpoint. (One major exception to this is that continued involvement in Scratch will help a student to develop creativity.)
The Scratch team at MIT should be working on something to ease the transition for students from Scratch to "real-world" programming. The hard truth is that life in the real world of programming is not kindergarten. Developing programming expertise in the real world requires a great deal of time and effort, most of which is not fun and games.
Because most "scratchers" are accustomed to instant and exciting feedback, I would currently recommend Alice as the next step beyond Scratch. In its current form, even Alice v2.0 is limited in terms of educational potential and preparation for a career, but it does build upon what a student has learned in Scratch and will take the student to another level. If nothing else, it will require them to start thinking in terms of 3D instead of 2D and will introduce them to a crude form of multi-threaded programming. They will also learn a little about objects, but will learn essentially nothing about OOP.
If CMU ever succeeds in releasing Alice 3.0, it is designed to bridge the gap between the "fun" languages and the "serious" languages by providing a natural pathway into Java. Only time will tell if CMU is successful in this regard.
Offline
I am taking a Visual Basic course over the summer, and intend on moving over to Java and Flash in a bit, but I will not forget Scratch!
Offline
Cyclone103 wrote:
I am taking a Visual Basic course over the summer, and intend on moving over to Java and Flash in a bit, but I will not forget Scratch!
There is no need to forget Scratch. It can be a lot of fun even for the most experienced programmer. Just don't allow it to remain as your primary programming vehicle once you have mastered its basic capabilities.
Offline
dbal wrote:
One of the problems that everyone must face is that Scratch gives students the impression that programming is deceptively simple. In other words, it is easy to do fun (but not particularly useful) things using Scratch. Another problem is that Scratch uses non-standard terminology for loops, which will increase the student's difficulty of making the transition into a more traditional programming language.
Programming in Scratch is simple, there is no deception involved. Programming in most other languages is more complex...maybe they need to be redesigned. As far as non-standard terminology...there is no inter-language naming standard and budding programmers had best get used to learning different terminology.
dbal wrote:
My concern is that after getting started with Scratch (which is a good thing if it causes them to become interested in programming), students will develop a false sense of programming expertise and feel that they are up against a brick wall once they start trying to learn how to program in Java, Python, PHP, C++, C#, VB.net, etc. For most, the transition will require a great deal of study and effort to learn enough to be able to do something like create an original musical composition, or control an animation using events, which they found to be very easy in Scratch. For many, that will be discouraging, particularly for those who have developed a false sense of programming expertise while writing Scratch scripts.
Many Scratch programmers are developing a very real expertise in their current language; Scratch. There is no "false programming expertise". Your concerns about transitioning to other languages are valid; it is a big step from Scratch to most other commercial languages. That is actually a complement to how well-designed the Scratch development environment is. If the Scratch development team continues to add capabilities to Scratch, it could gradually transition from a purely educational language to more of a utility language, much as BASIC did for a previous generation of programmers. This would help "bridge the gap" in that it would allow Scratch students to explore more complex programming concepts and simultaneously extend the usefulness of Scratch maybe to the point where transitioning is not required for a larger portion of the population. Personally, that is where I would like to see Scratch go.
Offline
Perhaps I should explain what I meant by a "false sense of programming expertise" and "deceptively simple" with a couple of (rather poor) analogies:
As an analogy, I will equate "programming expertise" with developing expertise in tennis or golf. I will equate "scratch programming expertise" with developing expertise in table tennis or miniature golf. Developing expertise in table tennis is not equivalent to developing expertise in tennis and developing expertise in miniature golf is not equivalent to developing expertise in golf. Similarly, developing "scratch programming expertise" is not equivalent to developing "programming expertise," even though when viewed for what it is, developing scratch programming expertise is a very good step along the way.
Few would be led to conclude that expertise in table tennis is equivalent to expertise in tennis, or that expertise in miniature golf is equivalent to expertise in golf because the differences between table tennis and tennis and the differences between miniature golf and golf are obvious even to the beginner.
However, the differences between scratch programming and real-world programming are not obvious to the beginner. It would be very easy for a student who has developed expertise in scratch to erroneously conclude that he or she has developed expertise in programming and then become totally disillusioned when confronted with the requirement to learn how to perform object-oriented programming in C++ for example. That is what I meant when I said that scratch programming is deceptively simple. That is also why I believe that the folks at MIT should take it upon themselves to provide some sort of path to help students make the transition from scratch to languages such as C++, C#, Java, and VB.net.
Last edited by dbal (2008-06-05 13:38:48)
Offline
The suggestion for forums for 'other languages' is great. It would provide a way to switch from scratch to [basic].
Dbal - I agree you need other experience to program in [C++,Java] then Scratch. But i also think you learn the 'logic structure' of programming when using Scratch.
I think the Scratch team should not create a path between Scratch and other programming languages. I also ton't like the example of 'Scratch' and 'C++'. There are languages 'in between' that provide a very good way for Scratch programmers to earn knowlege of other languages. (JUSTbasic for example)
Offline
Jens wrote:
I like Stephane Ducasse's work very much: http://smallwiki.unibe.ch/botsinc/
Very nice! Thanks for bringing that to my attention.
Offline
JSO wrote:
The suggestion for forums for 'other languages' is great. It would provide a way to switch from scratch to [basic].
Dbal - I agree you need other experience to program in [C++,Java] then Scratch. But i also think you learn the 'logic structure' of programming when using Scratch.
I think the Scratch team should not create a path between Scratch and other programming languages. I also ton't like the example of 'Scratch' and 'C++'. There are languages 'in between' that provide a very good way for Scratch programmers to earn knowlege of other languages. (JUSTbasic for example)
I'm rather fond of the "Classic" BASICs as well but I wonder if they are a good model for modern programming since they really don't introduce Object Oriented Programming or Event Driven Programming.
Offline
dbal wrote:
JSO wrote:
The suggestion for forums for 'other languages' is great. It would provide a way to switch from scratch to [basic].
Dbal - I agree you need other experience to program in [C++,Java] then Scratch. But i also think you learn the 'logic structure' of programming when using Scratch.
I think the Scratch team should not create a path between Scratch and other programming languages. I also ton't like the example of 'Scratch' and 'C++'. There are languages 'in between' that provide a very good way for Scratch programmers to earn knowlege of other languages. (JUSTbasic for example)I agree that students learn a small part of the logic structure of programming using scratch (selection and looping). However, the next important step in logic structure beyond selection and looping is the use of functions, methods, subroutines, (whatever you choose to call them) with parameter passing and return values. As near as I am able to determine, user-defined functions with parameter passing and return values are completely unsupported by scratch. Beyond that, there are numerous other fundamental programming concepts that are not supported by scratch as well as many more important concepts (such as encapsulation, inheritance, and polymorphism) that are also not supported by scratch.
On the other hand, scratch's inclusion of events and message passing among scripts are a definite positive.
Regarding BASIC, although there is obviously much that goes on that I am not aware of in today's world, I am unaware of any college or university in the U.S. that accepts anything short of Java, C++, or C# as the programming vehicle in their computer science curriculum, although some of them do start out with pseudo-languages designed specifically for teaching. The standard for advanced placement exams in U.S. colleges and universities is Java. Except for VB.net (which looks nothing like your grandmother's BASIC), we haven't taught a course in BASIC for at least thirteen years at the college where I teach. I believe that I probably taught the last BASIC course at our college around 1995. (And the same is true of FORTRAN and COBAL although they are apparently still being used in some specialized applications.)
Also, except for VB.net, I am unaware of any company, U.S. or otherwise that develops commercial software using BASIC. Maybe I have been isolated in academia for too long, but I don't recall hearing anything about BASIC for eight or ten years until reading your post and an earlier post on this thread. Maybe BASIC is enjoying a resurgance that I am unaware of![]()
As I mentioned earlier, (with some reservations), I currently believe that the most obvious next step middle ground between scratch and C++ is Alice. It also uses the drag and drop paradigm, thus eliminating the possibility of syntax errors. It includes most of the programming concepts that the curriculum at my college considers to fall in the "fundamental programming" category, and it provides a great deal of immediate sensory feedback to capture and hold the attention of budding programmers.
The next step beyond that would logically be either Java, C#, or C++. For those students interested in advanced placement in a computer science curriculum, the obvious choice is Java. For those interested in the game industry, C++ (including embedded C for speed) seems (unfortunately) to be the best choice because that seems to be the language of choice at most of the game programming companies. Unfortunately, C++ is probably the most complex and difficult of all the modern OOP languages to learn.
Offline
I totally agree that people should use other langauges too, but scratch is special in it's own way. I plan to switch to java and flash gamemaking, and use visual basic for other things
Offline
geckofreak wrote:
I totally agree that people should use other langauges too, but scratch is special in it's own way. I plan to switch to java and flash gamemaking, and use visual basic for other things
My Aunt was gonna give me Visual Basic... How much does it cost (See about getting that rather than Photoshop)
Offline
Bluestribute wrote:
geckofreak wrote:
I totally agree that people should use other langauges too, but scratch is special in it's own way. I plan to switch to java and flash gamemaking, and use visual basic for other things
My Aunt was gonna give me Visual Basic... How much does it cost (See about getting that rather than Photoshop)
I think Visual Basic is a programming language, not a photo editor...
Offline
Bluestribute wrote:
geckofreak wrote:
I totally agree that people should use other langauges too, but scratch is special in it's own way. I plan to switch to java and flash gamemaking, and use visual basic for other things
My Aunt was gonna give me Visual Basic... How much does it cost (See about getting that rather than Photoshop)
Normally Visual Basic is part of Microsoft's Visual Studio development environment, which is fairly expensive. However, a free version is available at http://www.microsoft.com/express/product/default.aspx
Microsoft describes this as "Productivity that is ideal for first time or casual Windows programming." Although I have never used the free "Express Edition," my guess is that it is adequate for beginners just learning how to program using VB.
Note that several of the other languages included in Microsoft's VB.net are also freely available there in the Express Edition format.
Offline
Actually, I'll just get it, since you answered my question "Is it free" and get the full version.
Last edited by Bluestribute (2008-06-05 16:44:01)
Offline
This is a great discussion!
I find this part of archmage's post particularly interesting:
archmage wrote:
I am sure a few people here to want to start programming in a new language have no idea how to start and it would be helpful to talk to other people who know how to program and would explain things so that a beginner could undersand.
As a learner of languages such as Perl, Java, PHP or systems like Linux or applications like MySQL, I must say that having a community has helped the most. I probably couldn't have done it without their IRC channels or their online forums.
However, something that was very hard, is that the attitude of people in those communities towards beginners is extremely harsh. Terms such as RTF are enough to turn off a struggling learner. Compare that to Jens, Paddle2See's and many other great Scratchers in our Community that are always willing to help struggling Scratchers.
More than specific programming constructs, I do worry that there might not be friendly and welcoming environments for people who want to learn more advanced languages.
One of the things other programming languages could take from Scratch, I think, is the sense of a welcoming community.
Perhaps this is something you can get in a classroom with a good teacher. When I was in college learning Java and C++, it helped a lot having friends who I could ask questions.
Perhaps some groups of experts in other programming languages could take archmage's challenge and start an online community to help interested Scratchers transition to other languages?
Offline
andresmh wrote:
...
Perhaps some groups of experts in other programming languages could take archmage's challenge and start an online community to help interested Scratchers transition to other languages?
While it certainly doesn't stack up to Java and C++ in terms of raw power, for reasons that I have mentioned earlier (and will elaborate on below), I believe that the next logical step for Scratchers who want to move into more powerful programming languages is Alice (not BASIC, not Java, not C#, not VB.net, not Python, not PHP, and definitely not C++).
Alice 2.0 currently supports:
Object based but without polymorphism of any sort
Multiple types (Number, Boolean, Object, String, Color, etc.)
Many pre-defined methods and functions with parameter passing and return values at both the world level and the object level
User defined methods and functions with parameter passing and return values at both the world level and the object level.
Drag and drop paradigm similar to Scratch
Event-driven programming paradigm similar to Scratch
Interactive method execution similar to Scratch
while loops
for loops
forAllInOrder loops
forAllTogether loops
Single and multi-threaded programming
Fully 3D with independent control over the ground, multiple objects, lights, and the camera
Lists
Arrays
Properties and variables at the world level
Properties, variables, and poses at the camera, light, ground, and individual object level
Hierarchical structure for the program as a whole and for individual objects, such as:
entire object
head
upper beak
lower beak
right leg
foot
left leg
foot
right wing
left wing
And the list goes on and on.
Further, I believe that the Alice community at http://www.alice.org/community/ is very friendly and welcoming of newcomers. Note, however, that there are no such things as project comments and love-its that tend to foster competition among the members of the Scratch forum and to some extent tend to cause the Scratch forum to be part social network (like FaceBook) and part technical interchange network. Rather, the Alice forum tends to be a community that exists to exchange technical information among its members, providing technical information, advice, and guidance to those who need it.
Unfortunately, I know of no similarly friendly and welcoming forum for Java, C++, Python, PHP, etc.
However, when CMU releases Alice 3.0 (currently scheduled for fall 2009), it will provide a smooth transition path from the current drag and drop Alice paradigm to full OOP using Java and the Eclipse IDE. The same friendly and welcoming Alice community that exists now will also exit then.
Offline
dbal and others, since I only hear good things about Alice, I thought I'd let you know I'm downloading it
Offline
Bluestribute wrote:
dbal and others, since I only hear good things about Alice, I thought I'd let you know I'm downloading it
![]()
Good, let us know what you think about it, and if you need help on how to use it, click on the hyperlink in my signature below.
Offline
dbal wrote:
Bluestribute wrote:
dbal and others, since I only hear good things about Alice, I thought I'd let you know I'm downloading it
![]()
Good, let us know what you think about it, and if you need help on how to use it, click on the hyperlink in my signature below.
Or bookmark it (which I already did )
Offline