Erlang gerçekten bir aktör model dili mi?


18

Bu makaleyi okuyordum:

http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/

Ve bundan bahsediyor:

... aktör modelinde bir tam sayı bile aktör olarak temsil edilir ...

Wikipedia şunları doğrular:

Aktör modeli, her şeyin bir aktör olduğu felsefesini benimser.

Erlang'ın birçok veri türü vardır ve bu türler anlatabildiğim kadarıyla aktör değildir.

Erlang'ın bazı insanların söylediği gibi aktör model dili olmadığı anlamına gelmez, örneğin Java'nın sadece belirli programlama özelliklerinden yoksun olduğu için fonksiyonel bir dil olmadığı anlamına gelmez mi?

Not: bu, Akka'nın kesinlikle bir aktör modeli olmadığı anlamına gelir çünkü ana bilgisayar dilinden gelen aktör olmayan veri türlerine ek olarak, aktörlerin davranışlarını ana bilgisayar dili olanakları aracılığıyla genişletmelerine bile izin verir.

Yanıtlar:


39

Aktör Modeli Erlang'dan daha eski olmasına rağmen, Erlang tasarımcıları Aktör Modeli hakkında sadece Erlang'ı tasarladıktan sonra öğrendiler, bu nedenle bazı farklılıklar beklenmelidir.

Bununla birlikte, paralel evrim yollarını izlediler: Aktör Modeli, Smalltalk'in geçen semantiğine dayanan Carl Hewitt tarafından yaratıldı. Alan Kay, Smalltalk'ın semantiklerini geçen PLANNER'in… Carl Hewitt tarafından tasarlanan hedef odaklı değerlendirmesine dayandırmıştı.

PLANNER, Prolog'un habercisiydi. Erlang başlangıçta bir dil olarak tasarlanmamıştı, daha ziyade Prolog'da hataya dayanıklı dağıtılmış programlama için bir kütüphane olarak başladı ve daha sonra Prolog'un kendi dili haline gelmeden önce hala Prolog'dan çok etkilenen bir lehçesine dönüştü. (artı, orijinal Erlang tercümanı Prolog'da yazıldı).

Yani, Erlang'daki Süreçler, OO'daki Nesneler ve Aktör Modelindeki Aktörler arasındaki benzerlikler rastlantısal değildir.

Erlang, her biri alt katmanların üst kümeleri olan birkaç katmana sahip bir dildir. En küçük katman Fonksiyonel Erlang'dır . Bu, Prolog'dan devralınan bağlanma / eşitlik yerine birleştirme gibi bazı eklemeleri olan standart bir işlevsel dildir. Buna Süreçler ve Mesajlar eklersek , Eşzamanlı Erlang alırız . Uzak işlemlere atın ve Dağıtılmış Erlang'ı elde edin . Şimdi OTP'den bazı kütüphaneler ve tasarım desenleri ekleyin ve hataya dayanıklı Erlang var.

Süreçler Aktörlerdir. (Aynı zamanda Nesnelerdir.) Süreçlerin içi Aktör tabanlı değil, İşlevseldir. OTP'nin araçları ve kalıpları kullanılarak inşa edilen büyük bir hataya dayanıklı Erlang sisteminin yapısı genellikle çok Nesneye Yöneliktir.

Bu, hangi ölçeğe baktığınıza bağlıdır.

Tipik bir büyük Erlang sisteminde, işlevsel programlama kullanılarak mesaj ileten aktörlerin yer aldığı nesne yönelimli bir mimariye sahipsiniz. OTP bir dediği şey serveryakından bir nesne ile ilgilidir, servers, işlemler dahili fonksiyonlarını kullanmak (aktörler olan) süreçlerinin oluşur.

Genel olarak, hiçbir saf Aktör Dilinin araştırmadan ayrıldığına inanmıyorum. Heck, Carl Hewitt'in PLASMA'sının, orijinal Aktör Dili'nin uygulandığını bile bilmiyorum .


4
Erlang, çözmesi gereken problemler olan kişiler tarafından da tasarlandı ve bu pozisyonda olduğunuzda kavramsal saflık genellikle pratiklik sunağından feda ediliyor.
Blrfl

İlginç bir şekilde, çözmeye çalıştıkları sorun (güvenilirlik, çoğaltma, artıklık,…) hücreler doğada çözülmeye çalıştığı aynı problemdir. Alan Kay mikrobiyolojide küçüldü ve biyolojik hücreler üzerinde açıkça modellenmiştir. Başka bir paralel.
Jörg W Mittag

1
PLASMA MacLisp'te uygulandı. Hızla gelişen bir araştırma diliydi.
Jerry101

1
Bu cevap gerçekten keyif aldım. Teşekkürler @ JörgWMittag!
Felixyz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.