11 ms·
Learning Curves for Different Programming Languages
- salafy 12y agoWhat about ruby ?
- dorfsmay 12y agoIt would need a third line for ego!
- gamesbrainiac 12y agoNo dude. Its too agile to be evaluated ;)
- notacoward 12y agoI think the fact that Ruby didn't even make the list tells a lot about how far it has fallen in terms of mindshare. I have nothing against Ruby, its people or its ecosystem, but it's beginning to seem like a bit of a flash in the pan.
- sergiotapia 12y ago10 years+ totally a flash right?
- notacoward 12y agoWhen you have more than a few years' experience yes, something like this seems like a flash in the pan. http://www.tiobe.com/index.php/content/paperinfo/tpci/Ruby.html http://www.tiobe.com/index.php/content/paperinfo/tpci/Ruby.h... Peaked in 2009, now down to a third of that popularity. Other measurements might give you different numbers, but the same trend. As I said, I have nothing against Ruby, but it just doesn't seem to be holding its position.
- reledi 12y agoReally? I've had the opposite experience. Maybe it's just the type of communities I hang around, but Ruby seems to have a lot of mindshare right now.
- hexaust 12y agoAdd ruby and c#
- melling 12y agoHow about C# vs F#? Both have great support. You'd think if people were 2x-3x more productive in a functional language, you'd get a lot of developers moving from C# to F# because both have excellent support from Microsoft.
- DavidSJ 12y agoPresumably inspired by http://www.terminally-incoherent.com/blog/2006/08/01/text-editor-learning-curves/ http://www.terminally-incoherent.com/blog/2006/08/01/text-ed...
- gexla 12y agoPoor PHP. It just keeps getting dumped on.
- solox3 12y agoBesides that list-dict array implementation, it really hasn't much left going for it.
- coldtea 12y agoWell, it has closures, interfaces, dead easy reflection, traits, namespaces, etc etc, speaks to tons of systems, includes tons of batteries, has a great dependency manager, is dead easy to deploy, has a huge ecosystem and good tooling, etc.
- rimantas 12y agoMy impression is that most of those who badmouth PHP never bothered to find out what has changed since 4.x days.
- zxcdw 12y agoAnd rightly so. Frankly, I think the only reason PHP keeps floating on is the inertia it has. All the investment in tools, existing codebase and developer experience are what keep it going, not language merits. And yes, this means, that whatever you invest in, be ready to abandon it and move forward, preferrably sooner rather than later. After all, langauges are nothing but tools. Don't take them personally.
- coldtea 12y ago>And rightly so. Frankly, I think the only reason PHP keeps floating on is the inertia it has. All the investment in tools, existing codebase and developer experience are what keep it going, not language merits. Considering the alternatives PHP is not bad at all. It's not like Python or Ruby are some pinnacle of language design. It's main BS is a polluted default namespace, incosistent function naming, and a few semantic inconsistencies. It's not like any other language doesn't have its share of BS. Plus what it lacks (a proper AST etc) it's getting. It has been improving ever since 5.0, and fast. Including getting a vast speed increase with 7 that will leave Python and co in the dust.
- tdsamardzhiev 12y agoPretty accurate, I'd say.
- raverbashing 12y agoDecorators are more than simple syntactic sugar in Python ;) It seems overly critical, but still funny (the Haskell one is probably the most spot on) And after all, Facebook uses PHP and MySql
- amirmc 12y agoSure, FB uses PHP but it's also very interesting to see how they've created things like Hack and Flow (built using OCaml, iirc) to improve the quality of their code.
- frostmatthew 12y ago> Facebook uses PHP This is the common rebuttal of PHP jokes - but pointing to a sole outlier is rarely a solid defense. Especially when they have created Hack[1] and HHVM[2]. So it's not entirely accurate to say they "use PHP." [1] https://en.wikipedia.org/wiki/Hack_(programming_language) https://en.wikipedia.org/wiki/Hack_(programming_language) [2] https://en.wikipedia.org/wiki/HipHop_Virtual_Machine https://en.wikipedia.org/wiki/HipHop_Virtual_Machine
- raverbashing 12y agoSure, they created those tools. But they grew on PHP. Those tools came to be after "a lot of time" And of course they're not the only site that uses PHP (see all the Wordpress installations, etc)
- aikah 12y agoHHVM language is PHP,Hack is a spinoff of PHP. So yeah,they basically use PHP. HHVM is a different implementation,while Hack is a superset. Now why,with the tons of money they have,they chosed to stick with it,I dont know. But it's 100% accurate to say they have some PHP code powering their website. But I bet they have as much java code deployed,and next to none haskell.
- frostmatthew 12y ago> Hack is a spinoff of PHP. So yeah,they basically use PHP. That's like saying applications written in C++ are "basically C" or Groovy is "basically Java."
- coldtea 12y agoHe wanted to make a cheap joke, but PHP should be the opposite: productivity is rather high, while self-assesment is low.
- gamesbrainiac 12y agoJoke question: Is your self esteem low?
- coldtea 12y agoJoke answer: no. I'm not even a PHP programmer especially (though I've worked with the language in several occasions). Cut my teeth decades ago, when the web was just starting, Perl was king, Python didn't have half of the stuff it has in 2.7, and AJAX wasn't even a thing.
- aaronem 12y agoI think by "self-assessment" is meant something more like "self-regard", the whole being taken to mean that PHP programmers have a relatively high opinion of themselves, which is not justified by the code they generate. I gather the author is perhaps not a native speaker of English, so perhaps this is a subtlety which has simply passed him by. As such, I've opened an issue on Github to suggest the replacement of the term. (Also another, to suggest the Javascript chart be updated to account for promises; I've somewhat less high hopes of that one, given that the author appears to be a disciple of the Haskell language family and to entertain the prejudices so commonly associated therewith, but who knows? It's worth a shot, in any case.)
- coldtea 12y ago>I think by "self-assessment" is meant something more like "self-regard", the whole being taken to mean that PHP programmers have a relatively high opinion of themselves, which is not justified by the code they generate. I read it this way too, and this is what I'm disagreing with. I've seen far more programmers for other languages having a high opinion of themselves than PHP guys, which are more workman-like. The worst offender in this regard would be some Javascript guys (and their n-th rediscovery of the computer programming wheel).
- virtualwhys 12y agotl;dr humerous Haskeller takes steaming dump, rejoices; one may think that one is not being productive, and yet one's actual productivity sky rockets, whereas in other languages (exception, LISP) one's actual productivity is less than one feels, especially in the case of PHP where delusion apparently reigns. Seems to be a riff on the text editor comic graph where emacs morphs into dragon-eating-its-tail recursion as one approaches unreachable mastery [1] [1] http://ergoemacs.org/emacs/emacs_fun.html http://ergoemacs.org/emacs/emacs_fun.html
- esaym 12y agoUgh, they left off Perl.
- aikah 12y agoThis isnt even funny.Unless you want to take a cheap shot at PHP and glorify Haskell,the language everybody brags about but almost nobody uses professionally.
- stared 12y agoIt seems that it interchanges "productive" with "writing clean code". PHP is ugly but can be productive. Haskell is beautiful, but well, I know a lot of people encharmed by it, but no-one productive (i.e. delivering products quickly; it's not the same as solving pure, mathematical problems).
- cstrahan 12y agoInteresting. I like working in Haskell precisely because it allows me to iterate faster than in something like Ruby/Java/Clojure/<insert-more-popular-language-here>. Granted, I'm not paid to write Haskell, but I think that's more ironic than anything else. Perhaps someone from industry can confirm my feelings here.
- Ixiaus 12y agoI will [subjectively] confirm it. I've rebuilt two startups from Scala / Python messes with Haskell. Turn around time was counted in weeks (original build time was > 6 months), code is clearer, many unhandled edge cases were illuminated by the type system (some simply due to the rewrite), bringing in another Haskell programmer was painless and he was able to safely refactor the entire code base to make it even cleaner and robust while operating in production with zero regressions and no unit tests. We can iterate faster, the type system prevents us from doing dumb, fallible human things, it makes it easier for other programmers to get up to speed, it is fast, the community is brilliant, and because of its static guarantees open source tooling (even if abandoned) is possible to use because of the aforementioned ease of coming up to speed, the type system is a stringent form of documentation, and you can tweak without fear of introducing regressions (mostly, I can't say all but definitely most).
- MaxGabriel 12y agoDo you know alot of Haskell programmers? Because I'm enjoying my typesafe SQL queries, typesafe intra-application linking, typesafe templating, etc. Haskell is capable of far more than "pure, mathematical problems"—indeed, typed IO is a premier feature of the language. edit: sorry, this was pretty defensive; I shouldn't have written this comment so hastily.
- balloot 12y agoI am increasingly convinced that Haskell only exists so that people who know it can pat themselves on the back for being wonderful.
- coldtea 12y agoWith the exception of pandoc, I don't recall seeing anything particularly impressive from the Haskell camp. (Btw, this, actual stuff people use, is how I measure programming languages -- this metric takes into account communities, libraries, practical issues, etc all together, and ties them with practical results. It's my version of "let the market decide").
- cageface 12y agoDarcs used to be the poster child for Haskell but then somebody came along and wrote a much better DVCS in C, of all languages. Draw your own conclusions...
- mempko 12y agoStill use darcs to this day. Darcs is magical AND productive. I use a script to play back my darcs commits into a git repo so i can put my projects on github. I love you darcs, I love you.
- imanaccount247 12y agoA much worse DVCS, but written by a famous person.
- jeremiep 12y agoxmonad also comes to mind. But you're talking more about products than programming languages. Haskell contributed a LOT to programming theory. Your every day coding is most likely using things coming directly from Haskell without you knowing it.
- jbeja 12y ago
- imartinez 12y agoBad programmers are bad no matter the language... Why you don't waste your time writing an interesting post of your preferred language instead of make jokes about another ones? Maybe the answer is that you can't even write a line of quality code... you people the Nelson Muntz of code..
- finid 12y agoFor elmers out there, what will a graph of Elm look like?
- rubiquity 12y agoProbably similar to Haskell, but with less productivity :p
- phamilton 12y agoI would say less erratic. Same initial, but Monads and Category theory are much more watered down.
- Dobiasd 12y agoFor me the graph would look like pure awesomeness. :) Similar to the Haskell graph but with less starting problems.
- rubiquity 12y agoI'm not a PHP user, nor do I like PHP, but I do know plenty of PHP users that are quite productive with the language.
- seppo0010 12y agoThere's no scale on the vertical axis to compare different curves. You can only compare the productivity and the self-assessment within a language.
- rubiquity 12y agoGood point. Darn my brain for being conditioned to drawing concrete correlations from graphs.
- brandonhsiao 12y agoBut you can compare derivatives. Which is the stab at PHP.
- Tehnix 12y agoDoes anyone know how the graphs were drawn?
- aftabh 12y agoThe graphs have been generated using Python's matplotlib[1] 2D plotting library[2]. [1] https://github.com/Dobiasd/articles/blob/master/programming_language_learning_curves/generate.py https://github.com/Dobiasd/articles/blob/master/programming_... [2] http://matplotlib.org/index.html http://matplotlib.org/index.html
- kwikiel 12y agoI love to see PHP vs Haskell debate about productivity while actual work is done in Python.
- deleted 12y ago[deleted]
- brucehauman 12y agoFor goodness sake people. You can take a comic as an attack on a particular programming language, but how is this useful? Maybe there is wisdom in this comic or not, but there is value in people reflecting and presenting a humorous point of view. I have used all of the languages above and found the comic humorous and greatly exaggerated. But I think that there is something here. If you haven't really used the exalted languages in this comic please try them. You can only learn from the experience. Also, if users of a particular language appear to be elitist, this does not say anything about the value of the language itself. An open mind is going to be both happier and more capable.
- iSloth 12y agoReally don't understand the pure hatred that people have for PHP, I'm at network engineer and I don't have any desire to become a programmer because I love my job, however I've wrote some very useful applications that myself and my team use on a daily basis to make networking easier for us. For me it was simple to learn PHP and create something 'useful', basically every web server is capable of running it which makes my life a lot easier as well. Surely the fact that someone can hack together code within a few minuets that doesn't profess to be a coder is a good thing, regardless of the language that there using? There is no better programming language than the one you know.
- SixSigma 12y agoI'm no mechanic and I have no desire to be one but I've changed my own brake pads, surely anyone can adjust their car's brakes and many other tasks with a few simple tools and a book. I don't understand why mechanics say some cars are better than others.
- Cyclone_ 12y agoI think that was the best comment on hacker news I have ever seen.
- gmu3 12y agoIn addition to being obnoxious I don't even think your analogy is correct. Programming languages are the tools, and it makes sense a non mechanic wouldn't understand why some tools are better than others.
- iSloth 12y agoPlaying around with motorbikes is actually one of my hobbies, and I have some very nice and quite expensive Snapon tools which work wonders in the garage. However I'm certainly not going to suggest that changing your breakpads was done incorrectly because my tools cost more than what I'm assuming yours did, or that I could complete the same job a bit quicker and therefore better. Sure, if you're going to change break pads all day long for the next year I can suggest some very nice tools which might help you. But instead I'd like to say well done on changing the break pads, I'd wish more people would use the tools that they have at there disposal, show some initiative, and do the same.
- sergiotapia 12y agoSay what you want but PHP is one of the most Rambo-bad-ass languages I've ever used. You toss everything to the wind if you want and you will still get a working product. Few languages have that sheer "Survive" feel to it. For that alone I think PHP should be celebrated. Note: I'm not a PHP developer.
- krapp 12y agoI think that most of the things people hate about PHP are the things that make it work. It doesn't force you into a particular paradigm, and it all but encourages mixing PHP and HTML together into one horrifying but incredibly convenient stew. It doesn't force you to write clean, elegant or secure code (you can, but it doesn't hold your hand in that regard.) A lot of it is still just wrappers around c. You're not chained to a package manager (although you can use one if you want) or a framework (although you can pick one of many.) And yet, for almost everything people want to do when they want to put something on the web, it's not only perfectly adequate, but in some ways more efficient than other languages. Most of the web is still CRUD anyway. Take stuff from a database, iterate it, insert it into html, serve html. Or maybe do all that, and serve json instead. This is still far, far easier to do in PHP than it is other languages. That said, as a professional PHP developer, there is still plenty about the language that drives me up the wall. I think anyone who works with it and is serious will admit there are issues with the language. But no one can say it isn't battle-tested, or that it doesn't make it easy to get something up and out onto the web.
- codygman 12y ago> You toss everything to the wind if you want and you will still get a working product. This is actually the reason that I recommend Haskell for startups. As another commenter said in this thread it gives you a line of technical credit so to speak. This is mainly because the type system and referential transparency (pure functions) makes it so easy to refactor and be confident that your code is still working.
- xrstf 12y agoOh wow lel so funny, 10/10, pease make more PHP jokes, they are so super funny. And you are right, too! Not a single PHP developer was ever productive and shipped a product. None. Never. And especially PHP devs walk around and proclaim "We are the elite! Our language makes coding fun and hip!!!!" all the time. </rant>
- vdaniuk 12y agoActually, right in these comments PHP programmers proclaim how productive they are, how PHP powers half the web and how Haskellers haven't done anything practical. So it seems your sarcastic rant completely misses the mark. Disclaimer: not a haskell, nor a php programmer.
- jbeja 12y agoWhich language do you use this days?
- vdaniuk 12y agoI've discovered elixir several weeks ago and fell in love. Dynamic functional language with great concurrency support and ruby syntax. Wow. Lots of other goodies, too. Started a complete rewrite of my data analysis project in elixir and it is going great. I am nearly sure that my chemistry with elixir will stick for a long time. Due to practical reasons javascript is my primary choice for small, short-term projects. As an example, meteor is really interesting. I consider JS to be a safe-ish investment of my time due to its momentum and huge ecosystem. It doesn't make me happy, though. So, to answer your question my languages of choice are JS + Elixir. Before elixir I've tried python, ruby, go, r, javascript, haskell and c. Btw, I consider programming in haskell to be a good learning exercise for understanding advanced CS concepts.
- phamilton 12y agoEveryone seems to be focusing on the PHP vs Haskell thing and seem to be missing the other points. Here's a summary: Callbacks in Javascript make you feel more productive, but in fact you become less productive. Design patterns in Java don't actually make much of a difference in productivity, but you think they do. Templates in C++ seem hard but with a big payoff, but they don't accelerate productivity. Unit tests in python do make you more productive, though it doesn't feel like it. Decorators on the other hand do not make you more productive, but they make you feel more productive. In Lisp, macros accelerate both the feeling of productivity and actual productivity. In Haskell, once your brain stops hurting you become productive. When you learn monads, your brain will hurt for a bit. While your brain hurts, your productivity declines. Once you get past understanding monads, your productivity grows at roughly the same rate as it did before you knew monads (in other words, monads do not accelerate productivity). Then you learn category theory, which has no bearing on your productivity but makes you feel less productive. PHP is a bit of a cheap shot, stating that you won't become more productive over time but you will always feel super productive.
- Xeoncross 12y agoIt's funny that we feel PHP doesn't make you more productive, yet most of the web was running PHP apps until a few years ago when better languages gained momentum and we saw new web sites not built in PHP. Wordpress, phpBB, Drupal, IPB, Joomla, vBulletin, Facebook, Yahoo!, DeviantArt, etc... Now PHP making you a better programmer... that's a different matter.
- phamilton 12y agoThe decision to use PHP is not represented in the graphs. What the graphs say is that as you gain more experience with PHP you don't necessarily become more productive. 1 yr PHP experience == 10 year PHP experience.
- logicallee 12y agoI think your parent is referring to the fact that the Productivity graphed for PHP is the worst of all the languages, even at t=0 (except Haskell, which is shown as starting out with 0 productivity for a while.) I also strongly disagreed with that for the same reason your parent comment did. The self-assessment bar is funny, but hte blue (productivity) graph needs to be way higher.
- iamcreasy 12y agoI wish the article didn't include the php learning curve. Then this thread could have been an interesting read.
- rubiquity 12y agoWould learning Monads really come before learning Category Theory in Haskell?
- akurilin 12y agoAFAIK a big chunk of productive Haskell developers have no understanding of Category Theory.
- codygman 12y agoI'm productive in Haskell and I don't know category theory. I didn't "learn" monads specifically, I used them in my projects and gained an intuition for monads followed by memorizing the 3 monad laws.
- dllthomas 12y agoWhat distinction are you making between "learning monads" and "gaining an intuition for monads and memorizing the 3 monad laws"?
- codygman 12y agoContinuing to use Haskell for practical things even though you may not totally understand monads. But besides that, yeah... same difference 😉
- coldtea 12y agoThe distinction that memorizing 3 simple rules is not exactly a deep understanding of category theory.
- dllthomas 12y agoI wasn't asking for any distinction from "a deep understanding of category theory". Neither "learning monads" nor "memorizing 3 rules and building intuition" stands a chance of being identical to that, though.
- 12y ago
- creyes123 12y agoI am working on a commercial SAAS application written in Haskell. I have been programming computers since 1980, with solid experience in at least a couple dozen programming languages. I chose Haskell for this project because of its programmer productivity and runtime performance. I have not been disappointed. I am always amazed at how little code it takes to get things done. The Achilles Heel of too many languages and their implementations is concurrency support. Haskell had that problem licked ten years ago. Once my code compiles, I know it has few remaining bugs. It runs fast and there are enough good third party libraries to meet my needs. So what's not to like about Haskell? It has a brutal learning curve. Not so much because it is hard, but because it is different.
- cstrahan 12y agoThe stigma around Haskell is quite unfortunate. Most complaints that I've heard leveled at Haskell are variations of "it's too academic". Given that those complaints usually come up when one is tackling abstractions like Functors, Applicatives and Monads, it would seem that the true sentiment is that "Haskell is too abstract". Interestingly, I have yet to hear someone complain about abstractions like Collection, Stack, Dictionary, or looking at the ever popular OOP abstractions Class and Method. Why is it that OOP is widely accepted[1], and yet Haskell-like FP has yet to take off? Well, I think I have an explanation for why this is. The abstractions commonly used in Haskell are perhaps a bit "more abstract" than those seen in most OOP programming. Most people can intuit the value of collections/classes/etc., and those that can't are pushed in the right direction by the majority of the industry. Compare the situation of popular imperative languages to that of Haskell: the utility of the former is easily acknowledged and has the support of the industry, whereas the latter is harder to fully appreciate without investing some time and has the industry actively suggesting that the abstractions are useless. Haskell-like FP is, unfortunately, where OOP probably was when it was still "the new thing". "Why would anyone use this? Classes, interfaces, methods, messages... Too academic!" And then OOP picked up momentum as people discovered the utility of encapsulated state, programming to an interface (instead of an implementation), the ability to isolate the System Under Test via mock objects... And then those that tasted the benefits worked really, really hard to shift the mindshare of the industry to accept these abstractions as "good things". I hope Haskell et al will get there some day. The thing is, ideas like Monads are incredibly useful - just as useful as any of the more popular abstractions. They're just one more tool in the toolbox - if you don't know them, you might be missing out. In an attempt to dispel the myth that abstractions common in Haskell are academic and useless for professional programming, I would ask one thing of you: please, please, please watch Tom Stuart's talk "Refactoring Ruby with Monads" (given at Barcelona Ruby Conference 2014): https://www.youtube.com/watch?v=J1jYlPtkrqQ https://www.youtube.com/watch?v=J1jYlPtkrqQ The abstractions are useful. Yes, just like any of the abstractions that you may have already mastered, they do take time to learn. It's an investment. I know the payoff might not be immediately obvious, but I promise that it's right around the corner. There's a practical, pragmatic reason Haskell is being used to great effect at places like ThoughtBot, Facebook, Skedge.me, and more. [1] This is almost a given now: recruiters have often quizzed along the lines of "why is OOP a superior paradigm?"
- bluecalm 12y agoCan you share what did you use to make those beautiful graphs ? I really like the fuzzy axis lines.
- defenestration 12y agoI found this generator in the repo: https://github.com/Dobiasd/articles/blob/master/programming_language_learning_curves/generate.py https://github.com/Dobiasd/articles/blob/master/programming_...
- douglasfshearer 12y agoThe author is using the Matplotlib Python library. [1] Similar style charts to that used by Randall Munroe in XKCD. See also this D3 style for producing similar charts by Dan Foreman-Mackey. [2] [1] http://matplotlib.org/xkcd/examples/showcase/xkcd.html http://matplotlib.org/xkcd/examples/showcase/xkcd.html [2] http://dan.iel.fm/xkcd/ http://dan.iel.fm/xkcd/
- trcollinson 12y agoIt seems like a lot of people love to hate PHP, and I am not the biggest fan of PHP myself but some of the arguments are a bit off. My current consultancy focuses on coming into companies in a last ditch effort to fix problems with startups, generally after they have failed some sort of technical due diligence when being sold. I get a fairly even mix of most languages (Ruby, PHP, Python, .Net, Java) and they all have problems in the wrong hands. In 2014 (so very recently, this year), I was brought into a company that was just about to be sold and failed a technical due diligence. One of the red flags was that most of the engineers were in the process of leaving having "accomplished a dream and sold their amazing system to a large organization". They left for really big, well known companies rather than finish the technical due diligence and take an aqui-hire position. A look at the code showed why. While these were all honestly rather Senior level engineers, they had written some of the most horrible Ruby, JRuby, and Clojure code I have seen in my career. Often it seems they decided well known and good frameworks were just "not good enough" so they decided to write and not maintain their own. Their list of technical sins was quite long but the last I will mention is that they never could decide, from day to day, what the right architecture was, so they just changed it, over and over, on a whim. The point of this story is, languages don't write poor code, engineers do. I know that people will say, "But PHP has an ecosystem of Junior developers just picking it up and pushing out bad code and never really learning." This may be true, but it's actually just as true with Ruby, Python, .Net, and Java. Those languages, Ruby and Python in particular, are just much better at the PR game of making themselves look "more mature" than PHP is.
- misingnoglic 12y agoSomeone needs to label their axis better
- smt88 12y agoThis is a lot of debate for something that's intended to be funny. If all the lines were accurate, would it have been funny at all?
- horrido 12y agoRe: Haskell monads If something hurts my brain, I don't want to do it; I don't care about the long-term benefits. Most humans feel the same way and that's why Haskell will never become mainstream.
- JoeAltmaier 12y ago...and that's the difference between an amateur and a professional.
- horrido 12y agoNo, it's not. Software developers are human. Being a professional does not always override human nature. Statistically, most "professional" software developers will not want to adopt a language with a high cognitive load.
- JoeAltmaier 12y agoDoing what you need to do, and not what you want to do, is the heart of professionalism.