Эти исторические кодовые базы заложили основу сегодняшних компьютерных технологий.

Как и любая другая область, компьютерные технологии имеют впечатляющую прогрессивную историю. Сегодня мы используем высокопроизводительные компьютеры, высококачественные современные графические интерфейсы, удобные языки программирования и футуристические веб-приложения в реальном времени благодаря тяжелой работе, проделанной программистами прошлого. Изучение истории делает нас счастливыми — так интересно наблюдать за прогрессивным ростом инноваций со временем. Например, подумайте о тяжелой работе, стоящей за современным самолетом — как в прошлом люди превратили идею полета из орнитоптера в летательный аппарат — самолет. Точно так же компьютеры превратились из дорогостоящих машин размером с комнату в современные (относительно) недорогие устройства общего назначения.

В свободное время я часто просматриваю общедоступные исходные коды, доступные в Интернете. Некоторые кодовые базы содержат исходные коды современных популярных компьютерных программных модулей. Между тем, я нашел несколько впечатляющих исторических кодовых баз, которые больше не поддерживаются как пригодные для использования проекты, но существуют для того, чтобы сохранить их для следующих поколений как исторические объекты информатики.

В этой истории я объясню несколько исторических исходных кодов, которые помогли развитию всей компьютерной технологии. Мы можем изучить эти исходные коды, изучить и увидеть, как каждый проект повлиял на современную компьютерную экосистему и сделал нашу жизнь лучше!

Исходный код демонстрации World Wide Web (WWW)

Проект WWW предлагает способ обмена информацией через сетевые протоколы, такие как HTTP. В 1989 году Тим Бернерс-Ли продемонстрировал первую работающую версию WWW с совершенно новым веб-браузером и сервером. Тим написал первый веб-браузер Nexus на C и Objective-C, используя стандартную библиотеку C и библиотеку графического интерфейса AppKit в ОС NeXTSTEP. Вы можете найти исходный код браузера Nexus в этом репозитории GitHub. Посмотрите на первую реализацию парсера HTML:

Теперь у нас есть много полнофункциональных реализаций веб-сервера HTTP — вы даже можете создать свой собственный HTTP-сервер с предпочитаемым языком программирования. Каким был первый веб-сервер? Тим Бернерс-Ли продемонстрировал первую версию WWW с веб-сервером CERN httpd. Вы можете найти исходный код CERN httpd в этом репозитории GitHub.

Протокол HTTP родился в рамках проекта CERN httpd. Сервер генерирует заголовки HTTP следующим образом:

Исходный код раннего компилятора C

Компьютер — это цифровое устройство, которое может понимать только предопределенный набор атомарных инструкций, известный как ассемблер ISA. Несмотря на то, что прошлые программисты писали ранние компьютерные программы (например, POP II) с помощью ассемблера с помощью инструмента Assembler, написание кода на ассемблере, несомненно, требует много времени. Позже они представили концепцию компиляторов и разработали удобные для человека языки программирования.

C — известный компилируемый язык программирования. Мы по-прежнему используем C для создания различных программных систем. C, несомненно, является базовым языком — программисты создали почти все базовые компоненты компьютерной экосистемы на C, поэтому современные языки программирования никогда не заменят C, пока кто-то не перепишет прошлую историю компьютеров на другом языке. Я объяснил, почему вы должны изучать C, в следующей истории:



Все знают, что мы можем найти исходный код компилятора GNU C в этом репозитории GitHub, но где первая реализация компилятора C? Самый ранний доступный исходный код компилятора C доступен в этом репозитории GitHub. Этот компилятор не был написан на языке B, но это был самокомпилирующийся компилятор, написанный на C:

Снимки исходного кода ранних исследований Unix

Unix, несомненно, является дедушкой всех Unix-подобных и основанных на Unix операционных систем. Популярные операционные системы Apple используют ядро ​​Darwin-XNU. Ядро Darwin основано на реализациях BSD, взятых из оригинального исходного кода Unix. С другой стороны, Unix-подобные системы, такие как Linux и Minix, были созданы на основе основных концепций Unix.

