View Single Post
Old 12-28-2022, 05:08 AM   #208
jbjb
Somewhat clueless
jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.jbjb ought to be getting tired of karma fortunes by now.
 
Posts: 798
Karma: 11569273
Join Date: Nov 2008
Location: UK
Device: Kindle Oasis
Quote:
Originally Posted by Aleron Ives View Post
My question would be: if you need to learn multiple languages to be a "good" programmer, but you can accomplish all the programming tasks you need using only one language, why would anybody want to be a "good" programmer, when learning more languages requires a great deal of unnecessary effort?
Firstly, I think your premise is wrong - unless your range of tasks is particularly narrow, it's unlikely that any single language will suffice for all of them (for professional programmers, at least - hobbyists may well find one language can solve all the problems they're interested in).

Part of the skill of a good programmer is in choosing the right tool for the job - if you only know one language, your options are limited. As DSNB said above, if your only tool is a hammer, all problems look like nails.

But, let's assume that it is indeed the case that one language can be used to accomplish all your tasks - why would you want to spend time learning to be a "good" programmer? Because becoming a good programmer will allow you to accomplish those tasks more quickly, with higher quality code. Code that runs more quickly, uses less memory and other resources, is less buggy, has fewer security holes, is more amenable to code reuse, is easier to parallelise, and is easier to maintain (etc. etc.).

There's much, much more to being a good programmer than simply knowing a programming language. A good programmer should understand the underlying model of computation (e.g. Church-Turing thesis, lambda calculus, Universal Turing Machines etc.), complexity analysis (big-O etc.) and so on. They should also have a good understanding of how the machine they're programming works (both hardware and OS, if there is one, and VM if there is one) so they can write efficiently for it - e.g. an understanding of the memory hierarchy (so that code can be written which, for example, has good locality of reference and limits working set to minimise cache misses and page faults). They should understand the processor architecture so that multiple cores and/or processors can be used effectively etc.. Learning a low-level language like C helps with all this.

A good programmer should also have an extensive toolkit of problem-solving approaches at their disposal - learning different languages with different paradigms (OOP, functional programming, logical programming etc. etc.), and even different languages with different takes on the same paradigm, expand that toolkit. Even if you don't use those other languages for a particular task, an understanding of the way they work can allow you to see the problem in different ways and come up with better solutions in whatever language you actually are using.
jbjb is offline   Reply With Quote