Архивы: по дате | по разделам | по авторам

Снова о программировании в будущем

АрхивПереписка
13.08.2004

"Вы не пробовали на Лиспе написать, например, программу для автоматизации магазина? Вполне реальная задача. Теоретически, конечно, возможно. Но я бы не взялся, и не взялся бы найти программистов, которые это смогут".

Отзывы читателей на статью Пола Грэма "Языки программирования через сто лет".

From: Александр Шапошников
Subject: Re: Языки программирования через сто лет

Будущее... Каким оно перед нами предстанет? Будет ли оно жестоким? Или наоборот, станет добрее? Как изменится технология - следующий вопрос, но как изменятся люди? что будет с нами впереди?

Можно, конечно, сказать, что все как есть, так и останется. Может быть. Может и нет. Одно могу сказать точно: проще не будет.

На эти мысли меня навела статья Пола Грэма "Языки программирования через сто лет". Всю свою дорогу в будущее человек начал с того, что начал упрощать. На мой взгляд, совершенно случайно это вылилось в совершенствование техники. Могло это вырасти и во что-нибудь другое. Но вот беда: придумал он приспособления для всего - чтобы и тяжести поднимать, и суп варить, и чтобы тепло было и безопасно чтобы, для того, чтобы энергию запасать, и даже чтобы себе подобного мучить и унижать. И только устройства, чтобы проще было думать - не было.

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

Все знают, почему не может думать компьютер. Слабоват он. Он - всего-навсего куча полупроводников и проводников, если вдуматься. Мизерны его способности. Так вот, Пол Грэм задумывается над вопросом: а что будет, когда способности компьютеров возрастут?

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

Исходя из этой точки зрения, Пол Грэм предполагает, что языки станут проще для программиста, что и будет съедать всю избыточную мощь. То есть, если нынешние тенденции продолжатся, написание программы станет проще, в то время как при выполнении они станут гораздо менее эффективными. Программа будет выполнять миллион инструкций вместо одной, только для того, чтобы программист не парился писать КАЖДУЮ инструкцию, а накидал так, в общих чертах.

Конечно, это плата не только за удобство, но и за гибкость - чтобы программа не дала сбоев нигде - ни на одном уровне. Чтобы она сработала вне зависимости ни от чего. Лишь бы только программисту не пришлось разбираться с тем, с чем может разобраться программа - ведь у неё времени много, а у программиста - мало.

Пол Грем попытался посмотреть на будущее именно компьютерных языков. Что если посмотреть на него же с другой стороны? Не похоже ли это на то, как ведут себя живые существа? Это - про неэффективность. Посмотрите, как ведет себя начинающий автомеханик, который уронил ма-аленькую железячку в недра какого-нибудь устройства. Он встанет в неудобную позу, почти закрывая свет. Он полностью вымажет одежду в машинном масле. Он будет пытаться изо всех сил достать рукой, пусть едва задевая свою цель, и рискуя уронить её ещё глубже в этот самый механизм. Но, после всего, почти вывихнув пальцы, он все же достанет искомое и будет несказанно рад. Можно ли назвать такое поведение эффективным? Нет, если бы он подумал, то нашел бы более простой способ это сделать. Но, с другой стороны, он же все же сделал то, что ему нужно.

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

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

С этой точки зрения, напрашиваются интересные выводы...

Мы - суперкомпьютеры?

From: Михаил Миронов
Subject: Пол Грэхем. Языки программирования

Не прав господин Пол. Если статью сократить и упростить, то получается следующее: "Самый крутой язык уже давно изобретен, называется он Лисп, и если вы попробуете написать программу без оглядки на ограничения и оптимизацию, то в конце концов у вас получится именно программа на Лиспе... И проблема только в том, что вы привыкли писать по-другому..."

Мне (почему-то) кажется, что проблема действительно в привычке, но не у всех программистов, а у Грэхема: привык он писать на Лиспе... 
   
А я вот люблю реляционную модель: смотришь на схему, и всё так понятно без всякого кода. А потом впихиваешь эту схему в ООП и плюешься - некрасиво получается. Ну и что ж, реляционная модель лучше всех?
    
А по четным числам месяца я люблю ООП: пишешь программу, и всё так красиво получается. А потом пытаешься прикрутить к этой программе базу данных и плюешься - не ложится ОО-модель в БД.
    
Люди (программисты) немного разные, и мыслят по-разному. И задачи бывают разные. И каждому нравится конкретный класс задач решать по-своему. И это нормально.
    
Представьте, что все гайки Вас заставляют закручивать разводным ключом весом в 5 кг. Можно? Можно. Удобно? Мне нет. А если кому-то даже удобно (люди-то разные бывают), то могу поспорить, что разобрать и собрать велосипед, используя набор инструментов, у меня получиться быстрее, чем у этого "кого-то" разводным ключом. Так что дело не только в "оптимизации для медленного железа", но и  в оптимизации для мозгов. И мне кажется, в большей степени дело именно в мозгах. 

Вы не пробовали на Лиспе написать, например, программу для автоматизации магазина (БД + рабочие места + связь с торговым оборудованием)? Вполне реальная задача. Теоретически, конечно, возможно. Но я бы не взялся, и не взялся бы найти программистов, которые это смогут. Всем Лисп хорош, только (почему-то) ни кто на нем не пишет. Исключения только подтверждают правило. 
 
А вообще в развитии языков программирования наблюдается застой. Уже лет 30, а то и 35. Точно просто не помню. Когда там изобрели ООП, реляционную модель? Конец 60-х начало 70-х? Неужели дальше ничего нет? Я в это не верю.


Адрес редакции сайта "Компьютерра-Онлайн" - site@computerra.ru. Пишите.

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.