Advertisement

What languages should a person learn to be a well-rounded programmer?

Started by September 19, 2017 06:16 PM
33 comments, last by trjh2k2 7 years, 1 month ago

So I've been reading about and watching videos about Smalltalk. It seems like an interesting language and damn near the Father (or Godfather) of all things OOP. But it got me thinking, what languages should a programmer know or even be proficient in to be a dependable programmer (couldn't think of a better word than "dependable")? After giving it some thought, I came up with this list.

At least 1 programming language from:

  • Lisp family of languages
  • ML family of languages
  • Smalltalk family of languages

And also the C programming language (not the family, just the language).

I think this covers all facets of programming and ways of tackling problems. I don't think there's any other language, thinking most of the modern languages, that has done anything that 4 listed above haven't already done. I'm not counting languages like Julia, R, Perl, or Erlang, because they are languages, AFAIK, that seem to solve a very specific problem. They can be general purpose, but again, AFAIK, they're not meant to be.

Of course, agreements, disagreements, thorough takedowns, and/or overall discussion are welcomed.

Beginner in Game Development?  Read here. And read here.

 

Based on what I've heard from top devs - Lua (supergood for devs), C# and C++ are three. Then learn SQL, XML, etc to support your projects. Also (if you're a gamedev) learn at least 1 game engine, like Unreal Engine or Unity. Even Gamemaker is worth it, at least for prototyping. But again, that's coming from others not me. I'm no expert.

It depends on what you're programming. Knowing a language is one thing, but knowing how to code is quite a different thing. There's abstractions and paradigms you need to understand, clean code, proper commenting, architecture, etc etc. Don't worry though, it'll all come in due time. Just keep at it.

Learning a new language after you learned your first one is proportionally easier. Especially after learning something comprehensive like C++ or even C#. I'm guessing a "functional language" (like (edit:) F#) is also nice to know, depending on your specific field. But don't take my word for it.

Advertisement
2 hours ago, Madolite said:

I'm guessing a "functional language" (like D) is also nice to know, depending on your specific field. But don't take my word for it.

D is not a functional language by any stretch of the imagination. It is much more procedural/OO in the vein of C++.

 

2 hours ago, Alpha_ProgDes said:

I'm not counting languages like Julia, R, Perl, or Erlang, because they are languages, AFAIK, that seem to solve a very specific problem. They can be general purpose, but again, AFAIK, they're not meant to be.

R, maybe. Julia I could argue about, but Perl and Erlang are both perfectly capable for general purpose development. But just because a language doesn't do "everything" doesn't make it less valuable to learn. Domain-Specific Languages are everywhere and any good architect should be comfortable pulling the DSL tool from the toolbox when it makes sense to do so.

I don't particularly feel that there is a magic set of languages that will make you a better programmer. I think it's more the case that you should learn many different tools for solving problems - and sometimes new languages are a good way to learn those tools. A programming style is like any algorithm or data structure: it will be well suited to some types of problems, and ill suited to others. Learning when to use certain tools is the biggest part of being a great programmer IMO.

That said, if there's one major language family to learn to blow your mind, it's Lisp. The sheer elegance of erasing the code-and-data distinction is revelatory and valuable even if you never write a line of Lisp once you've learned it.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

1 minute ago, ApochPiQ said:

D is not a functional language by any stretch of the imagination. It is much more procedural/OO in the vein of C++.

Sorry, I guess I meant F#. My bad and fixed.

Learn Haskell. It's great and gives you a new perspective, that you don't often have when working with impreative / strict languages.

shaken, not stirred

C++ is a multi-paradigm language. From wiki:

  Multi-paradigm: procedural, functional, object-oriented, generic

 

Even if it does not support (yet) paradigms like aspect programming, or will never go into the imperative paradigm, or its syntax is not as cleaned as some "theoretical-oriented languages", to my opinion, this is a language one must know.

Advertisement
Quote

What languages should a person learn to be a well-rounded programmer?

Languages don't really make you a better programmer, concepts, techniques and algorithms do. Different languages are a proxy for this, as they bundle up opinionated implementations of a selection of concepts, techniques and algorithms.

What you want to look for are different languages that espouse complimentary sets of concepts and techniques, and solve challenging problems using similar algorithms in them—so that you get a sense for how different languages (again, as proxies for concepts and techniques) occasion different implementation strategies.

Good question, though.

My general recommendation is that to stay relevant developers should learn one new programming language every year.  Even better if it is a departure from things already comfortable with, but the key factor is that you keep learning.

Right now as a general recommendation, new programmers should first learn ALL of these languages: C++, Java, C#, C, JavaScript, Python, and SQL, and also learn markup languages including HTML, XML, and JSON. In all these languages a programmer should be fluent enough that if handed some code they could read it and expand on it, even if it isn't their primary programming language.

In practice an entry level programmer will probably know two or three of them, but they should still learn those they don't know, and continue learning at about one per year.  I see it as much the same a doctor must stay current on medical research, or the way a lawyer must stay current on new laws and new precedent, or the way an architect must stay current on architectural codes.  

@frob  yes, developers especially entry-level developers should know the languages you listed if they want a job. But I just mean the languages that make you a better programmer period, regardless of employment status.

Beginner in Game Development?  Read here. And read here.

 

How many or which languages you know is not what makes a good programmer though- it's about how you employ those languages to accomplish whatever your task or goal is.

This topic is closed to new replies.

Advertisement