3 ms·
Not to be to contrarian but until I see proof to the contrary I think Norvig put said it best: In terms of programming-in-the-large, at Google and elsewhere, I
by stonemetal 15y ago
Not to be to contrarian but until I see proof to the contrary I think Norvig put said it best:
In terms of programming-in-the-large, at Google and elsewhere, I think that language choice is not as important as all the other choices: if you have the right overall architecture, the right team of programmers, the right development process that allows for rapid development with continuous improvement, then many languages will work for you;
- thesz 15y agoArchitecture heavily depends on the language. You have to make different choices for C++ than for Java, not mentioning Haskell. Also, I think that comma before "the right" in Norvig statements means logical AND. If we rewrite that statement it will look like that: if you have the right overall architecture AND the right team of programmers AND the right development process that allows for rapid development with continuous improvement, then many languages will work for you. I think it is too many AND's here. In most realistic situations you cannot have such luxury. Also, choice of Haskell (or similar language) allows you to address at least two points from Norvig statement: the right team and right development process. Those who learned and applied Haskell almost cannot form the wrong team. Almost - as we cannot rule out failure completely. The right development process is almost ensured by strong type system. Type systems like Haskell's can be viewed as a tool to spread requirement changes through complete program. (that's why it is seemed hard to introduce or change a constructor in a data type) So all in all I think that languages make a difference here. For many languages you should fulfill those three points, for some languages those points fulfill themselves.
- eru 15y agoAs much as I loath Java and co, I have to give them that their mature development tools make up a bit for their weakness. I.e. in Haskell you make a change to a type and propagate it, until the compiler stops complaining. In Java you click some `refactor' button in your IDE, and your changes will propagate through the code base automatically. That's less of a comment on the languages, since Haskell will probably grow better tools some day, but more a comment on the relative stages of maturity.
- sharmajai 15y agothe right development process that allows for rapid development, well rapid development is the reason people write webapps in python/ruby/node and not C++. We have to stop pretending that language choice is immaterial, hadn't it for C we would still be typing in our single and double mouse clicks into an OS written in assembly.
- stonemetal 15y agoHave you ever seen a project succeed or fail where anyone involved said "You know, if we had used a better programming language it would have all worked out"? I have seen projects succeed or fail based on those three things Norvig calls out, I have never once seen a project succeed or fail because of the language used. Is it important that we have moved beyond hand coded assembly? Unequivocally, yes it is. Are you going to fail because of your language selection? Maybe if you pick Assembly, beyond that language selection isn't even a rounding error on probability of success. You can certainly develop rapidly in C++ if you have the right process and people. In fact that is where that quote came from, Norvig noting that devs at google where not hampered by their choice of Java and C++.