„Ograniczone języki” Fernando J. Corbató


13

W swoim przemówieniu z Turinga w 1990 r. Fernando J. Corbató wymienił powody, dla których złożone systemy nieuchronnie ulegną awarii. W podsumowaniu podaje pewne sugestie dotyczące zmniejszenia prawdopodobieństwa niepowodzenia. Wymienia jeden pomysł w następujący sposób:

[U] seryjne języki do projektowania lub syntezy to potężna metodologia. Nie pozwalając programistom ani projektantom na wyrażanie nieistotnych pomysłów, domena możliwych błędów staje się znacznie bardziej ograniczona.

Co rozumie przez „ograniczony język”?

Przez chwilę zastanawiałem się nad programowaniem ograniczeń . Jednak programowanie z ograniczeniami polega na ograniczeniu przestrzeni rozwiązań programu. Jest to narzędzie, które upoważnia programistę. Funkcja, o której mówi Corbató, wydaje się być czymś, co faktycznie ogranicza programistę lub przynajmniej sprawia, że ​​jest bardziej skłonna do pisania kodu terser.

Moja druga myśl jest taka, że ​​odnosi się do konserwatywnych języków programowania . Corbató otrzymał nagrodę Turinga za prace wykonane w latach 60. i 70. XX wieku. Rozumiem, że miał do czynienia z wieloma kartami ciosów. Nigdy nie widziałem karty dziurkacza, więc z pewnością nie wiem, jak ją zaprogramować, ale mogę się domyślać, że programowanie karty dziurkacza jest niezwykle liberalne. Podejrzewam, że pojęcia sprawdzania typu, analizy statycznej itd. Po prostu nie istniały. Czy więc Corbató może odwołuje się do idei języków, które ograniczają twórcę przed popełnianiem głupich błędów? Wydaje się, że tak nie jest. Sprawdzanie bezpieczeństwa i modelowanie danych nie mają nic wspólnego ze zwięzłością, o czym zdaje się mówić, gdy wspomina o „niedopuszczaniu ... nieistotnych pomysłów”.


@jweyrich Dziękujemy za przesłanie mnie do Programmers.SE. Kiedy jednak przechodzę do znacznika języków programowania na StackOverflow, znajduję mnóstwo pytań, które są tak ogólne jak moje, na przykład „Czy istnieje statycznie słaby język maszynowy?” gdzie autor odwołuje się również do ogólnych materiałów do czytania
Xander Dunn

5
@ thinktadvances Sprawdź daty w pytaniach, o których wspominasz. Założę się, że większość z nich jest dość stara. SO ma 4 lata, rzeczy się zmieniają i generalnie z upływem czasu stajemy się coraz surowsi. Twoje pytanie jest w porządku dla programistów (jestem tam modem), ale byłoby łatwiej, gdybyś oznaczył to jako uwagę moderatora i poprosił o migrację zamiast ponownego publikowania. Migracja zaoszczędziłaby ci kłopotów z ponownym opublikowaniem i przyniosłaby programistom odpowiedź wraz z pytaniem. Nie martw się teraz, zajmę się tym.
yannis

3
Na przykład, jeśli (uwaga: jeśli ) idea malloc jest z jakiegoś powodu „nieistotna” dla konkretnej aplikacji, to wybranie Javy („ograniczone przez brak malloc) ponad C (istnieje malloc) ograniczyłoby„ domenę możliwych błędów ” „można to skojarzyć z malloc
gnat

@YannisRizos Dziękujemy bardzo za migrację. Nie wiedziałem, że ta funkcja istnieje. Być może bardziej doświadczeni użytkownicy StackOverflow mogliby zaproponować tę ścieżkę, a nie tylko ją zamykać.
Xander Dunn

3
Kodowanie na kartach perforowanych ” było po prostu innym sposobem pisania programu. Na przełomie lat sześćdziesiątych i siedemdziesiątych mieliśmy języki, które były tak samo wyrafinowane, jak te, które mamy dzisiaj. Wiele podstawowych koncepcji języków programowania zostało już dobrze ugruntowanych, a ALGOL 60 już ustalił standard narzędzi programistycznych do 1963 r.
Ross Patterson

Odpowiedzi:


