ทำไม OCaml จึงไม่เป็นที่นิยมมากกว่า?


86

ผมเคยได้ยินเสมอว่าซีเป็นภาษาของทางเลือกที่จะใช้สำหรับระบบฝังตัวหรือสิ่งที่ต้องการที่จะทำงานที่ความเร็วสูงสุด ฉันไม่เคยพัฒนาความชื่นชอบให้กับ C ส่วนใหญ่เป็นเพราะฉันไม่ชอบเลขคณิตของตัวชี้และภาษาแทบจะไม่ดังไปกว่าแอสเซมเบลอร์

ในทางตรงกันข้ามภาษา ML นั้นใช้งานได้ภาษาที่รวบรวมขยะและ OCaml มีรูปแบบวัตถุ แต่พวกเขาก็มีชื่อเสียงในด้านความรวดเร็วเท่ากับภาษา C. ML มีสิ่งที่เป็นนามธรรมทุกคนสามารถขอให้เขียนในระดับสูงกระชับ รหัส แต่ยังคงความเร็วที่จำเป็นสำหรับการเขียนแอปพลิเคชันประสิทธิภาพสูง

โดยเฉพาะอย่างยิ่ง OCaml สามารถใช้งานได้ทุกที่ที่ C ใช้แบบดั้งเดิมเช่นสำหรับอุปกรณ์ฝังตัว, ไดรเวอร์กราฟิก, ระบบปฏิบัติการ ฯลฯ โดยสิทธิทั้งหมด OCaml ควรจะครองโลก แต่ตอนนี้แทบไม่มีใครได้ยินภาษา แต่เพียงผู้เดียว ใช้มัน

นี่เป็นคำถามแบบอัตนัย แต่ทำไมภาษาอื่นของ OCaml และ ML ยังคงคลุมเครือในขณะที่ภาษา C และภาษาอื่น ๆ ได้รับความนิยม

คำตอบ:


82

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

ด้วยข้อจำกัดความรับผิดชอบต่อไปนี้เป็นข้อแนะนำที่สำคัญที่สุดก่อน:

  • คอมไพเลอร์ C วัยแรกที่ปรากฏในปี 1974; คอมไพเลอร์ OCaml ที่ครบวงจรตัวแรกที่ปรากฏในปลายปี 1990 C มีจุดเริ่มต้น 25 ปี

  • C มาพร้อมกับ Unix ซึ่งเป็น "แอพนักฆ่า" ที่ใหญ่ที่สุดตลอดกาล เป็นเวลานานทุกแผนก CS ในโลกจะต้องมี Unix ซึ่งหมายความว่าผู้สอนทุกคนและทุกคนที่เรียนหลักสูตร CS มีโอกาสได้สัมผัสกับ C. OCaml และ ML กำลังรอแอปนักฆ่าคนแรกของพวกเขา (MLdonkey เจ๋ง แต่ไม่ใช่ Unix)

  • C เติมช่องว่างได้เป็นอย่างดีว่าฉันสงสัยจะไม่มีภาษาระดับต่ำอีกอุทิศเฉพาะกับการเขียนโปรแกรมระบบ (หากต้องการดูหลักฐานสนับสนุนโปรดอ่านบทความของ Dennis Ritchie เกี่ยวกับประวัติ C จาก HOPL II) มันไม่ชัดเจนแม้แต่ว่าโพรงของ OCaml คืออะไรและช่อง ML มาตรฐานนั้นชัดเจนขึ้นเล็กน้อย ดังนั้น Caml และ ML จึงมีคู่แข่งค่อนข้างน้อยในขณะที่ C ฆ่าคู่แข่งเพียงรายเดียว (BLISS)

  • หนึ่งในจุดแข็งที่ยอดเยี่ยมของ C คือโมเดลราคาที่สามารถคาดการณ์ได้: มันเป็นเรื่องง่ายที่จะดูชิ้นส่วนเล็ก ๆ ของรหัส C สามารถรับความคิดที่แม่นยำได้ทันทีว่าการดำเนินการของเครื่องใดที่ต้องดำเนินการเพื่อเรียกใช้รหัสนั้น โมเดลต้นทุนของ OCaml นั้นมีความชัดเจนน้อยกว่าโดยเฉพาะอย่างยิ่งเนื่องจากการจัดสรรหน่วยความจำมีความชัดเจนน้อยกว่ามากและค่าใช้จ่ายโดยรวมของการจัดสรรหน่วยความจำ (เท่ากับต้นทุนการจัดสรรรวมถึงต้นทุนที่เกิดขึ้นระหว่างการรวบรวมขยะ) ขึ้นอยู่กับคุณสมบัติที่เกิดขึ้นใหม่เช่นระยะเวลาที่วัตถุมีชีวิตอยู่และวัตถุใดที่อ้างถึงวัตถุอื่น ผลลัพธ์สุทธิคือประสิทธิภาพนั้นยากที่จะคาดการณ์และแม้แต่ยากที่จะวิเคราะห์หลังจากข้อเท็จจริง (เครื่องมือสร้างโปรไฟล์หน่วยความจำของ OCaml ไม่ใช่สิ่งที่ควรจะเป็น) ดังนั้น OCaml จึงไม่ดีสำหรับแอปพลิเคชันที่ประสิทธิภาพต้องคาดเดาได้มากเช่นระบบฝังตัว

  • C เป็นภาษาที่มีคอมไพเลอร์มาตรฐานและหลายภาษา OCaml เป็นซอฟต์แวร์ที่ประดิษฐ์: คอมไพเลอร์เท่านั้นมาจากแหล่งเดียวและคอมไพเลอร์เป็นมาตรฐาน และมาตรฐานนั้นเปลี่ยนไปทุกครั้ง สำหรับผู้ที่เห็นคุณค่าของความเสถียรและความเข้ากันได้แบบย้อนหลังภาษาแหล่งเดียวอาจแสดงถึงความเสี่ยงที่ยอมรับไม่ได้

  • ใครก็ตามที่มีหลักสูตรคอมไพเลอร์ระดับปริญญาตรีที่เหมาะสมและมีความพยายามอย่างมากสามารถเขียนคอมไพเลอร์ C ที่ทำงานได้ไม่มากก็น้อยและมีประสิทธิภาพเพียงพอ ในการรับการติดตั้ง OCaml หรือ ML นั้นต้องมีการศึกษามากขึ้นและเพื่อให้ได้ประสิทธิภาพเทียบเคียงกับคอมไพเลอร์ที่ไร้เดียงสา C ต้องใช้งานมากขึ้น นี่หมายความว่ามีผู้เล่นอดิเรกน้อยลงที่จะยุ่งกับภาษาอย่าง OCaml ดังนั้นจึงเป็นการยากที่ชุมชนจะพัฒนาความเข้าใจอย่างลึกซึ้งเกี่ยวกับวิธีการใช้ประโยชน์จากมัน


