Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?
Check out the new SourceForge HTML5 internet speed test! No Flash necessary and runs on all devices. ×
Python Education Java Programming

Python Bumps Off Java As Top Learning Language 415

itwbennett writes: Python has surpassed Java as the top language used to introduce U.S. students to programming and computer science, according to a recent survey posted by the Association for Computing Machinery (ACM). Eight of the top 10 computer science departments now use Python to teach coding, as well as 27 of the top 39 schools, indicating that it is the most popular language for teaching introductory computer science courses, according to Philip Guo, a computer science researcher who compiled the survey for ACM."
This discussion has been archived. No new comments can be posted.

Python Bumps Off Java As Top Learning Language

Comments Filter:
  • by MAXOMENOS ( 9802 ) <{moc.liamg} {ta} {iamoxam}> on Tuesday July 08, 2014 @03:03PM (#47409815) Homepage
    2.x or 3.x?
  • by Art3x ( 973401 ) on Tuesday July 08, 2014 @03:05PM (#47409849)

    I can't wait for this generation to saturate the industry. Fewer bugs, better features, from less nonsense to code programs with. They might even be better as people, with clearer heads. Python might even help you think more clearly.

    • by X0563511 ( 793323 ) on Tuesday July 08, 2014 @03:08PM (#47409869) Homepage Journal

      That's not how it works. Bad programmers are bad programmers - it doesn't matter what language they touch.

      • Bad developers are bad no matter what. But good developers make less mistakes in a language where there's less freedom and ease to make mistakes. The recent openSSL bug is a good example. The person who made the mistake isn't a bad programmer, but he did make a dumb mistake. Something that wouldn't have even been possible in an intepreted language.

        Tools DO make a difference. They can very easily save you from yourself and not allow you to do things that you really shouldn't be doing.

        • by hondo77 ( 324058 ) on Tuesday July 08, 2014 @03:38PM (#47410119) Homepage

          But good developers make less mistakes in a language where there's less freedom...

          Some of us like having the training wheels off our bikes.

        • by cecom ( 698048 )

          Absolutely! OpenSSL should have been written in Python. In fact I am starting a new fork of OpenSSL called PythonSSL - we will be rewriting the codebase in Python to finally improve the performance and get rid of the horrible looseness of the abomination called "static typing" and declaring your variables, replacing it with dynamic typing where bugs are impossible.

        • by jbolden ( 176878 )

          What are you talking about? Interpreted languages let you reuse data structures for performance. What he did was a performance hack. If anything in languages where getting performance is more difficult we'd expect more, more complex and more subtle bugs like the SSL one.

    • That means I have to REALLY step up my Python chops if I want to compete.
    • by fnj ( 64210 )

      I can't wait for this generation to saturate the industry. Fewer bugs, better features, from less nonsense to code programs with. They might even be better as people, with clearer heads. Python might even help you think more clearly.

      You want to know what is really funny? What you said works perfectly if taken absolutely on the level.

  • by tlambert ( 566799 ) on Tuesday July 08, 2014 @03:07PM (#47409867)

    "Top Learning Language" ...OR... "Top Teaching Language"?

    Do we have some great metrics as to how well people taught in Python actually *learn*? You know, for things like memory allocation, pointers, and so on?

    • by pieisgood ( 841871 ) on Tuesday July 08, 2014 @03:16PM (#47409953) Journal

      I think they're going for teaching conditionals, loops, classes, functions and structure. You don't need to teach them about memory allocation, pointers and memory alignment in an introductory class. You can save that for an asm and C course. Or better yet, a memory class (which I've not seen).

      • by Anonymous Coward on Tuesday July 08, 2014 @03:34PM (#47410093)

        Funny you should mention a memory class. I'm the Computer Science department head at my university.

        I was going to introduce a memory class last semester, but I forgot.

  • by Anonymous Coward on Tuesday July 08, 2014 @03:08PM (#47409875)

    Python is an awesome language for learning - I'd vote for any language that allows interactive code debugging and experimentation. I see Python used everywhere these days so it's even useful as industry experience.

    I'm a C++ programmer by trade but there's no way I'd wish that language on a student. It's a hellish nightmare clusterfuck language that doesn't know what problem it's trying to solve anymore. Java is loosely based on C++ so it inherits a lot of the problems. I only wish Python would allow stricter interface constructs...

    • by vux984 ( 928602 ) on Tuesday July 08, 2014 @03:47PM (#47410183)

      I'm a C++ programmer by trade but there's no way I'd wish that language on a student

      Agreed. Its not a learning language.

      I only wish Python would allow stricter interface constructs...

      I only wish python didn't have semantic whitespace. That's it. Otherwise i like it just fine.

      I want the compiler/IDE/whatever to pretty-print and reformat my code to reflect program semantics, not have me spend my time formatting it to DEFINE program semantics.

      A programming language that can have its code be destroyed by copy-paste / email / web-forum formatting mangling is simply idiotic.

      • As opposed to pasting misformatted shit that causes confusion and bugs?
        • by dargaud ( 518470 )
          Both are wrong and happen only with Python (or Fortran 66)
        • by vux984 ( 928602 )

          As opposed to pasting misformatted shit that causes confusion and bugs?

          Yes, as opposed to that. Which almost never happens.

          And I have the IDE reformat code pretty regularly (and before check-in) so the rare case of mis-formatted code that someone might actually be confused by doesn't stick around long.

          Whereas in the course of maintenance and composition I mangle (or encounter mangled) python code that needs to be reformatted manually all the time.

          So yeah, I'll take the almost never happens and usually is ha

      • by dbc ( 135354 ) on Tuesday July 08, 2014 @05:10PM (#47410763)

        I only wish python didn't have semantic whitespace. That's it. Otherwise i like it just fine.

        I'll disagree on that. We use white space to communicate our programs' block structure to other humans. Why should we use a different syntax to tell the compiler the same information? Computers should conform to the needs of humans. Full. Stop. Python eliminates that source of bugs and redundancy by having the compiler's view of the significance of what space match a human's view of significance of white space. Please join us in the 21st century. I'm old enough that I did undergrand homeworks with punch cards, and just missed being taught intro to programming using FORTRAN. One thing I've learned over the years is to recognize progress when I see it.

      • by Darinbob ( 1142669 ) on Tuesday July 08, 2014 @06:22PM (#47411253)

        We taught C++ to a lot of students, and a lot of them learned it very well and were able to move on to other languages easily enough. Although I think a problem is that today's students aren't as nerdy as they used to be, they don't want to learn about computers and programming and everything related, from assembler and transistors up to lisp and databases, but instead just want to get their 9 to 5 job in whatever field seems to pay the most for the least effort.

  • Makes sense (Score:4, Interesting)

    by pieisgood ( 841871 ) on Tuesday July 08, 2014 @03:08PM (#47409877) Journal

    It makes sense. IMHO python removes a lot of the hardware considerations that other languages have. This allows for a focus on the CS material, rather than the engineering material. An advantage over java is that it also supports functional programming. That means that you can teach introductory CS principles in multiple programming styles without having to switch languages. Top it all off with forced indentation (not my favorite thing), which makes beginner code easier to read for instructors and I can see why they did this. Now, later they'll get into asm and C/C++ and memory alignment and paging and all that stuff, but starting out it's nice.

  • Java or Python (Score:5, Interesting)

    by benjfowler ( 239527 ) on Tuesday July 08, 2014 @03:13PM (#47409917)

    Lots of people hate the whitespace block-delimiting, but I think Python is *way* better than Java for beginning programming classes.

    I've seen the transition my alma mater made, between Modula-2 and Java. Modula-2 is trivial to pick up for anybody who cut their teeth on Turbo Pascal or Delphi, and "hello world" is quite easy to explain to anybody otherwise unfamiliar with programming. Try repeating that trick with Java's equivalent, and you'll understand why first-year dropout rates skyrocketed upon the switch. Anyway, Python has some nice goodies in the language which lends itself nicely to teaching both OO, and functional styles in the one language.

    I've even seen this in non-IT specialties; at Imperial College here in London, the newbies learn Python (stands to reason, because it's the weapon of choice for many scientists, especially physicists). King's College, OTOH force their first-years to take a unit of Fortran, which actually manages to be about fifty times worse than any other language I've attempted to use.

    The steepness of the learning curve is critical AFAICT -- you don't want to spoon-feed kids, but you don't want to crush them in their first two weeks at college either.

    • Re: (Score:3, Insightful)

      by jez9999 ( 618189 )

      'Hate' is an understatement. The language's syntax is broken by design. It's a shame another scripting language couldn't have caught on.

      • yeah, but beautifully broken. I don't like it much personally, but the restrictions do make it harder to write obtuse python code, which makes it much, much better for collaborative projects or introductory education. its wide use is another good reason to teach intro with it; even if the student doesn't take more classes, they have more opportunities to self-educate. even if you think it's a bad language (and, imho, it's not bad, just unremarkable), it's still a reasonable choice for a first teaching langu

    • Re:Java or Python (Score:5, Interesting)

      by St.Creed ( 853824 ) on Tuesday July 08, 2014 @03:41PM (#47410145)

      Why o why do people drop Pascal? It's still one of the best languages to learn how to program: it's typesafe, compilers plenty, and you can easily create custom types (records). With pointers to records you can make lists, trees etc. - all the constructs basic to the trade.

    • by danlip ( 737336 )

      The whitespace sensitivity is not the thing I hate most about Python (although I hate that too). I hate that I can't build a string by doing "Foo" + i (where i is an integer) and I can't catch the error at compile time (because it's interpreted, but more because variables aren't declared to be a type); it's a "worst of both worlds" combination of weakly and strongly typed language. Also the ternary operator is a huge WTF: a if test else b . Why the hell would you put the test in the middle of the 2 poss

      • The ability to seamlessly use + with mixed text and numeric types in a language without explicitly declared types is usually considered a design flaw, not a positive feature. Perl uses separate operators for strings vs. numbers to avoid ambiguity, while Python and Ruby require explicit type conversions. Java defaults to string concatenation, but Java requires explicit types, so you get a compile time warning if you make a mistake like adding a String and an int and expecting an int. Even PHP, the go to stan

  • I like Python, but BASIC on a C-64 VM is what they should first learn.

    No need to become an expert in it; maybe just 1/2 of a semester. But with line numbers analogous to memory addresses, GOTO essentially a branch, and GOSUB like subr, they'd get a better sense of what is actually happening in the "h/w", before going to a super-HLL like Python.

  • By investing Sun Corporation in making Java the standard programming language of computer science courses in India at the same time that the H-1b program expanded to take over the Fortune 500, Vinod Khosla managed to set the software industry back more than a decade.

  • Pascal (Score:4, Interesting)

    by Dan East ( 318230 ) on Tuesday July 08, 2014 @03:33PM (#47410073) Homepage Journal

    Wait!!! What happened to Pascal?!?!? On a more serious note, Pascal was the premier teaching language back in the day, but it really wasn't used much in the real world. It was a stepping stone for learning C, which is where the real power was at and what "real" applications were developed in. I believe there is less disconnect today between the popular learning languages and what is actually utilized in the real world.

    • Re:Pascal (Score:4, Insightful)

      by shutdown -p now ( 807394 ) on Tuesday July 08, 2014 @03:45PM (#47410177) Journal

      Pascal had fucked up string handling, though some dialects partially rectified that.

      Also, back in the golden age of DOS (late 80s to early 90s), [Borland] Pascal was in fact the language in which many "real" applications were developed, as well; even games. Delphi was also pretty popular on Windows in late 90s to early 00s.

    • by danlip ( 737336 )

      The nice thing about Pascal as a learning language was you knew it was a toy language that you wouldn't use in the real world. I fear the programmers who learn Python in school and then try to apply it to major projects in the real world. I learned lots of other academic languages in school too, there is no problem with the fact that I never used them outside that class; it taught me to pick up new languages quickly.

  • by Anonymous Coward

    As much as I hate whitespace formatted languages I hate Ruby most of all. The language itself isn't the problem, it's the hipster asshats who promote it. They should all die in a fire. I'm working on master's in CS and we still use Java, C, and C++ so it's going to be a while before any of the decent languages are displaced in academia.

  • by Anonymous Coward on Tuesday July 08, 2014 @03:48PM (#47410191)

    be capable of comprehending blocks. Their kind simply doesn't fucking get begin and end even in pseudo code. I've had to fire three Python devs that simply couldn't figure-out how to use {} in JavaScript. It's not that hard, but I think that horrible language spoils them into thinking that whitespace is magical. Of course colleges want to graduate people that can't keep jobs so they get more customers for their masters programs so they love Python. Making sure you graduate people that are unable to find and/or keep jobs is the number one job now of college professors.

    • Their kind simply doesn't fucking get begin and end even in pseudo code

      Huh? IIRC, pseudo-code most often uses indentation to indicate the level of nesting. I always thought that this was why Python used it in the first place; it's a good idea, even if I don't like it.

      And you may as well say that C/Pascal/whatever spoils you into thinking that braces are magical. It's just syntax. If your employees really can't figure out fucking braces then there's either something seriously wrong with your company, or you

    • by supton ( 90168 ) on Tuesday July 08, 2014 @05:05PM (#47410741) Homepage

      You attribute the mistakes of idiots to their language of choice? What does that say about your ability to judge the merits of technical people you work with?

  • The Local College CS department keeps having an issue because all the lower level classes are in languages like Java. It ends up that by the time they get to Operating Systems they've never had to go though the hell of dealing with memory pointers, and the basics of C. Python is just as bad, and maybe worse because of how it does logical blocks. It's hell trying to get beginners to understand braces and semicolons, but it's like taking candy from a baby when they've been coding for a few years without ever
  • Good idea (Score:5, Insightful)

    by Animats ( 122034 ) on Tuesday July 08, 2014 @03:57PM (#47410267) Homepage

    Python isn't a bad first language. It has all the important advanced concepts - objects, dictionaries, closures, and threads. The syntax is reasonable. Some people are bothered by the forced indentation, but for new programmers, it will seem natural.

    Most of the problems with Python are performance related. They come from obscure features of the language, such as the ability to do "getattr" and "setattr" on almost anything, including objects running in another thread. So everything has to be a dictionary. (This is sometimes called the Guido von Rossum Memorial Boat Anchor.) PyPy is struggling hard to overcome that, with some success. (The optimization approach is "oh, no, program did Obscure Awful Thing which could invalidate running code" - abandon compiled JIT code, shift to backup interpreter, flush JIT code cache, execute Obscure Awful Thing, wait for control to leave area of Obscure Awful Thing while in backup interpreter, rerun JIT compiler, resume running compiled code.)

  • In The Fine Article aparently about 7 of the top 39 CSC colleges introduce programming with MATLAB.

    That's disturbing.
  • ...they point out to the students all along the way that they should learn other languages, toolsets, and operating systems if they want to be useful when they graduate/drop out.

    Subjectively I would recommend they start with C specifically because you can hang yourself but it has few ropes to do so than C++, and then different languages for different aspects of Computer Science after that. There's virtually nothing in an undergraduate Comp Sci syllabus that should prevent you from learning a new language f

  • by damn_registrars ( 1103043 ) <> on Tuesday July 08, 2014 @04:15PM (#47410417) Homepage Journal
    The overwhelming majority of CSci graduates that I have known started undergrad by learning Scheme. IIRC that language was actually built for the purpose of teaching the fundamentals of programming. Why was it replaced (beyond the fact that hardly anyone in the real world uses it)?
    • by neminem ( 561346 )

      Because it's a *terrible* language for learning the fundamentals of programming? It's a pretty good language for learning the fundamentals of *programming languages*, as in a PLs class, and a pretty good language for learning how to think in functional language ways, but really, I can't imagine anyone thinking starting first-time programmers in a purely functional language would be a good idea?

      Which is not to say it hasn't been done, just that it's crazy - the college I went to taught their intro course in

      • I think it was a great idea. This was taught at MIT by the way, not DeVry or IIT Tech or University of Phoenix. MIT is not in the business of churning out code monkeys, so their "computer science" curriculum really was about computer science.

    • by jbolden ( 176878 )

      The people who designed the SICP curriculum felt it wasn't teaching the right paradigms. SICP was built around a world where a programmer wrote small programs and tied them together. An individual programmer could really understand an entire production program. Today's programming world involves programmers using massive and complex specialized libraries with far more large group projects. SICP/Scheme didn't train people for that sort of environment. They needed to switch from "what data-structure wou

    • Scheme was developed by CS professors for other CS professors. It was not made for students, regardless of what the purple wizard book claims. It was written by CS theorists who were very good at CS, and very bad at teaching.

      Scheme programs were neither easy nor obvious to read or comprehend. It's simplified syntax results in the need for overly complex machinations to produce anything but the most trivial of operations - writing an algorithm that's gone 18 or 20 indentation layers deep is fairly standar

      • by jbolden ( 176878 )

        Scheme was developed from LISP to prove the possibility of constructing a language from the ground up using a Meta-circular evaluator. That was important for SICP because it meant that every student knew how to create a language using arbitrary primitives, a DSL. There is no way in an 1 year introductory Python class the students would be anywhere near ready to implement a Python with different primitives. You can argue that the entire LISP philosophy is the wrong approach to solving complex problems, an

      • new students must first learn to think along a different paradigm, one opposed to how they had been thinking their whole life,

        I think this is by far the most important things that students need to do. And they need to do this early on in their education, not just as some optional upper division elective.

        I mean if learning to think in a university is inappropriate, then where is it appropriate? Especially when the university in question is MIT of all places.

  • by goltzc ( 1284524 ) on Tuesday July 08, 2014 @04:21PM (#47410453)
    Back in 2001 I was attending Minnesota State University Mankato. The CS program there did all of the introductory programming courses in Python. A year or two prior to my enrollment all the intro classes were taught in Java. The profs found that students would get hung up on java syntax when their goal was to teach them basic programming concepts so they switched to Python. Courses in Python only lasted for a couple semesters. After that the rest of the curriculum was primarily taught in Java. I think that Python accomplished the CS department's goal quite well.
  • I actually like Java. That said, the big losers here (other than Java) if Python really does supplant Java are the languages in Python's "space" against which it competes. So...Ruby. I'm ignoring PHP. If the popularity gap between Ruby and Python grows wide enough then people may start choosing Python even for those applications where Ruby might be the better choice.
  • ... some common sense !

  • Sheesh with all that whining you'd think all other languages are being banned from CS departments and nobody will ever learn anything else in later classes.

    Whatever you think about Python, it has to be better than Java for an intro CS course. Less bureaucracy, can also do non OO paradigms, easier to code without an IDE etc, has an interactive shell for exploring code, and you get to the CS parts quicker without having to flounder around in the programming ceremony parts.

    Moving away from Pascal (or Scheme or

  • Python has a number of nice features for the beginner programmer.
    1) It is easy to learn
    2) It has a REPL.
    3) It has a large standard library, and most things things in the library are easy to use.
    The library is not super abstracted and overly engineered like so many other tools.
    4) It has a large universe of third party libraries that are useful and easy to install.
    There are bindings to many C/C++ and Fortran libraries. Things like numpy, scipy, and matplotlib.
    5) The language and its libraries work o
  • I'm seen a lot of new and good programs written on Python + Qt, as the way to achieve multplatforming.
  • Why didn't this happened ten years ago when I went back to school to learn computer programming?

    Like many community colleges back then, mine couldn't afford the Microsoft site license to get Visual Studio to teach C++. All the programming classes had Java, Java and Java. I learned a little bit of C/C++ and shell scripting in the Linux classes that I took. The assembly language and PERL classes got cancelled for a lack of students.

    By the time I graduated from school, Java programmers were like a dime a dozen

  • by Stuntmonkey ( 557875 ) on Tuesday July 08, 2014 @08:06PM (#47411881)

    Python lets you dive in quickly, and it has two properties I like in a first language: It encourages good practices, and it's in the C-derived language group so what you learn transfers easily.

    The only thing you lose with Python is some of Java's ability to do "real" programming directly. A kid can use Java to do Minecraft modding, and a college student can write Android apps. There aren't so many direct uses of Python. (Yes there are a lot of real-world uses for Python, but not for writing user-level apps.)

  • by radarskiy ( 2874255 ) on Tuesday July 08, 2014 @11:10PM (#47412725)

    My recommendation for an initial language has long been Pascal. Technically, it has nearly all of the big concepts that you'd want to demonstrate in a computing language. Practically, it is sufficiently annoying that the student will be receptive to the idea that the language of a program is a design choice rather than getting stuck on the first thing they learned.

You see but you do not observe. Sir Arthur Conan Doyle, in "The Memoirs of Sherlock Holmes"