Выбрать книгу по жанру
Фантастика и фэнтези
- Боевая фантастика
- Героическая фантастика
- Городское фэнтези
- Готический роман
- Детективная фантастика
- Ироническая фантастика
- Ироническое фэнтези
- Историческое фэнтези
- Киберпанк
- Космическая фантастика
- Космоопера
- ЛитРПГ
- Мистика
- Научная фантастика
- Ненаучная фантастика
- Попаданцы
- Постапокалипсис
- Сказочная фантастика
- Социально-философская фантастика
- Стимпанк
- Технофэнтези
- Ужасы и мистика
- Фантастика: прочее
- Фэнтези
- Эпическая фантастика
- Юмористическая фантастика
- Юмористическое фэнтези
- Альтернативная история
Детективы и триллеры
- Боевики
- Дамский детективный роман
- Иронические детективы
- Исторические детективы
- Классические детективы
- Криминальные детективы
- Крутой детектив
- Маньяки
- Медицинский триллер
- Политические детективы
- Полицейские детективы
- Прочие Детективы
- Триллеры
- Шпионские детективы
Проза
- Афоризмы
- Военная проза
- Историческая проза
- Классическая проза
- Контркультура
- Магический реализм
- Новелла
- Повесть
- Проза прочее
- Рассказ
- Роман
- Русская классическая проза
- Семейный роман/Семейная сага
- Сентиментальная проза
- Советская классическая проза
- Современная проза
- Эпистолярная проза
- Эссе, очерк, этюд, набросок
- Феерия
Любовные романы
- Исторические любовные романы
- Короткие любовные романы
- Любовно-фантастические романы
- Остросюжетные любовные романы
- Порно
- Прочие любовные романы
- Слеш
- Современные любовные романы
- Эротика
- Фемслеш
Приключения
- Вестерны
- Исторические приключения
- Морские приключения
- Приключения про индейцев
- Природа и животные
- Прочие приключения
- Путешествия и география
Детские
- Детская образовательная литература
- Детская проза
- Детская фантастика
- Детские остросюжетные
- Детские приключения
- Детские стихи
- Детский фольклор
- Книга-игра
- Прочая детская литература
- Сказки
Поэзия и драматургия
- Басни
- Верлибры
- Визуальная поэзия
- В стихах
- Драматургия
- Лирика
- Палиндромы
- Песенная поэзия
- Поэзия
- Экспериментальная поэзия
- Эпическая поэзия
Старинная литература
- Античная литература
- Древневосточная литература
- Древнерусская литература
- Европейская старинная литература
- Мифы. Легенды. Эпос
- Прочая старинная литература
Научно-образовательная
- Альтернативная медицина
- Астрономия и космос
- Биология
- Биофизика
- Биохимия
- Ботаника
- Ветеринария
- Военная история
- Геология и география
- Государство и право
- Детская психология
- Зоология
- Иностранные языки
- История
- Культурология
- Литературоведение
- Математика
- Медицина
- Обществознание
- Органическая химия
- Педагогика
- Политика
- Прочая научная литература
- Психология
- Психотерапия и консультирование
- Религиоведение
- Рефераты
- Секс и семейная психология
- Технические науки
- Учебники
- Физика
- Физическая химия
- Философия
- Химия
- Шпаргалки
- Экология
- Юриспруденция
- Языкознание
- Аналитическая химия
Компьютеры и интернет
- Базы данных
- Интернет
- Компьютерное «железо»
- ОС и сети
- Программирование
- Программное обеспечение
- Прочая компьютерная литература
Справочная литература
Документальная литература
- Биографии и мемуары
- Военная документалистика
- Искусство и Дизайн
- Критика
- Научпоп
- Прочая документальная литература
- Публицистика
Религия и духовность
- Астрология
- Индуизм
- Православие
- Протестантизм
- Прочая религиозная литература
- Религия
- Самосовершенствование
- Христианство
- Эзотерика
- Язычество
- Хиромантия
Юмор
Дом и семья
- Домашние животные
- Здоровье и красота
- Кулинария
- Прочее домоводство
- Развлечения
- Сад и огород
- Сделай сам
- Спорт
- Хобби и ремесла
- Эротика и секс
Деловая литература
- Банковское дело
- Внешнеэкономическая деятельность
- Деловая литература
- Делопроизводство
- Корпоративная культура
- Личные финансы
- Малый бизнес
- Маркетинг, PR, реклама
- О бизнесе популярно
- Поиск работы, карьера
- Торговля
- Управление, подбор персонала
- Ценные бумаги, инвестиции
- Экономика
Жанр не определен
Техника
Прочее
Драматургия
Фольклор
Военное дело
Журнал «Компьютерра» № 8 от 27 февраля 2007 года - Компьютерра - Страница 13
Включение «привычных» средств в язык делает его ближе и привычнее простому пользователю, но не выразительнее. Выразительнее языка, чем Haskell, я не встречал. До недавних пор у Хаскелла была стратегия «avoid success at all costs», а Тони Хоар печально говорил: «I fear that Haskell is doomed to succeed»; это язык, созданный geek’ами от Computer Science для geek’ов. И поэтому я, при всей любви к Хаскеллу, не могу переключиться на него полностью — без понимания теоретических основ CS я буду знать язык более чем посредственно. Сколько бы популяризаторы ни говорили, что для работы с Хаскеллом не нужны глубокие познания в математике, следует понимать, что потенциал языка будет использован далеко не полностью; дизайн языка и его библиотеки пропитан теорией категорий и универсальной алгеброй.
Глеб Алексеев,
компаниЯ Zoral (Киев)
Одним из критериев оценки языка для меня является лаконичность кода. Haskell — невероятно выразительный и элегантный язык. Дистанция между спецификацией задачи и ее реализацией сильно сокращена. Функции высшего порядка, частичное применение, алгебраические типы данных и сравнение с образцом позволяют писать декларации удивительно близко к оригиналу. Помимо этого вы получаете кучу бонусов, делающих жизнь приятной, — ленивость, строгая типизация без обязательной аннотации типов, полиморфизм. Помню восторг, который я испытал, увидев, что программа после первой же компиляции работала без ошибок. Это было невероятно! Позже я слышал похожие признания от других. TANSTAAFL [ «There Ain’t No Such Thing As A Free Lunch», то есть «Ничего не бывает бесплатно». — В.Ш.]. Для того чтобы начать писать на Haskell, приходится много учиться. Чересчур «другой» язык. Много нового. Совершенно иные подходы к обыденным вещам. Это одна из причин его сравнительно низкой распространенности. К сожалению, вряд ли здесь что-нибудь изменится.
Дмитрий Антонюк, Paragon Software Group
Не только академическое сообщество сильно, в пополнении копилки «бесполезных» (смайлик) языков. Smalltalk, «самый объектно-ориентированный язык», создавали люди, среди интересов которых были создание красивых и эффективных пользовательских интерфейсов, доступность компьютеров для детей и джазовая гитара. Алан Кей со товарищи работали в Xerox PARC (как раз в то время и в том месте изобретался весь современный пользовательский интерфейс); язык Smalltalk предназначался для обучения программированию детей; то есть обучению в смысле «сел и начал делать что-то интересное».
Отсюда и основные идеи Smalltalk: «все есть объект»; программа — это не исходный текст, который компилируется, а затем «исполняется», а «живое море объектов, с каждым из которых можно пообщаться». Работа со Smalltalk подразумевает «общение» с этим «живым морем» — средой, в которой можно посмотреть и изменить любой объект; процесс разработки и процесс выполнения суть одно. Этот подход, как можно заметить, существенно отличается от мэйнстримового ООП, с его акцентом на основную сущность — «класс», близкий родственник «модуля» из структурной парадигмы [Алан Кей, «как честный человек», среди предшественников Smalltalk указывает язык Simula, упомянутый в предыдущей статье как прародитель «мэйнстрим-ООП», — но классы и объекты Симулы с классами и объектами Смолтока роднит более терминология, нежели внутренние идеи. Большее влияние на архитектуру языка оказали Lisp, «детский язык» Logo, а в наибольшей степени — программа Sketchpad (см. врезку «Неязыки»)]. В C++ класс — это сущность совершенно иного порядка, нежели объект; в Смоллтоке класс — это тоже объект, и обращаться с ним можно, как с любым другим объектом.
Сегодняшний Smalltalk — исследовательский язык для моделирования сложных систем; и язык «для детей» в виде красочной системы Squeak (как оно и было задумано с самого начала); некоторые интересные идеи современной веб-разработки воплощены в Smalltalk-фреймворке Seaside. Smalltalk породил несколько интересных «детей» — Self (язык с еще более простой объектной системой [Self воплощает концепции «прототипного объектно-ориентированного подхода», в котором есть только объекты, новые объекты порождаются «клонированием» старых; интересно, что изначальные концепции Smalltalk выглядели именно так, а «усложнение» произошло при поиске эффективной реализации. Так что в какой-то степени Self — это «возвращение к корням»]) и Strongtalk (диалект с возможностью статической проверки типов); первый «скорее мертв», второй — недавно был выпущен в open source и потихоньку «оживает».
При обсуждении происхождения языков программирования друг от друга, их взаимного влияния, источников тех или иных идей зачастую остаются за кадром не-языки: отдельные программы, чья внутренняя архитектура или способ задания опций послужил «вдохновляющим мотивом» для авторов знаменитых языков программирования.
В качестве иллюстрации упомянем программу Sketchpad, разработанную Иваном Сазерлендом в 1963 году для диссертации. Sketchpad не только стала первой программой для компьютерного рисования и реализовала первый графический интерфейс пользователя, но и вводила понятие объекта как основной единицы данных (при этом сама программа была написана на макроассемблере компьютера TX-2). Своим рождением концепция «объектов в стиле Smalltalk» в немалой степени обязана именно Sketchpad’у (Алан Кей некоторое время работал вместе с Сазерлендом).
Еще один пример «программы, которая повлияла на язык», — текстовый редактор ed в Unix, привнесший в «широкие массы» (а также в языки AWK и Perl, далее везде) регулярные выражения как гибкий, универсальный (хоть и запутанный) способ обработки строковых данных.
И обратный, несколько неожиданный пример: наиболее широкое распространение функциональный подход к программированию получил не в каком-либо конкретном языке, а в электронных таблицах вроде Excel. Когда мы определяем одну ячейку как SUM, а другую как AVG и выполняем дальнейшие операции над этими значениями — мы занимаемся именно функциональным программированием (придумал не я, а один из микрософтовцев, разрабатывавших Haskell; см. http://research.microsoft.com/~simonpj/papers/excel/index.htm).
Судьба некоторых немэйнстримовых языков, построенных вокруг идей не слишком общих и глобальных, более печальна, нежели у описанных выше. Отработанная идея с благодарностью подхватывается одним (или несколькими) из более общеупотребимых или просто более новых языков и «растворяется» в преемниках, причем исходный язык (а зачастую и его автор) становится «достоянием истории», монстром, о котором мало кто помнит.
Как пример можно привести линейку Snobol-Icon, языков Ральфа Гриспвольда для обработки строк. В 70-х и начале 80-х эти языки были очень популярными среди разработчиков компиляторов и исследователей ИИ, а затем их идеи вобрал в себя юниксовый AWK (при близких по мощности возможностях обработки строк он наследовал также и Algol-линейку традиционных языков, то есть в целом был более привычен и прост для изучения), а через него эти идеи попали в Perl (наравне с идеями из редактора ed, см. врезку «Неязыки»). Называя «патриархов», Ральфа Гриспвольда часто забывают упомянуть (даже Тьюринговской премии у него не было), он умер несколько месяцев назад не то чтобы «всеми забытым», но явно недооцененным героем.
Судьба языка APL за авторством Кеннета Айверсона (того самого, что написал «Notation as a Tool of Thought») сложилась более счастливо — по крайней мере, «Тьюринга» Айверсону дали. Язык, который расширял привычную математическую нотацию для работы с массивами (все его операторы были одно-двухсимвольными комбинациями, APL требовал особой клавиатуры со спецсимволами), иногда считался «издевательством» и «write-only» языком. Тем не менее «нотация» Айверсона показала свою мощь на задачах, для которых предназначалась (сложные операции с массивами данных); годы спустя появились языки-наследники J (1990, создан Айверсоном как более простая и логичная версия APL) и K (1993, создан учеником Айверсона Артуром Уитни как более простая и логичная версия J), имеющие ограниченную, но устойчивую популярность. На K, к слову, написана коммерческая РСУБД kdb, вроде как являющаяся самой быстрой в мире; по слухам, код ее составляет 26 файлов с однобуквенными именами [Отгадать, какие именно буквы использованы, оставляем как домашнее задание внимательному читателю], в каждом из которых — всего одна страница.
- Предыдущая
- 13/30
- Следующая