Slashdot Mirror


Python Displaces C++ In TIOBE Index Top 3 (infoworld.com)

InfoWorld described the move as a "breakthrough": As expected, Python has climbed into the Top 3 of the Tiobe index of language popularity, achieving that milestone for the first time ever in the September 2018 edition of the index. With a rating of 7.653 percent, Python placed third behind first-place Java, which had a rating of 17.436 percent, and second-place C, rated at 15.447. Python displaced C++, which finished third last month and took fourth place this month, with a rating of 7.394 percent...

Python also has been scoring high in two other language rankings:

- The PyPL Popularity of Programming Language index, where it ranked No. 1 this month, as it has done before, and has had the most growth in the past five years.

- The RedMonk Programming Language Rankings, where Python again placed third.

Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded) and is now also conquering the industrial world." In February Tiobe also added a new programming language to their index: SQL. (Since "SQL appears to be Turing complete.")

"Other interesting moves this month are: Rust jumps from #36 to #31, Groovy from #44 to #34 and Julia from #50 to #39."

154 comments

  1. Congratulations to the Python maintainers by Anonymous Coward · · Score: 1

    ... but if they hadn't handled the Python 2/3 fork so clumsily, this might have happened years ago.

  2. Warrior by fluffernutter · · Score: 0

    Real code warriors don't need static types. If a variable is so badly named that the type is not clear, use type().

    --
    Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
    1. Re:Warrior by PhrostyMcByte · · Score: 1

      If a variable is so badly named that the type is not clear

      Never fear, I've brought my LPCWSTR.

    2. Re: Warrior by Anonymous Coward · · Score: 0

      You definitely never had to debug student's code.

    3. Re:Warrior by Anonymous Coward · · Score: 0

      Did you bring your void**?

    4. Re: Warrior by jd · · Score: 2, Insightful

      Static typing isn't just about clarity to the programmer. In strict typing languages, the rule is to use the type that matches the range that actually applies. This is to help testing (something coders should not ignore), automated validation, compilation (a compiler can choose sensible values, optimise the code, etc etc etc) and maintainers (a clear variable name won't tell anyone if a variable's range can be extended without impacting the compiled code).

      Besides, I've looked at Python code. I'm not convinced their idea of a good variable name is in any way related to mine.

      I have no problem with Python, it's ideal for many cases, but dismissing obviously poorly understood reasons is not a valid reason for using it. Either understand the reasons and give a valid counter, or accept that different languages suit different needs.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:Warrior by Anonymous Coward · · Score: 0

      https://xkcd.com/378/

    6. Re: Warrior by Aighearach · · Score: 1

      You definitely never had to debug student's code.

      Is that even a thing?

    7. Re:Warrior by serviscope_minor · · Score: 1

      Real code warriors don't need static types. If a variable is so badly named that the type is not clear, use type().

      pfaaah. Real programmers don't need names. If the type of a variable is not obvious from context, get another job.

      --
      SJW n. One who posts facts.
    8. Re: Warrior by Anonymous Coward · · Score: 0

      Student code:

      Code works -> pass.
      Code doesn't -> fail.

      It isn't the teacher's job to debug student code, it's the student's.

    9. Re:Warrior by Undead+Waffle · · Score: 1

      Type annotations and docstrings help with the whole lack of type declaration thing. Of course that requires discipline, which is in short supply from my experience. If you can force your developers to run pylint that will at least complain when they don't have docstrings.

    10. Re: Warrior by Anonymous Coward · · Score: 0

      You are talking about the examiner, not the teacher.
      The teachers job is to teach. To be able to do that job the teacher needs to understand the students shortcomings.
      The teacher also need to debug functional code to see if the student just lucked out and are using methods that will come back and bite him later.

    11. Re: Warrior by Anonymous Coward · · Score: 0

      That's why there is so much bad code around. I often give C for program that just work, and A- for something that doesn't, but is very nicely written with minor mistake only.

    12. Re: Warrior by Anonymous Coward · · Score: 0

      code that doesn't work IS bad code.

  3. AC Displaces Other Posters In Post Index #1 by Anonymous Coward · · Score: 0

    french toast, m'ladies

  4. python interpreter by Anonymous Coward · · Score: 0

    So... C, the language the python interpreter is written in then?

    I'm still on the lookout for all those C++ compilers written in python.

    Or any of the games in my library, which all appear to be C or C++, with a few C#.

    Python is great... for toy programs.

    1. Re: python interpreter by Anonymous Coward · · Score: 0

      Java still number one, of course

    2. Re: python interpreter by Anonymous Coward · · Score: 0

      Toy programs?
      Granted no OS will never ever be written in python, but scientists do use it a lot for data processing.

    3. Re: python interpreter by sittingnut · · Score: 1

      jvm written in c++

    4. Re: python interpreter by Anonymous Coward · · Score: 0

      Not when they care about performance they don't.

      Unless they're falling back on C or C++ libraries, in which case see point from square one.

    5. Re:python interpreter by vux984 · · Score: 1

      "Or any of the games in my library, which all appear to be C or C++, with a few C#."

      From what I've seen a lot of the core engine stuff is C/C++; but a lot of the UI, AI, and "mod support" stuff is commonly done in Python and Lua.

      Personally, I disagree with semantic whitespace so I don't like python. (I think its the editors job to handle pretty formatting to reflect the structure, rather than the programmers job to define structure with pretty formatting.) But I can see why python would be a good learning language / educational language.

    6. Re: python interpreter by Anonymous Coward · · Score: 0

      Designing an algorithm to process massive datasets and optimizing it is a different job.

    7. Re:python interpreter by Anonymous Coward · · Score: 0

      But I can see why python would be a good learning language / educational language.

      Arguably, it teaches bad habits.

      People can get beyond those, so the damage isn't fatal... IF they put in the effort to do so.

    8. Re:python interpreter by K.+S.+Kyosuke · · Score: 1

      So... C, the language the python interpreter is written in [wikipedia.org] then?

      Since the faster interpreter is written in Python anyway, I don't think it makes sense for the language to be associated with C.

      --
      Ezekiel 23:20
    9. Re: python interpreter by CQDX · · Score: 2

      And a majority of scientist write terrible code.

      Python just lowered the barrier for mediocre coders.

    10. Re:python interpreter by Dutch+Gun · · Score: 1

      So... C, the language the python interpreter is written in then?

      I'm still on the lookout for all those C++ compilers written in python.

      Or any of the games in my library, which all appear to be C or C++, with a few C#.

      Python is great... for toy programs.

      These sort of rankings are meaningless except for a very broad view of a language's overall popularity. Obviously, C++ absolutely dominates the videogame industry (btw, almost no one uses straight C either). Python dominates where it well should, in areas where you don't need the raw performance as you do when creating huge, performance-critical applications like videogames. For instance, at one employer, I used Python and Groovy in a game's build system, but obviously, the game itself was all written in C++ (and parts were in Objective-C for the Mac port). The game's content creation tools were written in C#, while it used a custom scripting language for some client-side content.

      These sorts of lists are like making a ranking of the most popular carpenter's tools. Most popular: the hammer! Followed by: the screwdriver. Ooh, looks like the the nail gun has moved up, while the planer has dropped in our rankings! The circular saw remains steady, while the hand saw continues its plunge - no surprise there. etc... The point is that each tool, just like programming language has pros and cons, and tends to be most useful in pretty specific situations.

      What would be far more useful is a general breakdown of popular languages within specific industries or for specific types of applications. But of course, it's far easier to pull together a simple "popularity" list.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    11. Re: python interpreter by novakyu · · Score: 2

      Egh. Worst Python code written by worst scientist is still streets ahead of the best LabVIEW program written by the best programmer-scientist.

      Yes, Python lowered the barrier—for mediocre coders to write semi-intelligible code.

    12. Re:python interpreter by angel'o'sphere · · Score: 2

      Eve Online is mostly written in Python, client and server.
      It is the MMO game with the most concurrent users online at any time of the day.

      Speed is not their problem.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re: python interpreter by Anonymous Coward · · Score: 0

      I honestly thought I would see Excel macros mentioned in a thread about programming languages before I saw LabVIEW.

    14. Re:python interpreter by Anonymous Coward · · Score: 0

      You are joking, right? Performance is their main problem.

    15. Re: python interpreter by vtcodger · · Score: 1

      "Not when they care about performance they don't."

      Of course not. But performance is (mostly) an engineering issue. Science tends to be more about getting answers at reasonable overall cost. Thus Python, MathLab and R.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    16. Re:python interpreter by vux984 · · Score: 1

      'bad habits' ? what sort do you think?

      I sort of see it as the opposite... semantic whitespace teaches mostly good habits, its just fucking irritating to maintain, and to work with snippets and code fragments etc.

      But its highly readable, and pretty straightforward, and i don't see anything wrong with it as a beginning/educational language; for teaching flow control, algorithms, structured/modular programming, and so on.

    17. Re:python interpreter by Anonymous Coward · · Score: 0

      I absolutely guarantee they are falling back to code written in C for performance. Python is a glue language. Its performance is pretty shit but because it plays so well with C that doesn't matter - as long as you can find or write the C code.

  5. "first choice at universities" by Anonymous Coward · · Score: 0

    Back in '97 my university switched wholesale from pascal* and C** to java for a first introductory course in programming. They were fairly cavalier about it. "Oh yeah the other guys using the same educational material had an introductory course about object oriented programming that you're just gonna have to do without, here's a one lesson replacement introduction."

    This sort of bandwagoneering, trading "popular" languages for educational content is why universities, that university included, fail to produce world-class graduates. That and just plain sloppy teaching. But that tends to go hand in hand for some reason.

    * I did a lot of Turbo Pascal on dos. It's by no means perfect, but it's certainly not a bad introductory language.
    ** Grok pointers or else. It's a skill you'd expect university-educated programmers to have. I used to expect that, at least. Once.

    1. Re:"first choice at universities" by Anonymous Coward · · Score: 0

      If you were still using TP in 97 you were going to have a bad time. I did tons of TP too. Then never touched it again after 94.

      Java is not a bad language to learn first on. It has classes, objects, typing. You can get a fairly simple program going fairly quickly. Java is failing so hard now because of two major reasons. Spring and its sweeping 'magical' thinking callback stack and decorators plus Oracle. Oracle is going to kill the goose who laid the golden egg. It has not kicked in (end of the year) yet but once the price of Java goes up dramatically in support cost you will see a ton of businesses switching wholesale to javascript/typescript/node.

      These days if *anyone* asks me how to learn to program I give them a copy of python and this link https://docs.python.org/3/tuto... . Most people who can grasp any sort of basic programming can pick it up in a few days. To be good at it you need a few years under your belt. Plus some decent CS classes. There are some who can muddle along without it but will struggle for years with it.

      For colleges to still use DOS and TP would be silly. I do not even think you could buy a computer with 3.5 inch drive on it anymore. I suppose you could do some sort of virtualization and a bunch of work. Teach all of your students several useless skills (DOS cmd prompt and TP). OR spin up a linux instance and java/gcc.

    2. Re: "first choice at universities" by Anonymous Coward · · Score: 0

      The main problem with Java as a first language is that you have to write lots of magical code for a simple hello world or spend hours to explain what "public class" and "public static void main" means (and students won't get it anyway).
      I did that for years and even if a agree that dynamic typing in Python causes lots of problems I prefer to deal with this *after* people wrote their first thousands loc rather that telling people that they have to write code they don't understand.

    3. Re:"first choice at universities" by snapsnap · · Score: 1

      > Oracle is going to kill the goose

      After releasing Java 9 last Sept then deprecating it in March then releasing 10 in March and deprecating it this month, it's a pain to keep up with Java. For corporate code that needs to last many years, Java has become a not good solution when that was previously it's most important attribute.

    4. Re:"first choice at universities" by Anonymous Coward · · Score: 0

      And breaking changes like removing com.sun.xml.bind JAXB is just a disaster. I think every Java project I've worked on the past decade uses it, so Oracle dropping it seems like self-destructive behavior.

    5. Re:"first choice at universities" by rl117 · · Score: 1

      It's fixable with a simple dependency addition in your maven pom, build.gradle or whatever you use. They handled the transition about as well as could be expected: allow re-enabling with an option, then remove completely later. If you're going to decouple all the extra stuff in the JRE, they did it reasonably well. I've made the change in a dozen projects or so, and it's all running on 9/10/11 without a hiccup.

    6. Re: "first choice at universities" by Anonymous Coward · · Score: 0

      I do not disagree here. Yes there is 'magical' thinking. But I think many languages already suffer from that. C with its #include bits and python with its import bits. Unfortunatly the first thing you pretty much have to learn is how to import something. But you are not really ready for that as you have not even figured out what a function is yet and the library idea is a bit much for just starting out. Even pascal had the same problem you point out. To get it to do anything you had to import something. Python and its spiritual predecessor BASIC you could start writing something decently quickly without a bunch of overhead. But it was still there if you wanted to do anything more than very simple things.

      My point was TP was probably not exactly great either for a 'current generation'. Pascal is pretty much at this point a dead language. Because while people like to pretend a CS degree is not to get a job. It really is.*very* few people go into pure CS work.

    7. Re:"first choice at universities" by Anonymous Coward · · Score: 0

      If you were still using TP in 97 you were going to have a bad time.

      It got renamed Delphi somewhere along the way, but it's still around. And for teaching an introductory class, what Pascal-the-language was designed for, eh, why not. They were also switching over from PDP11 to PowerPC assembly around that time. So I'd had my classes in PowerPC assembly (which was new to me--I'd done plenty of brain-rotting x86 asm before) then ended up with both PDP11 and PowerPC assembly on the exam papers. I found the PDP11 stuff was easier to understand than the PowerPC jumble, despite never having seen it before.

      Java is not a bad language to learn first on. It has classes, objects, typing. You can get a fairly simple program going fairly quickly.

      IMO it's really not a good language. My pascal was entirely self-taught and I'd had loads of fun with that. Java was just... meh. Pretty GUIs (not a thing that I go for, never have) but, well, "Kingdom of Nouns" comes to mind. Lots of pseudohistorical boilerplate. "#include " is very explainable. static final public whateveritwas main() that just HAS to be inside a class for no explainable reason is not. Nor are the mysterious failures that happen when you put two classes in one file. (I hear that has changed now. I ran into that A LOT in class.)

      Oh, and I was quite offended that it lies to me. They sold it to us as "it doesn't have pointers!" but it was blindingly obvious that it was nothing but pointers. It just pretended to hide them, but badly: You still needed to incant "new" with regularity. But... not always, and they had a hard time explaining why new for this and not for the other, certainly to students entirely new to programming.

      java is very much a formulaic cargo culting language. In contrast, C++ is a rather gigantic language, fairly horrible and certainly not a good introductory vehicle, but everything in the spec has a discernible reason. Could be horribly convoluted and minutely technical reason, but there is a clear reason you can point to "this is the reason for why things are this way". In java, most reasons are arbitrary and unexplainable. Not good reasons for a solid university-level grounding in programming.

      But then, it was never ment as such. The idea is that you can produce good little java-grinding drones that are suitably fungible for business continuity. Lots of mindless incanting fits well with that. Teaching that as a first course in programming is a good indication that the university isn't trying to teach you much, but is instead trying to train you. Different thing.

      For colleges to still use DOS and TP would be silly. I do not even think you could buy a computer with 3.5 inch drive on it anymore. I suppose you could do some sort of virtualization and a bunch of work. Teach all of your students several useless skills (DOS cmd prompt and TP). OR spin up a linux instance and java/gcc.

      Your preconceived notions are showing. Even back when they had tripple-booted systems (NT/netware/linux, NT local the rest network-booted) for various classes. I had a useful development environment on a single 360k bootable floppy (system library without BGI, compiler, q.exe for an editor--if I needed graphics I'd kick the graphics card myself in a few lines of BASM and do the rest by writing to the magic memory area), but with netboot available that's not material. Turbo Pascal had plenty nice GUIs (though they sucked if all you had was a 286 with 640kB, which was what I had, hence compiler-only floppy), Delphi was full-on windows only, or somewhat later Kylix came along, and so on. And do note, Borland didn't invent Pascal, they just created a lightning fast compiler for it. These days you might look at Free Pascal or something. Plenty of options.

      Which is not to say Pascal should be used these days, but frankly I'd still consider it a more didactically-sound option than java, even today. I certainly think that bandwagoneering on java in '97 was a mistake.

    8. Re: "first choice at universities" by Anonymous Coward · · Score: 0

      Delphi is available as a free community edition. It still requires Windows. But, it can target Win32/64, OSX, IOS, Android, and can create server apps for Linux.

  6. If Java is the first... by mi · · Score: 4, Insightful

    behind first-place Java

    Whatever the list, if Java is in the first place, there is no honor in being anywhere near the top.

    --
    In Soviet Washington the swamp drains you.
    1. Re: If Java is the first... by jd · · Score: 3, Insightful

      The list is compiled from a restricted pool and lists popularity.

      That may mean a vendor throwing out ten individually packaged Python scripts counts as ten sources with one C program of equalling counts as one. If that's the case, Python would be ten times as popular in the stats whilst being equally popular in practice.

      So if Python needed ten times as many modules to be as versatile, it would seem popular whilst only being frustrating.

      The fact is, we don't know their methodology. We don't know if they're weighting results in any way to factor in workarounds and hacks due to language deficiency that might show up as extra use.

      We do know they don't factor in defect density, complexity or anything else like that as they do say that much. So are ten published attempts at a working program worth ten times one attempt in a language that makes it easy first time? We will never know.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    2. Re:If Java is the first... by Tough+Love · · Score: 2

      Tiobe is utter crap. Javascript (barf) is by far the most popular programming language today and Tiobe puts it in 8th place, behind Visual Basic.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    3. Re:If Java is the first... by Anonymous Coward · · Score: 0

      With an obvious "anomaly" like that, one must look for the real reason for the rankings.

    4. Re: If Java is the first... by ljw1004 · · Score: 1

      From the same article - Visual Basic overtakes C#, PHP and Javascript...

    5. Re: If Java is the first... by Anonymous Coward · · Score: 0

      Tiobe has possibly the clearest methodology of any programming language ranking.

      https://www.tiobe.com/tiobe-index/programming-languages-definition/

  7. Losing backwards compatibility with point releases by raymorris · · Score: 4, Interesting

    Never mind Python 2 vs 3; one major reason I shy away from Python is the incompatibility in point releases. I'd see "requires Python 2.6â and see that I have Python 2.7 so it should be fine, right? Nope, code written for 2.6 won't run under Python 2.7. It needs to be EXACTLY 2.6.

      It's at this point that some Python fanboi gets really upset and starts screaming about how that's now problem, with Python you set up separate virtual environments for each script, so that each one can have exactly the version of Python it is written for, with exactly the version of each library. When there is some bug or security issue you then hope that there is a patch for each, and deal with all that. (As opposed to every other peice of software in the world, which you simply upgrade to the latest version to get all the latest fixes). Yes, you CAN deal with that problem, it's possible, in most cases. You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).

    Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that. Braces aren't necessarily BETTER than just using indentation, but it's kinda like building a car which uses the pedals to steer and a hand stick for the gas. It's not necessarily inherently better or worse, but it would be almost undriveable for an experienced driver with decades of muscle memory in normal cars. Python's seemingly random choices on these things make it feel like using your feet to steer a car. There should be compelling reasons before you break long-established conventions and Python seems to prefer to break conventions just to be different. It seems the Python team is a bit like Berstein in that way. It's really annoying.

  8. Love Python by El+Cubano · · Score: 2

    Tiobe notes that Python's arrival in the top 3 "really took a long time," since it first entered their chart at the beginning of the 1990s. But today, "It is already the first choice at universities (for all kinds of subjects for which programming is demanded)

    Undergraduate was all C/C++ for me then I ended up at a graduate school where everything was Java. I disliked it so much that I decided to find an alternative and teach myself. I found Python and loved it. I still love it. You can't find anything better for both heavy duty programming and quick and dirty scripting. It's versatility makes It like the Linux of programming languages.

    1. Re:Love Python by Tough+Love · · Score: 3, Insightful

      I found Python and loved it. I still love it. You can't find anything better for both heavy duty programming...

      What? Python is hopelessly inefficient for heavy duty programming, unless you happen to be doing something that is mainly handled by a Python library, written in C. Python's interface to C disgusting, so if you have a lot of small operations handled by a C library, you will get pathetic performance.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    2. Re:Love Python by sjames · · Score: 1

      It really isn't. There are some apps that actually need something faster and a lot of apps that don't. It really doesn't help if a faster executable ends up waiting for I./O.

    3. Re:Love Python by Tough+Love · · Score: 2

      It really isn't.

      It really is and you blathering about what you don't know does not change that fact. (Python 14 minutes vs C++ 8..24 seconds for N-Body simulation.)

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    4. Re:Love Python by sjames · · Score: 1

      Well, since 99.99999999999% of all software run by literally everybody is an n-body simulation....

      That would be an example of the "some apps" I spoke of. I note that Intel Fortran was at the top of the list (not surprising). Would ifort be your first choice if you were writing a text editor or a tar file splitter? How about an smtp daemon?

      I sure hope not.

    5. Re:Love Python by Tough+Love · · Score: 1

      Well, since 99.99999999999% of all software run by literally everybody is an n-body simulation..

      Explaining the concept of "compute intensive" to you makes me feel more stupid. Check out any of the compute intensive Python benchmarks. Consider not waving your ignorance around quite so much.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    6. Re:Love Python by K.+S.+Kyosuke · · Score: 1

      It really is and you blathering about what you don't know does not change that fact. (Python 14 minutes vs C++ 8..24 seconds for N-Body simulation.)

      I've just run it on my machine. C++: 2.3 seconds, Python: 22 seconds. That's for straightforward mathy Python against C++ code with vector instrinsics. Concerning C++ code without manual vectorization, it's 4 seconds against 22. Not terribly bad, I'd say. Not to mention that this isn't the kind of code that would be typical for a larger application.

      --
      Ezekiel 23:20
    7. Re:Love Python by Tough+Love · · Score: 2

      5x+ penalty just for writing the code in Python, you call it not terribly bad? So this is how Python fans think.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    8. Re:Love Python by sjames · · Score: 1

      Having actually built a cluster that was in the top 500 for a while, I am well acquainted with compute intensive applications. I am also aware that compute intensive is a subset of "heavy duty" programming which is a subset of general programming.

      Now, pull your head out of your ass and look around, you might learn something. And while you're at it, consider working on your social skills.

    9. Re:Love Python by angel'o'sphere · · Score: 1

      The first python program I wrote was a test for a job interview.
      It involved downloading meteorologic data from the internet.
      Analyzing it, creating a kind of summary and using a graph plotting library to display a graph (generate a *.png)

      It would not have been noticeable faster if I had written it in C++, because ... you know: downloading via a network.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:Love Python by K.+S.+Kyosuke · · Score: 1

      I'm pretty sure you get another 3x penalty for not writing in assembly, too. So this is how C++ fans think.

      --
      Ezekiel 23:20
    11. Re:Love Python by Tough+Love · · Score: 1

      Either you understand that Python is crap for compute intensive work, or you are lying about building a cluster. Or you just connected the cables, more like it, and really don't have a clue about how to use it.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    12. Re:Love Python by Tough+Love · · Score: 1

      I'm pretty sure you get another 3x penalty for not writing in assembly, too...

      You are sure of that, are you? I bet you have never coded in assembly yourself, or looked at the assembly that gcc puts out in O3.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    13. Re:Love Python by dwpro · · Score: 1

      Have you worked on or have an example of a large, complex application in Python? I'd like to see how it's organized, seems like it'd be a nightmare.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    14. Re:Love Python by flargleblarg · · Score: 1

      Undergraduate was all C/C++ for me [...]

      And I believe you! — because...

      It's versatility makes It [...]

      ...evidentally you forgot to take grammar class. ;)

    15. Re:Love Python by sjames · · Score: 1

      I do understand that python isn't the right choice for compute intensive work. With the exception that if it is great for doing setup for something in FORTRAN or C that does the heavy lifting.

      I am certain that YOU don't understand that compute intensive work is a small fraction of what is done on computers. For example, I/O intensive work doesn't really care if it is Python or FORTRAN that is waiting for I/O to complete. There is a reason people don't drive a top fuel dragster to work.

      If you meant compute intensive, you should have said so in the first place. You might have realized you hadn't if you weren't so busy flinging poop like a disgruntled troglodyte.

      I was too busy patching the BIOS, kernel, and network drivers for maximum performance to connect the cables.

    16. Re:Love Python by Tough+Love · · Score: 1

      I am certain that YOU don't understand that compute intensive work is a small fraction of what is done on computers.

      First, you have no idea what I do or do not understand because you find yourself way too entertained by your own blather, and second, computers are used more for browsing than any other single task these days, and wasteful use of the CPU translates into perceptible lag. Playing media is very CPU intensive. You don't write those things in Python because Python sucks for efficiency. My point.

      Yes, I had you figured, you're a sysadmin with delusions about being a dev. Seen way too many of those. They tend to talk a lot and don't think much.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    17. Re:Love Python by sjames · · Score: 1

      I draw my conclusions from what you have written in this thread. You see one screw and think NOTHING is a nail.

      You don't write a video codec in Python, but it's a great choice for handling the UI and feeding the stream to the codec.

      You have much to learn.

    18. Re:Love Python by Tough+Love · · Score: 1

      As I said, "Python is hopelessly inefficient for heavy duty programming". WTF are you blathering on about. Fresh air is good for you, maybe get out of your basement more.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    19. Re:Love Python by sjames · · Score: 1

      "Heavy Duty " != "compute intensive". Say what you mean or don't complain when people disagree.

    20. Re:Love Python by Tough+Love · · Score: 1

      OK, you have your own private definition of terminology. Enjoy life in your own private universe.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    21. Re:Love Python by Anonymous Coward · · Score: 0

      Please don't feed the faboi - they love their Python and no meany is going to persuade them it has shithouse performance and gets all its speed from offloading work onto external libraries written in C.

    22. Re:Love Python by Anonymous Coward · · Score: 0

      It would not have been noticeable faster if I had written it in C++, because ... you know: downloading via a network.

      Or perhaps because the libraries you were using to do all of that work were written in C. Fuckwit.

    23. Re:Love Python by Anonymous Coward · · Score: 0

      First, you have no idea what I do or do not understand

      The irony...

    24. Re:Love Python by Anonymous Coward · · Score: 0

      Python reminds me of Basic or VBScript. I am not sure how it is so popular, unless most dev tasks these days are for simple Web APIs that return data from a DB

    25. Re:Love Python by Anonymous Coward · · Score: 0

      Care to point out a public definition of the term "heavy duty programming"?

    26. Re:Love Python by sjames · · Score: 1

      I made a couple attempts to clarify terminology but you were too busy looking for an excuse to make an ass of yourself to notice.

    27. Re:Love Python by Anonymous Coward · · Score: 0

      > you find yourself way too entertained by your own blather

      Oh, the irony!

    28. Re:Love Python by K.+S.+Kyosuke · · Score: 1

      I did, for 6502, 8051 and 8086. And I've seen GCC's output.

      --
      Ezekiel 23:20
    29. Re:Love Python by Tough+Love · · Score: 1

      Then you looked at it without understanding it. Do you seriously think you can out-optimize gcc's code generator? Do you even know how to use LEA for arithmetic?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    30. Re:Love Python by K.+S.+Kyosuke · · Score: 1

      LEA is not going to help you much in a small fixed-size n-body kernel. That's going to be mostly unrolled AVX code.

      --
      Ezekiel 23:20
  9. I'm looking for a language ... by Anonymous Coward · · Score: 1

    Is there a programming language out there, that is as fast as C++ or even C, has a proper strict type system (no duck typing, nothing like Python or JS), fast garbage collection (no fuckin' auto_pointer worst-of-both-worlds), is elegant and emergent (so very powerful for its simplicity), and doesn't require an advanced degree in computer sciences to do simple things (Hello Haskell!).
    Of course with key libraries being available for it. (The equivalent of a standard library, Vulcan, a simple GUI widget toolkit, SDL, the POSIX API or equivalents, and easy usage of networks or sockets.)
    IDE support would be nice, but isn't strictly necessary.
    Also, it should not be made by mentally insane or criminally evil elements. (So no Mozilla, Apple, Google, Microsoft, Oracle, Amazon, Gnome, Canonical, or anyone using "web applications" or "the cloud" or a "app store" or is otherwise a data kraken or against privacy, and the likes. People who are not interested in "profit" or "growth", but in improving humanity, are of course preferred.) ... *keeps on dreaming* :--(

    1. Re:I'm looking for a language ... by Anonymous Coward · · Score: 0

      Nim and D might qualify, though I wouldn't call D elegant and emergent. Unfortunately, Nim is a bit stagnant and lacks community power and also made a few dubious design choices.

      If anyone finds other candidates for the above reasonable and sane requirements, please add them below. I'm interested in that, too.

    2. Re: I'm looking for a language ... by Anonymous Coward · · Score: 0

      Wren or Go for the bill.

    3. Re: I'm looking for a language ... by Anonymous Coward · · Score: 0

      Go doesn't meet his requirements. First, Google is involved. Second, its type system is crap. Third, it's still not as fast as C++, let alone C, though already closing in.

      Wren is super-interesting, though most certainly too slow for his requirements.

    4. Re:I'm looking for a language ... by Tablizer · · Score: 1

      It's called "IwannaPony", and you are NOT going to get one. You are asking too much.

    5. Re: I'm looking for a language ... by Anonymous Coward · · Score: 0

      Sorrry, I sort of tuned him out near the end when he was ranting gibberish.

    6. Re:I'm looking for a language ... by Anonymous Coward · · Score: 0

      C# comes close. Pointers can be used and are effective when you have nested loops on large amounts of data. Multi-threading performance is excellent. There are issues getting top-notch performance out of Java when multi-threading.

    7. Re:I'm looking for a language ... by Anonymous Coward · · Score: 0

      Good luck. Rust or Go and frankly Go sucks donkey balls because it's very insular and produces ridiculously bloated binaries (eg. it can't do dynamic linking).

      Rust is good in the same way things like Scala, OCaml, and other are. It supports too many different paradigms which makes understanding other people's code or even your own code from months ago, damn near impossible because it depends on which mood they were in at that point. Those systems are just like Perl in that way.

    8. Re:I'm looking for a language ... by serviscope_minor · · Score: 1

      Is there a programming language out there, that is as fast as C++ or even C, has a proper strict type system (no duck typing, nothing like Python or JS), fast garbage collection

      No.

      Neither will there be. There's always a penalty for garbage collection.

      --
      SJW n. One who posts facts.
    9. Re:I'm looking for a language ... by rkcth · · Score: 1

      Is there a programming language out there, that is as fast as C++ or even C, has a proper strict type system (no duck typing, nothing like Python or JS), fast garbage collection

      No.

      Neither will there be. There's always a penalty for garbage collection.

      I think go is the closest to your requested feature list.

    10. Re:I'm looking for a language ... by Spacelem · · Score: 1

      Julia? It ticks quite a few of those boxes.

      Its performance is good enough that I'm able to drop C++ (I'm a mathematical modeller), it's amazing at multidimensional array manipulation, and its typing system is really good. It just feels nice to program in. Bonus, one of the inspirations was Lisp, so it's got good metaprogramming. Also it's free software, made by people at MIT, so your conscience can remain appeased.

      It's still a young language, but libraries are being built for it at an impressive rate, and it has a good collection so far. I think it has a great future ahead of it.

    11. Re:I'm looking for a language ... by serviscope_minor · · Score: 1

      I think go is the closest to your requested feature list.

      The GP, not mine. And yuck, no thanks. Go just seems, well, deeply mediocre in many places. It's like someone pdated C, ignoreing the last 40 years of language developments.

      Sure I can program without generics, I'm at a loss to see why I'd want to though.

      --
      SJW n. One who posts facts.
    12. Re:I'm looking for a language ... by TechyImmigrant · · Score: 1

      I'm holding out for Jai.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
  10. I would advise against any university by jd · · Score: 1

    That advocated a language. Languages shift faster than sand on speed. Universities should teach logic, reasoning, methodology, good practices and programming technique.

    Languages should be for the purpose of example only. Universities should teach programming, not Java, software engineering, not Python. Java and Python should be in there, yes, along with Perl, C and Ada. Syntax is just sugar over the semantics. Learn the semantics well and the syntax is irrelevant. You want universities to teach kids how to program not only tomorrow but in 40 years. Trust me, Python 3 won't be used in 40 years.

    This stupidity has happened before, when Cobol and Fortran were the in thing. Last forever, they thought. Nothing will replace them. Most programmers of that generation either spent a fortune relearning, because they'd learned syntax and not programming or retired, broke and penniless with a huge mortgage and no value.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:I would advise against any university by Anonymous Coward · · Score: 0

      Languages shift faster than sand on speed.

      What's trendy does, this is true. But C was used for the heavy lifting in the 1970s, and C and derivatives like C++ are still used for the heavy lifting today. Whatever OS you are using... it was almost surely written primarily in C/C++. Most of the other trendy languages have their interpreters written in C or C++. Most of the major applications you use are written in C or C++. Before the 70's, true it was something else, so there are shifts over time, but slow ones.

      Trendy stuff comes and goes but you're not going to develop a device driver in Python.

      Universities should teach logic, reasoning, methodology, good practices and programming technique.

      Wholeheartedly agree!

    2. Re: I would advise against any university by Anonymous Coward · · Score: 0

      COBOL and Fortran are still there you know.

    3. Re:I would advise against any university by Tablizer · · Score: 1

      when Cobol and Fortran were the in thing. Last forever, they thought.

      Any evidence most universities believed that? (They are still around and relatively common, by the way.)

      Universities have to pick something to program lesson projects in, and selecting language(s) common in the current market helps student job prospects. I suggest STEM students be required to learn at least one compiled/strong-typed language, and one script/dynamic language.

    4. Re:I would advise against any university by TechyImmigrant · · Score: 1

      My university (Manchester University, UK) certainly didn't pick a language.

      We studied many languages, compiler design, formal semantics and a boatload of other computer science things but at no point did they try to teach me a programming language. In fact at induction they said explicitly that they expected us all to know how to program before we arrived.

      That was 30 years ago. Things might have changed.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    5. Re:I would advise against any university by petermgreen · · Score: 1

      (note: this is a UK perspective, other places may vary)

      Universities have to work with the students they can get.

      I think you and your co-students were lucky to catch the height of the 80s microcomputer boom, the time when computers booted into BASIC, when using a computer pretty much meant programming it.

      Then the windows PCs with their pre-canned applications and no obvious programming language swept in. Leaning to program now meant not just finding a suitible book, it often meant buying the programming language and computer. School computers were locked down by IT departments worried about security, home computers were often regarded as important tools by parents rather than something kids could safely experiments with. The proportion of computer science applicants with prior programming skill plummeted.

      Things are improving again now. There have been high-profile drives to teach kids to program, good free tools are becoming more widespread. Maybe in a few years time it will once again be reasonable for Computing departments at Universities to assume that students will come in with at least some programming skills.

      Even if that happens though, not all university students learning to program are computer science students. Scientists and engineers increasingly need programming skills as well.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    6. Re:I would advise against any university by pauljlucas · · Score: 1

      If you want to teach semantics, use either Smalltalk or Scheme. You can teach the syntax for either in five minutes.

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    7. Re:I would advise against any university by Tablizer · · Score: 1

      My university...didn't pick a language.

      Didn't you have projects that involved turning in your code to the teacher/graders? The graders don't want to see every which language. Multi-lingual graders are more expensive. Most colleges dictate a narrow set of languages for such projects.

    8. Re:I would advise against any university by TechyImmigrant · · Score: 1

      My university...didn't pick a language.

      Didn't you have projects that involved turning in your code to the teacher/graders? The graders don't want to see every which language. Multi-lingual graders are more expensive. Most colleges dictate a narrow set of languages for such projects.

      Yes, but it was hardly narrow. We had homework to hand in using a variety of languages, depending on the course. Pascal tended to be used for general algorithm stuff. But Smalltalk, Prolog, ML and other usual suspects were used when they made sense for the course. You were supposed to leave with a CompSci degree where you understood the theory of languages more than the details of specific languages. Usually, for project work, you were free to choose your language and would be expected to justify the reasons. For one project I implemented a SCSI target controller for a ram disk on a board I made with a 68010, using assembler. Being able to cogently explain the complexity and potential roadblocks of getting a C cross compiler to play nice with a custom boot loader necessary for my custom hardware, compared to the lesser complexity of an assembler implementation was apparently instrumental in the good grade I got for that project - which was kind of important since it was the only 3rd year project and counted for about 1/3 of the degree result and you were supposed to do something ambitious.

      I don't remember herds of graders. That's what postgrads are for.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    9. Re:I would advise against any university by Tablizer · · Score: 1

      I don't remember herds of graders. That's what postgrads are for.

      Maybe the graduation % was too low at my U.

  11. vba by nten · · Score: 1

    I find java in an uncanny valley. Its still a few times slower than c++ for the sort of stuff I do but it isn't enough quicker to develop than c++ to be worth that hit. Python is far slower than java even using numpy but its so easy to develop in that it is worth the gamble that it will be fast enough. And the rewrite in c++ will go quickly even if it isn't. The title is because VBA is 11x faster than numpy at small dense matricies and almost as easy to develop in.

    --
    refactor the law, its bloated, confusing and unmaintainable.
    1. Re: vba by phantomfive · · Score: 1

      Java is useful because you can throw a team of lowskill developers at it and they won't mess things up beyond the point of unmaintanability. It will be a pain to maintain, sure, but the same developers using C would make memory errors that push things beyond hopeless, and if they were using Python or JavaScript the types would become more and more jumbled as the size of the program increases that no one would be able to understand it and things would start breaking more and more. Java enforces a minimal level of order (note that this is the explicit design philosophy of Maven).

      --
      "First they came for the slanderers and i said nothing."
    2. Re: vba by angel'o'sphere · · Score: 1

      Luckily I usually have high skilled developers in my Java projects :P

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re: vba by phantomfive · · Score: 1

      Then your codebase is better.

      --
      "First they came for the slanderers and i said nothing."
  12. Go Groovy! by pilaftank · · Score: 1

    Groovy from #44 to #34

    That's a pretty big jump. Groovy is a well-thought-out language and nicely facilitates writing clean, readable, compact code (especially compared to Java). However, it needs a better framework than Grails (85% really good convention over configuration stuff but 15% convoluted j2ee era framework stuff).

    --
    dna.js
  13. As an SA. by Anonymous Coward · · Score: 0

    It's my goto heavy hitter when shell scripts can't cut it. I have little need for anything lower level than python.

  14. which Python? by Anonymous Coward · · Score: 0

    Is that 2.8 or 3.x? Because they're two different incompatible languages. And who's to say Python 4 won't also break everything again?

    It's a broken model to have a language committee that does not respond to feedback from the community or industry.

  15. Re:Losing backwards compatibility with point relea by slack_justyb · · Score: 4, Informative

    Python 2.7. It needs to be EXACTLY 2.6

    Yeah, just FYI Python 2.7 is in a way its own thing. Different from the 2.x and different from the 3.x series. 2.6 is a no holds barred pure 2.x whereas 2.7 is a mixture of 2.x and 3.x features. So if you want to compare point releases, best to try that with the 3.x series. Also, if you're using something that requires the 2.x series, you shouldn't use that unless it is absolutely critical with zero replacements.

    You shouldn't have to. Every other language does some simple things to maintain backward compatibility in point releases (and mostly in major releases too).

    Again see argument about 3.x, but yeah not every language does this. Java 8/9 transition breaks things. ASP.Net to ASP.Net core breaks things along the way. I'm interested in what languages you have in mind, because I know quite a few languages that do maintain backwards compatibility (ish). For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it? Because if your definition means including flags break compatibility, then oooh boy are there a a shit ton of broken languages.

    Also the fact that most languages use every day and have used for decades use braces for blocks means my eyes and mind are very much trained for that

    Yeah, it's clear that you've never used a positional programming language. I guess it'll be a sign of my age, but buddy, program COBOL or RPG on punch cards and let me know about that curly brace issue you're having. Positional and indentation has been used way, way, way, longer than curly braces. That's not me knocking on the curly braces, I love my C/C++ folks out there! But I hate to tell you C and C-style is pretty recent in the timeline of all things computer.

  16. Hackers love TC by Tablizer · · Score: 1

    [SQL added to list] since "SQL appears to be Turing complete."

    Not sure that's a good thing.

  17. Qt (with C++) by CQDX · · Score: 1

    I really like the Qt framework. It's well done, well documented and well supported. Sure it's C++ so it doesn't meet your need of finding a new language but the API is pretty clean and simple so that you can avoid the complications and ugliness of C++ in most cases. If you need to though, it's all right there so you don't give up the additional power if you need it. The Python version is good too and very similar to the C++ version so it's not hard to switch between languages as your needs change.

  18. Depends on the results / message, actually by raymorris · · Score: 2, Insightful

    > C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that, so it depends on what you mean by breaking. Does it count if the compiler by default breaks, but providing flags fixes it?

    If it results in weird runtime errors, that's definitely a problem.
    If the compiler I'm using gives the message "incompatible use of fstream, try '-fstreamcompat' flag", that's no big deal.

  19. python3 for full application development. wtf? by cats-paw · · Score: 2, Interesting

    Can someone explain to me why using a dynamically typed language is a good idea for "big" applications ?

    Python is subject to all sorts of really horrendous bugs that would not happen in a compiled, type-checked language.

    For example if you are accessing an undefined variable in the else branch of an if statement, you won't know it's undefined unless that branch is taken. which means if it's something like a rarely occurring error condition it's kind of annoying. yes you can figure it out by writing enough test code, but really.

    I love Python, but i think using for multi-thousand line application seems like a bad idea.

    Is there something I'm missing here ?

    enlighten me...

    --
    Absolute statements are never true
    1. Re:python3 for full application development. wtf? by Frankablu · · Score: 1

      It's really simple, Writing an application in Python is x3 quicker than writing it in C/C++/Java, etc... That means you either get to market 3x faster or only need 1/3 the number of programmers. Everything else is completely and utterly irrelevant. "you won't know it's undefined unless that branch is taken" The code linter built into your Python IDE, will tell you about it.

    2. Re:python3 for full application development. wtf? by Anonymous Coward · · Score: 0

      There is literally nothing you’re missing. Python is for programmers that don’t know what they are doing.

    3. Re:python3 for full application development. wtf? by sjames · · Score: 1

      Six of one, half dozen of the other. The Python program will be smaller for the same functionality and it won't have buffer overflows and memory leaks The C program will run faster (unless it has to wait on I/O) and will check for variables used before assignment.

    4. Re:python3 for full application development. wtf? by munch117 · · Score: 3, Interesting

      Using an undefined variable in Python triggers an exception, and you get a traceback. In a larger program you will normally have a system for capturing and storing such tracebacks for analysis, and with the traceback in hand, it's typically a very simple fix.

      In C++ you get an incorrect value created by default-initialisation (or maybe undefined behaviour): the program hobbles along as best it can, and you may never find the problem. You just see your program behaving strangely sometimes, and as the program gets larger, those strange behaviours accumulate.

      Python is subject to all sorts of really horrendous bugs that would not happen in a compiled, type-checked language.

      Horrendous is not the right word. Bugs that come with tracebacks are simple bugs. Zen#10: "Errors should never pass silently" is exactly what you want in large-scale programming.

    5. Re:python3 for full application development. wtf? by dwpro · · Score: 1

      Hogwash. Even if x3 were true, Dev is roughly 20-40% of overall software cost. Unless you're arguing that every aspect of coding is reliably 3x faster in Python. Given the value of strong typing when refactoring, I'd wager python is not even competitive price wise past the proof of concept/one-off script scenario.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    6. Re:python3 for full application development. wtf? by Frankablu · · Score: 1

      I'm am arguing that because it's true. There isn't much benefit to strong typing when refactoring but the benefits of duck typing when it comes to unit testing are quite significant. I've done commercial software development in strong and weakly typed languages before. The benefits of things like "strong typing" are generally not that much. If you are on board with the whole agile bandwagon and writing unit tests and all that. You would be much better off with Python's significally better unit testing facilities than strong typing.

    7. Re:python3 for full application development. wtf? by dwpro · · Score: 1

      I'm at least in the caravan trailing the agile/unit-test bandwagon, but those are orthogonal to typing (and being explicit generally). Looking at a method signature and knowing that it requires a decimal and enumeration of a given type is more than a run-time check; it provides information about the intent, limitations, and discoverability options. There are very real trade-offs for the speed and flexibility of a language like Python, and my view is that it's more jet-fuel than solar power.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    8. Re:python3 for full application development. wtf? by Frankablu · · Score: 1

      If you are using a good IDE "provides information about the intent, limitations, and discoverability options" can all be found out with a couple of key strokes (git blame, find all usages, pylint, etc..). So putting that information into the language explicitly is an obsolete and backwards way of going about things :p The job of the compiler in Python has just been redistributed elsewhere. It's different but there are many ways to solve the same problems.

    9. Re:python3 for full application development. wtf? by Anonymous Coward · · Score: 0

      Horrendous is not the right word. Bugs that come with tracebacks are simple bugs.

      Sometimes yes, sometimes not. The problem is that you get traceback where the error results in run time type check failure. You will not get traceback where the error was primarily created. The error creatiion place can be completely different. Way too many times it is not as easy as you want to present it.

      Zen#10: "Errors should never pass silently" is exactly what you want in large-scale programming.

      You are right. And C++ is not the best example of safely typed language with static type checking. There are many ways how to cheat type checker in C++.

    10. Re:python3 for full application development. wtf? by Anonymous Coward · · Score: 0

      Wrote my latest 20K LOC project in C. Not a single unit test, just assertions and integration tests: after each compilation a program that either runs fine the first time or after a few minutes of obvious fixes (e.g., a missed call to some initialization routine, quickly caught by an assertion). *Plenty* of errors caught up at compile time by simply type checking, despite the fact that C's isn't as strong as, say, C++.
      If you don't have type safety (nor assertions) then you (try to) make do with unit tests, but if you do have them then the value of *unit* tests decreases exponentially while their cost remains high. If you have the misfortune of working at a shop that *requires* you to do unit tests then you can't leverage the savings possible by using strong type checking vs. duck typing; if, however, you can choose your methodology beyond the dictates of current uninformed practices and cargo cults then you realize your time to market doesn't skew that much, if at all, in favor of duck typing, while readability, maintainability and overall performance (in terms of either execution time or resources) are vastly superior with strongly typed languages.

    11. Re:python3 for full application development. wtf? by Anonymous Coward · · Score: 0

      Oh, brother ... You've never heard of "assertions", have you? Standard best practice since the C days, available of course in C++ and even in Java: use them generously and your program would never "hobble along" with incorrect values.
      On the other hand, an undefined variable in C/C++/Java/... is trivially caught by the compiler (and trivially fixed) before you even have a program you can run and throw exceptions you then have to "capture" in a database to later query, analyze, correlate to the portion of the code that threw the exception and then, hours or days later, find out that it was a silly mistake that would have been caught with near-zero effort if you had only chosen your programming language wisely ...

    12. Re:python3 for full application development. wtf? by donbudge · · Score: 1

      Writing big applications in Java/C++ takes too long. And then managements decide to avoid 'custom code' in favor of 'standard' vendor tools where you can drag and drop to build parts of the 'big' application. This applies to ETL, reporting, messaging to name a few. With Python, the development cycle shortens and you can still stick to writing code instead of dealing with vendor binaries, lock-ins, licensing etc. Python with strong emphasis on unit tests, coupled with plugging in C/C++ where necessary for performance can result in a better overall system.

    13. Re:python3 for full application development. wtf? by nashv · · Score: 1

      If you are really really asinine about strong typing, you can declare types in Python https://medium.com/@ageitgey/l...

      --
      Entia non sunt multiplicanda praeter necessitatem.
    14. Re:python3 for full application development. wtf? by Anonymous Coward · · Score: 0

      If you are using a good IDE "provides information about the intent, limitations, and discoverability options" can all be found out with a couple of key strokes (git blame, find all usages, pylint, etc..). So putting that information into the language explicitly is an obsolete and backwards way of going about things :p The job of the compiler in Python has just been redistributed elsewhere. It's different but there are many ways to solve the same problems.

      Dude, you've got stupid you haven't even tapped into yet.

    15. Re:python3 for full application development. wtf? by shutdown+-p+now · · Score: 1

      By "undefined variable" I think he means undeclared (or, in Python, unassigned in the proper scope, since locals are declared implicitly).

  20. Speak of the devil... by Anonymous Coward · · Score: 0

    I was just working on learning Python this afternoon - starting in on writing a very simple molecular dynamics simulation and visualization - since understanding the Second Law of Thermodynamics is a (pleasantly futile) little hobby of mine.

    I've got a good job writing clinical genomics software in Java. But there's more micromanaging and negativity at my current job than I would like. So I'm also on the job hunt - for a programming job somewhere in California relating to clinical genomics - where people genuinely believe in the work - but not so much that they lose sight of the fact that it's even more important to treat each other well.

    And, these days, the most popular languages in clinical genomics seem to be Python and R. Personally, I'm a bit skeptical that Python has the necessary package/module system to support a clean architecture for large (hundreds of thousands of lines) enterprise grade software. But I don't want to look like an old guy with out-of-date skills (I got my start programming Scheme at MIT). So I figure I need to be able to put Python on my resume. :)

    So far (just a few hours in), I'm kind of meh about Python. It doesn't seem terrible but it's not a revelation either - a lot like Perl but with a cleaner object system.

    1. Re:Speak of the devil... by vtcodger · · Score: 1

      "I'm a bit skeptical that Python has the necessary package/module system to support a clean architecture for large (hundreds of thousands of lines) enterprise grade software."

      I think you're likely at least somewhat correct. Python scripts longer than a few hundred lines tend to be increasingly hard to navigate. There is a module system. But it's kind of clunky and confusing. I, at least, have never warmed to it. There has to be some solution used in really large Python systems, but I don't know what it is.

      "It doesn't seem terrible but it's not a revelation either - a lot like Perl but with a cleaner object system."

      Python creator Guido Von Rossum has been known to say that Python and Perl are pretty much the same language. My experience is that that's pretty much true when coding. In my (limited) experience the difference is that if I come back to the code more than a few hours after I write it, there's a fair chance I will be able to read the Python. Perl? It'll look like a random dump of characters and operators.

      =========

      To my mind, the two strengths of Python are:

      It'll do whatever you want to do -- procedural logic, objects, functional programming -- in a reasonably sane and comprehensible manner.

      Some of the built in types -- string, list, file -- have nice sets of methods that do what one wants to do pretty sensibly. One exception to that -- list methods act on the list and return an error flag rather than returning the modified list. a = [2,1,3]; b = a.sort(). You expect b to be [1,2,3]? Nope a is [1,2,3], b is None (operation successful). If you wanted b linked to the sorted list? you should have used the sorted function. b=sorted(a) I've never encountered a programming language that didn't have idiosyncracies. I think Python has fewer than most.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    2. Re:Speak of the devil... by shutdown+-p+now · · Score: 1

      There is a module system. But it's kind of clunky and confusing. I, at least, have never warmed to it. There has to be some solution used in really large Python systems, but I don't know what it is.

      What's wrong with the Python module system? It's pretty similar to the Java package system in principle (mapping 1:1 to directories and files), and that, while not perfect, didn't prevent a lot of large enterprise systems being written and maintained.

      One exception to that -- list methods act on the list and return an error flag rather than returning the modified list. a = [2,1,3]; b = a.sort(). You expect b to be [1,2,3]? Nope a is [1,2,3], b is None (operation successful). If you wanted b linked to the sorted list? you should have used the sorted function. b=sorted(a)

      Because lists are mutable, you need both sort() and sorted() to distinguish between "I want to sort this list, and have everyone else who has a reference to it see that", and "I want a new list with data from this list, but sorted". Pretty much all imperative languages have sort() behaving in the same way (e.g. see std::list::sort in C++) - that Python offers sorted() as well is actually more off the beaten track if anything. IMO, the names are chosen well to highlight the distinction - list.sort() reads as "sort this list" (implying in-place modification), while sorted() implies a new view on the data. The reason why sorted() is a function rather than a method on lists is because it can sort any sequence that way, not just list; OTOH, in-place sorting has to be collection-specific.

      Also, list.sort() does not return an error flag. The usual reason why it might fail is if the comparison, or your key extraction function if one was specified, fails by raising an exception - and then that exception will simply be propagated. The only other reason is if your key extractor tries to mutate the list while it's being sorted, in which case you usually get a ValueError if it can be detected. Exceptions aside, the method always returns None, because all methods in Python return something; None is just the conventional unit value.

      Returning error flags in general are very much frowned upon in Python, and exceptions are the standard way to communicate failures, much more so than in other languages (because CPython implements them as error code returns under the hood, they're very cheap).

  21. Re:Losing backwards compatibility with point relea by sjames · · Score: 2

    That must be an odd package. I have literally NEVER seen that with anything I have wanted to use, including my own pre-2.7.x software.

  22. Index of shit by Anonymous Coward · · Score: 0

    Measures by how many idiots have stupid questions on stackovershit?

  23. Also deprecation warnings by raymorris · · Score: 1

    On a similar note, if something is marked deprecated long before it's removed, that matters. Five years of compiler/interpreter warnings saying "deprecated use of function in null context on line #47" gives plenty of opportunity. To fix it. From the bit of Python I've worked with, the recommended method on Friday completely stops working on Monday.

    1. Re:Also deprecation warnings by shutdown+-p+now · · Score: 1

      That's plainly not true - Python follows the established deprecate-first-remove-next cycle. This is readily obvious when you look at the changelogs. For example, from the 2.6 changelog:

      The threading module API is being changed to use properties such as daemon instead of setDaemon() and isDaemon() methods, and some methods have been renamed to use underscores instead of camel-case; for example, the activeCount() method is renamed to active_count(). Both the 2.6 and 3.0 versions of the module support the same properties and renamed methods, but don’t remove the old methods. No date has been set for the deprecation of the old APIs in Python 3.x; the old APIs won’t be removed in any 2.x version.

      For another example, the ability to throw strings (rather than BaseException-derived objects) was deprecated in 2.3 (2003) and finally removed in 2.6 (2008).

      For comparison, in the C++ land, dynamic exception specifications were deprecated in C++11, and removed in C++17. So the time scale is comparable.

  24. Good. C++ is complete garbage. by Anonymous Coward · · Score: 0

    Worked on two large projects where key performance requirements could not be met thanks to c++'s massive overhead.

    Add to that overly clever programmers trying to overload everything in sight.

    Good riddance I say.

    My professional programming days are long gone, but I've used python for some little hacks. Pleasantly surprised how easy it was to pick up.

    Of course it helped that the indentation style matched my own preferences.

    1. Re:Good. C++ is complete garbage. by pezezin · · Score: 1

      C++'s massive overhead? One of the guiding principles of C++ are zero-cost abstraction. Also, it's one of the fastest languages out there. If you couldn't meet your performance requirements with C++, you were doing something really wrong.

  25. Hello Machine Learning by SuperKendall · · Score: 4, Interesting

    I think what has really propelled Python into a higher rank is machine learning, where it is simply the de-facto language of choice by quite a margin.

    I have to admit I am impressed with the progress it has made; of many recent CS grads I've talked to it seemed to be the favorite language...

    I have to admit that over the years I've not really enjoyed Python much myself in the on and off again times I've used it, for me the spaces as indent levels maybe get too close to the meaningful whitespace of Fortran... I guess modern programmers do not have this hangup. :-)

    So good work Python, a well deserved ascent!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Hello Machine Learning by shutdown+-p+now · · Score: 1

      It's not just ML, but data science in general.

      And the other big thing was many universities switching to it from Java for their CS courses.

    2. Re:Hello Machine Learning by SuperKendall · · Score: 1

      That's a great point, and to be honest that is probably a better language for learning than Java... it would also explain why newer CS grads all like it more now.

      The only downside is that most jobs are still using Java or something besides python... but probably it means we'll se more python used in businesses I guess. That usually ends up following eventually.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  26. Re:The majority of coders are morons... by Anonymous Coward · · Score: 0

    yeah all those womyn coders. amirite or amirite.

  27. Re:Losing backwards compatibility with point relea by johannesg · · Score: 2

    For example, C++ pre and post namespace breaks fstreams in programs, but compilers provide flags to override that

    Dude, that was in 1990, back before there even was a standard C++. And I very much doubt those flags still exist today.

    program COBOL or RPG on punch cards and let me know about that curly brace issue you're having

    You seem to have forgotten how that really worked in your old age though. Punch cards had columns with specific functions assigned to them, so yes, of course you would have to skip certain columns on occasion. That was not indentation, though. You didn't have indentation; moving your holes by one position or one column meant the machine would interpret your instruction as something else entirely.

  28. Python is very newcomer-friendly by CustomSolvers2 · · Score: 1

    I have been sporadically using Python for some years already and never really liked it. Note that most of my experience is focused on C-based and strongly-typed programming languages. Recently, I have been spending some time on a Python project and have realised about its (newbie) friendliness.

    I still don't quite understand the reason for all the tabs/spaces problems, consider it too slow, don't like the systematic need of relying on external resources and I will certainly continue using other languages before it. But I do understand now why newbies or those performing relatively small developments or those wanting to rely on some of the associated resources (although I don't like being systematically forced to include external dependencies, I do recognise that Python deals with these aspects quite gracefully and that there are many interesting libraries) might prefer Python. It is one of the most intuitive programming languages which I have ever used, at least from what seems a newcomer perspective (e.g., same command performing what are intuitively seen as similar actions).

    --
    Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
  29. two times we replace Python with something else by ArcticBunny · · Score: 0

    Python is great for prototyping, but for me, I found that in production code C++, C# or another statically typed language was better.

  30. Too simple by zmooc · · Score: 1

    I don't think this should be about lines of code written. A more interesting approach would be to also count all dependencies, counting things like libc a gazillion times. Even more interesting would be to count what's actually executed.

    --
    0x or or snor perron?!
  31. RIght... by casperghst42 · · Score: 1

    Not typesafe, and no switch/case ... what ever rocks your boat.

  32. That's nice they deprecated something by raymorris · · Score: 1

    That's great that they deprecate something on some occasions.
    MY experience with the Python I run is that one version gives no warning, going up one point release throws multiple fatal errors.

    > This is readily obvious when you look at the changelogs

    Maybe that's the thing - one has read the changelogs to see what is deprecated, as opposed to getting a clear deprecation warning from the interpreter/compiler like you would with C, Perl, and other languages?

    It's possible that a Python expert might be able to tell me something like:
    If you want to be warned about deprecations, while setting up thr virtual environment for that script you have to set the shell environment variable PYTHON_DONT_BE_SHITTY
    or whatever.

    Following the basic HOW-TO on Python.org, they run clean under 2.x and die with fatal errors on 2.y. If I studied the changelogs enough I might be able to maintain these scripts, but that leaves a terrible first impression so I don't WANT to deal with this *;"+_!" language. I learn new languages and figure out things like that if the language seems like it's going to make my life easier and be worth it. Python appears to be a major pain in the ass for no good reason in several ways, so I'm not seeing that it's something I want to learn. Not more than enough basics that I can do some simple maintainence when I have to.

    1. Re:That's nice they deprecated something by shutdown+-p+now · · Score: 1

      MY experience with the Python I run is that one version gives no warning, going up one point release throws multiple fatal errors.

      Can you give an example? I'm just not aware of any, and it makes me suspect that what you were running into was an issue in a third-party library (some of which do indeed have a cowboy attitude towards breaking changes - but that's common across all languages).

      Maybe that's the thing - one has read the changelogs to see what is deprecated, as opposed to getting a clear deprecation warning from the interpreter/compiler like you would with C, Perl, and other languages?

      Like this?

      And I have never, ever seen a deprecation warning in C or C++. You have to read the change sections for new standards to see what was deprecated or removed.

  33. Default warns, unless you turn it off in CFLAGS by raymorris · · Score: 1

    > And I have never, ever seen a deprecation warning in C or C++. You have to read the change sections for new standards to see what was deprecated or removed.

    The default with gcc is to warn about deprecation.
    You can turn the warnings off by setting the CFLAGS environment variable to include -Wno-deprecated, which you can do in your .bashrc oe wherever. What's most often recommended is -Wall to show all warnings of all types.