“Bahasa-bahasa Terbatas” Fernando J. Corbató


13

Untuk pidato penghargaan Turing 1990- nya , Fernando J. Corbató menyebutkan alasan mengapa sistem yang rumit pasti akan gagal. Dalam kesimpulannya, ia memberikan beberapa saran untuk mengurangi kemungkinan kegagalan. Dia mencantumkan satu ide sebagai berikut:

[U] se bahasa yang dibatasi untuk desain atau sintesis adalah metodologi yang kuat. Dengan tidak mengizinkan seorang programmer atau desainer untuk mengekspresikan ide-ide yang tidak relevan, domain kesalahan yang mungkin menjadi jauh lebih terbatas.

Apa yang dia maksud dengan "bahasa yang terbatas?"

Sejenak saya mempertimbangkan pemrograman kendala . Namun, kendala pemrograman adalah tentang membatasi ruang solusi program. Ini adalah alat yang memberdayakan seorang programmer. Fitur yang Corbato maksudkan sepertinya adalah sesuatu yang benar-benar membatasi programmer, atau setidaknya membuatnya lebih cenderung untuk menulis kode terser.

Pikiran kedua saya adalah bahwa ia mengacu pada bahasa pemrograman konservatif . Corbató menerima penghargaan Turing untuk pekerjaan yang dilakukan pada 1960-an dan 1970-an. Pemahaman saya bahwa dia berurusan dengan banyak kartu punch. Saya belum pernah melihat kartu punch, jadi saya tentu tidak tahu cara memprogramnya, tetapi saya mungkin menebak bahwa pemrograman kartu punch sangat liberal. Saya curiga pengertian pengecekan tipe, analisis statis, dan sebagainya sama sekali tidak ada. Jadi, apakah Corbato mungkin merujuk pada ide bahasa yang membatasi pengembang untuk membuat kesalahan bodoh? Ini tampaknya tidak menjadi masalah juga. Pemeriksaan keamanan dan pemodelan data tidak ada hubungannya dengan kesempitan, yang sepertinya dia bicarakan ketika dia menyebutkan "tidak mengizinkan ... ide yang tidak relevan."


@jweyrich Terima kasih telah meneruskan saya ke Programmers.SE. Namun, ketika saya pergi ke tag bahasa pemrograman di StackOverflow, saya menemukan banyak pertanyaan yang sama umum dengan milik saya, seperti "Apakah ada bahasa yang diketik secara statis lemah?" di mana penulis juga membuat referensi ke bahan bacaan umum
Xander Dunn

5
@thoughtadvances Periksa tanggal pada pertanyaan yang Anda sebutkan, saya berani bertaruh sebagian besar dari mereka sudah cukup tua. SO berumur 4 tahun, banyak hal berubah, dan secara umum kami semakin ketat seiring berjalannya waktu. Pertanyaan Anda baik-baik saja pada Programmer (saya mod di sana), tetapi akan lebih mudah jika Anda baru saja menandai ini untuk perhatian moderat dan memintanya untuk dimigrasikan alih-alih pengerjaan ulang. Migrasi akan menyelamatkan Anda dari masalah pengeposan ulang dan itu akan membawa jawaban kepada Programer bersama dengan pertanyaannya. Jangan khawatir tentang itu sekarang, aku akan membereskannya.
yannis

