Some friends often ask me, is there a future for learning PHP? Will PHP be eliminated in the future? What can PHP do? Can PHP do what Java can do and .Net can do? What technology is best to learn? For a beginner, these questions are indeed very important, after all, they are related to their future development. In fact, if you want to discuss PHP, you cannot understand the problem from the perspective of PHP itself, but you must analyze it from the development history of the entire computer language, the evolution of the technical system, and the impact of changes in business models on technology trends. Here I will write an article to share with you my understanding of the technology system, technology development, and the relationship between technology and business over the years.
The computer technology system is complex. From a large perspective, it is mainly divided into two major parts: hardware and software. Hardware is divided into chip level and board level. Chip-level companies mainly design and manufacture the small black blocks on circuit boards, which they call integrated circuits. The famous Intel, Qualcomm, Texas Instruments, Nvidia, AMD, etc. are all chip-level giants. Board-level companies mainly design circuit boards, and then purchase chips from chip companies and install them on the circuit boards. ASUS, MSI, Foxconn and other Taiwanese companies have board business. The software industry can be divided into system software and application software. Currently, the mainstream operating systems in the world mainly include Windows, Linux, Unix, MacOS, BSD, etc. In different operating system environments, application software is developed in different ways. From the functional distinction of application software, it can be divided into client application software and server-side application software. From the perspective of the industry chain, the hardware industry is at the upstream of the software industry. Generally speaking, the hardware industry places more emphasis on scale and is a capital-intensive industry, while the software industry places more emphasis on creativity.
Back to the main point we want to discuss - programming languages. Generally speaking, for web development and ordinary client software development, we program at the application software level. In the development of client software, the current main development system under the Windows platform is based on the .Net architecture. Of course, this field used to be dominated by MFC, Delphi, and VB. In addition, languages such as Java, ruby, python, and lua, combined with UI component libraries such as Qt and tk, can also be used to develop applications across multiple platforms such as Windows, Linux, and MacOS. Of course, with the rise of mobile operating systems such as iOS and Android and tablet computers, client software development is blooming. In the development of server-side software, there are currently three competing groups. The three pillars are the JavaEE system, the Microsoft .Net system and the LAMP system.
The JavaEE system once dominated enterprise-level software development for decades, and talented people emerged in large numbers during the decade. However, the Java language itself has become increasingly bloated and fragmented. It wasn't until Rod Johnson, a god-like figure in the Java world, came out with his genius Spring framework and the immortal masterpiece "Expert J2ee development without EJB" that the disputes in the Java world were temporarily unified by SSH (Spring+strunts+hibernate). But using Java is still an expensive choice. Complex requirements design, slow project progress, expensive application servers and expensive coders make Java a language above the temple. The split of versions also makes the so-called cross-platform feature an empty talk. The characteristics of Java make it not suitable for Internet companies whose business changes rapidly with the market, but more suitable for relatively stable large-scale businesses, such as banking, insurance, retail, manufacturing and other large enterprises' business system development.
The .Net system is a set of enterprise-level development architecture designed by Microsoft to compete with Java, including client-side and server-side development frameworks. And completely abandoned the original MFC. In many aspects, the .Net system is similar to JavaEE. From my experience, for experts, the development efficiency of the .Net system is significantly higher than that of JavaEE. However, the .Net system still has a high threshold for beginners, and many projects made by novices have too many bugs to look at. At the same time, it cannot be cross-platform, and genuine Microsoft operating systems and database software must be used. The instability of the Windows system as a server and the complexity of management have hindered the popularization of the .Net system in server-side development to a certain extent
Author: Zhu Wei