software is written with programming software, so how does the programming software come from?
, I really can’t explain it to you one by one. Otherwise, if you break the casserole and ask the end, I may not be able to finish it with a hot pot meal. For example, IntelliJ IDEA and Eclipse are both IDEs for Java. You can write a lot of software with these two IDEs. For example, Android Studio is based on these two softwares, and all software on Android is developed with this thing. Yes, but these two IDEs themselves are also developed in Java language. These two IDEs must have been originally developed in Vim/Emacs+Java, so let's stop here for the first time, otherwise we will be chattering.
Let me give you an idea. According to this idea, you can find the problems of your own interest. Let me tell you about Google's implementation of Go 1.5 bootstrapping and removal of all C language programs. Everyone gradually understands that basically computer technology is iterated like this, such as how to first have C language and existing After Unix, how on these foundations, many new software and technologies such as Emacs and C++ were born.
In fact, all new programming languages now basically consider building on the basis of the C language, and the Go language is no exception. What's more, Ken Thompson, one of the important designers of the Go language, is also the father of C language and Unix. The first stage of the development of the Go language is to develop a translator from C language to Go language, which translates the C language compiler into Go language, but the three great gods of the Go language core design team are very witty and they avoid it to the greatest extent In the design of the Go language compiler, a large number of features that will be difficult to port to the Go language in the future, such as macros and pointers, are some of the bad designs left by C and C++, which do not conform to the current programming language design trend. . Transforming the compiler source tree produces a Go language compiler, but this time is still typical C language style.
Next, Google optimized the compiler, solved the problem of the compiler's CPU, memory and other hardware resources, and introduced the concept of parallelism. In order to improve the ability of the compiler to eliminate problems such as boundary checking, an intermediate representation is introduced between node*s and prog*s that do not depend on the architecture. After these things were completed, Google took the last step, using Go 1.5, the latest version of the Go language at the time, replacing the front end of the compiler with go/parser and go/types. So far, the Go language has realized the bootstrapping and obtained a Stable and efficient compiler implementation.
Go language itself is easier to program than C. This is because Go language, like many high-level languages, abandons pointers, avoids memory leaks, solves buffer overflows, stack overflows during deep recursion, and discards definitions of macros. The Go language tool chain has better support for modularity, unit testing, and performance analysis. When modifying internal APIs or refactoring, the prospect of application automation program refactoring is more worth looking forward to.
You see, this is the process of Go language from writing a compiler in C language to finally achieving full bootstrapping of Go language. Of course, everyone knows that Turing-complete programming languages can achieve bootstrapping, and theoretically conform to Turing-complete programming languages They are all developed in this way, and C++ is developed in this way. Only when a programming language meets this condition can you be used as the foundation of other programming languages.
So let's go back to the original question, in what environment is the programming software that writes the software developed? Since the development of computer technology, assembly language was developed on the basis of machine language, and then the two masters developed C language and Unix system, and then on this basis, someone else developed Emacs, Vim, GCC, you see the basics All the basic technologies of modern computer technology are there.
then writes various operating systems in C language, writes various programming languages for various needs, develops various integrated development environments according to various needs, and then uses integrated development environments to write other application software according to various application requirements. This is a complete evolutionary process of computer technology development. The
programming software is also the same. Machine language was first introduced. The assembly language was created and invented in the era of punching. On the basis of assembly language, language B was introduced., And then the C language was invented on the basis of the B language, and the C language rewritten Unix, so the embryonic form of the modern computer was born. In the early days, assembly was born in machine language, and then C language was born in machine and assembly language. In the era of C language, everything is born in a lifetime, and C language is born in all things. Now there are many things. This is the process of computer technology development.