4 ms·
Analysis paralysis! The computer is a machine. It understands one language. Everything else is sugar on top. The language you should choose is the one that exi
by agentultra 14y ago
Analysis paralysis!
The computer is a machine. It understands one language. Everything else is sugar on top. The language you should choose is the one that exists at the right level of abstraction for the problem you're trying to solve. That's a very academic way of saying, "choose the right tool for the job."
Personally I'm of the opinion that you can get really far knowing C and Common Lisp. They represent two fundamentally different models of computation and all of the other languages (save the Smalltalk offshoots and obscure ones I haven't had the pleasure of experimenting with yet) are essentially sub-sets of functionality from one or both of these two languages.
It's too easy to get caught up in the "feature creep," of all of the languages available today. Some will claim "immutability by default," is a feature. It's not. Any sufficiently sophisticated evaluator of a language can stratify a program into a process capable of emulating a machine that can treat all memory as "immutable by default." It's important to remember that often these languages are created to solve a specific problem and then evolve over time to become more general. It is best, in my experience, to just go straight to the source and work down to what you need.
- rdtsc 14y ago> Personally I'm of the opinion that you can get really far knowing C and Common Lisp. Yup. I advocate a fast running & low level language like C plus a quick to get started with lots of libraries language like Python. At the end of the day, unless pure algorithms are the deliverables (and it may very well be), it is really about the libraries and ecosystem. In the majority of cases, it is simplest to re-use code someone already wrote. Who cares if this language compiles to assembler and is super functional and does all kinds of fancy tricks, can it read from Postgres or talk to RabbitMQ? Does it have an easy way to parse JSON or generate uuid's, or do I have to now spend time writing db drivers, json parsers before even starting on the real problem?
- cpprototypes 14y agoI agree that it's enough to know well one low level (or medium level) language and one high level language. For me, I decided a while ago that the two languages will be Java and Javascript. It was an easy decision since I use those languages at work, they both have healthy and growing ecosystems, and active communities.
- RBerenguel 14y agoFor the first few years of my programming life (for research) these were exactly my only tools, and indeed they are perfect except when you get into "get something done fast" Then Python wins... Now I know far more programming languages, ideas and abstractions (btw: Prolog should also be a leg in that stool, since it offers things that can blow your mind... Sometimes :)
- agentultra 14y agoProlog (and by extension I assume, logic programming) is an interesting way to solve problems. However it is rather simple to implement and evaluator in Common Lisp that can read and execute Prolog-like programs.