Slashdot Mirror


"Clinical Trials" For Programming Languages?

theodp writes "High school junior Charles Dawson's New Year resolution is to write a new program in different language each week. It's an ambitious project for someone of any age, and while it won't give him an in-depth appreciation of programming language differences, it'll certainly give him greater insight into the strengths of certain languages than would perusing the Hello World Wikipedia article. Lots of claims are made about the comparative productivity of programming languages, but have there been any landmark studies that measure the efficacy of a programming language's productivity claims in a 'clinical trial' of sorts? Would head-to-head tests against other languages be a better way of sorting out Popularity vs Productivity vs Performance claims, or is relying on more nebulous claims of superiority the best we can do?"

232 comments

  1. All hail Nebulous! by Anonymous Coward · · Score: 0, Informative
  2. That is a beautiful start of a ... by Anonymous Coward · · Score: 5, Insightful

    long flamewar

    1. Re:That is a beautiful start of a ... by Anonymous Coward · · Score: 4, Funny

      long flamewar

      To do this flamewar properly little Charlie Dawson should post his findings every week so we can keep this thing going until he finally realizes his dream of pissing off every programmer.

    2. Re:That is a beautiful start of a ... by DuckDodgers · · Score: 4, Insightful

      It shouldn't be a flame war. In order to make a meaningful comparison between two programming languages I think you need to have a high level of skill in each, and write two feature-equivalent non-trivial programs in each.

      Most of the flame wars are between people who don't have good expertise in at least one of the languages under discussion, arguing about merits and drawbacks in simple programs.

      I think what Charles Dawnson plans will be interesting, educational, and fun, but you can't become good enough in a language in a week to have a useful opinion on its effectiveness at creating the next social network, operating system kernel, C compiler, web browser, search engine or office suite.

    3. Re:That is a beautiful start of a ... by alex67500 · · Score: 4, Funny

      It's only a flamewar until you agree that there are 2 types of programming languages:
      - Those everyone bitches about
      - And those nobody uses

    4. Re:That is a beautiful start of a ... by Anonymous Coward · · Score: 0

      It shouldn't be a flame war. In order to make a meaningful comparison between two programming languages I think you need to have a high level of skill in each, and write two feature-equivalent non-trivial programs in each. Most of the flame wars are between people who don't have good expertise in at least one of the languages under discussion, arguing about merits and drawbacks in simple programs. I think what Charles Dawnson plans will be interesting, educational, and fun, but you can't become good enough in a language in a week to have a useful opinion on its effectiveness at creating the next social network, operating system kernel, C compiler, web browser, search engine or office suite.

      Says you. If you can't master x86 assembler in half that time, you need a new career.

    5. Re:That is a beautiful start of a ... by DuckDodgers · · Score: 2

      If you can master Haskell, Lisp, Perl, and J in one week each, more power to you. I can't.

    6. Re:That is a beautiful start of a ... by brausch · · Score: 5, Insightful

      The real problem is that different languages are often created to solve different problems. You can't really compare them very easily with any single program, no matter what non-trivial program that you use. For example, C is a better programming language than Javascript for some problems; Javascript might be better than C for some other problems.

      I'm advanced to expert in about six languages and have decent experience in a dozen others. I've settled on about four that I use a lot, and that fit the kinds of problems that I work on. Other equally skilled and experienced programmers (programming for over 40 years) would choose a different set of languages better suited to solving the problems they routinely work on.

      It's kind of like trying to compare the toolbox of a plumber with the toolbox of a mechanic. There is overlap of course but there are also specialized tools.

      --
      "Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
    7. Re:That is a beautiful start of a ... by jythie · · Score: 1

      I would admire that kind of dedication, and the flamewars we would be treated to every week as people switch sides would be delicious.

    8. Re:That is a beautiful start of a ... by jythie · · Score: 2

      Making it even worse, different languages are not only designed to solve different technical problems, but they are designed to solve different HR problems. How easily one can get developers who are both familiar with the domain AND the language, or know a language so close that transitioning is easy (i.e. why most languages looks like C) is just as critical as in how well a language fits a project as the technical aspects.

      Which is why language wars can get so flamey.. each one is heavily tangled up in culture.

    9. Re:That is a beautiful start of a ... by mwvdlee · · Score: 4, Funny

      pissing off every programmer.

      Well, everybody except LISP programmers ofcourse, as that will turn out to be the best language.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    10. Re:That is a beautiful start of a ... by Darinbob · · Score: 1

      I did something similar when learning some new languages, or getting back up to speed in languages I had only learned from a book. I'd write essentially the same program over again in the new language. It was helpful, however I think it had some drawbacks. You tend to want to re-create the same style you already have in the new language, rather than adapting to the new language's style. So I had to force myself to try and think like the new language wants.

      Ie, you can port your basic procedural program to just about any language and have them all end up looking mostly the same. There was a saying back in school about someone that went "he can write (in) Fortran in any language". So take that Pascal program and write it in Lisp using a procedural style, but that doesn't necessarily teach you how to write a good Lisp program. Similarly, porting C to C++ is easy, just fix up a few warnings and you're done, but to really write in C++ you can do a lot more, like adding in classes, using catch/throw flow control, objects that clean themselves up when a function exits, etc.

    11. Re:That is a beautiful start of a ... by Darinbob · · Score: 2

      I think that in a week you might not even learn the concepts, unless you already know of them from other languages. Ie, if you know Smalltalk pretty well, then you can figure out what Java is about in a week, if you know SML pretty well than you'll figure out Haskell in a week, etc. However if you don't know the foundations of programming languages (ie, have no idea what a closure is or functional vs procedural) then you won't learn more in a week about a new language than the syntax and some semantics.

      Ie, if someone sees C# as a new and different language then they will have trouble learning it quickly, but someone who sees it as a synthesis of several older languages and ideas will find it quick to learn (even if they don't understand the new fangled terminology placed on old ideas).

    12. Re:That is a beautiful start of a ... by minstrelmike · · Score: 1

      I learned Pascal and Modula-2 and C and then started using Perl in the web LAMP stack. When I wrote my first Java program, it was straight up procedural. Even I could tell that. Some of my coworkers said it was objects because we used Java. Syntax ain't the same as architectural orientation.

      The hardest thing to do for an accurate comparison is deciding on the measurements. Is it speed of processing, speed of programming, ease of maintenance? There are lots of different real-life problems that need to be solved and you cannot solve all of them all the time with a single magic language. Thus even if the 'best' programming language won a sports car race, that wouldn't mean anything to me if I need a tractor trailer.

    13. Re:That is a beautiful start of a ... by VortexCortex · · Score: 2

      Making it even worse, different languages are not only designed to solve different technical problems, but they are designed to solve different HR problems.

      I agree. That does make them worse. C++ wouldn't be where it is today if it didn't incorporate C -- This is both a good and a horrible thing to realize if you look at the state of things.

      However, the "different language for different people" problem is one created by humans. You see, C is the way it is because it tries to minimally abstract the operations common to Von Neumann machine architecture. Nearly all modern languages fail in two respects: They are either too abstract and dynamic or too concrete. Humans therefore select a language matching the problem space's requirement, and simply ignore the deeper problem.

      The problem is in the encoding of the language itself: The preconceived paradigms / use cases. Take JavaScript for example. It's dynamic variables and prototype design create huge problems for performance, but it was created to be a "glue" between web pages and Java, so performance wasn't a design goal. Java did a lot of things right language wise, but its runtime is too bloated because the use case was assumed to be anything: Instead of an applet being an embedded isolated Java program with only resources its containing browser gave it they included the whole kitchen sink and the massive exploit surface thereof. Take C for example: It has a quite foolish function stack based assumption whereas heap based functions can easily be coroutines and have closures. However, given the limitations of older hardware it was a good assumption of the use case. It's the difference between a full featured garbage collector (Lisp) and a mark/release garbage collector (C) -- We're garbage collecting function call instances.

      Many humans are so arrogant or ignorant that they proclaim the language domain to be what makes or breaks a language, meanwhile completely ignoring that over the years the x86 chipset has been modified to better optimize for C's function-stack paradigm, see the ENTER and LEAVE opcodes for instance. ARM even has these restrictions. This makes some languages perform terribly compared to others because some follow the same assumed use case as the hardware and some languages do not. For instance, one of my toy languages doesn't use ENTER and LEAVE since it operates in an OS that isolates stack variables and parameters from the function return pointers, and thus a near identical batch of code in C runs many times faster. So, you must consider the extreme effect the hardware domain has on the language domain, and vise versa.

      Failure to completely embrace the a use case (in the name of being "general purpose" hardware, yeah right) leads to retardation of progress in many respects: Notably the majority of exploit vectors is due to the moronic decision to maintain a single stack for instruction pointers and data. This is reinforced by hardware in the ENTER and LEAVE instructions themselves. You see, the instruction pointer can not be directly manipulated, the humans at least got that part right, but then they failed to create a separate dedicated return instruction pointer stack. Granted the instruction pointer is isolated not for security's sake, but you can see why it's foolish to embrace a function-stack approach and not also isolate the return pointers thereof from the parameter data.

      Hardware even dictates the type of OS design that is practical: A single bit of execution privilege ring (Kernel or User) on ARM means it will be host to monolithic kernels due to their hardware supported security offerings. On x86 I have 2 bits (4 rings) thus can create microkernels and isolate plugins from user processes too: (Kernel, Driver, User, Plugin). These can run on ARM, but I sacrifice my guarantees in many respects -- Treating drivers, users, and plug-ins as all user mode processes using memory for isolation can create unnecessary complications and performance penalties. The po

    14. Re:That is a beautiful start of a ... by Greyfox · · Score: 1
      Mastery in Lisp, Perl, C++ and Java comes from understanding the data, how it works and flows in the system. Understand C++ pass-by rules (pass-by copy, reference and pointer) and how you manage object lifetimes and you are well on the road to mastery. Understand the pass-by rules in perl (how to create a reference and when to use one of the magic characters to reference a memory location) and you'll be further along in its mastery than I am. Understand how to build and iterate a list in Lisp and realize that code is just another list and you will be well on your way to enlightenment. You don't attain mastery in Lisp, you attain enlightenment. Once you become an enlightened Lisp programmer, all your other programming becomes substantially more enlightened as well. More on that in a moment. Understand pass-by rules in Java (everything's a reference except for those things which aren't,) and how you write an entry point to a program and you'll be well on your way in Java. And I don't mean understand as in "Yeah, that thing's a reference," but to actually know what that means and know how you can leverage it being a reference to your advantage. When you can take the reference from my hand and realize it points to the same object, then you will truly be a master.

      I have a lisp textbook from the 70's. I believe the latest copyright date in there is 1978. In this textbook the author talks about block world (If you google on "MIT lisp block world" you can find some information about the project.) One of the things he does is builds a English parser that can take simple commands and perform a task in the world. You could also query the system "Why did you... (perform some action)". How he accomplishes this is he creates a series of task mementos which he builds in a tree and then executes. Now this was years before the design patterns craze, and he doesn't call them mementos, but that's what they are. In 1978. I got this textbook as part of a week-long introduction to Lisp. I didn't understand it (or become enlightened) at the time. That took a good while longer. Every so often I go through a phase where I like LISP and want to do something with it. This usually lasts right up until I realize I'll have to write my own libraries for EVERYTHING, then I lose interest and wander off.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    15. Re:That is a beautiful start of a ... by Jane+Q.+Public · · Score: 1

      How easily one can get developers who are both familiar with the domain AND the language, or know a language so close that transitioning is easy (i.e. why most languages looks like C) is just as critical as in how well a language fits a project as the technical aspects.

      I agree with you in general, but I don't agree that most important languages look like C. That's why they are used in different areas for different things. Sure, there are a lot that do look like C. But not many of the most often-used languages.

      If I'm going to carry around a toolbox, I'm going to carry around a wrench, a screwdriver or two, a hammer, etc. I'm not going to carry around all wrenches, or all hammers, or all screwdrivers.

    16. Re:That is a beautiful start of a ... by narcc · · Score: 1

      There are a few truly awesome languages. Languages that can be called beautiful, rarer still. LISP is, without question, chief among them.

      Unfortunately, they tend to be impractical. LISP, for example, is undoubtedly a write-only language. That's probably why everyone loves it, but hardly anyone actually uses it.

    17. Re:That is a beautiful start of a ... by narcc · · Score: 1

      but it was created to be a "glue" between web pages and Java,

      What?

    18. Re:That is a beautiful start of a ... by slim · · Score: 1

      Absolutely spot on. People need to embrace polyglot programming, using the right too for the job, and learning how best to make languages interoperate.

      One great example is the various JRE-based scripting languages - jRuby, Jython, Groovy. You can be really productive in these languages, but sometimes you reach a point where you prefer the precision of Java. I did this when writing a server that did some crypto. Everything was Groovy except for some bit-twiddling stuff wrapped around BouncyCastle, which I wrote in Java because for that component I benefited from static type checking in the IDE.

      Of course BouncyCastle use JNI to interface with OpenSSL, so that's three languages in one app.

    19. Re:That is a beautiful start of a ... by aethelrick · · Score: 1

      well said sir, if I had mod points you would be getting some

    20. Re:That is a beautiful start of a ... by Xest · · Score: 1

      "It shouldn't be a flame war. In order to make a meaningful comparison between two programming languages I think you need to have a high level of skill in each, and write two feature-equivalent non-trivial programs in each."

      I'm not even sure this is true, each time you write a program you'll learn something about how you could've done it better, so once you've written it once in one language there's a danger that writing it again in another language you'll implement the more efficient solution you should've implemented the first time around but didn't realise until it was too late.

      If the application is non-trivial it'd be quite tough to make sure you weren't developing faster with the second language only because you'd learnt from the mistakes and already figured out solutions to the hard problems that slowed you down with the first language.

      Even if you insert a third language, to figure out most of the issues first before doing the other two languages, I think you'll still find efficiency gains on even your second iteration so the problem still exists albeit to a lesser extent. You could probably keep doing this, if you write it in, what, 5 languages and then write it in the two more you actually want to compare you may by that point have a fairly realistic comparison because you'll know your efficient solution inside out by that point such that implementation should be less about figuring out a more efficient solution and problem solving and just about writing the code but even there it's not guaranteed, you could overlook efficiency improvements across many iterations potentially.

      I've thought about this many times before and it's pretty hard to come up with a reasonably objective manner of testing languages like this because not only do you have the problem I just mentioned but also the problem of the fact some languages handle some problems better than others that someone else also mentioned to you in response. Eliminating these problems and coming up with a genuinely objective test is going to be difficult, if not impossible.

    21. Re:That is a beautiful start of a ... by Xest · · Score: 1

      "Sure, there are a lot that do look like C. But not many of the most often-used languages."

      What? The most often used languages are C++, Java, C#, PHP, Javascript, Objective C. All of these look a lot like C.

      About the only most commonly used languages that don't are SQL and Visual Basic.

    22. Re:That is a beautiful start of a ... by Xest · · Score: 1

      Thank you for a thought provoking post.

      "Soon the vectorization problem will cause humans to derive the minimal atomic expressions of such a language and encode it into hardware (thus the requirement for it to be self scripting i.e. self compiling and self hosting)."

      Aren't you effectively just going to end up right back at something like lambda calculus?

    23. Re:That is a beautiful start of a ... by Doomsought · · Score: 1

      And then there are the things which aren't exactly programming languages, but aren't exactly not: SQL

    24. Re:That is a beautiful start of a ... by hackertourist · · Score: 1

      The real problem is that different languages are often created to solve different problems.

      I wonder if this could be mitigated by not treating a problem as an excuse to build an entirely new language. Build an awesome library for (choose a decent basic language) instead, and you get new functionality without fragmenting the playing field even more.

    25. Re:That is a beautiful start of a ... by Anonymous Coward · · Score: 0

      int flamewar;

    26. Re:That is a beautiful start of a ... by Anonymous Coward · · Score: 0

      Ok. Start:

      C (or similar) for high level stuff.
      Assembly for low level stuff.

    27. Re:That is a beautiful start of a ... by Jane+Q.+Public · · Score: 1

      "The most often used languages are C++, Java, C#, PHP, Javascript, Objective C. All of these look a lot like C."

      Huh? Obviously the C-based languages do. I'm not an idiot.

      As for the others, I dispute this very much. PHP "resembles" C? In what universe? And Java? Hardly.

      "About the only most commonly used languages that don't are SQL and Visual Basic."

      Nonsense. Look at what the most commonly used languages are today. (And anybody who tries to use SQL as a "general purpose" language probably IS an idiot.)

      What about Lisp? What about Pascal (Delphi)? What about Python or Ruby?

      And as for "popularity", you have to take that graph with a grain of salt. Github might be a decent indicator of popularity, but Stack Overflow is a weak one, if at all. All THAT traffic is about problems. The number of problems with a language, I daresay, is only a weak indicator of its popularity. I mean ActionScript? Really? Who in their right mind would include ActionScript as among the most "popular" languages?

    28. Re:That is a beautiful start of a ... by brausch · · Score: 1

      It's just that there are so many different kinds of problems. :-)

      I personally like the C-style languages, and actually use the plain C subset of C++ for much of my programming. And with the wide variety of libraries available for C/C++ you can solve most any problem. However, different languages, and more specifically, the different ways of thinking that they encourage, are useful. It's no longer just procedural vs object or compiled vs interpreted, there are lots of different old and new approaches. (Think Prolog or Erlang.) Each approach has strengths and weaknesses for different kinds of problems.

      I agree with your basic implication that there are probably too many languages. But, like evolution, some species/languages will thrive and some won't. Personally, I'm glad there are lots of choices. It's like literature; I like reading sci-fi, but I'd be unhappy if that was all there was available to read. I also like mysteries, westerns, historical fiction, non-fiction, etc.

      --
      "Almost every wise saying has an opposite one, no less wise, to balance it." - George Santayana
    29. Re:That is a beautiful start of a ... by Xest · · Score: 1

      I guess you're not much used to the world of software development, your lack of understanding of the subject screams that, so I'll explain it to you.

      "As for the others, I dispute this very much. PHP "resembles" C? In what universe? And Java? Hardly."

      When people say a language resembles C, they're talking about the fact that bracket usage, brace usage, and keyword usage is often very similar. This is why PHP and Java are referred to as C-like languages. I find it rather amusing that you class C# as a C-based language, yet not PHP when half of PHP's common library just wraps the C standard library. In this respect C# is a larger break from the foundations of C than even PHP is. If you can't see the similarities between Java and C then you really need to learn both C and Java syntax before commenting, the use of braces, brackets, and various keywords are identical to C in many many ways. This isn't coincidence, this is intentional, it's intentional because C used to be the single most popular programming language on the planet and language designers over the years have determined that all that teaching and prior knowledge needn't just go to waste.

      "Nonsense. Look at what the most commonly used languages are today."

      What exactly do you think the most commonly used languages are today? I ask because I listed them but you oddly seem to think they're something very different.

      "(And anybody who tries to use SQL as a "general purpose" language probably IS an idiot.) "

      Well given that no one's claimed that then I'm not sure what your point is, you simply spoke of the "most commonly used languages today" of which SQL is one of the most prominent.

      "What about Lisp? What about Pascal (Delphi)? What about Python or Ruby? "

      What about them? Lisp isn't used for anything much in the real world even if it's a fantastic academic language, Pascal and especially Delphi have been basically dead for coming up to two decades now, and Ruby is still and also-ran, it's just not as popular as the languages I listed. It's sat on the fringes certainly, but it's just not making that last bit of traction needed to break into the list of most prominent languages. Python is about the only one that's really getting there, but it's still not quite reached a point of being one of the mainstream languages like those I listed.

      "And as for "popularity", you have to take that graph with a grain of salt. Github might be a decent indicator of popularity, but Stack Overflow is a weak one, if at all. All THAT traffic is about problems. The number of problems with a language, I daresay, is only a weak indicator of its popularity. I mean ActionScript? Really? Who in their right mind would include ActionScript as among the most "popular" languages?"

      What graph are you talking about? My list was based on the languages that real actual businesses both use and are recruiting for because that's a far more solid indicator of actual popularity. No one is looking for Pascal/Delphi developers anymore, some companies look for the odd Lisp and Python programmer, but far and away the majority of recruitment is still for Java, PHP, C#, Objective-C, Javascript and C++ developers. You can also simply look at what half the software that's around is developed in, hint: it's not Pascal, or Lisp. You may use the odd Ruby web application and the odd Python application, Google for example has some Python holding it together (though it also has some Java and C++ too).

      "Really? Who in their right mind would include ActionScript as among the most "popular" languages?"

      Maybe if you had any understanding of the field you'd realise that ActionScript is used by Flash, and Flash is still insanely popular for many internal things, it powers the e-learning programmes for most companies in the world covering various things ranging from health and safety to regulatory compliance. It may well be listed higher than it should be but I think you grossly underestimate it's usage.

    30. Re:That is a beautiful start of a ... by Jane+Q.+Public · · Score: 1

      Hint: OP has links to the graphs that are being discussed here. I don't think they're "something very different". I was referring to the same references OP was.

      And you can continue your tirade as long as you like: I still think that if YOU think PHP even vaguely "resembles" C, you are from a different world than the one I live in.

    31. Re:That is a beautiful start of a ... by Xest · · Score: 1

      That's because you live in a world where Pascal is a commonly used language and don't know much about the topic.

      Just because PHP has spurious use of $ scattered around and a bunch of new keywords doesn't change the fact it's general code style, 90% of it's operators, and most of it's fundamental keywords are taken directly from C, nor does it change the fact that some PHP functions pretty much map directly to underlying C standard library calls. Even the keywords that aren't the same are mostly those that were bodged on for OO and mirror the C++ keywords instead.

      I can only guess if you think PHP isn't a C-like language then you've never actually seen a language that isn't C-like. I'll give you a hint - things are very different.

    32. Re:That is a beautiful start of a ... by Anonymous Coward · · Score: 0

      That's not even a meaningful comparison. The time it takes to become an expert, and what bad practices it may lead you to internalize along the way, are other vectors. Also, what kinds of problems you can solve at VARIOUS levels of expertise.

    33. Re:That is a beautiful start of a ... by DuckDodgers · · Score: 1

      I'm in the process of learning Lisp, especially - but not limited to - the dialect Clojure. But I have a long way to go before I'm writing non-trivial applications.

    34. Re:That is a beautiful start of a ... by DuckDodgers · · Score: 1

      I don't think the prevalence of C-like syntax means anything good or bad for the value of C-like syntax. I think it's pure momentum. It's easier to sell lazy programmers and the Pointy-Headed-Boss on moving from C to C++ when you can show them similar syntax. That doesn't mean C++ is the best tool for what they're trying to accomplish - it may be the best tool, but the familiar syntax is a factor that sells the change. Likewise, it's easier to sell lazy programmers and the Pointy-Headed-Boss on moving from C++ to Java or C++ to C# when you can show them similar syntax.

      Likewise, functional programming has a lot of hype these days, but it's still not taking the industry by storm. Whether it's a waste of time, or decent but absurdly over-hyped is beside the point. Adoption of it is moving slowly in part because going from C-like syntax to Haskell, Scheme, Clojure, Ocaml, or Erlang is difficult.

    35. Re:That is a beautiful start of a ... by Greyfox · · Score: 1
      You can just iterate through a list and pop elements off with car and get the rest of the list back with cdr. So you can put an arbitrary structure in a list and retrieve it later. If you use mapcar, your lambda will examine all the elements in the top level of the list at some point. You still have to know approximately what structure the data in the list has -- you decide that in advance. So if you wanted a list of vehicles of... some sort, and each vehicle would have all the names of the passengers of that vehicle, then you could use mapcar to iterate through the list of lists and then use a mapcar on each list your lambda sees in order to print the names of the passengers.

      (setq vehicle-list '((bob) (fred alice) (earl)))
      (def print-vehicle (arg)
      (print "passengers in vehicle: ")
      (mapcar (lambda (passenger) (print passenger " ")) arg)
      (print "\n")
      )

      (mapcar (lambda (vehicle) (print-vehicle vehicle)) vehicle-list)

      Of course, then you start wanting to do things like add the type of vehicle as something you print out, so you need to add that to your vehicle. Maybe you want to have your type as a top level element of each vehicle as the passengers are now, and then make the passengers a contained list that you can break out with (car (cdr vehicle)) and then mapcar over. That's more-or-less how simplistic lisp object systems would build objects.

      The methods vary depending on what type of lisp you speak. You may notice that I have an emacs accent. Seems like that's the easiest lisp to get into.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    36. Re:That is a beautiful start of a ... by DuckDodgers · · Score: 1

      I can follow what you wrote, I typed most of the code in Conrad Barski's enjoyable Land of Lisp text into the REPL myself and watched it all run. But for better or for ill if you lay out the requirements for a medium size application and toss it in front of me, I can pretty quickly architect it in my mind. I'm not at that point with Lisp or Clojure, not yet... and I'd rather be there with Lisp or Clojure than with Java. :)

  3. 99 bottles of beer by jbolden · · Score: 5, Informative

    There is already a pretty good collection http://www.99-bottles-of-beer.net/

    There is also a website with the implementations of the Perl cookbook in a bunch of languages: http://pleac.sourceforge.net/

    1. Re:99 bottles of beer by Savage-Rabbit · · Score: 5, Insightful

      There is already a pretty good collection http://www.99-bottles-of-beer.net/

      There is also a website with the implementations of the Perl cookbook in a bunch of languages: http://pleac.sourceforge.net/

      Where performance is concerned I'd go for something like the Debian Benchmarks game. The time taken for this benchmark task, by this toy program, with this programming language implementation, with these options, on this computer, with these workloads. With enough people participating in the pissing contest you eventually get things optimized to hell and the wheat is separated from the chaff.

      http://benchmarksgame.alioth.debian.org/
      http://benchmarksgame.alioth.debian.org/play.php

      As for productivity, that's harder since this is highly subjective. While you can generally postulate that coding in non typed scripting languages where you don't have to worry about memory management is going to be faster than coding in a typed, manually memory managed language like C. But what happens when you compare more similar languages like Python vs. Perl? Your productivity in a language is highly dependent on your experience with it, how fast you are at typing, how intuitive the syntax is to you.... etc... But different programmers can have different issues with languages. In Perl for example the syntactic freedom can actually lead some programmers to write bugs bugs into their code because they are used to languages with a more nailed down syntax.

      --
      Only to idiots, are orders laws.
      -- Henning von Tresckow
    2. Re:99 bottles of beer by plover · · Score: 4, Insightful

      Productivity is a tough one, but it's by far the most important. That's what we get paid for.

      A good competition might be to start with a functional test, and just let developers "swing away" at it. Or you might add real world constraints that development organizations want to see, such as requiring 95%+ code coverage with unit tests, keeping complexity below 12, and it must pass lint / pmd / fxcop / other static code analysis tool with no warnings or errors. Maybe it has to pass a code review, too. The functional test would have to pass ensuring it does what it's supposed to do, and maybe it would need to pass a fuzz test to ensure it doesn't break under strain.

      And you would need to run different contests for different categories: web apps, services, operating systems, embedded systems, phone apps, etc. Not all problems are created equal.

      --
      John
    3. Re:99 bottles of beer by jbolden · · Score: 4, Interesting

      Terrific suggestion regarding Debian benchmark!

      There are some pretty good stats on productivity from Cocomo II group: http://csse.usc.edu/csse/research/COCOMOII/cocomo_main.html. First off you measure in terms of normalized lines of code which ends up being close to the same across languages. From there you can examine how large programs are in varieties of languages in terms of normalized lines of code and you get productivity measures:

      Assembly .4
      C 1
      COBOL 1.5
      C# 2.5
      Java 2.5
      Visual Basic 4.5
      Perl 6
      SQL 10

      etc...

      Perl vs. Python for relatively similar levels of experience I'd assume the differences in productivity is going to be close to 0. You seem to need rather dramatic differences on high/low level scale to get much of a productivity boost. So for example C# and Java are both 2.5; Perl and Smalltak are both 6.

    4. Re:99 bottles of beer by DavidHumus · · Score: 1

      The Debian Benchmarks game often over-specifies the problem by requiring a particular approach.

    5. Re:99 bottles of beer by Anonymous Coward · · Score: 0

      These numbers cannot be correct - modern Visual Basic (from version 7 aka VB.NET onwards) is pretty much identical to C# except for the syntax. You can almost convert from one to the other with a few regular expressions. Except for a little bit of old VB baggage (that if anything makes it less productive than c#) they are identical in terms of features and capabilities and there's just no way one could be considered significantly more productive that the other.

    6. Re:99 bottles of beer by Anonymous Coward · · Score: 0

      Now tell us why the benchmarks game requires a particular approach ;-)

      http://benchmarksgame.alioth.debian.org/play.php#contest

    7. Re:99 bottles of beer by jbolden · · Score: 1

      I suspect that dwheeler below is correct this was Visual Basic 4-6 not VB.NET. Old VB was a much higher level language, especially comparatively

    8. Re:99 bottles of beer by Xest · · Score: 1

      "While you can generally postulate that coding in non typed scripting languages where you don't have to worry about memory management is going to be faster than coding in a typed, manually memory managed language like C."

      But even this falls down when you factor in size of application and long term maintenance/debugging.

      I have real world experience of delivering and maintaining large projects in .NET, Java, C++, Javascript, and PHP and whilst PHP is deceptively quick to write code with it's advantage is long lost when it comes to debugging and the disparity grows exponentially as the size of project increases. The problem is that because more errors are caught at compile time with compiled languages and because type conversions are simple enough to be trivial or are explicit much fewer bugs make it through to testing than do with languages like PHP where issues can survive longer and cause more of a testing, debugging, and maintenance headache.

      I've thought long and hard about an objective way of measuring productivity with languages and I just don't think there is one, key problems are:

      - Different languages excel at solving different problems, coming up with a test project that benefits no language over another is potentially impossible

      - Programmers improve over time, and each time they implement a solution to the same problem they'll do it more efficiently so you can't just do the same project in two different languages - later attempts will be written more efficiently than earlier attempts

      - If you do a different project with each language it's hard to claim that the projects were identical in terms of scope to compare efficiency but different enough to avoid the same/near problem solving advantage efficiency above after each attempt

      - You could use multiple programmers to eliminate the fact that a programmer would work faster the second time around on the same problem, but then you just create a new problem - no two programmers are identical in terms of the speed at which they solve every problem

      - Small projects can solve some of these problems, but then you get the aforementioned problems mentioned above where the pitfalls of dynamic languages like PHP and the benefits of compiled languages that change the game in terms of efficiency in the long term come to light

      - Do you factor in tools or should everything be written in Notepad? Javascript and C# don't feel much different to write syntactically but throw Visual Studio compared with the fact that just about every Javascript editor is relatively shit and C# has a massive efficiency advantage. Are you measuring the full toolchain or just the language?

      I don't think there is a solution to these problems, I don't think you can objectively and scientifically compare language efficiency to a reasonable degree. The best you can do is get a personal feel for the problem and even that might just depend on you personally - I genuinely find C# and Visual Studio the most efficient toolset for developing the sorts of software I've had to develop, but that's simply because I'm primarily used to OO languages and because I primarily develop on and for Windows. Other developers are going to have completely different knowledge sets and so be used to and more efficient than I am in other toolsets. You can theorise over some generalisations, for example, I do think as a generalisation that compiled languages are better than dynamic languages for large projects for the aforementioned problem than the ease and speed of debugging compiled applications grows much more linearly than that of applications written in dynamic languages where bugs can come to light much later in the process but it's hard to even prove that sort of assertion scientifically - I can only go on my extensive experience of that being the case and the fact that the logic behind the reason for that makes a lot of sense- that bugs caught both earlier and automatically due to the inherent traits of the tool chain are bugs that are less problematic, and hence result in less lost time.

  4. Simple Answer... by Anonymous Coward · · Score: 2, Insightful

    ...Some languages are good for some things, and other languages are good for other things. Think LISP.

    1. Re:Simple Answer... by i_ate_god · · Score: 0

      What about PHP?

      --
      I'm god, but it's a bit of a drag really...
    2. Re:Simple Answer... by Qzukk · · Score: 0

      PHP is unparalleled for people who want to make a webpage without having to understand HTTP.

      And that's about it.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    3. Re:Simple Answer... by glavenoid · · Score: 5, Funny

      PHP is unparalleled for people who want to make a webpage without having to understand HTTP.

      Or PHP for that matter...

      (...kidding...)

      --
      I, for one, am looking forward to the inevitable /. beta rollout fallout.
    4. Re:Simple Answer... by ls671 · · Score: 2

      Well, I do a lot of java programming and young jsp/servlet developers often know nothing about HTTP.

      --
      Everything I write is lies, read between the lines.
    5. Re:Simple Answer... by Anonymous Coward · · Score: 0

      It's good for writing bad code.

    6. Re:Simple Answer... by K.+S.+Kyosuke · · Score: 5, Funny

      Master Po: The Tao gave birth to machine language. Machine language gave birth to the assembler. The assembler gave birth to the compiler. Now there are ten thousand languages. Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao. But do not program in COBOL, Grasshopper, if you can avoid it.

      Grace Hopper: My name isn't Grasshopper, and I will program in whatever I want!

      --
      Ezekiel 23:20
    7. Re:Simple Answer... by phantomfive · · Score: 1

      PHP is unparalleled for people who want to make a webpage without having to understand HTTP.

      How does knowing HTTP help you at all when making a webpage? I've written my own HTTP server, but that doesn't seem to help my web programming at all.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:Simple Answer... by Anonymous Coward · · Score: 3, Insightful

      Why kidding? That is one of the strongest points for PHP and VB. Those are languages that you should recommend to someone who wants to write something without learning how to program.
      Sure, the result isn't something you should take to production but any programmer who deals with people who doesn't program knows that there aren't a shortage of ideas that it would be wasteful for a programmer to implement.
      I think that the support to throw quickly throw together unmanageable crap is a bit under-appreciated among programmers. Sometimes a program is only meant to be ran once.

    9. Re:Simple Answer... by Anonymous Coward · · Score: 0

      How does knowing HTTP help you at all when making a webpage? I've written my own HTTP server, but that doesn't seem to help my web programming at all.

      Name one other programming language whose CGI interface does not require you to return the HTTP response code (eg HTTP/1.1 200 OK, half credit if you only have to call set_response(200) and it comes up with the HTTP/1.1 and OK parts itself) and set your own content headers for a proper response.

    10. Re:Simple Answer... by plover · · Score: 3, Informative

      Srsly? Do you know how stupid executives are? "Hey, that web page that my nephew wrote, it does what we need, put it into production." A week later you get this email: "We need you to maintain it - add a loyalty registration page to this thing here, and we're getting complaints about response time..."

      --
      John
    11. Re:Simple Answer... by K.+S.+Kyosuke · · Score: 1

      Why CGI interfaces? You don't need to use CGI at all. Perhaps you even shouldn't these days. Also, would this satisfy your criteria?

      --
      Ezekiel 23:20
    12. Re:Simple Answer... by RabidReindeer · · Score: 1

      Srsly? Do you know how stupid executives are? "Hey, that web page that my nephew wrote, it does what we need, put it into production." A week later you get this email: "We need you to maintain it - add a loyalty registration page to this thing here, and we're getting complaints about response time..."

      And someone from China just hacked it.

      PHP is also good for people who want to make a webpage without understanding web security.

    13. Re:Simple Answer... by RabidReindeer · · Score: 4, Interesting

      PHP is unparalleled for people who want to make a webpage without having to understand HTTP.

      How does knowing HTTP help you at all when making a webpage? I've written my own HTTP server, but that doesn't seem to help my web programming at all.

      You would not believe how many people think that HTTP is just like old-time conversational remote applications programming. They think that once you connect to the server you stay connected and 2-way asynchronous communications are the norm. They don't understand that HTTP is a touch-and-go protocol with a strict 1-1 request/response cycle.

    14. Re:Simple Answer... by skids · · Score: 2

      Perl5 CGI::. text/html and response code of 200 is the default returned by header().

      There are also tricks to get PHPish code-embedded-in-static-content look and feel from Perl, but mostly people don't use that due to a general recognition that only those crazy PHP coders want to deal with that level of clutter and it's better to keep the markup inside your quoting constructs.

      Anyway, futher lambasting PHP would be BTDT at this point.

    15. Re:Simple Answer... by Anonymous Coward · · Score: 0

      Give me a language with "built in" web security.

    16. Re:Simple Answer... by Anonymous Coward · · Score: 0

      Malbolge FTW.

    17. Re:Simple Answer... by Anonymous Coward · · Score: 0

      Bravo. I did not see that coming.

    18. Re:Simple Answer... by K.+S.+Kyosuke · · Score: 3, Insightful

      They think that once you connect to the server you stay connected and 2-way asynchronous communications are the norm.

      That's what WebSockets are for, after all. ;-)

      --
      Ezekiel 23:20
    19. Re:Simple Answer... by Anonymous Coward · · Score: 0

      Also, would this satisfy your criteria?

      Unless io.WriteString() automatically prepends the appropriate HTTP headers, you've linked to an example of not only having to understand HTTP to write hello world, you've got to write your own webserver, and your example does so incorrectly.

      The other guy with Perl had the right answer, I forgot that there were languages predating PHP that didn't fall into the trap of measuring hello world in kLOC to qualify themselves as ENTERPRISE . JSP would probably have also been an acceptable answer, java measures its worth per thousand lines of XML rather than source code.

    20. Re:Simple Answer... by Anonymous Coward · · Score: 0

      php, that is LAMP, is a success because it has been free and good enough from the beginning, so it has been adopted by the first hosting resellers, so it is easy to deploy (I said deploy, not securely deploy).
      As a language by itself is not particularly impressive. If it had been, it would be used as a general purpose scripting language at the expense of perl python ruby, and as a web scripting language at the expense of javascript. Instead I see the opposite trend, those languages being used instead of php in lots of interesting frameworks and apps.

    21. Re:Simple Answer... by bzipitidoo · · Score: 2

      Well HTTP/XML/SGML is a terrible language. It's overly verbose and redundant and overly complicated.

      The verbose part is that closing tags must repeat the name used for the opening tag. The designers thought that would make it more human readable, and it did not. It just added clutter, ironically making it less human readable. There are several other features that add to the bloat, but that's the big one.

      And as for excessive complexity, how about properties? Why couldn't that have been handled with specially named tags, instead of introducing a whole separate layer of further syntax to parse? Instead of <H1 align="center">header text</H1> should have <H1><align>center</>header text</>. Plus, they weren't even consistent in using that syntax solely, as there are such tags as center, and b, u, and i for bold, underline, and italic. It wasn't necessary or useful to enshrine this huge distinction between data and metadata in the syntax like that.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    22. Re:Simple Answer... by RabidReindeer · · Score: 1

      They think that once you connect to the server you stay connected and 2-way asynchronous communications are the norm.

      That's what WebSockets are for, after all. ;-)

      Let's wait for them to get a handle on traditional HTTP first.

    23. Re:Simple Answer... by Anonymous Coward · · Score: 0

      HTTP is a touch-and-go protocol with a strict 1-1 request/response cycle

      I'm not sure you understand HTTP as well as you think you do.

    24. Re:Simple Answer... by RabidReindeer · · Score: 1

      Well HTTP/XML/SGML is a terrible language. It's overly verbose and redundant and overly complicated.

      One of these things is not like the others.

      Methinks you've confused HTTP with HTML.

      One is a markup language, but the other is a communications protocol.

    25. Re:Simple Answer... by i.r.id10t · · Score: 1

      Yup - the language is your tool. And there are lots of similar tools, but sometimes one particular one is best suited for the task. For example, unscrewing the machine screws on the back of a computer case - just about any phillips head screwdriver will work. Or, in a pinch, a very small flat head. Or even a pair of pliers - it would be messy (I'll write a HR management system in bash shell scripting and use mysqlclient commands to do it all!) but it would work, possibly with a little brute force. But some uses - screws on a very fine shotgun, etc. you want the bit style that doesn't mar, fits in the screw slot exactly, etc.

      --
      Don't blame me, I voted for Kodos
    26. Re:Simple Answer... by jmcvetta · · Score: 1

      Unless io.WriteString() automatically prepends the appropriate HTTP headers, you've linked to an example of not only having to understand HTTP to write hello world, you've got to write your own webserver, and your example does so incorrectly.

      The example works correctly. From the docs:

      If WriteHeader has not yet been called, Write calls WriteHeader(http.StatusOK) before writing the data.

    27. Re:Simple Answer... by bzipitidoo · · Score: 1

      Ack, slipped up. Wonder if the gp meant HTML, since this is a discussion about languages, not protocols.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  5. That's funny by StripedCow · · Score: 2

    My New Year resolution is to design and implement a new programming language every week.

    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
    1. Re:That's funny by i+kan+reed · · Score: 1

      I'm sorry, but to count as "new" you have to have something besides replacing the keyword "for" with "analsex" in ansi C.

    2. Re:That's funny by Anonymous Coward · · Score: 0

      Ah, the 'piano teacher' approach. You just need to stay one language ahead of Mr Dawson.

    3. Re:That's funny by Anonymous Coward · · Score: 0

      Because the piano teacher is building pianos?

    4. Re:That's funny by Anonymous Coward · · Score: 0

      <Moe Howard>You know, for a moron you're pretty stupid.</Moe Howard>

      A piano teacher only has to stay one lesson ahead of their student.

    5. Re:That's funny by Bucky24 · · Score: 1

      To be honest that's how I read TFS at first....

      --
      All the world's a CPU, and all the men and women merely AI agents
    6. Re: That's funny by Anonymous Coward · · Score: 0

      Each should be implemented in the previous week's language, of course :)

  6. Mark TFA troll by HornWumpus · · Score: 1

    Is dice this desperate for clicks?

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    1. Re:Mark TFA troll by Anonymous Coward · · Score: 0

      Yes. More rehash.

  7. "...strengths of certain languages" by jdeisenberg · · Score: 4, Insightful

    And therein lies the problem of comparisons. An extreme case: a person writing a program that involves concurrency among hundreds of processes will probably be more productive in Erlang than in Perl, but a person writing a program that does massive amounts of text manipulation will be more productive in Perl than in Erlang, because of what the languages were designed for. It's somewhat like asking which is a better tool, a hammer or a screwdriver. A lot of it depends on what you're trying to build.

    1. Re:"...strengths of certain languages" by jbolden · · Score: 1

      Moreover even between similar languages superiority can be hard to measure. Take for example the very complex and long arguments on garbage collection. Or on lazy vs. eager evaluation: where lazy can be crazy powerful but in exchange can induce algorithms / code that often become quadratic in time and memory. And then on top of all that there are the cultural issues.

      Better is simply not a granular enough metric.

    2. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 1

      If he writes a program that solves the same program in 56 different languages it'll give him a better understanding of this concept, he'll learn which languages are screwdrivers and which are hammers. If he writes a program geared towards the strengths of each language it will avoid this "problem". Either way he'll learn something.

    3. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 0

      Python with the numpy library does absolutely everything. It's elegance, speed, and simplicity all rolled up into an open source package. Brilliant! ... no need to learn anything else. You can even use it for web stuff.

    4. Re:"...strengths of certain languages" by phantomfive · · Score: 1

      Python with the numpy library does absolutely everything. It's elegance, speed, and simplicity all rolled up into an open source package. Brilliant! ... no need to learn anything else.

      I know people who spent their entire [programming] lives knowing Javascript and nothing else, but why? Why would you want to limit yourself that way? Suddenly it seems Python has become the hot new language.

      What's next, a Python Machine?.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 5, Interesting

      As someone who programs professionally in many languages, with about 85% of the last few years at the day job in Python (+ many years with 2 and now 3), I can attest Python has its merits, but elegance is hardly one of them. The language, standard libs, and popular third party tools are among the lower-tier of anything I've ever used.

      If we forget all the other faults of python, consistency and predictability are hardly core advantages of python (no, dicts/kwargs/args aren't elegant at all). If we think about other things:

      -the package management is atrocious (even with virtualenv), but more a tooling than a language issue you could say
      -there still isn't what I would call great IDE support given the limitations of parsing a language like Python
      -the language has changed from major versions in some pretty drastic ways, which hardly points to good design overall vs. other languages
      -unicode in python 2 wasn't even the default...wtf
      -the "flexibility" leads to wildly different ways of handling things
      -the back and forth on things like handling lambdas and anonymous functions elegantly over the years is hardly, well, a sign of elegance
      -rampant abuse of modules vs. classes
      -__init__ is basically a huge wtf
      -problems with circular imports

      If you want something that is actually elegant, I'd suggest starting with a number of research languages. If you want something that has at least been used in major projects and proven in the field, even if not the most popular, go ahead and give Smalltalk, Lisp, and consequently Clojure a try if you seek elegance. Sorry, but I have to say Python in comparison is a toy compared to any of these languages. I'd gladly shoot the language in its face if it were legal and never wish it on my worse enemy, but hey it's a god send compared to php, perl, and many others so there's at least that.

      What I tend to find is that programmers who have never used languages that can handle data structures using the core libraries and syntax of the language are easily impressed. Python list comprehensions are a good example of something that aren't that great, but "wow" if you've never seen anything that can operate on sequence or blocks before. Typically these people were C, C++, PHP, VB, or other programmers. People who worked in Lisp and/or Smalltalk are wondering how other functional, object oriented, and hybrid languages could seriously screw things up so bad when they had the benefit of hindsight.

    6. Re:"...strengths of certain languages" by skids · · Score: 2

      The metric should be productivity with a modifier for the language's impact on the general mental and emotional well-being of the coder.

    7. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 1

      Moreover, 1 week is not nearly enough time to evaluate a language. Computer languages are professional tools and, as such, should not be optimized for the first-use experience. The best computer languages optimize for the case where the user has spent the time to understand and become comfortable with the philosophy and concepts of the language. If you make such a shallow evaluation of the languages, you're likely to undervalue the languages that get better and more expressive in the hands of an expert in that language.

    8. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 0

      ^ This. The key isn't just, "write the same program in 99 languages." It's that every time you write anything in any language, 10 things are going on in the background that you didn't write. And depending on how you write, they may or may not happen. Completely beside the question of, "right hammer for the right job," it's that with some hammers, when you swing it, it turns out it's also turning a screw. Garbage collection is a common complaint against Java, but really, dynamic dispatch in any object-oriented language is inherently a whole other procedure that just doesn't happen in C. The two cannot be compared by any known measures.

    9. Re:"...strengths of certain languages" by jbolden · · Score: 1

      That's exactly the point. As the level of the language goes up you start thinking into terms of highly abstracted algorithms. Low level procedures become entirely opaque even to the programmer. I can see the Assembly code when I write C. I have no idea what the engine is doing in Visual Basic.

    10. Re:"...strengths of certain languages" by lgw · · Score: 4, Informative

      I only programmed in Python for about 6 months professionally, but I want to echo the experience. Python blows goats for large projects, for all the reasons mentioned above. Python is awesome for writing small projects (say, a programmer-year or smaller) in a way that's real, maintainable code and not a throw-away script.

      Ultimately, I don't think you can have a language that good for both small and large projects. Large projects need structure that just gets in the way for smaller efforts.

      Also, I have to agree with the :list comprehension" thing - all modern languages eliminate boilerplate for-loops for list processing (except Java - man I hate Java - but maybe it's better in Java 8?). Even C++11 now has good enough lambda support to get rid of the for loops for containers. Heck, I think even VB got the LINQ extensions that C# did to allow proper list processing.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    11. Re:"...strengths of certain languages" by crunchygranola · · Score: 1

      ...

      Ultimately, I don't think you can have a language that good for both small and large projects. Large projects need structure that just gets in the way for smaller efforts.

      ...

      Bingo! Mod parent up!

      Python is the premier scripting language. It is far superior in usability and availability to the other options: "shell" (not a language but a collection of only quasi-compatible ones), and Perl (of VB we shall not speak). I use Python whenever I need to script something, like automating a task.

      But it is not suitable for large application development. Sure it can be done, but there are no languages so bad that someone has not built a large application with it. But maintenance of these application systems need the structure that a better designed, better thought-out language provides.

      --
      Second class citizen of the New Gilded Age
    12. Re: "...strengths of certain languages" by Anonymous Coward · · Score: 0

      That's odd. Python for me has been one of the best languages to program in and it has one of the largest package libraries, well maintained and all. It has also some of the cleanest syntax, that is for anything close to math and in combination with eg. Numpy or scipy. Same is true for web app programming where python boasts with mature frameworks, e.g Django. I can't echo your experience at all.

    13. Re:"...strengths of certain languages" by Anonymous Coward · · Score: 0

      Obviously, the hammer is the superior tool.

      You *cannot* drive a nail with a screwdriver, but you *can* pound a screw in with a hammer.

    14. Re:"...strengths of certain languages" by dkf · · Score: 2

      there are no languages so bad that someone has not built a large application with it

      Actually, there are loads of them. They're typically called toys, usually on the grounds that they lack a full interface to the OS or a proper library mechanism (you won't go very far without those). But they're still programming languages, and if you exclude them you've strongly biased your sample.

      I doubt you'll find many people who have written a web browser in Befunge...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    15. Re: "...strengths of certain languages" by Anonymous Coward · · Score: 0

      Python 85% AC here again.

      Django is a complete mess. I actually do use it all the time, along with another application I have to actively develop that uses Flask. First of all, Flask exists in part because Django itself is a bloated mess. Secondly, gave you ever taken the time to actually look at the code in Django? It is full of lots of giant methods, too much mixing DB logic with UI, and more madness.

      Django is great if you want to string together a few quick models and have an admin interface for a mysql app that is used by 10 people. If you're building an externally facing large application, such as for a startup, it's pretty god awful long-term. It is incredibly slow for one thing, especially if you use the ORM (as one might expect honestly), but even just the request overhead on your typical non-toy Django app is laughable.

      Django, and python as a whole is full of libraries that use stupid tricks and magic to make things "simpler." If you dig through a lot of libraries, you start to see tons of ways of doing the same things because the language facilities don't give you a great way to do them. This is instead passed off as "flexible" or "pragmatic." Have a look at the source of Google App Engine if you want to see another larger project that has some ugly, nasty source code for doing really simple things.

      Even the things that are "pythonic" I find revolting. I think "pythonic" seems to be an excuse for doing things that in any other language would be a wtf. For instance it's considered "pythonic" to do things like let something throw an exception and catch it a few lines later rather than trying to process something more explicitly. Exception flow programming is far from elegant IMO overhead or no overhead. Another "pythonic" thing is to send in variable amounts of params as **kwargs. OK, this can be useful sometimes, but it also tends to lead to lots of libraries with methods that take unknown parameters until you dig through the code, only to see lots of kwargs.pop and kwargs.get. Not even knowing which are required (the pop) and which are optional (get), is a huge pain. Never mind that most authors don't even do this properly to begin with.

      I could go on and on about all the things that are wrong with the language. I'll echo my earlier sentiments again - Python is a trash heap language with some magic that looks cool if you haven't been exposed to things that are actually designed and implemented better. I very much prefer to program in Python vs. many other languages, but that doesn't change the fact that I think the language as a whole is garbage. I would never consider it for a large project or much of anything else. I don't even think it's that great for shell scripting, but I can at least see how it can be readily useful and practical under those conditions.

    16. Re:"...strengths of certain languages" by umafuckit · · Score: 1

      So Python has its flaws. Every language has its flaws. The trick is to find one where the flaws don't bother you.

    17. Re:"...strengths of certain languages" by aestrivex · · Score: 1

      I'd like to point out that the non-modernized specifications of Befunge (and unlike say INTERCAL, the old Befunge-93 is probably the one that people who bother trying to program anything in Befunge actually use) are not Turing complete. Thus, whether the problem of writing a web browser in Befunge-93 is decidable or not is not at all trivial.

  8. Better metrics by Anonymous Coward · · Score: 0

    I'd write the same program each time, and time myself doing so (including trips to wikis, documentation, and forums). Then I'd rank them by time to completion.

    1. Re:Better metrics by minstrelmike · · Score: 1

      Then I'd rank them by time to completion.

      Seems simple enough but it ain't.
      Which completion--the time it took you to write the code or the time it takes the code to execute?
      If one time period is longer and the other shorter, which takes precedence?
      It is hard to devise a good test. And it's even harder to articulate the expectations thereof.

  9. Maintainability? by cjonslashdot · · Score: 4, Insightful

    In any such trial, it is important that aspects such as maintainability, reliability and securability be considered. The ability to hack out a-lot of functionality is not the only criteria that is important, unless you are building a home hobby project.

  10. First Step by Ukab+the+Great · · Score: 1

    You'll have trouble getting a consensus as to an agreed-upon operational definition of "Productivity".

  11. Maybe the *same* program? by CompSci101 · · Score: 4, Interesting

    I have this same problem -- there are a lot of interesting languages out there that I'm interested in trying, but I always keep going back to languages I already know because:

    1. I have work to do; and
    2. it's hard to objectively compare language merits in the short term or for trivial projects.

    I was thinking that the solution to this is to have one program that I understand very well implemented as well and completely as possible in a language that I feel proficient in, and have that be my reference. Then, over the course of a couple of weeks (a month?), re-implement the same program in the new language and strive for the implementation to be as idiomatic of the new language as possible. After all, if you're still thinking in the old language but just using the new one's syntax, what's the point?

    I feel like this would give you a lot of data to make a reasoned decision -- you can compare language features and how the implementation works in one versus the other; time to implementation (LOC, maybe?); how much of a mental shift the new language requires; the toolchain around the new language; etc.

    The problem is figuring out what the reference app is, and having the stomach for implementing it over and over again. Tetris, maybe? ;)

    But, back to the resolution (and partially touched on) -- I don't think a week is enough time. A month is even cutting it close, IMO.

    C

    --
    The Sun is proof that we can't even do fire properly.
    1. Re:Maybe the *same* program? by Waffle+Iron · · Score: 1

      Whenever I try out a new language, one of the first things I do is implement the program described in the well-known paper by Lutz Prechelt: "An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a search/string-processing program". The program is not too big, but it gives a good feel for the features of a language and how fast it will run when you feed in a good-sized data set.

      Over many years, I've done a couple of dozen implementations. However, I've found that the first impression after just learning a language may not be the best indicator. After getting very familiar with a language, I've found that I can sometimes write a much more elegant implementation than the first try.

    2. Re: Maybe the *same* program? by Anonymous Coward · · Score: 0

      Great paper. As I thought, scripting languages generally take less code to write, reduce the likelihood for incorrect operation (opposing popular belief) and generally faired better in this study.

  12. do you relly want apps that need 2-5+ runtimes by Joe_Dragon · · Score: 2

    do you relly want apps that need 2-5+ run times and are very bloated?

  13. Re:I'll tell you what I'm doing ... by cjjjer · · Score: 1

    You need a million dollars, for a guy like you anyway...

  14. it's been tried, but not extensively by Anonymous Coward · · Score: 5, Informative

    The answer is research is sparse in this area, but the few times it's been tried (using competent programmers in each language rather than conflating learning the language and productivity in it), is LISP and LISP-like languages win when measuring programmer productivity and ability to express complex algorithms in small amounts of code, and C and C++ like languages win for ultimate ability to make the program run fast. But the variability from programmer to programmer in how fast the program runs can exceed the variability between languages so it pays to get high quality programmers who have an intimate understanding of both efficient algorithms and the underlying machine architecture, rather than think "the language will make the program run fast".

    1. Re:it's been tried, but not extensively by tomhath · · Score: 0

      LISP wins when the problem is selected based on what LISP and LISP programmers do best (list processing and recursion). Pick a different problem and LISP would be slaughtered.

    2. Re:it's been tried, but not extensively by Sique · · Score: 1

      Luckily, about everything you could code boils down to list processing and recursion.

      --
      .sig: Sique *sigh*
    3. Re:it's been tried, but not extensively by jbolden · · Score: 1

      Excellent point. Though this is mainly high level vs. low level. For example Mathematica, PHP and Visual Basic often beat LISP in terms of productivity. Norvig was commenting that LISP beats Java while managing to also be faster than Java which is what is truly impressive.

    4. Re:it's been tried, but not extensively by jbolden · · Score: 3, Insightful

      As contrasted with Java? Unless you want something that is really in Java's forte (i.e. working the a Java library) I'd be hard pressed to see where LISP is likely to lose.

      Now the issue of course is as the number of programmers increases LISP's idiosyncratic behaviors and allowing each developer to express their individuality go from huge advantages to huge disadvantages. At a million+ lines of code Java's maintainability and standardization become key features. But at say 20-10,000 I'm hard pressed to see much that LISP wouldn't win at.

    5. Re:it's been tried, but not extensively by phantomfive · · Score: 1

      the variability from programmer to programmer in how fast the program runs can exceed the variability between languages s

      So true

      --
      "First they came for the slanderers and i said nothing."
    6. Re:it's been tried, but not extensively by Anonymous Coward · · Score: 0

      Recursion can make a program very, very slow and hog resources.

    7. Re:it's been tried, but not extensively by sydneyfong · · Score: 1

      At 20-10000 the standard libraries and defacto standard libraries of Java win.

      --
      Don't quote me on this.
    8. Re:it's been tried, but not extensively by Darinbob · · Score: 1

      Lisp is more about functional programming style than list processing, and recursion is just one part of functional programming. Most Lisps out there have a decent variety of data structures to use and not just the list. Lisp tends to be the language most programmers are ignorant of even though most seem to want to make comments about it anyway. Ie, it can be compiled efficiently, can be used to do systems programming, used to create highly parallelized scientific code with competitive speeds, allows declaring types of variables and parameters, etc.

    9. Re:it's been tried, but not extensively by ChunderDownunder · · Score: 2

      Which is why clojure is the lisp all the cool kids use.

    10. Re:it's been tried, but not extensively by david_thornley · · Score: 1

      The Lisp programs I've written have typically not been list processing, and recursion is the same in effect as iteration. In Lisp, you might spend a bit of extra effort to make sure you get tail recursion, which will normally be compiled to a normal loop. My observation is that Lisp is the best language if I don't really know what I'm doing yet.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    11. Re:it's been tried, but not extensively by Sique · · Score: 1

      Then unroll the recursion and use list processing instead.

      --
      .sig: Sique *sigh*
    12. Re:it's been tried, but not extensively by Anonymous Coward · · Score: 0

      A while ago someone with an ERP system decided to add a scripting language to their system. They picked Gambit, a C-based implementatino of Scheme for their scripts. They found new features were often easier to implement as scripts. When bugs arose in the original ERP software written in C, they often found it expedious to replace it by a script.

      Eventually their system dwindled from something like 200K lines of C to about 30000 lines, mostly Gambit.

      Maybe Scheme isn't great at 200K-line programs. But maybe that's OK, because won't be 200K-line progrms any more.

      And did I mention that the ERP system mostly in Scheme ran faster?

      -- hendrik

    13. Re:it's been tried, but not extensively by semi-extrinsic · · Score: 1

      How about my code that uses 1000 CPU cores to solve the 3D Navier-Stokes equations using a spectral element method?

      --
      for i in `facebook friends "=bday" 2>/dev/null | cut -d " " -f 3-`; do facebook wallpost $i "Happy birthday!"; done
    14. Re:it's been tried, but not extensively by jbolden · · Score: 1

      The dynamic languages have libraries as well. The extra structures and complexity needed to use the Java libraries effectively as well as the extra verbiage increase the complexity and size of the code in Java.

    15. Re:it's been tried, but not extensively by jbolden · · Score: 1

      15::1 is a bit high but plausible. As for running faster... that's unusual.

  15. Languages for professionals by gnasher719 · · Score: 5, Insightful

    With everything, there are professional users and amateur users. For amateur users, it's important to get reasonably good results with relatively low effort without much learning. For professionals, what counts is the effort for projects the size a professional does, after learning a lot.

    Trying a new programming language every week cannot give any useful information to a professional user, because the language can only be judged on how well it works for inexperienced developers on tiny projects. That's not what professionals do.

    1. Re:Languages for professionals by dbc · · Score: 1

      I'll agree, and add that it takes a certain amount of time to get into the 'Zen' of any particular language. I've been programming since the 1970's, and lost track of the number of languages I have used. When I learned Python, I was productive immediately -- but my code looked more like C or C++. It took me a while to learn to think in 'Pythonic' code, with list comprehensions, generators, etc. Same for Prolog -- Prolog does not become natural in a week.

      I'm doubtful that a week spent on any one language can give anyone the sense of it's underpinnings. As a friend once said: "A good programmer can write FORTRAN in any language."

    2. Re:Languages for professionals by Sique · · Score: 1
      But on the other hand, having seen so many programming languages and how they handle things will give you the ability to assess each new language very fast and understand their intrinsic details because you have seen the same thing several times already.

      It's the same with foreign languages: You understand your own language much better if you have mastered at least on foreign one.

      --
      .sig: Sique *sigh*
    3. Re:Languages for professionals by slickrockpete · · Score: 1

      Yes Deep understanding comes from deep and interesting use. A professional is forced into deep understanding. A hobbyist, dabbler, autodidact or amateur is unlikely to go deep, but some do. A week is not really enough time to go deep.
      All that said this sounds like it will be a good learning experience if he can pull it off. The first thing is just getting over syntax. Just translating between all the procedural languages will get you somewhere, but will get severely boring. A lot of people stumble over syntax.
      The more interesting thing is noticing the underlying fundamentals for each language. I hope he can use some of the interesting ideas behind each language even though most will allow you to just translate the syntax using the procedural subset. The fact that he used haskell first bodes well.

    4. Re:Languages for professionals by Anonymous Coward · · Score: 0

      I agree with you, but I do think the "cognitive ergonomics" of a language's design is sort of underresearched. We have attempts to measure "productivity" and "compressibility" and whatnot, but none of them quite get at the idea of "is this language enjoyable and easy to program in?" (Isn't that a reason people go into computer science and programming anyway? Because they enjoy the expression of the underlying algorithms?)

      In fact, I'd argue that one measure (just one imperfect measure) is how easy it is to go from being a novice to an expert. Not necessarily how quickly, but how intuitively, how effortlessly it feels and how easy it is (both as the programmer as an outside observer).

      I could imagine some hypothetical experiment where a comp sci professor teaches the same intro to algorithms course, and keeps everything exactly the same except for the language used. My guess is that that scores in the course would be a good reflection of language "ergonomics."

      Of course, some people will like some languages and others other languages, and some languages will be better suited for certain tasks than others. There are also certainly fads. But I do think there's some trends for certain languages to catch on and others not, *on average* across programmers and problem scenarios, and I think that's an understudied problem. I think it's understudied, moreover, because it's ultimately a psychology problem, and not a math/comp sci problem, or business management problem, which is where most people in programming are approaching it from.

  16. Programming Language Warning by MonkeyDancer · · Score: 1, Funny

    If your using a programming language, but your language is not enough, then you should consult your doctor.
    Call your doctor if your application worsens, or if you have unusual changes in mood, behavior, or thoughts of suicide.
    See a doctor if you have high fever, stiff muscles, confusion, or having trouble swallowing.
    Some adverse affects are: diarrhea, seizures, and flatulence.

  17. sort of by phantomfive · · Score: 1

    Simon Peyton Jones points out that doing 'clinical trials' for programming languages is hard, because it's expensive, and because "programming language is weak on that score.....culturally we're not well adapted to it."

    He also points out that Microsoft does something similar, they do usability testing for their APIs and languages, where a researcher sits behind a glass window, and watches programmers try to figure things out.

    For pure efficiency, the benchmark game at least gives some data points. From a gut feeling, I would say LISP is rather good at letting you do the most in the least number of lines (dependency injection is insanely easy, for example, compared to Java where it's painful if you haven't planned for it).

    --
    "First they came for the slanderers and i said nothing."
    1. Re:sort of by Anonymous Coward · · Score: 0

      Java dependency injection... is that good for a quick hit when you run out of coffee? I don't like needles, so I'd rather have some of this

  18. There is no language superiority by Aviancer · · Score: 2

    This is a myth. There is only suitability to solve a problem within a given context. At first, it's "how fast can I bring this to market", then "how does this scale" (in terms of execution efficiency). Finally, "can I hire people to do this?"

    The starting point is inevitably what the initial implementer is most familiar with (or infatuated with) at the moment.

    A few weeks ago, I wrote an article about how asinine this technology argument is.

    1. Re:There is no language superiority by Anonymous Coward · · Score: 0

      This is a myth.

      Exhibit A.

      Programming language design is not a zero-sum game. It is very much possible for a language to be objectively superior or inferior to another language.

    2. Re:There is no language superiority by jbolden · · Score: 1

      I've agreed with that for years. Haskell is like using a programming language out of 2025 today.

    3. Re:There is no language superiority by dkleinsc · · Score: 1

      Yes, there most certainly is such a thing as language superiority. It can even be somewhat measured.

      For example, if, to solve a problem, language A takes about 30 lines of extremely clear code that takes the programmer about an hour to do, that's obviously superior to language B that takes 1000 lines of gobbledygook that takes the better part of a week. Especially if, when both programmers get a change request to their little application, language A is modified and the update ready in 10 minutes while language B requires another week-long 1000-line marathon.

        And that can be a function of the language rather than the programmer skill, because language A has constructs that language B doesn't have that allows the programmer to express his intent clearly and easily. And yes, the community around language B can create libraries that reduce the 1000-line pile of code down to a 100-line pile of code, which will certainly help, but now the programmers specializing in language B now have to learn the library as well as the language itself. And meanwhile, the community around language A might have either created a library to make that 30-line program a 1-line program, or simply moved on to another problem.

      So maybe you're going to argue that it's a problem that was particularly well-suited for language A. But if language A is continuously performing this much better than language B, sticking with language B isn't an aesthetic choice or a matter of opinion, it's simply stubborness.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    4. Re:There is no language superiority by Anonymous Coward · · Score: 0

      "It is very much possible for a language to be objectively superior or inferior to another language..."

      Within a given environment and/or for a specific purpose. But since programming environments and purposes are infinite, the OP is correct in that there is no such thing as an objectively superior language in all cases for all purposes. Much in the same way there is no such thing as an objectively superior person or human language.

    5. Re:There is no language superiority by darkwing_bmf · · Score: 1

      At first, it's "how fast can I bring this to market", then "how does this scale" (in terms of execution efficiency). Finally, "can I hire people to do this?"

      Followed by, "if the programmer I hired screws it up, how hard will it be to fix?"

    6. Re:There is no language superiority by NoOneInParticular · · Score: 1
      I welcome you to see the merit of Brainfuck, Befunge, or any of a plethora of other programming languages that are objectively not suitable to solve any type of problem better than, say, C or Java. So your basic premise is false. It might be that Scala and Lisp both have their objective sweet spots, but it might equally well be that one is better than the other -- if tested correctly.

      And BTW, this post was a valid Whitespace program until your renderer ate my tabs.

    7. Re:There is no language superiority by Kielistic · · Score: 1

      Counterpoint A.

      Brainfuck was designed for a reason seems to have been quite successful at it.

    8. Re:There is no language superiority by Anonymous Coward · · Score: 0

      For example, if, to solve a problem, language A takes about 30 lines of extremely clear code that takes the programmer about an hour to do, that's obviously superior to language B that takes 1000 lines of gobbledygook that takes the better part of a week. Especially if, when both programmers get a change request to their little application, language A is modified and the update ready in 10 minutes while language B requires another week-long 1000-line marathon.

      No, I don't think that proves anything except language A is likely more cost efficient in the short-term. Doesn't make it superior.
      Doesn't even make it superior in the long-term. This proves nothing except people are short-sighted.

      And that can be a function of the language rather than the programmer skill, because language A has constructs that language B doesn't have that allows the programmer to express his intent clearly and easily. And yes, the community around language B can create libraries that reduce the 1000-line pile of code down to a 100-line pile of code, which will certainly help, but now the programmers specializing in language B now have to learn the library as well as the language itself. And meanwhile, the community around language A might have either created a library to make that 30-line program a 1-line program, or simply moved on to another problem.

      Silly. Why not choose language C or D or even make language E that is extensible such that you can add (or even better -- remove!) any constructs you need or don't want?

      And why not be the community? You can create libraries that you need, not what some other community needs.

      Again, this just seems short-sighted, grabbing the quickest thing, for the least amount of work, whatever is cheapest and quickest.

      So maybe you're going to argue that it's a problem that was particularly well-suited for language A. But if language A is continuously performing this much better than language B, sticking with language B isn't an aesthetic choice or a matter of opinion, it's simply stubborness.

      Eh, stubborn is just about all there is. That is just about the only thing that actually matters. The race doesn't quite go to the swiftest. It is a waste to even race IMO. Fool's errand.

      Better to stay focused on yourself, not on what the next guy is doing. Nice to pop your head out ever now and then and get a look, but it seems detrimental and self-destructive to constantly focus on others.

      I won't say all languages are equal, but it is noone else's business whether they think something is "superior" or not.

      It comes down to whoever is paying the bills, gets to decide what is superior.

      Typically, they will decide whatever is superior is the thing that will make them more money.

    9. Re:There is no language superiority by swillden · · Score: 1

      There is no language superiority

      There are, however, some extremely inferior languages, which suck for any purpose.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  19. Re:I'll tell you what I'm doing ... by Anonymous Coward · · Score: 0

    Lucky for me I had a great idea - the pet rock!

  20. Re:All hail Python! by BreakBad · · Score: 1

    Fixed

  21. Rosetta Code by Anonymous Coward · · Score: 0, Redundant

    http://rosettacode.org/wiki/Rosetta_Code has more than just 99 bottles of beer.

  22. actual clinical trials are nearly impossible by Trepidity · · Score: 3, Funny

    Some key features of "gold standard" clinical trials: 1) large enough sample size to draw statistically significant conclusions; 2) real illnesses, not a simulated laboratory setting; 3) a double-blind control group; and 4) long enough duration to measure real-world outcomes.

    The programming-languages version would be to have teams randomly assigned to perform major (6+ month) programming projects in different languages, and then see their outcomes. For example, 40 game studios will continue to write their games in C++ as the control group, while you'll have the other 40 write them in Haskell. You probably want to iterate a few times as well to make sure that there's no first-game-in-a-new-language effect and to ensure that everyone is actually knowledgeable in the language being tested.

    Oh, and it should be blind, so neither the teams nor the researchers know which language they're using.

  23. Enthusiasm, Free Time and Resources by Sponge+Bath · · Score: 1

    Enjoy it while you can. Soon enough, job and family concerns will consume most of your attention.

    Dr. Lizardo said it best: "Laugh'a while you can, monkey boy!"

  24. Double Blind? by Anonymous Coward · · Score: 0

    Don't laugh. Ever seen C that looks like the programmer thought that they were using Fortran?

    1. Re:Double Blind? by Anonymous Coward · · Score: 0

      Ever seen C that looks like the programmer thought that they were using Fortran?

      Well, you can't spell 'Fortran' without 'C'. Oh, wait, that's 'COBOL'. Damn it. Give me 5 minutes and a swiss army knife and I'll figure this out.

  25. aren't i so damn trendy? by Connie_Lingus · · Score: 4, Insightful

    it's my observation that programming languages have become the equivalent of fashion and bands.

    it's as if choosing and using one is like saying "oh, im listening to arctic monkeys and calvis harris these days, and that makes me feel liberated from those plebs still listening to kings of leon and david guetta..and MAYBE if im lucky someone will be impressed by my trendiness"...now that so many 20-somethings code, they all seem to feel the need to break from the "boring old bonds" of existing languages and define themselves among their peers by how esoteric their language-de-jour is.

    what this guy is doing is illustrating the point, he isn't going to learn anything about the benefits of each "language" or how to maximize productivity...it's just a "notice me notice me" stunt.

    it's just a silly exercise in syntax-swapping anyway for 90% of it...

    please don't get me wrong...it's totally fine by me whatever language you want to use, as long as it's maintainable and there is a large enough pool of existing programmers who know the language so when you leave my company because your bored with maintaining the code you wrote, i can find someone quickly and affordably to replace you.

    --
    never bring a twinkie to a food fight.
    1. Re:aren't i so damn trendy? by skids · · Score: 1

      Being one who has strong preferences about languages and routinely wears white socks with sandals, which has seldom ever been trendy, I have to say you are reading less into the gripes about programming languages than is there. Reality sets in the 200th or so time you type out InsanelyAribtraryFUNCTIONName(Nonsensically:formatted.thing_with_obscure_british_spelling_of_colour) and realize that there really is no solid underpinning to the particular language and people pretty much make up APIs and interfaces as they go along without even bothering to take the time to learn the pre-existing professional/academic vernacular around the subject matter at hand. After that, every time you type it you feel a bit of the life draining from you for participating in the perpetuation of such a flawed system. You start laughing a bit less at bike-shed-painting and take details more seriously. You start to bemoan the fact that injecting more arbitrary crap into the IT mindspace is not a long-term productivity winner for the field at large, and realizing that the guy who probably could code the machine to build the advanced surgical device you will quite likely need in 10 years, won't, because he spent most of his time sussing out such minutia as the differences between string.Template.substitute and string.Template.safe_substitute so that some advertising content could be appropriately targetted at 30-somethings that have a preference for clicking on pink buttons over blue.

  26. Anology correction by Anonymous Coward · · Score: 0

    It's somewhat like asking which is a better tool, a hammer or a screwdriver.

    It's more like which is better; a framing hammer or a finish hammer. Both can do the job but it would be harder driving framing nails with a finish hammer and the other way around.

  27. Clinical Trials by Anonymous Coward · · Score: 0

    To Mr. Charles Dawson, good luck writing a program in assembly. I am still trying to grasp the complex language.

  28. More than just intent by dlenmn · · Score: 1

    Yes, some languages do things better than others, but there's more to languages than that. A good question is how well the language meets its goals.

    http://xkcd.com/1306/

    Some languages are simply more clean, have a more consistent syntax, etc. then others. For example, both Fortran 77 and 90 are aimed at numerical computation, but 77 has a weird syntax made for punch cards and other oddities; 90 is just better. (Flame on!)

    1. Re:More than just intent by Anonymous Coward · · Score: 0

      Something seems a bit off with that comic... Shouldn't $QBASIC be QBASIC$?

  29. Use the Best Tool for the Job by Anonymous Coward · · Score: 0

    As they say, use the best tool for the job. Put away your e-peen.

    For example:

    1. If you need concurrency, look at languages like Clojure and Erlang among many others that make it easy. Further break down what sort of concurrency requirements you really need.

    2. If you need speed, look at something like ASM, C, etc.

    3. If you need to work a lot with standard data structure but in complex ways, Lisp, Clojure, many others...

    4. If you need a web framework in a box rather than exerting effort to build something that matches your need, find one you like and just use it knowing its limitations.

    In the real world when people write software that is often not just 1 application, embedded, or a stupid blog, we use multiple languages and systems to get the job done right. Why would I write my web page in C++ if it takes me 10x longer. Conversely, why would I write a raytracer in PHP or some language more suited to RAD?

    Be a computer scientist, not a Ruby Programmer. If you can compromise to keep things in a few or even one language, great, but do so knowing the costs, not just because you are someone who only knows how to program well in JavaScript. If you can't program well in more than one language, you really need to find a new career, sorry.

    1. Re:Use the Best Tool for the Job by Bucky24 · · Score: 1

      I work with a large number of programmers overseas in India who only know one language. Our UI team is made up of 2 guys who understand Javascript/CSS/HTML, 2 who understand PHP/MySQL, and one that understands both (but can't actually do either very well). And while I've observed it to be a terrible handicap to them a lot of the time, and I really wish they would find a new career, that seems to be the norm over there. So I guess if you only know one language you have good prospects in India.

      --
      All the world's a CPU, and all the men and women merely AI agents
    2. Re:Use the Best Tool for the Job by Anonymous Coward · · Score: 0

      I can't believe that a web developer wouldn't know javascript, or that someone that ONLY knew javascript would call themselves a developer, or that people exist that write code yet do not know SQL.

      I am a C# web developer, that is what I tell people. I've never needed to call myself a C#/HTML/CSS/JavaScript/SQL developer. It's implied by the type of work I do. I understand your (likely) point, that we should all expand our horizons because just as I supplement C# with lots of JavaScript and SQL, perhaps I could do the same with Haskell or Perl or Python. However, there are what I would call complementary languages and competitive languages. I'm glad I learned a little Python, but my time learning Java was somewhat of a waste. ASM is just background static for me these days, as is C and even C++ (though that one helps when looking up internet documentation)

    3. Re:Use the Best Tool for the Job by Anonymous Coward · · Score: 0

      I can't believe that a web developer wouldn't know javascript, or that someone that ONLY knew javascript would call themselves a developer, or that people exist that write code yet do not know SQL...I've never needed to call myself a C#/HTML/CSS/JavaScript/SQL developer. It's implied by the type of work I do.

      I've met plenty of web developers who don't know SQL. They would get by through modifying cut-and-paste samples of simple SELECT, INSERT, and UPDATE statements from a google search. As in, "JOIN, what's that? I'll just do half a dozen selects and manipulate the data through arrays in PHP. MERGE INTO? Nah, I'll just do a bunch of sequential inserts and updates. What about ACID, what's that?" Ugh. Almost as bad are the ones who stubbornly stick to a specific SQL syntax. As in, "Hey, my query doesn't work. No, the syntax is fine - I've written bunches of these for MySQL and never had a problem. DB2? Well, why doesn't DB2 use the right syntax?" And so on, ad nauseum.

      Perhaps as a result of Entity Framework and LINK, I'm starting to see C# devs who don't know SQL, and even a few who dismiss it entirely.

      Also, deep knowledge of JavaScript seems to be a rarity.

      - T

  30. Not feasible by Bite+The+Pillow · · Score: 2

    Repeatability. Productivity must be repeatable if any measured claims can be made, and no one does the same thing twice.

    Even if you write similar code for a similar purpose, you have the backing of experience. The results are different even if you end up with the same code.

    And, there are the os and third party libraries. I can save time by using such features, if I take time to learn them.

    There is a post below about maintainability, securability, etc, all of which are good points, but will rarely be done exactly the same way. Especially since some are intended to be server side, where obscurity is possible, and some client side where you may need real security.

    Any such study will have questionable conclusions due to the number of variables. Writing new code vs inheriting, where the choice might be maintain or rewrite in a new language.

    But none of these will be applicable to an entirely new situation, and any study results irrelevant. Repeatability in code means studying something that will probably never happen again, or something so basic it will never represent normal professional usage.

  31. Re:I'll tell you what I'm doing ... by larry+bagina · · Score: 2

    Look on craigs list. You can get it for $1-$2,000.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  32. Wrong Metaphor by ndykman · · Score: 1

    One of the hallmarks of a clinical trail is that a random group of humans will respond about the same to a given intervention (or lack thereof). And for things like drugs or a medical treatment it's an assumption you want to hold up for safety's sake. It doesn't always, of course. There is a drug on the market that is targeted specifically for African Americans, as it works really well in that population.

    However, that assumption just don't hold for a random group of developers. Not even close.

  33. Concentrate instead on types of applications by Anonymous Coward · · Score: 0

    The act of using many different syntax languages will not gain you all that much, although the confidence factor may be worth something to you personally. Instead, why not tackle different kinds of applications, such as database, computational, graphics, embedded, operating system, expert system, and so on. Choose a C-syntax language that's popular for each. Each will have their interesting syntax variations, with the differences will made more apparent by the application.

  34. Live and don't learn by DavidHumus · · Score: 1

    After decades of enjoying the extreme and obvious productivity advantages of programming with dynamic languages in interactive environments, I continue to be baffled by the overwhelming preference for static, compiled languages. I understand there is a place for such things, much as there is a place for programming in assembly language, but I continue to wonder why such a clumsy paradigm is so dominant.

    1. Re:Live and don't learn by jbolden · · Score: 3, Insightful

      Because the productivity doesn't scale well as projects get larger. Dynamic languages are amazing at 20 line programs. They are pretty hot at 200 lines programs. At 2000 lines you are starting to feel the minus but they still work well. At 20,000 things start going badly wrong. By 2m, well there are 2m line programs mostly because all those things that are good about a dynamic language for 20 lines turn into disadvantages when you need hundreds of programmers to work together.

    2. Re: Live and don't learn by Anonymous Coward · · Score: 0

      Sorry but that's complete hogwash. If a team runs into problems with a growing code base and team size it is hardly ever related to the programming language. Most problems are rooted in bad communication, bad habbits of not documenting code or hazardous design practices (read: none).

    3. Re:Live and don't learn by DavidHumus · · Score: 1

      I have personally worked on a couple of different 20,000 line code bases in dynamic languages.

      They worked just fine: in one case we had about 20 clients buying in for tens of thousands per system + 20 % maintenance, which required one senior and one junior programmer to maintain; the other was a system with about three programmers that accounted for about 1% of the trading volume on the NYSE.

      You do not have systems in the millions of lines with dynamic languages because you do not need that many lines to do just about anything.

      Do you have any support for your baseless assertion?

    4. Re:Live and don't learn by jbolden · · Score: 1

      You do not have systems in the millions of lines with dynamic languages because you do not need that many lines to do just about anything.

      Of course you do. Complex exceptions. Take your trading program. Assume that the various brokerages connecting all had different data standards, you had to work with their APIs. Assume that each and every stock had its own set of rules and restrictions and of various types. Assume that the stocks themselves weren't uniform but you still had to worry about certificate management and that varied by state and country.

      How many lines are you up to?

  35. all this means... by Anonymous Coward · · Score: 0

    ...is that he'll suck in all the languages because he isn't focusing on anything in particular.

  36. New religion & flame war coming. by vikingpower · · Score: 1

    Soon to be featured by a /. outlet in your galaxy , yay !!

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
  37. Different languages, different issues. by fahrbot-bot · · Score: 4, Interesting

    There are good practical reasons for writing the same program in different languages. (1) People often make the same mistakes in the same language, because they are often taught/trained in similar fashions. (2) Different programming languages have different issues and failure modes.

    I'm not an expert, but I worked as an undergraduate research assistant on a project way (way) back in college (1985-87) for a professor on a NASA contract to study issues related to N-version fault tolerance - like used on the Shuttle, where several computers solve the same problems and vote on the answers. One problem (if I remember correctly) was that the different programs, written by different people, in the same, or same type of, language often failed on the same or similar edge cases.

    The experiment was to implement the same solution to a problem using much different languages. In this case, Pascal and Prolog. The "gold" Pascal routine was already written and my task was to write the corresponding "gold" routine in Prolog. [ I also did work for a related study in the automatic analysis (and execution) of abstract data types in LISP.] I graduated before the experiment was run, but found the idea as least plausible.

    Note that I might be remembering some of this incorrectly as it was a while ago and I was only an undergrad. (They wanted a graduate student, but I was the only one with LISP and Prolog experience... And $9.50/hour wasn't bad for 1985.)

    --
    It must have been something you assimilated. . . .
    1. Re:Different languages, different issues. by sydneyfong · · Score: 1

      Might be a bit off-topic, but when the system gets (for example) 5 answers from 5 different computers, how do they make sure that the program/computer that reads and verifies those 5 answers is correct and fault tolerant?

      --
      Don't quote me on this.
    2. Re:Different languages, different issues. by fahrbot-bot · · Score: 1

      Might be a bit off-topic, but when the system gets (for example) 5 answers from 5 different computers, how do they make sure that the program/computer that reads and verifies those 5 answers is correct and fault tolerant?

      Don't know and don't know if that situation ever occurred. Any Shuttle computer systems experts out there?

      In any case, here's a link to a paper titled, Redundancy Management Technique for Space Shuttle Computers

      --
      It must have been something you assimilated. . . .
    3. Re: Different languages, different issues. by Anonymous Coward · · Score: 0

      The 5 computers either vote or decide by majority, a concept known as (diatributed) consensus. No need for a master. Of course this leaves the rare possibility that they choose the wrong answer altogether.

    4. Re:Different languages, different issues. by Anonymous Coward · · Score: 0

      If too many of the computers disagree, the space shuttle switches to the backup flight software (an alternative implementation) and the mission is aborted immediately.

      The backup flight software is presumed to be correct.

  38. Rosetta Code by Anonymous Coward · · Score: 1

    I'm surprised to see that no one has mentioned Rosetta Code yet. It provides many examples of different (real-world) problems being solved in many different languages. It's interesting for comparisons between languages and it's very useful for finding already-implemented solutions to problems in whatever language a user may require.

  39. Re:C and C++ by Anonymous Coward · · Score: 1

    Irony is that marketshare for C and C++ is going down. Rust or Go or D or M# is the future of systems languages!

  40. Wrong resolution by Anonymous Coward · · Score: 0

    The poster's a High School junior? Wrong resolution. Get in shape, if you're not already, and then chase tail. You won't be young forever. You have decades ahead of you to sit in front of screen doing stuff.

  41. A good lesson by jgotts · · Score: 5, Interesting

    It's a good lesson, but for different reasons. Here's why.

    In the real world, you pick the right tool for the job. You never pick a language because it's the best language. There is no such thing. Factors going into language selection where technical merit plays no role include what the other developers at the company and/or the project are using, what environment you're using (if Apple, then Objective C; if Android, then Java), what language the code you are maintaining was written in 5, 10, 20, or 30 years ago, and (hopefully if you are a great programmer this will be a minor issue) what languages you're comfortable with using.

    After 30 years I've learned that basic computer science concepts are helpful, but only to a point. Google may want you to know specifics about certain types of trees for their interview process, but if you need to know that level of detail for a job, you spend a few hours on Google and learn it. The same goes for languages. Figure out what you need with a bit of research before you start the job. You should have a great idea of what environments a language is nearly always used, so you don't try to do something weird nobody can maintain. If you're going to write an iPhone app, you're going to adhere to whatever specific Objective C thing Apple is doing. Maybe I'm slightly out of date and Apple is doing something else, who knows? I don't work in that space.

    Python everywhere, be damned with you, is a quick way to make enemies of people 10-20 years down the road who have to maintain your code. I was doing web development in the 1990s, and everybody used Perl. For everything. Now I work with a legacy Perl code base, and mod_perl seems to be completely abandoned, and it certainly hasn't been released for apache httpd 2.4 yet. We're using Perl because we have to, but not for new stuff. But for the Perl part of our system in bug fix maintenance mode, it is the appropriate language. We didn't have the attitude that we'd continue to use Perl for everything just because that's the way things were done. We were flexible enough to slowly switch over to PHP for certain things that we had been using Perl for.

    Avoid fads like the plague. After 30 years of programming, I just ignore marketing. I have no gee whiz attitude about anything. I focus on perfecting my craft, learning how to program better, to debug better, to test better. Learning how to deliver code that works now and five years from now. All that is way more important than figuring how how some language is subjectively the best.

    1. Re:A good lesson by jbolden · · Score: 1

      I'm not sure I would generalize too much from Perl. Perl had a terrific run going from a text processing language to a system admin language to the standard for web development. Then it moved towards applications development. And then it faltered badly. They responded to the faltering with an overly ambitious and poorly managed next version which has sucked the life out of the language.

      Perl is an example of picking a technology that died. Lots of people who have picked lots of technologies they thought were safe had similar problems. That's not a language issue. VMS-Cobol is doing much worse than IBM-Cobols not because of COBOL.

    2. Re:A good lesson by angel'o'sphere · · Score: 1

      In a perfect world, you pick the right tool for a job. In the real world: your customer or your boss choses the (right, not so right) tool for the job.
      Half of /. are Java haters, nevertheless many of those work with Java. The other half are C# haters but nevertheless work with .Net/C#
      The rest are Python and Perl lovers, but work with C/C++
      AFAICT: there is no real world. There are only plenty of dream worlds. It is up to you if your dream world is occupied/ruled by a nightmare.

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

      ...Google may want you to know specifics about certain types of trees for their interview process, but if you need to know that level of detail for a job, you spend a few hours on Google and learn it....

      These types of questions are finding out your breadth and depth of knowledge about data structures and algorithms. No, you cannot become proficient in this area in a few hours. You need reasonable proficiency to even be able to intelligently Google the appropriate specific knowledge. I find that knowledge of data structures and algorithms is essential for being a competent programmer.

      --
      Second class citizen of the New Gilded Age
    4. Re:A good lesson by phantomfive · · Score: 1

      They responded to the faltering with an overly ambitious and poorly managed next version which has sucked the life out of the language.

      Python is in the middle of a 'next-version' crisis, too.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:A good lesson by Twinbee · · Score: 1

      If you've found a language that it worse in some respect than many (or even one other) language, then by principle, you are saying there is a 'best' language, of if you prefer, a 'least worst' language.

      Failure to recognize that leads down the path of a very grey relativism, and impedes progress to making languages better overall. Yes, it's hard to know for sure which is the 'best', because it's so complicated, but that doesn't mean there isn't one.

      --
      Why OpalCalc is the best Windows calc
    6. Re:A good lesson by jbolden · · Score: 1

      I've heard some stuff but don't know any specifics. What went wrong with the Python community?

    7. Re:A good lesson by phantomfive · · Score: 1

      Python 3.0 is not backwards compatible (and the maintainer of Python has said backwards compatibility is not a priority). So a lot of people are still using 2, and even there it seems to some division between 2.7 and 2.5. A lot of people had codebases in older versions of Python,, and so stayed with it, and hard statistics are hard to find, but it seems 2 is still more used than 3.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:A good lesson by jbolden · · Score: 1

      That's fragmentation and fairly standard like what happened with Apache 1 to Apache 2. That's not really an idealogical split. Are there people who think Python 3 sucks and want to stay on Python 2 for new projects?

    9. Re:A good lesson by phantomfive · · Score: 1

      That's fragmentation and fairly standard like what happened with Apache 1 to Apache 2.

      Switching from Python 2 to Python 3 is significantly more difficult than from Apache 1 to Apache 2. One of the main problems with Python 3 is that it removed stuff that people used in the previous version (because of the philosophical ideology of, "each thing should only be doable one way"). Some people don't like the way Python 3 handles character encoding. There are tutorials and books that still use Python 2. The default version of Python on OSX and Redhat is still 2.7. Python 3 has been out since 2008. There's just no real benefit of the new version, except it's newer. As for how many new projects are made in 3 vs 2, that's a good question. Two years ago, Python 2 was the clear winner, but I'm not sure if it's changed since then.

      As for myself, the knowledge that I might have to rewrite a bunch of code because of the stupid whim of the maintainers is enough to keep me away from Python. There are plenty of options for languages, I don't need to put up with that kind of abuse.

      --
      "First they came for the slanderers and i said nothing."
  42. Re:C/C++ Bugs by Anonymous Coward · · Score: 0

    We are sick of software bugs, the new guys write better software!

  43. C++ by Anonymous Coward · · Score: 0

    I have been programming in C++ for 10 years and realize that there is much more in C++ to be learned, how big it is and how smart the person was that implemented that feature. One thing that always strikes me is code that I write 2 years ago and review later on. A lot of times, I have to fight the urge to rewrite something in a better, more extensible and consistent fashion. It is funny how your perception of a problem changes over time and experience. Even things like collections and strings are just huge and depend on libraries which influence your design. Just looking at the differences between C++ 2.0 and 3.0 opens up a world of implementation subtleties that take time to resolve and clean up.

    Now, if you experience this with a language that you know, then yes, you can try to implement the same algorithm in Java and C#, but you will be influenced by the experience. Afterwards, your C++ will begin to look like C# and Java.

  44. Re:NEW CAREER by Anonymous Coward · · Score: 0

    Some people only know c or c++ so...

  45. Re:C and C++ by Anonymous Coward · · Score: 0

    or Go or ... is the future of systems languages

    But GC is bad for systems languages? oh wait we meant server software as in systems language like it was used 3 to 4 decades ago!

    Rob Pike: I am surprised that so few C++ programmers consider switching to Go. Go is after all a perfectly minimalistic lanuguage, no unneeded complexity like templates (or generics) duplicating container code is not that much of an issue and who needs fancy things like dynamic libraries, a sane 32 bit GC (solved by now - I think) or a sane way to call into C code (cgo uses comments to hide metadata from Go since Go has no way to express it like annotations, __attribute__ or #pragma ).

    Go has been written to replace C++ as used by Google and the Google Style of code looks like it is better suited for a Java without Exceptions, for me the future is not working at Google so it will be either Java, C++, C#, Python 2.X or maybe Rust (if it ever supports 10 year old systems - custumer support sucks).

  46. What I'm trying to do by cdawson · · Score: 5, Informative

    Hi everyone. Thanks for all of your comments. I just want to quickly elaborate on why I'm doing this and what I'm trying to do with this project: I am not trying to start a flamewar, annoy programmers, or hog attention. I am not aiming to master any of these languages after only a week. I'm not even trying to get "okay" at any of them. All I'm trying to get out of this project is a more broad understanding of the languages that are out there, and what, in a very general sense, each language is good for. My thought is that if I can get even one cool new idea or concept out of each week's programming language (like functional programming concepts from this week's foray into Haskell), I'll consider this project a success. Also, it will allow me in future to be able to quickly reference a new language if I need it for something I'm working on (not necessarily remember any syntax or anything, but at least to save myself some googling time). Thanks for your interest. Sincerely, Charles Dawson

    1. Re:What I'm trying to do by Common+Joe · · Score: 1

      If understand correctly: 52 projects in 52 languages in 52 weeks? A high school junior? You're nuts for even trying this.

      I like that. :) Good luck, have fun, and I hope you learn a lot. We each have our ways of learning programming and this seems like an interesting way to do it.

    2. Re:What I'm trying to do by angel'o'sphere · · Score: 1

      Yepp, welcome!
      However you could have googled for your questions rather than asking here and claiming in your question that there never has been any study.
      The world is full with studies about various languages or concepts since ... hm roughly 1965 (yes, 1965, not only 1985)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:What I'm trying to do by sydneyfong · · Score: 1

      Using a week to learn a language and do a small project on it isn't that crazy. The problem is just that after week 30 or so, you start to run out of sane and useful languages (unless you dig into the obscure) and end up experimenting with brainf**k.

      --
      Don't quote me on this.
    4. Re:What I'm trying to do by phantomfive · · Score: 1

      (unless you dig into the obscure)

      Which is worth doing. APL FTW!

      --
      "First they came for the slanderers and i said nothing."
  47. Re:All hail Python! by TsuruchiBrian · · Score: 4, Insightful

    As someone who pretty much only codes in python lately, I would agree except that I hate the fact that whitespace actually matters in python. I feel that this limits the utility of python while gaining only a modest increase to readability (according to some people).

  48. Social science research bias by Anonymous Coward · · Score: 0

    The problem in these types of studies is the test subjects are usually students which may or may not be representative of the general population. A notorious example of this is Margaret Mead's classic "Coming of Age in Samoa" which reveals more of the sexual attitudes of grad students than Samoans!.

  49. It's an ambitious project by nurb432 · · Score: 0

    No, its a stupid project. Pick one (or two), and become proficient. That would be a worthwhile project.

    --
    ---- Booth was a patriot ----
  50. The best language is your best language by quietwalker · · Score: 1

    We all know innately know this, but sometimes it's hard to avoid getting caught up in a religious debate about the apples-to-oranges details.

    Once your language is at least complex enough to write a compiler or interpreter for itself - that is, it's no longer a toy language - it tends to be more or less capable of everything every other language is capable of. Sure, it might not be the best tool for a given job, but they're all generally the same aside from some syntactic sugar.

    The more important thing is the metrics we can track are directly correlated to a person's experience with a language. The longer an individual spends writing in a language, the less time it takes to complete a program, the less errors it contains, the severity or error incident goes down, the number of security issues is reduced, it is better optimized for the platform, uses less memory or cpu, has more features, etc.

    Those are reliable statistics and the trend holds true regardless of the language. That has real world value far above and beyond arguing whether whitespace should be part of a language, or if it uses smalltalk or c++'s object models, to name a few items I've seen above.

    The end result; whatever language you tend to use the most is going to be the best language for you to use, often even when it's not a good fit.

    1. Re:The best language is your best language by Green+Salad · · Score: 1

      Thank you. It's like asking what language should diplomats use to negotiate a peace. Obviously, the most productive language is the one in which people are extremely competent and comfortable using...until they need to describe the the 27 types of snow, in which case they can switch from a European language to an Eskimo language to better express the concept. I assert a language's strengths and weaknesses for an idealized problem are trivial...compared to the strengths and weaknesses of the individuals using it.

    2. Re:The best language is your best language by cowdung · · Score: 1

      I disagree. There are other factors. (Unless you are programming alone)

      To choose a language I take into account:

      1. Popularity and future: if nobody is using it, it is going to be costly to find people that have expertise. Sadly you cannot ignore trends.. Also your platform may be discontinued and people using other platforms may have more tooling at their disposal.

      2. Technical merit: this is the point where people usually argue. However, if you've taken a computer languages course in College you probably know a bit about what a good language looks like and what a bad (messy) language is like. For example, people used to hail Pascal and dis BASIC while pragmatists went for C. Today you can find parallels (.. further comments censored to avoid flame wars...). But technical merit isn't everything or we'd all be using Smalltalk!

      3. Familiarity / abilities of your team: it is important to know where your team is and what their limitations are in terms of technology because making a switch to something trendy may turn out to be costly as well.

      4. Culture and process: will your team write unit tests for all classes or is that just a pipe dream that will never happen? Do you want the compiler to find trivial problems for you? How important is static error checking (Findbugs, PMD, etc..)? Are all your servers Windows servers (consider .Net)? Are all your servers Linux (don't consider .Net)? What is the valuation (from an investor's point of view) of an app written in FoxPro (considered obsolete) vs one written in Java (considered "Enterprise safe") vs one written in Go (considered "unproven")? Can your "source code" be visible to the end user?

      5. The project you're working on: love Java? well good luck with that if your project is a iPhone app. Writing device drivers in Python? huh? Different projects require different tools.

      Not all languages are the same. The results will not be the same.. And yes.. your project may succeed or fail based on your choices.

  51. Create a new programming language each week! by Anonymous Coward · · Score: 0

    Why not go all the way and create a new programming language each week? That's the speed of the industry - new language, fad acceptance, limited adoption, repeat ad nauseam. I used to like studying new languages, but I gave up several years ago when there were just too many of them.

    Just for fun, make a list of how to get the length of a string in different languages. The resulting list will be bewildering. That's why I stick to only a few languages. Too confusing to be productive any longer. They're all so similar but so different now.

  52. Re: All hail Python! by Anonymous Coward · · Score: 1

    Au contraire! Disliked it at first, but love it now. Makes programming a lot faster, less error prone, very easy to read even for the novice. ps I toll some 20+ years in all sorts of curly bracket languages and other dynamic languages, and heck there was even Assembler in the very beginning

  53. more productive if... by Anonymous Coward · · Score: 0

    I think it would me more productive if he focus on a few languages from diferente natures. Like Ruby, Java, Haskell, Herlang, Lisp, etc. Not in a week, but at least a few months each.

    I'm 32 years old and I'm a professional java and ruby developer. I've been studying software development since I was 12, and still it took me a few years to understand the true beauty of each, and I still don't consider myself a "master" of this languages.

  54. Re:All hail Python! by Rhacman · · Score: 2

    I tend to agree. One thing I find annoying is that in order to temporarily comment out the body of a conditional you have to add a "pass" line. The ability to add members to classes at runtime has also created some situations for me that were very confusing to troubleshoot.

    --
    Account -> Discussions -> Disable Sigs
  55. Language Discussion Wiki by Tablizer · · Score: 1

    Check out the "C2 dot com" wiki for discussions on programming features. We like to debate programming language features over there and there are many existing topics and discussions to get ideas from. Warning: personal preferences vary widely, and it can get heated. Bring a thick skin.

  56. Visual Basic by dwheeler · · Score: 1

    I believe this is for the Visual Basic 6 or less, not for "Visual Fred" which has the same name but mostly unrelated syntax and semantics. See: http://catb.org/jargon/html/V/Visual-Fred.html I think you have to take those measures with large grains of salt, but it's certainly true that languages affect productivity.

    --
    - David A. Wheeler (see my Secure Programming HOWTO)
  57. Oddly enough... by cdawson · · Score: 1

    I didn't post this. I came home from school and started wondering why I was getting so much traffic, and found this post in the referrals tab.

  58. Moderator Guidelines by cstacy · · Score: 1

    I have points but couldn't figure out how to mod the actual article -1 Flamebait

  59. Re:All hail Python! by Anonymous Coward · · Score: 0

    I think the pass keyword is cute, cuter than having to add a dummy semicolon to many C control structures.

    I use Python a lot and find its abstraction level optimal for lots of real programming needs. However, paradoxically, one of the main gripes I have against Python is its poor readability because of the lack of a visible block terminator. It's hard to see where methods begin and end in any piece of elaborate code.

  60. Ready? by Anonymous Coward · · Score: 0

    I just finished the hello world that makes me a black hat right?

  61. Re: All hail Python! by Anonymous Coward · · Score: 0

    I think the whitespace thing is nice for readability but often a pain for writing. Many times when pasting code snippets I've had to pause to determine; umm where should this go?

  62. Peopleware by cowdung · · Score: 1

    Tom DeMarco and Tim Lister's Peopleware book covers issues about productivity and is often quoted when people say that some developers are up to 10x more productive that others.
    (see http://www.amazon.com/Peopleware-Productive-Projects-Teams-3rd-ebook/dp/B00DY5A8X2/ref=sr_1_1?ie=UTF8&qid=1389069388&sr=8-1&keywords=peopleware)

    In summary the book looks into issues of programmer productivity. It explores the role of computer languages and concludes that for the most part which programming language is being used will not have a huge effect on productivity with the exception of Assembler. The jump to 3rd generation computer languages makes programmers MUCH more productive than Assembler, but between those languages and even the so-called 4gls there is not a great difference. (However, it would be interesting to see this study repeated with modern applications + languages, because writing web apps involves so many tools and third party tools that I would guess that there IS a difference between writing a web app in C vs Ruby on Rails)

    The book then goes on to note that a far greater impact on productivity is the programmer's environment and the book fixates on the issue of a noise free environment and a door that closes. Interestingly a large part of the industry has forgotten the Peopleware lesson and has moved back to "open floor plans" or "cubicles" while the book cites studies showing that these increase the distraction rate and productivity of programmers.

    A great book and and entertaining read.

  63. Re:Eskimo words for snow. by Anonymous Coward · · Score: 0

    I hear from linguist friend of mine that the theory that Eskimo have a huge number of words for snow was a mistake.
    Apparently the investigator didn't properly understand the rather complicated inflection mechanisms in the language, and what he thought was many words was actually something like many adjective-noun combinations.

  64. Re:The best language to negotiate peace by Anonymous Coward · · Score: 0

    The best language for diplomats to negotiate peace is probably not Klingon.

    -- hendrik

  65. Re:All hail Python! by Adam+Jorgensen · · Score: 1

    I agree. Python is nice but the replacing visible braces with invisible whitespace is basically a dumb idea.

    If a coder needs to be forced to indent properly then the coder in question should just stop coding all together and save everyone the trouble of reading their code.

  66. bash by Gunstick · · Score: 1

    yes, seriously.
    it's quite difficult to make bash execute input data. You'll need to pipe it into another shell instance or explicitly execute it with -c or eval.
    You don't believe that? prove me wrong!

    --
    Atari rules... ermm... ruled.
  67. Empirical comparison of programming languages by Anonymous Coward · · Score: 0

    WTF Slashdot? Why am I logged in on all pages _except_ this one?!

    Lutz Prechelt, "An empirical comparison of seven programming languages", 2000.

    Lutz Prechelt, "Are scripting languages any good? A validation of Perl, Python, Rexx, and Tcl against C, C++, and Java", 2003.

  68. including ASP means the study is flawed by PJ6 · · Score: 1

    Any proper comparison between languages must leave out the UI, otherwise you're going to entangle the maturity and suitability of the presentation frameworks into the results.

    Then there's the whole "stability under changing requirements" metric, which I'm sure wasn't even touched upon...

    I'm not sure how useful it is to attempt a comparison like this. If you've ever done Project Euler and looked at all the different posted answers to the problems you solve, you realize that a lot of these hand-waving language metrics on 'productivity' and 'expressiveness' are pure bunk. C#/Python/Haskell/Clojure/etc... static typing, dynamic typing, it doesn't matter - all the good solutions look the same in this class of modern languages. Then there's the less expressive languages like C and assembly, and the reg-ex like languages R/J/K. These aren't really worth comparing with the first category because their proper use cases are so different. Then you have a the occasional Java retard posting eight pages of code where one paragraph was sufficient for everyone else.

    I would say it's not the comparison between languages that is useful per se, but rather comparing the cruft and practices that surround them.

  69. Re:All hail Python! by Doomsought · · Score: 1

    I had to do a networking project using a python library. Having to fuck around with a python socket made glaringly obvious the flaws of a language that does not support type casting. Don't call the bullshit python pulls type casting, because those are parsing library functions, not type casting.

  70. Re:All hail Python! by TsuruchiBrian · · Score: 1

    What were you doing that you needed to d typecasting as part of a network socket functionality? I've never used python socket, only higher level network libraries like urllib, httplib, etc.

  71. Re:All hail Python! by Anonymous Coward · · Score: 0

    The whitespace significance in Python annoys me, too, for a variety of reasons, one of which I've never seen anyone else describe.

    In an imaginary world of only Python developers, I have lost one tool I could use to immediately reject any 2nd round job applicant - sample code that is not indented. If a programmer doesn't understand the role of indenting (and somehow shines his way past the initial interview), then it is all but guaranteed that he has little to offer in terms of competence. It's like a "tell" in poker; you know right away that he's bluffing.

    AIUI, Guido wanted the semantic whitespace because he was irritated by all the unindented code he had seen, and of course he fully appreciates the importance of indentation. He and I are in lock-step right up to that point. However, I think he made an unfortunate error in enforcing indentation this way. I believe programmers who do not grasp indentation are necessarily broadly lacking in the fundamentals, and lack of indentation is simply the most obvious symptom of a crippling problem. Furthermore, I doubt that forcing indentation on an otherwise inept programmer is likely to engender all the other necessary improvements in his craft.

    Sure there might be rare exceptions. Perhaps there is some genius programmer out there who doesn't indent because he's so brilliant that he could just as easily write and maintain code all on one line. But I'm as likely to see a resume from that programmer as from a Unicorn.

    Finally, this isn't just about job applicants. If I'm selecting from a set of open-source libraries for some feature I need to add to an existing program, I can move right on to the evaluating next library if I see that all the source code is stuck to the left side of the editor window.

    - T

  72. Re:people who spent ... entire [programming] lives by dakra137 · · Score: 1

    Was it Javascript that terminated their observably short programming lives? Was it what the experience did to them or what others did to them due to the { quality | performance | maintainability | other } of the results?

  73. environments, team, & domain matter by dakra137 · · Score: 1

    The execution environment matters if the application runs in one.

    Execution size & time matter if execution will be long or done many times, or in a constrained environment.

    Compile time matters if it only has to run once. That's why there was WATFIV.

    If there are any, the standards of the team or organization that produce or consume the source code matter.

    Readability and maintainability sometimes matter. I did a lot with APL, including enhancing a program where the flow chart was over 40 pages, but the program was so well structured, it was easy. In most personal programming cases, however, any complex function had to be written and tested in one day. After that, it was almost undecipherable, even by the author.

    Verbosity matters to poor typists. It gets in the way of understanding. Did the person who came up with, "Blah blah = new Blah;" stutter? In what way is groovy inferior to java?

    Domain really matters. Once I needed something to generate several drawings for a patent application. I considered generating SVG, I considered macro capabilities in a CAD package. In less than a day, I learned and made the diagrams with MSLogo. If I had to do it again, I might use python turtle graphics, but it would have been more verbose..

  74. Re: All hail Python! by bbsalem · · Score: 1

    One has to get past Python's definition of white space. Just because source loots indented on the page doesn't mean that Python will accept the white space. This is true because of spaces getting mixed up with tab characters, they are not seen as the same and many editors don't help you very well wih this. It is almost as if you must do 'cat -v' to be sure.

    I agree that once you get past that, Pythons notion of structure is easier to see than with braket-blocked syntax. It is more compact.