- PVSM.RU - https://www.pvsm.ru -
Алан Кей, автор SmallTalk, работает над экспериментальной системой STEPS – средой, которая способна заменить собой операционную систему и прикладные программы, при этом объём кода этой среды не должен превышать 20 000 (двадцать тысяч!) строк кода. Возможно, многие об этом уже слышали [1]. Это одна из попыток воплощения мечты любого программиста: написать всё заново и красиво. Но возможно ли это?

Если знаменитые 640K разделить на 20 тысяч строк кода, то получается по 32 байта на строку – это очень похоже на правду. Похоже, Алан Кей дежит в уме именно этот ориентир, просто стесняется произнести вслух: «640K хватит всем».
Билл Гейтс об этом догадался ещё 3 десятка лет назад. Деньги его испортили потом, а поначалу он был правильным пацаном: его BASIC занимал всего 4К. Со временем он догадался приспособить закон Мура к размеру ПО и размеру своих доходов, и ему стало не до краткости.
В юности родители Билла даже водили его к психиатру, видя одержимость их отпрыска программированием. Но со временем Билл перестал программировать, потому что стал боссом. «Раньше я любил лето. Но когда вырос, то понял, что лето может быть круглый год, лишь бы были деньги. Теперь я люблю деньги».
Было бы наивно думать, что раздутый код пишется только Редмонде. Даже Линус сокрушается, глядя на своё творение: «Ядро раздутое и огромное». С каждым новым релизом ядро Linux теряет порядка 2% производительности. И это неизбежно, считает могучий финн [2].
Давайте подумаем, можно объём ПО сократить, причём значительно? Возьмём, к примеру, любой текстовый редактор. Для реализации заявленной функциональности автор применяет, например, некий алгоритм поиска. Но в коде установленного на компьютере браузера тоже есть поиск, и, возможно, с таким же алгоритмом. Он же есть и в офисном пакете, и в играх, и в ОС, поверх которой всё это работает. Было бы логично этот поиск реализовать единожды, а дальше только им пользоваться. При глубоком анализе можно выявить массу повторяющихся вещей.
Грамотная, ювелирная декомпозиция способна творить чудеса, главное – это увидеть повторяющиеся фрагменты, выделять их в отдельные абстракции и затем упрощать. У Алана Кея это получается: код, реализующий протокол TCP/IP, занимает 160 строк. Не один он такой умный. Ховик Меликян приводит пример [3], когда программа из 80000 строк кода на Си++ и 55000 строк кода на VB заменялась 10 строками на шелл-скрипте.
Но возможно ли двадцатью тысячами строк кода заменить всё? Можно, но только если отказаться от многих стандартов. Например, веб-страницы, с точки зрения авторов STEPS, нужно заменить документами, используя гиперссылки. Т.е. «неправильные пчелы и неправильный мед» (http, html, css и проч.) заменяются на правильные. И так почти во всём.
И что из себя будет представлять этот код? Хорошо, если бы он не был «помехами в телеграфной линии [4]». Роберт Себеста о таком коде пишет: «Даниель Мак-Кракен однажды отметил, что чтение и анализ программы из четырёх строк, написанных на языке APL, заняли у него четыре часа».
В этой системе есть высокоуровневые языки OMeta и Nile, синтаксис которых смахивает на С и Python соответственно. Программы на них в конечном итоге транслируются в программы на низкоуровневом языке Nothing. Вот пример на OMeta: синтаксис калькулятора:

С виду – ничего волшебного, легко читается и понимается.
Чтобы помочь задумкам Алана Кея по завоеванию мирового господства, нам придётся приучить себя к аскетизму. Возьмём, к примеру, текстовый редактор. На дворе 21 век, но проверки орфографии в нём быть не должно. Почему? Да потому что она не впишется в эти 20 тысяч. Естественные языки сложны. Если для анализа текста на каком-то языке вдруг каким-то чудом хватит ста строк кода, то надо учесть, что число языков, вообще-то, измеряется тысячами. Но даже если число языков приравнять к числу государств, то эти сто строк надо умножить ещё на двести. Получаются те самые 20 тысяч…
А драйвера? Если одному типу устройств хватит тех же 100 строк, то типов устройств куда больше, чем число языков и государств. Если изготовители устройств решат помочь Кею и будут хранить драйвера в самих устройствах, то «раздутое ПО» просто сменит место своего хранения.
Даже если предположить, что 20 % кода покроет 80 % потребностей пользователей, то окажется, что у каждого 20% неудовлетворённых потребностей окажутся разными. Кому-то будет нужен Фотошоп, кому-то – Автокад, а кому-то – и вовсе Дип Фриц. И так во многом.
1) В разработку ПО по всему миру вложены триллионы долларов, большая часть из которых – вовсе не компаниями, с которыми потенциально конкурирует STEPS. Под неё нет даже компиляторов самых распространённых языков, поэтому пока нет даже намёка на возможность переноса наработанного.
2) Нет потребности в таком кратком коде. Ради экономии памяти? Память стоит копейки, её объём даже на простейших устройствах превышает те самые 640К. Может, программы будут выполняться быстрее? Да нет, все программы в этой системе сначала транслируются в программы на низкоуровневом языке Nothing, и только затем исполняются. По оценке самого Кея, его код примерно на 30% медленнее традиционного.
Это самые очевидные причины. Так что разработки Алана Кея и его команды не смогут вытеснить современные ОС, браузеры, офисные приложения.
1) Тогда крупнейшие налогоплательщики типа Microsoft, Apple, Google, Adobe и прочих убедительно докажут домохозяйкам и правительствам, почему подходы Кея ошибочны. И вообще, они нарушают массу патентов. Под STEPS нет привычных приложений. Данные на компьютерах не защищены, безопасность не обеспечивается.
2) Против 20 тысяч строк кода, которые потрясут мир, выступит даже великий и ужасный Линус! Ибо чем ему заниматься? Перетаскиванием диванов [5]?
Даже у тайно симпатизирующих найдутся причины противиться такой перспективе.
3) Вирусописатели обнаружат, что система STEPS чрезвычайно к ним дружелюбна. А там и антивирусные компании подтянутся. Google популярно объяснит, что хранить данные на компьютере уже совсем не комильфо: пусть данные хранятся в облаке, а «корпорация добра» напишет для нас свои 20 тысяч строк кода.
Это далеко не всё…
Она останется голубой мечтой поэта. Сном изнеможённого рутинным трудом программиста. Напоминанием о том, что в этом мире есть вечные ценности: краткость, ясность и красота кода. Пропагандой силы мысли. Образцом для подражания. И, конечно, полигоном для экспериментов.
Автор: yomayo
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/52331
Ссылки в тексте:
[1] уже слышали : http://www.computerra.ru/65749/steps/
[2] считает могучий финн: http://www.linux.org.ru/news/kernel/4068847
[3] приводит пример : http://web.archive.org/web/20090618031847/http://www.melikyan.com/dalshe/articles/badcode.html
[4] помехами в телеграфной линии: http://dr-klm.livejournal.com/42312.html
[5] Перетаскиванием диванов: http://habrahabr.ru/post/202460/
[6] Источник: http://habrahabr.ru/post/208474/
Нажмите здесь для печати.