Code and Data

Code and Data
Photo by rishi / Unsplash

Usually, a computer program is stored in a certain path on the file system. Around 2000, a company we were  inventing an operating system that provided a dynamic module interface scheme for mobile devices. We envisioned that future application modules would be stored at some URL on the Internet and automatically downloaded and spliced together at runtime. This concept was very advanced at the time, and people found it hard to understand why code modules were also stored separately. But we firmly believed that "code is data, and data is also data."

The idea that "code is data, and data is also data" once puzzled professionals, but it is obvious to most people. Programmers usually do not like to classify their code and a bunch of photos as the same thing because they understand programs from a software development perspective. In the computer data storage industry, this view becomes natural. Whatever your software system contains, storage engineers will treat them as data and store them in storage. Code and data are essentially the same but have different uses in different scenarios.

The first decade of the 21st century was a profound transformation of the operating system and program structure. From the rise of the Internet to the move towards cloud computing, people's understanding of programs and data changed from confusion to being taken for granted, and everyone was unconsciously pushed forward by the wave of the Internet. While we were still struggling with operating systems and program runtime, the world was undergoing earth-shattering changes.

At the end of 2005, as the Chinese New Year was approaching, the entire Internet was filled with sighs and restlessness: technology giants were facing setbacks. Windows XP had not been updated for many years, and Vista was still being developed sluggishly. Mobile operating systems like Symbian, Palm, Windows Mobile, and Brew had been seen as declining, and people began to be surrounded by MTK's phones. You could buy a "loud" phone for 300 RMB (yes, it was really loud, and those phones often had four speakers).

Where was the intelligent mobile system we developed going? At that time, iPhones and Androids, which were the symbols of the intelligent mobile era, had not yet been launched, and the definition of a smartphone was not clear. Defining a smartphone as "faster and with higher capacity" was obviously not convincing. The industry also felt uneasy about the uncertainty of the future development, and the mood was like the restlessness before a storm.

At this time, an article appeared, written by Microsoft's chief software architect Ray Ozzie, called "Internet Services Disruption", which was widely copied. Before that, I had read Bill Gates' "The Internet Tidal Wave" and was deeply impressed by Bill's foresight. Ray Ozzie was seen as Bill Gates' successor. I didn't know what was going to happen in the world, but something big was definitely going to happen. We know the story that followed: Microsoft Office entered the era of cloud computing, with the Windows Azure project, and Microsoft began a broad transformation, converting products from software to cloud services.

In 2007, Apple's iPhone truly ushered in the era of intelligent mobile devices, and later, Google released Android. The end result of my struggle for years, an intelligent mobile operating system, were washed away by the tide of the times.

This article introduces the essence of code and data being the same, but having different uses in different scenarios. It also introduces the profound transformation of the operating system and program structure in the first decade of the 21st century, from the rise of the Internet to the move towards cloud computing, and how people's understanding of programs and data changed from confusion to being taken for granted.