Python Bumps Off Java As Top Learning Language
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."
java was only "the most popular" because it was force fed to people who didn't want it
now I guess python will be forced fed to people who don't want it
2.x or 3.x?
Finding God in a Dog
Was lost
"according to Philip Guo, a computer science researcher who compiled the survey for ACM."
He probably used Python to compile the survey.
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.
I say this after having to create a virtual machine to install an older version of java in order to compile an older applet that stopped working.
The browser still gives me error messages. The next version of this program will use HTML5 canvas
"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?
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...
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.
Eat sleep die
An even larger percentage of graduates who won't know shit about programming.
Not so sure about python, but very sure about java. Might as well be teaching COBOL.
'You see, even MOVIE [imdb.com] BUWLA, or BSD at death's door 3hen done playing nneds OS. Now BSDI those uber-asshole we all know, and enjoy all the theorists -
101 I'm starting next month uses Python. Nice to hear it's not just us!
disclaimer: I haven't used python, but..
A quick google search seems to indicate that python doesn't have pointers. I suppose, Java was the same so there's not a big difference there.
But having a generation of students that don't know how to use pointers seems, rather scary to me.
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.
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.
"I don't know, therefore Aliens" Wafflebox1
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.
Seastead this.
That means I have to REALLY step up my Python chops if I want to compete.
Finding God in a Dog
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.
Better known as 318230.
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.
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.
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 using them. The whining from VB programmers when they encounter C#, Java, C, or C++ is just unending, and the nonsense from Python heavy programmers is much the same. If you learn the basics in C they are just accepted when you have to learn the lower level coding like Operating Systems. Stop teaching the basics on API heavy system just because it's "Easier" to build a server that way. They've beginners, and have no need for them until they've mastered the basics.
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.
MATLAB programming is a pretty useful skill for engineers. Even if only to generate pretty plots for presentations.
Comment removed based on user account deletion
...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 for your course if you've learned the fundamentals of how these languages work.
You're not going to be making use of exotic features of the languages in question unless the purpose is to use them.
Let's see how the python thing works out, it'll be nice to see kids coming out of school insisting they're senior software engineers for a different reason other than "I used Java for 4 years... at school..." Lol.
Loading...
Alternate headline: Python - The Pascal of the 21st Century
Comment removed based on user account deletion
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)?
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
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.
Our bugs are smarter than your test scripts.
Students must have grasp the basics first.
There is a reason why in Electrical Engineering you learn about Ohm laws first, instead of jumping straight in to higher level abstract stuff. Or in medical degrees you learn about biochemistry and biology.
This is what makes the difference between a software engineer and and a programmer. Exactly the way a cardiologist is different from an ECG technician.
I found someone else who things so too: http://carolinefrenette.com/th...
Ok. Serious now. The white space debate has always intrigued me. I've been people really, really mad about attaching significance to white space. To some it is heresy. Personally, I don't care if the block delimiters are implied by non-visible characters or made explicit by visible characters. It reminds me of the Big-Endian/Little-Endian debate between Lilliput and Blefuscu.
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.
Something that wouldn't have even been possible in an intepreted language.
Actually the OpenSSL Bug would have been just as likely in an interpreted language. The central error of it was keeping and reusing a list of allocated buffers in order to avoid calling a possibly slow malloc, as a result the memory was never cleared and its contents could be read by sending a heartbeat message. The same reasoning would have been present in interpreted languages, either because buffer allocations would have also called malloc internally or resulted in garbage collection^1 - the resulting reuse would have exposed the old contents just as the C code did. Without this buffer reuse Heartbleed would not have been possible to survive in C either, modern tooling exists to catch allocator and memory access errors.
^1 For some time reusing already allocated objects was the only was to avoid long GC related stalls in Java, which of course lead to exactly the type of bugs Java tried to avoid.
When did they stop using Pascal for introductory CS? I suppose Python is the Pascal of today.
... some common sense !
Votez ecolo : Chiez dans l'urne !
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 whatever) to Java in the first place was a mistake IMO.
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 on Windows/Linux/Mac.
6) The language is good at allowing one to focus on the problem at hand without worrying so much about minutiae of the language.
7) It supports imperative and object-oriented programming and has some support for functional style programming with map, filter, lambdas and list comprehensions. The functional programming support is on the weak side, but at least there is something.
The language also has some down sides.
1) Python hides low level details from the programmer. As a student learning about programming, ones needs to understand this stuff. Thus 'C' should also be taught.
2) It has been my experience that dynamic typing is useful for relativity small single person tasks. Somewhere around 30,000 lines, one begins to wish for static type checking. However, one needs a good type system. The rise of generics has greatly improved modern statically typed languages.
After reading "Learn You a Haskell For Great Good", I think all programmers should learn Haskell.
It is not really just about learning Haskell either, but understanding the power of function abstraction, combinators, referential integrity, organizing data, and managing side effects.
I'm seen a lot of new and good programs written on Python + Qt, as the way to achieve multplatforming.
com.oracle.Foo.Bar.Baz.IOInterface.SysInSysOut.GetClass.println(new JString("Finally!")).ToString();
Java's god damn 100 lines of code to do one little task days are obsolete thank god.
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 and I couldn't get a programming job. A recruiter recently reassured me that Python is a good programming language to learn. Alas, I have to wonder if Python is becoming the new Java and community colleges are pumping out Python programmers like a dime a dozen.
Don't poison people's minds with indent == scope!
(Despite that, I *like* Python, and I think for *human* readability, code should be consistently indented when checked in... but not to run/compile.)
Python is the perfect language for teaching, because there are so many incompatible versions to choose from. Python is a joke.
an ill wind that blows no good
Fortran77 or Fortran 90/95? Fortran 77 is a _pain_. Fortran 90 or later is almost modern language with modules and recursion.
Oh boy, so now we can learn about proper closures and non-crippled lambdas/anonymous functions...oh, wait...
Python is a language that has a fascinating tendency to break python on version upgrades. Yes, there is very clearly the python 2 to python 3, but even python 2.3 to python 2.6 can create worlds of headaches.
But then again no language is perfect. Old C code is frequently hard to build on modern compilers, perl had a very long history of not needing anything to be touched but some of the disilliusionment in prel 6 has caused even perl5 to get a bit fidgety as of late.
XML is like violence. If it doesn't solve the problem, use more.
As the hip kids would say 'un-pythonic'. It's sort of like how perl can be perfectly readable until people go and start using all the language features in 'clever' ways. Making a dict on the fly and indexing it in the same statement is the sort of thing I could see rendering python code hard to read and follow...
XML is like violence. If it doesn't solve the problem, use more.
Python is alright if you ignore the performance issues but the whitespace thing annoys the hell out of me. Cut and paste often results in broken code, even when I'm just trying to test something simple and stupid.
Lua is higher performance and cleaner than any other "easy" language out there IMHO. Kids should always learn C at some point though.
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.)
Python totally deserves this.
Python omits machine/hardware-specific details like pointers and memory management, allowing a student to spend more time on real Computer Science Concepts.
But of course Java had that too.
The benefits of Python over Java are primarily few to no type declarations, and yes, significant whitespace. You should be formatting your code with correct whitespace anyway, so it cleanly dispenses with the curly brace/begin-end/do-od nonsense.
Java is one of the sanest languages out there with a decent memory model for real concurrency.
Python's GIL sucks, Garbage collection sucks, there's not been one useful thing they've done to fix the language in that regard.
Someone, for the love of all that is good in the world, mod parent up!!!
As it applies to CS/EE/CE students, learning C then C++ better positions students in the long term. Once you understand C and C++, it should be a relatively trivial exercise to go up and down the stack. At that point, you have the base skills necessary to learn how a lot more things than if you learned just Java or Python.
Having said that, I can see the benefit of having a "programming fundamentals" course in something like Python for those people who have never programmed before or for those who are not in the CS/EE/CE programs, e.g., Mechanical Engineers, Physicists, Business students, etc.
Not C++ or C#, just plain old C.
Please justify this statement if you agree with me.
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.
Any Turing complete language can mimic any other Turing complete language (but at a price) so if your language supports condition driven loops you effectively have GOTO and IF. However if we see GOTO as syntactic sugar (and thus an efficiency optimisation/control flow obfuscator) wouldn't the combination of continuations and exceptions get you what GOTO can achieve?
It's the closest thing you can get to something like BASIC from back in the DOS days on today's computers. Sadly it's not pre-installed with every machine like GW-BASIC was.
~~ Behold the flying cow with a rail gun! ~~
I think it is fine if you are just teaching loops, conditionals, functions, etc. But as soon as you grasp that, ditch Python for a real language. The problem with Python isn't just white space. From what I've seen, Python promotes global variable usage, has poor class/encapsulation management, and is lacking in its ability to organize code in a discoverable format (unless you just like all your classes in the same file). It's great for toys. And some impressive toys have been written with it. But I've never seen great code in it that wasn't more than a few hundred lines long.
So who hired the devs who "couldn't figure-out how to use {} in JavaScript" ??? I would fire that guy too.
WTF is wrong with perl? Let's treat it as the 'gross anatomy' class to find out who's gonna stay.
Both are terrible.
I do massive string handling in Object-Pascal 7.1/Delphi XE2 32 + 64-bit here with this program -> http://start64.com/index.php?o... easily.
As far as PERFORMANCE as well? From a competing industry language trade journal, circa 1997, in Visual Basic Programmer's Journal Sept./Oct. 1997 entitled "Inside the VB5 Compiler Engine", Delphi's Object Pascal 7.1 engine KNOCKED THE SNOT out of even MSVC++ in string handling (& math too, by double) by HUGE margins as well - like 2-3x the speed no less.
APK
P.S.=> I suggest you take a look @ Pascal since, oh 1992 or so, Borland Turbo Pascal 4.5 onwards - since your post is complete crap man (seriously, it is)... apk
Seriously - you've shown me that you are WILLING to shoot your mouth off on things coding you clearly have no CLUE on http://developers.slashdot.org...
APK
P.S.=> People like you make me ill... apk
Don't talk out your ass like that again, or I'll keep sending you "back to school" -> http://developers.slashdot.org...
APK
P.S.=> What a TOTAL BULLSHIT ARTIST you are, unbelievable... apk
That YOU, are full of shit -> http://developers.slashdot.org...
(I.E. -> That you like to talk out your ass on things you clearly have NO CLUE on... period!)
APK
P.S.=> What a TOTAL BULLSHIT ARTIST you are, unbelievable... apk
I don't know what lab you're in, but our lab is almost completely Python. We use C where appropriate, of course, but try to keep as much stuff in Python as possible.
It just makes life easier (and quite well formatted!).
Anyone who have written real-world apps in Python could easily notice that the entire API in python is horrible, inconsistent and basically without design at all - they're rather wrappers of existing C/C++ APIs, and lack detailed docs themselves since the developers always expect you to read the original ones.
While Python is a massive improvement over the needless verbosity of Java, it is still a little bloated and full of brain damage.
1. Enforced whitespace
2. Not everything is an expression
3. Because of 1 and 2, lambdas are worthless and workarounds are truly bloated and horrifying.
4. The designer is PHP levels of retarded. It didn't have any scoping at first, which is why you see self self self self... littered all over Python code
5. Shitty FP support. Ruby was able to manage to include a good amount of the best of functional programming, why couldn't Python?
6. Two divergent versions. Say what you want about Ruby, but they made a similar transition but were successful because they had a version 1 path(1.9.x break with earlier versions) that seamlessly moved into Ruby 2.
7. Bolted on OO, but not only that there are 2 different bolted on versions of OO support in Python 2.x.
8 Everything is not an Object, that is where Java went wrong and Python is just as wrong.
9. List comprehensions are great, but that is where the good support of iteration ends. Want to iterate over a hash or a set using comprehensions. Good luck.
10. Lack of a decent case/switch which leads to some shitty shit.
11. Importing libraries is a pain in the ass, as is managing them. While it is true that nothing is better than the over engineered Ant or Maven bullshit of Java, it is not better than CPAN or Gems.
12. Guido is cult leader. People go on and on about the Rails community(these people often confuse Rails with Ruby, but that is another rant), but the Python community is worse. Far worse They do nothing but parrot Guido's bullshit. For instance, Guido says that you don't switch statements, so the community parrots that. The community also believes the implicit is better than explicit bullshit that Guido pinched out of his ass to cover his dumbass decision to initially have no scoping at all, never mind that Python is full of implicit shit. Guido is a small step above the poster child for clueless language designers Rasmus Lerdorf.
It is ironic that Python is a shitty teaching language because it lacks so many important concepts because it is based on a teaching language.
At least it is better than Java.
Learn another because it has feature x that may make it better? Time to market for me.. I'm a recent java/eclipse dev coming from C/C++. I am lazy and I want others to do my work for me...for free. So give the the massive free java open source ecosystem over "dynamic typing" anytime.
Hey what about Jython!
- www.theAnonymousCoward.com