คำถามติดแท็ก erlang

Erlang เป็นภาษาการเขียนโปรแกรมและสภาพแวดล้อมรันไทม์ที่ใช้เก็บขยะโดยทั่วไปพร้อมการสนับสนุนในตัวสำหรับการทำงานพร้อมกันการกระจายและการยอมรับข้อผิดพลาด

18
เปรียบเทียบความเร็วกับ Project Euler: C กับ Python เทียบกับ Erlang และ Haskell
ฉันได้นำปัญหา # 12จากProject Euler มาเป็นแบบฝึกหัดการเขียนโปรแกรมและเพื่อเปรียบเทียบการใช้งานของฉันใน C, Python, Erlang และ Haskell เพื่อให้ได้เวลาดำเนินการที่สูงขึ้นฉันค้นหาหมายเลขสามเหลี่ยมแรกที่มีตัวหารมากกว่า 1,000 ตัวแทนที่จะเป็น 500 ตามที่ระบุในปัญหาดั้งเดิม ผลที่ได้คือ: ค: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin 842161320 real 0m11.074s user 0m11.070s sys 0m0.000s งูหลาม: lorenzo@enzo:~/erlang$ time ./euler12.py 842161320 real 1m16.632s user 1m16.370s sys 0m0.250s Python กับ PyPy: lorenzo@enzo:~/Downloads/pypy-c-jit-43780-b590cf6de419-linux64/bin$ time ./pypy …

8
เหตุใดจึงมีฟังก์ชั่นสองประเภทในยาอายุวัฒนะ?
ฉันเรียนรู้ยาอายุวัฒนะและสงสัยว่าทำไมมันมีนิยามของฟังก์ชันสองประเภท: ฟังก์ชั่นที่กำหนดไว้ในโมดูลด้วยdefเรียกว่าการใช้myfunction(param1, param2) ฟังก์ชั่นไม่ระบุชื่อที่กำหนดด้วยfnเรียกว่าใช้myfn.(param1, param2) มีเพียงฟังก์ชันประเภทที่สองที่ดูเหมือนเป็นวัตถุชั้นหนึ่งและสามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอื่นได้ fnฟังก์ชั่นที่กำหนดไว้ในความต้องการโมดูลที่จะห่อใน มีน้ำตาลซินแทคติคที่ดูเหมือนotherfunction(myfunction(&1, &2))จะทำให้ง่าย แต่ทำไมมันจำเป็นในตอนแรก? ทำไมเราทำotherfunction(myfunction))ไม่ได้? มันเป็นเพียงเพื่อให้ฟังก์ชั่นการโทรโมดูลโดยไม่ต้องวงเล็บเช่นในทับทิม? ดูเหมือนว่าจะมีการสืบทอดคุณสมบัตินี้จาก Erlang ซึ่งมีฟังก์ชั่นโมดูลและฟังก์ชั่นสนุกด้วยเช่นกันจริง ๆ แล้วมันมาจากวิธีที่ Erlang VM ทำงานภายในหรือไม่ มันมีประโยชน์อะไรบ้างที่มีฟังก์ชั่นสองประเภทและแปลงจากประเภทหนึ่งไปเป็นอีกประเภทหนึ่งเพื่อส่งผ่านไปยังหน้าที่อื่น ๆ ? มีประโยชน์ไหมที่มีเครื่องหมายสองแบบที่แตกต่างกันในการเรียกใช้ฟังก์ชัน?
279 erlang  elixir 