3
Sebagai contoh, jika (perhatikan: jika ) gagasan malloc adalah "tidak relevan" untuk aplikasi tertentu karena beberapa alasan, maka memilih Java ("dibatasi oleh tidak ada malloc) di atas C (malloc ada di sana) akan membatasi" domain kemungkinan kesalahan "Itu bisa dikaitkan dengan malloc
nyamuk

@YannisRizos Terima kasih banyak telah memigrasikannya. Saya tidak tahu bahwa fungsi ini ada. Mungkin pengguna yang lebih berpengalaman di StackOverflow bisa menyarankan jalur ini daripada hanya menutupnya.
Xander Dunn

3
" Pengodean pada kartu berlubang " hanyalah cara lain untuk mengetik program. Pada akhir 1960-an dan awal 1970-an, kami memiliki bahasa yang sama canggihnya dengan yang kami miliki saat ini. Banyak konsep inti bahasa pemrograman sudah mapan, dan ALGOL 60 telah menetapkan standar untuk perangkat pemrograman pada tahun 1963.
Ross Patterson

Jawaban:


8

"Bahasa Pemrograman Terbatas" hanyalah bahasa yang tidak menyediakan (mudah) cara untuk melakukan hal-hal yang tidak relevan dengan tujuan bahasa.

Perhatikan itu "tidak relevan", bukan "bodoh", "bodoh" atau "salah".

Sebuah contoh yang adil dari ini mungkin ISO / ANSI SQL (sebelum SQL-92), yang tidak memiliki cara dalam bahasa query untuk mengekspresikan banyak artefak pemrograman tipe prosedural seperti rekursi atau loop. (Meskipun, sekarang sudah memilikinya, dan vendor menambahkan ekstensi khusus untuk mereka sebelumnya).


6
Inilah tepatnya poin Corbato. Dia masuk ke banyak detail dalam artikel Datamation 1969 yang disebut PL / I Sebagai Alat untuk Pemrograman Sistem (dengan subtitle yang mengagumkan " lima tahun dengan kompiler sementara "!).
Ross Patterson

Terima kasih, jawaban ini sangat membantu. Gagasan ini memiliki implikasi yang menarik. Ini tampaknya menunjukkan bahwa seorang programmer ingin memiliki akses ke sejumlah besar bahasa yang bervariasi dengan kemampuan yang berbeda daripada memiliki satu bahasa untuk mengatur semuanya, yang oleh banyak programmer ingin mengira C, C ++, atau Java mungkin.
Xander Dunn

@RossPatterson Luar Biasa! Terima kasih! Saya mencari penjelasan tentang topik dari Corbató, tetapi saya tidak menemukan banyak.
Xander Dunn

1
Kutipan ringkasan yang hebat dari artikel Datamation itu: " Objek kami dalam melakukan sistem ... adalah menjelajahi perbatasan dan melihat bagaimana menyusun secara efektif sistem yang mencapai dan memuaskan tujuan yang ditetapkan. Kami berusaha menemukan mengeluarkan ide-ide desain utama dan mengkomunikasikannya kepada orang lain, terlepas dari sistem apa yang mereka kenal. Oleh karena itu, bahasa yang berada di atas perincian spesifik perangkat keras tentu diinginkan, ... Dengan kata lain, itu memaksa seseorang untuk mendesain, tidak mengutak-atik kode. Dan ini ternyata menjadi salah satu poin kuatnya . "
Ross Patterson

2
@thoughtadvances " Ini tampaknya menunjukkan bahwa seorang programmer ingin memiliki akses ke sejumlah besar bahasa yang beragam dengan kemampuan yang berbeda daripada memiliki satu bahasa untuk menguasai semuanya " - itulah salah satu perbedaan antara programmer junior dan senior. Tidak ada tukang kayu yang hanya memiliki satu palu :-)
Ross Patterson

3

Ini terdengar sangat mirip dengan gagasan tentang bahasa khusus domain bagi saya. Seperti yang ditunjukkan oleh @RBarryYoung, satu contoh untuk ini adalah SQL (yang lain adalah HTML, CSS, dll.).


0

Pertama, Anda perlu memahami era komputasi ketika pidatonya diberikan (1990). Juga, sadari dia berbicara kepada audiens akademik dan MIT adalah pangkalannya.

Di era itu, bahasa untuk menulis bahasa (meta-bahasa) adalah topik hangat. Protokol Seni Objek Meta baru saja keluar dan menginspirasi desain bahasa baru. Namun, semua kemewahan ini datang dengan harga: kompleksitas.

Untuk membantu mengurangi kompleksitas sistem dan memungkinkan memeriksa sistem ini, meta-bahasa seperti Z keluar untuk membuat spesifikasi yang dapat diuji. Dugaan saya dia mengacu pada jenis bahasa ini.


2
Corbató bukan hanya akademisi MIT yang berusia dua belas tahun. Dia adalah salah satu pelopor bidang kita. Karyanya pada CTSS adalah mani, mengarah langsung ke Multics, Unix, CP / 67, dan sistem Linux dan z / VM saat ini. Dan pernyataan tersebut terkait dengan prinsip yang secara terbuka diuraikannya 20 tahun sebelum Seni Protokol Meta-Obyek dan kuliahnya di Turing.
Ross Patterson

0

Mungkin maksudnya adalah bahasa yang memiliki jumlah konsep yang cukup rendah untuk dipahami. Periksa diagram di sini yang menunjukkan representasi grafis dari konsep di Coffescript, Ruby dan C ++. Mungkin Tuner berarti semakin sedikit konsep yang Anda miliki dalam suatu bahasa, semakin sedikit peluang untuk mengekspresikan ide-ide yang tidak relevan.


"... Atau bahasa" - apakah ini komentar tentang sesuatu?
nyamuk

Mengedit pos, agar tidak terlihat seperti komentar.
Manoj R
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.