Drawing by Spoorthi Usha

We all know what is programming and how it works. To brief ourselves about is, programming is a way of teaching computer to talk our language in the way we understand. In this writing, I just want to consider a different approach to how it is influencing our lives and what we need to do about it. Whenever it comes to programming, we think that as nerd stuff. Only people who have skills can learn to code.

Programming is not about learning it is about understanding how to convey our needs to the machine. It is a process of building an executable program for the specific computational task. It involves profiling algorithms accuracy, resource consumption and generating algorithms.

Algorithms are created using programming languages where as of now, there are plenty out there. We distinguish them in 2 types, high-level and low-level.

  • Low-level languages are mostly assembly languages that talk directly with the processor with less compilation.
  • High-level languages are advanced and powerful to program and get the output we desire. In every computer, high-level languages get converted to low-level language and then fed to the processor to process the requests.

This work is done by compilers. Compilers are those which are responsible to make the connection with machines programmatically. It converts the language we write to machine understandable language.

In this article, I am not stressing our more technical. I just want everybody to understand what programming is in layman terms and some basics on how it works. High-level languages are comprised of 2 types again,

  • Procedural Language: Procedural programming is a programming paradigm, derived from structured programming, based on the concept of the procedure call. Procedures are the block of codes that do some tasks when they are executed in the compiler.
  • Object-Oriented Programming (OOP): It is a programming paradigm based on the concept of “objects”, which can contain data, in the form of fields, and code, in the form of procedures. Objects are the blocks that contain procedures, variables, and other programming instructions.

History of Programming:

The first programmable device was invented in the 9th century. The device is the musical sequencer invented by Persian Banu Musa brothers. It was discovered as an automated mechanical flute player.

The first computer program was invented by Ada Lovelace. We heard her name in our high school textbooks as the first programmer. She invented an algorithm to calculate a sequence of Bernoulli numbers in 1843, intended to be carried out by Charles Babbage’s Analytical Engine.

The algorithm is the method of writing steps to solve a problem.

Machine code was the language of early programs, written in the instruction set of the particular machine, often in binary notation. Assembly languages were soon developed that let the programmer specify instruction in a text format, (e.g., ADD X, TOTAL).

High-level languages made the process of developing a program simpler and more understandable, and less bound to the underlying hardware. FORTRAN, the first widely used high-level language to have a functional implementation, came out in 1957.

By the late 1960s, data storage devices and computer terminals became inexpensive enough that programs could be created by typing directly into the computers. Text editors were developed that allowed changes and corrections to be made much more easily than with punched cards.

Modern Programming:

Drawing by Spoorthi Usha

As of the given history of programming, it has been around for more than 50 years and still it is getting developed rapidly. We have over more than 100 programming languages and 10s of editors to code. The basic high-level language fundamentals are, RRUPME. I use this shortened method to remember several lists of properties. Fundamentals are,

  • Reliability: It is about how often the result of a program is correct.
  • Robustness: How easily a program can detect errors or bugs.
  • Usability: How better a programmer can use the language to serve his purpose
  • Portability: It is the range of compilation of the language where it executes depending on OS, Hardware.
  • Maintainability: the ease of how the program can be modified for future updates or additions.
  • Efficiency: Measure of system resource a program consumes like CPU cycles, Memory, etc.

Some of the examples of modern programming languages are C, C++, Objective C, Swift, JAVA, JavaScript, Python, Ruby, .NET, C#, etc.

Getting started with programming and Best practices

To start with programming, you don’t need a whole lot of experience, If you know basic Math and English, you can start with it easily. From the past 5 years, I have been learning to code and every day is different as I try to tackle problems. My suggestion is to start with simple C programming (Procedural Language) before starting with Object-oriented programming. It gives you an idea about what functions, variables, statements, conditions, and loops are. It is always better to start with basics with zero knowledge.

Nowadays, every company needs an Information Technology department to be present in the competition and the interest in technology is exponentially growing. I feel everybody needs to learn to program as this is the fundamental part to know about what’s happening in our world. It is not about getting jobs, programming is like a meditation. It gives you fun, self-awareness, and the ability to problem-solving.

Think of spending 10mins of your day to learn to program and it will make you a person who can play within a year. Knowing the fundamentals of programming helps our humanity to move forward in every aspect of technology.

According to Rick Cook, as we keep learning to program, nature keep produces more people who create problems as well as solution. “Software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.”

Learning to code helps you to cultivate better habits and better habits form a better version of yourself. It is an exercise to our mind like a game of chess, reading a book and being happy.

Joseph Weizenbaum says about computer programmer as a god for his universe,

The computer programmer is a creator of universes for which he alone is the lawgiver. No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority to arrange a stage or field of battle and to command such unswervingly dutiful actors or troops.

In the broader view/perspective what he says is true. Programming is just another world we create to make our world a better place.