5
OCaml เป็นภาษาถิ่น ML ที่ค่อนข้างใหม่ซึ่งเกิดในเวลาเดียวกันกับ Java อย่างไรก็ตาม ML กลับไปในปี 1973 โดยใช้ภาษาถิ่นตัวแรกคือ SML ที่ได้รับการพัฒนาในปี 1978 ภาษา ML ได้ค้นพบช่องทางในการพิสูจน์ทฤษฎีและการวิจัย แต่ตั้งแต่นั้นมาเป็นมาตรฐานอุตสาหกรรมในสถาบันการเงิน
Juliet

15
ฉันจะไม่เรียก ML ว่า "มาตรฐานอุตสาหกรรมในสถาบันการเงิน" (และฉันไม่ได้พูดแบบนี้เพราะฉันเขียนแอปพลิเคชันทางการเงินใน Haskell :-)) ในโลกธุรกิจการค้าในขณะที่อุตสาหกรรมทางการเงินอาจมีการเขียนโปรแกรมฟังก์ชั่นการทำงานมากกว่าที่อื่น ๆ : จากประสบการณ์ของฉัน C ++ และ Java ครอง บริษัท อย่างถนนเจนเป็นข้อยกเว้นไม่ใช่กฎ

8
Perl เป็น "ซอฟต์แวร์สิ่งประดิษฐ์" - คำจำกัดความเดียวของ Perl คือ "ภาษาที่แปล perl (1)" - และยังค่อนข้างเป็นที่นิยม Python และ Ruby เป็น "ส่วนซอฟต์แวร์" มาเป็นเวลานาน

5
@Chris: IMO นี้เป็นหนึ่งในเหตุผลที่ Perl กำลังสูญเสีย mindshare
นอร์แมนแรมซีย์

5
ในการคาดการณ์ได้ฉันคิดว่า OCaml ชนะ C ในขอบเขตนั้นด้วยระดับการเพิ่มประสิทธิภาพที่คาดหวังจากคอมไพเลอร์ C และความเปราะบางของการปรับให้เหมาะสมเหล่านั้นมากมาย คอมไพเลอร์ของ OCaml นั้นมีความหมายมากเกี่ยวกับสิ่งที่คอมไพล์โค้ดของคุณ

63

ฉันคิดว่าปัญหากับ OCaml คือมันไม่มีประโยชน์ "นอกกรอบ" เกินไป เหตุผลในที่สุดว่าทำไมคนใช้ภาษาเพราะมันมีห้องสมุดที่พวกเขาต้องการ แม้ว่าจะไม่มีอะไร "นอกกรอบ" แต่ก็ไม่มีใครเข้าร่วมโครงการมากพอที่จะรู้ว่าพวกเขาจำเป็นต้องเขียนห้องสมุด ผลลัพธ์เป็นภาษาที่ไม่มีไลบรารี่ซึ่งทำให้ยากที่จะเขียน "แอพของจริง"

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

(ฉันรู้ว่ามีการทำงานภายใต้วิธีการเปลี่ยนแปลงกับโครงการเช่น "รวมแบตเตอรี่" กลับมาที่นี่อีก 5 ปีและบางที OCaml อาจได้รับความนิยมมากขึ้น)

มีข้อยกเว้นบางประการสำหรับกฎนี้ Java เริ่มต้นโดยไม่มีห้องสมุด แต่ซอนจ่ายให้ผู้คนเขียนพวกเขาทั้งหมดในบ้านและจากนั้นพวกเขาก็ออกวางตลาดนรก การรับรอง Java, ฮาร์ดแวร์เฉพาะ Java, หนังสือ Java, ชั้นเรียน Java, และจากนั้นก็โน้มน้าวใจให้มหาวิทยาลัยส่วนใหญ่สอนเฉพาะแม้ว่ามันจะไม่ได้เป็นภาษาที่ดีสำหรับการเรียนรู้การเขียนโปรแกรม

ผลที่ได้คือความนิยม เงินสามารถแก้ไขปัญหาได้มากมาย

ในเวทีภาษาที่ใช้งานได้เราจะเห็นได้ว่า Haskell กำลังเป็นที่นิยม ฉันคิดว่าความนิยมส่วนใหญ่เกิดจากคนอย่างดอนที่เขียนห้องสมุดที่มีประโยชน์และไม่เคยหยุดการตลาดด้วยคำวิจารณ์ ทุกวันคุณจะเห็นบทความ Haskell เกี่ยวกับ Programming Reddit สิ่งนี้ทำให้มันติดอยู่ในใจของประชาชนจนกว่าพวกเขาจะตัดสินใจในที่สุด "ฉันจะลอง Haskell" เมื่อทำเช่นนั้นพวกเขาจะเห็นสิ่งที่มีประโยชน์เช่นกรอบงานเว็บฐานข้อมูลวัตถุไลบรารี OpenGL และห้องสมุดประมวลผล XML ซึ่งหมายความว่าพวกเขาสามารถทำสิ่งที่มีประโยชน์จริง ๆ "Right Now" ดังนั้นระหว่างศักยภาพในการผลิตและการได้ยินเกี่ยวกับเรื่องนี้ Haskell ได้รับความนิยมอย่างมาก

CL มีห้องสมุดเดียวกันกับ Haskell หลายแห่งและเกือบจะเร็ว แต่ไม่มีใครพูดถึงมันดังนั้นจึงทำให้ "รู้สึกว่าตาย" แน่นอน #lisp เงียบกว่า #haskell มาก แต่ Lisp ยังคงเป็นภาษาที่ให้ผลผลิตอย่างมากพร้อมกับห้องสมุดจำนวนมาก ไม่มีภาษาอื่นที่มี SLIME แต่การตลาดมีความสำคัญมากและ Haskell ทำได้ดีกว่า Lisp หรือ OCaml (และแข่งขันเพื่อฐานผู้ใช้เดียวกัน)

