14 Языки программирования: С или не С?

14

Языки программирования: С или не С?

Границы моего языка — границы моего мира.

Логико-философский трактат

(Tractatus Logico-Philosophicus 5.6, 1918)

—Людвиг Виттгенштейн (Ludwig Wittgenstein).

14.1. Многообразие языков в Unix

В Unix поддерживается более широкий по сравнению с любой другой операционной системой диапазон языков прикладного программирования. Фактически Unix способна поддерживать больше различных языков, чем все вместе взятые операционные системы в истории вычислительной техники[117].

Существует по крайней мере две весомые причины столь значительного разнообразия. Во-первых, широкое использование операционной системы Unix как исследовательской и обучающей платформы. Второй причиной (гораздо более значимой для работающих программистов) является тот факт, что подбор подходящего языка (или языков) для конструкции приложения может привести к огромным различиям в продуктивности программиста. Следовательно, Unix-традиции поддерживают проектирование узкоспециальных языков (как было сказано в главах 7 и 9) и языков, которые в настоящее время обычно называются языками сценариев, разработанных специально для связывания между собой других приложений и инструментальных средств.

Понятие "язык сценариев" (scripting language), вероятно, происходит от термина "сценарий" (script), который применялся к заранее подготовленному вводу для программы, обычно работающей в интерактивном режиме, в частности, sh или ed — гораздо более уместный термин, чем "runcom", унаследованный Unix от предка, операционной системы CTSS. Слово "script" появляется в руководстве для системы V7 (1979). Я не помню, кто именно придумал это название.

Дуг Макилрой.

В действительности термин "язык сценариев" несколько неудобен. Многие из основных языков, обычно описываемых как языки сценариев (Perl, Tcl, Python и другие), уже переросли первоначальные задачи создания сценариев и в настоящее время являются самостоятельными универсальными языками программирования значительной мощности. Данный термин склонен срывать сильное сходство в стиле с другими языками, которые обычно не причисляются к этой группе, особенно с Lisp и Java. Единственным аргументом, оправдывающим нынешнее использование данного понятия, является тот факт, что лучшего термина еще никто не придумал.

Частично причиной того, что данные языки можно объединить в группу "языков сценариев" является то, что все они имеют почти совершенно идентичный онтогенез. Наличие динамической среды для интерпретации также сравнительно облегчает автоматизацию управления динамической памятью. Автоматизация управления динамической памятью требует использования ссылок (трудных для понимания адресов памяти, которые разработчик не в состоянии вычислять) вместо распространения копий значений или явных указателей. Использование ссылок делает динамический полиморфизм и ОО-методики следующим простым этапом.

Для того чтобы эффективно применять философию Unix, инструментарий программиста должен включать в себя не только С. Программисту потребуется изучить использование некоторых других языков в Unix (особенно языков сценариев), а также способы удобного сочетания нескольких языков, каждый из которых играет особую роль в крупных программных системах.

В данной главе рассматривается язык С и его наиболее важные альтернативы, обсуждаются их сильные и слабые стороны, а также виды задач, которым они наилучшим образом соответствуют. Ниже описываются языки С, С++, shell, Perl, Tcl, Python, Java и Emacs Lisp. Каждый обзорный раздел включает в себя учебные примеры приложений, написанных с использованием данных языков, а также ссылки на другие примеры и учебные материалы. Высококачественные реализации всех данных языков доступны в Internet в виде открытого исходного кода.

Внимание: выбор языка прикладного программирования является одним из основных идеологических вопросов в сообществе Internet/Unix. Люди сильно привязываются к данным средствам и иногда защищают их вопреки здравому смыслу. Если глава достигнет своей цели, то вполне может оскорбить фанатичных приверженцев всех языков, однако все остальные разработчики почерпнут из нее немало полезного.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Другие языки программирования с поддержкой .NET

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Другие языки программирования с поддержкой .NET Вы должны понимать, что C# является не единственным языком, ориентированным на платформу .NET. Когда платформа .NET была впервые представлена общественности на Профессиональной конференции разработчиков Microsoft в 2000 году, ряд


