Фернандо Дж. Корбато «Ограниченные языки»


13

В своей речи на премию Тьюринга 1990 года Фернандо Дж. Корбато перечислил причины, по которым сложные системы неизбежно выходят из строя. В своем заключении он дает несколько предложений по снижению вероятности отказа. Он перечисляет одну идею следующим образом:

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

Что он подразумевает под «ограниченным языком»?

На мгновение я подумал об ограниченном программировании . Тем не менее, программирование ограничений - это ограничение пространства решений программы. Это инструмент, который расширяет возможности программиста. Функция, на которую ссылается Corbató, кажется, является чем-то, что на самом деле ограничивает программиста или, по крайней мере, делает ее более склонной к написанию более ласкового кода.

Моя вторая мысль заключается в том, что он имеет в виду консервативные языки программирования . Корбато получил награду Тьюринга за работы, выполненные в 1960-х и 1970-х годах. Насколько я понимаю, он имел дело с большим количеством перфокарт. Я никогда не видел перфокарты, поэтому я точно не знаю, как ее запрограммировать, но я могу предположить, что программирование перфокарты чрезвычайно либерально. Я подозреваю, что понятия проверки типов, статического анализа и так далее просто не существует. Итак, возможно, Corbató ссылается на идею языков, которые ограничивают разработчика от глупых ошибок? Похоже, что это не так. Проверка безопасности и моделирование данных не имеют ничего общего с краткостью, о которой он, похоже, говорит, когда упоминает, что «не допускает… неуместных идей».


@jweyrich Спасибо за то, что направили меня в Programmers.SE. Однако, когда я перехожу к тегу языков программирования в StackOverflow, я нахожу множество вопросов, которые являются такими же общими, как и мои, например, «Есть ли статически слабый типизированный язык?» где автор также ссылается на общие материалы для чтения
Ксандер Данн

5
@ghttadvances Проверьте даты на вопросы, которые вы упоминаете, я готов поспорить, что большинство из них довольно старые. ТАК 4 года, все меняется, и в целом со временем мы становимся все строже. У вас хороший вопрос к программистам (я там мод), но было бы проще, если бы вы просто отметили это для модерации и попросили перенести его вместо репоста. Миграция избавила бы вас от необходимости перепоста и принесла бы ответ программистам вместе с вопросом. Не беспокойся об этом сейчас, я позабочусь об этом.
Яннис

3
Например, если (примечание: если ) идея malloc «неактуальна» для конкретного приложения по какой-то причине, то выбор Java («ограниченный отсутствием malloc) над C (malloc есть) ограничил бы» область возможных ошибок "это может быть связано с malloc
gnat

@YannisRizos Большое спасибо за миграцию. Я не знал, что эта функция существует. Возможно, более опытные пользователи StackOverflow могли бы предложить этот путь, а не просто закрыть его.
Ксандер Данн

3
« Кодирование на перфокартах » было просто еще одним способом ввода программы. В конце 1960-х и начале 1970-х у нас были языки, которые были такими же сложными, как и те, которые мы имеем сегодня. Многие из основных концепций языков программирования уже хорошо известны, и к 1963 году ALGOL 60 уже установил стандарт для инструментов программирования.
Росс Паттерсон,

Ответы:


8

«Язык ограниченного программирования» - это просто тот, который не предоставляет (простых) способов делать вещи, которые не имеют отношения к назначению языков.

Обратите внимание, что это «не имеет значения», а не «глупо», «глупо» или «неправильно».

Ярким примером этого может служить ISO / ANSI SQL (до SQL-92), который не имел возможности в языке запросов выражать многие программные артефакты процедурного типа, такие как рекурсия или циклы. (Впрочем, теперь они есть, и производители все равно добавили для них собственные расширения).


6
Это точно точка зрения Корбато. Он подробно рассказал о статье Datamation 1969 года под названием PL / I как инструмент для системного программирования (с удивительным подзаголовком « пять лет с временным компилятором »!).
Росс Паттерсон

Спасибо, этот ответ очень полезен. Эта идея имеет интересные последствия. Казалось бы, это указывает на то, что программист хотел бы иметь доступ к множеству разных языков с разными возможностями, а не к одному языку, чтобы управлять ими всеми, как многие программисты хотели бы предположить, C, C ++ или Java.
Ксандер Данн

@ RossPatterson Отлично! Спасибо! Я искал уточнения по этой теме от Корбато, но я не нашел много.
Ксандер Данн

1
Хорошая сводная цитата из этой статьи о Datamation: « Наша цель при создании системы ... состояла в том, чтобы исследовать границы и посмотреть, как эффективно собрать систему, которая достигает и удовлетворяет поставленным целям. Мы пытаемся найти ключевые идеи дизайна и передать их другим, независимо от того, с какой системой они знакомы. Следовательно, язык, который выходит за рамки конкретных деталей аппаратного обеспечения, безусловно, желателен ... Другими словами, он заставляет проектировать, не возиться с кодом И это оказался один из его сильных сторон. . "
Росс Паттерсон

2
@oughttadvances « Похоже, это указывает на то, что программист хотел бы иметь доступ к множеству разных языков с разными возможностями, а не к одному языку, чтобы управлять ими всеми » - вот одно из различий между младшим и старшим программистом. Ни у одного плотника нет только одного молотка :-)
Росс Паттерсон


0

Во-первых, вам нужно понять эпоху вычислений, когда была дана его речь (1990). Кроме того, понимайте, что он говорит с академической аудиторией, и MIT - его домашняя база.

В ту эпоху языки для написания языков (метаязыки) были горячей темой. Протокол Art of Meta-Object только что вышел и вдохновляет на создание новых языков. Однако вся эта роскошь имеет свою цену: сложность.

Чтобы уменьшить сложность систем и разрешить проверку этих систем, появились метаязыки, такие как Z, для создания тестируемой спецификации. Я думаю, он относится к таким языкам.


2
Корбато - не просто ученый из Массачусетского технологического института. Он один из пионеров нашего поля. Его работа над CTSS была плодотворной и привела непосредственно к Multics, Unix, CP / 67 и современным системам Linux и z / VM. И это утверждение связано с принципом, который он открыто изложил за 20 лет до «Искусства протокола мета-объекта» и его лекции Тьюринга.
Росс Паттерсон

0

Возможно, он имеет в виду язык, который имеет гораздо меньшее количество понятий для понимания. Проверьте диаграммы здесь , которая показывает графическое представление понятий в Coffescript, Ruby и C ++. Может быть, тюнер означает, что чем меньше у вас понятий в языке, тем меньше шансов выразить нерелевантные идеи.


«... или язык» - это что-то комментирует?
комнат

Отредактировал пост, чтобы не выглядеть как комментарий.
Manoj R
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.