ในที่สุดบางคนจะไม่มีวัน "รับ" การเขียนโปรแกรมดังนั้นการทำลายแบบจำลองทางจิต (ตัวแปรคือกล่องที่มีค่ารหัสดำเนินการจากบนลงล่าง) จะทำให้แน่ใจว่าพวกเขาไม่ได้ใช้ภาษาของคุณ โปรแกรมเมอร์ประเภทนี้คือจำนวนเปอร์เซ็นต์ที่มากของประชากรการเขียนโปรแกรมดังนั้นสิ่งนี้จึง จำกัด ฐานผู้ใช้ที่เป็นไปได้ของภาษานามธรรมเช่น Lisp, Haskell และ OCaml


45
นี่อาจเป็นจริงเมื่อ 10 ปีที่แล้ว แจ้งให้เราทราบเมื่อฉันสามารถ "ติดตั้ง cabal" ในไลบรารี OCaml อย่างไรก็ตามเพียงเพราะฉันบอกว่าสิ่งที่ไม่ดีเกี่ยวกับภาษาที่คุณชื่นชอบไม่ได้หมายความว่าคุณต้องหยุดใช้มัน ดังนั้นไม่จำเป็นต้องมีอารมณ์

5
ไม่ฉันหมายถึงการเขียนโปรแกรมโดยทั่วไป หากคุณไม่เข้าใจการเขียนโปรแกรมที่ใช้งานได้คุณอาจไม่เข้าใจแนวคิดอื่นเช่นกัน

8
ฉันไม่ซื้อสิ่งนี้ OCaml มีห้องสมุดมากมายสำหรับการเขียนโปรแกรมพื้นฐานแบบวันต่อวันและถ้ามันกลายเป็นที่นิยมมากขึ้นผู้คนจะเขียนมากขึ้น ทุกภาษาเริ่มต้นด้วยห้องสมุดน้อย

8
ลิงค์เกี่ยวกับห้องสมุดเหล่านี้เป็นอย่างไร?

4
ทำไมมีมากกว่า 0 คนโหวตให้คนที่อ้างว่าภาษาไม่มีการใช้งานตารางแฮช ฉันไม่สามารถทนต่อภาษาที่สร้างขึ้นในอึไร้ประโยชน์เช่นการแสดงออกปกติและพจนานุกรมในพวกเขาภาษาควรจะแยกออกจากห้องสมุดมากที่สุดเท่าที่จะทำได้เพื่อให้ TCB สำคัญลง ภาษาที่ต้องอาศัยพจนานุกรมในการทำสิ่งต่าง ๆ ให้สำเร็จคืออึ่มที่สุด
Longpoke

22

ผมชอบ OCaml มากเป็นภาษา แต่...

เครื่องมือสนับสนุนไม่ได้อยู่ที่นั่น ตัวดีบักใช้งานได้ดี แต่ไม่ทำงานบน windows (ฉันตรวจสอบล่าสุด) และมีเครื่องมือการพัฒนาไม่มาก

บางครั้งระบบประเภทของมันก็ค่อนข้างแรงเกินไป สำหรับคนที่ไม่เข้าใจว่าการอนุมานประเภททำงานอย่างไรหรือระบบประเภท ML โดยทั่วไปความจริงที่ว่าเขาไม่สามารถเพิ่มจำนวนเต็มลงในโฟลตได้นั้นเป็นการปิดเครื่องครั้งใหญ่ทันที

บางครั้งไลบรารีมาตรฐานอาจมีความรู้สึกไม่สอดคล้องกัน

ดูเหมือนว่ารูปแบบวัตถุจะค่อนข้างติดและห้องสมุดมาตรฐานแทบจะไม่ใช้มันเลือกสำหรับห้องสมุดโมดูลที่ใช้แทน

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

ฉันคิดว่ามรดกที่สำคัญที่สุดคือมันพร้อมกับภาษา ML อื่น ๆ มีอิทธิพลอย่างมากต่อภาษาการทำงานอื่น ๆ ภาษาที่ใช้งานได้ในปัจจุบันส่วนใหญ่ใช้องค์ประกอบที่ดีที่สุดจากภาษาถิ่น ML และปรับแต่งความน่ารำคาญบางอย่าง


3
ฉันจะไม่พูดว่าระบบประเภทของมันแข็งแกร่งเกินไป แต่ไม่ชัดเจนพอที่จะพิมพ์คลาส ala Haskell จะช่วยได้มาก

2
ใช่ แต่ความคิดเห็นเหล่านี้ส่วนใหญ่เกี่ยวกับการไม่รู้สึก polsihed นำไปใช้อย่างยิ่งกับ C ++! ฉันรู้สึกว่าสิ่งนี้ทำให้ข้อโต้แย้งของคุณอ่อนแอลง (แม้ว่าฉันจะเห็นด้วย)
Yttrill

2
ตัวดีบัก OCaml เป็นคนเดียวที่ฉันรู้ว่าสามารถถอยหลังไปข้างหน้าได้
ocodo

21

ระบบฝังตัวมักจะต้องการสองสิ่ง: ความเร็วและระดับ OCaml สามารถให้ความเร็วได้ แต่ความจริงที่ว่ามันมีตัวเก็บขยะทำให้มันไม่ได้กำหนดไว้โดยเนื้อแท้และสำหรับระบบเรียลไทม์ที่เรียบง่ายจะไม่ทำ


1
แน่นอนว่า Java และ PHP นั้นเป็นที่นิยมและคุณไม่สามารถใช้สิ่งเหล่านั้นในระบบฝังตัวได้ การใช้งานในระบบฝังตัวไม่ได้มีอิทธิพลต่อความนิยมทางภาษามากนัก

