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."
not will but it is
could have been worse, it could have been javascript
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.
101 I'm starting next month uses Python. Nice to hear it's not just us!
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.
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.
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, and move to Python in 6th grade. It seems to work well.
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.
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.
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
As far as enterprise development is concerned, .NET is clearly picking up steam compared to Java. I think schools should teach C#.
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.
No, it is popular because, despite a good many flaws, it remains the best cross platform solution we have.
The world's burning. Moped Jesus spotted on I50. Details at 11.
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.
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.
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
Could've been worse, it could have been Java ... oh wait a minute, it was...
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.
You are far from alone in misunderstanding Javascript.
Verbum caro factum est
Until Qt uses C it is not beginner friendly...
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 !
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.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
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.
BULLSHIT. Yes, Java has always been a rube goldberg language force fed becausr TPTB always thought it was the coming thing. Python on the other hand is an absolutely perfect first language, elegantly and beautifully designed, simple at core, yet compact, expressive and powerful.
Clown. And that is all the response you deserve.
Java is also nice in that it was part of the C syntax family. If you know Java, it is trivial to switch to C# and moderately easy to switch to C++. C is different enough to cause grief, but people do catch on to functional languages and memory pointers.
I learned Visual BASIC during an early CS class. Wasn't really able to make much from that and apply it towards other languages. Also learned Perl during an early CS class. It was so alien from other C syntax languages (and most other languages in general) that I also couldn't apply it toward other languages. They were interesting languages to learn and I did pick up some knowledge regarding general programming, but I think I gained a lot less than had Java been one of my first CS course languages.
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.
Well, that's a high complement a misunderstood langauge. That seems like a perfect language to teach people, the one that most professionals misunderstand. Its like how all of our schools now teach exclusively in Esperanto.
Well.. maybe. Or Maybe not. But Definitely not sort of.
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.)
You are far from alone in misunderstanding Javascript.
That link is 13 years old. Surely JavaScript has become even more confusing by now.
They can take my LifeAlert pendant when they pry it from my cold dead fingers.
Where is this school, and do I have to send my kids to Shanghai to get them enrolled?
Which is why no one majors in "computer science" unless they are doing it wrong. My degree was in programming and programming is almost all I learned.
Depends on the school. Some schools in the US have 'computer science' in the engineering area and teach mainly programming with enough theory to help you make some awesome things.
Right... so a Microsoft approved curriculum. Good for a trade school, awful for a person who wants to actually learn something.
Esperanto makes sense though. It's highly logical, consistent, and brings disparate communities together. The exact opposite of JavaScript.
My only gripe is the use of indentation instead of curly brackets to mark blocks
I'll never understand that criticism. Don't you indent your code? Have you ever been fooled by incorrect indentation that didn't compile the way it looked? Brackets, begin..end, and semicolons are crutches for compiler writers not programmers.
C is not beginner friendly. The reason is that it's not a managed language, so a mistake will have unpredictable consequences, rather than firing an exception like in Java. Yes, you can still do it; I learned C by reverse engineering Nethack sources in pre-Internet days and debugging all errors with printfs ("got here!") and logic, and perhaps that should be the criteria for serious programmers, but that's hardly "beginner friendly".
Personally, I think programmers should start with with line-number Basic, then move to procedural programming, then to object-oriented. You can't really understand a paradigm unless you know the problem it was designed as a response for.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
I've never been fooled by indentation that didn't match the way it compiled. However, I have been fooled plenty of times by pythons use of indentation.
I feel like forcing indentation in the language is a crutch for people who can't figure out how the tab key works.
One problem I've seen in many schools is that the "introductory" language sometimes ends up being used for all the classes. It's pressure from multiple directions; teachers who don't want to waste time teaching a new language just for their class (and students being unable to learn a new language on their own), along with industry insisting that more graduates be trained in the popular languages of the day.
I don't see too much problem with Python being used as an intro language; it has most of the necessary parts. However the students MUST move on from that and use several other languages in real projects. The drawback to Python I see is that it doesn't enforce good programming discipline which is what novice programmers need, such as having to declare all variables and functions before use.
"If you didn't want to learn programming languages, why are you taking computer science courses? "
I did so because at least one programming course was a requirement for a degree in mechanical engineering. Python gives a sense of programming logic without having to worry about declaring variable types, etc.
Yeah, because the concepts of C# cannot be aplied to any other language like Java or Python.
I don't think that's a distinction worth making in most circles. It's only after a few years of study that one starts to see the distinction between the knowledge needed for software development vs. the mathematical aspects of computing theory. And then they keep on re-intersecting anyway, with things like programming language type systems, concurrency, and proving certain qualities of a piece of software. Good software developers need some theory, and most good theoreticians end up programming sometimes.
Oh, right, I thought that JavaScript sucked because I was under the impression that it was dynamically typed, allowed monkey-patching, had a lame set of numeric types, poor support for sequential I/O, etc., etc., etc. Oh, wait... those things are true? But Douglas Crockford says it's Lisp-y, so that gives us license to sweep all those problems under the rug.
There is the drawback that if you no longer have a computer lab that you must rely on tools that students can get on their computers, and those are usually Windows. So students end up wanting something with an IDE, a vendor lock-in language, and so forth. If you attempt to teach Ada then you've got to find a Windows version or else deal with the IT nightmare of getting all those Windows machines to run Cygwin and students whining about command lines being too hard.
When I was in school (back when we rode dinosaurs) the computers came with many different languages ready and waiting to be used. Classes could pick one out of a large set, the advanced student could do their own project with a new language (for free!!) and so forth. Ie, BSD Unix shipped with a large set of languages. Today though the typical student computer comes with ZERO programming languages, tools, editors, and so forth.
Fortran77 or Fortran 90/95? Fortran 77 is a _pain_. Fortran 90 or later is almost modern language with modules and recursion.
And for that reason python is good for a first course, as it forces the students to indent. I am tired of lazy students that don't indent, and then complain why their code doesn't seem to follow the intended flow. It is hard to teach good habits and practices. And any help, specially from the programming languages, is welcome.
That's rubbish. Most of the major platforms have had Java ported to them. Including various obscure systems is ludicrous. If I want a program that I'm almost guaranteed will run without recompile on Linux, Windows, BSD and even many mainframes, then Java remains the best solution. I'm not saying, from a programming perspective, that it's all that great, but from a platform neutral perspective for most of the systems that a programmer will encounter, it remains the best.
Have fun running an x86-64 Linux binary natively on a Windows 8 machine. I can. however, write a Java program that I can almost guarantee will in fact run on x64 Linux or Windows.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Visual Studio, .NET, and C# are decent tools. Being somewhat limited to Windows is kind of a drag, but otherwise I don't see why your bashing Microsoft.
Oh boy, so now we can learn about proper closures and non-crippled lambdas/anonymous functions...oh, wait...
Have you ever been fooled by incorrect indentation that didn't compile the way it looked?
Nope. My editor takes care of indentation for me, in every common language except Python, and when I have to deal with a batch of code written by someone else, I run it through indent(1) first. So, in fact, it's just the opposite: when the indentation doesn't match what I expect, I know there's an actual problem in the code!
With Python, on the other hand, I'm actually more likely to have an error in the indenting, because there's no easy way to see how many blocks I'm terminating when I outdent by an arbitrary amount. Which is a real PITA when you're refactoring.
Of course, things may be different if you're using crappy tools. But professionals shouldn't be using crappy tools.
Brackets, begin..end, and semicolons are crutches for compiler writers not programmers.
No, they're tools to make my job easier. Whatever the historical reason for them may be, they benefit the programmer! They make me more productive.
Now, I'll grant that Python is a remarkably good language despite its horrible flaw of relying on indentation. And many of its good features also make me more productive. But that doesn't mean that relying on the indentation isn't a horrible flaw.
You laugh, but Javascript has the lowest barrier to entry of any language. It's already included on pretty much every computer built in the past 10 years (in your browser). And most modern browsers have better debugging tools than many other languages include. It's easy to find documentation and tutorials on the web (albeit, it is hard to find the answers that follow the best practices).
I scrolled down enough and will abort this entire post and comments.
Comments are immature I don't know where to begin.
OK I'll begin here. It doesn't matter what program language you teach as long as the fundamentals are understood - which then can be applied to any language.
And it's probably a good idea to start with a language with a more open license with less real cost over head for both students and faculties in the long term.
Apart from other obvious observation. Perhaps I just witnessed a fanboi whinge fest.
Yeah let's switch from one annoyingly shitty language to another.
Seriously, these are the worst languages ever invented, with absolutely zero redeeming properties.
Java was not widely used when it was chosen, it eliminates good programming practices and it doesn't have a decent *anything*. It's really just evidence that langue du jour rules the day when it comes to decisionmaking no matter how utterly shit the language is.
Truth. Also, if my experience steers me correctly, the overwhelming majority of computer "scientists" will make their mortgage payments as "engineers" (i.e. programming).
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.
My only gripe is the use of indentation instead of curly brackets to mark blocks
I'll never understand that criticism...
In Vi/Vim, the "%" key does something useful in "curly bracket" languages. Python, not so much.
>You can't really understand a paradigm unless you know the problem it was designed as a response for.
Let me disagree with you on that one. While I do think that it is of extreme value to know what problems something (in this case, a paradigm) tries to solve, I do not think that you need to know procedural programming to know object oriented programming. And I'd like to point myself as an example. I started learning to program "for real" with C++. And I still have some of my old code around. It was awful, yeah, sure. It wasn't the perfect object oriented code, I hadn't acquired many, many, many ideas and idioms, so I wrote clunky code. I wrote clunky object oriented code, with objects that meant nothing (they added no real value), repeated classes without abstraction, improper abstraction, etc. Of course, you can also _do_ tell that in some areas I tended towards a more "procedural" way of doing things, but the concepts of Objects, their communication, their relationships, inheritance (heck, even encapsulation), were established well before my procedural programming skills matured.
This isn't to say that I have anything against learning procedural programming first. It might, in most cases, also be beneficial to most people. But as I saw my college classmates go through this (we did procedural Python, then C, then Java), I noticed that many of them had quite a lot of trouble getting rid of the "procedural way" of doing things, and often made more errors than I did when I first learned OOP. Maybe I'm an exception. But, oh well...
Have you heard about SoylentNews?
Also, python's indentation makes copy/paste more of a hassle.
Python isn't bad as a first language. I knew how to code when I got to college (where they use Python -- a very small, procedural, subset of it in the first course). I tracked the progress of my colleagues (and have tracked the progress of freshmen every year). It is clearly a very good choice because it allows them to "get right to it" and to think about algorithms, not syntax. Python is natural, and in two week's time most of them have mastered most of the syntax. I've also seen what happens in other areas where they start with a procedural subset of C++, and others where they start with C. Boy do they have problems getting started...
Do note that I, however, would like to teach computer courses differently, starting from the low-level stuff to the high-level stuff. I know it sounds like I'm contradicting myself, but this is because I think these are just different teaching philosophies, stressing different important things in students' minds -- that is, I don't think Python is a bad choice, I think it's excellent, though I would prefer it if we could shift paradigm and start teaching how it works on the inside before teaching people how to use the outside.
Have you heard about SoylentNews?
So what the fuck do YOU want? Pascal? Haskell? Scheme?
The problem with procedural programming is that every piece of code can touch every piece of data. The problem is combinatory explosion. If you've never run into that problem, how can you understand the need for a solution?
I've never been to college, so I wouldn't know. But this is how it worked for me: line-number Basic, C, Object-oriented, functional. I don't know any of these well, but I know what problem each rose to solve - except functional, since it didn't rise to solve problems in programming, but is simply an alternative way of describing algorithms. However, I'm developing a love/hate relationship with Haskell.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
What's so difficult about data types?
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.)
When I went through they were taught us x86 Assembler, Pascal, Fortran and Modula2. Why Modula2? Not because anyone in the real world was using it, but because one of the university professors had a thing for it and was writing his own compiler (by which I mean tokenizer because it was a run time interpreted solution).
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.
Put simply, if you think of C as being close to the metal, think of most functional languages as being close to the math (i.e. lambda calculus).
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.
You're free to dislike the way Python handles blocks and white space. But if it actually substantially affects your productivity, you're simply not a very good programmer, because it's not a big deal in practice.
As far as enterprise development is concerned, .NET is clearly picking up steam compared to Java. I think schools should teach C#.
Not even wrong.
(1) Just about everything is doing better than Java. .NET's fate is tied to Windows which is has ceded nearly all its market share to Android.
(2)
I do all my cross-platform development with Qt C++ in Qt Creator.
Not C++ or C#, just plain old C.
Please justify this statement if you agree with me.
>If you've never run into that problem, how can you understand the need for a solution?
Partly because you're oversimplifying (OOP doesn't just exist to solve _that_), and partly because sometimes you just find some tools to intuitively feel better than other tools for a job. I'm not saying you shouldn't find out what problems something tries to solve -- I do some tutoring to help my classmates (and some freshmen) improve their grades, and one of the things I stress is precisely that which you described, I always present them a new concept as the solution to a problem; I think that's the way to go. What I'm saying, however, is that it isn't always the case that we need to know the problem _before_ we learn the solution. It's not like OOP is "just" a solution to that, so you might be using it to solve your own set of other problems -- and if it feels like the right tool to you (even if it isn't), you don't need to know why it originally existed.
I have to correct myself. I said "It might, in most cases", where I meant "it might, in some cases".
Did you learn assembly, out of curiosity? By the way, I'm also developing a love/hate relationship with Haskell.
As to college, in this matter it isn't very different to any other person learning how to program. They make the same mistakes..it just helped me better understand the kinds of problems my classmates have.
Have you heard about SoylentNews?
Could have been worse? Python is a fantastic first language to learn how programming is done, especially in the context of getting another job done (Science, Math, etc.)
- Michael T. Babcock (Yes, I blog)
What problem have you ever had with indent-based parsing?
Many many people have a problem reading other peoples' C and C++ code because of how it is not always enforced and allows some incredibly poor legibility.
You may not personally have this problem *writing* code but you've almost certainly had it when reading code.
Not all Python is readable, but forcing programmers to use good style is one of the first problems in a braces-based parsing environment. Python just formalized it.
- Michael T. Babcock (Yes, I blog)
Android is a crap user experience. I hope that the madness about Android stops. Not to mention that Google are a far more "evil" company that MS ever was. They are dominating the entire internet, they have virtually scraped anonymity by insisting that you must log in with a google+ account to make any comments on most websites. Even non google websites are too lazy to say no to google+.
Think about it. You no longer have anonymity. Well that is okay if all you want to comment on is stuff that does not matter, like "Does Justin Beiber look cool in a hat". But if you want to comment on stuff that does matter. Stuff where freedom of speech is heavily stifled - then this is a serious assault on your ability to exercise your freedom of speech. NOT THAT ANYBODY SEEMS TO CARE!
It is such a pity that MS destroyed themselves with that fucking Windows 8 crap. let's hope that Window 9 does not pretend that your non-touch-screen laptop or desktop is a tiny touch screen device. Whoever at MS decided to go down that route should be... well unless I can say so anonymously...
PS yes I know that i can use anonymous coward setting on /. before anybody tries to grab an easy point.
Nice one - and absolutely true. Python is a hodgepodge of a language. There does not seem to have been any forethought or actual "design" in the language, just an: "Uh we should have objects now..." ... "uh, okay, let's do it like this..." CRASH! BAG! WALLOP! There you go, Python version 23498259376932457239457.23495723495723450984375. Download it today!
Where I went to college, the second semester CS course was designed to run through as many different types of languages as they could get through and still enable the students to write something useful. "This is language A, an example of category X. It has features D, E, F and problems R, S, T. It is often used for problem types K, L, M. Write a solution for one of those problem types as your assignment. Next is language B, an example of category Y..."
In your non-Python language of choice, how do you tell the difference between an error in indentation and an error in marking the beginning and ending of blocks?
Why does this comment appear under the wrong parent comment. Sometimes it appears in the right place and sometimes in the wrong place. Is there a bug in the /. comment system?
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.
I've met professional JavaScript developers and even they don't know how to effectively debug JavaScript beyond console print lines and copy and pasting code into someone's website. Debugging why your AJAX call isn't executing? No idea how to do that.
Let's not even start with node.js. How do you even begin to debug that shit?
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?
what do you mean, picking up steam - Enterprise (those who are Windows shops of course) use C# extensively.
However - think of it like this. Ten years ago, you'd be the one saying Visual Basic is the most widely used language in enterprise, so we should be teaching kids that. And today, those kids would be coming out of college knowing all about VB6 (note, schools don't change curriculums overnight, it takes a long time for them to realise, and even longer to implement change - Java was popular in 1996 which is when it started to gain traction in university departments).
So, I hope this shows you the fallacy of teaching using "what enterprise wants now". You need to teach what will stand the kids in good stead for the future, that teaches them fundamental programming concepts that they can use their knowledge to apply to other languages. Personally I think they should teach a language that no-one uses in industry. Pascal (or Oberon) or something dedicated for teaching.
Oh, and that only applies to Windows shops, non-windows people don't use C#.
DeVry college offers degrees?
Slashdot: providing anti-social weirdos a soapbox, since 1997.
which college was that as it seems to have grasped the concept of teaching.
there is no such thing as an error in indentation in other languages. Indentation is simply whitespace added as a guide for the programmer and is entirely optional.
So
is exactly the same as
which is exactly the same as
I think python as an introductory language is good as it forces the learner to understand indentation as a good thing, but in the real world its less useful and more a straitjacket that can be bad. For example, when adding some new code I will often put it at the beginning of the line (ie with no indent) so I can see it more clearly whilst coding (usually this is for temporary tracing lines), and only indent it before commit. Sometimes a big block of switches is much more clearly laid out like my first example.
None of these causes errors in readability of the code, which is really what indentation should be all about. Good for python enforcing this, but bad of python for not offering the curly-brace alternative when you need it.
Right... so a Microsoft approved curriculum. Good for a trade school, awful for a person who wants to actually learn something.
They could have a patent lawyer in the classroom. The students could carry out an exercise like writing a tic-tac-toe game, then the lawyer could explain how they had infringed 15 user interface patents, a method of representing spatial coordinates as data, and were also guilty of trademark infringement.
I disagree. Java and Python - or any other programming language - are tools and only in widespread use because they fulfill their purpose well. It is a mistake to think that a programming should aim to make programming easy - designing and writing programs are fundamentally difficult tasks, and the only way you can make coding feel easy is by hiding away the complexities behind an API; but the cost is always to narrow the scope of the language.
Java and Python have both found a very good balance between generality and ease of use; my fear is that if you don't learn the hard, but more universal programming techniques from the beginning, then you'll never learn them and you'll always be a user of tools that you don't fully comprehend. It is a lot easier to move in to Java, Python or any other "easy" language, if you start from C++, than it is to go from Python to C++, for example.
One would hope that Java or Python is not the only programming language that is learned; it should IMO be mandatory to also learn at least C and possibly assembler of some sort.
Esperanto would be great .... if everyone else learned it. Simple logical grammar, few irregularities, sounds that are common to a lot of languages, easy to learn.
It's a sort of reverse tragedy of the commons.
Could have been worse? Python is a fantastic first language to learn how programming is done, especially in the context of getting another job done (Science, Math, etc.)
I agree it's a good choice. Personally I think it would be slightly easier to start with typed languages so that you would have more appreciation of the transformations that go on behind the scenes, but at worst that will be half an hour of confusion followed by "ah that's what it was doing for me".
Only trolls need anonymity to post in public forums, anything that you truly need anonymity can still be accessed through the proper channels. Stop spreading propaganda kid.
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! ~~
" because there's no easy way to see how many blocks I'm terminating "
Your function is too long. Still, you could use #{ and #}, or anything, really. You should try it. #begin and #end work, too. As long as your code is tidy and hence indented properly.
My only real criticism of python is that it lacks the switch statement..
If you are just starting out learning to program, you are not in a position to determine which language is best to learn by. You have to take advice, or take what you are given. If you feel 'force fed' you are either way over-opinionated for someone who knows nothing, or are an idiot who has booked themselves onto the wrong course.
Visual Studio is quite Windows specific, but the others are more or less cross-platform thanks to Mono.
Right... so a Microsoft approved curriculum. Good for a trade school, awful for a person who wants to actually learn something.
Well, still better than an Oracle approved curriculum.
How is a language without personality and history any good?
Natural languages are not meant to be formal.
Curly brackets are most aesthetically pleasing.
What sort of software project doesn't enforce proper indentation?
Badly indented code doesn't pass code reviews.
and your obviously a shit programmer as you don't understand why it's fucking idiotic!.
Then you haven't met any professional programmers, fucking firebug is easy and even shitty internetexploder has a debugger for it.
It's not fucking rocket science!.
(if you want a really tricky debug problem, try writing a game in assembler in the early 80's for zx80,81,zx spectrum, c64, atari 2600 (now that's a real skill!), ST, Amiga. To get the most out of the system you literally went to the bare metal for input and output, tape disk etc, and you couldn't step code at all).
Isn't hitting the autoformat key easier? If you forgot a brace somewhere it will mark it as an error. If it matches somewhere else, then the format will be off and easily recognizable.
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.
I disagree. When somebody is learning how to program, you wan the language to be as easy to use as possible. You want to be able to solve real problems with a minimum amount of "boiler plate" and extraneous concepts.
For instance, in Java, you cannot write anything without having a class, so you have to introduce classes and methods (including static ones) to the beginner right at the start. Whereas with Python, you can pretty much type statements that do things straight away.
Also, you want the error messages to be simple and descriptive in terms that a beginner can understand. So when you index off the end of an array, you want the computer to print an error message that says "you've indexed off the end of the array", not to silently scribble over the process's memory.
This is not to say that Java and C don't have their place, they are just less suitable as a first teaching language than Python.
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
Says the anonymous poster....
Well my experience is certainly different. We were taught with Pascal and C++ in the intro courses, and then we ended up using languages like Python, Assembler (at least two architectures), Haskell, C, Java, C#, and Ruby -this is not an exhaustive list. My point is it should not matter which language is used - if the intro courses are well taught, they can be foundational to a well-rounded CS education.
Wait... are you saying I misunderstand Esperanto?
Point proven.
Well.. maybe. Or Maybe not. But Definitely not sort of.
So who hired the devs who "couldn't figure-out how to use {} in JavaScript" ??? I would fire that guy too.
Where is this school, and do I have to send my kids to Shanghai to get them enrolled?
The schools here in Connecticut offer a variety of summer programs teaching tech subjects leveraging Scratch, Raspberry Pi's and Mindstorms. I haven't seen them as part of the normal curriculum yet, but I expect it soon.
How is a language without personality and history any good? Natural languages are not meant to be formal.
Its not meant to be a litterary language, just an easy way that people can communicate with each-other. That's really a moot point as it has obviously failed in this primary aim anyway.
you know that most if not all py script is not shiped in binary form? compiled at runtime? the python scripts that ship with blender!!! besides, you choose the language that best suits the situation, oh and you can run the same script from python in 32/64,,, win/mac/linux/bsd..............
WTF is wrong with perl? Let's treat it as the 'gross anatomy' class to find out who's gonna stay.
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.
Funny...Java only lasted may be 10 years as the "first" language for CS curriculae. C++ laster longer (15+ years), and C longer than that.
Now unlike with C and C++ they did find bigger issues with Java being the first course - as upper level classes (e.g Networking) found they had to teach kids C/C++ first before they could get into the course material. Not to say that won't still be an issue with Python...it'll probably have its own layer of issues.
Needless to say, if I had to learn programming my freshman year of college I would rather have had Python than Java. (I didn't; I learned to program in High School in a far superior manner than taught at the college level; but that's beside the point here.)
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Because if we knew Esperanto, we could follow that Esperanto movie William Shatner starred in in 1965. That's pretty useful.
You are in a maze of twisty little passages, all alike.
I used Pascal for almost all of my CS courses (but this was in the mid 80s). I got my first job as a C programmer with no formal C experience, but that wasn't a problem, and I never had any problems adapting to new languages during my career as needed. I like some languages more than others, but I can get the job done in anything needed with a short learning curve. I've done mostly C++, which I enjoy, and picked up Python on my own a couple years ago, which I love. I wouldn't call myself a Python expert by any stretch, but I could become one in short order if the need arose. It's all about the programming: Thinking logically, breaking tasks down in discrete steps that do the right thing, knowing what can go wrong. The language is just syntax. It might make some things easier and some things harder, but they're all doable.
You are in a maze of twisty little passages, all alike.
I thought the whole whitespace-dependent thing was a crock too, coming from 20 years of mostly C++, but since I'm already obsessive about code formatting, I found it very natural and comfortable once I started using Python.
You are in a maze of twisty little passages, all alike.
With Python, on the other hand, I'm actually more likely to have an error in the indenting, because there's no easy way to see how many blocks I'm terminating when I outdent by an arbitrary amount.
I've never really had that problem, but then I always break up code into reasonable sized functions so the nesting doesn't get too deep. Perhaps that's what you need to change.
You are in a maze of twisty little passages, all alike.
For example, when adding some new code I will often put it at the beginning of the line (ie with no indent) so I can see it more clearly whilst coding (usually this is for temporary tracing lines), and only indent it before commit.
I do that in C++ all the time, especially when it's something I don't intend to keep. This is definitely something that you can't do in Python, but that doesn't keep me from liking it.
You are in a maze of twisty little passages, all alike.
Until the next java update..
java may be cross-platform compatible, but it seems to be one of the least compatible with itself over time.
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
But it's not teaching good practices, it's forcing them for what appears to be arbitrary reasons to the students. As soon as they switch to a language where whitespace isn't required, they see no reason to have proper indentation anymore since the compiler isn't forcing it.
If indentation isn't forced, then they can learn the hard way (e.g. tracking down a bug through their own horribly formatted code) about why you pay attention to making it look nice and readable even if the compiler doesn't force you to do so.
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!).
Oh Yea!! Like we need to continue locking in new programmers to Microsoft's proprietary frameworks and tools. I believe it is important to write programs in as transportable manner as possible. ANSI C was good for quite a while. C++ can be transportable if you avoid platform specific or vendor specific extensions. Personally, I am having good results writing portable software in Python, and while I am aware that it is primarily an interpreter, the software I am working on does not need to be high performance. What is valuable about it (python) for me is that it is well documented, and has both a rich standard library and a ton of 3rd party extensions.
nothing really wrong with Python, it just needs curly brackets so you could escape from the indentation if you need or want to. Its not a big deal I think, and probably the only stopping it from happening is political.
There is a difference between learning biochemistry and/or physiology, etc. and learning the practice of medicine. Unfortunately, that subtle distinction has not found a parallel in the teaching of "computing science".
Star Trek transporters are just 3d printers.
RPI
Looking at the current course catalog, they seem to has moved this later in the curriculum and pulled data structures, algorithms, and some computability topics in before coming back around to the subject of languages. It looks like they put in some compiler design too.
Java was not popular in 1996. It had only been out a year.
Just saying... If you are going to base your thesis on something then that something should be researched first, not just made up.
Could have been worse? Python is a fantastic first language to learn how programming is done, especially in the context of getting another job done (Science, Math, etc.)
This is about Computer Science, not Science/Math, so you need a language that teaches the basic principles of languages and programming, not something that just "gets the job done".
Python lacks features that have been shown over the decades to be a good idea for creating solid, reliable codebases, such as strong typing and a class/library system that allows proper data hiding and abstraction.
With Python, on the other hand, I'm actually more likely to have an error in the indenting, because there's no easy way to see how many blocks I'm terminating when I outdent by an arbitrary amount.
If you can't see at a glance what the indentation level aligns with, your method is too long.
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.
and ur a poopy head!! hehehehehehe
(why bother even responding)
Why do you need a switch?
Is it faster than if/elif?
(Honestly asking, I use Python and looked for a switch statement before reading that it didn't make that big of a difference)
This is the biggest positive I have for picking Python first, the interpreter. You can just open it up and start typing commands and writing statements and the people learning it start to "get" it a lot faster.
When you want to teach Java to someone who's new to programming you have to introduce Classes (which is a strange concept to a day 1 learner), methods (static? private? public? what does this all mean??), and a lot of other "need-to-knows" just in order to get a simple "insert name, hello " program out the door.
This takes all of 3 lines and half an hour to explain in Python, and people start to quickly grasp the basics behind programming without having to worry about the behind the scenes stuff.*
*which should still be taught, just don't need to dump it on them day 1 - what's the rush?
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.
OK, then, what should the teaching language be? What language would be better for teaching basic concepts and principles of programming, e.g. algorithms, data structures, control flow, events, etc.? Assembly language for MOS6502, perhaps?
Downmodding is the refuge of the weak. Don't downmod, make a better argument!
You're free to dislike the way Python handles blocks and white space.
Thank you. Not that I needed your permission, but I shall indeed continue to consider it an idiotic design.
But if it actually substantially affects your productivity, you're simply not a very good programmer, because it's not a big deal in practice.
Agreed. However the fact that it doesn't noticably harm my productivity doesn't mean it's a good feature.
In any case, we're discussing its potential use as a teaching language here, and people who are just starting to learn to program are, pretty much by definition, not good programers. So its impact on not-good-programmers is still very relevant.
In your non-Python language of choice, how do you tell the difference between an error in indentation and an error in marking the beginning and ending of blocks?
Difference? There is no difference! I don't indent! I mark the beginning and end of blocks, and the code is automatically indented to match. I can, with some difficulty, defeat this mechanism, but I can't think of any reason why I'd want to.
I always break up code into reasonable sized functions
That's nice if you're working alone, and never have to deal with other people's code, and don't have to fight management tooth-and-nail for any change larger than the bare minimum required to fix a specific problem.
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