Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Education

Learning Programming In a Post-BASIC World 510

ErichTheRed writes "This Computerworld piece actually got me thinking — it basically says that there are few good 'starter languages' to get students interested in programming. I remember hacking away at BASIC incessantly when I was a kid, and it taught me a lot about logic and computers in general. Has the level of abstraction in computer systems reached a point where beginners can't just code something quick without a huge amount of back-story? I find this to be the case now; scripting languages are good, but limited in what you can do... and GUI creation requires students to be familiar with a lot of concepts (event handling, etc.) that aren't intuitive for beginners. What would you show a beginner first — JavaScript? Python? How do you get the instant gratification we oldies got when sitting down in front of the early-80s home computers?"
This discussion has been archived. No new comments can be posted.

Learning Programming In a Post-BASIC World

Comments Filter:
  • GUI? (Score:1, Interesting)

    by fisted ( 2295862 ) on Friday June 24, 2011 @11:04AM (#36555996)
    Beginners should not start with creating GUIs in the first place. (Neither did early BASICs support such a thing)
  • Logo and ML (Score:4, Interesting)

    by markov_chain ( 202465 ) on Friday June 24, 2011 @11:18AM (#36556310)

    I learned BASIC first. When I was shown LOGO, I wrote a few lines of code to draw a Sierpinski triangle, and thought to myself: there is no fucking way this can be this simple. It worked, though, and sure got me to appreciate the weird academic languages.

  • by fermion ( 181285 ) on Friday June 24, 2011 @11:21AM (#36556380) Homepage Journal
    It is not so much abstraction, but required basic skills. What one needs to do today is different from what a person had to do 20 years ago. Today only a small subset has to be able to manage memory, or write sort routines, or think carefully about parameter passing. Now the skills are designing objects, applying design patterns, writing short segments of procedural code, and, increasingly, writing code the will run parallel. I can code, but that last one is nearly beyond me, but will be critical for anyone who wants to do serious work.

    I too started with basic in middle school but it did not teach me much. In high school we did fortran, which taught me mad skills, then I taught myself C and C++. I still think C is important for people who want to do serious programming as it does not have the cruches of the other languages, is simple enough to be put in a two hundred page book, and will teach everything one needs to know about debugging and basic design.

    In terms of instant gratification, I would suggest writing web apps in python. Most of the GUI stuff is taken care of by the browser, Python takes care of parameter passing to and from the user, and one can teach all the concepts, aside form parralel programming. A kid can write any number of games and if one has access to a web server, it can be run anywhere there is internet access. Such a thing can be great motivational tool.

  • Re:what I did (Score:5, Interesting)

    by CastrTroy ( 595695 ) on Friday June 24, 2011 @11:27AM (#36556488)
    Python is not a good solution. Especailly if you are worried about syntax sensitivity as your parent poster was. Sure white space is a good thing to organize your code, but the actual execution of your program shouldn't be changed by the lack of whitespace. Python is a pretty good language overall, but forcing beginners to understand that whitespace makes a difference in how something executes is asking for trouble.
  • Python, Perl, Lisp, Scheme, BASIC, Java, JavaScript, shell... it doesn't matter. Pick up whatever feels most comfortable, or whatever tool is most readily available. Learn the basics of flow control, data structures, and the most fundamental algorithms. Learn how to debug, document, log, build, install and maintain.

    Once you've mastered these basics, move immediately to C (not C++). Programming in C will teach you what it is that you're actually doing in that high level language, and force you to manage everything that you want to do. You don't just instantiate a new class to get a thread or forget about that variable's storage when you're done with it. You have to think about the details and understand them, and even if your entire career is spent writing Python, you still need to understand these things. I'd recommend assembly, but there's a lot more well documented sample code in C to work from, and getting larger projects done in C is still practical, if somewhat painful.

    Once C is something you're comfortable with, trying out C++ is an excellent next step, but that's probably best determined by what you want to / have to work on.

  • Re:I like Ruby (Score:5, Interesting)

    by jarich ( 733129 ) on Friday June 24, 2011 @11:49AM (#36557020) Homepage Journal
    I've not used it, but here's the link: http://hackety-hack.com/ [hackety-hack.com] Looks like more of a general purpose intro for beginners to Ruby and/or coding.
  • Assembler (Score:4, Interesting)

    by Narishma ( 822073 ) on Friday June 24, 2011 @11:51AM (#36557050)

    How about starting with assembler?
    http://altdevblogaday.org/2011/03/24/machine-code-is-for-kids/ [altdevblogaday.org]

  • by jandrese ( 485 ) <kensama@vt.edu> on Friday June 24, 2011 @01:06PM (#36558202) Homepage Journal
    Back in the day I learned a lot from programming Hypertalk (Hypercard) on my parent's Mac LC. Despite the somewhat heavy syntax sugar, it really let you do a lot with very little, and all of that sugar meant that you could figure out what is going on by simply looking at the code. I'm still annoyed at Apple when they started shipping the player instead of the full development environment, and when they eventually dropped it entirely. The code is still around, but it's wildly overpriced for kids and example code is much harder to find.

    Still, the ability to put a button on the screen, and then pull up the code in the button to find:

    on mouseUp
    ask "Please enter a number"
    put it into theNumber
    answer "You entered " theNumber
    end mouseUp


    That's the sort of thing you can build off of very easily.

"If I do not want others to quote me, I do not speak." -- Phil Wayne

Working...