Forty-six years later, this well-known code still exudes a long-lasting charm. The C language that appeared with it has now grown into one of the world's most popular programming languages, weaving for the Internet world and the real world. A better future.
In order to review and commemorate the history of programming, Nicolas Rougier, a computer neuroscientist on GitHub, and Konrad Hinsen, a theoretical biophysicist, jointly launched a Ten Years Reproducibility Challenge (Ten Years Code Challenge) activity, encouraging everyone to find out if they were ten years ago or more. Earlier code, see if these codes can still run now, and whether code-related research can be reproduced.
At present, dozens of participants on the event page have already submitted codes more than ten years ago. These codes seemed to be high-tech cutting-edge technologies at the time, but many of them are now labeled as "low operational possibility". This is difficult to understand in the eyes of us outsiders. The programming letters and symbols have not changed, so why can't it run?
For more than ten years, programming languages and tools first changed
There was a popular joke before, saying, “Writing C language look down on writing C++, writing C++ look down on writing Java, writing Java look down on writing C#, and finally everyone looks down on writing PHP.”
A joke fully illustrates the changes in programming languages.
TIOBE (programming language ranking list) has released a trend chart of programming language ranking changes in the past 20 years. Generally speaking, Java and C languages still occupy the top and second positions. Python has suddenly emerged, PHP, C++, and C# continue to fall, SQL " "Resurrected", Swift "killed" halfway through.
▲ Programming language trend chart from 2002 to 2020. Picture from: TIOBE
Changes in tools are often synchronized with changes in programming languages.
▲ Changes in tools
▲ The optionality is greatly improved
"The only thing that hasn't changed a lot, maybe it's the algorithm?" said a young programmer from abroad. Ten years ago, Statistics (statistics) had transformed into Machine Learning (machine learning) ten years later, but the algorithm formula was still the same.
First ask if you are there, then ask if you can "run"
▲ The world's largest programmer "Dating Friends" and code hosting platform, only launched in 2008
If you want to know whether the code from ten years ago can "run", you must first be able to find the code from ten years ago-this is also the "decade code challenge". Although it has attracted a lot of attention in the circle, there are not many participants so far. One of the reasons.
The well-known project hosting platform GitHub was only launched in April 2008, and many people started using it to host code after 2012. Most of the code before this was saved in the form of papers, magazines, etc., so a lot of it was lost.
For example, Roberto DiCosmo, a computer scientist at the French National Institute of Information and Automation, published a paper in 1998 and wrote a parallel programming system called "OcamlP3l", but he did not find the hard drives and backups of himself and his co-authors. Can find the code, and finally found the code of the year on a code crawling website by chance.
There is also Rougier who participated in the activity. His code was published in the magazine Tremplin Micro 32 years ago. This magazine publisher has long disappeared in the long river of history. If there is no other way to back up and you can’t find the magazine of the year, This code is equivalent to never existed in the history of programming.
It is hard to imagine that as a product of the Internet, code will also be lost due to the problems of storage container innovation in the new and old era. This is the first practical significance brought to the programming circle by the "decade of code challenge". How to properly keep the previous code It is worth considering.
You "run" with your "run", it is useless without the software and hardware of the year
After finding the code of the year, don't be too happy. The second question is here. Quite a part of the code is "run" on the software and hardware carriers of the year. Can you still find these software and hardware now?
Rougier mentioned in the previous article encountered such a problem. 32 years ago, in 1988, he was only 16 years old. He wrote an image amplifier program code for the Apple II computer (1977-1993). "The oldest code in the event.
▲ Apple II
Fortunately, Rougier's colleagues rescued an Apple II while cleaning the office. This "old antique" is not easy to "serve". Its old-fashioned disk cannot be connected to the current computer, and the operation of the code has become a big problem. In the end, Rougier found the old-fashioned disk in 1993 on Amazon. After writing the data three times, he "activated" the disk, and had the necessary hardware foundation to run the code.
Many people have encountered similar problems. For example, Hinsen, the initiator of the event, said that the code he wrote in the 90s was stored in a floppy disk, and now he can’t find a tool to read the corresponding floppy disk.
▲ The system will also affect the operation of old codes. Picture from: Sabino Maggi
In addition, the system environment is also very important.
Sabino Maggi is a computer physicist in Italy. He modeled a superconducting device in Fortran in 1996 and used Microsoft Visual Basic to process the results. More than two decades later, "Visual Basic is a dead language, which has long been replaced by Visual Basic.NET." Maggi could only build a Windows virtual machine ten years ago on his Mac computer to try to run code . Fortunately, many system versions released by Windows in 1996 were not forward compatible, which caused Maggi's code to fail to run successfully.
The code written by someone at the age of 9 can still run, but I am playing in the mud at the age of 9
▲ The first code submitted on the ten-year code challenge page
"When I was 9 I tried to heal a trees broken branch with grass." (When I was 9 years old, I tried to heal a tree broken branch with grass.)
A young brother said on YouTube that the code he wrote at the age of 9 would still work. A user posted a comment like the one above and received 6,363 likes.
What is the code for participating in the "Ten Year Code Challenge" this time?
Ai Faner entered the event page on GitHub and found that these codes were not the same as we expected. A considerable part of it is related to scientific research and has a low direct correlation with the general public.
For example, the code submitted by the first participant John (EBo) David, written 22 years ago, is called "The behavior of landscape metrics commonly used in the study of habitat fragmentation" (the behavior of landscape metrics commonly used in the study of habitat fragmentation) ).
There are also codes related to the field of physics and mathematics, such as "fermions at unitarity", "Poincaré dodecahedral space parameter estimates" and so on.
"Typographical features for scene text recognition", "Effects of fire on regional evapotranspiration in the central Canadian boreal forest" can be regarded as related to ordinary people. It's relatively high.
▲ Code for cardiovascular disease research fifteen years ago
There are also some codes that can make us feel a little bit of "modern Internet". For example, "Accuracy Study and Improvement of Network Simulation in the SimGrid Framework" reminds us of recent years. The "AI" of the fire, and this code was actually released in 2009.
Genetics, neurology, computer science, biology, physics, mathematics, etc. are all involved.
We speculate that there may be two reasons why the code involved in the activity on the "Ten Years of Code Challenge" page is different from the "software development" code imagined.
First, thanks to the perfect thesis system, many codes related to the thesis or published the thesis have been well preserved. Only the preserved code can participate in this activity. Second, more than a decade ago, neither computers nor programming techniques were as popular as they are now, and the use of computers and codes was more concentrated in high-tech fields.
Note: The above translations are all from Google
Code changes the world
Unconsciously, programming language has become one of the things that can affect the development of the world, and it has more or less various connections with everyone’s life. It can even be said that we are not living with programming, living with programming, and dead with programming. "- The medical devices used to deliver babies need to be programmed with operating software. Every aspect from childhood to old requires programming participation (such as WeChat, takeaway, etc.). The medical system that delays our death also needs to be programmed to produce various software.
On March 25 this year, many users found that when they opened the Taobao app with their iPhone, a dialog box would automatically pop up, prompting the user that they would not be able to use the Taobao app in 3 days. Many gangsters were worried that they would not be able to empty their shopping carts in the future. Afterwards, Taobao quickly released a new version to fix this bug.
Just imagine, if Taobao really becomes unavailable in 3 days, how will we personally and the whole society be affected? What happens if all the food delivery apps are unavailable at 12 noon on a certain day?
While code changes the world, it also brings many new problems, the most interesting ones are personal data and privacy issues.
Not long ago, Xiaomi’s MIUI 12 beta version was launched, and a new "flare" function was launched. Many apps are “exposed”. It turns out that some apps even quietly read users’ private information up to thousands of users every day without the user’s knowledge. Second, in addition to the necessary associated wake-up behavior, what kind of code is behind the unnecessary "small actions" of the app? Who wrote the code for the MIUI 12 flares to protect our privacy?
▲ The flares function displayed by MIUI 12
On September 3, the Suzhou "Suzhou City Code" app launched the "Suzhou City Civilization Code" function. This function aims to build a civilization point information identification system and form a "personal portrait" of citizens’ civilization level. Citizens with high levels of civilization points will be Enjoying the priority and convenience of work, life, employment, study, and entertainment has aroused widespread discussion among the public. Many people believe that the standard of "civilized" is not objective enough, and the punishment of "uncivilized" is easily influenced by technology. The Beijing News published a special comment on whether it has followed procedural justice and whether it has broken through the "red line" of administration according to law.
Also, when we input some product keywords on the mobile phone and are synchronized by the cloud or read the clipboard by the app, we can see similar products in the prominent position of the shopping app the next day. I don’t know who wrote this feature. Code?
As a tool for constructing a virtual society, code is actually a reflection of the human nature of the real society. Programming languages have always been there, how to use them, after all, depends on us.
#Welcome to follow Aifaner's official WeChat account: Aifaner (WeChat ID: ifanr), more exciting content will be provided to you as soon as possible.