Von Neumann olmayan programlama modelleri için pratik uygulamalar var mı? En yaygın olarak kabul edilen von Neumann olmayan programlama dilleri nelerdir?
Von Neumann olmayan programlama modelleri için pratik uygulamalar var mı? En yaygın olarak kabul edilen von Neumann olmayan programlama dilleri nelerdir?
Yanıtlar:
"Von Neumann mimarisi" dediğimde, "von Neumann darboğazı" ile sınırlı bazı donanımları kastediyorum - yani, tüm verileri dar bir veri yolu aracılığıyla huniden alıyor.
En sık karşılaştığım von Neumann olmayan programlama dilleri VHDL ve Verilog'dur . VHDL ve Verilog'da varsayılan olarak her şey aynı anda olur. Programcı, bir dizi olayı sırayla gerçekleştirmek için ekstra çaba sarf etmelidir. Bu, varsayılan olarak, herhangi bir anda en fazla bir kod satırı yürüten bir "talimat işaretçisi" anlamına gelen diğer birçok programlama dilinden çok farklıdır ve programcı aynı anda birden çok şeyin gerçekleşmesi için ekstra çaba sarf etmek zorundadır saati.
Bazı insanlar bunun daha doğal bir varsayılan olduğunu söyleyebilir. Programlama öğrencileri başlayan bir sürü bir "süre (x> 0) {...}" döngü x sıfıra eşit olur anlık çıkmak için bekliyoruz ve onlar bilgisayar olduğunu öğrenmek şaşırttı gelmez devamlı o durumunu değerlendirmek.
VHDL ve Verilog kodu yazan çoğu insan programlarını FPGA'larda derler ve her zaman tam hızda çalışan küçük aktivite blokları oluşturur. Çoğu zaman bu tür insanlar giriş pinlerinden veri okuyan, bir dizi blok boyunca işleyen, bir blokun çıkış pinleri doğrudan bir sonraki blokun giriş pinlerine bağlanan bir "boru hattı" kurar ve son blok sonucu gönderir çıkış pimleri. Unix ardışık düzenini anımsatıyor , ancak her saat döngüsünde yeni bir veri parçası giriyor ve yeni bir veri parçası çıkıyor.
Giriş pinleri, ara aşamalar ve çıkış pinleri birbirinden bağımsızdır - çeşitli veri parçaları arasında çoğullanmış tek bir veri yolunu tekrar kullanmanız gerekmez.
Ayrıca ilginizi çekebilir: von neumann / turing mimarileri dışında başka bilgisayar mimarileri var mı?
Von Neumann olmayan biri tarafından, Backus'un makalesine göre "Von Neumann Darboğazını" atlayan dilleri kastediyorsunuz "Programlama Von Neumann Stilinden Kurtuluyor mu?" İlgilenenler için burada bir kopya bulabilirsiniz: http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf
Sorunuzun cevabının birkaç nedenden dolayı belirsiz olması gerekir.
İlk olarak, hangi diller makalesindeki kriterleri karşıladı? Bu makalede fonksiyonel programlamayı izleyenler olsa da, şimdi noktasız programlama gibi bir şey ifade ettiği için bir yanlış anlama olarak kabul edilmektedir. Yani orijinal yanlış anlama veya makalenin gerçek niyeti ile mi gidiyorsunuz? Ne anlama geldiğiyle ilgili biraz ayrıntılı bilgi için lütfen aşağıdakilere bakın: http://en.wikipedia.org/wiki/Function-level_programming
İkincisi, yanlış anlama ile devam ederseniz, ne kadar işlevseldir? Saf işlevsel dillere, saf olmayan işlevsel dillere ve işlevsel paradigmaya nispeten dostça dillere sahipsiniz. Popülerlikten bahsettiğiniz ve bu ve fonksiyonel saflık arasında ters bir ilişki olduğu düşünüldüğünde, sadece hangi diller dahil edilmelidir? En popüler saf işlevsel dili (hiç popüler olmayacak) mı yoksa bazı "işlevsellik" ölçütlerini karşılayan daha popüler bir dil mi istiyorsunuz? İkincisi ise, bu kriterler nelerdir?
Bakış açınıza bağlı olarak:
Haskell, bildiğim tamamen saf fonksiyonel dillerin en popüleridir ve içinde yazılmış uygulamalar vardır. Bununla birlikte, fonksiyonel programlama topluluğunda ağır bir ağırlık olsa da, daha büyük programlama topluluğunda popüler değildir. Ayrıca, kullandıktan sonra, gerçek dünya kullanımı için pratik olduğunu hissetmedim ve teorik çalışma için değerli görünüyor. Noktasız bir stile izin verir, böylece Backus'un bazı hedeflerine bununla yaklaşabilirsiniz.
Clojure, Scala ve F # daha az saf, ancak daha pratik ve popüler fonksiyonel dillerdir. F #, noktasız stile de dostça davranır.
Forth, noktasız bir dilin prototipik bir örneği olabilir ve günümüzde oldukça yaygındı ... Faktör, biraz dikkat çeken başka bir noktadan bağımsız dildir, ancak Forth'ın popülaritesinin en parlak zamanıyla eşleştiğinden şüpheliyim .
APL, Backus tarafından bir noktada (belki de makalesinde değil) bir adım olarak belirtildi, ancak hedefleriyle tam olarak uyumlu değildi. Gününde finans sektöründe büyüktü. J gibi torunlarını kontrol ettiğinizden emin olun.
JavaScript işlevsel değildir, ancak kapakların yoğun kullanımı ile kanıtlandığı gibi, daha üst düzey bir programlama stiline karşı oldukça dostudur. Popülerliği göz önüne alındığında, sadece kriterleri karşılayabilir. JavaScript ile yapılan, körili ve birleştirici uygulaması gibi ilginç şeyleri kontrol ettiğinizden emin olun.
Bir dipnot olarak size hedefleri hakkında daha fazla perspektif kazandırmak için ölçütlerini karşılamak üzere tasarladığı iki dili kontrol edebilirsiniz. Hiç AFAIK'te popüler değiller, bu yüzden bu sadece bilgi uğruna olurdu:
Bence Linda ve tuplespace programlaması bu faturaya uyuyor. Eşzamanlılık ile ilişkili / örüntü eşleştirme bellek işlemleri (kavramsal olarak) Von-Neuman darboğazının ortadan kaldırıldığı anlamına gelir.
Bu doğrultuda, saf bir Aktör-model dilleri, komut dizilimi yerine iletişimi de modelliyor. Biçimcilikler ve gerçek programlama dilleri olmasalar da, Pi hesabı, CSP ve Petri Nets gibi hesaplamaları iletişimi ilgili yollarla modellerler.
Bağlantılar için wikipedia'ya bakın (ben yeni bir kullanıcıyım ve spam koruması altındayım), ancak Linda'nın adı ile ilgili bazı shomomoric mizah için http://c2.com/cgi/wiki?LindaEtymology adresini okuyun .