Singkatnya :
Apa yang mencirikan bahasa pemrograman imperatif yang dekat dengan mesin Turing dan komputer biasa seperti PC, (lebih dekat dengan mesin akses acak (RAM) daripada mesin Turing) adalah konsep memori eksplisit yang dapat dimodifikasi untuk disimpan (hasil antara ). Ini adalah tampilan automata dari komputasi, dengan konsep keadaan (terdiri dari kontrol keadaan hingga dan konten memori) yang dapat berubah saat proses komputasi berlangsung.
Sebagian besar model lain lebih abstrak. Meskipun mereka dapat mengekspresikan perhitungan sebagai suksesi langkah-langkah transformasi struktur asli, transformasi ini diterapkan dalam semacam semesta intemporal makna matematika. Ini dapat mempertahankan properti, seperti transparansi referensial, yang dapat membuat analisis matematika lebih sederhana. Tetapi lebih jauh dari model fisik alami yang mengandalkan pada ingatan akan hal itu.
Jadi tidak ada mesin fungsional alami, kecuali dalam arti yang lebih besar seperti yang dijelaskan di bawah ini, karena perangkat lunak tidak benar-benar dapat dipisahkan dari perangkat keras.
Referensi Turing sebagai tolok ukur kemampuan komputasi mungkin berasal dari kenyataan bahwa modelnya, mesin Turing paling dekat dengan batasan realisasi fisik ini, yang menjadikannya model komputasi yang lebih intuitif.
Pertimbangan lebih lanjut :
Ada banyak model komputasi, yang dirancang untuk menangkap dengan cara yang paling umum konsep komputasi. Mereka termasuk mesin Turing, sebenarnya dalam banyak rasa yang berbeda, kalkulus lambda (rasa juga), sistem penulisan ulang semi-Thue, fungsi rekursif parsial, logika kombinasional.
Mereka semua menangkap beberapa aspek dari berbagai teknik yang digunakan oleh matematikawan untuk mengekspresikan atau melakukan perhitungan. Dan sebagian besar telah digunakan sampai batas tertentu sebagai dasar dari beberapa desain bahasa pemrograman (misalnya Snobol untuk sistem penulisan ulang, APL untuk kombinator, Lisp / Skema untuk kalkulus lambda) dan sering dapat dikombinasikan dalam berbagai cara dalam bahasa pemrograman modern.
Salah satu hasil utama adalah bahwa semua model perhitungan ini terbukti setara, yang mengarah pada tesis Church-Turing bahwa tidak ada model komputasi yang dapat direalisasikan secara fisik yang dapat melakukan lebih dari model-model ini. Sebuah model perhitungan dikatakan Turing lengkap jika dapat dibuktikan setara dengan salah satu model ini, karenanya setara dengan semuanya.
Namanya bisa saja berbeda. Pilihan mesin Turing (TM) sebagai rujukan mungkin karena fakta bahwa itu mungkin yang paling sederhana dari model-model ini, meniru dengan cermat (walaupun secara sederhana) cara manusia menghitung dan cukup mudah diimplementasikan (dalam bentuk terbatas yang terbatas). ) sebagai perangkat fisik, sedemikian rupa sehingga mesin Turing telah dibangun dengan set Lego . Ide dasarnya tidak memerlukan kecanggihan matematika. Mungkin kesederhanaan dan realisasi model yang memberikannya posisi referensi ini.
Pada saat Alan Turing menciptakan perangkat komputasinya, proposal lain berada di atas meja untuk berfungsi sebagai definisi formal kemampuan komputasi, masalah penting bagi dasar matematika (lihat
Entscheidungsproblem ). Proposal Turing dianggap oleh para ahli saat itu sebagai karya yang paling meyakinkan mencakup apa yang harus dihitung (lihat Computability and Recursion , RI Soare, 1996, lihat bagian 3.2). Berbagai proposal terbukti setara, tetapi Turing lebih meyakinkan. [dari komentar oleh Yuval Filmus]
Perlu dicatat bahwa, dari sudut pandang perangkat keras, komputer kita bukan mesin Turing, melainkan apa yang disebut Random Access Machines (RAM) , yang juga Turing lengkap.
Bahasa yang murni imperatif (apa pun artinya) adalah formalisme yang digunakan untuk model paling dasar, seperti mesin Turing, atau bahasa rakitan (melompati kode binernya) komputer. Keduanya terkenal tidak dapat dibaca, dan sangat sulit untuk menulis program yang penting. Sebenarnya, bahkan bahasa rakitan memiliki beberapa fitur tingkat yang lebih tinggi untuk memudahkan pemrograman sedikit, dibandingkan dengan penggunaan instruksi mesin secara langsung. Model imperatif dasar tertutup bagi dunia fisik, tetapi tidak terlalu berguna.
Hal ini menyebabkan pengembangan model komputasi tingkat tinggi secara cepat, yang mulai mencampurkan berbagai teknik komputasi, seperti subprogram dan panggilan fungsi, penamaan lokasi memori, pelingkupan nama, kuantifikasi dan variabel dummy, sudah digunakan dalam beberapa bentuk dalam matematika dan logika, dan bahkan konsep yang sangat abstrak seperti refleksi ( Lisp 1958).
Klasifikasi bahasa pemrograman ke dalam paradigma pemrograman seperti imperatif, fungsional, logika, berorientasi objek didasarkan pada keunggulan beberapa teknik ini dalam desain bahasa, dan ada tidaknya beberapa fitur komputasi yang memberlakukan beberapa properti untuk program. atau fragmen program yang ditulis dalam bahasa.
Beberapa model nyaman untuk mesin fisik. Beberapa yang lain lebih nyaman untuk deskripsi algoritma tingkat tinggi, tergantung pada jenis algoritma yang akan dijelaskan. Beberapa ahli teori bahkan menggunakan spesifikasi algoritma non deterministik, dan bahkan itu dapat diterjemahkan dalam istilah pemrograman yang lebih konvensional. Tetapi tidak ada masalah ketidaksesuaian, karena kami mengembangkan teknologi kompiler / juru bahasa yang canggih yang dapat menerjemahkan masing-masing model ke model lain sesuai kebutuhan (yang juga merupakan dasar dari tesis Church-Turing).
Sekarang, Anda tidak boleh melihat komputer Anda sebagai perangkat keras mentah. Itu memang mengandung sirkuit boolean yang melakukan pemrosesan yang sangat dasar. Tetapi sebagian besar digerakkan oleh program mikro di dalam komputer yang tidak pernah Anda ketahui. Kemudian Anda memiliki sistem operasi yang membuat mesin Anda tampak berbeda dari apa yang dilakukan perangkat keras, Selain itu Anda mungkin memiliki mesin virtual yang mengeksekusi kode-byte, dan kemudian bahasa tingkat tinggi seperti Pyva dan Jathon, atau Haskell , atau OCaml, yang dapat dikompilasi menjadi kode byte.
Di setiap tingkat Anda melihat model perhitungan yang berbeda. Sangat sulit untuk memisahkan tingkat perangkat keras dari tingkat perangkat lunak sehingga untuk menetapkan model komputasi tertentu ke mesin. Dan karena mereka semua dapat diterjemahkan, gagasan model perhitungan perangkat keras utama adalah ilusi.
Mesin kalkulus lambda memang ada: ini adalah komputer yang dapat mengurangi ekspresi kalkulus lambda. Iklan yang mudah dilakukan.
Tentang arsitektur mesin khusus
Sebenarnya, melengkapi jawaban Peter Taylor , dan menindaklanjuti masalah hardware / software intertwinning, mesin-mesin khusus telah diproduksi untuk lebih disesuaikan dengan paradigma tertentu, dan perangkat lunak dasar mereka ditulis dalam bahasa pemrograman berdasarkan paradigma itu.
Ini termasuk
Pada dasarnya, ini juga merupakan struktur perangkat keras yang penting, tetapi dimitigasi dengan fitur harware khusus atau interpreter yang diprogram untuk lebih beradaptasi dengan paradigma yang dimaksud.
Sebenarnya, perangkat keras yang dikhususkan untuk paradigma tertentu tampaknya tidak pernah berhasil dalam jangka panjang. Alasannya adalah bahwa teknologi kompilasi untuk mengimplementasikan paradigma pada perangkat keras vanilla menjadi lebih dan lebih efektif, sehingga perangkat keras khusus tidak begitu dibutuhkan. Selain itu, kinerja harware meningkat dengan cepat, tetapi biaya perbaikan (termasuk evolusi perangkat lunak dasar) lebih mudah diamortisasi pada perangkat keras vanila daripada perangkat keras khusus. Perangkat keras khusus tidak bisa bersaing dalam jangka panjang.
Namun demikian, dan meskipun saya tidak memiliki data yang pasti mengenai hal ini, saya akan curiga bahwa usaha ini meninggalkan beberapa ide yang mempengaruhi evolusi mesin, ingatan, dan arsitektur perangkat instruksi.
(a -> a) -> a
.