3
คำถามเดิมถามเกี่ยวกับระบบฝังตัวดังนั้นฉันจึงให้เหตุผลที่เฉพาะเจาะจงว่าทำไมจึงไม่สามารถใช้งานได้ และเป็นหมายเหตุด้านข้างคุณสามารถใช้ Java - ไม่ใช่สำหรับเรียลไทม์ (เช่นเดียวกับ C #)

2
Java เองไม่ใช่แบบเรียลไทม์ สิ่งใดก็ตามที่มีกลไกการรวบรวมขยะไม่สามารถทำได้

3
@ctacke: นั่นไม่จริงเลย มีนักสะสมขยะแบบเรียลไทม์จำนวนมาก การใช้งาน Java จะใช้พวกเขาและ Java จะใช้ในการใช้งานเรียลไทม์
Jon Harrop


18

นี่เป็นการเปรียบเทียบแอปเปิ้ลถึงส้ม OCaml เป็นภาษาที่ค่อนข้างเล็ก [1] และไม่เคยมีความพยายามอย่างจริงจังที่จะผลักดันให้มันเข้าสู่กระแสหลัก (ยกเว้นงานปัจจุบันของ Microsoft กับ F #) ต่างจาก C ไม่ใช่ภาษากลางของระบบปฏิบัติการขององค์กรที่รองรับและเลียนแบบมากที่สุด (เช่น UNIX) แตกต่างจาก Java แต่ก็ไม่มี บริษัท ยักษ์ใหญ่ที่ผลักดันให้เป็นแพลตฟอร์มการคำนวณรุ่นต่อไป ซึ่งแตกต่างจาก Perl, Python และ Ruby มันไม่ได้อยู่ในกลุ่มที่มีอิทธิพลและมีอิทธิพลสูง (นั่นคือช่องของมันคือภาษาโปรแกรมและการวิจัยการใช้เหตุผลแบบอัตโนมัติ - ไม่ใช่โปรไฟล์ที่สูงมากเมื่อเทียบกับการพัฒนาเว็บ) ดังนั้นจึงไม่เป็นที่นิยมสุด ๆ

[1] ในความเป็นธรรมภาษา ML ดั้งเดิมมีมาตั้งแต่ยุค 70 แต่ OCaml ไม่ปรากฏจนกระทั่งปี 1996 และมันไม่ได้สืบทอดไลบรารี่มาตรฐาน ML มันเป็นในทางปฏิบัติเป็นภาษาที่อายุน้อยกว่า C, C ++, Java, Python, Haskell หรือแม้แต่ Ruby


ตามวิกิพีเดีย ML ไม่อายุน้อยกว่ามันอายุน้อยกว่าหนึ่งปีเท่านั้น (1972 สำหรับ C v. 1973 สำหรับ ML) ส่วนที่เหลือของคำอธิบายของคุณฉันคิดว่าถูกต้องกับเงิน

1
ฮะ. ฉันจะเดทกับ C ถึงปลายยุค 60 และ ML จนถึงต้นปี 80 (และ OCaml โดยเฉพาะถึงช่วงปลายยุค 90 ... อายุน้อยกว่า Java, Python และ Ruby) แต่ฉันคิดว่าฉันจะออกไปเล็กน้อย

ML เริ่มย้อนกลับไปในปี 1973 OCaml เริ่มต้นในปี 1996
ocodo

15

ชุมชน OCaml ล้มเหลวในการพัฒนาห้องสมุดมาตรฐานขนาดใหญ่และน่าเชื่อถือ มีหลายครั้งที่จะแก้ปัญหา แต่ลองดู Python หรือ Ruby เพื่อดูว่ามีอะไรขาดหายไป OCaml เป็นภาษาที่ยอดเยี่ยมหากคุณต้องการแก้ปัญหาอัลกอริทึมที่ไม่ต้องพึ่งพาการโต้ตอบกับโมดูลมาตรฐานขั้นสูงเช่น XML, การสร้างเครือข่าย, การคำนวณข้อมูลและอื่น ๆ ซึ่งคุณไม่ต้องการใช้ตัวเอง

ฉันเชื่อว่าส่วนหนึ่งของปัญหาคือโมดูลถูกแมปกับไฟล์โดย OCaml: แนวคิดทั้งหมด * .ml ไฟล์อาศัยอยู่ในพื้นที่ชื่อเดียวกันและไดเรกทอรีไม่มีความหมาย สิ่งนี้ทำให้ยากสำหรับชุมชนที่จะพัฒนาห้องสมุด หากคอมไพเลอร์จะจับคู่ลำดับชั้นไดเรกทอรีลงในลำดับชั้นโมดูลฉันจะเห็นโอกาสที่ดีกว่าที่ห้องสมุดมาตรฐานจะวิวัฒนาการ อย่างไรก็ตามสิ่งนี้จะต้องใช้ความพยายามอย่างมากจากผู้พัฒนาคอมไพเลอร์หลัก (ฉันตระหนักถึงโมดูลการบรรจุ แต่ฉันคิดว่านี่เป็น kludge)

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


จริงๆจุดดี
CND

11

อาจเป็นเพราะมีคนจำนวนมากเกินไปที่ได้รับการสอน ML ซึ่งเป็นส่วนหนึ่งของการแนะนำเกี่ยวกับทฤษฎีที่แปลกและสับสนเกี่ยวกับประเภท นั่นคือสิ่งที่เกิดขึ้นกับฉัน

ฉันแสดง ML และ Smalltalk ในเวลาเดียวกัน Smalltalk ดูเจ๋งมากและเป็นที่เข้าใจได้ในทันทีว่า OO นั้นเป็นอย่างไรและคุณสามารถสร้างสิ่งที่สวยงามและโต้ตอบได้ในสภาพแวดล้อมนี้ได้อย่างไร ML เป็นเรื่องเกี่ยวกับคณิตศาสตร์เชิงนามธรรมที่ดูเหมือนจะไม่เกี่ยวข้องกับสิ่งที่ฉันต้องการจะทำ และต่างจาก C ไม่ได้สัญญาว่าจะให้ฉันเขียนเกมเร็ว ๆ บนไมโคร 16 บิต

แน่นอนว่านี่เป็นเรื่องที่ไม่ยุติธรรมและเป็นอัตวิสัย แต่นั่นน่าจะเป็นเรื่องจริงสำหรับคนส่วนใหญ่

วันนี้ฉันเดาว่าคำถามจะเป็น: ตอนนี้ฉันรู้สึกว่าฉันจำเป็นต้องรู้สิ่งที่แปลกและสับสนในเชิงทฤษฎีเกี่ยวกับประเภททำไมฉันจะเลือก ML มากกว่า Haskell หรือ Erlang?


คุณอาจเลือก Haskell มากกว่า ML เพราะ Haskell นั้นในหลาย ๆ ทางแค่ปรับปรุง ML ทำไมคุณถึงเลือก Erlang มากกว่าอย่างใดอย่างหนึ่งฉันไม่แน่ใจ: Erlang ไม่ได้ถูกพิมพ์แบบคงที่และสำหรับฉันหลังจากประสบการณ์ที่น่าผิดหวังกับมันฉันจะรับ ML ไปทุกวัน

ฉันได้รับการสอน ML มาตรฐานในปี 1996 ที่มหาวิทยาลัยเคมบริดจ์และไม่ชอบจริง ๆ ส่วนหนึ่งเพราะตัวอย่างเป็นวิทยาการคอมพิวเตอร์เชิงทฤษฎีทั้งหมด (และฉันเป็นนักฟิสิกส์) และเนื่องจากการใช้งานของมันดูด (เมื่อฉันบ่นพวกเขาให้ 100kLOC ของ ML ที่ไม่ได้รวบรวมและบอกให้ฉันแก้ไขด้วยตัวเอง) ฉันเลือก OCaml ขึ้นหลังจากปริญญาเอกของฉันและพบว่ามันใช้งานได้จริงมากขึ้น สำหรับ ML vs Haskell / Erlang นั้นขึ้นอยู่กับ ML OCaml เห็นได้ชัดว่ามีคุณสมบัติมากมายที่ Haskell และ Erlang ขาด ยิ่งไปกว่านั้นคุณสมบัติเหล่านั้นกลายเป็นสิ่งจำเป็นในการปฏิบัติ
Jon Harrop

9

ฉันเชื่อว่าปัญหาหลักคือการขาดห้องสมุดมาตรฐานที่แท้จริง ดังนั้นจึงมีโครงการOCaml Batteries รวมอยู่ซึ่งคาดว่าจะปรับปรุงสถานการณ์ได้เป็นอย่างดี มันควรจะเข้าสู่เฟสเบต้าภายในสองสามวันดังนั้นคุณจะต้องถามคำถามอีกครั้งในหนึ่งปีหรือมากกว่านั้น


10
สองปีต่อมา OCaml ดูเหมือนจะไม่เป็นที่นิยมมากขึ้น

5
สี่ปีต่อมา OCaml ดูไม่เป็นที่นิยมมากขึ้น
Camilo Martin

8

ฉันยอมรับว่าการสนับสนุน Windows ที่แย่เส้นโค้งการเรียนรู้ที่สูงชันและไลบรารี่มาตรฐานที่บางเบาทำให้ OCaml ได้รับความสนใจในอดีต แต่ฉันจะเพิ่มว่ามีข้อมูลการสอนที่ไม่เพียงพอ (เช่นหนังสือ) เกี่ยวกับ OCaml เมื่อเทียบกับภาษากระแสหลักเช่น Java

นอกจากนี้ผู้คนที่รู้จักภาษาอย่าง OCaml นั้นมีความแตกต่างกันอย่างมาก ในบรรดาโปรแกรมเมอร์เว็บอาจมี 1 ใน 1,000 คนที่เคยได้ยินชื่อ OCaml ในบรรดาคนที่ทำการคำนวณทางวิทยาศาสตร์ที่มหาวิทยาลัยเคมบริดจ์ประมาณ 90% ของคนที่ฉันรู้จักรู้อย่างคล่องแคล่วใน OCaml แน่นอนฉันเป็นคนสุดท้ายในหมู่เพื่อน ๆ ของฉันที่จะเรียนรู้ OCaml เรายังใช้ OCaml บนซูเปอร์คอมพิวเตอร์ CPU 256 ตัวของเรา ...

ฉันควรพูดถึงว่าปัญหาเหล่านี้กำลังได้รับการแก้ไขอย่างรวดเร็ว OCaml ได้คิดค้นนวัตกรรมใหม่สำหรับการเขียนโปรแกรมเว็บด้วยโครงการอย่าง Ocsigen และมีเรื่องราวความสำเร็จทางอุตสาหกรรมที่สำคัญอย่างน้อยสองเรื่องในบริบทนั้น มีหนังสือใหม่อีกเล่มเกี่ยวกับ OCaml ที่ตอนนี้ ชุมชนกำลังร่วมมือกันในห้องสมุดมาตรฐานที่ครอบคลุมที่เรียกว่า "แบตเตอรี่รวม" ที่เพิ่งเข้าสู่รุ่นเบต้าและดูยอดเยี่ยม OCaml เวอร์ชั่นที่เป็นมิตรกับมัลติคอร์กำลังจะเปิดตัว เวอร์ชั่นล่าสุดของ OCaml ยังรวมถึงคุณสมบัติใหม่ที่ยอดเยี่ยมมากมายเช่นรูปแบบขี้เกียจและไลบรารี่ OCaml ไลบรารี่ที่โหลดแบบไดนามิก


"เส้นโค้งการเรียนรู้ที่ชัน": ใช้เวลานานแค่ไหนกับมาสเตอร์ C ++ ที่เริ่มจาก 0 ฉันคิดว่าถ้า OCaml เป็นที่นิยมมากกว่าคนอื่น ๆ จะพบว่าเป็นเรื่องปกติที่จะพยายามเรียนรู้
Giorgio

@Giorgio "ฉันคิดว่าถ้า OCaml เป็นที่นิยมมากขึ้นผู้คนจำนวนมากจะพบว่าเป็นเรื่องปกติที่จะพยายามเรียนรู้" ฉันคิดว่าผู้คนเรียนรู้ Python และ Ruby มากกว่าเพราะพวกเขาเรียนรู้ได้ง่ายกว่า
Jon Harrop

แน่นอนว่าคนเราชอบที่จะเรียนรู้ภาษาที่ง่ายกว่า (btw ฉันไม่คิดว่า Ocaml จะซับซ้อนกว่า Ruby และซับซ้อนน้อยกว่า C ++ แน่นอน) ประเด็นคือเมื่อภาษาเป็นกระแสหลัก / เป็นที่นิยมความจริงที่ว่ามันซับซ้อนคือ ไม่เห็นว่าเป็นปัญหาใหญ่อีกต่อไป OCaml ไม่เป็นที่นิยมและทำให้ผู้คนไม่คิดว่ามันคุ้มค่าที่จะเรียนรู้มัน
Giorgio

ฉันเห็นด้วยยกเว้นว่าฉันได้รับรู้ถึงความซับซ้อนของ C ++ ที่จะเป็นปัญหาที่สำคัญอย่างแน่นอนและฉันคิดว่าคนส่วนใหญ่ที่ฉันพบเจอก็เชื่อเช่นกัน โดยเฉพาะอย่างยิ่งความยากของการใช้รหัส C ++ โดยทางโปรแกรมนั้นเป็นการสูญเสียโอกาสอย่างมาก
Jon Harrop

ฉันพบคำแถลงของคุณ "ในบรรดาคนที่ทำการคำนวณทางวิทยาศาสตร์ที่มหาวิทยาลัยเคมบริดจ์ประมาณ 90% ของคนที่ฉันรู้จักรู้อย่างคล่องแคล่วใน OCaml" น่าแปลกใจมาก ในฐานะนักฟิสิกส์ที่ทำแบบจำลองมากมายฉันเห็นเพื่อนร่วมงานใช้ภาษาต่าง ๆ มากมาย: C, C ++, Fortran, Java, Python, Perl, MATLAB, Mathematica, R โดยทั่วไปและอีกไม่กี่คนเช่นกัน แต่ฉันไม่เคยเห็นใครใช้ OCaml ผมได้ยินคนพูดคุยเกี่ยวกับอาจจะเรียนรู้มัน แต่ผมไม่เคยเห็นใครใช้มัน การค้นหาบน scicomp.stackexchange.com จะไม่ทำอะไรเลย การสนับสนุนของคุณสำหรับการใช้ ML ทำ ...
Szabolcs

6

ฉันคิดว่าส่วนหนึ่งของปัญหาคือการเขียนโปรแกรมฟังก์ชั่นไม่ใช่วิธีที่เป็นธรรมชาติสำหรับคนส่วนใหญ่ที่จะคิด (และฉันพูดแบบนี้ในฐานะคนที่มีความสนใจและชื่นชมการเขียนโปรแกรมเชิงฟังก์ชั่น) นี่คือความจริงที่ว่าโปรแกรมเมอร์ส่วนใหญ่ในปัจจุบันเริ่มเรียนรู้การเขียนโปรแกรมขั้นตอน (ภาษา OOP ที่ได้รับความนิยมส่วนใหญ่ยังคงเป็นขั้นตอนสำคัญ) และภาษาที่ใช้งานได้ยากที่จะปรับให้เข้ากับการเริ่มต้น

เมื่อฉันเริ่มเรียนมหาวิทยาลัยฉันรู้แล้วว่ามีภาษา BASIC, C ++ และ Java อยู่พอสมควรรวมถึงภาษาแอสเซมบลี Pascal และ x86 เล็กน้อย ฉันอยู่ไกลจากผู้เชี่ยวชาญ แต่ได้ข้อสรุป (ไร้เดียงสาเล็กน้อย) ว่าภาษาการเขียนโปรแกรมทั้งหมดนั้นเหมือนกันโดยมีไวยากรณ์แตกต่างกันเล็กน้อย การแนะนำหลักสูตรการเขียนโปรแกรมของเราใช้ ML ซึ่งทำให้ฉันไม่เชื่อในความคิดนั้นอย่างรวดเร็ว ฉันมีปัญหาในการทำให้หัวของฉันรอบ ML ในขั้นตอนของการเขียนโปรแกรมอาชีพของฉันและไม่เห็นจุดของการเขียนโปรแกรมการทำงาน ฉันคิดว่ามันต้องใช้ประสบการณ์เพิ่มอีกเล็กน้อยกับปัญหาของการเขียนโปรแกรมตามขั้นตอนเพื่อชื่นชมประโยชน์ของวิธีการใช้งานจริง ๆ

ผู้สอน ML ของเรามักอ้างว่าการแสดงปัญหาซ้ำ ๆ นั้นเป็นเรื่อง 'ธรรมดา' และง่ายกว่าการใช้ลูปหรือแนวคิดขั้นตอนอื่น ๆ ฉันไม่เคยเชื่อมั่นในข้อเรียกร้องนั้นและยังไม่ซื้อ ฟังก์ชั่นวนซ้ำอาจให้วิธีแก้ปัญหาที่หรูหราและรัดกุมเป็นพิเศษ แต่ฉันก็ยังพบว่ามันเป็นวิธีที่ผิดธรรมชาติในการคิดเกี่ยวกับปัญหา บางทีถ้าคุณมีภูมิหลังทางคณิตศาสตร์ที่แข็งแกร่งมาก ๆ มันก็ดูเป็นธรรมชาติ แต่ฉันไม่คิดว่ามันจะง่ายสำหรับคนส่วนใหญ่ที่จะคิดซ้ำ ด้วยความเป็นศูนย์กลางของฟังก์ชั่นวนซ้ำในกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชั่นฉันคิดว่านี่อาจเป็นเหตุผลสำหรับความนิยมน้อยลงของภาษาที่ใช้งานได้

นอกจากนี้ยังมีผลตอบรับต่อความนิยมทางภาษา เมื่อฉันเริ่มเขียนโปรแกรมฉันต้องการทราบวิธีการตั้งโปรแกรมเอฟเฟกต์กราฟิกและเกม หลังจากเรียนรู้พื้นฐานของ BBC เบื้องต้นและ QBASIC หลังจากนั้นฉันได้ตรวจสอบภาษาที่ใช้บ่อยที่สุดโดยฉากสาธิตและโปรแกรมเมอร์เกม ทุกวันนี้โปรแกรมเมอร์ใหม่บางคนอาจต้องการทราบวิธีการผลิตเว็บแอปพลิเคชั่นและจะมีความสนใจต่อการเรียนรู้ PHP, Ruby หรือ C # มีพื้นที่แอปพลิเคชั่นน้อยมากสำหรับโปรแกรมเมอร์มือใหม่ที่เริ่มต้นด้วยตนเองซึ่งคำตอบของ 'ภาษาที่ดีที่สุดในการเรียนรู้การเขียนโปรแกรมเช่น X' จะเป็น 'Ocaml'

เหตุผลเชิงปฏิบัติหลายประการที่ได้รับจากความนิยมที่ จำกัด ของ Ocaml (ขาดห้องสมุดที่เป็นผู้ใหญ่, ผู้ดีบั๊ก, IDEs และอื่น ๆ ) ได้รับการแก้ไขโดยการสนับสนุนอย่างเป็นทางการของ Microsoft สำหรับ F # ในฐานะภาษา NET. มันจะน่าสนใจที่จะดูว่า F # ช่วยเพิ่มระดับความนิยมสำหรับการเขียนโปรแกรมการทำงานหรือไม่


ความสัมพันธ์ที่เกิดซ้ำเป็นหนึ่งในสิ่งที่มักจะทำแผนที่ให้ดีกับ FP
Jon Harrop

3
"การเขียนโปรแกรมเชิงฟังก์ชั่นไม่ใช่วิธีที่เป็นธรรมชาติสำหรับคนส่วนใหญ่ที่จะคิด": การเขียนโปรแกรมที่มีโครงสร้างไม่ใช่วิธีที่เป็นธรรมชาติสำหรับฉันที่จะคิดตราบเท่าที่ฉันตั้งโปรแกรมไว้ในเบสิค จากนั้นฉันย้ายไป Pascal การเขียนโปรแกรมเชิงวัตถุไม่ใช่วิธีที่เป็นธรรมชาติสำหรับฉันที่จะคิดตราบเท่าที่ฉันตั้งโปรแกรมใน Pascal และ C จากนั้นฉันย้ายไปที่ C ++ และ Java การเขียนโปรแกรมเชิงฟังก์ชั่นดูเหมือนแปลกสำหรับฉันจนกระทั่งฉันเริ่มเรียนรู้ Haskell และภาษา FP อื่น ๆ และตอนนี้ C ++ ดูแปลก ๆ สำหรับงานบางอย่าง :-)
Giorgio

6

ฉันเชื่อว่าแก่นของปัญหาคือการเมือง นักพัฒนา Ocaml ส่วนใหญ่ให้ความสนใจในการวิจัยและไม่มีทรัพยากรในการจัดหาและบำรุงรักษาไลบรารีที่หลากหลาย อย่างไรก็ตามพวกเขายังไม่เต็มใจที่จะปล่อยการควบคุมผลิตภัณฑ์ให้กับชุมชนที่มีทรัพยากรเหล่านี้ผลที่ได้คือความพยายามหลายครั้งในการแก้ปัญหานี้ขึ้นอยู่กับความร่วมมือที่ไม่มีอยู่จริงและการระดมทุนของห้องสมุดบุคคลที่สาม แบตเตอรี่จะล้มเหลวด้วยเหตุผลเดียวกันเว้นแต่ผู้พัฒนา Ocaml จะเปลี่ยนทัศนคติ

ฉันใช้ Ocaml เพื่อพัฒนาผลิตภัณฑ์ของฉันและฉันมีกฎง่าย ๆ : ลดการพึ่งพารหัสบุคคลที่สามให้น้อยที่สุด เมื่อรายการของบุคคลที่สามมีประโยชน์หากเป็นไปได้ให้รวมรหัสต้นฉบับโดยตรงในแพ็คเกจ ตัวอย่างเช่น OCS Scheme และ Dypgen เป็นส่วนสำคัญของตัวแยกวิเคราะห์ Felix ดังนั้นมันจึงถูกคัดลอกไปยังแหล่งข้อมูลของเราดังนั้นเราจึงสามารถควบคุมมันได้ การควบคุมค่อนข้างลวงตา (ตั้งแต่ Dypgen อย่างน้อยก็ซับซ้อนดังนั้นจึงไม่น่าที่เราจะสามารถรักษามันได้ แต่อย่างน้อยเราก็มีสำเนาที่เราคิดว่าใช้ได้ :)

ฉันจะไม่ใช้แบตเตอรี่เนื่องจากใบอนุญาตมีข้อ จำกัด ดังนั้นฉันจึงไม่สามารถคัดลอกแหล่งที่มาได้และฉันไม่เชื่อในความไวในระยะยาวของผลิตภัณฑ์นี้ว่าเป็นผลิตภัณฑ์แบบสแตนด์อโลน: วิธีเดียวที่ฉันสามารถใช้งานได้คือถ้าเป็น รวมเข้ากับการกระจายมาตรฐานของ Ocaml โดยตรง

ในโลก C ++ ฉันอาจพิจารณาใช้ Boost: แม้ว่าจะเป็นห้องสมุดบุคคลที่สามที่ไม่ได้เป็นส่วนหนึ่งของ Standard แต่ก็มีการสนับสนุนจากชุมชนที่หนักหน่วง แนวคิดที่ได้รับการพัฒนาและทดสอบใน Boost เป็นวิธีปฏิบัติที่มีอยู่ซึ่งสามารถเป็นมาตรฐานได้และกระบวนการมาตรฐานนั้นเปิดกว้างพอที่จะให้ชุมชนมีส่วนร่วม

Ocaml ได้รับความนิยมอย่างที่เป็นจริงเพราะมันเป็นผลิตภัณฑ์ที่ดี แต่ไม่เพียงพอที่จะทำให้มันกลายเป็นภาษากระแสหลัก Java เป็นสิ่งที่หยาบคายเป็นที่นิยมในหมู่นักการตลาดและการพัฒนาห้องสมุดนับพันล้านดอลลาร์ แต่ในท้ายที่สุดจะต้องมีการเผยแพร่สู่ชุมชนเพื่อความอยู่รอด


5

ฉันสนุกกับการเขียนโปรแกรมทั้งใน ML และ C สำหรับโครงการที่หลากหลาย สิ่งที่ทำให้ฉันไม่สามารถใช้ ML ในโครงการฝังตัว (ซึ่งส่วนใหญ่มีข้อ จำกัด ตามเวลาจริงและต้องการการตรวจสอบ) คือการรวบรวมขยะ

มีการวิจัยเกี่ยวกับการจัดการหน่วยความจำกับภูมิภาค (ดูMLKit ) แต่ความซับซ้อนของการใช้งานและการฝึกอบรมที่จำเป็นในการใช้งานอย่างถูกต้อง (และความเสี่ยงของผู้ดูแล) เป็นอุปสรรคต่อการใช้งาน


3

IMHO ฉันคิดว่าปัญหาใหญ่ของ OCaml ไม่ใช่ภาษา (ดีมาก) แต่ในคนที่พัฒนามันและด้วยเหตุนี้ใบอนุญาตของเขา:

http://caml.inria.fr/ocaml/license.en.html

พวกเขาใช้ใบอนุญาต Q Public สำหรับคอมไพเลอร์! ใช่ใบอนุญาต ex-Trolltech ใช้สำหรับห้องสมุด Qt! ลืมเกี่ยวกับการมีส่วนร่วมใด ๆ กับใบอนุญาตดังกล่าว

หากคุณกำลังตรวจสอบ Language Shootout ( http://shootout.alioth.debian.org/ ) ประมาณ 7-8 ปีที่แล้ว OCaml อยู่ด้านหลัง C และ C ++ สำหรับความเร็วในการดำเนินการ ในขณะที่ภาษาอื่น ๆ (เช่น Haskell) มีคอมไพเลอร์ที่ดีกว่า (เนื่องจากเป็นชุมชนที่แตกต่างกันฉันคิดว่า) และตอนนี้ความเร็ว OCaml ของการประหารชีวิตก็ไม่ได้ยอดเยี่ยมเหมือนในอดีต

ไม่นานฉันจะไม่ใช้ OCaml เพราะฉันไม่เห็นว่ามันจะไปได้ดีกว่านี้หากไม่มีแฮ็กเกอร์ที่เก่งจริงๆที่สร้างคอมไพเลอร์ OCaml ที่มีใบอนุญาตโอเพ่นซอร์สจริง ๆ และชุมชนที่มีพฤติกรรมโอเพ่นซอร์สจริง ๆ


มีการพูดคุยกันในรายการส่งเมลเมื่อไม่นานมานี้เกี่ยวกับประสิทธิภาพที่ไม่ดีของ OCaml ใน Language Shootout ภาษา C ที่น่าประหลาดใจนั้นได้รับอนุญาตให้ใช้ตัวจัดสรรหน่วยความจำที่ไม่ได้มาตรฐานในขณะที่ภาษาที่รวบรวมขยะไม่ได้รับอนุญาตให้ปรับแต่งตัวรวบรวมขยะของพวกเขาเอง ... และการตั้งค่าเริ่มต้นของ IIRC OCaml นั้น
bltxd

3

ถ้ามันเกี่ยวกับเงินอย่างที่ @jrockway พูดว่าเราจะดูว่า F # จะได้รับความนิยมเช่น java หรือ C # หรือไม่

สำหรับฉันฉันคิดว่าผู้พัฒนาไม่รู้สึกสะดวกสบายกับวิธีการทำงานในการทำสิ่งต่าง ๆ (มาจากเซสชัน F # ในงาน Techdays 2009 ที่มีประมาณ 10 คนกล่าวว่าพวกเขารู้จักการเขียนโปรแกรมที่ใช้งานได้ในเกือบ 100 คน)

ฉันเริ่ม OCAML ในปีนี้ฉันไม่เคยยุ่งกับการเขียนโปรแกรมใช้งาน แต่ตอนนี้ฉันเรียนรู้สิ่งใหม่ ๆ จาก OCAML เสมอและวิธีการทำงานเพื่อแก้ไขปัญหา (แต่ฉันไม่สามารถพูดได้ว่าฉันจะเลิก C # เพื่อใช้ OCAML :))


10 ปีที่แล้วที่จะเป็นเหมือน 1 ใน 100 คนที่รู้จัก FP ;-)
Jon Harrop

2

F # อาจจะกลายเป็นที่นิยม


2

มันไม่ได้ช่วยให้ c-> ocaml เป็นการเปลี่ยนแปลงทางจิตใจที่ใหญ่กว่า c-> lisp ฉันเคยพิจารณาบางครั้งและพบว่าค่าใช้จ่าย / ผลประโยชน์ไม่ได้อยู่ที่นั่นสำหรับฉันดังนั้นให้ตั้งไว้อีกครั้ง มันไม่ใช่สิ่งก่อสร้างที่ทำให้มันดูแข็งพวกที่ดูเรียบร้อยจริงๆ มันพยายามเรียนรู้ความหมายที่แตกต่างอย่างสิ้นเชิงสำหรับ '!' อย่างน้อยกระเพื่อมดูแตกต่างกันมากจนง่ายต่อการหลีกเลี่ยงการตีความชิ้นเล็ก ๆ ของมันอย่างผิด ๆ


2

หากคุณต้องการใช้ภาษาในระบบฝังตัวตามเวลาจริงคุณต้องมีพอยน์เตอร์และคุณไม่สามารถจ่าย GC ได้


1

ฉันคิดว่าเหตุผลหลักคือนักพัฒนาน้อยเกินไปรู้จัก OCaml

และเมื่อพูดคุยกับผู้พัฒนารายอื่น (ผู้ที่เคยได้ยินบางสิ่งเกี่ยวกับ Ocaml) ฉันมักจะได้รับความประทับใจที่พวกเขาคิดว่า OCaml เป็นภาษา "การศึกษาเท่านั้น" ... เศร้า แต่จริง


ฉันเชื่อว่าขณะนี้มี 2 บริษัท ที่มีนักพัฒนา OCaml มากกว่า 20 คน (Jane St. และ Citrix)
Jon Harrop

3
ว้าว! ทั้งสอง บริษัท ? :)
Yttrill

0

ฉันชอบ O'caml มาก ... ฉันได้ใช้สิ่งต่าง ๆ มากมายในการรวบรวมคอมไพเลอร์ล่ามระบบสื่อสารกับ C ...

เมื่อฉันเรียนรู้ปัญหาที่สำคัญคือข้อความแสดงข้อผิดพลาดไม่ชัดเจน ... ดังนั้นตัวอย่างเช่นตอนเริ่มต้นฉันไม่แน่ใจจริงๆว่าจะใส่ ';' เมื่อใด และนั่นเป็นเรื่องยากที่จะหาว่าจริง ๆ แล้ว; ถูกวางผิดที่ ...

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