Однако если не обращать внимания на проблемы такого рода (предположим, что программы просто пишутся на бумаге), вопрос остается: захотели бы программисты шестидесятых использовать языки, которые мы используем сейчас?
Думаю, да. Самым ограниченным из них, наверное, мешали бы въевшиеся в мозг особенности ранних языков (разве можно манипулировать данными без операций с указателями? Как организовать ветвление, когда нет goto?) Но в умных программистов тех времен не возникло бы проблем с большинством современных языков , докажи им столкнуться с ними.
В действительности же, язык, которым мы думаем, так ограничивает наши представления о возможном, более простые способы формулировки программ удивят нас.
Приблизительно оценить сложность написания программы можно по ее длине. Разумеется, измерять длину программы надо не в символах, а в отдельных синтаксических элементах - фактически, нас интересует размер дерева грамматического разбора. Написать короткую программу не всегда проще, но лучше уж целиться в ясную мишень краткости, чем в расплывчатые мишень меньшего труда. Это означает, что при разработке языка надо действовать так: посмотрим на программу и спросим себя, существует ли способ записать ее еще более кратко.
Сейчас с языка будущего, по крайней мере, получился бы отличный псевдокод. Но подошел бы он для написания этого программного обеспечения? Поскольку язык будущего должен транслироваться в быстрый код для некоторых видов приложений, он, вероятно, сможет работать достаточно эффективно на современном "железе". Нам придется больше заботиться об оптимизации, чем программистам через сто лет, но мы все равно можем остаться в выигрыше.
На поверку оказывается, что написать программу на воображаемом языке будущего удается, только когда используются лишь базовые возможности языка. Написать процедуру сортировки можно и сейчас. Но нельзя предсказать, какие библиотеки понадобятся через сто лет. Скорее всего, многие из них будут служить для решения проблем, которых сейчас просто нет. Если проект SETI @ home завершится успешно, нам потребуются библиотеки для связи с инопланетянами. Впрочем, возможно, инопланетяне уже достаточно развиты, чтобы поддерживать связь в формате XML. С другой стороны, я думаю, основу языка будущего можно было бы придумать и сегодня.
Развитие физики в течение следующих ста лет предсказать невозможно. Программирование - совсем другое дело. Думаю, принципе, сейчас вполне возможно изобрести язык, который будет привлекателен для пользователей через сто лет.
Вот один из способов: просто возьмем и попробуем написать такую программу, которую хотелось бы иметь возможность написать. Не нужно заботиться о том, существует компилятор, чтобы перевести ее в машинный код, или "железо", на котором она заработает. Когда пишете, рассчитывайте на неограниченные ресурсы. Чтобы представить неограниченные ресурсы, не нужно ждать сто лет. Это можно сделать прямо сейчас.
Страница 9 из 63
Свободно распространяемые операционные системы на базе Linux
.
Комплекс программ для наилучшего достижения цели
Реаниматоры, оболочки для восстановления файлов
.
Свободно распространяемые обучающие программы, видео, аудиофайлы
широкий спектр программных решений, в которых права пользователя («свободы») на неограниченные установку, запуск, а также свободное использование, изучение, распространение и изменение (совершенствование) программ защищены юридически авторскими правами при помощи свободных лицензий.
- Сергей Игрулин -