8

„Ograniczony język programowania” to po prostu taki, który nie zapewnia (łatwych) sposobów robienia rzeczy, które nie mają znaczenia dla celu językowego.

Zauważ, że to „nieistotne”, a nie „głupie”, „głupie” lub „niepoprawne”.

Dobrym przykładem tego może być ISO / ANSI SQL (przed SQL-92), który w języku zapytań nie miał możliwości wyrażenia wielu artefaktów programowania proceduralnego, takich jak rekurencja lub pętle. (Chociaż ma je teraz, a dostawcy i tak dodali dla nich niestandardowe rozszerzenia).


6
To jest dokładnie punkt Corbató. Zagłębił się w wiele szczegółów w artykule Datamation z 1969 r. O nazwie PL / I As a Tool for Programming System (z niesamowitym podtytułem „ pięć lat z tymczasowym kompilatorem ”!).
Ross Patterson

Dziękuję, ta odpowiedź jest bardzo pomocna. Ten pomysł ma ciekawe implikacje. To wydaje się wskazywać, że programista chciałby mieć dostęp do mnóstwa różnych języków o różnych umiejętnościach, niż mieć jeden język do rządzenia nimi wszystkimi, co wielu programistów chciałoby założyć C, C ++ lub Java.
Xander Dunn

@RossPatterson Excellent! Dziękuję Ci! Szukałem opracowania na ten temat od Corbató, ale nie znalazłem wiele.
Xander Dunn

1
Świetny cytat podsumowujący z tego artykułu z Datamation: „ Naszym celem w tworzeniu systemu ... było zbadanie granicy i zobaczenie, jak skutecznie połączyć system, który osiąga i spełnia wyznaczone cele. Staramy się znaleźć przedstawiać kluczowe pomysły projektowe i przekazywać je innym, bez względu na to, z jakim systemem są zaznajomieni. Dlatego język, który wykracza poza określone szczegóły sprzętu, jest z pewnością pożądany ... Innymi słowy, zmusza do zaprojektowania, nie majstrować przy kodzie. I to okazało się jedną z jego mocnych stron .
Ross Patterson

2
@ thinktadvances „ Wydaje się to wskazywać, że programista chciałby mieć dostęp do wielu różnych języków o różnych umiejętnościach, zamiast mieć jeden język do rządzenia nimi wszystkimi ” - to jedna z różnic między młodszym i starszym programistą. Żaden cieśla nie ma tylko jednego młota :-)
Ross Patterson


0

Po pierwsze, musisz zrozumieć erę informatyki, kiedy wygłoszono jego przemówienie (1990). Pamiętaj też, że rozmawia z naukowcami, a MIT jest jego bazą domową.

W tamtych czasach języki do pisania języków (metajęzyki) były gorącym tematem. Protokół Art of the Meta-Object jest już dostępny i inspiruje projektowanie nowych języków. Cały ten luksus ma jednak swoją cenę: złożoność.

Aby zmniejszyć złożoność systemów i umożliwić sprawdzanie tych systemów, pojawiły się metajęzyki, takie jak Z, aby stworzyć testowalną specyfikację. Domyślam się, że odnosi się do tego rodzaju języków.


2
Corbató to nie tylko dwunastoletni akademicki MIT. Jest jednym z pionierów w naszej dziedzinie. Jego praca nad CTSS była przełomowa, prowadząc bezpośrednio do Multics, Unix, CP / 67 oraz dzisiejszych systemów Linux i z / VM. A wspomniane stwierdzenie związane jest z zasadą, którą otwarcie wyjaśnił 20 lat przed The Art of the Meta-Object Protocol i jego wykładem Turinga.
Ross Patterson

0

Być może oznacza to, że język, który ma znacznie mniej pojęć do zrozumienia. Sprawdź tutaj diagramy , które pokazują graficzne przedstawienie pojęć w Coffescript, Ruby i C ++. Może być Tuner oznacza, że ​​im mniej masz pojęć w języku, tym mniejsze szanse na wyrażenie nieistotnych pomysłów.


„... Lub język” - czy to jest komentarz do czegoś?
komara

Edytowałem post, aby nie wyglądać jak komentarz.
Manoj R
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.