First programming language for high school students?
-
If not assembler, which would have forced him to know what a computer really is, then Java with clean object orientated code.
Rosenne wrote:
Java with clean object orientated code.
Java clean? :~ Smalltalk maybe, but not Java.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Ultimately it depends on why your son wants to learn programming. What is his interest? Games? Websites? User applications? Server apps? I would choose a language that would lend itself well to his interest and is not overly cryptic in syntax and semmantics. Even if you don't know the language, you could both learn it together. Just start with the basics like variable declarations/assignment and flow control with plenty of application. Don't rush the learning process. From there it will all depend on if he wants to be a software engineer, a software developer or something else. C#, C++, Java, and VB.NET are all good introductory languages. If it were my son, I'd choose C++ and teach him to clean up after himself. ;) It would make him a better programmer in the long run.
Justin
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I agree that a well-rounded, quick results language is an excellent starting point, but I prefer to point people to the web. There are so many places to post a free web-page or small web-site complete with ASP, CSS, PHP, Python, etc. I found I could actually teach my (nearly) elderly father to think more like I do by having him write in HTML. The turn-around results are essentially instant. Expanding from that (which is something we have all had to do) to PHP 3 was really easy once I got him to understand that the directives were essential. My programming education was in the order of BASIC -> Pascal -> Java -> C++ -> PHP. Honestly, being dumped from Pascal to Java nearly drove me out of programming. I still can't do Java to save my life. It wasn't until I got to PHP that I got fired up again.
--Taf P.E.B.C.A.K. (Problem Exists Between Chair And Keyboard)
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
IronPython, using the .NET framework and NotePad++ for editing. Then move to VB.NET with VS Express. Then to C# Then F# Then look at the IL0 to learn (a bit) about assembly ... then grab the MMIX simulator for hard core fun. Then move out to C or C++ Then Lisp Then Squeak (smalltalk) Note, I'm suggesting that one is better than another. However, python is a dynamic language (you can type on the command line an watch things happen). Using NotePad++ you get color highlighing without intellisense (it's good when you are just starting to look things up, you learn more about the classes that way). The exact languages or order after that isn't so important, but it's useful (if he remains interested) to learn how different languages approach similar problems. If he likes programming you might consider getting him involved in one or two of the many coding contests, they can be valuable learning experiences ... and fun :-) Good luck to you and your son
-
Wow! Consider this response my alternative to a 1 vote: Just how out of touch are you with the concept of a kid learning something new for the first time? By your logic instead of giving children coloured blocks with letters on them we should be teaching them grammar instead. People have to get an *interest* in something to learn it, hitting them over the head with a lot of fussy details is exactly the right way to get someone to *not* be interested in learning to program. Typing skills? Who cares? If they are bitten by the bug and interested enough then you don't even need a teacher at that point, they'll learn everything they need to know on their own. I didn't even have a computer when I first learned to program, I found a good book on the topic, got interested and wrote many programs in a notebook by hand until I got my hand on a computer for the first time many months later.
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
+1, go with something you know well enough to help avoid too many dead ends. But that said, learning to overcome roadblocks is part of the process. Don't help too much. If the kid has a lot of drive, get something installed since installation these days can be a barrier to success (VS2008? Some other framework / IDE?), then give them a *few* pointers (not necessarily the C kind yet) and step out of the way. Wait to be asked. When walking, some tumbles are part of the process. You can't do that for them, and with out it they can't really learn. Have fun, both of you! P.S. I've heard that after Python, nothing is the same.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
My recommendation would be Scheme - and there is even a good free textbook aimed at high school students available online. There is an ever increasing focus on functional technologies even in OO circles (LINQ, etc), so having a good understanding of that approach to problems should help across most platforms. http://www.htdp.org/
-
When your father taught you to drive, did he start with the chemical reactions of gasoline molecules involved in combustion? Chances are he didn't even bother with the principles of internal combustion. Point being, you can learn this stuff afterward--and in fact if it turns out he really is interested I would fully recommend learning the nitty gritty details of computers--but how it works is not how to use it, and laying this stuff on him will accomplish nothing but tax his memory. And now for a random psychological thought: the human mind needs order and structure to learn. If you start laying a bunch of lower principles on him, without having a logical place (i.e. understanding) to store that information, he will just have to try to remember it all without understanding its purpose (remember cramming for exams?). On the other hand, if you start with the purpose, the reasoning and the big picture, he can start to build that tree up in his mind and put the branches where they belong--and this time because it's (forgive the pun) rooted, they'll stay there.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
While I somewhat agree with the "jump in and drive" notion, programming is going to range from "Mechanic" to "Engineer working on NewPanaceaEngine #45," whereas driving gets you into your editor. If you have a good understanding of either Java or C# (especially in terms of how they manage memory for you, which will be important once you're working on algorithm implementation... probably sooner than one might think) they can be good learner-languages because they provide a VERY easy starting point, both can transition to a GUI quickly, both are applicable almost everywhere (too clunky for ad-hoc scripts, for example, but that's hardly something to worry about when you're trying to get started), and both have a nice $0 price tag complete with some nice development helpers. It's really just a matter of "pick your poison" as far as if you want to be locked into MS for a while, or locked into Sun for a while. Personally I'd go with C/C++ though- all the power you need if he really dives into things and wants to learn all that lower-level stuff the runtime languages have decided to shield you from, but easy to pare down to a simple subset for getting one's feet wet without being overwhelmed. Graphics might be a bit of a stumbling block (but really, anything more complex than a form is tricky no matter what you're writing in), but the ability to do almost any "type" of programming (OO, functional, assembler...) without changing your "base" language is a big plus IMO.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
In my humble opinion the first language you should teach him is flow charting on paper. I know none of us actually do that anymore, but he needs to understand structure & logic of problem solving on the computer before he jumps into any language. If he can flowchart the problem using the common elements of computer languages it will not matter which language he uses. Languages are fundamentally the same, differing only in syntax, strictness and ease of use. Much like wives and girl friends are fundamentally the same, but each one is different. You have to learn the core rules of dealing with the opposite sex and then how to interface with each one. Now if you come up with a teaching program for that problem please post it!
-
killabyte wrote:
or Object Pascal for a first syntax to learn
Why on earth would you teach somebody just learning programming a dead language? Pascal hasn't been used in years. That's like teaching a baby Latin! Personally I don't even agree with teaching so-called "educational" languages like Turing. I honestly don't understand why people claim such languages are easier or better to learn. Why not just start with the latest language and tools? C# and VS2008. That's what I would do. I mean if he has trouble grasping it or it is too much of an overload maybe you could simplify things by breaking it down and focusing on a very simple language. I'll admit the initial overhead of C# (i.e. setting up classes, a static Main method, etc.) could be intimidating but you could always just say "ignore this for now and I'll explain it later". :) Just my 2 cents.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
logan1337 wrote:
Personally I don't even agree with teaching so-called "educational" languages like Turing. I honestly don't understand why people claim such languages are easier or better to learn. Why not just start with the latest language and tools? C# and VS2008. That's what I would do.
Because it sidesteps the holy war between the window and *nix camps. The 'official' compiler when I started college in 99 was borlands. IT was a compromise between the two camps. Past 'CS101' everyone either used GCC or VC6 as personal preference and targeted platform dictated. It was fun once, we had a comparative programming assignment where everyone wrote the same app and then evaluated each others code. The version of VC6 and the version of GCC being used disagreed on namespace issues. Unless you knew about it in advance and used the preprocessor to work around it there wasn't any cross platform compatibility. :doh:
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
When helping a student (high school) to choose which lanaguge to learn first, a meaningful analogy can and should be drawn between that student choosing his first computer language to learn and his first foreign language to learn. Which language is better for his career is irrelevant he will get to that soon enough. If my son chooses to learn Greek not Spanish I will be enthusiastic. If he wants to learn Turbo or XQuery I will also be enthusiastic. Why, because his enthsusiastic and free choice, not based on pragmatism, but his curiosity and intuition will help him continue down what hopefully be a very enjoyable and exciting journey. With that in mind, when choosing which language to "take" aka learn, what the young student needs is a "course" catalog elucidating the differences (benefits and qualities) between as many of the languages as possible. A resource such as: http://www2.latech.edu/~acm/HelloWorld.shtml or http://home.nvg.org/~sk/lang/lang.html are ideal. And these are only two examples from a quick search on DMOZ under http://www.dmoz.org/Computers/Programming/Languages/Comparison_and_Review/ Therefore, I think by and far the best (most enjoyable and educational for the student) help that a parent can give their child whom is choosing their first language to learn is to give them as descriptive a "catalog" with as many languages as you can find. So they can be excited about the decision they as what will always be (looked back upon many years later) as their first (perhaps of many) language.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I think you should start your son off with a functional Language. Yes I know, this is the religious war you were talking about avoiding. But if the Idea is to present him with the essence of what we do; IMHO that is a basic understanding of the implementations of algorythms, there is nothing that makes it clearer than a functional langusge. Yes, I kno it's not going to directly prepare him for a J-O-B, but he's in the 9th grade. As to which one, I personally favor Haskell.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
IMO, every student should be forced to take a logic course before being taught any language. Logic is the basis for every programming language. If you don't know it, then you can't really learn howto program. If, then, else, and, or, nand, nor, xor. If you don't understand all of these concepts (and I truely mean understand them), you will never be a quality programmer. IMO, basic (not necessarily Visual) is the simplest implementation of logic out of any of the other languages. I would suggest teaching logic using basic initially. Followed by teaching application structure in various languages starting with Basic/VB, C, C++, C#, and last but not least, HTML. After that, they can choose which language (if any) they want to delve into in depth.
-
logan1337 wrote:
Personally I don't even agree with teaching so-called "educational" languages like Turing. I honestly don't understand why people claim such languages are easier or better to learn. Why not just start with the latest language and tools? C# and VS2008. That's what I would do.
Because it sidesteps the holy war between the window and *nix camps. The 'official' compiler when I started college in 99 was borlands. IT was a compromise between the two camps. Past 'CS101' everyone either used GCC or VC6 as personal preference and targeted platform dictated. It was fun once, we had a comparative programming assignment where everyone wrote the same app and then evaluated each others code. The version of VC6 and the version of GCC being used disagreed on namespace issues. Unless you knew about it in advance and used the preprocessor to work around it there wasn't any cross platform compatibility. :doh:
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
dan neely wrote:
Because it sidesteps the holy war between the window and *nix camps.
Yes, that's a good point I hadn't thought of. I guess ideally we would have "standard" languages for programming like we do for XHTML, XML, etc.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Take a look at this: http://phrogram.com/[^] My 14 year old loved the predicessor to www.phrogram.com which was www.kidsprogramminglanguage.com. I may need to buy this new version. As said in a previous post, kids (all learners) need to get some immediate gratification in order to build confidence and excitement. Once you accomplish that, their own motivations will take them far. I like this approach because at its core is the .NET framework. The writers have gone through a lot of effort to make the experience very visual. The point is that syntax is 2nd to helping someone get familiar with constructs. Teach the power of an "if" statement or a "loop" and don't get caught up in "curly backets or not" :doh: discussion. In KPL, you could dig down into the "real" code. I haven't investigated this version to see if that is allowed. Yes, a smart kid will get bored with the high-level language this provides, but the tool should allow them to go deep if they want. Use this tool to build their learning context. This tool introduces concepts that become complicated very quickly if they are trying to accomplish the task raw. Ever try to go directly at DirectX to produce a 3D game? Not entry level. However, this introduces the concepts, helps the kid build some momentum and lets them have some fun. Then, if they love it, they can take it head-on and will have established a context from which they can work. Good luck. The best teacher isn't the one who gives all the answers; its the one who asks the best questions. :-\
Joel Palmer Data Integration Engineer
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
vb.net is one of the best choices to learn programming and to produce applications faster. After seeing a complete application done easily kids would be impressed and attracted more and more by programming world. Through the years and when the experience grows the little programmer will have a better idea about what he/she wants ( kind of programming he/she prefers). In addition, it will be clear to him that there are more sphisticated programming languages and more powerful ones to do advanced tasks. I think that learning VB.NET or C# at the beginning and then to move to C/C++ to have full power ;)
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
For complete beginners (as I was ;) ) I recommend AutoHotkey. Although a script-language, it has everything but shiny graphics: advanced+easy GUI making (easier than MFC ;P ), very good file manipulation (great with text files), simple sound, PLUS, it can compile scripts to exe (what more do you need?). You should see what some people have done with it, in fact you can do anything that ntdll.dll or any other system dll has exported function for (pointers and buffers, no problemo), plus some COM stuff. That's basics, as a next step toward geekness, c++ is the one and only way.:cool:
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I'd say teach him anything object oriented and try to use visual drawings to represent classes and objects. I agree with the people who said instant gratification is the key. I've found myself in many a situation where i'm trying to learn something and i've become quickly disinterested becuase i wasn't getting anywhere with it. I started off with c++ but didn't really get it. Then i started learning java and programming started to to make a little more sense to me and i understood why hello world was showing up on my screen by didn't understand how it was drawn yet. then i went to visual basic and started understanding logic better. I did a little web development project in PHP and really got a good understanding of logic. I finally graduated college, had to learn C# at my first job and now i can teach programming if i wanted to. I think that for anyone, if they're interested enough, as long as the understand programming logic they can easily learn any language. another suggestion is the use pseudocode techniques too help understand the logic that's going on. One learning tool i've used was a tool that let me drag objects on a screen and connect them to create a flow of logic. i think that was the biggest "boulder" to help knock the barrier between me and programming. it's called Visual Logic - http://www.visuallogic.org/[^]. I think you should definitely try this tool.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
QBasic. Sidestep the whole Windows GUI thing altogether until he's ready for it. Download a whole bunch of QBasic games that he can play with, and if he wants to modify variables while playing, he can hit Ctrl-Break to change values on the fly. My first experiments with programming were changing how much energy I had left in Star Trek games in gw-basic (avoid that, he'll thank you for the GUI in the programming interface). There was even a game I enjoyed called "Archie" (the cockroach main character of the game) that explained some basic programming concepts in-game (the spaghetti code explanation still sticks with me). As he mods games, he'll gain an understanding of how they were put together, and he'll have plenty of source code to base his own ideas on. Eventually he'll grow tired of the limitations of the language. He'll want to do different things with variables that QBasic doesn't make easy. When he gets to this stage, it's the perfect time to springboard him into C++. When you introduce pointers, it'll be that much more real to him, because he will be able to see how they would have been useful in QBasic. Ditto for classes and the like (actually, years after the fact, I returned to QBasic and discovered that it did, in fact, have user-defined datatypes, which I would have liked to know what they were at the time). And after he's made a few of his own interfaces, he'll learn to appreciate the value of having newer languages make GUIs easy. Or maybe that was just me. :)
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Just so you know, I'm currently 15 (at time of writing - 02/07/08) and I would personally recommend, as a first language, any of the 'Basic' family of languages. Not that I'm a particular VB .NET fan (I started programming before the release of .NET express editions so I didn't use it first), but I think that it is by far the most readable to a non-programmer and just by looking at a portion of code e.g.
If Str.Equals(OtherString) Then
' Do action
End Ifit is clearly obvious what the code does! Also, for that matter, .NET has excellent RAD capability and no one wants to start learning to program on the console (although I did...) as most fun or simple programs look a lot better and seem more fun with a GUI... Also, for that matter, the .NET languages also work on Linux and OS X via Mono[^] so they suit both platforms... After VB .NET, C# is an obvious progression at least temporarily and it is worth learning to be able to write both as one is normally better than the other for most projects... Finally, with a bit more experience, I found that scripting for websites is also a nice thing to learn as it helps with your syntax for languages such as C# if you learn PHP or Perl. The other obvious choices are Python and Ruby as they are rising fast and being used everywhere... (although Python is already used everywhere :-D ) Python, while being fairly easy to understand, is used everywhere and, as a quick and simple way to learn python for younger users, Guido van Robot[^] is an option which is a beginner's language based on python! Finally, I hope my fairly lengthy response has helped and maybe been of some use to you! Best of luck, TechKid P.S. As a side note, don't go for what I did which is to learn windows shell scripting and C++ first (many years ago) because, though it worked for me, it induced a large time delay as C++ is not very GUI friendly compared to the .NET languages. Since we have such useful and simple languages available now (which I didn't then), it is probably worth starting with one of them :-D
-
Sorry, I've at least had the decency to point out both my opinion and personal experience that lead to this opinion. If you feel that's bullshit, fine. If you could provide arguments as to why this is bullshit, all the better. I might consider it worthwhile, I'm not perfect after all. But please stop flaming, thank you.
Ignore him, he sounds like a dolt. My point is that there needs to be something that sparks interest and it must be easy at first. Without that initial spark of interest nothing in the world will cause that person to want to go through all the painful lessons of being a good programmer. You need to get them interested in an easy way and then let them take off with it on their own (learning the hard bits) or drop it if they have no further interest. People of all ages need the initial impression that something is easy and fun before they will take take it any further.
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson