In my own words and experience, programming languages are development tools that allows a programmer to communicate with a processing unit, like a PC, while describing what a program has to do. There are many types of programming languages, most of cases grouped by paradigm or level.
In this post I will share with you my knowledge about Programming Languages and also some advices when learning a new language.
Programming Paradigms
In programming world there are various paradigms, but esentially the most known paradigms are:
- Imperative
- Declarative
- Object Oriented Programming (OOP)
- Functional
- Procedural
- …
Nowadays, most of the programming languages are multi-paradigm, that means that a language can handle more than one paradigm, for example, Python has characteristics of imperative, OOP and functional programming. Most of times it is beneficial for the programmer, because he/she can take advantage of different paradigms.
Level of abstraction
In programming, the terms “high-level” and “low-level” refers to the level of abstraction and the proximity to the hardware that a language or approach offers. These terms describe the trade-off between ease of use, expressiveness, and control over the underlying hardware.
High Level
Languages that use High Level are more useful to understand and use by a programmer, because this abstraction level is nearest to a natural language as can be English or Spanish. Examples of this could be Python or Java.
Low Level
On the other hand, Low Level means a closer approximation to the hardware, however, this is not as bad as it sounds, Low Level can mean a better hardware and memory use, drastically improving the performance of a program or application. C/C++ and Rust are commonly used languages that offers a Low Level approach.
Languages I recommend to start with
Choose a programming language could be a tedious task, specially if you are a beginner. That’s why I share a list of languages that I consider to be a good option to start with. Sorted by relevance.
- Python: A beginner friendly and useful language for all type of tasks.
- C/C++: I really recommend to lean C or C++ as soon as possible, that will give you a solid base for others languages. These two languages are a pillar in performance and the development of operating systems.
- Java: This language will help you to learn the OOP concept, an important paradigm in software development.
- Go: One of my favorite languages, giving you the option to run parallel and synchronous task to improve programs performance. As useful as Python, giving more memory management and improving performance in some case.
- Rust: Giving performance and low-level aspects, Rust is, in my opinion, one of the most influential and interesting programming languages of this decade.
Some tips
There is a list of advices that can help you when trying to learn a new language:
- Practice: It sounds basic but it is the best way to learn something new.
- Read the official docs: Several programming languages have extensive documentation in their official website, such as Go: official Go documentation.
- Review code: It is important to follow a programming language conventions, ways to learn these conventions are read official documentation or review other programmers code. GitHub is a good engine to search open source projects that implements a language you are interested in. That will help you to know how a language is structured and more specifical details.
My Favorite Resources
When I want to learn a new programming language I usually visit some of these websites:
- Learn X in Y minutes: Best website to people who have experience in programming logic and want to learn a new language without starting from scratch.
- ChatGPT: This is a nice tool if you don’t just copy and paste what it tells you. ChatGTP can give you extensive guides and tips about general and specific details as far as programming is concerned.