เออร์แลงเป็นภาษาต้นแบบของนักแสดงหรือ


18

ฉันกำลังอ่านบทความนี้:

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

และมันก็กล่าวว่า:

... ในโมเดลนักแสดงแม้จำนวนเต็มจะแสดงเป็นนักแสดง ...

Wikipedia ยืนยัน:

โมเดลนักแสดงนำปรัชญาที่ทุกอย่างเป็นนักแสดง

Erlang มีชนิดข้อมูลจำนวนมากและประเภทเหล่านั้นไม่ใช่นักแสดงเท่าที่ฉันสามารถบอกได้

ไม่ได้หมายความว่า Erlang ไม่ใช่ภาษานางแบบนักแสดงในแบบที่บางคนพูดว่า Java ไม่ได้เป็นภาษาที่ใช้งานได้เพราะมันขาดคุณสมบัติการเขียนโปรแกรมที่ใช้งานได้บางอย่าง?

PS: โดยการขยายนั่นหมายความว่า Akka ไม่ใช่แบบอย่างของนักแสดงเพราะนอกเหนือจากประเภทข้อมูลที่ไม่ใช่นักแสดงที่มาจากภาษาแม่ยังช่วยให้ผู้สืบทอดสืบทอดพฤติกรรมของพวกเขาผ่านทางภาษาแม่

คำตอบ:


39

แม้ว่า Actor Model นั้นจะมีอายุมากกว่า Erlang แต่นักออกแบบของ Erlang ก็เรียนรู้เกี่ยวกับ Actor Model หลังจากที่ได้ออกแบบ Erlang ดังนั้นจึงต้องมีความแตกต่างบางอย่าง

พวกเขาเดินตามเส้นทางคู่ขนานของการวิวัฒนาการแม้ว่า: โมเดลของนักแสดงถูกสร้างขึ้นโดย Carl Hewitt ตามข้อความที่ถ่ายทอดความหมายของสมอลล์ทอล์ค Alan Kay ได้ตามข้อความผ่านความหมายของ Smalltalk จากการประเมินเป้าหมายของ PLANNER ซึ่งได้รับการออกแบบโดย… Carl Hewitt

PLANNER เป็นสารตั้งต้นของ Prolog เดิมที Erlang ไม่ได้ตั้งใจจะเป็นภาษา แต่มันเริ่มต้นจากการเป็นห้องสมุดสำหรับการเขียนโปรแกรมกระจายความผิดพลาดใน Prolog และต่อมาพัฒนาเป็นภาษาของ Prolog ก่อนที่มันจะกลายเป็นภาษาของตัวเองจนถึงทุกวันนี้อิทธิพลอย่างมากจาก Prolog (บวกล่าม Erlang ต้นฉบับถูกเขียนใน Prolog)

ดังนั้นความคล้ายคลึงกันระหว่างกระบวนการใน Erlang, Objects ใน OO และนักแสดงใน Model Actor นั้นห่างไกลจากความบังเอิญ

Erlang เป็นภาษาที่มีหลายเลเยอร์ซึ่งแต่ละอันจะเป็นชั้นล่าง ชั้นที่เล็กที่สุดคือฟังก์ชั่น Erlang นี่เป็นภาษาที่ใช้งานได้มาตรฐานที่มีการเพิ่มเติมบางส่วนที่สืบทอดมาจาก Prolog เช่นการรวมกันแทนที่จะเป็นการรวม / เข้ากัน ถ้าเราเพิ่มกระบวนการและข้อความที่เราได้รับพร้อมกัน Erlang โยนในกระบวนการระยะไกลและคุณจะได้รับการแจกจ่าย Erlang ตอนนี้เพิ่มบางไลบรารีและรูปแบบการออกแบบจาก OTP และคุณมี Erlang ที่สามารถรับความผิดพลาดได้

กระบวนการเป็นนักแสดง (เป็นวัตถุด้วย) ด้านในของกระบวนการนั้นใช้งานได้ดีไม่ใช่ตัวแสดง โครงสร้างของระบบ Erlang ที่มีความทนทานต่อความผิดพลาดขนาดใหญ่ที่สร้างขึ้นโดยใช้เครื่องมือและรูปแบบของ OTP นั้นมักจะเป็นแบบเชิงวัตถุ

ดังนั้นขึ้นอยู่กับขนาดที่คุณกำลังดู

ในระบบ Erlang ขนาดใหญ่ทั่วไปคุณมีสถาปัตยกรรมเชิงวัตถุที่มีตัวดำเนินการส่งข้อความที่ใช้งานการเขียนโปรแกรมการทำงาน สิ่งที่ OTP เรียกว่าserverเกี่ยวข้องกับวัตถุอย่างใดอย่างหนึ่งservers ประกอบด้วยกระบวนการ (ซึ่งเป็นตัวแสดง) กระบวนการใช้ฟังก์ชันภายใน

โดยทั่วไปแล้วฉันไม่เชื่อว่าภาษานักแสดงล้วนๆเคยออกจากการวิจัย เฮ็คฉันไม่รู้ด้วยซ้ำว่า PLASMA ของคาร์ลเฮวิตต์ภาษานักแสดงดั้งเดิมได้ถูกนำไปใช้จริงหรือไม่


4
เออร์แลงได้รับการออกแบบโดยผู้ที่มีปัญหาในการแก้ปัญหาและเมื่อคุณอยู่ในตำแหน่งนั้นความบริสุทธิ์ทางความคิดมักถูกสังเวยที่แท่นบูชาแห่งการปฏิบัติจริง
Blrfl

ที่น่าสนใจปัญหาที่พวกเขาพยายามแก้ไข (ความน่าเชื่อถือการจำลองแบบความซ้ำซ้อน…) เป็นลักษณะเดียวกันที่พยายามแก้ไขเมื่อเซลล์วิวัฒนาการ Alan Kay ขุดในจุลชีววิทยาและจำลอง OO อย่างชัดเจนในเซลล์ชีวภาพ อีกคู่ขนาน
Jörg W Mittag

1
PLASMA ถูกใช้งานใน MacLisp มันเป็นภาษาวิจัยที่พัฒนาอย่างรวดเร็ว
Jerry101

1
ชอบคำตอบนี้จริงๆ ขอบคุณ @ JörgWMittag!
Felixyz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.