Follow Slashdot stories on Twitter


Forgot your password?
Programming IT Technology

The Best First Language For a Young Programmer 634

snydeq writes "Fatal Exception's Neil McAllister questions whether Scheme, a dialect of Lisp taught as part of many first-year CS curricula and considered by some to be the 'latin of programming,' is really the best first language for a young programmer. As he sees it, the essentially write-only Scheme requires you to bore down into the source code just to figure out what a Scheme program is trying to do — excellent for teaching programming but 'lousy for a 15-year-old trying to figure out how to make a computer do stuff on his own.' And though the 'hacker ethic' may in fact be harming today's developers, McAllister still suggests we encourage the young to 'develop the innate curiosity and love of programming that lies at the heart of any really brilliant programmer' by simply encouraging them to fool around with whatever produces the most gratifying results. After all, as Jeff Atwood puts it, 'what we do is craftmanship, not engineering,' and inventing effective software solutions takes insight, inspiration, deduction, and often a sprinkling of luck. 'If that means coding in Visual Basic, so be it. Scheme can come later.'"
This discussion has been archived. No new comments can be posted.

The Best First Language For a Young Programmer

Comments Filter:
  • by Norsefire ( 1494323 ) * on Saturday July 25, 2009 @10:29AM (#28818409) Journal
    No, it's *my* favourite language. Your favourite language is awful.
  • by sakdoctor ( 1087155 ) on Saturday July 25, 2009 @10:54AM (#28818631) Homepage

    In before old people telling you about punch cards.

    Come to think of it, is there a way to do calculations with kids on/off your lawn?

  • by ceoyoyo ( 59147 ) on Saturday July 25, 2009 @10:56AM (#28818651)

    The best first language for a young programmer is english with possibly a little bit of boolean logic, because then he could search Slashdot and find one of the Ask Slashdot stories about what the best first language for young programmers is that appear every couple of months or so.

  • by rolando2424 ( 1096299 ) on Saturday July 25, 2009 @11:04AM (#28818727) Homepage
  • by Anonymous Coward on Saturday July 25, 2009 @11:44AM (#28819051)
    Looks like sak was just in time....
  • by Abcd1234 ( 188840 ) on Saturday July 25, 2009 @11:49AM (#28819097) Homepage

    Because <my language> is better than <your language>! And here on Slashdot, we need few reasons to enjoy a good language war. So go away with your "reason" and "logic"! We've got a pointless battle to fight!

    And for the record:

    1) Java and C# suck because they require N levels of nesting before they can type "Hello World".

    2) Assembly/C sucks because they're too low-level.

    3) C++ sucks because it's horribly byzantine.

    4) Scheme/Lisp/Haskell sucks because they're confusing.

    5) Python/Perl/Scripting language du jour sucks because they're garbage collected and hide too much from the programmer.

    6) Every other language sucks because it's not my favorite language.

  • by NotBornYesterday ( 1093817 ) * on Saturday July 25, 2009 @12:08PM (#28819231) Journal
    Hah! You kids and your damn punch cards. When I learned programming, we had to use pointy sticks to press individual zeros and ones into a clay tablet. Assembler? Compilers? Hah again! We learned to bake our code tablets in the sun, because there was always a line to get them kiln-dried.

    This was before lawns were invented.
  • by Fred_A ( 10934 ) <fred@fredsh o m> on Saturday July 25, 2009 @12:26PM (#28819389) Homepage

    Then maybe they should start them with Lisp instead? :)

    Then we'll have lots of programmerth all over the plathe. As if nerdth didn't thuffer from an image problem as it ith.

  • by Anonymous Coward on Saturday July 25, 2009 @12:27PM (#28819393)
    Maybe you're in the wrong field. Can you use a mop wringer?
  • by Dun Malg ( 230075 ) on Saturday July 25, 2009 @12:56PM (#28819619) Homepage

    Turbo Pascal

    What a bloody nightmare. I learned Pascal in high school. Two years later when I learned C, I found myself wondering why the fuck anyone would inflict Pascal on people trying to learn programming. I later ended up maintaining a piece of business software written in Turbo Pascal (and later, stuff written in fucking Delphi) and found myself entertaining fantasies of building a time machine and choking Anders Hejlsberg to death in his bed in 1980 before he could inflict his monstrosity on the world.

  • by jlar ( 584848 ) on Saturday July 25, 2009 @01:21PM (#28819827)

    Personally I would recommend C++ or Fortran since that should quickly kill their interest in programming. And I really don't want more competition from bright young people.

  • by plnix0 ( 807376 ) on Saturday July 25, 2009 @02:04PM (#28820169) Homepage
    After all, how can you start programming in another language before you've even got your editor configured?!
  • Re:Assembly (Score:3, Funny)

    by ahabswhale ( 1189519 ) on Saturday July 25, 2009 @02:26PM (#28820287)
    I agree with your last statement but the rest of your post I can do without.

    Assembler is great but it's a horrible choice for a first language. It was fine as a first language 30 years ago when people had simple expectations for software. I'm not saying to never learn it, but it's unnecessary as a first language.

    C is not the most widely used commercial language and it certainly does not lead the way in open source (the open source movement started with Java). Both those categories belong to Java. As to my first point, look here: []. That said, there's nothing wrong with learning C but it's hardly the future so I don't really recommend it except for the purpose of getting a background in procedural programming, pointer manipulation and manual memory management.

    C++ it utter trash and a disaster of language that nobody should learn or use except to learn what not to do when designing a language.

    learning Java and Python are good choices (although Java is getting a little long in the tooth but exposure to the JVM is a good thing).
  • by martas ( 1439879 ) on Saturday July 25, 2009 @03:02PM (#28820589)
    just tell him to learn Lisp. one of two things will happen:

    1) his brain will melt. problem solved.

    2) he'll see the matrix and ascend to a higher plane of existence. With no more motivation left to get a job, he won't be any competition to you. problem solved.
  • Re:Assembly (Score:5, Funny)

    by Draek ( 916851 ) on Saturday July 25, 2009 @03:53PM (#28820993)

    First, learn assembly, it teaches you how the machine works. (You should probably also learn electronics and digital logic)

    Better yet, first make them learn Lambda calculus, then make them understand the Church-Turing thesis. Only when they fully grasp the nuances of an Universal Turing Machine should they even *touch* an actual computer and program in Assembly.

    Or perhaps teaching "from the bottom-up" isn't such a good idea.

  • Re:Pascal (Score:4, Funny)

    by Massacrifice ( 249974 ) on Saturday July 25, 2009 @05:41PM (#28821825)

    It's a bit like the difference between living in your mom's basement and having her come and clean up you room randomly when you're not at home (or when she thinks you are not, but are in fact, having a good time with your girlfri... I mean, inflatable doll)

    Call me perverted, but as a Java programmer, I AM THE MOM, and the program is the permanent teenager. And I don't want that teen to fuck $whoever in the basement, without me knowing - no, without me _asking for it_. Garbage collection is just an automated facility (think of a roomba) to help me control the mess the goddamn kid creates (used condoms and smelly sneakers).

  • Re:Pascal (Score:3, Funny)

    by julesh ( 229690 ) on Sunday July 26, 2009 @05:35AM (#28825515)

    I wrote: And I'm still far from convinced that a functional language is the best way to start. A lot of standard tasks are complicated by the functional approach. Alice at least is based on Standard ML which is not a pure functional language (more along the lines of LISP than, say, Miranda, the language I learned functional programming with), but I'd still avoid it for a few reasons, most notably the fact that the only GUI binding available for it is GTK+ which is a very complicated environment that I would say is not suitable for beginners.

    And then I discovered there are two different languages called Alice. Mea culpa.

To invent, you need a good imagination and a pile of junk. -- Thomas Edison