Эпос «Bell Labs»

Эпос «Bell Labs»

Abanazar

Сегодня я расскажу тебе про легендарную тройку инженеров: Роба Пайка, Брайана Кернигана и Денниса Ритчи. Все они работали вместе в Bell Labs, откуда пошла одна из эволюционных цепочек развития технологий, которая повлияла на всю индустрию и цифровой мир в целом. Их вклад коснулся как операционных систем, сетевых протоколов так и языков программирования. А основополагающим фактором каждого их творения был единый манифест «Do One Thing And Do It Well» («Делайте что-то одно и делайте это хорошо»). На самом деле целью этой статьи является показательный пример действительно хорошего подхода к разработке и развенчание корпоративной философии разработки продуктов, который я хочу тебе представить путем небольшой ретроспективы.

Глава 1. Бессмертная классика:

Все парадигмы коммерческой разработки созданы для ускорения твоей работы, удобства написания кода и прочих очень важных механизмов. Задумайся действительно ли это так? На данный момент каждый из нас имеет вагон парадигм таких как ФП, ООП, манифесты по типу DRY и SOLID, и сомнительные решения в виде монолитов. Все перечисленное имеет характер ограниченного коммерческого инфо-пузыря, в рамках которого современный разработчик мысленно гуляет. Они ограничивают твой круг профессионального мышления и навязывают рамки в угоду корпоративной машине. По этой причине у нынешних разработчиков зачастую отсутствует фантазия, навыки и глубокое понимание работы кода. Конечно ничто не обязует использовать их и писать код строго в этих рамках, но каждому человеку свойственна лень, а у разработчиков она от некоторых факторов чаще всего прогрессирует. По этой причине парадигмы кода заседают в голове как постоянный элемент. Керниган и Пайк были правы в том что раздувание кодовой базы и покрытие проекта кучей механизмов, которые изменяют поведение программы кардинальным образом либо добавляют ей какие-то иные функциональные отростки является огромной проблемой. Но «Do One Thing And Do It Well» решает эту проблему и снимает с разработчика его когнитивное ограничение по парадигмам. В больших раздутых проектах, которые и являются продуктом современной коммерческой разработки как раз таки большая кодовая база и вздутость являют собой причину прогрессии лени, которая в свою очередь как писалось выше приводит к рамкам одной или нескольких парадигм для написания кода. Решение этих двух сотрудников Bell Labs должно было снять все негативные причинно-следственные проблемы, но глобально этот манифест разработки так и не увидел мир. Однако некоторого рода развитие в современном мире всё таки получил в виде микросервисной архитектуры. Но и они отлично себя показывают только в серверной разработке. А для иных кейсов решения исходящего из манифеста Кернигана и Пайка придумано не было.


Однако в 1970-х годах на основе своего манифеста Bell Labs AT&T выпускают UNIX систему, которая вобрала в себя множество пока сырых, но показательных смелых революционных решений. UNIX в нашем повествовании является первым основополагающим проектом всего эпоса, и именно эта система породила UNIX-like пути, которые захватили мир серверов и немного откусили долю desktop в мире. Но останавливаться долго на ней мы не будем, потому что тебе итак все понятно касаемо данной мейнстрим технологии.


Глава 2. Кролик прародитель:

PLan9 OS

В 1980-ых годах подразделение Bell Labs начало свою работу над операционной системой Plan9, которая стала первым полноценным микросервисом в то время, а за его работу отвечал протокол 9p. Система вобрала в себе как UNIX концепции по типу того что каждый ресурс — это файл, так и обросла новыми технологиями. Таким образом пользователи получали доступ не к самой машине, на которой система запускалась, а только лишь к вычислительной среде. И каждое подобное пространство пользователя имело возможность конфигурации.

Wiki:

«Так, /dev/mouse для процесса — это мышь на компьютере, с которого этот процесс запущен, причём это может быть не тот компьютер, на котором исполняется процесс.»

Оконная система Rio вообще была очередным микросервисом, который являлся отдельным сервером файлового интерфейса. Вообще всё что находилось внутри системы являлось сервером, допустим: оболочка системы Acme, механизм взаимодействия процессов Plumber, справочник wikifs, окна и некоторые сетевые процессы. Уже на тот момент 9p протокол умел кэшировать и обслуживать представления процессов (proc/procfs). Позже протокол даже лёг в основу реализации одного из клиентских драйверов для GNU/Linux систем.

