Apakah ada aplikasi praktis untuk model pemrograman non-von Neumann? Apa bahasa pemrograman non-von Neumann yang paling banyak diadopsi?
universal-computation
logic-programming
Len Yabloko
sumber
sumber
Jawaban:
Ketika saya mengatakan "arsitektur von Neumann", maksud saya beberapa perangkat keras yang dibatasi oleh "hambatan von Neumann" - yaitu, semua data disalurkan melalui beberapa bus data sempit.
Bahasa pemrograman non-von Neumann yang paling sering saya temui adalah VHDL dan Verilog . Dalam VHDL dan Verilog, secara default, semuanya terjadi pada saat yang sama. Programmer harus melakukan upaya ekstra untuk membuat serangkaian acara terjadi secara berurutan. Itu sangat berbeda dari kebanyakan bahasa pemrograman lain yang menyiratkan "instruksi pointer" yang, secara default, mengeksekusi paling banyak satu baris kode pada satu saat, dan programmer harus melakukan upaya ekstra untuk mendapatkan banyak hal terjadi pada saat yang sama waktu.
Beberapa orang akan mengatakan itu adalah standar yang lebih alami. Banyak siswa pemrograman pemula mengharapkan loop "while (x> 0) {...}" untuk keluar dari instan sehingga x menjadi sama dengan nol, dan mereka terkejut mengetahui bahwa komputer tidak terus - menerus mengevaluasi kondisi itu.
Kebanyakan orang yang menulis kode VHDL dan Verilog mengkompilasi program mereka ke FPGA, menciptakan blok aktivitas kecil yang semuanya berjalan dengan kecepatan penuh setiap saat. Seringkali orang semacam itu membuat "pipa" yang membaca data dari pin input, memprosesnya melalui serangkaian blok, pin output dari satu blok langsung ditransfer ke pin input dari blok berikutnya, dan blok terakhir mengirimkan hasilnya pin output. Ini mengingatkan pada pipeline Unix , kecuali bahwa sepotong data baru masuk dan sepotong data baru keluar pada setiap siklus clock.
Pin input, tahap perantara, dan pin output semuanya independen satu sama lain - Anda tidak perlu menggunakan kembali bus data tunggal multiplexing di antara berbagai bagian data.
Anda mungkin juga tertarik pada: Apakah ada arsitektur komputer lain selain dari arsitektur vuring neumann / turing?
sumber
Saya berasumsi oleh non-Von Neumann, maksud Anda bahasa yang melewati "Von Neumann Bottleneck" sesuai karya Backus '"Bisakah Pemrograman Dibebaskan dari Gaya Von Neumann?". Bagi yang berminat, Anda dapat menemukan salinannya di sini: http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf
Jawaban atas pertanyaan Anda harus ambigu karena beberapa alasan.
Pertama, bahasa apa yang memenuhi kriteria dalam makalahnya? Meskipun ada orang-orang yang melacak pemrograman fungsional untuk makalah ini, itu sekarang dianggap sebagai kesalahpahaman karena maksudnya sesuatu seperti pemrograman point-free. Jadi apakah Anda pergi dengan kesalahpahaman asli, atau maksud sebenarnya dari makalah ini? Untuk sedikit elaborasi tentang apa yang dia maksud, silakan lihat yang berikut ini: http://en.wikipedia.org/wiki/Function-level_programming
Kedua, jika Anda pergi dengan kesalahpahaman, seberapa fungsional fungsional? Anda memiliki bahasa fungsional murni, bahasa fungsional tidak murni, dan bahasa yang relatif ramah terhadap paradigma fungsional. Mengingat Anda menyebutkan popularitas dan ada hubungan terbalik antara itu dan kemurnian fungsional, bahasa apa yang harus dimasukkan? Apakah Anda ingin bahasa fungsional murni yang paling populer (yang tidak akan populer sama sekali), atau yang lebih populer yang memenuhi beberapa kriteria minimum "fungsional-ness"? Jika yang terakhir, apa kriteria itu?
Jadi tergantung pada sudut pandang Anda:
Haskell adalah yang paling populer dari bahasa fungsional yang sepenuhnya murni yang saya tahu dan ada aplikasi yang ditulis di dalamnya. Namun, walaupun sangat berat di komunitas pemrograman fungsional, itu tidak populer di komunitas pemrograman yang lebih besar. Juga, setelah menggunakannya, saya tidak merasa itu praktis untuk digunakan di dunia nyata, dan tampaknya dihargai untuk karya teoretis. Itu memungkinkan gaya point-free, sehingga Anda dapat mendekati beberapa tujuan Backus dengan itu.
Clojure, Scala dan F # adalah bahasa fungsional yang kurang murni, tetapi lebih praktis dan populer. F # juga ramah dengan gaya point-free.
Forth mungkin merupakan contoh prototipikal dari bahasa point-free, dan cukup luas pada zamannya, meskipun sekarang ... Factor adalah bahasa point-free lain yang telah mendapatkan perhatian, tetapi saya ragu itu cocok dengan popularitas Forth di masa jayanya. .
APL disebutkan oleh Backus pada satu titik (mungkin tidak dalam makalahnya) sebagai langkah maju, tetapi tidak sepenuhnya kompatibel dengan tujuannya. Pada zamannya itu besar di sektor keuangan. Pastikan untuk memeriksa keturunannya, seperti J.
JavaScript tidak fungsional, tetapi cukup ramah terhadap gaya pemrograman tingkat tinggi, sebagaimana dibuktikan dengan penggunaan penutup yang banyak. Mengingat popularitasnya, itu mungkin hanya memenuhi kriteria. Pastikan untuk memeriksa beberapa hal menarik yang dilakukan dengan JavaScript, seperti penerapan kari dan kombinator.
Sebagai catatan kaki, untuk memberi Anda lebih banyak perspektif tentang tujuannya, Anda dapat memeriksa dua bahasa yang dirancangnya untuk memenuhi kriteria. Mereka sama sekali tidak populer AFAIK, jadi ini murni untuk pengetahuan:
http://en.wikipedia.org/wiki/FP_(programming_language )
http://en.wikipedia.org/wiki/FL_(programming_language )
sumber
Saya pikir Linda dan pemrograman tuplespace bisa sesuai dengan tagihan. Operasi memori asosiatif / pencocokan pola dengan konkurensi berarti bahwa (secara konseptual) bottleneck Von-Neuman dihilangkan.
Pergi ke arah itu, bahasa model Aktor murni juga memodelkan komunikasi daripada urutan instruksi. Dan meskipun mereka formalisme dan bukan bahasa pemrograman yang sebenarnya, proses kalkulus seperti Pi kalkulus, CSP dan Petri Nets model komunikasi dengan cara yang terkait.
Lihat wikipedia untuk tautan (Saya adalah pengguna baru dan di bawah perlindungan spam), tetapi untuk beberapa humor cerdas mengenai nama Linda, baca http://c2.com/cgi/wiki?LindaEtymology .
sumber