Примеры исходного кода, которые должен увидеть каждый разработчик

0
1987
views

Перевод статьи «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, который мне когда-либо доводилось видеть (могут быть файлы и подлиннее, просто я нашел именно этот).

В исходном файле больше 20 тыс. строк кода

Chromium

Такие популярные браузеры как Google Chrome, Microsoft Edge и Opera созданы на базе опенсорсного проекта Chromium. Этот проект имеет две основные зависимости: движок Blink (форк библиотеки WebCore, разработанной командой Webkit) и JavaScript-движок V8, разработанный датским отделением компании Google.

Разумеется, кодовая база Chromium очень обширна, а кроме того содержит множество сторонних модулей, таких как gRPC и Skia. Но команда Chromium отлично структурировала все компоненты. У них очень продуманно разделены логика внутренних функций и логика, касающаяся пользовательского интерфейса. Благодаря этому достигается хорошая поддерживаемость всего проекта.

Организация кода в Chromium

Кроме того, в этой кодовой базе содержится исходный код Chromium Android и iOS-приложений.

Структурирование высокомасштабируемых кроссплатформенных приложений может быть сложной задачей. Но Chromium имеет впечатляющее разделение кода, касающегося Linux, Windows и Mac.

Gitk

Сегодня в деле управления версиями кода практически каждой команде помогает Git. Эта система контроля версий была разработана Линусом Торвальдсом (создателем ядра ОС GNU/Linux).

Разумеется, в кодовой базе Git есть и исходный код Gitk. Gitk — это GUI-приложение, обеспечивающее визуальную навигацию по коммитам.

Чтобы посмотреть, чем отличаются два коммита, можно воспользоваться следующей командой:

$ git diff <commit hash> <commit hash>

Но поскольку Gitk — визуальный инструмент, с его помощью мы можем увидеть разницу гораздо быстрее.

В исходном файле около 12 тыс. строк кода

Весь исходный код Gitk умещается в одном файле. Код написан на скриптовом языке Tcl с использованием Tk UI-toolkit — расширения Tcl. Вместить целое GUI-приложение в один файл — сложная задача. Также заслуживает уважения подбор подходящего динамического языка для более быстрой разработки GUI-приложения.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here