Фернандо Дж. Корбато "Обмежені мови"


13

У своєму виступі з нагороди Тюрінга 1990 року Фернандо Дж. Корбато перелічив причини, через які складні системи неминуче вийдуть з ладу. На закінчення він дає деякі пропозиції щодо зменшення ймовірності невдачі. Він перераховує одну ідею так:

[U] використання обмежених мов для проектування чи синтезу є потужною методологією. Не дозволяючи програмісту або дизайнеру висловлювати невідповідні ідеї, область можливих помилок стає значно більш обмеженою.

Що він розуміє під "обмеженою мовою"?

Якусь мить я розглядав обмеження програмування . Однак програмування обмежень стосується обмеження простору рішення програми. Це інструмент, який дає можливість програмісту. Функція, на яку посилається Корбато, здається, є щось, що фактично обмежує програміста, або, принаймні, робить його більш схильним писати терсерний код.

Моя друга думка полягає в тому, що він має на увазі консервативні мови програмування . Корбато отримав нагороду Тьюрінга за роботу, виконану в 1960-х і 1970-х роках. Наскільки я розумію, він мав справу з великою кількістю перфокарт. Я ніколи не бачив перфокарт, тому я точно не знаю, як програмувати, але я можу здогадатися, що програмування перфокарт надзвичайно ліберальне. Я підозрюю, що поняття перевірки типу, статичного аналізу тощо, просто не існувало. Отож, Corbató, можливо, має на увазі ідею мов, які обмежують розробника робити німі помилки? Здається, це теж не так. Перевірка безпеки та моделювання даних не мають нічого спільного з терміновістю, про що він, здається, говорить, коли згадує про "не дозволяючи ... невідповідних ідей".


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

5
@ хочаtadvances Перевірте дати на згадувані вами питання, я готовий зробити ставку, що більшість з них є досить старими. Так вже 4 роки, все змінюється, і загалом ми стаємо суворішими з часом. Ваше питання добре у програмістів (я мод там), але було б простіше, якби ви тільки позначили це на увагу модерації і попросили перенести його замість репостів. Міграція врятувала б вам проблему з повторним розміщенням, і вона принесла б відповідь Програмістам разом із запитанням. Не хвилюйтесь про це зараз, я подбаю про це.
янніс

3
Наприклад, якщо (зауважте: якщо ) ідея malloc з певної причини "нерелевантна" для конкретного додатка, то вибір Java ("обмежений тим, що не має malloc) над C (malloc є) обмежує" домен можливих помилок ", що може бути пов'язане з malloc
gnat

@YannisRizos Дякую вам за перенесення. Я не знав, що ця функція існує. Можливо, більш досвідчені користувачі StackOverflow могли запропонувати цей шлях, а не просто його закрити.
Ксандер Данн

3
" Кодування на перфокартах " було лише ще одним способом набору програми. Наприкінці 1960-х - початку 1970-х у нас були мови, такі ж складні, як і ті, які ми маємо сьогодні. Багато основних понять мов програмування вже були добре сформовані, і ALGOL 60 вже встановив стандарт для засобів програмування до 1963 року.
Росс Паттерсон

Відповіді:


8

"Мова обмеженого програмування" - це просто така, яка не забезпечує (легких) способів робити речі, які не мають значення для мовного призначення.

Зауважте, що це "неважливо", а не "тупо", "дурно" чи "неправильно".

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


6
Це саме точка Корбато. Він детально описувався в статті 1969 р., Отриманій під назвою PL / I як інструмент системного програмування (з приголомшливим підзаголовком " п'ять років з тимчасовим компілятором "!).
Росс Паттерсон

Дякую, ця відповідь дуже корисна. Ця ідея має цікаві наслідки. Це, мабуть, вказує на те, що програміст хотів би мати доступ до безлічі різноманітних мов з різними здібностями, а не мати одну мову, щоб керувати ними всіма. Це те, що багато програмістів хотіли б вважати C, C ++ або Java.
Ксандер Данн

@RossPatterson Відмінно! Дякую! Я шукав докладної теми з Корбато, але я не знайшов багато.
Ксандер Данн

1
Відмінна цитата із цієї статті "Інформація": " Нашим завданням в роботі системи ... було вивчення кордону і бачити, як ефективно скласти систему, яка досягає та задовольняє поставлені цілі. Ми намагаємось знайти викладайте ключові ідеї дизайну та повідомляйте їх іншим, незалежно від того, з якою системою вони знайомі. Отже, мова, яка надходить до конкретних деталей апаратури, безумовно, бажана ... Іншими словами, вона змушує когось розробляти, не возиться з кодом І це виявився один з його сильних сторін. . "
Росс Паттерсон

2
@ iakotadvances " Це, мабуть, вказує на те, що програміст хотів би мати доступ до безлічі різноманітних мов з різними здібностями, а не мати одну мову, щоб ними керувати всі " - ось одна з відмінностей між молодшим та старшим програмістом. У жодного столяра немає одного молотка :-)
Росс Паттерсон


0

По-перше, вам потрібно зрозуміти епоху обчислень, коли виступили з його промовою (1990). Крім того, зрозумійте, що він виступає перед академічною аудиторією, і MIT - його домашня база.

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

Щоб зменшити складність систем і дозволити перевірку цих систем, мета-мови, такі як Z, вийшли зробити тестові характеристики. Як я здогадуюсь, він стосується таких мов.


2
Корбато - це не просто академічний науково-дослідний університет пізнього двадцятого століття. Він один із піонерів нашої галузі. Його робота над CTSS була насіннєвою, ведучи безпосередньо до Multics, Unix, CP / 67, а також сьогоднішніх систем Linux та z / VM. І заява, про яку йдеться, пов'язана з принципом, який він відкрито виклав за 20 років до "Протоколу мета-об'єкта" та його лекції Тьюрінга.
Росс Паттерсон

0

Можливо, він означає, що мова, яка має достатньо меншу кількість понять для розуміння. Перевірте наведені тут діаграми, на яких зображено графічні зображення представлень понять Coffescript, Ruby та C ++. Можливо, Тюнер означає, що чим менше мов у вас є, тим менші шанси висловити невідповідні ідеї.


"... Або мова" - це коментар до чогось?
гнат

Редагував публікацію, щоб не схожий на коментар.
Маной Р
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.