Эта операционная система была продолжением идей и манифеста Роба Пайка и Брайана Кернигана после создания UNIX. Очередная удачная попытка двух умов внести свой вклад в развитие технологий. В будущем тот же 9p и вообще в целом микросервисная архитектура Plan9 станут теоретическими ядрами для gRPC и дадут толчок в сторону развития компактных распределенных операционных систем. Но Glenda — кролик маскот операционной системы стал началом для множества языков программирования. Этот символ стал визуальным храмом и идентификатором манифестов Пайка и Кернигана. Именно Гленда стала родителем Alef, Inferno OS, Limbo, Golang, Python и некоторых других современных и не очень технологий.


Глава 3. Река Styx:

Inferno OS

Следующей градацией Plan9 стала операционная система Inferno OS, которая вобрала в себя лучшие решения предшественника и попыталась продвинуть дальше идеи нашей тройки из Bell Labs. Так сетевой протокол 9p получил развитие и превратился в Styx, а распределение ресурсов и пользовательских пространств стало менее раздуто. Но основным отличием Inferno является попытка создать среду разработки внутри операционной системы. В качестве языка программирования использовался Limbo, который позволял писать простой и явный код без излишеств синтаксического сахара. А так же среда разработки позволяла писать программы, которые можно было исполнять интерпретатором либо компилировать архитектурно-независимый байтовый код. Во многом именно Limbo стал родителем Golang, а маскотов как для PLan9 так и для героев нашей главы создавала иллюстратор Renée French. Разработка и издательство системы легли на плечи компании Vita Nuova, хотя непосредственно идеи и сам процесс создания крутились в основном вокруг Роба Пайка и Брайана Кернигана.


Итог:

Идеи нашей тройки создали целый культ и внесли огромный вклад в развитие технологий. Именно сотрудники Bell Labs в большей части дали начало тому цифровому миру в котором мы сейчас живем. И именно они с самого начала своей карьеры боролись с корпоративной машиной и проблемами разработчиков из за нее, который и по сей день остались с нами. Роб Пайк всегда пропагандировал написание вольного кода, такого что не связывает тебе руки, дает масштабирование, показывает полную явность и прозрачность. Совсем не обязательно писать код внутри рамок парадигм, потому что они только сдвигают рамки релиза, но убивают тебя как разработчика. Плохой код — это неявный и усложненный сахаром, который в наше время получил сильное развитие и свой культ. Под культом я имею ввиду JS, C#, Java, Python и прочие языки узники парадигм.
В конце второй главы я написал что Гленда была так же прародителем Python, потому что исходя из одной легенды офиса Google можно узнать о том что на момент написания Golang такой персонаж как Гвидо ван Россум очень сильно старался внести свои еретические идеи в язык, но получив от ворот поворот взялся за Python, в котором успешно позаимствовал некоторые идеи от Go.
В итоге всей этой истории получилось так, что идеи тройки инженеров остались лишь редким и малоизвестным руководством по написанию чистого кода, а их технологии и идеи не получили практический никакой глобальной и прорывной реализации. Корпоративная машина однажды попыталась использовать наработки Plan9, но создала мутанта оркестрации Kubernetes и сомнительные микросервисные решения. Однако даже в рамках коммерческой разработки вы всегда вольны писать код правильно, а не бегать с ООП на плечах и решать ненужные задачки на Leetcode. Не бойтесь проявлять инициативу, гнуть свою линию и давать личным навыкам программирования расти.
Так же хотелось бы обратить твое внимание на тот факт, что в мире Open Source есть множество прекрасных реализаций идей Bell Labs помимо тех что описаны в статье, и множество не менее прекрасных технологий.

Пожалуй завершим наше повествование списком литературы: "The Practice of Programming", "The Unix Programming Environment", "Understanding the digital world: what you need to know about computers, the internet, privacy, and security",
Керниган и Пайк были правы: делай что-то одно и делай это хорошо и "The Cathedral and the Bazaar"


Report Page