Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Python Bumps Off Java As Top Learning Language

Soulskill posted about 4 months ago | from the from-college-import-education dept.

Python 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."

Sorry! There are no comments related to the filter you selected.

another language shoved down your throat (-1, Troll)

Anonymous Coward | about 4 months ago | (#47409779)

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

Re:another language shoved down your throat (2)

short (66530) | about 4 months ago | (#47409801)

not will but it is

Re:another language shoved down your throat (5, Funny)

szmccauley (667273) | about 4 months ago | (#47409813)

could have been worse, it could have been javascript

Re:another language shoved down your throat (1)

Anonymous Coward | about 4 months ago | (#47410041)

As far as enterprise development is concerned, .NET is clearly picking up steam compared to Java. I think schools should teach C#.

Re:another language shoved down your throat (-1, Troll)

Anonymous Coward | about 4 months ago | (#47410239)

could have been worse, it could have been javascript

Javascript is actually a step up from Python. This does not say anything good about Python.

Re: another language shoved down your throat (0)

Anonymous Coward | about 4 months ago | (#47410403)

Could've been worse, it could have been Java ... oh wait a minute, it was...

Re:another language shoved down your throat (3, Informative)

ggpauly (263626) | about 4 months ago | (#47410489)

You are far from alone in misunderstanding Javascript [crockford.com] .

Re:another language shoved down your throat (5, Insightful)

infogulch (1838658) | about 4 months ago | (#47409897)

If you didn't want to learn programming languages, why are you taking computer science courses?

If you're being force-fed anyways, I think python would be much easier to stomach than java for introductory courses. And it would be much easier to grade (if grading consisted of more than "did it output correctly") since introductory students aren't exactly known for their exceptional code organization and formatting skills.

Re:another language shoved down your throat (4, Informative)

kthreadd (1558445) | about 4 months ago | (#47409943)

Computing science is not about programming, but programming is often used as a tool in computing science and they therefore (rightfully) have you take programming courses before going into the more theoretical material.

Re:another language shoved down your throat (1)

Opportunist (166417) | about 4 months ago | (#47410619)

I don't know about your CS courses. Ours here pretty much expect you to KNOW programming if you want to have a snowball-in-hell chance to graduate.

Re:another language shoved down your throat (5, Insightful)

ShanghaiBill (739463) | about 4 months ago | (#47409919)

now I guess python will be forced fed to people who don't want it

That seems like a silly objection. It is not practical for a teacher to let each kid choose their own language, nor are the kids knowledgeable enough to choose. I don't see any big organizations pushing Python the way that Sun was hyping Java back in the late 1990s.

At my kids' school, they start teaching programming in 4th grade, using Scratch [mit.edu] , and move to Python in 6th grade. It seems to work well.

Re:another language shoved down your throat (4, Insightful)

BForrester (946915) | about 4 months ago | (#47409935)

java was only "the most popular" because it was force fed to people who didn't want it.

I don't think you understand how schools and their curriculae work. Nobody is holding a gun to the collective and independently-operated heads of CS departments to demand which language they use for beginner courses.

Java was historically chosen because it was a safe option; used widely in industry, decent documentation and tools, it supports good programming practices, and it provides reasonably powerful options while being relatively beginner friendly. Java largely replaced C and C++, which are not beginner friendly.

Re:another language shoved down your throat (5, Insightful)

Anonymous Coward | about 4 months ago | (#47410321)

C is very beginner friendly in my opinion. It was my first non-BASIC language. Learning C you learn how those bits and bytes work and how shit gets done. The paradigm is old but not obsolete.

But yes, Python is a great choice. My only gripe is the use of indentation instead of curly brackets to mark blocks.

Re:another language shoved down your throat (0)

Anonymous Coward | about 4 months ago | (#47410509)

Until Qt uses C it is not beginner friendly...

Re:another language shoved down your throat (2, Informative)

MightyMartian (840721) | about 4 months ago | (#47410249)

No, it is popular because, despite a good many flaws, it remains the best cross platform solution we have.

Which raises the critical question: (5, Interesting)

MAXOMENOS (9802) | about 4 months ago | (#47409815)

2.x or 3.x?

Re:Which raises the critical question: (0, Troll)

Anonymous Coward | about 4 months ago | (#47410019)

To start? I would guess 3.x since it is more self consistent (that is, they got rid of the legacy inconsistencies that they could).

Re:Which raises the critical question: (5, Funny)

tippe (1136385) | about 4 months ago | (#47410075)

Who cares? Isn't the critical question always what editor they should program with? Everyone knows that real programmers use vim. Long live vim!

Here: something to distract you while I go duck under a desk [xkcd.com]

Re:Which raises the critical question: (5, Funny)

Roger W Moore (538166) | about 4 months ago | (#47410125)

Wow - I never knew you could tell a real programmer by their choice of bathroom cleaner [www.rona.ca] .

Re:Which raises the critical question: (3, Funny)

number6x (626555) | about 4 months ago | (#47410383)

vim! You are a reformed apostate!

How dare you split from the true path of vi? You might as well join be working for the forces of E.

Re:Which raises the critical question: (5, Informative)

ShadowRangerRIT (1301549) | about 4 months ago | (#47410087)

I really hope 3.x, if only for the fact that your code tends to work with non-English text by default, because str supports the whole Unicode range, so it works with non-English input by default. Compare to 2.x where you have to make a conscious effort to work with Unicode. Particularly important for third party libraries, where they aren't producing a final application, and often don't think about Unicode at all even for text based APIs. Heck, the Python built-in csv module in 2.7 doesn't work properly with Unicode; you have to load or convert as UTF-8 bytes, parse, then decode to the 2.7 unicode type. It's a mess.

For teaching purposes 3.x is even better, since you have a proper distinction between binary data and text, rather than the mushy 2.x situation where str is sometimes binary data and sometimes handicapped text, while unicode is always text, and sometimes interoperates with str, while at other times it explodes. Teaching languages should be consistent, and 3.x is simply more consistent than 2.x (largely because of cleanup decisions like this).

And nothing of value (0)

Ukab the Great (87152) | about 4 months ago | (#47409835)

Was lost

Re:And nothing of value (1)

Anonymous Coward | about 4 months ago | (#47410193)

Or gained.

Re:And nothing of value (3, Insightful)

liquidpele (663430) | about 4 months ago | (#47410329)

Avoiding oracle and Java idioms has value.

compile survey (0)

Anonymous Coward | about 4 months ago | (#47409837)

"according to Philip Guo, a computer science researcher who compiled the survey for ACM."

He probably used Python to compile the survey.

The Future's So Bright (4, Funny)

Art3x (973401) | about 4 months ago | (#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.

Re:The Future's So Bright (4, Insightful)

X0563511 (793323) | about 4 months ago | (#47409869)

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

Re:The Future's So Bright (2)

Vellmont (569020) | about 4 months ago | (#47410039)

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.

Re:The Future's So Bright (5, Interesting)

hondo77 (324058) | about 4 months ago | (#47410119)

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.

Re:The Future's So Bright (0)

Anonymous Coward | about 4 months ago | (#47410547)

And then you wonder why Commercial software is moving away C/C++ it won not get past legal...

Re:The Future's So Bright (2)

cecom (698048) | about 4 months ago | (#47410491)

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.

Re:The Future's So Bright (0)

Anonymous Coward | about 4 months ago | (#47410507)

Something that wouldn't have even been possible in an intepreted language.

Right, because dumb mistakes leading to serious security concerns have never happened in interpreted languages.

Re:The Future's So Bright (2)

jbolden (176878) | about 4 months ago | (#47410523)

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.

Re: The recent openSSL bug is a good example. (0)

Anonymous Coward | about 4 months ago | (#47410535)

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.

Unfortunately (2)

MAXOMENOS (9802) | about 4 months ago | (#47409983)

That means I have to REALLY step up my Python chops if I want to compete.

Re:The Future's So Bright (1, Insightful)

Anonymous Coward | about 4 months ago | (#47410101)

And then no one actually understands how compuiters work and all is lost.
Assembly for starters. Maybe let them go high level with C.

Good Java is a poor choice (0)

Anonymous Coward | about 4 months ago | (#47409853)

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

Re:Good Java is a poor choice (0)

Anonymous Coward | about 4 months ago | (#47409997)

And then instead of the same error on N browsers, you will have n^2 distinct errors.

Progress!

"Top Learning Language" ...OR... (4, Interesting)

tlambert (566799) | about 4 months ago | (#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?

Re:"Top Learning Language" ...OR... (5, Insightful)

pieisgood (841871) | about 4 months ago | (#47409953)

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).

Re:"Top Learning Language" ...OR... (4, Funny)

Anonymous Coward | about 4 months ago | (#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.

Re:"Top Learning Language" ...OR... (0)

Anonymous Coward | about 4 months ago | (#47410129)

Now if only it had a god damn switch statement. Grrr.

Python for learning? Good choice. (3, Insightful)

Anonymous Coward | about 4 months ago | (#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...

Re:Python for learning? Good choice. (4, Insightful)

vux984 (928602) | about 4 months ago | (#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.

Re:Python for learning? Good choice. (1)

liquidpele (663430) | about 4 months ago | (#47410397)

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

Re:Python for learning? Good choice. (1)

dargaud (518470) | about 4 months ago | (#47410485)

Both are wrong and happen only with Python (or Fortran 66)

Re:Python for learning? Good choice. (1)

vux984 (928602) | about 4 months ago | (#47410539)

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 harmless scenario in other languages over the happens all the freaking time and is routinely a PITA scenario that is Python.

Re:Python for learning? Good choice. (-1)

Anonymous Coward | about 4 months ago | (#47410421)

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

If you're copy-pasting enough code from web forums and emails for this to be a problem, I'd suggest the language is not the only thing that's idiotic.

Makes sense (3, Interesting)

pieisgood (841871) | about 4 months ago | (#47409877)

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.

Re:Makes sense (0)

jbolden (176878) | about 4 months ago | (#47410545)

Python doesn't really support functional programming. A good multi-paradigm educational language which also has a great textbook is Oz.

Great (0, Insightful)

Anonymous Coward | about 4 months ago | (#47409881)

An even larger percentage of graduates who won't know shit about programming.

Good riddance (0)

Anonymous Coward | about 4 months ago | (#47409885)

Not so sure about python, but very sure about java. Might as well be teaching COBOL.

Ie4! (-1)

Anonymous Coward | about 4 months ago | (#47409889)

'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 -

My anecdotal evidence. (0)

Anonymous Coward | about 4 months ago | (#47409893)

101 [unimelb.edu.au] I'm starting next month uses Python. Nice to hear it's not just us!

pointers (0)

Anonymous Coward | about 4 months ago | (#47409903)

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.

Re:pointers (1)

istartedi (132515) | about 4 months ago | (#47410005)

having a generation of students that don't know how to use pointers seems, rather scary to me.

Just a quick googling reveals that Python has "list index out of range" errors. So. The difference is one of consequence, not of type. In C you get undefined behavior.

Yes, it would be good for the new generation to have some "to the metal" experience; but it's not that great a loss. If they have to go there, you can simply tell them that going out of range is much more of a PiTA. The new languages protect them somewhat; but the concepts are still there.

Re:pointers (1)

fahrbot-bot (874524) | about 4 months ago | (#47410181)

Just a quick googling reveals that Python has "list index out of range" errors. So. The difference is one of consequence, not of type. In C you get undefined behavior.

Technically, remembering my C books, I think it is defined - as being "undefined". So it's a feature, not a problem. :-)

Re:pointers (0)

Anonymous Coward | about 4 months ago | (#47410023)

Well, you see, after they complete PROG101 they're go to PROG102 and maybe PROG201... at some point they'll learn pointers. Just like they probably won't make a graphical interface their first year... do that mean that the GUI is doomed?
 
These things are much saner than they appear if you just take 30 seconds to think the problem through instead of looking like you're foaming at the mouth because you want an early post so bad.
 
I swear... Slashdot really scrapes the bottom of the barrel looking for users anymore.

Re:pointers (4, Informative)

shutdown -p now (807394) | about 4 months ago | (#47410121)

It doesn't have pointers, but it does have references - which are basically pointers without arithmetic. In fact, in Python, everything in a reference (even primitive types like int are reference types). This is sufficient to explain the core notion of indirection, and data structures built on that notion, like linked lists or binary trees.

Java or Python (4, Interesting)

benjfowler (239527) | about 4 months ago | (#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:Java or Python (2, Insightful)

jez9999 (618189) | about 4 months ago | (#47409945)

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

Re:Java or Python (0)

Anonymous Coward | about 4 months ago | (#47410015)

I'm pretty sure you mean "awesome by design."

Re:Java or Python (3, Insightful)

Anonymous Coward | about 4 months ago | (#47410117)

OP is right. Caring about whitespace is one of the fatal flaws of a programming language.
Make shares the same flaws, but at least it does something useful.

Re:Java or Python (0)

Anonymous Coward | about 4 months ago | (#47410225)

Caring about whitespace is one of the fatal flaws of a programming language.

Not caring about whitespace is one of the fatal flaws of a programmer. If smthng is unecssarly hrder 2 rd thn it
shud b then its porly writn. No excuses.

Re:Java or Python (4, Insightful)

Anonymous Coward | about 4 months ago | (#47410265)

Humans care about whitespaces. That's why there are spaces between words, lines, paragraphs and so on. It is easier to spot a lack of indentation or a line break than, let's say, a missing ; at the end of a line (or an extra one, like for(int i = 0; i n; ++i); { do something }").

This kinds of things make it easier for beginners, and they should not be a problem to experienced programmers, either.

Re:Java or Python (1)

Shados (741919) | about 4 months ago | (#47410497)

In Python its annoying, but it could be worse.

Doing it in a markup/templating language is where the capital sin starts. Jade, I'm looking at you...

Re:Java or Python (1)

retchdog (1319261) | about 4 months ago | (#47410107)

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 language.

Re:Java or Python (0)

Anonymous Coward | about 4 months ago | (#47410063)

Whitespace block-delimiting just made sense to me, I cut my teeth on C++ and 'good' code already looked like it was whitespace delimited anyway. Python just made it so you had to keep your code looking like it should (though 3/4 space and tabs can cause issues if people aren't all on the same page).

I remember writing 'hello world' in Java, took me two minutes too figure out how a basic program had to be formulated, about 30s to write my program and 45s to compile it... and then another 3 minutes of astonishment at how long hello world took to compile.

Re:Java or Python (5, Interesting)

St.Creed (853824) | about 4 months ago | (#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.

Re:Java or Python (1)

danlip (737336) | about 4 months ago | (#47410163)

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 possible results! And why not do it like C, Java, and just about every other popular language.

Bah humbug. (1)

Nutria (679911) | about 4 months ago | (#47409957)

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.

Re:Bah humbug. (0)

St.Creed (853824) | about 4 months ago | (#47410169)

Don't teach people GOTO and GOSUB, teach them loops, conditionals and data structures. Then teach them assembly.

No need to learn them a bad intermediate language nobody uses. And even most C64 owners dropped it ASAP and went straight for assembly.

Re:Bah humbug. (2)

Rockoon (1252108) | about 4 months ago | (#47410211)

And even most C64 owners dropped it ASAP and went straight for assembly.

Which only has equivalents to goto and gosub.... you were saying?

Re:Bah humbug. (1)

St.Creed (853824) | about 4 months ago | (#47410359)

I was saying that basic was an intermediate stage that noone wanted to bother with. If you want memory locations and jumps, going straight to assembly is the easier route, IMO, because it drops the syntactic clutter of C64 basic. If you want conditionals etc. you are better off with Pascal.

Re:Bah humbug. (1)

Narcocide (102829) | about 4 months ago | (#47410451)

I dunno, I actually felt that learning GOTO gave me an edge in learning C functions over people who came into it blind...

Re:Bah humbug. (2)

dargaud (518470) | about 4 months ago | (#47410499)

Or the much better programming construct 'comefrom'...

Re:Bah humbug. (1)

Nutria (679911) | about 4 months ago | (#47410543)

a bad intermediate language

It, like COBOL, is only bad if you make it bad. (Shelly & Cashman -- may their non-existent souls burn in non-existent Hell for all eternity! -- made COBOL bad. Real experts in the language showed me how good and capable it (even the much maligned COBOL-74) the language. -85 was even better.)

Congratulations Vinod Khosla (1, Troll)

Baldrson (78598) | about 4 months ago | (#47409961)

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 (3, Interesting)

Dan East (318230) | about 4 months ago | (#47410073)

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 (3, Insightful)

shutdown -p now (807394) | about 4 months ago | (#47410177)

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.

Re:Pascal (1)

glaurungn (1253152) | about 4 months ago | (#47410205)

Pascal is a very safe language, created to teach procedural programing, it obviously lacks the simple ways python has to do complex task with a few lines of code. I dont know if having a lot of things solved is really good for learning, pascal is not usefull in real life, but I belive that learning to program has very little to do with real life applications in the beginning.

Re:Pascal (1)

danlip (737336) | about 4 months ago | (#47410215)

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.

At least it wasn't Ruby! (2, Interesting)

Anonymous Coward | about 4 months ago | (#47410137)

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.

Great, an entire generation that won't... (3, Insightful)

Anonymous Coward | about 4 months ago | (#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.

White s p a c e is magic! (1)

ahoffer0 (1372847) | about 4 months ago | (#47410483)

I found someone else who things so too: http://carolinefrenette.com/th... [carolinefrenette.com]

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.

Doesn't fix the problem (1)

medv4380 (1604309) | about 4 months ago | (#47410235)

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.

Good idea (5, Insightful)

Animats (122034) | about 4 months ago | (#47410267)

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.)

MATLAB! WTF!?!?? (1)

random coward (527722) | about 4 months ago | (#47410285)

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

That's disturbing.

MATLAB! WTF!?!?? (0)

Anonymous Coward | about 4 months ago | (#47410307)

MATLAB programming is a pretty useful skill for engineers. Even if only to generate pretty plots for presentations.

Re:MATLAB! WTF!?!?? (2)

random coward (527722) | about 4 months ago | (#47410337)

Digging further than the fine article to the blog that it was based on. It appears that the methodology of the study is wrong for what it purports. There were multiple languages and courses from each school; It speaks as if this is the intro for CSC majors, and then adds CSC courses that wont go towards a CSC degree; I.E. programming for engineers with matlab at Georgia Tech for example.

Who cares what they use as long as... (1)

Assmasher (456699) | about 4 months ago | (#47410351)

...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.

Python - The Pascal of the 21st Century (1)

Shalian (512701) | about 4 months ago | (#47410353)

Alternate headline: Python - The Pascal of the 21st Century

What happened to Scheme? (3, Interesting)

damn_registrars (1103043) | about 4 months ago | (#47410417)

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)?

Re:What happened to Scheme? (2)

neminem (561346) | about 4 months ago | (#47410555)

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 Java when I took it, later experimented with Scheme for a year or two, and I believe use python now, because that actually makes sense.

Re:What happened to Scheme? (1)

jbolden (176878) | about 4 months ago | (#47410613)

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 would best accomplish this goal" to "which library would best accomplish this goal" and Scheme encourages much the opposite.

SICP is probably still the best programming concepts book ever written but those concepts are less important than they used to be.

I was introduced to Python first (4, Interesting)

goltzc (1284524) | about 4 months ago | (#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.

Start with Assembly (0)

Anonymous Coward | about 4 months ago | (#47410467)

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.

hmm (1)

buddyglass (925859) | about 4 months ago | (#47410533)

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.

Pascal? (0)

Anonymous Coward | about 4 months ago | (#47410561)

When did they stop using Pascal for introductory CS? I suppose Python is the Pascal of today.

Finally... (1)

jalet (36114) | about 4 months ago | (#47410605)

... some common sense !

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?