Fundamentals of programming and programming languages

To better understand the world of software, we should at first understand the difference between programming and computer programs.

Programming is the activity of writing computer programs, while a computer program consists of instructions for the computer and its Central Processing Unit (CPU).

 

Programming languages are a subset of computer languages and their grammar is usually very rigid. Programming languages are also usually Turing complete.

 

During the history of programming languages, we have already had 5 generations of programming languages. From first to the third generation are considered imperative, from 4th to 5thdeclarative, even though each programming language has characteristics of both paradigms.

 

1th Machine language.

These languages are computed directly on the machine (hardware).

2d Assembly language

Assembly languages need an assembler to be compiled by the machine, they are strictly related to the hardware

3rd High-level language

High-level languages focus on the problem

4th Domain-specific language

These languages are used in a specific domain and they focus less on the problem but more on how the solution should look like

5th Problem-solving language

These new languages are mainly used for artificial intelligence and machine learning, they focus on specifying the problem and defining solution constraints

 

In order to translate the code to machine language, computers need utility programs called assemblers. But starting from 3rd generation programming languages, assemblers aren’t enough: computers also need compilers to be able to transform abstract descriptions to computer instructions.

 

A compiler enables a program to be launched directly on the hardware.

An interpreter, instead, emulates hardware that would be able to run that high-level language.

 

Some languages like Java use a hybrid method: a Java program is first compiled into an intermediate language called Java Bytecode, and then is interpreted on the virtual hardware Java Virtual Machine

 

The process of software development isn’t just programming. We can define 5 different phases:

  1. Design. Design is the conception of the software
  2. Coding (or writing). Coding is the actual implementation
  3. Testing. In this phase, functionalities previously created are tested
  4. Debugging. Correction of so-called “bugs” (errors in the code)
  5. Maintenance. Further enhancements, updates

 

In this article, we have discussed the foundations of programming and the distinction between programming and computer programs. You should now have a better knowledge of what programming is and how it is used.

Why should you follow this blog?

Nowadays there exist millions of blogs, profiles on social media, and newsletters. Why should you follow another blog? 

I’m Simone Torrente, a 26yo from Italy. I’m passionate about product management and the digital world. I founded a startup when I was 19 and I found out that it was more complicated than I thought to become a unicorn* (*a startup valued $1billion).

 

What I will write about?

I will write about digital project management, productivity, informatics, stoicism, startup, strategy and innovation (you’ll see how these topics are related).

This blog will be full of my notes on books and courses I’ve followed during these years, including my notes on the university master degree in IT Management (International University of Applied Science).

I’ll teach you everything I know and everything I learn about project management.

This is my first time managing a blog and I hope you’ll find it useful!

I don’t want to lie: I’m not yet an expert on these topics above. I’m not a professor, I never had a TedX talk and I didn’t write a book.

But I like to learn new things and I like to share my notes with others.

Even though I currently work as an IT consultant for a company, I’m still a student (like many of you) and I want to share my journey with you.

But I’m not altruistic: even though my friends say that I’m a good guy I don’t write these posts just to help other people improve their careers and their personal life.

Yes, that’s a big plus, but at first I do it to push myself to study harder (and to practice my English). In fact, a “secret” technique to learn a topic faster is to explain that topic to someone else.

Then I will be happy if you want to share with me your knowledge (through your comments or posts).

I hope you liked this short presentation of the blog and I invite you to read other articles!

Thank you for your time!

Simone