In my career as a programmer I regularly get involved in discussions about programming languages. And actually, I love to talk about programming languages. Non technical people may probably not understand why it is a fun topic for programmers.
Many programmers tend to fall in love with a programming language, and so I also have my favourites. The programming language is just a bunch of words, like any other language. Knowing all the words and syntax in any language won’t help us very much. We must understand the rules (technical patterns) and the power of the language (technical paradigms) to be able to communicate.
When you switch from one speaking language to another and use the same words without any understanding of the communication pattern, it will end up in a disaster, albeit a funny one. This will definitely not be the ‘yellow from the egg’ (one to one translation from German, means: ‘This will definitely ‘not be exactly brilliant’).
The same rule applies to programming languages if we try to write C-like in Java or Java-like in Python. Our code will always end up as a disaster. And this is why many programmers tend to love the programming language they are good at and use it for every project. It’s like speaking in a native language — we feel very confident and comfortable with it.
Fortunately, almost every programming language can be categorized in one or many paradigms. In a similar way as most native languages can be categorized into a root language, e.g. French, Italian, Spanish as romance languages and English, German, Dutch as Germanic languages. Yes, English has a Germanic root–sorry about that. Common programming paradigms are: functional, object-oriented, imperative, declarative and procedural. And almost every modern programming language can handle all of these paradigms–nowadays it’s even possible to do functional programming in Java.
Besides the programming paradigms, there are also a bunch of rules or technically spoken patterns which can be applied in almost any programming language. Just to mention some of these: Singleton-, MVC, Facade-, Factory-, Builder-, Proxy-, Iterator-, Decorator-, Futures-, Promises- or Observer-Pattern etc.
For a good programmer the programming language doesn’t really matter. What really matters is to know different programming paradigms and patterns and choose the right one for your project. Knowing only the words and syntax of many programming languages won’t make you a good programmer. But knowing many paradigms and patterns in combination with these words will do, because these are the essential ingredients to write organized, structured and meaningful code.