ТЕМА НОМЕРА: История, порезанная тонкими ломтиками: Языки программирования. Вдоль и поперек

Из книги Журнал «Компьютерра» N8 от 27 фераля 2007 года автора Журнал «Компьютерра»

ТЕМА НОМЕРА: История, порезанная тонкими ломтиками: Языки программирования. Вдоль и поперек Автор: Виктор ШепелевВсю историю компьютерной индустрии и компьютерных наук с определенной точки зрения можно представить как историю развития языков программирования.


Приложение: Объектно-ориентированные языки программирования

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

Приложение: Объектно-ориентированные языки программирования Использование объектно-ориентированной методологии не ограничено каким-либо одним языком программирования - она применима к широкому спектру объектных и объектно-ориентированных языков. Наряду с анализом и


А.8. Другие объектно-ориентированные языки программирования

Из книги Основы информатики: Учебник для вузов автора Малинина Лариса Александровна

А.8. Другие объектно-ориентированные языки программирования На рис. А-2 вы найдете названия многих важных объектных и объектно-ориентированных языков, в библиографии есть ссылки на информацию о большинстве из них. <рисунок пропущен>  


8.2. Языки программирования Виды программирований

Из книги FB2-Librarian (Библиотекарь) Руководство автора Пустовит Дмитрий

8.2. Языки программирования Виды программирований Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – оснащенный набор вычислительных формул


3 Поддерживаемые языки

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

3 Поддерживаемые языки Программа поставляется с поддержкой трех языковАнглийскогоРусскогоУкраинскогоПри наличии большого желания вы можете локализовать программу под любой язык, для этого в каталоге / Language прграммы выберите файл Русский.lng или Ukrainian.lng, что удобнее


14 Языки программирования: С или не С?

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

14 Языки программирования: С или не С? Границы моего языка — границы моего мира. Логико-философский трактат (Tractatus Logico-Philosophicus 5.6, 1918) —Людвиг Виттгенштейн (Ludwig Wittgenstein). 14.1. Многообразие языков в Unix В Unix поддерживается более широкий по сравнению с любой другой операционной


3.8. Языки раскладки клавиатуры

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

3.8. Языки раскладки клавиатуры При установке системы по умолчанию выбирается русский язык и русская раскладка клавиатуры. Переключение языка ввода осуществляется комбинацией клавиш <Alt>+<Shift>. Иногда возникает потребность добавить дополнительный язык ввода (кроме


Среды и языки программирования для Pocket PC

Из книги 19 смертных грехов, угрожающих безопасности программ автора Ховард Майкл

Среды и языки программирования для Pocket PC Basic4PPCЭто как раз тот самый случай, когда трудно найти сайт производителя хорошей программы. Автору не удалось найти сайт фирмы Anywhere Software. Но саму программу можно загрузить с сайта www.pocketgear.com.Программа Basic4PPC совмещает возможности


Подверженные греху языки

Из книги Linux программирование в примерах автора Роббинс Арнольд

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


Подверженные греху языки

Из книги автора

Подверженные греху языки Еще одна универсальная беда. Допустить ошибки при доступе к данным и встроить секретные данные в код можно на любом


Подверженные греху языки

Из книги автора

Подверженные греху языки Раскрытие информации не связано с каким–то конкретным языком, хотя если говорить о случайных утечках, то многие современные языки высокого уровня усугубляют проблему, так как выдают излишне подробные сообщения об ошибках, которые могут


Подверженные греху языки

Из книги автора

Подверженные греху языки Любой язык, позволяющий обращаться к файлам, подвержен этому греху. А это все без исключения современные языки


Подверженные греху языки

Из книги автора

Подверженные греху языки В отличие от многих других грехов степень доверия к службе разрешения имен совершенно не зависит от языка программирования. Проблема в изъянах самой инфраструктуры, которой мы пользуемся, и если вы не понимаете, в чем эта проблема состоит, то и