Connect with us

Программирование

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

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

Опубликовано

/

     
     

Иногда я просматриваю репозитории Github, когда у меня появляется свободное время. Кроме того, когда я начинаю использовать новое компьютерное ПО, инструменты или утилиты, мне нравится понимать, как работает конкретное программное обеспечение. В большинстве случаев я смотрю на его код, чтобы разобраться, как именно работают внутренние модули и внешние зависимости.

Несколько лет назад я проверял исходный код реализации языка Python. После этого я заметил несколько исходных файлов C и внезапно проверил реализацию коллекции компилятора GNU C. Я обнаружил, что этот современный компилятор C был написан на самом языке C. Изучение чего-либо изнутри и возвращение назад на более глубоком уровне дают нам удивительные чувства и большие знания. Предыдущие поколения разработчиков проделали огромную работу, чтобы дать нам самые разнообразные инструменты. Как современные программисты, мы должны ценить их впечатляющий труд.

Когда я просматривал репозитории на Github, я заметил следующие интересные работы, которые были проделаны разработчиками по всему миру.

Программа наведения Аполлона-11

Аполлон-11 был первой успешной миссией, отправившей людей на Луну. Управляющий компьютер Apollo (AGC), который имел всего 4 килобайта физической памяти, обеспечивал управление космическим кораблем. Программное обеспечение для AGC было написано на языке ассемблера и хранилось в специальной постоянной памяти, называемой “веревочной” памятью. Некоторое время назад в Интернет были загружены отсканированные копии исходного кода. После этого кто-то преобразовал несколько модулей в текстовые файлы и загрузил их в репозиторий Github.

Команда инженеров Apollo приложила огромные усилия, чтобы добиться такого удивительного достижения, написав множество строк кода на ассемблере. В 1960-х программировать было труднее, чем сейчас. Потому что в то время у языков программирования был меньший уровень абстракции. Кроме того, программистам приходилось писать супероптимизированный код для эффективного использования оборудования.

Quake III Arena

Quake III Arena — шутер от первого лица, разработанный id Software. Он был разработан в 90-х годах, когда индустрия 3D-игр только начинала свой путь, с использованием игрового движка id Tech 3. В то время аппаратные ресурсы были очень ограничены, в отличие от наших дней. Поэтому разработчикам игр пришлось написать тщательно оптимизированный код для рендеринга графических элементов.

Многие расчеты в программировании требуют векторной нормализации, которая вызывает необходимость вычисления обратного квадратного корня. Как уже упоминалось, разработчики должны были выбрать наиболее эффективные алгоритмы для всех работ, связанных с компьютерной графикой. Поэтому команда Quake III Arena использовала очень умный подход для быстрого вычисления обратного квадратного корня, как показано ниже, с использованием вычислений на битовом уровне.

Уровень оптимизации, использованный в этом фрагменте кода и во всем коде, написанном для создания такой красивой компьютерной игры в 90-е годы, очевидно, поражает. В настоящее время разработчики игр обычно не занимаются таким уровнем вычислений, поскольку физические функции уже реализованы игровыми движками.

Коллекция компиляторов GNU

Язык программирования C — отец современного ПО, потому что он расположен очень близко к аппаратному обеспечению, а также предлагает хороший уровень абстракции, понятный человеку. Сам компилятор GNU C написан на самом языке программирования C с использованием концепции bootstrapping-а. Я заметил самый длинный исходный файл C, который я когда-либо видел (наверное могут быть и более длинные исходные файлы C, чем этот, но это тот, который я видел) из кодовой базы GNU Compiler Collection на Github.

Chromium

Популярные веб-браузеры, такие как Google Chrome, Microsoft Edge и Opera, основаны на проекте с открытым исходным кодом Chromium, который имеет две основные зависимости: механизм рендеринга Blink, который является форком библиотеки WebCore, разработанной командой Webkit, и движок JavaScript v8, который разработан командой проекта Chromium. Несомненно, кодовая база Chromium очень велика, и в ней также есть много сторонних модулей, таких как gRPC и Skia. Однако команда Chromium отлично структурировала все компоненты. Они разумно разделили логику, связанную с пользовательским интерфейсом, и логику внутренних функций, чтобы добиться очень хороших показателей поддерживаемости на протяжении всего проекта.

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

Gitk

В настоящее время Git помогает почти каждой команде разработчиков программного обеспечения управлять историей кода и его версиями. Первоначально Git был создан основателем ядра Linux Линусом Торвальдсом. В кодовой базе Git есть  волшебный пример работы — исходный файл Gitk. Gitk — это приложение с графическим интерфейсом, которое помогает нам визуально перемещаться по коммитам. Мы можем использовать следующую команду CLI, чтобы проверить разницу между двумя коммитами.

$ git diff <commit hash> <commit hash>

Но Gitk позволяет нам так быстро видеть изменения, потому что это визуальный инструмент. Весь исходный код Gitk — это всего лишь один файл. Он написан на языке сценариев Tcl с использованием Tk UI, который является расширением Tcl. Проделана огромная работа в реализации приложения с графическим интерфейсом пользователя всего в одном исходном файле, а также в выборе языка динамического программирования для более быстрой разработки приложений с графическим интерфейсом.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Популярное

X

Спасибо!

Теперь редакторы в курсе.