11
Erlang ใช้งานที่ไหนและเพราะเหตุใด [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันต้องการทราบรายชื่อแอปพลิเคชั่น / เว็บไซต์ / โซลูชันที่ใช้งานบ่อยที่สุดที่ Erlang ใช้สำเร็จหรือไม่ประสบความสำเร็จหรือไม่ อธิบายว่าทำไมมันถูกใช้เป็นโซลูชันเฉพาะแทนภาษาโปรแกรมอื่น ๆ จะได้รับการชื่นชมอย่างมากเช่นกัน การระบุกรณีศึกษา BAD Erlang (กรณีที่ Erlang ถูกนำไปใช้ในทางที่ผิด) ก็น่าสนใจเช่นกัน
258 erlang  case-study 

7
ในทางเทคนิคเหตุใดกระบวนการใน Erlang จึงมีประสิทธิภาพมากกว่าเธรด OS
ลักษณะของ Erlang จากการเขียนโปรแกรม Erlang (2009): การทำงานพร้อมกันของ Erlang นั้นรวดเร็วและสามารถปรับขนาดได้ กระบวนการมีน้ำหนักเบาซึ่งเครื่องเสมือน Erlang ไม่ได้สร้างเธรด OS สำหรับทุกกระบวนการที่สร้างขึ้น พวกเขาถูกสร้างกำหนดเวลาและจัดการใน VM เป็นอิสระจากระบบปฏิบัติการพื้นฐาน เป็นผลให้เวลาการสร้างกระบวนการเป็นลำดับไมโครวินาทีและเป็นอิสระจากจำนวนกระบวนการที่มีอยู่พร้อมกัน เปรียบเทียบสิ่งนี้กับ Java และ C # ซึ่งทุกขั้นตอนจะสร้างเธรด OS พื้นฐานขึ้นมา: คุณจะได้รับการเปรียบเทียบที่แข่งขันได้มากโดย Erlang มีประสิทธิภาพเหนือกว่าทั้งสองภาษา จากการเขียนโปรแกรมเชิง Concurrency ใน Erlang (pdf) (สไลด์) (2003): เราสังเกตว่าเวลาที่ใช้ในการสร้างกระบวนการ Erlang นั้นมีค่าคงที่ 1 ถึง 2,500 กระบวนการ; หลังจากนั้นจะเพิ่มขึ้นเป็นประมาณ 3 วินาทีสำหรับกระบวนการมากถึง 30,000 กระบวนการ ประสิทธิภาพของ Java และ …

3
BEAM (Erlang VM) คือเครื่องเสมือนชนิดใด
จากสิ่งที่ฉันเข้าใจว่าเครื่องเสมือนแบ่งออกเป็นสองประเภท ได้แก่ "เครื่องเสมือนระบบ" หรือ "เครื่องเสมือนกระบวนการ" มันค่อนข้างคลุมเครือสำหรับฉันที่บีมอยู่ มีเครื่องเสมือนชนิดอื่นที่ฉันไม่รู้จักหรือไม่?

4
Erlang เขียนด้วยภาษาอะไร?
การใช้งาน Erlang และ Erlang / OTP ของ Ericsson เป็นอย่างไร เป็นแอสเซมบลี C หรือ Erlang เอง? อัปเดต 1: ขอบคุณ DrJokepu ถ้าฉันเข้าใจถูกต้องคอมไพเลอร์ Erlang source-to-VM จะเขียนด้วย Erlang เอง แต่ VM เขียนด้วยภาษาซี อัปเดต 2: Hynek-Pichi-Vychodil ชี้ให้เห็นรายละเอียดมากมาย ไดรเวอร์การโต้ตอบ VM และ HW: ใน C. คอมไพเลอร์ (ถึง VM) และไลบรารี: ใน Erlang ส่วนขยาย: เป็นไปได้ในภาษาใดก็ได้โดยการเขียนพอร์ตหรือโหนด Erlang ในภาษานั้น

1
Elixir / Erlang เข้ากับวิธีการของไมโครเซอร์วิสได้ที่ไหน? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เมื่อเร็ว ๆ นี้ฉันได้ทำการทดลองกับนักเทียบท่าเพื่อปรับใช้ไมโครเซอร์วิสที่ทำงานร่วมกันได้หลายตัว ฉันเห็นประโยชน์มากมายที่ไมโครเซอร์วิสมอบให้และตอนนี้มีชุดเครื่องมือที่ดีสำหรับการจัดการแล้วฉันคิดว่ามันไม่ยากเลยที่จะกระโดดเข้าไปในรถบรรทุกขนาดเล็ก แต่ฉันได้ทดลองกับ Elixir ด้วยและฉันก็ค่อนข้างชอบประโยชน์ที่ได้รับจากตัวมันเอง เนื่องจากมันสนับสนุนให้บรรจุรหัสของคุณลงในแอปพลิเคชันที่แยกตัวออกมาหลายตัวและรองรับการอัปเกรดรหัสร้อนคุณจะผสมนักเทียบท่ากับยาอมฤต (หรือ erlang สำหรับเรื่องนั้นอย่างไร) ตัวอย่างเช่นถ้าฉันต้องการใช้นักเทียบท่าเพราะมันมีความเท่าเทียมกันของ dev-prod ยาอมจะเข้ากันได้อย่างไร? เนื่องจากคอนเทนเนอร์นักเทียบท่าไม่เปลี่ยนรูปฉันจึงสูญเสียความสามารถในการอัปเกรดรหัสด่วนใช่ไหม? สิ่งที่เกี่ยวกับการปรับใช้สีน้ำเงิน / เขียวหรือการเผยแพร่ Canary? ฉันหมายความว่าฉันสามารถเขียน microservices ด้วย Elixir และใช้งานได้ราวกับว่ามันถูกเขียนในภาษาอื่น ๆ การพูดหลายภาษาก็เป็นประโยชน์อย่างหนึ่งของ microservices อยู่ดี แต่ฉันก็ไม่ได้รับประโยชน์เต็มที่จากการใช้แพลตฟอร์ม OTP เดาว่าแอปพลิเคชัน Erlang ที่ทำงานร่วมกันอย่างแท้จริงเป็นวิธีที่ดีที่สุดในการใช้คิวกลางเพื่อสื่อสารระหว่างไมโครเซอร์วิสที่เขียนด้วยภาษา (หรือไม่) ที่แตกต่างกัน

11
จะรับหมายเลขเวอร์ชันรีลีสของ Erlang จากเชลล์ได้อย่างไร
หลายโปรแกรมส่งคืนหมายเลขเวอร์ชันด้วยคำสั่งเช่น: $ program --version program (platform info) v1.2.3 สิ่งนี้มีประโยชน์สำหรับการเขียนสคริปต์การติดตั้งหรือการบำรุงรักษาโปรแกรมและเวทมนตร์อัตโนมัติที่ควบคุมอื่น ๆ จากผู้ดูแลระบบและเพื่อน ๆ ปัญหา จะรับหมายเลขเวอร์ชันสำหรับ Erlang (OTP) ได้อย่างไร? บนเน็ต ต่อไปนี้เป็นวิธีแก้ปัญหาที่ไม่น่าพอใจ ([1] และบทช่วยสอนอื่น ๆ / เอกสาร Erlang): โปรแกรมจำลอง $ erl 1> erlang:system_info(otp_release). "R13B03" ยากที่จะเขียนสคริปต์ ฉันไม่พบวิธีerlดำเนินการคำสั่งเดียวจากเชลล์พรอมต์ ไฟล์ที่เผยแพร่ $ cat /usr/lib/erlang/releases/RELEASES [{release,"OTP APN 181 01","R13B03","5.7.4", [{kernel,"2.13.4","/usr/lib/erlang/lib/kernel-2.13.4"}, {stdlib,"1.16.4","/usr/lib/erlang/lib/stdlib-1.16.4"}, {sasl,"2.1.8","/usr/lib/erlang/lib/sasl-2.1.8"}], permanent}]. การแยกวิเคราะห์สวรรค์ (พร้อมเปลือก) อีกทางเลือกหนึ่งอาจตรวจสอบเส้นทางการติดตั้ง แต่ไม่สามารถพกพาได้ (เส้นทางการติดตั้งของฉันไม่รวมเวอร์ชันหนึ่ง) …
108 shell  erlang 

4
มีสิ่งใดบ้างที่ Elixir สามารถทำได้ที่ Erlang ทำไม่ได้หรือในทางกลับกัน?
คำถามนี้อยู่ในบริบทของ Beam VM และความสามารถที่มีให้ไม่ใช่ในบริบททั่วไปของสิ่งที่ภาษาทัวริงสมบูรณ์สามารถทำได้ ฉันต้องการลงทุนเวลาเพื่อเรียนรู้ Erlang บริสุทธิ์หรือ Elixir ฉันได้รับความแตกต่างพื้นฐานระหว่างทั้งสองและฉันเอนเอียงไปที่ Elixir เนื่องจากมาโครไวยากรณ์ที่ดีขึ้นและการพัฒนาภาษาที่เร็วขึ้นในทุกวันนี้ คำถามของฉันคือถ้าฉันเลือก Elixir ฉันจะสะดุดกับสิ่งที่ฉันไม่สามารถทำได้ แต่สามารถทำได้ใน Erlang หรือไม่? ฉันสามารถใช้ OTP ทุกอย่างไลบรารี Erlang ทั้งหมดการโหลดโค้ดและอื่น ๆ ด้วย Elixir ได้หรือไม่ ฉันไม่ได้ถามถึงความชอบของใครบางคนระหว่างคนทั้งสอง ข้อเท็จจริงเกี่ยวกับความเป็นไปได้ของภาษา โดยเฉพาะอย่างยิ่งจากผู้ที่ใช้ทั้งในการผลิต
103 erlang  elixir  otp 

4
ความน่าเชื่อถือ 99.9999999% (เก้าเก้า) ของ Erlang
มีรายงานว่าErlangถูกใช้ในระบบการผลิตมานานกว่า 20 ปีโดยมีเปอร์เซ็นต์เวลาทำงาน 99.9999999% ฉันทำคณิตศาสตร์ดังต่อไปนี้: 20*365.25*24*60*60*(1 - 0.999999999) == 0.631 s นั่นหมายความว่าระบบมีเวลาหยุดทำงานน้อยกว่าหนึ่งวินาทีในช่วง 20 ปี ฉันไม่ได้พยายามที่จะท้าทายความถูกต้องของสิ่งนี้ฉันแค่อยากรู้ว่าเราจะปิดระบบได้อย่างไร (โดยตั้งใจหรือโดยบังเอิญ) เพียง 0.631 วินาที ใครที่คุ้นเคยกับระบบซอฟต์แวร์ขนาดใหญ่ช่วยอธิบายเรื่องนี้ให้เราฟังได้ไหม ขอบคุณ. ไม่มีใครรู้วิธีคำนวณเวลาหยุดทำงานของบริการบนคลัสเตอร์ของหน่วยประมวลผล (หรือเครื่องจักร)

5
Akka เปรียบเทียบกับ Erlang ได้อย่างไร? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันดู akka เมื่อเร็ว ๆ นี้และมันค่อนข้างน่าประทับใจ ดูเหมือนว่ามันมีคุณสมบัติที่น่ากลัวที่สุดของ erlang - ความโปร่งใสของสถานที่ลำดับชั้นการกำกับดูแลและอื่น ๆ มีคุณสมบัติใดบ้างที่ erlang ไม่มีหรือไม่?
99 erlang  akka 

8
ทำไมภาษาที่ใช้งานได้ (โดยเฉพาะ Erlang) จึงปรับขนาดได้ดี?
ฉันเฝ้าดูการมองเห็นที่เพิ่มขึ้นของภาษาการเขียนโปรแกรมที่ใช้งานได้และคุณสมบัติมาระยะหนึ่งแล้ว ฉันตรวจสอบพวกเขาและไม่เห็นเหตุผลของการอุทธรณ์ จากนั้นเมื่อเร็ว ๆ นี้ผมได้เข้าร่วมเควินสมิ ธ "พื้นฐานของ Erlang" นำเสนอต่อที่Codemash ฉันสนุกกับการนำเสนอและได้เรียนรู้ว่าคุณลักษณะมากมายของการเขียนโปรแกรมเชิงฟังก์ชันช่วยให้หลีกเลี่ยงปัญหาเธรด / การทำงานพร้อมกันได้ง่ายขึ้นมาก ฉันเข้าใจว่าการขาดสถานะและความไม่แน่นอนทำให้หลายเธรดเปลี่ยนแปลงข้อมูลเดียวกันไม่ได้ แต่เควินกล่าวว่า (ถ้าฉันเข้าใจถูกต้อง) การสื่อสารทั้งหมดเกิดขึ้นผ่านข้อความและข้อความจะถูกประมวลผลพร้อมกัน (อีกครั้งเพื่อหลีกเลี่ยงปัญหาการเกิดพร้อมกัน) แต่ฉันได้อ่านพบว่า Erlang ใช้ในแอปพลิเคชันที่ปรับขนาดได้สูง (เหตุผลทั้งหมดที่ Ericsson สร้างขึ้นตั้งแต่แรก) จะมีประสิทธิภาพในการจัดการคำขอหลายพันรายการต่อวินาทีได้อย่างไรหากจัดการทุกอย่างเป็นข้อความที่ประมวลผลแบบซิงโครนัส นั่นไม่ใช่เหตุผลที่เราเริ่มก้าวไปสู่การประมวลผลแบบอะซิงโครนัสดังนั้นเราจึงสามารถใช้ประโยชน์จากการรันเธรดการดำเนินการหลายชุดพร้อมกันและบรรลุความสามารถในการปรับขนาด ดูเหมือนว่าสถาปัตยกรรมนี้จะปลอดภัยกว่า แต่เป็นการถอยหลังในแง่ของความสามารถในการปรับขนาดได้ ฉันขาดอะไรไป? ฉันเข้าใจว่าผู้สร้าง Erlang ตั้งใจที่จะหลีกเลี่ยงการสนับสนุนเธรดเพื่อหลีกเลี่ยงปัญหาการทำงานพร้อมกัน แต่ฉันคิดว่าการทำงานแบบมัลติเธรดเป็นสิ่งที่จำเป็นเพื่อให้สามารถปรับขนาดได้ ภาษาโปรแกรมที่ใช้งานได้จะปลอดภัยต่อเธรดโดยเนื้อแท้ได้อย่างไร แต่ก็ยังคงปรับขนาดได้

3
สถานะของการใช้งาน Functional Reactive Programming ในปัจจุบันเป็นอย่างไร
ฉันพยายามนึกภาพระบบทางกายภาพอัตโนมัติง่ายๆ (เช่นลูกตุ้มแขนหุ่นยนต์ ฯลฯ ) ใน Haskell บ่อยครั้งที่ระบบเหล่านั้นสามารถอธิบายได้ด้วยสมการเช่น df/dt = c*f(t) + u(t) ที่u(t)แสดงถึง 'การควบคุมอัจฉริยะ' บางประเภท ระบบเหล่านี้ดูเหมือนจะเข้ากันได้ดีในกระบวนทัศน์การเขียนโปรแกรมปฏิกิริยาเชิงฟังก์ชัน ดังนั้นผมจึงคว้าหนังสือ "Haskell ของโรงเรียนในการแสดงออก" โดยพอลฮูดักและพบว่าเฉพาะโดเมนภาษา "FAL" (สำหรับฟังก์ชั่นนิเมชั่น Language) ที่นำเสนอมีการใช้งานได้จริงค่อนข้าง pleasently สำหรับระบบของเล่นที่เรียบง่ายของฉัน (แม้ว่าการทำงานบางอย่างสะดุดตาintegrate, ดูเหมือนจะขี้เกียจไปหน่อยสำหรับการใช้งานที่มีประสิทธิภาพ แต่แก้ไขได้ง่าย) คำถามของฉันคืออะไรที่เป็นทางเลือกสำหรับผู้ใหญ่ที่ทันสมัยได้รับการดูแลเป็นอย่างดีได้รับการปรับแต่งประสิทธิภาพสำหรับแอปพลิเคชันขั้นสูงหรือแม้แต่ในทางปฏิบัติในปัจจุบัน หน้าวิกินี้แสดงตัวเลือกต่างๆสำหรับ Haskell แต่ฉันไม่ชัดเจนเกี่ยวกับประเด็นต่อไปนี้: สถานะของ "ปฏิกิริยา" โครงการจาก Conal Eliott ซึ่งเป็น (ตามที่ฉันเข้าใจ) หนึ่งในผู้คิดค้นกระบวนทัศน์การเขียนโปรแกรมนี้ดูไม่ค่อยดี ฉันชอบรหัสของเขา แต่ฉันควรลองทางเลือกอื่นที่ทันสมัยกว่านี้ไหม อะไรคือความแตกต่างหลักระหว่างพวกเขาในแง่ของไวยากรณ์ / ประสิทธิภาพ / ความเสถียรของรันไทม์ หากต้องการอ้างอิงจากการสำรวจในปี 2554 …

9
Node.js หรือ Erlang
ฉันชอบเครื่องมือเหล่านี้มากเมื่อพูดถึงระดับการทำงานพร้อมกันที่สามารถจัดการได้ Erlang / OTP ดูเหมือนโซลูชันที่มีเสถียรภาพมากกว่า แต่ต้องการการเรียนรู้ที่มากขึ้นและการดำน้ำลึกเข้าไปในกระบวนทัศน์ภาษาที่ใช้งานได้ และดูเหมือนว่า Erlang / OTP จะทำให้ดีขึ้นมากเมื่อพูดถึงซีพียูแบบมัลติคอร์ (แก้ไขฉันถ้าฉันผิด) แต่ควรเลือกแบบไหน? อันไหนดีกว่ากันในมุมมองระยะสั้นและระยะยาว? เป้าหมายของฉันคือการเรียนรู้เครื่องมือที่ทำให้การปรับขนาดโครงการเว็บของฉันภายใต้ภาระงานสูงทำได้ง่ายกว่าภาษาทั่วไป

1
ความแตกต่างระหว่างกระบวนการ / ข้อความใน Erlang และวัตถุ / ข้อความใน Smalltalk คืออะไร?
ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างวัตถุ / ข้อความในสมอลล์ทอล์คและกระบวนการ / ข้อความในErlang ผมอ่านโพสต์ต่อไปในหัวข้อ เท่าที่ฉันเข้าใจใน Smalltalk ทุกอย่างเป็นวัตถุและทุกสิ่งมีนามธรรม "วัตถุ / ข้อความ" ที่เป็นนามธรรม - แม้ตัวเลข1จะเป็นวัตถุที่สามารถเข้าถึงได้เมื่อมีการส่งข้อความเท่านั้น คือ1กระบวนการใน Erlang / Elixir หรือไม่? ทุกอย่างใน Erlang เป็นคำตอบของกระบวนทัศน์ข้อความ / โปรแกรมหรือไม่? คุณสามารถส่งข้อความถึงหมายเลขใน Erlang ได้หรือไม่? ขอบคุณมาก.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.