3 ms·
Agreed. And interesting you said C and Python. A few years ago I was thinking about what would be the minimum set of languages that would be good to know in or
by mkramlich 16y ago
Agreed. And interesting you said C and Python.
A few years ago I was thinking about what would be the minimum set of languages that would be good to know in order to be able to do almost anything you wanted, and do it well, and to always be employable. I ruled out 1 language alone because of the C phenomenon: there's a whole class of software where today C is the best choice, and a whole different set where C is a bad choice. Therefore, the ideal set was 2+ with C being one. I ended up settling on C, Java and Python. Java for enterprise/BigDumbCompany work, but also because there's a lot of great tooling and innovation happening in the Java space more so than other langs. Python for the role of glue and prototyping and high level no boilerplate bureaucracy but where you could still trust every developer using it. Ruby could probably fill that role decently instead, except be a little better or worse in diff areas.
C, Java, Python
Then I found out that Google had picked these three as well. Nice!
- kragen 16y agoNo, Google picked C++, not C. Very different philosophy!
- mkramlich 16y agoThanks, looks like you may be right. I just found a post by Steve Yegge in 2007 where he said it was C++, Java, Python and JavaScript. I'm pretty sure I found references elsewhere to C/Java/Python though. Close enough. I had forgotten about JavaScript, I guess I considered that one a no-brainer on the browser side. However, the line blurs between C and C++, especially if you use the extra stuff only tactically as needed rather than a hard-core-always-OO-and-templates approach.
- mkramlich 16y agoBtw I considered C++ for the C slot. But decided if I really wanted 1st class OO support in a language that Java or Python could do that acceptably, and it wasn't worth the price of dealing with what I felt were C++'s design imperfections. So it fell back to: * C for (somewhat) bare metal programming (OS, embedded) * Java for high-level with rubber edges and safety wheels, esp huge codebases in enterprise IT shops with Joe Blub coders * Python for high-level agile w/solo or small elite teams (calling out to C bits where beneficial)