Programming Languages used to make new Languages
Every computer engineer in the world has to go through certain different programming languages. We can simply say that the programming languages are the heart of the software. Every software present on this universe is built by one or the other programming language. But have you ever wondered how these languages are built? What are the different stages involved in creating a stable programming languages? Do you know, you can create new programming language from old language?
If not, don’t worry we will be providing the in-depth knowledge to this topic. We will be discussing the various elements of creating the programming language. For example – C or C. You might be aware that all programming languages either need a compiler or an interpreter. But have ever wondered what is the difference between both of them?
- 68 Resources To Help You To Create Programming Languages (tomassetti.me)
- I wrote a programming language. Here’s how you can, too. (William W Wold)
Let’s get started from scratch, basically, there are three types of programming languages or we can say the stages involved in the Real-time execution of the program.
- Machine language, Assembly language (0,1)
- Middle/High-level languages (C)
- High-level languages (C++, Java, Python)
A programming language is basically a set of rules to be followed by the compiler/ Interpreter to understand and convert it into machine level language (1, 0) so that it can be executed into the machine. A programming language is a specification. We can’t write a programming language in another programming language, we actually write its rules.
We can just write the compiler/ interpreter/ assembler in a programming language, not the programming language itself. Compilers or Interpreters can be written in a high-level language too. Writing a language basically means defining a set of rules for your language, or describing the specifications for your language.
The compiler needs the Tokenizers, Lexar’s and Parsers as their basic components.
Before going in depth to the languages it is very important to understand the meaning of bootstrapping. In simple words, bootstrapping is a start with a very minimal process/set of functions that can be used to compile the code that defines a slightly more functional compiler. This creates next compiler which can then be used to build code that can do even more. You repeat this process until you have a full-blown compiler that can compile all the language features.
Create new programming language from old language.
- The C language
C was developed in 1972 at Bell Lab by Dennis Ritchie. Many of its ideas originated from B and its ancestors, BCPL and CPL.
C is a bootstrapped language. This means C was developed by writing in assembly language and was again and again updated using itself with some recursion. Hence we can say that the basic C code was created in B and the assembly language, and this code was later used to write other useful components. So bootstrapping is creating a crappy compiler, later using that crappy compiler to create a new, better compiler, then using that to create a yet better compiler and so on. Also, C “The programming language” was not written in this way, but the compiler was. Language is just the format for representation. To conclude, C Compiler was written in assembly language, B, BCPL, CPL and C itself.
- Java language
JVM (Java Virtual Machine) executes bytecode, generated by the Java compiler. This feature allows Java to be cross-platform compatible.
Java is a very high-level programming language. C++ is used for the Sun/Oracle VM whereas, BEA/Weblogic/Oracle VM is written in C. Some JVMs also include lisp and assembler codes. And some, like the bootstrap method, is actually written in Java itself. Java libraries, along with its classes are written in Java itself. Hence, it can be summarized that Java JVM was written in C, C++, Java, Lisp, assembler, and some other languages (It really doesn’t matter).
Python is an interpreter based language. It has 4 variants for the interpreter, CPython, Jpython, Iron Python and Stackless Python, which is written in C and is good for parallelism it is a sub-branch of Cpython for supporting microthreads. Also, Pypy is a JIt-style native compiler written by a bootstrapping method, using Python itself. Python chose not to go with C++ but rather go for C because in the 80s, when Cpython was developed, C was just standardized and C++ was not known and was less standardized.
Dart is a rather newer language (7 years old) by Google. You can get some Dart features here. It uses some yml code, Python, Java, and of course, like many other programming languages, it’s bootstrapped with dart itself. The dart community says it to have language similar to C and C++.
The PHP is also another popular scripting language used for web development. It has a small set of common gateway interfaces, CGI binaries written in C programming language. It is also an interpreted language.
Just like Python, Ruby also has some variants, IronRuby for C and JRuby for Java. It has switched to using bytecode.
In the end, I hope that this article of mine has clarified all your doubts. The topic was a bit tricky but we tried our best to explain it in simple word. For more updates stay tuned to pinprogram.