Pull to refresh

Двадцать тысяч строк кода, которые потрясут мир?

ProgrammingООP
Алан Кей, автор SmallTalk, работает над экспериментальной системой STEPS – средой, которая способна заменить собой операционную систему и прикладные программы, при этом объём кода этой среды не должен превышать 20 000 (двадцать тысяч!) строк кода. Возможно, многие об этом уже слышали. Это одна из попыток воплощения мечты любого программиста: написать всё заново и красиво. Но возможно ли это?
image

Опять 640K


Если знаменитые 640K разделить на 20 тысяч строк кода, то получается по 32 байта на строку – это очень похоже на правду. Похоже, Алан Кей держит в уме именно этот ориентир, просто стесняется произнести вслух: «640K хватит всем».

Билл Гейтс об этом догадался ещё 3 десятка лет назад. Деньги его испортили потом, а поначалу он был правильным пацаном: его BASIC занимал всего 4К. Со временем он догадался приспособить закон Мура к размеру ПО и размеру своих доходов, и ему стало не до краткости.

В юности родители Билла даже водили его к психиатру, видя одержимость их отпрыска программированием. Но со временем Билл перестал программировать, потому что стал боссом. «Раньше я любил лето. Но когда вырос, то понял, что лето может быть круглый год, лишь бы были деньги. Теперь я люблю деньги».

Было бы наивно думать, что раздутый код пишется только в Редмонде. Даже Линус сокрушается, глядя на своё творение: «Ядро раздутое и огромное». С каждым новым релизом ядро Linux теряет порядка 2% производительности. И это неизбежно, считает могучий финн.

Давайте подумаем, можно объём ПО сократить, причём значительно? Возьмём, к примеру, любой текстовый редактор. Для реализации заявленной функциональности автор применяет, например, некий алгоритм поиска. Но в коде установленного на компьютере браузера тоже есть поиск, и, возможно, с таким же алгоритмом. Он же есть и в офисном пакете, и в играх, и в ОС, поверх которой всё это работает. Было бы логично этот поиск реализовать единожды, а дальше только им пользоваться. При глубоком анализе можно выявить массу повторяющихся вещей.

Грамотная, ювелирная декомпозиция способна творить чудеса, главное – это увидеть повторяющиеся фрагменты, выделять их в отдельные абстракции и затем упрощать. У Алана Кея это получается: код, реализующий протокол TCP/IP, занимает 160 строк. Не один он такой умный. Ховик Меликян приводит пример, когда программа из 80000 строк кода на Си++ и 55000 строк кода на VB заменялась 10 строками на шелл-скрипте.

Но возможно ли двадцатью тысячами строк кода заменить всё? Можно, но только если отказаться от многих стандартов. Например, веб-страницы, с точки зрения авторов STEPS, нужно заменить документами, используя гиперссылки. Т.е. «неправильные пчелы и неправильный мед» (http, html, css и проч.) заменяются на правильные. И так почти во всём.

Что там за такой волшебный код?


И что из себя будет представлять этот код? Хорошо, если бы он не был «помехами в телеграфной линии». Роберт Себеста о таком коде пишет: «Даниель Мак-Кракен однажды отметил, что чтение и анализ программы из четырёх строк, написанных на языке APL, заняли у него четыре часа».

В этой системе есть высокоуровневые языки OMeta и Nile, синтаксис которых смахивает на С и Python соответственно. Программы на них в конечном итоге транслируются в программы на низкоуровневом языке Nothing. Вот пример на OMeta: синтаксис калькулятора:
image
С виду – ничего волшебного, легко читается и понимается.

Почему это невозможно даже теоретически.


Чтобы помочь задумкам Алана Кея по завоеванию мирового господства, нам придётся приучить себя к аскетизму. Возьмём, к примеру, текстовый редактор. На дворе 21 век, но проверки орфографии в нём быть не должно. Почему? Да потому что она не впишется в эти 20 тысяч. Естественные языки сложны. Если для анализа текста на каком-то языке вдруг каким-то чудом хватит ста строк кода, то надо учесть, что число языков, вообще-то, измеряется тысячами. Но даже если число языков приравнять к числу государств, то эти сто строк надо умножить ещё на двести. Получаются те самые 20 тысяч…

А драйвера? Если одному типу устройств хватит тех же 100 строк, то типов устройств куда больше, чем число языков и государств. Если изготовители устройств решат помочь Кею и будут хранить драйвера в самих устройствах, то «раздутое ПО» просто сменит место своего хранения.

Даже если предположить, что 20 % кода покроет 80 % потребностей пользователей, то окажется, что у каждого 20% неудовлетворённых потребностей окажутся разными. Кому-то будет нужен Фотошоп, кому-то – Автокад, а кому-то – и вовсе Дип Фриц. И так во многом.

Причины, по которым STEPS не «взлетит».


1) В разработку ПО по всему миру вложены триллионы долларов, большая часть из которых – вовсе не компаниями, с которыми потенциально конкурирует STEPS. Под неё нет даже компиляторов самых распространённых языков, поэтому пока нет даже намёка на возможность переноса наработанного.

2) Нет потребности в таком кратком коде. Ради экономии памяти? Память стоит копейки, её объём даже на простейших устройствах превышает те самые 640К. Может, программы будут выполняться быстрее? Да нет, все программы в этой системе сначала транслируются в программы на низкоуровневом языке Nothing, и только затем исполняются. По оценке самого Кея, его код примерно на 30% медленнее традиционного.

Это самые очевидные причины. Так что разработки Алана Кея и его команды не смогут вытеснить современные ОС, браузеры, офисные приложения.

А если STEPS вдруг станет популярной?


1) Тогда крупнейшие налогоплательщики типа Microsoft, Apple, Google, Adobe и прочих убедительно докажут домохозяйкам и правительствам, почему подходы Кея ошибочны. И вообще, они нарушают массу патентов. Под STEPS нет привычных приложений. Данные на компьютерах не защищены, безопасность не обеспечивается.

2) Против 20 тысяч строк кода, которые потрясут мир, выступит даже великий и ужасный Линус! Ибо чем ему заниматься? Перетаскиванием диванов?
Даже у тайно симпатизирующих найдутся причины противиться такой перспективе.

3) Вирусописатели обнаружат, что система STEPS чрезвычайно к ним дружелюбна. А там и антивирусные компании подтянутся. Google популярно объяснит, что хранить данные на компьютере уже совсем не комильфо: пусть данные хранятся в облаке, а «корпорация добра» напишет для нас свои 20 тысяч строк кода.

Это далеко не всё…

Чем тогда станет STEPS?


Она останется голубой мечтой поэта. Сном изнеможённого рутинным трудом программиста. Напоминанием о том, что в этом мире есть вечные ценности: краткость, ясность и красота кода. Пропагандой силы мысли. Образцом для подражания. И, конечно, полигоном для экспериментов.
Tags:Операционные системыязыки программированияООП
Hubs: Programming ООP
Total votes 152: ↑105 and ↓47+58
Views102K

Popular right now