Changes in software technology and related issues are a small part of the overall operation of invention and innovation, the company's product operation, social market demand consumption, talent capital circulation, policy and law, etc, its development process will be affected by many factors, but it is also subject to certain rules. As a specific person in the industry, in the face of this technology changing industry, consider some things of the industry in the next 30 years.
You don't have to worry about things in 30 years. It's useless to think clearly.
Software Technology and Related Issues within 30 years can be divided into minor changes and major changes. If you are familiar with things that do not change much, you will gain lifelong benefits. If you are familiar with the changes, you must promptly grasp the depth of participation.
I. Minor changes
1. Intel x86 Instruction Set
The reason is very simple. If these instruction sets change significantly, the software developed and accumulated in this industry cannot run, and the cost of changes is too high.
Even from 32-bit to 64-bit and 128-bit, the compatibility of instruction sets is foreseeable.
2. Operating System-Startup Process
System power-on reset, hardware self-check, operating system boot, memory management, process management, hardware interrupt processing, other operating system boot, User Shell boot, and other processes should not change significantly.
3. Operating System-memory management
The layer-3 memory management mode of i386 does not show much change trend. The memory management mode and API of the operating system will not change significantly.
4. Operating System-process (thread) and Scheduling
As long as the running of programs in the operating system is scheduled by clock interruption or other software and hardware interruption, processes are the basic unit of operating system scheduling. For example, if an "independent binary component" becomes the basic scheduling unit of the operating system from one day, the process control block may change more. The loading of "independent binary components" is probably a process.
5. Operating System-file system API
The file system may change constantly, but the file system API should not change much.
6. Database-SQL language
The theory and product technology of relational databases have been very mature. It is difficult to replace the SQL language for maintaining a large amount of data that has been saved up to now, XML may work with SQL instead of replacement. Even if the object database theory and product are mature, SQL will certainly be compatible.
7. network browsing protocols and formats-HTTP, HTML, and Javascript
Even if you are not satisfied with HTML, the pace of modification and progress will not be very fast. Too much information is saved in this format, and the cost of changes is too high.
HTTP is associated with HTML and does not change much. This is especially true for Javascript.
8. Email protocol and format-POP3, SMTP, and MIME
POP3, SMTP, and MIME have become large-scale, with high change costs.
9. network protocol-TCP/IP family
IPv4 to IPv6 can be seen, but the basic structure and API of TCP/IP should not change much. The cost of changes is too high.
10. Microsoft Windows-Windows
Unless major business mistakes occur consecutively, Microsoft will not simply go down. I will not talk much about this major technical problem. Windows may last for a long time.
Windows (Window Technology) in Windows (products) is the essence and mature. Its Related APIs, including GDI, message mechanism, and Common Controls, will not change much. Even if it appears in the form of components in the future, it is only another form of API.
11. Microsoft's Windows-DirectX
As long as the common people are still using Windows, DirectX will be maintained as a game development platform for a long time.
12. Open-source organization and IBM Linux-Shell, XWindow
Open-source organizations cannot see any decline in the future. IBM has been developing for centuries. It should be okay if they jointly promote Linux to survive for another 30 years. The basic structure of Shell and XWindow will not change much.
13. OOP syntax and ideas
Programming Language is a tool for compiling logic, calling APIs, and solving problems. The OOP syntax is now in the ascendant, leading to the transformation from compilers, virtual machines, and APIs. After a few years, even if the programming language is revolutionizing, OOP is likely to be the basis.
14. Algorithm
It can be said that it is a part of mathematics, including pure mathematical algorithms and application business logic or application algorithms. The vitality of algorithms for solving problems is always independent of systems and programming languages. Even if we cannot find new algorithms, it is necessary to master some algorithms, which is the long-term competitiveness after mastering basic software development knowledge.
Ii. Changes that are relatively large and have a greater impact
1. Product appearance, user interface, and interaction method
The appearance, interface, and interaction methods of the product are constantly changing. Companies like Microsoft have invested a lot of energy in this area. In fact, this is for the common people, not for developers, but it will greatly affect the product design, interface design and Interaction Design of developers.
2. programming languages, compilers, their supported libraries, and virtual machines
The selection of specific programming languages and compilation tools is the internal transactions of programmers and development departments. They are generally irrelevant to system APIs, product market requirements, and development results. There are many factors that affect the selection and use of programming languages and compilation tools, with great variability. Even if a programming language or its related compilation tool has a long life cycle, it is hard to ensure that it is used by a development team for a long term. Excessive addiction is limited to the risk of a compilation tool, but it is difficult to develop good things without looking into some depth.
3. Development Management Mode
Different products, projects, application platforms, and programming languages require targeted development and management modes. Even if the same OOP syntax is used for programming languages, the development and management of different products or compilation tools are also different. Development Management is actually the process of organizing developers to write results using programming languages. Of course, it should be constantly adjusted. There are some crude management theories that can only be guided. The real practice is another thing.
4. Application Requirements of Development Technology
With the continuous product upgrades, marketing activities, and changes in social consumption hotspots of software application platform manufacturers and development tool manufacturers, market customers constantly adjust the demand for development technologies.