Перевод статьи «Impressive Source Codes That Every Developer Should See».
Когда у меня выдается свободное время, я обычно блуждаю по GitHub-репозиториям. Кроме того, когда я приступаю к изучению новых программ, инструментов или утилит, я стараюсь посмотреть на эти программы в действии. Чаще всего я заглядываю в их кодовую базу: это позволяет мне понять, как именно все работает, какие там внутренние модули и внешние зависимости.
Погружение во внутренние глубины технологий дарит невероятные ощущения и позволяет приобрести новые знания. Разработчики прошлого проделали огромную работу, чтобы подарить нам более спокойный мир. Мы, современные разработчики, должны быть за это благодарны.
В этой статье я поделюсь с вами впечатляющими работами, на которые я наткнулся, бродя по репозиториям.
Управляющая программа Аполлона-11
Аполлон-11 — первый космический корабль, успешно доставивший людей на поверхность Луны. Бортовой управляющий компьютер (AGC), имевший всего 4 килобайта физической памяти, обеспечивал поддержку контроля полетов. Программное обеспечение для AGC писалось на языке ассемблера AGC и хранилось в специальной памяти, доступной только для чтения (rope memory, «веревочная память»).
Некоторое время назад сканированные копии исходного кода были выложены в интернет. Затем кто-то конвертировал несколько модулей в текстовые файлы и загрузил их в GitHub-репозиторий.
Инженерная команда Аполлона приложила титанические усилия, чтобы добиться такого потрясающего результата. Они написали множество строк кода на языке ассемблера. В 1960-е программирование было сложнее, чем сейчас. В то время языки программирования имели более низкий уровень абстракции. Кроме того, для эффективного использования «железа» разработчикам приходилось писать супероптимизированный код.
Quake III Arena
Quake III Arena — это компьютерная игра в жанре шутера от первого лица. Разработала ее студия id Software.
Игра была создана в 1990-х, когда индустрия 3D-игр только начала свой путь. Для ее создания использовался игровой движок id Tech 3. В то время ресурсы «железа» были очень ограничены, не то, что сейчас. Поэтому для рендеринга графических элементов гейм-девелоперам приходилось писать тщательно оптимизированный код.
Многие расчеты игрового программирования требуют концепции векторной нормализации, которая вызывает необходимость вычисления обратного квадратного корня. А как уже упоминалось, разработчикам нужно было выбирать наиболее эффективные алгоритмы для работ, связанных с компьютерной графикой. Поэтому команда Quake III Arena использовала очень умный подход для быстрого вычисления обратного квадратного корня (см. иллюстрацию ниже) с использованием вычислений на битовом уровне.
Уровень оптимизации этого отрывка кода, да и вообще всего кода, необходимого для создания хорошей игры в 1990-е годы, просто потрясает. Сегодня гейм-разработчики обычно не занимаются вычислениями на таком уровне, потому что физические функции уже реализованы игровыми движками.
GNU Compiler Collection
Язык программирования C можно назвать отцом современного программирования, потому что он очень близок к аппаратному обеспечению, но вместе с тем предлагает хороший уровень абстракции, понятный человеку.
GNU C-компилятор относится к раскручиваемым. Другими словами, он написан на самом языке C с использованием концепции раскрутки компилятора. В кодовой базе GNU Compiler Collection на GitHub я обнаружил самый длинный исходный файл на языке C, который мне когда-либо доводилось видеть (могут быть файлы и подлиннее, просто я нашел именно этот).
Chromium
Такие популярные браузеры как Google Chrome, Microsoft Edge и Opera созданы на базе опенсорсного проекта Chromium. Этот проект имеет две основные зависимости: движок Blink (форк библиотеки WebCore, разработанной командой Webkit) и JavaScript-движок V8, разработанный датским отделением компании Google.
Разумеется, кодовая база Chromium очень обширна, а кроме того содержит множество сторонних модулей, таких как gRPC и Skia. Но команда Chromium отлично структурировала все компоненты. У них очень продуманно разделены логика внутренних функций и логика, касающаяся пользовательского интерфейса. Благодаря этому достигается хорошая поддерживаемость всего проекта.
Кроме того, в этой кодовой базе содержится исходный код Chromium Android и iOS-приложений.
Структурирование высокомасштабируемых кроссплатформенных приложений может быть сложной задачей. Но Chromium имеет впечатляющее разделение кода, касающегося Linux, Windows и Mac.
Gitk
Сегодня в деле управления версиями кода практически каждой команде помогает Git. Эта система контроля версий была разработана Линусом Торвальдсом (создателем ядра ОС GNU/Linux).
Разумеется, в кодовой базе Git есть и исходный код Gitk. Gitk — это GUI-приложение, обеспечивающее визуальную навигацию по коммитам.
Чтобы посмотреть, чем отличаются два коммита, можно воспользоваться следующей командой:
$ git diff <commit hash> <commit hash>
Но поскольку Gitk — визуальный инструмент, с его помощью мы можем увидеть разницу гораздо быстрее.
Весь исходный код Gitk умещается в одном файле. Код написан на скриптовом языке Tcl с использованием Tk UI-toolkit — расширения Tcl. Вместить целое GUI-приложение в один файл — сложная задача. Также заслуживает уважения подбор подходящего динамического языка для более быстрой разработки GUI-приложения.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]