Slashdot Mirror


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

415 comments

  1. Re:another language shoved down your throat by short · · Score: 2

    not will but it is

  2. Re:another language shoved down your throat by szmccauley · · Score: 5, Funny

    could have been worse, it could have been javascript

  3. Which raises the critical question: by MAXOMENOS · · Score: 5, Interesting

    2.x or 3.x?

    1. Re:Which raises the critical question: by Anonymous Coward · · Score: 0, Troll

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

    2. Re:Which raises the critical question: by tippe · · Score: 5, Funny

      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

    3. Re:Which raises the critical question: by ShadowRangerRIT · · Score: 5, Informative

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

      --
      $_ = "wftedskaebjgdpjgidbsmnjgcdwatb"; tr/a-z/oh, turtleneck Phrase Jar!/; print
    4. Re:Which raises the critical question: by Roger+W+Moore · · Score: 5, Funny

      Wow - I never knew you could tell a real programmer by their choice of bathroom cleaner.

    5. Re:Which raises the critical question: by number6x · · Score: 3, Funny

      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.

    6. Re:Which raises the critical question: by Anonymous Coward · · Score: 0

      i really hope 3.x cus im learning that right now, fuck all the legacy 2.x code that i've convinced my hiring manager i can code in!

    7. Re:Which raises the critical question: by Darinbob · · Score: 1

      It's vi dumbed down for the masses.

    8. Re:Which raises the critical question: by Darinbob · · Score: 1

      And how vital is internationalization support when you're just learning to program for the first time?

    9. Re:Which raises the critical question: by Anonymous Coward · · Score: 0

      Here they introduced python this year... Python 2.6 (not even 2.7). They had to get the tool certified for teaching (actually, to get it certified so results obtained by it may be graded) and that takes a long time and is quite an involved process so they are unlikely to do it again.

      They also used an obsolete java VM for the same reason.

    10. Re:Which raises the critical question: by Anonymous Coward · · Score: 0

      The strength of Python has always been the fact that it's a sane language *despite* being newbie-friendly. Otherwise, why not just program in VB6?

    11. Re:Which raises the critical question: by ChunderDownunder · · Score: 1

      hard-coding user interface strings is a bad smell, even if you're just programming for one regional language.

      If the class migrates beyond 'Hello, World!', learning best practices from an early age is a good thing, surely.

    12. Re:Which raises the critical question: by bromoseltzer · · Score: 1

      If you haven't used TECO, you might not be a real programmer. (The languge that is indistinguishable from line noise.)

      --
      Fiat Lux.
    13. Re:Which raises the critical question: by rtb61 · · Score: 1

      When learning to code, compact code which is easy to read is the most important. Java was very verbose code requiring far more code to do the same thing. Doing loops is the most important thing in coding and how compactly and readably they are done, drives how learn able the language is. Ruby is very good at that and has the edge of Python in that regard. Ruby can achieve in one line of code what requires a whole paragraph of code in Java and that makes a big difference in understanding code. Being able to test individual lines of code also helps the learner.

      Of course as thing advance the software engineer takes over with descriptions of actions and functions being coded in the background by the coding engine, now the quality of code that future coding engines produce will be an interesting thing.

      --
      Chaos - everything, everywhere, everywhen
    14. Re:Which raises the critical question: by davester666 · · Score: 1

      Everybody knows the scent of pine fucks up your ability to think.

      --
      Sleep your way to a whiter smile...date a dentist!
    15. Re:Which raises the critical question: by Anonymous Coward · · Score: 0

      It just does not make sense to use Python 2 for anything else than legacy reasons, and since introductory programming courses to a large degree are about writing the programs themselves from scratch, the only reason for using Python 2 would be if the course administrator was misinformed about the difference between the versions.

      In my country (Sweden) I see the same uptake of Python for introductory programming, and to my knowledge it is exclusively Python 3 that is used. Anyone living in a country where the assumption ASCII=={all textual content that ever needs to be written} fails (which of course even includes English speaking countries in a modern context) would gain a lot from using Python 3 for new projects. The negativity around Python 3 is in my eyes almost always painfully dependent on ignorance of what the difference actually is (the same extends to much criticism of Python itself; misrepresentations of the whitespace issue still lingers in current debates).

    16. Re:Which raises the critical question: by i.r.id10t · · Score: 1

      What about brainfuck ?

      --
      Don't blame me, I voted for Kodos
    17. Re:Which raises the critical question: by Anonymous Coward · · Score: 0

      Everyone knows that real programmers use vim. Long live vim!

      Whats wrong with emacs?

      (okay, now this thread will really start getting good... DRAW THE BATTLE LINES!!!! )

    18. Re:Which raises the critical question: by greenfruitsalad · · Score: 1

      where Python Style Guide encourages readability, Ruby's one encourages encrypting your code into a messy string of colons, semicolons, various braces, hashes, percentiles, ampersands and other special characters.

      so, even though what you say is true, I find Java code way more readable than Ruby

      I shudder every time i need to use ruby (in Chef Cookbooks)

    19. Re:Which raises the critical question: by rtb61 · · Score: 1

      Can you read maths formulas, hmm?

      --
      Chaos - everything, everywhere, everywhen
  4. And nothing of value by Ukab+the+Great · · Score: 0

    Was lost

    1. Re:And nothing of value by Anonymous Coward · · Score: 1

      Or gained.

    2. Re:And nothing of value by Darinbob · · Score: 1

      Learning new Python idioms as well which will never be portable to other arenas.

    3. Re:And nothing of value by Anonymous Coward · · Score: 0

      AMEN brother

  5. compile survey by Anonymous Coward · · Score: 0

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

    He probably used Python to compile the survey.

  6. The Future's So Bright by Art3x · · Score: 4, Funny

    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.

    1. Re:The Future's So Bright by X0563511 · · Score: 4, Insightful

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

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    2. Re:The Future's So Bright by Vellmont · · Score: 2

      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.

      --
      AccountKiller
    3. Re:The Future's So Bright by Anonymous Coward · · Score: 1, Insightful

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

    4. Re:The Future's So Bright by hondo77 · · Score: 5, Interesting

      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.

      --
      I live ze unknown. I love ze unknown. I am ze unknown.
    5. Re:The Future's So Bright by cecom · · Score: 2

      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.

    6. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      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.

    7. Re:The Future's So Bright by jbolden · · Score: 2

      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.

    8. Re:The Future's So Bright by Anonymous Coward · · Score: 0

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

    9. Re:The Future's So Bright by fnj · · Score: 1

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

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

    10. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      I want to make grander mistakes, albet fewer of them.

    11. Re:The Future's So Bright by X0563511 · · Score: 1

      OpenSSL might be a bad example.

      OK, this specific example's not so bad, but in general: I won't consider someone a bad programmer because the subject-specific process or such they devised isn't correct. Does the code do what they intended? That's the measure.

      You can be a good programmer, but a terrible architect, designer, or cryptographer.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
    12. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      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.

      I know you were kidding, but it's been done: http://trevp.net/tlslite/

    13. Re:The Future's So Bright by ultranova · · Score: 1

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

      The problem is, if you're doing commercial development, you're not driving your bike, you're driving a company-owner truck.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    14. Re: The Future's So Bright by smaddox · · Score: 1

      For "true" computer engineers, I completely agree, and this is how I learned at the university of Texas at Austin just 9 years ago (well, really I had already taught myself c++, but that was how the curriculum went. Except we started with logic gates, then went to machine code, and then assembly.) However, for someone going in to web Dev, etc. that's hardly necessary.

    15. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      Bugs are bugs. Spreading FUD when it comes to powerful programming languages is a bad reason to use a less powerful language. Certainly the 'types' of bugs might be different but I am pretty sure we shouldn't all switch to Objective C because some php website has an SQL injection or XSS bug.

      Teaching CS using python is like teaching how a car works by using the turn signal.

    16. Re: The Future's So Bright by Anonymous Coward · · Score: 0

      Kinda like Glock owners with no safeties. Nothing like hanging the corner of your jacket in your holster, inadvertantly pulling it out and discharging it because of no grip safeties. #1911ftw

    17. Re: The Future's So Bright by Anonymous Coward · · Score: 0

      You're comparing firearm safety to programming safety? In most cases, being careless during programming will result in code that crashes, leaks memory or simply fails. Being careless with a gun tends to result in more... tragic consequences. Not saying that bad programming can't kill (particularly if it's for medical equipment) but they aren't in the same ballpark most of the time.

      Not that a dumbfuck like yourself would think like that given your use of a hashtag on Slashdot.

    18. Re: The Future's So Bright by Anonymous Coward · · Score: 0

      You nailed in. CE/EE, CS, MIS, and IT all have different require mebts and different approaches. It's all about context.

    19. Re: The Future's So Bright by Anonymous Coward · · Score: 0

      Someone going into web dev doesn't need to be taking comp sci.

    20. Re:The Future's So Bright by jafac · · Score: 1

      The only bad programmers I've ever encountered, are programmers that are inconsiderate.
      Those who do not consider that the purpose of a computing language is to communicate with other developers, not just the computer. That's really the main common-factor I've found among "bad programmers". It's a skill, that can be learned, but it's an emotional skill. Some people can be very intelligent, brilliant even, and still not want to learn that one crucial skill.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    21. Re: The Future's So Bright by Volguus+Zildrohar · · Score: 1

      Having seen some of the stuff done in web development (or any development really), I wholeheartedly disagree.

      --
      When confronted with one problem, some think "I'll use recursion". Now they are confronted with one problem.
    22. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      Commercial software is moving away from C/C++ because of this current obsession with mobile, which uses Java/Objective-C for the most part and occasionally some C/C++ if you're on Android. In my case I use C++ because I happen to like the language, and my employer is not a commercial entity and doesn't really care what I use so long as it works to accomplish our goals.

    23. Re:The Future's So Bright by Xyrus · · Score: 1

      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.

      Even the best bikers in the world end up going over the handle bars into a ditch every now and then. What will be your excuse when you and your team cost some company millions of dollars due to delays and bugs that wouldn't have occurred if you had simply ditched your ego and went with the safer choice?

      Unless you know everyone on the project team beyond awkwardly greeting them once in a while by the water cooler, choosing the best technology to use on a project based on what let's you be a SUPA HACKA is not only naive, but will most likely horribly backfire. Always assume your team will consist of the muppets and plan your tools and technologies accordingly.

      --
      ~X~
    24. Re:The Future's So Bright by phantomfive · · Score: 1

      The person who made the mistake isn't a bad programmer

      Yes he is. Good programmers know the weaknesses of the language, and devise a system for not being trapped by them.

      --
      "First they came for the slanderers and i said nothing."
    25. Re:The Future's So Bright by Vellmont · · Score: 1

      Ahh programmers. Always taking things far too literally.

      --
      AccountKiller
    26. Re:The Future's So Bright by holostarr · · Score: 1

      Or not understanding the op's point about bounds checking.

    27. Re:The Future's So Bright by Anonymous Coward · · Score: 0

      I prefer "some of us don't trust others to pack our parachute"

    28. Re:The Future's So Bright by hondo77 · · Score: 1

      So you want to hold back your best cyclists because you're afraid of getting the occasional boo-boo? Better idea: don't hire muppets in the first place.

      --
      I live ze unknown. I love ze unknown. I am ze unknown.
  7. Good Java is a poor choice by Anonymous Coward · · Score: 0

    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

    1. Re:Good Java is a poor choice by Anonymous Coward · · Score: 0

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

      Progress!

    2. Re:Good Java is a poor choice by Opportunist · · Score: 1

      n^2*(number of browser versions)

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  8. "Top Learning Language" ...OR... by tlambert · · Score: 4, Interesting

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

    1. Re:"Top Learning Language" ...OR... by pieisgood · · Score: 5, Insightful

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

      --
      Eat sleep die
    2. Re:"Top Learning Language" ...OR... by Anonymous Coward · · Score: 4, Funny

      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.

    3. Re:"Top Learning Language" ...OR... by Anonymous Coward · · Score: 0

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

    4. Re:"Top Learning Language" ...OR... by supton · · Score: 2

      Here you go:


      {
              1: fn1(),
              2: fn2(),
              3: deploy_attack_kittens()
      }[input]()

      Complaining about a switch statement missing in Python is like complaining that Superman doesn't have a faster airplane.

    5. Re:"Top Learning Language" ...OR... by supton · · Score: 1

      And of course, I submitted with a typo... omit the parenthesis inside the dict on the callables.

      Corrected:


      {
                      1: fn1,
                      2: fn2,
                      3: deploy_attack_kittens
      }[input]()

    6. Re:"Top Learning Language" ...OR... by Anonymous Coward · · Score: 0

      That sure works great for non-complete and cases with intended fallthrough.

    7. Re:"Top Learning Language" ...OR... by tommeke100 · · Score: 1

      You can implement a programming language in python.
      We used Scheme (simple LISP derivate) at our university in the nineties (good old Abelson and Sussman).
      Didn't even have classes (objects) back then!
      Still it was perfectly possible to simulate objects (state and behaviour) by lambda expressions.

      Same can be done with Python, I'm sure.
      Writing a meta-circular interpreter in any language will teach you about memory allocation.
      Maybe not pointer specific notation as in C.

    8. Re:"Top Learning Language" ...OR... by Anonymous Coward · · Score: 0

      Now add fall through.

      Fact is, the switch statement is basic, it's useful, it's elegant and easy to read. The fact that it's omitted for no reason is ridiculous. I'll admit, I'm not a skilled python programmer, but I'm 10 years professionally experienced in more languages than I care to mention. Some of the most basic constructs are missing for reasons I don't understand. Seriously, I find bash more elegant to use than python. Then there's the whole problem of indenting. Seriously, what happens if one guy is using tabs and another guy is using spaces? I should probably figure this out at some point, but just can't be asked right now. This is seriously the first language I've ever used that this has been a real concern other than being irritated when I open a file in a program with a different width tab is set from the guy who wrote it. Especially when every coding standard I've ever used requires use of spaces, not tabs, to keep code looking consistent.

      Another slight niggle is the lack of the do while loop. I always like to use that for breaking out of a logic block.
      int retVal = -1;
      do {
          if(thing1())
              break;
          if(thing2())
              break;
          if(thing3())
              break;
          retVal = 0;
      } while(0);
      return retVal;

      is a very nice thing. I've opted to mimic it with creating a "BreakException" and raising that within a try block, because though it can be approximated with a while loop, it requires an extra unneeded variable. And the exception, at least in most of the languages I regularly use, are slow to handle. And yes, I tend to work in firmware, hence the concern over an extra variable. I'm just having to use python for some work as I do my masters. Now, get off my lawn!

    9. Re:"Top Learning Language" ...OR... by Anonymous Coward · · Score: 0

      Are those things relevant for all programmers any more?

      There was a time when learning assembly was an essential skill because you needed it to get the speed - now it's simply not the case. Memory management is going the same way.

      It entirely depends on what they want to do - an introduction course doesn't need to cover those lower-level concepts that may well not be relevant.

      Just because that was vital when you learnt, doesn't mean it is now.

    10. Re:"Top Learning Language" ...OR... by umghhh · · Score: 1
      why C only? I think memory management is as important aspect of developing an application as anything else but there are cases where you can use gc and it will take care of it all. There are also cases where it is not available or cases where it is but you still need to know consequences of its use and where are the limitations.

      It is also interesting to discuss issues like access to shared memory in concurrent env. and different paradigms that are available. I happened to work with java and c++ cohders (creating big complex real time applications that theoretically were to be highly available) and they all suck big time in anything that goes beyond the book they read when they learned their tools of trade. There were cases however, where this (lack of) knowledge was irrelevant.

      There are also other areas like project management and communication techniques, planning, maintenance aspects and many other that universities do not teach at all. Why not cover those too - these are useful general skills that most of us lack.

    11. Re:"Top Learning Language" ...OR... by ConceptJunkie · · Score: 1

      You know, for things like memory allocation, pointers, and so on?

      Compared to Java? I think it would hold its own.

      I think there are good arguments for being exposed to C early, but I wouldn't say it necessarily should be a first language.

      --
      You are in a maze of twisty little passages, all alike.
    12. Re:"Top Learning Language" ...OR... by hawaiian717 · · Score: 1

      Easy enough to fix...

      {
                      1: fn1,
                      2: fn2,
                      3: deploy_attack_kittens
      }.get(input, do_default_thing)()

      --
      End of Line.
    13. Re:"Top Learning Language" ...OR... by tlambert · · Score: 1

      Are those things relevant for all programmers any more?

      Only the employed ones.

  9. Python for learning? Good choice. by Anonymous Coward · · Score: 3, Insightful

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

    1. Re:Python for learning? Good choice. by vux984 · · Score: 4, Insightful

      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.

    2. Re:Python for learning? Good choice. by dargaud · · Score: 1

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

      --
      Non-Linux Penguins ?
    3. Re:Python for learning? Good choice. by vux984 · · Score: 1

      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.

    4. Re:Python for learning? Good choice. by vux984 · · Score: 2, Insightful

      If you're copy-pasting enough code from web forums

      Ah yes, because teaching yourself from online resources like the web is a bad idea. And one should always retype everything from scratch despite it already being more or less what you want one window over.

      and emails for this to be a problem

      Well, not so much in practice, because it's a waste of time, so we have to diddle around with little attachments etc because trying to put any code in the email body directly is likely to barf on itself.

      It would be nice not to have to though.

      I'd suggest the language is not the only thing that's idiotic.

      Of course you would. Attacking my intelligence is really the only way to defend your fanboi love of phython's, despite its ridiculous semantic whitespace.

      Because defending semantic whitespace on its own merits is hard.

      You know what though, I'd be perfectly happy to use a C++ / C# / Javascript ... IDE that validated formatting to set standard and flagged down anything that wasn't right. So you could look at it and then either fix the code to match how you formatted or (a 1000x more likely) click "automatically reformat" so the formatting matches the code.

      That really gives you the best of both worlds. Assurance that the formatting reflects the semantics (a good thing), without actually defining the semantics with whitespace (the idiotic thing).

    5. Re:Python for learning? Good choice. by dbc · · Score: 3, Insightful

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

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

    6. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

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

      Communicating using a medium that damages the message is the idiotic thing to do. If you want a programming language's syntax to be able to repair damage done by unreliable communication methods you're solving the problem in the wrong place. If you solve your problem in the right place this issue you're having with Python disappears.

    7. Re:Python for learning? Good choice. by Darinbob · · Score: 3, Insightful

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

    8. Re:Python for learning? Good choice. by vux984 · · Score: 1

      We use white space to communicate our programs' block structure to other humans. Why should we use a different syntax to tell the compiler the same information?

      What -should- happen is the compiler flags when the whitespace doesn't match the semantics as an error. Then the programmer can reformat it (automatically in most cases) to match the code, or fix the code if necessary to match the formatting.

      Computers should conform to the needs of humans. Full. Stop.

      Agreed. And by forcing humans to manipulate whitespace directly and manually you are not conforming to the needs of humans. Full. Stop. :)

      Humans cannot 'see' whitespace characters -- that's what makes them white space. Therefore it is awkward to manipulate as a result, and is easily mangled or corrupted by many tools which do not religiously preserve whitespace... because its white space ... and the vast majority of tools view whitespace as token separators not semantic unto itself. And this is because this is how humans view whitespace too for the most part. So what python is doing is weird by human conventions.

    9. Re:Python for learning? Good choice. by ultranova · · Score: 1

      I'll disagree on that. We use white space to communicate our programs' block structure to other humans. Why should we use a different syntax to tell the compiler the same information?

      Because our visual cortext deals with geometric structure, while the compiler deals with logical structure. It's simply more efficient to tell the compiler the latter, and let the IDE to format the code for easy consumption by the former.

      Computers should conform to the needs of humans. Full. Stop.

      I agree. And in my experience, it's much easier to have explicit block start/end markers and let the IDE format things than wonder if your bugs are caused by mixed tabs and spaces.

      Python eliminates that source of bugs and redundancy by having the compiler's view of the significance of what space match a human's view of significance of white space.

      No, it doesn't, and that's precisely the problem. My eye can't tell the difference between 8 spaces and a tab, but the compiler can. And I often find myself refactoring the code in ways that causes space-based alignment to get inconsistent. In languages like Java I just insert braces and tell the compiler to reformat, and all is well; in languages like Python, I'll have a fun time re-indenting hundreds of lines and hoping I get everything right.

      "Indentation is logical structure" sounds like a good idea, but it's not. It's a horrible one.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    10. Re: Python for learning? Good choice. by smaddox · · Score: 1

      I have little experience with it at this point (haven't needed that level of optimization yet), but i hear Cython takes care of that. Of course people who don't like whitespace (yet somehow can stand braces and semi colons) won't like it.

      For coding custom scientific software (not super computer level performance, mind you), i personally think python is unbeatable. Python is incredible for write first, optimize later, because there are several tools available for various levels of optimization, and a huge repository of C and Fortran bindings for various libraries.

    11. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Actually, I like the indenting being semantically meaningful in Python! It removes a lot of now unnecessary brackets, and prevents people creating misleading indenting.

      My first languages I used commercially were COBOL & FORTRAN (back in the early 1970's), I've taught C to experienced programmers and my main language now is Java.

    12. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      This still comes up sometimes, so I'm still sharing my FAQlette on the subject:
      http://stromberg.dnsalias.org/~strombrg/significant-whitespace.html

      In short, correct whitespace is something you should do anyway. Also, while FORTRAN made a mess of things with sigificant whitespace, it also made a mess of things with whitespace that wasn't significant enough.

    13. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      I really wish that editors and version control systems dealt in syntax trees and displayed the language how I desired to view it. But yeah, I hate the whitespace thing too. Of course there's a lot more I dislike about python, but that's another post...

    14. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      I disagree with that. The only reason for white space is for humans. By making the white space have semantic meaning it removes flexibility for times when a couple blocks of code would benefit from a slightly different convention.

      There's also the issue of fixing the formatting. Since Python uses the formatting for knowing what the code does, if you lose all the white space at the beginning of the lines, it's a lot harder to have the computer fix that. However with most other languages, the indentation levels are only of significance for readability. So, making the IDE reformat the code is a much more reasonable task.

      OTOH, at least Python doesn't use line numbers for deciding what the code means.

    15. Re:Python for learning? Good choice. by Kjella · · Score: 1

      I'll disagree on that. We use white space to communicate our programs' block structure to other humans. Why should we use a different syntax to tell the compiler the same information?

      IMHO it's far easier to logically get it right with braces and pretty-print it for proper indentation than fiddling around with whitespace.

      --
      Live today, because you never know what tomorrow brings
    16. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      You're trying too hard.

    17. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      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.

      You literally replace typing braces for indentation, which the editor does for you most of the time, and you do anyway.

      If you are using systems that can't handle indentation in text, I don't know where you are. I happily work with Python and have never had any issues with code formatting. Stop using crappy tools that don't handle it properly (something I have literally never come across, by the way).

    18. Re:Python for learning? Good choice. by yenic · · Score: 1

      It really can't be if you follow the convention of using spaces. But any incorrectly indented code to me is considered 'wrong', with or without whitespace delimiting. May as well use it.

      --
      http://www.accountkiller.com/en/delete-slashdot-account Stop visiting Slashdot.
    19. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Despite the offense that people feel, Python is very similar to VBA and VB.Net combined. Old VB has some soft notions of mandatory indents, and VBA is VB with the script environment. Syntax is also very similar. VB.Net has "Me", Python has "self".

      There is even some Python code you can write that will execute under VB script interpreters...

    20. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      I agree with the others your an idiot.

      Whitespace delimiting is fucking idiotic.

      you might as well use fucking "NULL" as a delimiter it means the same to humans.

    21. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      are you arguing for or against the dumb fucking whitespace delimiting?

      it sounds like your against it to me.

    22. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      nope it's just fucking idiotic to use whitespace.

      any fucker who thinks it's a good idea, should stop programming now and go back to serving fries!.

    23. Re:Python for learning? Good choice. by Savage-Rabbit · · Score: 1

      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.

      But it is a real world coding language. When I was taking my CS degree we had a mandatory algorithms course (and not the "how does a for loop work" kind of course, they were teaching the kind of algorithms where a slight performance improvement can shave hours or even days off your execution time). On the first day there was much discontent when everybody discovered that they had to learn C/C++ because it was required to code assignment solutions in those languages. Finally somebody asked the teacher if they could hand in assignments written in Python. There was a short silence from the professor, an odd look flashed across his face and then he just said "NO" and went back to explaining how pointers work in C/C++.

      --
      Only to idiots, are orders laws.
      -- Henning von Tresckow
    24. Re:Python for learning? Good choice. by jeremyp · · Score: 1

      The problem is that different humans have different ideas about exactly what white space to use and where. For instance, for brace indentation, I prefer Allman style whereas most people go with some variant of K&R style.

      The other problem is that white space is actually invisible to humans and glancing at a piece of code that is indented, a we cannot tell how many white space characters are there. Think of make files where it matters if the indent is made of tab or space characters. For human readability, the number and type of white space characters (including line feeds) should make no difference to the meaning of the code. If you need to enforce a project standard, there are tools that can do that and that obviate the source of errors that you think Python eliminates.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    25. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

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

      you are ryt about c++

    26. Re:Python for learning? Good choice. by vux984 · · Score: 0

      But it is a real world coding language.

      For sure.

      The reason C++ is a bad learning language is that its overwhelmingly complicated -- both the syntax due to all the extensions, but also the evolution of the standard libraries with tons of ways of doing the same thing, and then throw backs for close but not quite 100% complete compatibility with C.

      It's really beneficial to approach C/C++ with already having a grounding in structured programming, data structures, etc. And ideally a course in C without C++ so you can see where one ends and the other begins. (And its also a smaller bite to chew.)

      I came to C/C++ by way of BASIC then Pascal then C/C++ (self taught in high school) and while that's not really a modern route to take, I think the idea still holds. By the way, the order of languages I was exposed to in university, was Modula2, Lisp, Java, then C++, and then various other courses were in special purpose languages ML, Smalltalk, Verilog, Visual Basic, Maple, there was a course I took that used some pseudo assembler language I've forgotten the name of, and probably a few more I've forgotten about completely. I think I graduated pretty well rounded in terms of exposure to different programming paradigms, which is what I think the program was trying to achieve rather than mastery in any given language.

      It sounds like the course you are describing is a more advanced algorithms class -- implementing quicksort, or shortest path finding in graphs... so everyone in it should already know how to program. And C++ honestly sounds like a suitable language to teach that stuff with.

    27. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Sorry, semantic whitespace in any language is a bad idea, not because the computer can't understand it, but because Humans simply can't be trusted to remember that the white space IS semantic. Add on that the complexity of copy/paste/editors/forums etc being badly implemented not to respect white space just compounds the issue.

      We live in an age where IDE's can quite easily make your life as a developer very easy, so brackets are NOT painful, and are beneficial. And since the removal of brackets is the ONLY reason you would EVER consider making whitespace semantic, clearly having brackets is the better approach, since they no longer represent a source of pain.

    28. Re:Python for learning? Good choice. by XxtraLarGe · · Score: 1

      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 learned to program with C++, you insensitive clod! And we had to write our own stacks, heaps and vectors without using the standard library, and that's the way we liked it!

      --
      Taking guns away from the 99% gives the 1% 100% of the power.
    29. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Old VB has some soft notions of mandatory indents...

      What do you mean by "old VB"? Classic MS Visual Basic had absolutely no indentation requirements going back to at least VB3. Unindented sample VB code from job applicants was one of the obvious ways we would weed out the useless ones back in the dark ages. Sadly, we no longer have that option with Python sample code, so now we sometimes have to waste time with an initial interview to identify morons.

      ...VBA is VB with the script environment.

      I'd say that's inaccurate at best. You're describing VBScript and classic ASP script, both of which rely on the same core scripting run-time DLL. VBA is essentially classic VB hosted within various MS Office tools, with few differences in syntax, and some key differences in default libraries. For example, variables in VBScript and ASP script cannot be declared to have a type; everything is a Variant. However, variables in VBA can be declared with a type (e.g., Double, Long, String, any library object type, any visible UDT, ad so on), just like Classic VB.

      FWIW, I still do occasional maintenance on some VBA and Classic VB projects. It remains as unpleasant as it ever was.

      - T

    30. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Fortran 66; gotta love an language which doesn't mind statements like let 0=1; You can do some awesome job security programming with something like that.

    31. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      That's a false dichotomy, it's the job of whatever I'm pasting it into to reformat it according to our project's conventions when I save.

      Structure and coding convention dictates format == good
      Format dictates structure and convention == massive pain in the butt

    32. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      I used to write all my documents with a WYSIWYG editor, now I use a WYSIWYM editor and I've never looked back. Formatting is important but far too dull to be done by a human.

    33. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      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.

      You have cleary never programmed in Python.

    34. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      Yes you should retype everything, not copypaste. Because this is how you learn. Don't you take notes in a lecture, even if there are books about the subject? If you want to reuse code, do it the clean way by importing the module. Or if you have to copypaste, use an indentation-aware editor (which you should anyway). Problem solved.

    35. Re:Python for learning? Good choice. by Anonymous Coward · · Score: 0

      If your only complaint is whitespace.

      Maybe you don't have a good argument against it?

    36. Re:Python for learning? Good choice. by DrGamez · · Score: 1

      Quick, one more "fucking" and we can get a Yahtzee!

    37. Re:Python for learning? Good choice. by lewiscr · · Score: 1

      I don't do this often, but I do occasionally use indentation that follows the data's logic, not the program's logic.  For example, I've written some XML generation code like:

      $xml = new Xml();
      $foo = $xml->addChild( 'foo');
        $foo->addAttribute( 'attr', 'bar');
        $foo->addNode( 'foonode', 'foonodevalue');
        $fc1->addChild( 'foochild1');
          $fc1->addNode( 'foochild1node', 'value1');
        $fc2->addChild( 'foochild2');
          $fc2->addAttribute( 'foochild2attr', 'value2');
          $fc2->addNode( 'foochild2node', 'value2');
      $xml->addNode( 'xmlnode', 'value3');

      Code like this gets large comment blocks above and below stating that I'm using a non-standard indentation, and why.

      When I later had to refactor the XML schema, it was incredibly useful to have it indented this way.

      It depends on the library and language though.  When I was using nested C structures, or nested object, it wasn't necessary, because the data structure was a lot more visible.  This code is easier to understand using traditional indentation:

      $xml = new Xml();
      $xml->addChild( 'foo');
      $xml->foo->addAttribute( 'attr', 'bar');
      $xml->foo->addNode( 'foonode', 'foonodevalue');

      $xml->foo->addChild( 'foochild1');
      $xml->foo->foochild1->addNode( 'foochild1node', 'value1');

      $xml->foo->addChild( 'foochild2');
      $xml->foo->foochild2->addAttribute( 'foochild2attr', 'value2');
      $xml->foo->foochild2->addNode( 'foochild2node', 'value2');

      $xml->addNode( 'xmlnode', 'value3');

  10. Makes sense by pieisgood · · Score: 3, Interesting

    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
    1. Re:Makes sense by jbolden · · Score: 0

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

    2. Re:Makes sense by Anonymous Coward · · Score: 0

      {
                                      1: fn1,
                                      2: fn2,
                                      3: deploy_attack_kittens
      }[input]()

      how can you be more functional, wrapping that in a lambda , currifying it ?

    3. Re:Makes sense by Darinbob · · Score: 1

      Python however removes the discipline that many other languages have. Students don't learn early on to declare variables before using them, they don't learn how to keep their data types consistent, and so forth.

      I think it could be better to start a student off with something like Pascal or Ada, or even Java, then later when they use a scripting language they will appreciate it. But start them on a scripting language then you will have great difficulty migrating them to C later. You CAN learn C++ without knowing anything about hardware considerations.

      On the other hand MIT used to (or still does) teach intro programming with Scheme, which technically is a lot like a scripting language. I presume those students managed to move on to things like C or Ada.

      A beginning programming course really is just attempting to teach the basic of algorithms (or in MIT's case, some very advanced concepts in algorithms), so it does make sense to not dig too deep into any language's nuances. But it is also good to enforce some discipline early on, because I've seen a lot of students really resistant to stricter languages.

      My first (college) programming used Pascal with turtle graphics. Which meant that our first programs actually drew stuff on the screen, and it was easy to draw stuff on a screen (move, turn, move turn, etc). When we got to the first recursive program is was very easy to see exactly what was going on because it was right there visually on the screen (this fractal is composed of tinier fractals), whereas the students who did their first recursion with text based output (fibonacci) seemed to have a bit more trouble really grokking what was happening.

    4. Re:Makes sense by Anonymous Coward · · Score: 1

      Python doesn't do tail call elimination (i.e. proper tail recursion). That means you can't use it for real functional programming because your loops and iterations are bounded by the maximum stack size. In fact, Guido has said he refuses to add it (http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html)

      Python closures are confusing because of the various scoping limitations.

      And Python also has horrible support for coroutines. You have to manually write and use trampolines if you want to yield from a nested call, which is uuggglllyyy. They had to did this because Python's VM can't be refactored to not intermingle the C stack with the logical Python stack. This is also why Javascript VMs won't support coroutines at all and instead have fallen back on promise/future patterns. They could've added real coroutines. LuaJIT supports fully symmetric, nested-call coroutines without relying on separate C stacks. (The swapcontext and longjmp hacks are slow--register dumping and loading is almost the same cost as full-blown POSIX threads--and a waste of memory--just like POSIX threads your stack must be large enough for the maximum possible recursive depth, which means fill up your VM mapping tables with unused memory). But it would require Google, Mozilla, and WebKit to rewrite their JITs from scratch.

      Python isn't a nice language at all, it's just a popular language. A nice language is something like Lua, which has everything you'd want in a modern, non-strongly-type language, except lazy evaluation. And the Lua VM is actually readable and easily hackable, which is excellent for learning. It makes none of the mistakes which hobble Python. I can't think of a single thing that Python does which Lua doesn't do better. The only thing Python has going for it is popularity.

    5. Re:Makes sense by Anonymous Coward · · Score: 0

      I dunno about that. If you don't have the opportunity to shoot yourself in the foot with poorly formatted code early on, what happens when you move up to a big boy language that doesn't force any sort of style? I'd rather learn that particular lesson when dealing with a hundred lines of code during a class rather than later on when I'm learning a new language and trying not to get fired.

      Sure that's a bit of a false dilemma, but anybody who needs to be forced to write legible code is likely to be in that camp.

    6. Re:Makes sense by DamnOregonian · · Score: 1

      I never fell in love with a programming language until I met Lua. I don't get to use it much these days, but I have fond memories of tasks accomplished in beautiful ways with it.

      I also have a bizarre sado-masochistic relationship with Perl, though, so I probably can't be trusted. I just can't let it go. It's so dirty. I wouldn't marry it, but it will it do a lot of things your wife won't.

  11. Great by Anonymous Coward · · Score: 0, Insightful

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

  12. Good riddance by Anonymous Coward · · Score: 0

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

  13. My anecdotal evidence. by Anonymous Coward · · Score: 0

    101 I'm starting next month uses Python. Nice to hear it's not just us!

    1. Re:My anecdotal evidence. by Opportunist · · Score: 1

      A problem shared is a problem halved?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  14. Re:another language shoved down your throat by infogulch · · Score: 5, Insightful

    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.

  15. pointers by Anonymous Coward · · Score: 0

    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.

    1. Re:pointers by istartedi · · Score: 1

      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.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    2. Re:pointers by Anonymous Coward · · Score: 0

      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.

    3. Re:pointers by shutdown+-p+now · · Score: 4, Informative

      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.

    4. Re:pointers by fahrbot-bot · · Score: 1

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

      --
      It must have been something you assimilated. . . .
    5. Re:pointers by Opportunist · · Score: 1

      So we'll have more programmers who don't get why buffer overflows are bad.

      In other words, nothing will change.

      Yay for job security!

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    6. Re:pointers by ConceptJunkie · · Score: 1

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

      We've managed to get along with the first one, so another one won't be much worse.

      --
      You are in a maze of twisty little passages, all alike.
    7. Re:pointers by Anonymous Coward · · Score: 0

      I think you just get a segmentation fault, which is almost always obviously trying to access undefined memory locations, and is easy to pick out and fix...

    8. Re:pointers by istartedi · · Score: 1

      On *NIX systems you will usually get a segfault. I'm not sure if you will *always* get a segfault. The term "segfault" is specific to *NIX. On Windows it was called "invalid page fault" and I don't know what old school Apple stuff called it. That's beside the point.

      The truly heinous bugs don't come from accessing memory outside your allotted segments anyway. They come from accessing memory within your allotted segments in erroneous ways. This leads to stuff like, "Hey, the 2nd time I called that function the structure's 2nd element had a different value, even though I did nothing to the structure". You know the bug is someplace else, potentially anywhere in the program where you could have walked off the edge of the sidewalk.

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  16. Java or Python by benjfowler · · Score: 4, Interesting

    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.

    1. Re:Java or Python by jez9999 · · Score: 2, Insightful

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

    2. Re:Java or Python by Anonymous Coward · · Score: 0

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

    3. Re:Java or Python by Anonymous Coward · · Score: 0

      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.

    4. Re:Java or Python by retchdog · · Score: 1

      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.

      --
      "They were pure niggers." – Noam Chomsky
    5. Re:Java or Python by Anonymous Coward · · Score: 3, Insightful

      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.

    6. Re:Java or Python by St.Creed · · Score: 5, Interesting

      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.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    7. Re:Java or Python by danlip · · Score: 1

      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.

    8. Re:Java or Python by Anonymous Coward · · Score: 0

      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.

    9. Re:Java or Python by Anonymous Coward · · Score: 4, Insightful

      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.

    10. Re:Java or Python by Shados · · Score: 1

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

    11. Re:Java or Python by Anonymous Coward · · Score: 1

      Why o why do people drop Java? 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 (classes). With references to classes you can make lists, trees etc. - all the constructs basic to the trade.

    12. Re:Java or Python by Anonymous Coward · · Score: 0

      Oracle. If you're still using java at this point, they will forever more be attempting to get money from you.

    13. Re:Java or Python by Anonymous Coward · · Score: 0

      Why? A programming language is a way to help humans instruct a computer what to do. Every programming human I ever worked with uses indentation to make programs readable for humans. Why on earth should a programming language use one way for humans and another way for compilers/interpreters to specify the same thing? Do you expect to have two variable names for each variable as well, one for humans and one for compilers?

      The impression I get is that many people expect to supplement tools that damage code with tools that repair the damage, and base their workflow on that. When they see a language that isn't easily repaired by those tools they blame the language, while to me the problem is with the tools that damage the code in the first place. Use the correct tools for the job and you don't have any damage to repair.

    14. Re:Java or Python by Anonymous Coward · · Score: 0

      It is especially a pity when automatically generating code. Sure you can make the generator indent, but it makes no sense, no-one will read the tens of pages of generated code to debug it, since the generator will be tested on really simple input and be debugged already.

    15. Re:Java or Python by Darinbob · · Score: 1

      I hated the indenting for block before Python was even dreamed up, because it was used in older languages. So many obscure errors you'd get if your editor screwed things up. For example, vi insisted on converting spaces to tabs if it could, and even if you configured it to be sane you could make a mistake by editing code on a different account.

      Today though it's simpler (emacs, yay!), yet we still have not evolved enough as a society to make tabs illegal.

      I agree though, Pascal is a great language to learn on. Even Ada or Modula-II if they're trimmed down for beginners (same way they teach C++ in a beginner's clas by leaving off the complicated bits).

    16. Re:Java or Python by Darinbob · · Score: 1

      Pascal never really standardized in a good way. String handling was a royal pain in Pascal unless you used some compiler's variant, and in a beginner's class you really need string handling.

      One advantage of Pascal was that it was NOT a popular industry language. That meant you were forced to learn more than one language and forced to learn that there are differences. We have far too many CS grads who only know one language and one system.

    17. Re:Java or Python by Darinbob · · Score: 1

      It is a bit odd. Just turn the if "statement" into an "expression" like many languages do. Then you've got something like "x = if a then b else c".

    18. Re:Java or Python by ShadowRangerRIT · · Score: 2

      The ability to seamlessly use + with mixed text and numeric types in a language without explicitly declared types is usually considered a design flaw, not a positive feature. Perl uses separate operators for strings vs. numbers to avoid ambiguity, while Python and Ruby require explicit type conversions. Java defaults to string concatenation, but Java requires explicit types, so you get a compile time warning if you make a mistake like adding a String and an int and expecting an int. Even PHP, the go to standard for poor language design, which explicitly rejects separating operators for strings and numbers, made a concession for addition vs. concatenation and borrowed Perl's approach of using + for addition and . for concatenation so the operator itself selects the operation.

      The sole exception to this rule that I can think of is JavaScript, where + is type dependent, and it lacks explicitly typed variables. The fact that you're allowed to use addition with silent coercion to String if either operand is a string is explicitly called out as one of the Awful Parts in JavaScript: The Good Parts, which should tell you something. Basically, implicitly typed scripting languages should prohibit implicit type conversions when they use + for both addition and concatenation. The alternative is to behave incorrectly silently.

      As for the ternary operator, really? That's your big gripe? The fact that it reads like an English sentence? Guido hates excessively concise/cryptic punctuation as language elements, so they chose something that reads a bit more like English; if you read it aloud, e.g. "a if a is not None else b", it makes sense. You could also view it as a stealthy attack on the ternary operator, which many people despise as encouraging cryptic code. Either way, we're not talking about something truly ridiculous here; it's a reasonable design decision. This isn't PHP's left associative ternary operator or anything.

      --
      $_ = "wftedskaebjgdpjgidbsmnjgcdwatb"; tr/a-z/oh, turtleneck Phrase Jar!/; print
    19. Re:Java or Python by Anonymous Coward · · Score: 0

      I hear you!
      I can't tell you how much C I've had to plod through and fix that was written by people like you.
      Your bitching about python's enforced indentation is music to my ears. Keep it up!

    20. Re:Java or Python by Anonymous Coward · · Score: 0

      Thank god C doesn't care about whitespace and I'm free to type "gotofoo;".

    21. Re:Java or Python by Anonymous Coward · · Score: 0

      Not in Chinese there isn't. People don't need the whitespace, the whitespace is there as a convenience. Imeanifyoutypewithoutwhitespacepeoplestillunderstandwhatyou'vewwritteninmostcases. It's just somewhat less efficient.

      Personally, I don't see why they couldn't both enforce whitespace and require appropriate brackets. You'd get code that's more legible and less likely to do things that you're not expecting because a statement was or wasn't in the code block that it was supposed to be.

    22. Re:Java or Python by grcumb · · Score: 1

      The ability to seamlessly use + with mixed text and numeric types in a language without explicitly declared types is usually considered a design flaw, not a positive feature. Perl uses separate operators for strings vs. numbers to avoid ambiguity....

      Though in fairness, it should be mentioned that, as with other aspects of the language, Perl also assumes that you are using the right operator, and that you actually mean what you wrote:

      perl -e 'print "x" + 1;'
      1

      Or, even better:

      perl -e 'print "x" x 22;'
      xxxxxxxxxxxxxxxxxxxxxx

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
    23. Re:Java or Python by Nemyst · · Score: 1

      Humans however don't particularly care if there are three or four spaces before a line. Humans do not care at all whether spaces and tabs are intermingled.

    24. Re:Java or Python by danlip · · Score: 1

      I think the Perl solution is fine (not that I'm a fan of Perl syntax in general). The Java solution is fine (as you point out errors get detected at compile time). The Python solution is not: having to call "str(i)" everything I want to put an int into a string is too verbose (which makes it harder to read) and very error prone (especially when you are used to other languages, but I imagine even if Python is your only language it still is). And the fact that you don't detect the error until you hit the statement it's in (which might be rare if it is in some error handling block) is what really makes it suck. Dynamically-typed languages in general suck - try to be quick-and-dirty in upfront development time and you'll pay for it later.

      As far as ternary operator reading like an English sentence: making things read like English always goes badly in programming languages, e.g. COBOL. And I find the Python example particularly vexing when trying to understand a chunk of code, because it is inverted to the logical flow; logically you execute the test first, then decide which branch to take based on the results of the test. That's the real problem, it's not the English, it's the order.

    25. Re:Java or Python by Anonymous Coward · · Score: 0

      Yup, Java is horrendous for learning as it's horrendously verbose, has minimal support for other paradigms and has so few language features that half of the learning time is spent learning 'patterns' to make up for flaws in the language.

      Too many students come away thinking getters and setters are somehow core to programming, as it's such a huge part of any code they write. They don't realise that they exist entirely due to the lack of features in the Java language. Now, that's partly the student's fault, but it doesn't help to start there.

    26. Re:Java or Python by Anonymous Coward · · Score: 0

      You could also view it as a stealthy attack on the ternary operator, which many people despise as encouraging cryptic code.

      Jesus, seriously? What idiot can't understand the ternary operator? It's a beautiful thing, not cryptic.

      BEAUTIFUL AND ELEGANT:
        xmin = (x1 < x2)? x1 : x2

      FUGLY AND CRYPTIC:
        if (x1 < x2) xmin = x1; else xmin = x2;

      [Posting as AC from another browser so I don't lose my mods.]

    27. Re:Java or Python by amaurea · · Score: 1

      Humans care a lot whether spaces and tabs are intermingled, as long as you include other people than just the original program author in the set of "humans". Have you ever looked at a program written by somebody who mixed tabs and space for indentation, and who used a different tab size than you? It's completely unreadable! If there is one thing your editor should do for you, it is to make it very visible when tabs and spaces are mixed.

    28. Re:Java or Python by benjfowler · · Score: 1

      Too much ceremony for doing simple things. And I'm speaking as somebody who builds big Java applications for a living.

      Try explaining the meaning of "public static void main(String[] args)" to somebody who's never written any code before...

    29. Re:Java or Python by Anonymous Coward · · Score: 0

      not easier when a missed space/wrong tab changes the fucking meaning,that's just fucking idiotic.

      Why the fuck do I need to get a fucking ruler out to debug code? just because some dumb fuck thought white space was a good delimiter.

      I'm writing a program not drawing some fucking ascii art.

      it's easier to find something your can fucking see and not an invisible space , was that five spaces or fucking six do you feel lucky?

    30. Re:Java or Python by worf_mo · · Score: 1

      I hate that I can't build a string by doing "Foo" + i (where i is an integer) [...]

      Try the following:

      "Foo %s" % i

    31. Re:Java or Python by Seraphim_72 · · Score: 1

      Which is why when you read you don't have to care if it is a tab and three spaces, two short tabs or 8 spaces. Using a non-visible character for control is just a bad idea. And don't even get me started on code clarity - what I find clear to read vs what you do vs what a compiler demands - ICK! To put it into web terms, go try posting something about how the new (place your browser here) is going to impose its manufacture's CSS on every page, ignoring the user's css prefs, hell even ignoring the page authors css and see what kind of firestorm you light off, and with good reason. Code should be no different. Especially when it comes to white space as commands.

      --
      Slashdot, where armchair scientists get shouted down and armchair theologians get modded up.
    32. Re:Java or Python by david_thornley · · Score: 1

      Back when I last used it (maybe twenty years ago), the standard language was pretty darn useless. Any practical implementation needed a good many extensions. The language was designed to be easily parsed using recursive descent in one pass, and that had some unfortunate implications for program organization. The "for" loop was very restrictive. There were no data initializers. The language was verbose, and had a B&D philosophy.

      Basically, Wirth simplified Algol on a CDC 6600 using a very easy-to-write parsing technique, and the idiosyncrasies carried through into the standard. (You could not reliably write "set of char" in a conforming implementation, since originally a set fit into one of the 6600's 60-bit words, and the 6600 had 64 possible characters.)

      It's telling that it was pretty thoroughly eclipsed by C, which has more idiosyncrasies per line of standard than any other language I've ever seen. It may have been improved since then, and there have been good implementations, but its problems hindered it at the time it could have dominated.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    33. Re:Java or Python by Anonymous Coward · · Score: 0

      You'd better get used to semantic indentation in markup (haml, yaml,...) and scripting (coffee). It unclutters code and removes all those redundant lines that contain nothing but a "}", or worse, "}}}}})})}". Bracket matching is easy for a parser, for humans it's the horror. Horizontal alignment is obvious in comparison.

    34. Re:Java or Python by DrGamez · · Score: 1

      Try explaining the meaning of "public static void main(String[] args)" to somebody who's never written any code before...

      I feel that not enough people appreciate this fact right here. Sure you can complain about Python and it's whitespace or weak-typing, but when you are trying to teach someone who's brand new to programming, getting a "Hello " is at least an hour of explanation of classes and methods and Java Stuff (tm).

  17. Re:another language shoved down your throat by ShanghaiBill · · Score: 5, Insightful

    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.

  18. Re:another language shoved down your throat by BForrester · · Score: 4, Insightful

    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.

  19. Re:another language shoved down your throat by kthreadd · · Score: 4, Informative

    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.

  20. Bah humbug. by Nutria · · Score: 1

    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
    1. Re:Bah humbug. by St.Creed · · Score: 0

      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.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    2. Re:Bah humbug. by Rockoon · · Score: 2

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

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

      --
      "His name was James Damore."
    3. Re:Bah humbug. by St.Creed · · Score: 1

      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.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
    4. Re:Bah humbug. by Narcocide · · Score: 1

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

    5. Re:Bah humbug. by dargaud · · Score: 2

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

      --
      Non-Linux Penguins ?
    6. Re:Bah humbug. by Nutria · · Score: 1

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

      --
      "I don't know, therefore Aliens" Wafflebox1
    7. Re:Bah humbug. by Rockoon · · Score: 1

      ..and as a matter of fact, C has GOTO.

      I'm not sure than any language exists that can truly* replace GOTO through the use of other flow control sugars.

      * equivalently - stacking multiple flow control branches to simulate the singular GOTO is not the same.

      --
      "His name was James Damore."
    8. Re:Bah humbug. by Darinbob · · Score: 1

      Why is why Knuth's books had programs using MIX, and assembler like language. A plus that you actually learn what sorts of things are simple versus complex (ie, you learn that function calls are definitely not free). A minus though in that for larger algorithms you lose the big picture because of all the details, so pseudocode is easier to deal with.

    9. Re:Bah humbug. by Darinbob · · Score: 1

      I was a proctor/TA for intro to programming courses using Pascal. Those students who arrived claiming that they already knew how to program and were good at it, having already known BASIC, turned out to have their own sets of difficulties adapting to a real language. For example they thought declaring variables was a waste of their time and structure programming was too limited. On the other hand they appreciated that they could have longer variable names and some of them used variable names as long as 4 or 5 characters!

    10. Re:Bah humbug. by ultranova · · Score: 1

      I'm not sure than any language exists that can truly* replace GOTO through the use of other flow control sugars.

      Haskell. Pure functions combined with monads are pretty awesome concepts once you really grasp them.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    11. Re:Bah humbug. by Sperbels · · Score: 1

      most C64 owners dropped it ASAP and went straight for assembly

      Only because you couldn't compile it. It was interpreted and slow and hogged up way all of the memory.

    12. Re:Bah humbug. by i.r.id10t · · Score: 1

      My big joy when I went from BASIC on a TRS-80 to turbo pascal on a 286 was that I no longer had line numbers. Which means that if I found an issue, I could fix it right there no matter how many lines of code it took, whereas in BASIC w/ the line numbers, if you spaced 'em by 5 or 10, well, any fix had to fit in there. Need a second fix? Delete the code, use a GOSUB to go waaaay down the line numbers, have your longer-than-spaced-for fix, then return back to whence you came.

      --
      Don't blame me, I voted for Kodos
  21. Congratulations Vinod Khosla by Baldrson · · Score: 1, Troll

    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.

    1. Re:Congratulations Vinod Khosla by Anonymous Coward · · Score: 0

      In honor of Baldrson's contributions to rocketry, text compression, and AI, not to mention the white race, I would like to propose NotC as a new standard educational language for all whites. Features:

      1. Whitespace sensitive. In fact, extremely sensitive. The aggressiveness of memory allocation (hereafter, "lebensraum") will be roughly proportional to the proportion of whitespace in the source code.
      2. Native string support, except strings will be called jews to recall the deceitful so-called 'verbal intelligence' of the Ashkenazim. The jew terminator will be a constant named ZYKLON_B.
      3. 14 native types, and 88 reserved keywords.
      4. Many more!

    2. Re:Congratulations Vinod Khosla by Baldrson · · Score: 1

      Meh. Any "Nazi Nazi Nazi" troll that doesn't end with "Jews did 9/11. lol" doesn't even qualify for The Troll Special Olympics.

  22. Unfortunately by MAXOMENOS · · Score: 2

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

  23. Re:another language shoved down your throat by Anonymous Coward · · Score: 1

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

  24. Pascal by Dan+East · · Score: 3, Interesting

    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.
    1. Re:Pascal by shutdown+-p+now · · Score: 3, Insightful

      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.

    2. Re:Pascal by glaurungn · · Score: 1

      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.

    3. Re:Pascal by danlip · · Score: 1

      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.

    4. Re:Pascal by Darinbob · · Score: 1

      That was the key problem I felt. Even if you wanted to use Pascal beyond the beginner's course, it was difficult to use. Every different type of computer you used had a different variant of Pascal. I maintain some "real" applications in it on VMS, but that was definitely not a "standard" Pascal.

      I think they idea was that Pascal was supposed to be only a beginning language, and that professionals would use Modula-II or Ada. I think Borland Pascal only became popular because the PC at the time was so extremely limited in memory and speed, so that a compiler for a simpler language made sense. Ada took some time to take off because it was bigger but also extremely standardized with lots of documents and committees. Modula-II never made any headroom in the US though it was popular in Europe for awhile.

      Overall, C just dominated Pascal because it came installed by default on all the Unix systems, not as elegant early on as other languages but good enough to do all the work you generally needed to do, from device drivers to implementing major applications.

    5. Re:Pascal by shutdown+-p+now · · Score: 1

      I think Borland Pascal only became popular because the PC at the time was so extremely limited in memory and speed, so that a compiler for a simpler language made sense.

      Borland Pascal wasn't really meaningfully simpler than Modula-2, though. It had modules (units) with separate compilation, and all kinds of low-level primitive, down to inline assembly. At some point (IIRC it was version 5.5? either way, still late 80s) it even became a full-fledged object-oriented language. In terms of what you could do with it, it was definitely comparable with C and C++ compilers available for DOS at the time, and separate compilation helped compile speeds - the short compile time of Pascal, and later Delphi, was truly legendary. They also had what was by far the best DOS IDE, with syntax highlighting, integrated debugger and help system etc. Granted, this was also true for Borland C++, but that was more expensive.

      Yeah, on Unix, it never really got off the ground because C was the system language there. On DOS, it was a whole different world.

    6. Re:Pascal by DarthVain · · Score: 1

      I had the last year of intro programming using Pascal at University in 1995. Which was messed up, as they switched over to C. Soooo my second year, not only did I have to do the course material, but I had to figure out an entirely new language. Thanks for that. Though in retrospect, something to get used to in life really, I don't do much real coding at my job (other then SQL), but have dabbled with both Java, and Python more recently. That said I also took a courses on COBOL and Assembly which I haven't exactly used since either... Then again I can also safely say I have never used Calculus again either ;), so it isn't like this sort of thing is limited to programming languages. I know it sounds terrible, but I have probably used more from my old VB days, doing .NET stuff and little scripts for VBA in access and excel (data processing/collection mostly) etc... Most of my recent stuff has been PL/SQL which is a bit of a different cup of tea.

  25. At least it wasn't Ruby! by Anonymous Coward · · Score: 2, Interesting

    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.

    1. Re:At least it wasn't Ruby! by Anonymous Coward · · Score: 0

      If you use Java shouldn't you take your own advice...

    2. Re:At least it wasn't Ruby! by Darinbob · · Score: 1

      I like Ruby myself, however the real Ruby, not the Ruby on Rails thing. As a language Ruby has a lot of very nice stuff, a mix of Smalltalk and Perl. Which as a combo seems weird I guess, Smalltalk is highly elegant and Perl is warty and pragmatic. But as a scripting language Perl is great for the quick and dirty stuff that often needs to be done, so combining it with a pure OO paradagm is good. Actually the Perl-ish stuff is mostly the regexps and you can't really make those look pretty without losing a lot of value.

      I don't like that Ruby blocks aren't true blocks in the Smalltalk sense, they have to appear last on the line, and that you have to use a Closure class to make them first class. But other than that Ruby looks like a good text-based-Smalltalk language.

      Python to me has too many advocates and priests, with the only-one-way-to-do-it mentality. Which is actually one of the advantages that a lot of Python fans want. So it's more about the programmer's tastes. To me, sometimes Python feels a bit less than a scripting language since you can't do a lot of the quick-and-dirty stuff that you can in shell, Ruby, Perl, Awk, etc.

    3. Re:At least it wasn't Ruby! by iggymanz · · Score: 1

      you claim the practice of choosing a language whether or not "hipster asshats" promote it...but my god man, who promotes Java but its owner Larry Ellison?

    4. Re:At least it wasn't Ruby! by rubycodez · · Score: 1

      those are Rails weenors. Rails sucks, and attracts hipster wannabees. Ruby however is a good language.

  26. Great, an entire generation that won't... by Anonymous Coward · · Score: 3, Insightful

    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.

    1. Re:Great, an entire generation that won't... by retchdog · · Score: 1

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

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

      And you may as well say that C/Pascal/whatever spoils you into thinking that braces are magical. It's just syntax. If your employees really can't figure out fucking braces then there's either something seriously wrong with your company, or you should stop hiring from the Special Needs school. It's not Python's fault.

      (The colleges aren't supposed to be there just to provide training for your company anyway, but that's another story.)

      --
      "They were pure niggers." – Noam Chomsky
    2. Re:Great, an entire generation that won't... by supton · · Score: 4, Interesting

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

    3. Re:Great, an entire generation that won't... by Anonymous Coward · · Score: 0

      Never mind blocks, it's an entire generation that won't understand types.

    4. Re:Great, an entire generation that won't... by Anonymous Coward · · Score: 0

      No, but they certainly will understand stringly typed!

    5. Re:Great, an entire generation that won't... by Darinbob · · Score: 1

      But if they forget the brackets, don't they get compile errors? Oh wait, you said JavaScript...

    6. Re:Great, an entire generation that won't... by Anonymous Coward · · Score: 0

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

      If colleges graduated CS people that can't keep jobs, said colleges would lose a lot of students. Stop listening to whatever conspiracy bullshit you listen to.

    7. Re:Great, an entire generation that won't... by AnontheDestroyer · · Score: 1

      I'm calling BS on you firing anyone for this. What programmer these days only knows Python, and thus hasn't uses a language that requires braces?

      You're overstating the problem anyway. Blocks are among the easiest concepts to grasp. How do you think some many people were able to pick up Python quickly after using their braced languages? Anyone who can't understand braces will have some other easily noticeable problem instead.

    8. Re:Great, an entire generation that won't... by euroq · · Score: 1

      No kidding - he's probably lying, but if he hired three people who couldn't use {}, or even works for a company who hired THREE of them, then he's the idiot.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
    9. Re:Great, an entire generation that won't... by Anonymous Coward · · Score: 0

      I fired them because they kept committing Java code that wouldn't compile. I can understand doing something like:

      if(active == true)
          pay = pay * 1.1;
          yearsOnJob++;
      else
          yearsInactive++;

      when you're a space-cadet. That won't compile because there are two statements between the if and the else. The problem is that every one of the under 25 year-old guys working for me refuse to follow process which is to compile and run unit tests before committing. If they would just compile then they would see these type of common errors by Pyton programmers. That is why I had to let them go. Breaking the build on every other commit will get you fired from most companies. I don't understand your BS comment.

    10. Re:Great, an entire generation that won't... by Anonymous Coward · · Score: 0

      I read that as "I've had to fire three people because I couldn't explain how to use {} in JavaScript, even though it's not that hard"

    11. Re:Great, an entire generation that won't... by DrGamez · · Score: 1

      How did you hire people this bad? Your interview process is wack, yo.

  27. Doesn't fix the problem by medv4380 · · Score: 1

    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.

  28. Re:another language shoved down your throat by MightyMartian · · Score: 2, Informative

    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.
  29. Good idea by Animats · · Score: 5, Insightful

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

    1. Re:Good idea by rdnetto · · Score: 1

      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.

      I would argue that the main issue is Python's lack of static typing. Pretty much every non-interpreted language has static typing, and it's arguably more fundamental/basic than OOP.

      --
      Most human behaviour can be explained in terms of identity.
  30. MATLAB! WTF!?!?? by random+coward · · Score: 1

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

    That's disturbing.

    1. Re:MATLAB! WTF!?!?? by random+coward · · Score: 2

      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.

    2. Re:MATLAB! WTF!?!?? by Darinbob · · Score: 1

      At a previous company, we used matlab as part of the build process for a machine, with a couple hours of intense calculations. For a lot of EE people, matlab is their primary language.

  31. MATLAB! WTF!?!?? by Anonymous Coward · · Score: 0

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

  32. Re:another language shoved down your throat by Anonymous Coward · · Score: 5, Insightful

    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.

  33. Comment removed by account_deleted · · Score: 3, Insightful

    Comment removed based on user account deletion

  34. Who cares what they use as long as... by Assmasher · · Score: 1

    ...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...
    1. Re:Who cares what they use as long as... by Darinbob · · Score: 1

      When I was an undergrad I took a Comparative Study of Programming Languages course. It was one of the best courses I took. Universities really need to make something like that a required CS class instead of a sparsely populated elective.

    2. Re:Who cares what they use as long as... by Assmasher · · Score: 1

      We had courses on declarative languages, another on imperative languages, and special topics courses on specific languages and topics that were hot at the time (Java, OpenGL.) Some classes taught using Lisp, the majority using C, one was all assembler, intro courses were Pascal. Basically we learned that the language itself isn't important, what that language offers you (the benefits and limitations) is...

      Things have gotten a little better in the past few years, but for a while there in the early aughts you couldn't find a recent graduate who knew anything other than Java. The were helpless without libraries - LOL.

      --
      Loading...
    3. Re:Who cares what they use as long as... by Darinbob · · Score: 1

      The advantage though is that this helps keep older workers employed when they can't find younger workers with the necessary skills or experience to use the skills.

    4. Re:Who cares what they use as long as... by Assmasher · · Score: 1

      Lol, true, but in the spirit of altruism - I hope today's Comp Sci grads are being forced to actual write software not just implement problem sets. There's so much they could learn from the full life-cycle at University.

      --
      Loading...
    5. Re:Who cares what they use as long as... by Anonymous Coward · · Score: 0

      okay fine,

      but lose that godawful stack based mini-language also known as printf( )
      no wait, C string processing in general is terrible.
      wait, in straight C I can't declare an array size with a constant variable (must be literal)
      oh wait, you need to understand pointers to do basically anything useful, with bizarre almost backwards declaration and usage syntax.
      wait, are expressions evaluated left to right?
      wait, I called a function that is in the same file, but I wrote it below where I'm calling it from. it doesn't see it, oops.

      Good god man you're all about torture, no actual learning would take place, just everyone copying the one person's program that worked... poorly.

  35. Python - The Pascal of the 21st Century by Shalian · · Score: 1

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

    1. Re:Python - The Pascal of the 21st Century by Darinbob · · Score: 2

      Pascal, named after one of the great thinkers of his era.
      Python, named after people with silly walks.

    2. Re:Python - The Pascal of the 21st Century by gzuckier · · Score: 1
      --
      Star Trek transporters are just 3d printers.
  36. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  37. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

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

  38. What happened to Scheme? by damn_registrars · · Score: 3, Interesting

    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.
    1. Re:What happened to Scheme? by neminem · · Score: 2

      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.

    2. Re:What happened to Scheme? by jbolden · · Score: 1

      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.

    3. Re:What happened to Scheme? by quietwalker · · Score: 2

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

      Scheme programs were neither easy nor obvious to read or comprehend. It's simplified syntax results in the need for overly complex machinations to produce anything but the most trivial of operations - writing an algorithm that's gone 18 or 20 indentation layers deep is fairly standard with nested scoping blocks to manipulate multiple variables. Ever try to figure out where you're missing a closing paren in 5 pages of Scheme code?

      Then we get into common data structures like actual arrays and hashmaps, or even the ability to realistically define our own types. Numbers are screwy too.

      Slap all this together with a complete lack of object oriented programing and the final and perhaps most severe obstacle; as a functional language, new students must first learn to think along a different paradigm, one opposed to how they had been thinking their whole life, before they can begin to comprehend the basic concepts they're supposed to be learning, and you've got possibly one of the worst languages if your intent is to teach.

      Now, I'm not a big fan of Python, but let's face it, it's so many miles above Scheme when it comes to ease of learning and demonstrating CS concepts that it's barely worth noting Scheme even exists.

    4. Re:What happened to Scheme? by jbolden · · Score: 1

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

      As for going 18 levels deep that probably should be broken out about every 5 levels into smaller simpler functions.

      As for arrays:

          (array dimensions element0 ...) -> array
          (array '(2 3) 'a 'b 'c 'd 'e 'f) -> {Array 2 3}

      That doesn't seem that hard.

      as a functional language, new students must first learn to think along a different paradigm, one opposed to how they had been thinking their whole life, before they can begin to comprehend the basic concepts they're supposed to be learning

      Most students can handle Excel, a functional language. I think breaking them of their bad habits is a good thing for an intro course. It puts most of the students on the same level regardless of background. In a week they won't get there, in a year certainly.

      Mostly if I were teaching an intro course today I'd probably go with Python. But I don't think it is nearly as clear as you do. Haskell for example (which keeps most of the essence of LISP with giving them more modern concepts) would be a consideration.

    5. Re:What happened to Scheme? by Anonymous Coward · · Score: 0

      They teach scheme exclusively at a university near me. Graduates can't get a job :P It's a pity, because most people probably know other languages by the time they graduate, but the companies associate that university with no programming knowledge and doesn't invite them for an interview.

    6. Re:What happened to Scheme? by Animats · · Score: 1

      Abelson and Sussman is a delightful book for programming theorists. Scheme is a big improvement over Common LISP. Learning Scheme from Abelson and Sussman is straightforward for people who can get into MIT.

      This is not most of the programming population. As someone else pointed out, programming today is mostly the creation of glue code to tie together a number of (usually buggy) components. Neither the webcrap crowd nor the appcrap crowd needs Scheme. In fact, if you have that strong a theoretical background, you tend to overdesign simple programs.

    7. Re:What happened to Scheme? by Darinbob · · Score: 1

      Scheme was not designed to be a teaching language. It was designed to be a stripped down Lisp.

    8. Re:What happened to Scheme? by Darinbob · · Score: 2

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

    9. Re:What happened to Scheme? by Darinbob · · Score: 1

      And yet I still use concepts like that in day to day work. Embedded systems, we don't have a gigabyte worth of Java libraries to drag in, we've got limited RAM and limited CPU speed.

      And even if you're in the world that uses a lot of libraries, *someone* has to write those libraries! Similarly, someone has to to write the VM, someone has to write the compiler, someone has to write the operating system, someone has to write ROMs, someone has to write the networking stack, and so forth. Hopefully all those people understand many of the concepts found in SICP.

      Just because most of the people graduating with a degree in physics never actually use quantum physics in their jobs does not mean it's pointless to teach quantum physics to students.

    10. Re:What happened to Scheme? by Darinbob · · Score: 2

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

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

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

    11. Re:What happened to Scheme? by ultranova · · Score: 1

      Just because most of the people graduating with a degree in physics never actually use quantum physics in their jobs does not mean it's pointless to teach quantum physics to students.

      Actually, it does. That's exactly what it means. If your "degree in X" doesn't mean you'll be using Y in your work, it's pointless to include Y in said degree, as long as said degree is mainly a qualification for work.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    12. Re:What happened to Scheme? by rubycodez · · Score: 1

      nothing, its runtime emacs is widely used

    13. Re:What happened to Scheme? by Anonymous Coward · · Score: 0

      The "university" I went to taught scheme to the EEs and java to the CS kids. I still regret going the CS route and dropping out in frustration. That same CS dept. thought nothing of teaching junk topics already dropped by the dept. it was actually for, or teaching stuff in second year you really should've already picked up in the second-to-last year back in highschool. This a supposedly world-class university of technology in Europe. Well, not quite that department. In hindsight....

    14. Re:What happened to Scheme? by Darinbob · · Score: 1

      You're equating a degree to a certificate or qualification to work, when they are not the same thing at all. Now that may be true for a simplified trade school, but the purpose of a degree at an advanced institution is to provide a broader education.

      For example, that physicist who learned quantum physics may not use it for the first 20 years after graduation, but then have a need for it after that in a subsequent job. For CS people, you can guarantee that they'll need to change their job skills several times over their career, so having a broad education is very important instead of teaching them only the minimum necessary for the first job. Similarly learning quantum physics teaches a lot of things about physics, and thus is very useful for a professional physicist even if not actually using quantum physics on the job. A computer scientist should also learn theory even if the student naively thinks it will never come up in the job.

      Schools teach many things you'll never directly use on the job, but learning those things teach skills that will be used in the job AND IN LIFE. Literature, art, music, advanced mathematics, science, and so forth. Do we want politicians who never learned science because they wanted a career in politics and thus science was a waste of their time? Do we want journalists who don't understand science or technology or literature or the arts or sociology or anything at all, except how to write an article and make it fit into the alloted space? Do you want a doctor who never learned cellular biology because it's too small and too theoretical? Do you want a medical device implanted in you that was designed by programmers and engineers who though theory was a waste of their time?

      The most important thing you learn is how to learn and how to think. If you can't think abstractly about computer science then you don't deserve to be a computer scientist (or even a programmer). If you can't think abstractly about physics then you don't deserve to be a physicist (but maybe you can be a technician). Even the "useless" classes served their purpose by forcing the students to think.

      Please, society is already far too stupid to start advocating about making it even stupider. We have far too many stupid and incompetent programmers to start encouraging them to take even more shortcuts.

      I took just about every elective when I got my CS degree, except for two. And I every single one of those classes has come in useful, including theory. I didn't learn databases and I wish I had, as that would come in useful too. There is absolutely nothing in my major or as a graduate student that I felt was a waste of time.

    15. Re:What happened to Scheme? by Nemyst · · Score: 1

      Nobody said never to show Scheme, but there's a difference between doing a "Computer Languages" course with Scheme or even a "Functional Languages" course and putting Scheme as the sole language for the introductory course. The latter is completely insane, unless you like a 90+% drop-out ratio.

    16. Re:What happened to Scheme? by Darinbob · · Score: 1

      As I recall it, MIT _wanted_ a drop out class there as the intro class. After all, most of the other fields get drop out classes as their intros. Calculus, physics, chemistry, all the foreign languages, etc. Why should CS be the easy curriculum? The concepts themselves though were not that hard really, it's not harder than the other first year classes at most major universities. If a student can make it through integration and derivative equations, then they can handle Scheme. Granted it's not the traditional method where CS people are spoon fed in the intro so that it gets the campus rep as the easy A.

    17. Re:What happened to Scheme? by Anonymous Coward · · Score: 0

      If a CS class at MIT is your first experience with programming, you've already lost.

    18. Re:What happened to Scheme? by jbolden · · Score: 1

      I absolutely agree with you. I have some doubt though that SICP needs to be a first course.

      Embedded, ROMs, low level OS components... is obviously the old paradigm. Most of an OS or VM though I'd say is going to be high level library manipulation. As for writing a library, I think it depends on the library. Most libraries today are highly dependent on other libraries.

    19. Re:What happened to Scheme? by Anonymous Coward · · Score: 0

      There's specific, concrete reasons why a number of people have thought functional languages would be best for beginning programmers. Might not be right but clearly possible to imagine. And not crazy.

      As a long time college intro programming instructor, I can say a number of smart, mathematically inclined students may be good with algebra, but have problems moving into programming. It's that Java, C, C++, Pascal, etc, are state-based imperative languages - statements change values of variables, files, etc, in memory. But memory is invisible in the program text - you have to learn how to read a program to understand what happening there. Some students catch on quickly, others don't. It's the learning the difference between the math equation X=3 (which is timeless and the same as 3=X) and the assignment X=3 (which is fixed in time and causes a state change, not the same as 3=X). If you start students out computing with a functional language closer to what they have learned for grades 6-12, the thinking goes that you've minimize the shock of state based programming. (And, BTW, for those students who have hacked from grade 6, still good to learn functional programming. In fact, some those students have brittle thinking in their own way, unable to flip back and forth between semantic models.)

      The Rice University Programming Language Team designed DrScheme and a full intro curriculum around what they considered a gentle intro to programming. It started with purely functional Scheme with substitution semantics, so it paralleled the semantics of algebraic equations that students would already know from math classes. No hidden memory, no state-based side effects. I haven't used their curriculum but I have used their ideas to transition students from algebra to Java.

      Even John Backus, inventor of Fortran, thought that learning state based imperative languages made it harder for programmers to become comfortable with functional, parallel, distributed programming languages, which he considered important for moving beyond the Von Neumann model. And we are still bad as a field at parallel programming.

    20. Re:What happened to Scheme? by Anonymous Coward · · Score: 0

      Well, Scheme was an outgrowth of LISP, which was an outgrowth of the AI side of things. I guess that makes it the white mouse of computing languages.

    21. Re:What happened to Scheme? by gzuckier · · Score: 1

      "When I was your age, we couldn't just download Python. We had to construct our own programming language using a meta circular evaluator. And we were grateful!"

      --
      Star Trek transporters are just 3d printers.
  39. I was introduced to Python first by goltzc · · Score: 4, Interesting

    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.
  40. Start with Assembly by Anonymous Coward · · Score: 0

    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.

  41. White s p a c e is magic! by ahoffer0 · · Score: 1

    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.

    1. Re:White s p a c e is magic! by Darinbob · · Score: 1

      To me, it's mostly irrelevant. Most competent people can pick up the Python style quickly (although it was not the first language to do this), and people can move to brackets style or begin/end style quickly.

      Seriously, if the white-space indentation is the worst thing someone can say about a language, then they're not digging deep enough.

      Right now I'm going to do some python for one project, and I was originally plannning on ruby. The reason for python though is that it seems simpler for the other people in the team to pick up and use as it's somewhat a standard procedural language with optional OO, whereas with Ruby there's the Smalltalk style and lexical scoping. So for some people who write Lua as if it were C, it would be cleaner if they wrote Python-like-it-was-C as opposed to Ruby-like-it-was-C.

  42. Re:another language shoved down your throat by ggpauly · · Score: 3, Informative

    You are far from alone in misunderstanding Javascript.

    --
    Verbum caro factum est
  43. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

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

  44. hmm by buddyglass · · Score: 1

    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.

  45. Re: The recent openSSL bug is a good example. by Anonymous Coward · · Score: 0

    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.

  46. Pascal? by Anonymous Coward · · Score: 0

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

  47. Finally... by jalet · · Score: 1

    ... some common sense !

    --
    Votez ecolo : Chiez dans l'urne !
  48. Re:another language shoved down your throat by Opportunist · · Score: 1

    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.
  49. Geez, what a load of whining. by styrotech · · Score: 1

    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.

  50. Python is good but insufficient by MetalOne · · Score: 2

    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.

  51. Re:another language shoved down your throat by fnj · · Score: 0

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

    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.

  52. Re:another language shoved down your throat by fnj · · Score: 1, Insightful

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

    Clown. And that is all the response you deserve.

  53. Re:another language shoved down your throat by toejam13 · · Score: 2

    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.

  54. Python + QT... by Parker+Lewis · · Score: 1

    I'm seen a lot of new and good programs written on Python + Qt, as the way to achieve multplatforming.

  55. GOOD by Anonymous Coward · · Score: 0

    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.

  56. Ten years too late... by __aaclcg7560 · · Score: 1

    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.

  57. Re:another language shoved down your throat by Bill,+Shooter+of+Bul · · Score: 1

    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.
  58. NOOOOOOOOOO! by Anonymous Coward · · Score: 0

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

    1. Re:NOOOOOOOOOO! by gnupun · · Score: 0

      Don't poison people's minds with indent == scope!

      Why do you consider it poisoning if Python forces you to indent the correct way? Do you indent in a non-standard manner while coding in C? Are people complaining about white space in Python indenting improperly in other languages?

  59. Re:another language shoved down your throat by OhSoLaMeow · · Score: 1

    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.
  60. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    Where is this school, and do I have to send my kids to Shanghai to get them enrolled?

  61. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  62. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  63. Re:another language shoved down your throat by Darinbob · · Score: 0, Troll

    Right... so a Microsoft approved curriculum. Good for a trade school, awful for a person who wants to actually learn something.

  64. Re:another language shoved down your throat by Darinbob · · Score: 1

    Esperanto makes sense though. It's highly logical, consistent, and brings disparate communities together. The exact opposite of JavaScript.

  65. Re:another language shoved down your throat by tomhath · · Score: 2, Insightful

    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.

  66. Re:another language shoved down your throat by ultranova · · Score: 1

    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.

    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.

  67. Re:another language shoved down your throat by dpidcoe · · Score: 1

    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.

  68. Re:another language shoved down your throat by Darinbob · · Score: 1

    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.

  69. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

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

  70. Re:another language shoved down your throat by Anonymous Coward · · Score: 4, Insightful

    Yeah, because the concepts of C# cannot be aplied to any other language like Java or Python.

  71. Re:another language shoved down your throat by DoofusOfDeath · · Score: 1

    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.

  72. Re:another language shoved down your throat by raddan · · Score: 2

    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.

  73. Re:another language shoved down your throat by Darinbob · · Score: 1

    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.

  74. Fortran (Re:Java or Python) by Esben · · Score: 1

    Fortran77 or Fortran 90/95? Fortran 77 is a _pain_. Fortran 90 or later is almost modern language with modules and recursion.

  75. Re:another language shoved down your throat by Ateocinico · · Score: 4, Insightful

    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.

  76. Re:another language shoved down your throat by MightyMartian · · Score: 4, Insightful

    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.
  77. Re:another language shoved down your throat by Anonymous Coward · · Score: 1, Interesting

    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.

  78. Swell by Anonymous Coward · · Score: 0

    Oh boy, so now we can learn about proper closures and non-crippled lambdas/anonymous functions...oh, wait...

  79. Re:another language shoved down your throat by Xtifr · · Score: 4, Insightful

    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.

  80. Re:another language shoved down your throat by SQLGuru · · Score: 0

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

  81. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  82. Re:another language shoved down your throat by funky_vibes · · Score: 1

    Yeah let's switch from one annoyingly shitty language to another.

    Seriously, these are the worst languages ever invented, with absolutely zero redeeming properties.

  83. Re:another language shoved down your throat by funky_vibes · · Score: 0

    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.

  84. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    Truth. Also, if my experience steers me correctly, the overwhelming majority of computer "scientists" will make their mortgage payments as "engineers" (i.e. programming).

  85. That probably won't change... by Junta · · Score: 1

    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.
    1. Re:That probably won't change... by wiredlogic · · Score: 1

      but even python 2.3 to python 2.6 can create worlds of headaches.

      That's because the 2.x series went through a significant amount of churn. Part of that is the steady flux in the standard libraries to fix bad design decisions and the rest is improvements to the core language including backports of 3.x features. Those early days are over and 3.x is intentionally designed to be more rational and consistent.

      --
      I am becoming gerund, destroyer of verbs.
    2. Re:That probably won't change... by Junta · · Score: 1

      Those early days are over and 3.x is intentionally designed to be more rational and consistent.

      The issue being that is *always* the case. In the early python 2 days, they thought the 'early' days were over. I haven't dealt with python 3 with sufficient depth to be keenly aware of any real gotchas, but the fact they decided to add back in the explicit unicode syntax is a sign that they have at least continued to indulge in flux to fix bad design decisions. In that specific case, I don't see a downside for the increased ability to have python2/3 agnostic code so I won't declare any example of breaking 3.x series code with that. It seems clear to me that the python language can't quite exercise enough restraint in their enthusiasm for their vision of improved syntax and features to walk away confident that code won't break in a couple of 3.x generations.

      It's almost like a curse, the more popular and energetic a language implementation is, the more likely it is to experience some incompatible evolution.

      --
      XML is like violence. If it doesn't solve the problem, use more.
  86. Seems a terrible practice.. by Junta · · Score: 1

    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.
  87. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  88. Re:another language shoved down your throat by Jorl17 · · Score: 1

    >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?
  89. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    Also, python's indentation makes copy/paste more of a hassle.

  90. Re:another language shoved down your throat by Jorl17 · · Score: 1

    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?
  91. Re: another language shoved down your throat by Anonymous Coward · · Score: 1

    So what the fuck do YOU want? Pascal? Haskell? Scheme?

  92. Re:another language shoved down your throat by ultranova · · Score: 1

    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.

    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?

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

    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.

  93. Re:another language shoved down your throat by Sperbels · · Score: 1

    What's so difficult about data types?

  94. Python is alright by Anonymous Coward · · Score: 0

    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.

    1. Re:Python is alright by DrGamez · · Score: 1

      :set paste

  95. Transitioning to "real" programs by Stuntmonkey · · Score: 2

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

    1. Re:Transitioning to "real" programs by Anonymous Coward · · Score: 0

      http://kivy.org/

      Cross-platform UI thing that targets Linux, OS X, Windows, Android, and iOS.

      With Python.

    2. Re:Transitioning to "real" programs by Anonymous Coward · · Score: 0

      What? You lop PyQt (Python bindings for Qt, GPL2/3 only) or PySide (Python bindings for Qt by Nokia, LGPL2.1) onto the side of Python and you've got a ridiculously powerful GUI toolkit with all the massive libraries of Python and all the massive libraries of Qt all at once, with a very nice syntax, cross platform. (PySide style is to let you use Python strings and lists in places where Qt expects QString and QStringList and std::vector T etc.) You can use QGLWidget for highly graphical applications, or if you don't need the GUI, use pygame.

      It really couldn't be any more powerful or any easier to write a user-level app in Python.

    3. Re:Transitioning to "real" programs by aprdm · · Score: 1

      You can do android programming with Python and you also can do minecraft with Python. Actually, you can do anything java does with Python. Plus Python is widely used in scientfic/engenieering enviroments. Hack, It's used even to develop hardware http://myhdl.org/

  96. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

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

  97. Python deserves this by Anonymous Coward · · Score: 0

    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.

    1. Re:Python deserves this by mtthwbrnd · · Score: 1

      See my comment above (http://developers.slashdot.org/comments.pl?sid=5380749&cid=47412325), but in a nutshell when you are learning how to program C is the best starting point and you definitely want to get exposed to memory allocation pointers and machine/hardware specific details.

  98. another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  99. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

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

  100. Doesn't fix the problem by spotvt01 · · Score: 1

    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.

  101. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  102. Re:another language shoved down your throat by gargleblast · · Score: 1

    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.
    (2) .NET's fate is tied to Windows which is has ceded nearly all its market share to Android.

  103. Re:another language shoved down your throat by njahnke · · Score: 1

    I do all my cross-platform development with Qt C++ in Qt Creator.

  104. The first language taught should be C. by mtthwbrnd · · Score: 0

    Not C++ or C#, just plain old C.

    Please justify this statement if you agree with me.

    1. Re:The first language taught should be C. by mtthwbrnd · · Score: 1

      This is why it should be C. If you want to teach how a program works inside the computer then you don't want to abstract away from the hardware too much. You do want the kids to understand that they are asking for a lump of RAM to store data in. You do want them to understand what a memory pointer is. You really do.

      It does not mean that C is the best language to actually write your programs in. But for learning how to program and what is happening when you program, C is ideal. Python is completely not ideal. The kids will have no real understanding of what is going on. Nada. Ziltch.

      I sometimes think that the days of the C16, C64, ZX Spectrum etc... even Amiga, they were to glory days for youngsters interested in programming. You could really feel like you were programming the hardware.

  105. Re:another language shoved down your throat by Jorl17 · · Score: 1

    >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?
  106. Re:another language shoved down your throat by MikeBabcock · · Score: 1

    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)
  107. Re:another language shoved down your throat by MikeBabcock · · Score: 1

    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)
  108. Re:another language shoved down your throat by mtthwbrnd · · Score: 1, Insightful

    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.

  109. Re:Psrfect language by mtthwbrnd · · Score: 1

    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!

  110. Re:another language shoved down your throat by radarskiy · · Score: 1

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

  111. Re:another language shoved down your throat by radarskiy · · Score: 1

    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?

  112. Re:Psrfect language by mtthwbrnd · · Score: 1

    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?

  113. My biases, let me show you them by radarskiy · · Score: 2

    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.

    1. Re:My biases, let me show you them by smithmc · · Score: 1

      My first language in college was Pascal. It's not a bad choice IMO. In part, perhaps, because it is a (pretty much) *dead* language - sort of like Latin for programming languages. Which means you *can't* get stuck on it, you *have to* move on to other languages. One disadvantage is that it may not be rich enough to use to teach concepts found in more modern languages, like objects/classes (although there are OO extensions for Pascal), maps/dictionaries, etc.

      --
      Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  114. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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?

  115. Theory says it is possible by Sits · · Score: 1

    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?

    1. Re:Theory says it is possible by Rockoon · · Score: 1

      Learn to read, chief.

      Specifically, * equivalently - stacking multiple flow control branches to simulate the singular GOTO is not the same.

      --
      "His name was James Damore."
  116. Re:another language shoved down your throat by gbjbaanb · · Score: 2

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

  117. Re:another language shoved down your throat by kamapuaa · · Score: 1

    DeVry college offers degrees?

    --
    Slashdot: providing anti-social weirdos a soapbox, since 1997.
  118. Re:another language shoved down your throat by gbjbaanb · · Score: 1

    which college was that as it seems to have grasped the concept of teaching.

  119. Re:another language shoved down your throat by gbjbaanb · · Score: 1

    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

    if (a) do_b();

    is exactly the same as

    if (a)
        do_b();

    which is exactly the same as

    if (a)
    \tdo_b();

    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.

  120. Re:another language shoved down your throat by Chrisq · · Score: 1

    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.

  121. Re:another language shoved down your throat by jandersen · · Score: 1

    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.

  122. Re:another language shoved down your throat by Chrisq · · Score: 1

    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.

  123. Re:another language shoved down your throat by Chrisq · · Score: 1

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

  124. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  125. Good for Python. by CFBMoo1 · · Score: 1

    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! ~~
  126. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

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

  127. Re:another language shoved down your throat by gsslay · · Score: 1

    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.

  128. Re:another language shoved down your throat by kthreadd · · Score: 1

    Visual Studio is quite Windows specific, but the others are more or less cross-platform thanks to Mono.

  129. Re:another language shoved down your throat by kthreadd · · Score: 1

    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.

  130. Re: another language shoved down your throat by loufoque · · Score: 1

    How is a language without personality and history any good?
    Natural languages are not meant to be formal.

  131. Re: another language shoved down your throat by loufoque · · Score: 1

    Curly brackets are most aesthetically pleasing.

  132. Re: another language shoved down your throat by loufoque · · Score: 1

    What sort of software project doesn't enforce proper indentation?
    Badly indented code doesn't pass code reviews.

  133. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    and your obviously a shit programmer as you don't understand why it's fucking idiotic!.

  134. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

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

  135. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  136. Problems aren't just White Space by Anonymous Coward · · Score: 0

    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.

  137. Re:another language shoved down your throat by jeremyp · · Score: 1

    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
  138. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    Says the anonymous poster....

  139. Re: another language shoved down your throat by mdmenzel · · Score: 1

    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.

  140. Re:another language shoved down your throat by Bill,+Shooter+of+Bul · · Score: 1

    Wait... are you saying I misunderstand Esperanto?

    Point proven.

    --
    Well.. maybe. Or Maybe not. But Definitely not sort of.
  141. Great, an entire generation that won't... by randallman · · Score: 1

    So who hired the devs who "couldn't figure-out how to use {} in JavaScript" ??? I would fire that guy too.

  142. Re:another language shoved down your throat by CountZer0 · · Score: 1

    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.

  143. Re: another language shoved down your throat by Chrisq · · Score: 1

    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.

  144. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

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

  145. WTF? by Anonymous Coward · · Score: 0

    WTF is wrong with perl? Let's treat it as the 'gross anatomy' class to find out who's gonna stay.

  146. Re:another language shoved down your throat by TemporalBeing · · Score: 1

    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)
  147. Re: another language shoved down your throat by ConceptJunkie · · Score: 1

    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.
  148. Re: another language shoved down your throat by ConceptJunkie · · Score: 1

    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.
  149. Re:another language shoved down your throat by ConceptJunkie · · Score: 1

    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.
  150. Re:another language shoved down your throat by ConceptJunkie · · Score: 1

    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.
  151. Re:another language shoved down your throat by ConceptJunkie · · Score: 1

    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.
  152. Re:another language shoved down your throat by rijrunner · · Score: 1

    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.

  153. Ugh by Anonymous Coward · · Score: 0

    Both are terrible.

  154. That's COMPLETE bullshit... apk by Anonymous Coward · · Score: 0

    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

  155. Re:another language shoved down your throat by dpidcoe · · Score: 1

    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.

  156. Why do you keep talking? You're full of it! by Anonymous Coward · · Score: 0

    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

  157. Why'd you tell lies about Pascal then? by Anonymous Coward · · Score: 0

    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

  158. Personally, you've shown me 1 thing for sure by Anonymous Coward · · Score: 0

    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

  159. At least it wasn't Ruby! by Anonymous Coward · · Score: 0

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

  160. Re:another language shoved down your throat by douglas.w.goodall300 · · Score: 1

    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.

  161. Re:another language shoved down your throat by gbjbaanb · · Score: 1

    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.

  162. Re:another language shoved down your throat by gzuckier · · Score: 1

    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.
  163. Re:another language shoved down your throat by radarskiy · · Score: 1

    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.

  164. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  165. Re:another language shoved down your throat by Ottibus · · Score: 1

    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.

  166. Re:another language shoved down your throat by Anonymous Coward · · Score: 0

    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.

  167. Bad Choice by Anonymous Coward · · Score: 0

    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.

  168. Re: another language shoved down your throat by Anonymous Coward · · Score: 0

    and ur a poopy head!! hehehehehehe

    (why bother even responding)

  169. Re:another language shoved down your throat by DrGamez · · Score: 1

    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)

  170. Re:another language shoved down your throat by DrGamez · · Score: 1

    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?

  171. Good and Bad by Anonymous Coward · · Score: 0

    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.

  172. Re:another language shoved down your throat by smithmc · · Score: 1

    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!
  173. Re: another language shoved down your throat by Xtifr · · Score: 1

    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.

  174. Re:another language shoved down your throat by Xtifr · · Score: 1

    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.

  175. Re:another language shoved down your throat by Xtifr · · Score: 1

    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.

  176. all syntax and no libs by Anonymous Coward · · Score: 0

    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.

  177. Hey what about Jython! by Anonymous Coward · · Score: 0

    Hey what about Jython!

    - www.theAnonymousCoward.com