Learning New Language

5 min read

Image
How hard it may be and what the Paradigm actually is.

All programming languages out there share the same concept. They let us write instructions for the computer, how it should manipulate the data and what algorithms should have been used. Most of them are composed of conditions and loops, which allow to execute an infinite number of operation types, depending on what instructions were provided. But this is it when it comes to similarities.

Syntax

The first trait of a programming language is its syntax. It generally includes special keywords and operators for data manipulating, functions and objects. It also decides if a given language will be verbose or concise. The more instructions a programmer has to write, the more time it will take to finish up the program. It definitely rises the verbosity level and the code written has more Noise than Signal. It means, there must be a lot of instructions written, to perform some particular task. It makes a Noise, which distracts programmers from quickly getting a clear Signal, what symbolizes the understanding of what program actually does. You may think, that concise syntax will fix this? Sure, but what happens if someone puts tons of idioms and syntactic sugar to the language? It also requires a fair amount of energy to analyze and write source code in such language. Usually, programmers aim for the technology which will simply make their lives easier, so it’s a common choice to move towards those, who offer more friendly syntax.

Difficulties

If you have been using a Java for the last to years, which has a very verbose syntax, it may be a strange experience when you start learning Python. In Java, you have to add a semicolon after every line of code and use brackets for functions, objects nad control structures, in Python you cannot. Indents in Java are optional but Python requires them in order to even try to run a program. At the beginning, you will mix the syntax of both Java and Python, what will slow you down by permanent introduction of syntax errors. You will also need to take your time, and get used to the language, which is really concise and generates much less Noise than Java.

Paradigm

A Paradigm, is a way to classify a Programming Language based on its features. Supporting a given set of attributes and being categorized to one of the groups, doesn’t mean that language cannot support traits common for other paradigms.

Imperative

Imperative means that programmer must explicitly tell the machine what to do. The source code he or she writes, must include instructions on how to manipulate the data and flow control. Program created using this paradigm, will run commands in the exact same order as they were declared. It also supports so-called side effects, which allow modification of data from different places in the code. We also say, that such variables (data) have a global scope, what makes it possible to change their value from any unit of code, like procedure or function. Examples of such languages:

Declarative

In comparison to Imperative languages, Declarative ones are focused on what result is expected from a program, instead of how this result was computed. It hides the logic behind its components, making developer to think more about shape of the data, rather than what algorithms should be used and how. In this kind of technology, many problems have been already solved and solution are implemented in the native functions. Examples of such languages include:

It May Be Not So Easy

Such a paradigm shift in programming may be difficult. You are familiar with one way of writing programs, you know your environment well, and such a big change will not go unnoticed. You will try to adopt solutions from the paradigm you already know, so few first implementations will be totally useless. It’s going to take you some time, before you will learn all the ideas behind your new technology.

Ecosystem

And here we come to the last, but the most difficult part. The whole Ecosystem which was build around this particular Programming Language. It means everything, from libraries and frameworks to package management and maintaining live system and its configuration. For all the libraries you’ve learned so far, you will have to search for their counterparts in a new language. It means no more, no less but a lot of learning a stuff you already know, but this time it has different interface.

It’s essential for you to know all the quirks and rough edges of the available libraries and packages, so you know how to avoid common problems. There are probably plenty of configuration details, which when set improperly, may seriously slow down or take the whole system down. What’s even worse, these settings may have totally different meaning and names, what doesn’t help when it comes to fine-tuning on production servers.

It Sounds Hard, Should I Learn New Languages?

The IT industry always was the tough one. That’s because it mixes mathematics, logic, linguistics and many more branches of the science. You have to be prepared for a constant learning, what will consume some of your free time, but this is what you probably already know. Learning your first language and getting your first job surely gave some sleepless nights and severe headaches. Yes, it will be hard, but it’s definitely worth it. Even if you won’t use your new powers professionally, your levels of both knowledge and experience will rocket, just like your value as an employee. My personal advice for you is: yes, you should, and learn as many languages as possible. It will pay back.