Apa perbedaan antara proses / pesan di Erlang dan objek / pesan di Smalltalk?

12

Saya mencoba memahami perbedaan antara objek / pesan di Smalltalk dan proses / pesan di Erlang . Saya membaca posting berikut tentang topik ini .

Sejauh yang saya mengerti, di Smalltalk, semuanya adalah objek , dan semuanya memiliki abstraksi "objek / pesan" yang sama - bahkan jumlahnya 1adalah objek yang hanya dapat dicapai dengan melewati pesan. Apakah 1proses di Erlang / Elixir? Apakah semua yang ada di Erlang menanggapi paradigma pesan / program? Bisakah Anda mengirim pesan ke nomor di Erlang?

Terima kasih banyak.

Sepenuhnya Fungsional
sumber
Bilangan bulat 1 bukanlah proses - jadi Anda tidak dapat mengirimnya pesan. Anda bisa membungkus keadaan integer di dalam proses berulang dan mengirim pesan proses itu - misalnya instruksi untuk menambah atau mengurangi nilainya. Tapi sekali lagi itu tidak lagi bernilai 1. Gulir ke bawah ke contoh Elixir di sini dantswain.herokuapp.com/blog/2015/01/06/…
GavinBrelstaff
terima kasih atas jawabannya!
Fungsional

Jawaban:

18

Proses di Erlang dan Objek di Smalltalk memang hal yang sama.

Sepintas, ini tidak terlalu mengejutkan: Erlang adalah bahasa Model Aktor . Model Aktor diciptakan oleh Carl Hewitt, yang mendasarkan model evaluasi berbasis pesan pada model evaluasi berbasis pesan Smalltalk. (Sungguh, Aktor dan Objek adalah hal yang sama; mereka hanya berbeda dalam beberapa detail.) Alan Kay, pada gilirannya, dipengaruhi oleh PERENCANAAN Carl Hewitt, ketika ia merancang Smalltalk.

Jadi, ada hubungan yang erat antara Aktor dan Objek, dan karena itu, tidak mengherankan bahwa Proses Erlang dan Objek Smalltalk sangat mirip.

Kecuali satu hal: para desainer Erlang tidak tahu tentang Model Aktor !!! Mereka hanya belajar tentang itu nanti, terutama ketika Joe Armstrong menulis tesis PhD-nya di bawah Seif Haridi (co-penulis buku definitif tentang Pemrograman Paradigma) pada akhir 1990-an.

Joe Armstrong menulis sebuah artikel di mana dia sangat mengadvokasi menentang OO ( Why OO Sucks ), tetapi dia kemudian berubah pikiran ketika dia menyadari bahwa Erlang sebenarnya sangat berorientasi objek. Bahkan, ia bahkan melangkah lebih jauh dengan mengklaim bahwa Erlang adalah satu - satunya bahasa yang berorientasi objek dalam wawancara ini dengan Joe Armstrong dan Ralph Johnson .

Ini adalah kasus yang menarik dari apa yang oleh ahli biologi evolusi disebut evolusi konvergen , yaitu dua spesies yang tidak terkait yang berevolusi menjadi serupa dalam menanggapi tekanan eksternal yang serupa.

Namun, masih ada banyak hubungan antara Erlang dan Smalltalk:

Erlang dimulai sebagai ekstensi konkurensi ke Prolog (dan bahkan ketika Erlang menjadi bahasa terpisah sendiri, implementasi pertama ditulis dalam Prolog) dan sampai hari ini masih banyak berakar di Prolog. Prolog sangat dipengaruhi oleh PLANNER Carl Hewitt.

Smalltalk juga sangat dipengaruhi oleh apa yang nantinya menjadi ARPANet (dan bahkan kemudian Internet); Erlang dirancang untuk sistem jaringan.

Namun, salah satu perbedaan penting antara Erlang dan Smalltalk adalah tidak semua proses. 1adalah angka, bukan proses. Anda tidak dapat mengirim pesan ke nomor.

Ada beberapa "lapisan" Erlang:

  • Erlang Fungsional : sebagian besar khas, bahasa fungsional yang diketik secara dinamis dengan beberapa "keanehan" yang diwarisi dari Prolog, misalnya penyatuan.
  • Concurrent Erlang : Fungsional Erlang + Proses dan Pesan.
  • Distributed Erlang : Concurrent Erlang + Remote Processes.
  • Erlang Toleransi Sesar : Erlang Terdistribusi + Pola Desain tertentu yang dikodifikasi dalam perpustakaan OTP, misalnya pohon pengawas dan gen_server.

Sistem Fault-Tolerant yang ditulis dalam Erlang / OTP biasanya akan terlihat seperti sesuatu yang kita kenal sebagai "Berorientasi Objek". Tetapi bagian dalam benda-benda itu akan sering diimplementasikan dalam gaya yang lebih fungsional daripada berorientasi objek.

Menariknya, "tekanan evolusi" yang dialami Erlang, dengan kata lain, masalah yang coba dipecahkan oleh perancang Erlang (keandalan, replikasi, redundansi, ...) adalah tekanan yang sama yang menyebabkan evolusi sel. Alan Kay belajar mikrobiologi, dan secara eksplisit memodelkan OO pada sel biologis. Ini adalah paralel lain antara Erlang dan Smalltalk.

Saya menulis sedikit tentang ini di jawaban saya yang lain .

Jörg W Mittag
sumber
Terima kasih, itu sangat membantu!
Fungsional