It’s been a while since I’ve ranted. The Boeing 737 Max has been approved for takeoff by various regulatory agencies around the world. Is it really safe? We’ll discuss that today, but you won’t be able to guess the ending.
One. Obsession. Link to heading
Microsoft has been persistently and stubbornly working on a product called Basic for over 40 years, despite being unsuccessful. This is solely due to the fact that Bill Gates started his career with it (refer to “The Story of BIOS and the PC”).
Sometimes, the persistence of a founder can be a huge waste.
It wasn’t until last year that Microsoft officially abandoned Visual Basic. Throughout these decades, Basic has wasted the youth of many generations.
If you have learned the magical GOTO command in Basic language, then learning other languages will be particularly difficult.
Software is the digitalization of the real world. And in the real world, countless objects are linked together.
You cannot go from Beijing to Paris in one second, you need to take a plane. Even if you walk there, you still have to deal with shoes, roads, and maps.
These are all objects, including airplanes.
2. Object. Link to heading
Large aircraft are comprised of hundreds of thousands of components, each of which is also an object.
The system of 737 Max did not have any obvious logical bugs, but it did not consider redundancy: when one angle of attack sensor malfunctioned, the MCAS software deemed the aircraft’s nose too high and facing a stall, thereby forcefully taking control away from the pilot without giving them any chance to resist.
Therefore, this blame should not be placed on Indian software engineers. It is obvious that Boeing’s software architect was too careless and testing was seriously insufficient.
Boeing resolved the issue in the most straightforward manner: the MCAS system only activates if the signals from both angle of attack sensors are consistent, and the pilot can take control of the MCAS at any time.
Thus, the problem of the previous plane crash must have been solved. However, in special situations, the demands on the pilot’s abilities have been heightened.
Boeing often uses a highly restrictive programming language called Ada for flight core control.
However, due to the low percentage of Ada programmers, just like the decline in football players in Jingdezhen during the fierce competition of the college entrance examination, the output of Ada is seriously unable to match its input.
The key systems of the F35 fighter jet have been changed to C/C++ due to the high cost and scarcity of programmers for Ada in the F22.
The core language of SpaceX and Tesla is also C/C++.
3. Language Link to heading
Some people say: Hold on, Linus, the great god, once said that C++ is a horribly bad language. Many people in the industry are trying to use Rust to replace C++.
Object-oriented programming is indeed not as strict as it was n years ago. I personally feel that the Office suite written in C++ may be the most prone to crashing application in the system.
The human intelligence is as difficult to disentangle as the legacy code of C++.
Linus is correct, but not all applications can be crafted with C language (not C++) over many years like Kernel for those fixed functions.
Avoiding redundant reinvention of the wheel (objects) is the key to modern programming languages.
For Microsoft, the most balanced language created by the genius Anders, C#, is long underrated, which is exactly the opposite of Basic being overvalued for decades. (Refer to “The God of Programmers”)
Over 10 years ago, Microsoft attempted to rewrite the entire Windows application layer using C# in order to achieve higher security and more reliable concurrency. Additionally, it could gradually implement future cross-platform compatibility since C#/.NET can be decoupled from hardware.
However, that attempt failed and it was called Windows Vista: a system that surpassed Moore’s Law and could not run on mainstream hardware configurations at the time.
This was a decision made by Comrade Gates, who was then the chief architect. Perhaps this setback was the reason why he announced his retirement at the young age of 51, while Ballmer took the blame voluntarily.
Shortly after, Google used a similar architecture to create Android (decoupled Java layer from hardware), and the first few generations of Android experienced similar slow and unstable issues like Vista. Fortunately, memory capacity and TSMC’s technology quickly caught up with Google’s optimized Android Runtime.
The shadow of Vista’s failure directly led to the wrong platform choice (WinCE) for Windows Phone during 2008-2012, which is equivalent to sending infantry to battle against tanks.
Gates admitted years later that losing to Android was his biggest defeat in life, losing $400 billion in 10 years.
The NT kernel combined with C#/.NET could have competed with Android, due to the extensive ecosystem that could be shared, not to mention the dominance of Nokia at that time. However, by the end of 2012 when WP8 decided to switch to the NT kernel, it was too little too late.
In recent years, with the surplus of hardware performance and the open sourcing of .NET Core, C# has rebounded from its slump. Aside from being the royal recommendation for native Windows application development, C# has also achieved significant success in some areas, such as the skyrocketing popularity of the Unity game engine.
4. Decoupling. Link to heading
Of course, there are also counterexamples, where even a master wielding a branch can pass it off as a sword, and where Satoshi Nakamoto created the robust bitcoin with C++.
Object-oriented programming is not the issue, the problem always arises from the coupling between platforms or objects. In slightly more complex business systems, there will be a large number of couplings.
Great programmers have actually written a large number of mature modules (or libraries) that map the real world.
Just more ordinary programmers, using low-quality code to stick these objects together.
These software have basic functionality that can be used, but they are unstable and difficult to decouple due to hasty gluing.
The bigger issue is that the reality of the social world mapped by software is mostly abstracted and simplified. This may result in significant biases.
There is no fundamental difference between human society and software objects, so it is impossible to prove whether we are living in a divinely created computer or not.
During dating, you only focus on the carefully packaged external interface of the other person, but know nothing about the things they have coupled.
Human thinking is also object-oriented. If you find someone attractive, it is your aesthetic module that produces the result. You will not deliberately study the position of their pores or the arrangement of their epidermal cells to determine if they are suitable.
Once we have coupled a module, such as “Japanese are bad” or “Chinese food is the best”, it is extremely difficult to decouple it.
5. Grief Link to heading
In life, you are intertwined with even more: parents, children, boss, colleagues, house, WeChat, Meituan…
If you can decouple them all before you die, you will have a glorious name: Buddha.
Successful individuals have the ability to create loose coupling between these entities, which is not a capability possessed by the general population.
Sadly, everything we stubbornly insist on or treasure dearly will all automatically delink after a hundred years.
Only this incomprehensible broken article, entwined with the author’s name, will no longer separate as it travels through the future.