Репозиторий unix-history-repo GitHub позволяет вам просматривать моментальные снимки исходного кода Unix на различных исторических этапах через ветки Git. Например, вы можете проверить исходный код самой ранней доступной версии Unix следующим образом:

Как видите, кодовые базы ранних версий Unix состоят из исходных файлов сборки PDP-7, но вы можете найти исходные файлы C в Unix версии 4. Автор этого репозитория создал историю на основе Git для временной шкалы разработки Unix. с проектом unix-history-make.

Очень приятно видеть вклад пионеров компьютерных наук, когда Git делает коммиты на GitHub. Например, посмотрите, как на следующем снимке экрана подразумевается, что GitHub существовал в 1970 году, хотя это и неправда:

Вы даже можете визуализировать эти коммиты через Gource! (Недавно я создал это видео с Гурсом)

Первый выпуск Linux (v0.01)

Линус Торвальдс создал ядро ​​Linux как бесплатную альтернативу с открытым исходным кодом для операционных систем Unix и Minix. Мы можем просмотреть исходный код Linux из официального репозитория с открытым исходным кодом на GitHub, но история этого репозитория начинается с версии 2.6. Однако первая версия ядра Linux была 0.01. Мы можем просмотреть исторический исходный код Linux 0.01 из этого репозитория GitHub.

Несмотря на то, что современная кодовая база Linux выглядит сложной для понимания, кодовую базу этой версии Linux было легко читать, поскольку исходных файлов относительно немного, и она поддерживает только процессоры i386. Посмотрите на минимальную функцию main ядра Linux версии 0.01:

Первоначально проект ядра Linux был личным хобби, но теперь миллионы облачных серверов, мобильных устройств и встроенных устройств используют ядро ​​Linux в качестве основы! Автомобильные компании также поддерживают форки ядра Linux (например, Tesla).

Первый движок JavaScript (Mocha)

После изобретения WWW люди начали публиковать общедоступные веб-страницы со статическим содержимым и гиперссылками с помощью концепции Web 1.0. Также программисты занялись разработкой веб-браузеров. Версия браузера Netscape Navigator поставлялась с новым языком сценариев на стороне клиента, чтобы сделать статические веб-страницы динамическими. Этот язык сценариев был известен как «LiveScript» в первом выпуске, но позже первоначальный автор, Брендан Эйх и Netscape, изменили его название на «JavaScript».

Популярные веб-браузеры поддерживают использование современных веб-API, таких как WebSockets, WebGL, DOM и WebRTC, поскольку существует JavaScript. JavaScript работает как промежуточный слой между браузером и веб-страницами и предлагает разработчикам интерфейс для доступа к веб-API. Это также помогает программистам снизить рабочую нагрузку на сервер, используя вычислительную мощность на стороне клиента через веб-браузер.

Репозиторий mocha1995 GitHub позволяет вам экспериментировать с первым движком JavaScript в вашем браузере через Emscripten. В отличие от современных сложных исходных кодов движка JavaScript, исходный код движка Mocha настолько прост для понимания.

Посмотрите, как он реализует встроенный Math.random:

Заключение

Каждый день технологии развиваются — новые инновационные технологии могут устареть или улучшить существующие технологии. Но так важно понимать, что мы изобретаем новые вещи и делаем нашу жизнь лучше благодаря тяжелой работе прошлых программистов. Поэтому мы должны сохранить их впечатляющие произведения и позволить будущим поколениям изучить их. Возможно, через сотни лет новые поколения смогут использовать вещи, подаренные нам прошлыми программистами, такие как C, архитектура Unix, протокол HTTP и т. д.

Когда вы начинаете изучать новый язык программирования, библиотеку или фреймворк, подумайте об изучении их внутренностей, истории и зависимостей, тогда вы станете практически лучше в конкретной технологии.

Изучите основы компьютерной архитектуры с помощью следующей истории:



Спасибо за прочтение.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу