1st generation programming languages – MACHINE LANGUAGE
In the beginning there was machine language – 1s and 0s only, sometimes entered by manually connecting cables into the right spot and setting the correct switches the right way (e.g., ENIAC). This is what is meant as a 1st generation programming language.
2nd gen languages – ASSEMBLY LANGUAGE
Eventually, in the 50s and 60s, various assembly languages that started to look closer to regular spoke language were created. Some people credit the chief architect of the IBM 701 mainframe as the inventor of assembly language: Nathaniel Rochester
The various assembly languages produced during that time were quite different, but they definitely had better notation than just 1s and 0s. Still, it was pretty close to just representing a single machine language instruction with words or abbreviations. These assembly languages are considered second generation programming languages.
3rd gen languages – HIGH LEVEL PROGRAMMING LANGUAGES
Then in the 60s into the 70s, many different high level programming languages were created. These are much more abstract and separated quite a bit from the low level assembly and machine languages. People built compilers to convert the high level languages down into the low level languages the hardware needs in order to run … computer still really only understand 1s and 0s.
To give you an idea of the variety of high level programming languages, check out this MASSIVE PDF file, you will need to download and zoom wayyyyy in to see all the languages. But it’s a fun exploration…
https://www.levenez.com/lang/lang.pdf
The vast majority of programming today is still in these languages because they strike a nice balance between “power” (i.e., how much you can do with the language) and “ease of use/learning”. Would you rather deal with giant files of nothing but 1s and 0s or something like this python program below?
with open('white.bmp', 'rb') as f:
data = f.read()
print(data[0xa])
print(data[0x1c])
print(data[0x36])
print()
for byte in data:
print(f"{byte:02x}")
The simple python program has actual English words in it that explain what each instruction does. This is much more manageable than a pile of 1s and 0s … but it is also ripe with opportunity for mistakes. And the learning curve of exactly how you enter the commands is fairly high (although to be fair, python is one of the easier languages to learn).
4th gen languages – BLOCKLY, SQL
Blockly and SQL are two very different languages. The definition of a 4th generation language and a 5th generation language is somewhat murky because the VAST MAJORITY of computer science still happens at the third generation level.
In my mind, a 4th generation language is any language that makes it much easier for your average person to program and basically eliminates the ability to make “syntax mistakes”. Blockly fits this definition because the different blocks you have to piece together to build your program are shaped differently and if the blocks don’t fit together than you simply cannot connect them. Therefore, there’s no notion of a syntax mistake.
People also consider SQL a 4th generation language because it is targeted at a very specific domain. I don’t like that definition of a 4th generation language. It still feels very much like learning a traditional programming language, and in some sense, learning the advanced SQL syntax is even trickier than learning regular 3rd generation programming.
blockly code powering v1.0 of mybiketraffic for android, created using MIT AppInventor
5th gen programming languages – DECLARATIVE LANGUAGES
Let me emphasize again that the vast major of computer science programming still happens at the 3rd generation level through languages such as Python or C.
Wikipedia says that a 5th generation language are declarative languages where you just declare some facts/rules about a system and let “the system” figure out how to come up with a solution.
I like this idea, but the notion of using LISP or Prolog to do this is still (in my mind) just a different form of 3rd generation programming.
Enter chatGPT stage left directly into my COSC 107 – Intro to Computer Science class where we started talking about programming languages. I was taking them through 1st, 2nd, 3rd, and 4th generation languages when the thought occurred to me that maybe chatGPT is an early embodiment of true 5th generation programming. You tell the system what you want and it figures it out for you.
So at 12:23pm, I opened a tab in my browser and asked chatGPT to give me a tic-tac-toe program written in html, css, and javascript all in one file. It immediately (but slowly) began spitting out the response typewriter style, per the screenshot below:
And may I present to you the finished product:
It makes me wonder how much longer we will manually be writing programs! Of course, as it gets more complex, relying on chatGPT breaks down pretty quickly. But how long until it will completely replace 3rd generation programming?