Skip to main content

Ocaml Trading ระบบ


ฉันสมบูรณ์ใหม่โดเมนการค้า Algorithmic ฉันเพิ่งเสร็จหลักสูตรที่ Ocaml ตามและอ่านเกี่ยวกับ Jane Street แน่นอนพวกเขาเป็น บริษัท ขนาดใหญ่ที่มีจำนวนมากทรัพยากร แต่มันเป็นไปได้ที่จะใช้ Ocaml สำหรับการซื้อขาย algorithmic เวลาขนาดเล็ก . ฉันรู้ว่าอาจดูเหมือนคำถามโง่ แต่จากสิ่งที่ฉัน ve พบมี aren t API การค้าใด ๆ สำหรับ Ocaml นี้จะหมายถึงหนึ่งจะต้องเขียนตั้งแต่เริ่มต้นถูกต้องเข้าใจทุกคนจะชื่นชมอย่างมากเช่นฉันกล่าวว่าฉัน noob สมบูรณ์ domain. asked 19 เมษายนนี้ 13 ที่ 15 12. ปิดเป็นปิดหัวข้อโดย chrisaycock martin clayton Luc M Dan Esparza ปีเตอร์ O เมษายน 19 13 ที่ 17 54. คำถามเกี่ยวกับ Stack Overflow คาดว่าจะเกี่ยวข้องกับการเขียนโปรแกรมภายในขอบเขตที่กำหนดไว้ โดยชุมชนพิจารณาแก้ไขคำถามหรือแสดงความคิดเห็นเพื่อปรับปรุงหากคุณเชื่อว่าคำถามสามารถถูกปรับใหม่ให้พอดีกับขอบเขตอ่านเพิ่มเติมเกี่ยวกับการเปิดคำถามใหม่ที่นี่หากคำถามนี้สามารถปรับเปลี่ยนให้เหมาะกับกฎใน ศูนย์ช่วยเหลือโปรดแก้ไขคำถามนี้ OCAM เป็นตัวแปรที่นิยมมากที่สุดของภาษา Caml จากมุมมองของภาษาจะขยายภาษา Caml หลักด้วยเลเยอร์เชิงวัตถุที่เต็มเปี่ยมรวมทั้งระบบโมดูลที่มีประสิทธิภาพซึ่งเชื่อมต่อโดย เสียง, ระบบ polymorphic type ซึ่งมีการอนุมานแบบต่างๆระบบ OCaml เป็นภาษาที่ใช้งานด้านความแข็งแรงของอุตสาหกรรมซึ่งประกอบด้วยตัวประมวลผลโอมาโนโพลสำหรับตัวประมวลผลระดับสูง IA32, PowerPC, AMD64, Alpha, Sparc, Mips, IA64, HPPA, StrongArm รวมถึง ocamlc ตัวประมวลผล bytecode และ ocaml แบบอ่านอย่างต่อเนื่องเพื่อการพัฒนาและพกพาได้อย่างรวดเร็วการกระจาย OCaml ประกอบด้วยไลบรารีมาตรฐานแบบครบวงจร debugger ocamldebug เครื่อง ocamllex lexer ocamllex และเครื่องวิเคราะห์ ocamlyacc ของเครื่อง parser pre - โปรเซสเซอร์สวยเครื่องพิมพ์ camlp4 และเครื่องกำเนิดไฟฟ้าเอกสาร ocamldoc ระบบ OCaml เป็นซอฟต์แวร์โอเพนซอร์สคอมไพเลอร์มีการกระจายภายใต้เงื่อนไขของใบอนุญาตสาธารณะ Q และฉัน ts ไลบรารีอยู่ภายใต้ LGPL โปรดอ่านเอกสารสิทธิ์การใช้งานสำหรับรายละเอียดเพิ่มเติมใบอนุญาตแบบ BSD นอกจากนี้ยังมีค่าธรรมเนียมผ่าน Caml Consortium รุ่นล่าสุดสามารถดาวน์โหลดได้อย่างอิสระในเว็บไซต์นี้และคู่มือการใช้งานของผู้ใช้ก็ยังมี on-line การปรับปรุงล่าสุดของหน้านี้ 2004-05-01 แผนผังเว็บไซต์ค้นหา INRIA 1995-2013 สงวนลิขสิทธิ์ FORMAL สำหรับมวลชนทำไมภาษาถัดไปที่คุณเรียนรู้ควรจะทำงาน Yaron Minsky, Jane Street บางครั้งการใช้งานที่สง่างามคือ ฟังก์ชันไม่ใช่แบบไม่ใช่คลาสไม่ใช่เฟรมเพียงแค่ฟังก์ชัน - John Carmack การเขียนโปรแกรมเชิงฟังก์ชันเป็นแนวคิดเก่า ๆ ที่มีประวัติอันโดดเด่น Lisp ซึ่งเป็นภาษาที่ใช้งานได้รับแรงบันดาลใจจากแคลคูลัส lambda ของ Alonzo Church ซึ่งเป็นหนึ่งในภาษาโปรแกรมแรกที่พัฒนาขึ้นที่ รุ่งอรุณของยุคคอมพิวเตอร์คอมพิวเตอร์ทำงานพิมพ์แบบคงที่เช่น OCaml และ Haskell เป็นรุ่นใหม่ แต่รากของพวกเขาไปลึก ML จากที่พวกเขาลงมาวันที่กลับไปทำงานโดยโรบินมิลเนอร์ในช่วงต้นยุค 70 ที่เกี่ยวข้องกับผู้บุกเบิก ing ลอจิก LCF สำหรับฟังก์ชันการคำนวณที่เป็นไปได้ฟังก์ชันเชิงตรรกะการเขียนโปรแกรมเชิงฟังก์ชันยังมีอิทธิพลมหาศาลความก้าวหน้าขั้นพื้นฐานหลายประการในการออกแบบภาษาเขียนโปรแกรมจากการรวบรวมข้อมูลขยะไปจนถึงการอนุมานแบบทั่วไปได้ออกมาจากโลกของการทำงานและเป็นเรื่องธรรมดาที่มีมานานหลายสิบปีก่อนที่พวกเขาจะทำ ภาษาที่ใช้ในการทำงานของภาษาไม่ได้ทำให้มันเป็นไปตามกระแสหลักพวกเขามาใกล้กันมากที่สุดในสมัยของ Symbolics และเครื่อง Lisp แต่วันนี้ดูเหมือนค่อนข้างจะห่างไกลแม้จะมีการฟื้นตัวของโปรแกรมการทำงานในช่วงไม่กี่ปีที่ผ่านมา เทคโนโลยีที่พูดถึงมากกว่าที่ใช้เป็นที่ดึงดูดที่จะสรุปจากบันทึกนี้ว่าภาษาที่ใช้งานไม่ได้มีสิ่งที่พวกเขาอาจจะมีเหตุผลสำหรับการใช้งาน จำกัด บางและมีแนวคิดที่เป็นประโยชน์ที่จะนำเข้ามาในภาษาอื่น ๆ แต่ภาษาที่จำเป็นและเชิงวัตถุ เป็นเพียงที่ดีกว่าเหมาะกับงานวิศวกรรมซอฟต์แวร์ส่วนใหญ่การลดความเป็นไปได้ข้อสรุปนี้ n คือผิดฉันได้ใช้ OCaml ในสภาพแวดล้อมการผลิตมาเกือบทศวรรษและในช่วงเวลาที่ฉันได้กลายเป็นเชื่อว่าภาษาที่ใช้งานและโดยเฉพาะอย่างยิ่งคนที่พิมพ์อย่างเช่น OCaml และ Haskell เป็นเครื่องมือในการเขียนโปรแกรมทั่วไปที่ดีกว่า. กว่าภาษาหลักใด ๆ ที่มีอยู่พวกเขายังมีช่วงมหาศาลเหมาะสำหรับงานเขียนสคริปต์ขนาดเล็กรวมทั้งแอพพลิเคชันสมรรถนะสูงที่มีขนาดใหญ่พวกเขาไม่ใช่เครื่องมือที่เหมาะสมสำหรับงานทุกงาน แต่พวกเขามาใกล้ที่น่าแปลกใจย้ายไปที่ OCaml ประสบการณ์การเขียนโปรแกรมส่วนใหญ่ของฉันใน OCaml มาจากการทำงานของฉันที่ Jane Street ซึ่งเป็น บริษัท ทางการเงินที่ก่อตั้งขึ้นในปี 2000 เมื่อเก้าสิบปีก่อนไม่มีใครที่ Jane Street เคยได้ยิน OCaml Today Jane Street เป็นผู้ใช้อุตสาหกรรมที่ใหญ่ที่สุดในภาษานี้ ล้านบรรทัดของรหัส OCaml และ 65 ที่ล่าสุดนับพนักงานที่ใช้ภาษาในชีวิตประจำวันอาจเป็นวิธีที่ดีที่สุดในการอธิบายสิ่งที่ทำให้ OCaml เช่นเครื่องมือที่มีประสิทธิภาพคือการเริ่มต้นด้วยการอธิบายว่าทำไมและทำไม t การเปลี่ยนแปลงหมวกเกิดขึ้นเพื่อให้เข้าใจว่าคุณต้องเข้าใจอะไรบางอย่างเกี่ยวกับสิ่งที่ Jane Street ทำธุรกิจหลักของ Jane Street คือการให้สภาพคล่องในตลาดอิเล็กทรอนิกส์ของโลกโดยหลักแล้วพ่อค้าคนกลางจะสั่งซื้อหลักทรัพย์ต่างๆอย่างต่อเนื่อง การแลกเปลี่ยนที่แตกต่างกันคำสั่งแต่ละคำเป็นการแสดงออกถึงความเต็มใจที่จะซื้อหรือขายการรักษาความปลอดภัยที่กำหนดในราคาที่กำหนดและเรียกรวมกันว่าเป็นการโฆษณาไปยังตลาดของบริการของ Jane Street ผ่านคำสั่งซื้อเหล่านี้ บริษัท ซื้อจากผู้ที่ต้องการ ขายและขายให้กับผู้ที่ต้องการซื้อสร้างรายได้จากช่องว่างระหว่างราคาซื้อและราคาตลอดเวลาที่มีการแข่งขันกันในราคากับผู้เล่นคนอื่น ๆ พยายามที่จะทำสิ่งเดียวกันการจัดหาสภาพคล่องทางอิเล็กทรอนิกส์เป็นเรื่องที่มีความรุนแรงทางเทคโนโลยีไม่เพียงเพราะ ทรัพยากรด้านคอมพิวเตอร์ที่ต้องใช้งานจำนวนมหาศาลจะต้องมีการบริโภควิเคราะห์และตอบสนองแบบเรียลไทม์ แต่ยังอยู่ในรูปของ ความซับซ้อนของการซื้อขายหลักทรัพย์ขององค์กรสามารถข้ามการแลกเปลี่ยนหลาย ๆ ระบบการกำกับดูแลความปลอดภัยชั้นเรียนและโซนเวลาการจัดการความซับซ้อนที่เกิดขึ้นนั้นเป็นงานที่ต้องเดือดร้อนซึ่งต้องใช้เงินลงทุนจำนวนมากในซอฟต์แวร์นี้เทคโนโลยีนี้มีความเสี่ยงไม่มีทางที่เร็วกว่าสำหรับ บริษัท การค้า ทำลายตัวเองมากกว่าการปรับใช้ซอฟต์แวร์เพื่อการซื้อขายที่ทำให้การตัดสินใจไม่ดีขึ้นไปเรื่อย ๆ ในวงที่แน่นหนาส่วนหนึ่งของปฏิกิริยา Jane Street ต่อความเสี่ยงทางเทคโนโลยีเหล่านี้คือการมุ่งเน้นที่การสร้างซอฟต์แวร์ที่สามารถเข้าใจซอฟต์แวร์ที่สามารถอ่านได้ง่าย รหัสที่ออกมาเป็นส่วนหนึ่งของแนวทางของ บริษัท ในการเสี่ยงต่อความเสี่ยงจากก่อนที่เราจะเขียนบรรทัดแรกของ OCaml Early ในคู่ค้าที่อาวุโสที่สุดคนหนึ่งซึ่งรวมถึงหนึ่งในผู้ก่อตั้งมุ่งมั่นที่จะอ่านโค้ดทุกบรรทัดที่เข้าสู่การซื้อขายหลัก ระบบก่อนที่ระบบเหล่านี้เดินเข้าไปในการผลิตนี่เป็นการลงทุนครั้งใหญ่อย่างมหาศาลและสะท้อนให้เห็นถึงระดับสูงของความกังวลเกี่ยวกับความเสี่ยงด้านเทคโนโลยีผมเริ่มต้น ed ที่ Jane Street ปีหลังจากที่ฉันเสร็จ Ph D ของฉันทำงานที่นั่นในขณะที่ทำโพสต์ doc งานของฉันที่ Jane Street มุ่งเน้นไปที่การวิเคราะห์ทางสถิติและการเพิ่มประสิทธิภาพของกลยุทธ์การซื้อขายและ OCaml เป็นเครื่องมือหลักที่ฉันใช้ในการรับ การวิเคราะห์ทำทำไม OCaml ฉันได้เรียนรู้ในโรงเรียน grad และตกหลุมรักกับภาษาแล้วและ OCaml คือการจับคู่ที่ดีสำหรับชนิดของงานสร้างต้นแบบอย่างรวดเร็วสูง performant นี้ยังเร็วและน้อยผิดพลาดได้ง่ายกว่าการเขียนโปรแกรมใน C, C, หรือ Java ฉันเชื่อมั่นว่า stint ของฉันที่ Jane Street จะสั้นและรหัสที่ฉันเขียนถูกโยนทั้งหมดออกไปดังนั้นฉันจึงเลือกที่จะเพิ่มผลผลิตของตัวเองโดยไม่ต้องกังวลเกี่ยวกับว่าคนอื่น ๆ สามารถใช้รหัสภายหลังหกเดือนและ 80,000 บรรทัดของรหัสภายหลังฉันตระหนักฉันผิดฉันเอาตำแหน่งเต็มเวลาที่ Jane Street และเร็ว ๆ นี้เริ่มต้นการจ้างงานเพื่อสร้างกลุ่มวิจัย there. At ขณะนี้ บริษัท ได้หล่อรอบสำหรับวิธีการใหม่ในการสร้างซอฟต์แวร์ระบบ ที่ขับเคลื่อน บริษัท เข้า ปีแรกของการเขียนหลักใน VBA และ C แท้จริงระบบการค้าหลักของตัวเองเป็นกระดาษคำนวณ Excel ที่มีการจัดการที่ดีของรหัส VBA ที่กำหนดเองนี้เป็นวิธีที่ดีที่จะได้รับและทำงานได้อย่างรวดเร็ว แต่ก็เป็นที่ชัดเจนตั้งแต่เริ่มต้นว่าเป็น ไม่ใช่แนวทางที่ยั่งยืนในปี 2003 Jane Street ได้เริ่มต้นเขียนระบบการซื้อขายหลักของ Java โดยการเขียนใหม่นี้ถูกละทิ้งไปในที่สุดส่วนหนึ่งเป็นเพราะรหัสผลลัพธ์เป็นเรื่องยากที่จะอ่านและเหตุผลที่ยากกว่าจริงกว่า VBA ที่ ถูกแทนที่ส่วนใหญ่ของเรื่องนี้คือความเป็นจริงของ Java แต่ก็ยิ่งกว่านั้นรหัส VBA ถูกเขียนขึ้นในรูปแบบสั้น ๆ ตรงไปตรงมาซึ่งค่อนข้างง่ายที่จะปฏิบัติตาม แต่อย่างใดเมื่อการเข้ารหัสใน Java เราสร้างรังของ เรียนที่ทำให้คนเกาหัวของพวกเขาเมื่อพวกเขาต้องการที่จะเข้าใจเพียงสิ่งที่ชิ้นส่วนของรหัสถูกจริงถูกเรียกเมื่อวิธีการที่เรียกว่ารหัสที่ทำให้การใช้งานหนักของการรับมรดกเป็นเรื่องยากโดยเฉพาะอย่างยิ่งที่จะคิดเกี่ยวกับในส่วนข eause ของวิธีการที่เป็ดมรดกภายใต้ขอบเขต abstraction ในปี 2005 ความรู้สึกที่ประสบความสำเร็จจากกลุ่มวิจัย Jane Street เริ่มต้นการเขียนใหม่ของระบบการค้าหลักของเวลานี้ใน OCaml ต้นแบบแรกเสร็จในสามเดือนและได้ขึ้น และการซื้อขายสามเดือนหลังจากนั้นการใช้ OCaml ใน บริษัท ได้ขยายเฉพาะตั้งแต่นั้นวันนี้จะใช้ในการแก้ปัญหาในทุกส่วนของ บริษัท จากการบัญชีเพื่อการบริหารระบบและความพยายามที่ยังคงเติบโตในปีล่าสุดการซื้อขาย ด้านข้างของ บริษัท ได้เพิ่มการใช้ภาษาและการฝึกอบรม OCaml เป็นส่วนหนึ่งของหลักสูตรมาตรฐานสำหรับการค้าใหม่ที่ได้รับการว่าจ้างโดยรวมแล้วการเปลี่ยนไปใช้ OCaml ประสบความสำเร็จอย่างมากส่งผลให้เทคโนโลยีที่แข็งแกร่งกว่าที่เราจะทำได้ สิ่งที่เกี่ยวกับภาษาที่ทำให้การทำงานเป็นอย่างดีนี่คือสรุปสั้น ๆ ของสิ่งที่ฉันรับรู้ว่าเป็นจุดแข็งที่สำคัญของ OCaml ข้อสงสัยประสบการณ์ของเรากับ OCaml ในด้านการวิจัยช่วยให้เราสามารถสร้างระบบ OCaml ที่มีขนาดเล็กง่ายและเข้าใจง่ายกว่าที่เราทำได้ในภาษาต่างๆเช่น Java หรือ C สำหรับองค์กรที่สามารถอ่านได้เป็นอย่างดีนี่เป็นชัยชนะที่ยิ่งใหญ่ การตรวจหาข้อผิดพลาดโปรแกรมเมอร์ที่ยังใหม่กับ OCaml มักจะรู้สึกหดหู่กับระดับที่ระบบพิมพ์จับข้อผิดพลาดความประทับใจที่คุณได้รับคือเมื่อคุณได้รับการตรวจสอบประเภทเพื่อรับรองรหัสของคุณแล้วจะไม่มีข้อบกพร่องเหลืออยู่ จริงอยู่ว่าระบบ OCAML ประเภท s คือกำพร้ากับข้อผิดพลาดจำนวนมากมี แต่ขอบเขตกว้างอย่างแปลกใจของโรคจิตกับที่ระบบประเภทที่มีประสิทธิภาพรวมทั้งข้อบกพร่องหลายอย่างที่ยากมากที่จะได้รับผ่านการทดสอบ ผลการปฏิบัติงานพบว่าสมรรถนะของ OCaml อยู่ในระดับที่ดีหรือดีกว่า Java s และภายในระยะห่างของภาษาต่างๆเช่น C หรือ C นอกจาก OCaml ยังมีตัวเก็บข้อมูลขยะแบบ GC ที่เพิ่มขึ้นนั่นหมายถึง GC สามารถปรับให้ทำชิ้นเล็ก ๆ ในการทำงานในเวลาทำให้เหมาะสมสำหรับการใช้งานเรียลไทม์อ่อนเช่นการซื้อขายทางอิเล็กทรอนิกส์ ส่วนใหญ่ไม่ว่าจะเป็นอย่างไรโปรแกรมเมอร์มักพูดถึงเรื่องนี้รัฐที่ไม่แน่นอนเป็นส่วนพื้นฐานของการเขียนโปรแกรมและสิ่งหนึ่งที่ไม่สามารถทำได้และไม่ควรกระทำด้วยการส่งแพ็คเก็ตเครือข่ายหรือการเขียนไปยังดิสก์เป็นตัวอย่างของความไม่แน่นอนความมุ่งมั่นที่สมบูรณ์แบบต่อการเปลี่ยนแปลงไม่ได้คือ ความมุ่งมั่นที่จะไม่สร้างสิ่งที่แท้จริง แต่รัฐที่มีค่าใช้จ่ายของตน แต่รหัส Mutation-free โดยทั่วไปจะง่ายต่อการอธิบายสาเหตุการโต้ตอบและการพึ่งพาอาศัยกันระหว่างส่วนต่างๆของ codebase ของคุณอย่างชัดเจนและง่ายต่อการจัดการ OCaml จะมียอดคงเหลือที่ดีอยู่ที่นี่ทำให้เกิดการกลายพันธุ์ ง่าย แต่การทำโครงสร้างข้อมูลที่ไม่เปลี่ยนรูปเริ่มต้นระบบ OCaml ที่เขียนไว้อย่างดีมักจะมีสถานะไม่แน่นอน แต่รัฐนั้นมีข้อ จำกัด อย่าง จำกัด บางทีอาจจะง่ายที่สุดในข้อดีเหล่านี้เพื่อแสดงให้เห็นอย่างชัดเจนว่าข้อสรุปคือความสำคัญของข้อสรุปคือสิ่งอื่นที่ชัดเจน เท่ากับรหัสที่สั้นลงอ่านได้ง่ายขึ้นง่ายต่อการเขียนและง่ายต่อการรักษามีแน่นอนไม่มีข้อ จำกัด ไม่ดี e โดยการลดชื่อฟังก์ชันทั้งหมดของคุณเป็นอักขระตัวเดียว แต่ความกะทัดรัดเป็นสิ่งสำคัญอย่างไรก็ตาม OCaml จะช่วยให้ codebase มีขนาดเล็กมากข้อดีประการหนึ่งที่ OCaml นำมาสู่ตารางคือการอนุมานแบบซึ่งจะทำให้จำเป็นต้องมีการประกาศชนิดจำนวนมากใบนี้ คุณมีรหัสที่ใกล้เคียงกับโค้ดที่เขียนในภาษาไดนามิกเช่น Python และ Ruby ในเวลาเดียวกันคุณจะได้รับประสิทธิภาพและความถูกต้องของ static types. Camend ฟังก์ชัน OCaml ต่อไปนี้สำหรับการเปลี่ยนองค์ประกอบของ tuple ที่นี่ , แผนที่ถูกกำหนดให้เป็นฟังก์ชันที่มีสองอาร์กิวเมนต์ฟังก์ชัน f และ triple x, y, z โปรดทราบว่า fx คือไวยากรณ์สำหรับการใช้ฟังก์ชัน f เพื่อ x. Now พิจารณาว่าจะมีลักษณะเป็นอย่างไรใน C 4 0 โค้ด C, ในขณะที่หน้าที่เทียบเท่าดูยุ่งเหยิงกับโครงสร้างจริงบดบังด้วย syntax เสียงอีกแหล่งหนึ่งของข้อสรุปเป็นสัญกรณ์ OCaml สำหรับการอธิบายชนิดที่หัวใจของสัญกรณ์ที่เป็นความคิดของพีชคณิตประเภทข้อมูลเกี่ยวกับพีชคณิต ประเภทคือสิ่งที่คุณได้รับเมื่อคุณมีระบบที่มีสองวิธีในการสร้างผลิตภัณฑ์ประเภทใหม่และผลรวมประเภทของผลิตภัณฑ์คือความคุ้นเคยของ Tuples, ระเบียน, โครงสร้างและวัตถุทั้งหมดเป็นตัวอย่างของประเภทผลิตภัณฑ์ประเภทผลิตภัณฑ์ รวมหลายค่าของชนิดที่แตกต่างกันเป็นค่าเดียวเหล่านี้เรียกว่าประเภทผลิตภัณฑ์เนื่องจากสอดคล้องกับทางคณิตศาสตร์กับผลิตภัณฑ์คาร์ทีเซียนของประเภทส่วนประกอบประเภทผลรวมที่สอดคล้องกับการรวมกลุ่มกันของประเภทส่วนประกอบและใช้เพื่อแสดงความเป็นไปได้หลายอย่างที่ผลิตภัณฑ์ ชนิดจะใช้เมื่อคุณมีหลายสิ่งในเวลาเดียวกัน a และ b และ c รวมชนิดถูกใช้เมื่อคุณต้องการระบุความเป็นไปได้ที่แตกต่างกัน a หรือ b หรือ c ประเภท Sum สามารถจำลองได้แม้ว่าค่อนข้างงุ่มง่ามในภาษาเชิงวัตถุเช่น Java ใช้ subclasses และแสดงเป็น union types ใน C แต่การสนับสนุนในระบบ type ของภาษาส่วนใหญ่สำหรับการโต้ตอบกับประเภท sum ในทางที่ปลอดภัยนั้นน่าประหลาดใจอย่างมากรูปที่ 1 pro vides ตัวอย่างของประเภทข้อมูลเกี่ยวกับพีชคณิตในที่ทำงานรหัสกำหนดประเภทสำหรับแสดงนิพจน์บูลีนผ่านชุดของ predicates พื้นฐานและฟังก์ชันสำหรับการประเมินนิพจน์เหล่านั้นรหัสเป็นแบบทั่วไปเหนือชุดของ predicates พื้นฐานดังนั้นหัวเรื่องของนิพจน์เหล่านี้อาจเป็นอะไรก็ได้ จาก inequalities จำนวนเต็มไปยังการตั้งค่าของธงคอมไพเลอร์ expr ประเภทรวมที่แสดงโดยท่อแยกแขนที่แตกต่างกันของการประกาศบางส่วนของแขนเหล่านั้นเช่นจริงและเท็จเป็นแท็กง่ายๆไม่แตกต่างอย่างมากจากองค์ประกอบของการแจงนับใน Java หรือ C อื่น ๆ เช่นและและไม่มีข้อมูลที่เกี่ยวข้องและข้อมูลนั้นจะแตกต่างกันไปในแต่ละกรณีประเภทนี้มีทั้งผลรวมและผลิตภัณฑ์โดยมีสาขาและและที่ประกอบด้วย tuples ประเภทที่ประกอบด้วยชุดค่าผสมของผลิตภัณฑ์และยอดรวมเป็นแบบทั่วไป และสำนวนที่มีประสิทธิภาพใน OCaml. One บิตเด่นของไวยากรณ์เป็นตัวแปรประเภทตัวแปรประเภท A สามารถ instantiated กับประเภทใด ๆ และนี่คือสิ่งที่ช่วยให้ รหัสจะทั่วไปในชุดของ predicates พื้นฐานนี้คล้ายกับวิธี generic ประเภทมีการจัดการใน Java หรือ C ดังนั้น Java s รายการจะแสดงผลเป็นรายการใน OCaml. The eval ฟังก์ชันใช้เวลาสองอาร์กิวเมนต์ expr การแสดงออกที่จะ ประเมินและ evalbase ฟังก์ชันสำหรับการประเมิน predicates พื้นฐานรหัสทั่วไปในแง่ที่ eval สามารถใช้สำหรับการแสดงออกเหนือประเภทของคำกริยาฐานใด ๆ แต่ evalbase ต้องมีเพื่อประเมินความจริงหรือเท็จของ predicates พื้นฐานเหล่านี้ eval ฟังก์ชัน ถูกกำหนดให้เป็นชวเลขสำหรับ invoking recursive calls เพื่อ eval โดยใช้ evalbase เป็นอาร์กิวเมนต์ในที่สุดคำแถลงการแข่งขันถูกใช้สำหรับการวิเคราะห์กรณีของโครงสร้างที่เป็นไปได้ของการแสดงออกเรียก evalbase เมื่อทำการประเมินฐานคำกริยาและทำหน้าที่เป็นอย่างอื่น recursion ตรงข้ามโครงสร้างของ datatypes รูปที่ 2 แสดงวิธีการรหัสเดียวกันอาจจะแสดงผลใน Java verbosity เป็นทันทีโดดเด่นเพิ่มกรณีเดียวเช่นและ ta kes สองเส้นสั้น ๆ ใน OCaml และแปดใน Java และโค้ด Java เป็นจริงเล็กน้อยที่สุดเท่าที่สิ่งเหล่านี้ไปถ้าคุณต้องการอนุญาตให้สร้างอัลกอริทึมอื่น ๆ เกี่ยวกับประเภทนิพจน์นี้ที่ไม่ได้อบเป็นความละเอียดของชั้นแล้วคุณอาจต้องการ ใช้รูปแบบผู้เข้าชมซึ่งจะขยายจำนวนบรรทัดมากอีกแง่มุมของภาษาที่ต้องการคำอธิบายเพิ่มเติมบางอย่างก็คือความสามารถของระบบพิมพ์เพื่อดักจับข้อบกพร่องผู้ที่ไม่คุ้นเคยกับ OCaml และภาษาที่เกี่ยวข้องและบางคนมักทำ ข้อผิดพลาดของการประเมินพลังของระบบประเภทต่ำเกินไปมันง่ายที่จะสรุปได้ว่าทุกระบบประเภทที่คุณทำคือตรวจสอบให้แน่ใจว่าคุณได้ส่งผ่านพารามิเตอร์ของคุณอย่างถูกต้องเช่นว่าคุณให้ลอยอยู่ในตำแหน่งที่คุณควรจะให้ลอย แต่มี ยิ่งไปกว่านั้นแม้การใช้งานแบบไร้เดียงสาของระบบประเภทนี้ก็ยังดีที่การจับข้อบกพร่องลองดูรหัสไพ ธ อนต่อไปนี้สำหรับการลบรายการเช่นการลบข้อมูลที่ซ้ำกันตามลำดับ oks สวยตรงไปตรงมา แต่ก็มีข้อผิดพลาดมัน doesn t ถูกจัดการปลายรายการที่นี่ s วิธีหนึ่งในการแก้ไข it. Now ให้ดูว่าเกิดอะไรขึ้นเมื่อเขียนมากหรือน้อยฟังก์ชันเดียวกันใน OCaml มีมากหรือน้อยเหมือนกัน bug. This ใช้รูปแบบการจับคู่รูปแบบของ OCaml เพื่อเข้าถึงองค์ประกอบของรายการนี่คือคอนเทนเนอร์ของรายการและระบุรายการที่ว่างเปล่าดังนั้นกรณีนี้จึงตรงกับรายการว่างและส่วนที่เหลือ xy จะตรงกับรายการที่มีอย่างน้อย สองส่วน x และ y ส่วนตัวแปรที่เหลือหมายถึงส่วนที่เหลือที่ว่างเปล่าที่อาจเป็นของ list เช่นเดียวกับตัวอย่าง Python รหัสนี้ไม่สามารถคิดได้ว่าเกิดอะไรขึ้นเมื่อคุณไปถึงจุดสิ้นสุดของรายการและมีเพียงองค์ประกอบเดียวที่เหลืออยู่ในกรณีนี้ แม้กระนั้นคุณจะพบปัญหาเกี่ยวกับปัญหาที่รันไทม์ แต่เวลาคอมไพล์คอมไพเลอร์จะให้ข้อผิดพลาดต่อไปนี้กรณีที่ขาดหายไปคือรายการที่มีองค์ประกอบเดียวคุณสามารถแก้ไขโค้ดและตอบสนองคอมไพเลอร์โดยการเพิ่มตัวจัดการสำหรับส่วนที่หายไป กรณีข้อผิดพลาดที่นี่เป็นเรื่องเล็กน้อยที่ จะพบได้อย่างง่ายดายโดยการทดสอบ แต่ระบบประเภทไม่เพียง แต่ในการเปิดเผยข้อผิดพลาดที่ยากที่จะทดสอบไม่ว่าจะเนื่องจากพวกเขาแสดงเฉพาะในกรณีมุมแปลกที่ง่ายที่จะพลาดในการทดสอบหรือเพราะพวกเขาแสดงในระบบที่ซับซ้อนที่ ยากที่จะจำลองและการออกกำลังกายอย่างละเอียดถี่ถ้วนออกจากกล่อง OCaml สวยดีที่จับข้อผิดพลาด แต่สามารถทำมากยิ่งขึ้นหากคุณออกแบบประเภทของคุณอย่างรอบคอบพิจารณาเป็นตัวอย่างประเภทต่อไปนี้เพื่อแสดงสถานะของการเชื่อมต่อเครือข่าย ชนิด connectionstate คือการแจงนับง่ายๆของสามสถานะที่ระบุว่าการเชื่อมต่อสามารถทำได้ใน connectioninfo คือชนิดของระเบียนที่มีจำนวนของฟิลด์อธิบายแง่มุมต่าง ๆ ของการเชื่อมต่อโปรดทราบว่าเขตข้อมูลที่มีตัวเลือกในตอนท้ายของประเภทนี้จะเป็นโมฆะเป็นหลัก เขตข้อมูลโดยค่าเริ่มต้นค่าใน OCaml จะรับประกันว่าไม่ใช่ null นอกเหนือจากนั้นมีอะไรเกี่ยวกับรหัสนี้ที่แตกต่างจากสิ่งที่คุณอาจเขียนใน Java หรือ C. Here อยู่ในบาง การสร้างในแต่ละเขตข้อมูลระเบียนและวิธีการที่พวกเขาเกี่ยวข้องกับแต่ละอื่น ๆ เซิร์ฟเวอร์ระบุตัวตนของเซิร์ฟเวอร์ในอีกด้านหนึ่งของการเชื่อมต่อ lastpingtime และ lastpingid มีวัตถุประสงค์เพื่อใช้เป็นส่วนหนึ่งของโปรโตคอล keep-alive โปรดทราบว่าทั้งสองของเขตข้อมูลเหล่านี้ควรจะมีอยู่หรือไม่ควรเป็นเช่นนั้นควรมีอยู่เฉพาะเมื่อรัฐเชื่อมต่อ sessionid เป็นตัวระบุที่ไม่ซ้ำกันซึ่งได้รับการเลือกใหม่ทุกครั้งที่มีการเชื่อมต่อใหม่อีกครั้งนอกจากนี้ควรมีเฉพาะเมื่อมีการเชื่อมต่ออยู่เท่านั้น เมื่อเริ่มต้นแล้วจะเป็นการติดตามเมื่อความพยายามที่จะเริ่มการเชื่อมต่อเริ่มขึ้นซึ่งสามารถใช้เพื่อกำหนดความพยายามในการเชื่อมต่อควรจะถูกละทิ้งสิ่งนี้ควรจะปรากฏเฉพาะเมื่อรัฐกำลังเชื่อมต่อ whendisconnected ติดตามเมื่อการเชื่อมต่อเข้าสู่สถานะยกเลิกการเชื่อมต่อและควรจะอยู่เฉพาะในรัฐที่คุณสามารถดูจำนวน invariants ผูกเขตข้อมูลที่แตกต่างกันบันทึกด้วยการรักษา invariants ดังกล่าวทำงานจริงคุณจำเป็นต้องเอกสารให้รอบคอบเพื่อให้คุณ don t การเดินทางผ่านพวกเขาในภายหลังคุณต้องเขียนการทดสอบเพื่อตรวจสอบ invariants และคุณต้องใช้ความระมัดระวังอย่างต่อเนื่องไม่ให้ทำลาย invariants เป็นรหัส evolves แต่เราสามารถทำได้ดีกว่าพิจารณาการเขียนใหม่ต่อไปนี้ตอนนี้เรามีการรวมกันของผลิตภัณฑ์และผลรวม ประเภทที่แม่นยำมากขึ้นหมายถึงชุดของสถานะที่อนุญาตของการเชื่อมต่อโดยเฉพาะอย่างยิ่งมีชนิดของระเบียนที่แตกต่างกันสำหรับแต่ละรัฐสามแต่ละที่มีข้อมูลที่เกี่ยวข้องเพียงเพื่อให้ข้อมูลของรัฐที่มีความเกี่ยวข้องเสมอในกรณีนี้เพียง เซิร์ฟเวอร์ถูกผลักดันไปยังระเบียนระดับบนสุดนอกจากนี้เราได้ทำให้มันชัดเจนว่า lastpingtime และ lastpingid มีทั้งปัจจุบันหรือทั้งสองขาดโดยตัวแทนของ th em เป็น lastping ซึ่งเป็นคู่ตัวเลือกโดยการทำทั้งหมดนี้เราได้ฝังลงในประเภทของตัวแปรที่จำเป็นหลายตอนนี้ที่ invariants เป็นส่วนหนึ่งของชนิดคอมไพเลอร์สามารถตรวจจับและปฏิเสธรหัสที่จะละเมิด invariants เหล่านี้นี่คือ ทั้งสองทำงานน้อยลงและเชื่อถือได้มากขึ้นกว่าการรักษา invariants ดังกล่าวด้วยมือตัวอย่างใช้ประเภทข้อมูลเกี่ยวกับพีชคณิตเพื่อเข้ารหัส invariants แต่ OCaml มีเครื่องมืออื่น ๆ ในการทำระบบโมดูล OCaml เดียวกันเป็นตัวอย่างหนึ่งที่ช่วยให้คุณสามารถระบุ invariants ในอินเทอร์เฟซของโมดูล ซึ่งแตกต่างจากภาษาเชิงวัตถุมากที่สุด OCaml ทำให้สามารถแสดงข้อ จำกัด ร่วมที่ซับซ้อนได้มากกว่าหลายประเภทโดยทั่วไปโมดูล OCaml จะเป็นเครื่องมือที่มีประสิทธิภาพในการทำลายโค้ดเบสลงในชิ้นเล็ก ๆ ที่เข้าใจได้ซึ่งการโต้ตอบระหว่างชิ้นส่วนเหล่านี้อยู่ภายใต้ การควบคุมระบบอย่างชัดเจนของโปรแกรมเมอร์ระบบความสามารถในการดักจับข้อบกพร่องของระบบประเภทนี้มีคุณค่าแม้กระทั่งสำหรับโครงการเดี่ยว ๆ แต่ก็ส่องสว่างอย่างแท้จริงในสภาพแวดล้อมที่ทำงานร่วมกัน นอกจากนี้ในการค้นหาข้อผิดพลาดลายเซ็นประเภทมีบทบาทที่มีคุณค่าอย่างน่าแปลกใจในฐานะเอกสารรับรองที่ถูกต้องเพื่อให้ถูกต้องในบริบทของโค้ดบรัดที่พัฒนาขึ้น มีประโยชน์ในการทนทานกว่าที่บังคับโดยการประชุมในการที่พวกเขามีโอกาสน้อยที่จะเสียโดยบังเอิญโดยนักพัฒนาอื่น ๆ ไม่มีการกล่าวว่า OCaml ไม่มีข้อบกพร่องของมันมีแน่นอนทุกปัญหา OCaml มีชุมชนที่ยอดเยี่ยมที่สร้างชุดห้องสมุดที่หลากหลาย แต่ชุดห้องสมุดดังกล่าวล่มจืดเมื่อเปรียบเทียบกับสิ่งที่มีให้สำหรับ Python, C หรือ Java เช่นเดียวกับเครื่องมือในการพัฒนาเช่น IDEs, Profilers และ debuggers อยู่ที่นั่น แต่มีความเป็นผู้ใหญ่น้อยกว่าและมีคุณลักษณะกว่าญาติของพวกเขาในภาษาหลัก more. Another ข้อ จำกัด ของ OCaml ได้จะทำอย่างไรกับความเท่าเทียมกันรันไทม์ OCaml มี r เดียว untime lock ซึ่งหมายความว่าต้องใช้กระบวนการหลายตัวเพื่อใช้ประโยชน์จากแกนหลายตัวบนเครื่องเดียวส่วนใหญ่เหมาะกับรูปแบบการพัฒนาของเราเราต้องการให้ข้อความส่งผ่านไปยังเธรดหน่วยความจำร่วมกันเป็นรูปแบบการเขียนโปรแกรมสำหรับการทำงานแบบขนาน นำไปสู่โค้ดที่ง่ายกว่าและมีเหตุผลที่ดีกว่ากับระบบที่ข้ามไปหลายเครื่องทางกายภาพเครื่องมือที่มีอยู่ในโลก OCaml ที่กว้างขึ้นสำหรับการทำแบบเขียนโปรแกรมแบบหลายขั้นตอนนี้อย่างไรก็ตามยังคงมีการสุก แต่ข้อ จำกัด ของ OCaml ไม่ใช่พื้นฐานใน ธรรมชาติพวกเขามีมากขึ้นจะทำอย่างไรกับรายละเอียดของการดำเนินงานหรือความนิยมของภาษาและไม่ได้กับภาษาของตัวเองในท้ายที่สุดว่าเป็นสิ่งที่ฉันพบมากที่สุดทำให้งงฉันตอนนี้เชื่อมั่นมากว่าแนวคิดหลักที่อยู่เบื้องหลัง OCaml เป็นอย่างมากที่มีคุณค่า, เป็นหลักฐานโดยข้อเท็จจริงที่ว่า OCaml ตัวเองไม่ว่าจะเป็นข้อ จำกัด ของมันเป็นเครื่องมือที่มีประสิทธิภาพและมีประสิทธิภาพอย่างยิ่งความคิดเหล่านั้นยังคงอยู่นอกแกนหลักของเปร่า เช่นนี้ F และ Scala กำลังนำแนวคิดบางอย่างที่อยู่เบื้องหลัง OCaml และ Haskell ไปสู่กลุ่มผู้ชมที่กว้างขึ้นโดยรวมตัวกันภายในระบบนิเวศของ Dotnet และ Java ตามลำดับบางที 10 ปีนับจากนี้เราจะไม่ได้อีกต่อไป จำเป็นต้องถามว่าทำไมความคิดเหล่านี้ล้มเหลวในการจับในโลกกว้าง แต่ไม่มีเหตุผลที่จะรอคุณสามารถเพิ่ม OCaml ไปที่กล่องเครื่องมือของคุณตอนนี้ GOVE IT, HATE IT ให้เรารู้ Yaron Minsky ได้รับ Ph D ของเขาในวิทยาการคอมพิวเตอร์จาก มหาวิทยาลัยคอร์เนลในปี 2545 โดยมุ่งเน้นไปที่ระบบกระจายในปี 2546 เขาเข้าร่วมเจนสตรีทซึ่งเป็นผู้ก่อตั้งกลุ่มวิจัยเชิงปริมาณและตั้งแต่ปี 2550 เขาได้บริหารจัดการกลุ่มเทคโนโลยีที่นั่น 2011 ACM 1542-7730 11 0900 10 00 ตีพิมพ์ในนิตยสาร Queue vol. 9, no 9 ดูรายการนี้ใน ACM Digital Library. Robert C Seacord - Uninitialized Reads ทำความเข้าใจเกี่ยวกับการแก้ไขข้อเสนอแนะไปยังภาษาซีคาร์ลอส Baquero, Nuno Pregui a - ทำไมนาฬิกาตรรกะเป็นเรื่องง่ายบางครั้งบางสิ่งบางอย่างที่คุณต้องเป็นทางด้านขวา Guage. Erik Meijer, Kevin Millikin, Gilad Bracha - Spicing ขึ้นโผกับผลข้างเคียงชุดของส่วนขยายไปยังภาษาการเขียนโปรแกรมโผที่ออกแบบมาเพื่อสนับสนุน asynchrony และหน้าที่ generator. Dave Long - META II Vellum ดิจิตอลใน Scriptorium ดิจิตอล Revisiting Schorre ของ 1962 compiler-compiler. Bilyan Borisov Fri, 24 Jan 2014 15 01 30 บทความ UTC. Great ในความคิดของฉันส่วนใหญ่ของนักวิจารณ์ของ OCaml ในความคิดเห็นได้มองข้ามความจริงที่ว่าภาษาที่สามารถรวบรวมลงไม่เพียง แต่จะไบต์รหัส แต่ยัง รหัสพื้นเมืองในระยะยาวแอ็พพลิเคชันที่คอมไพล์จะทำงานได้เร็วกว่าสคริปต์ Python-Ruby-Perl แม้ว่าฉันจะเห็นพ้องกันว่าภาษาที่ใช้งานกับ OCaml เป็นตัวอย่างได้ง่ายกว่า Java C พิมพ์แบบคงที่ และการอนุมานประเภทเป็นสิ่งที่ดีอย่างมากสำหรับโครงการที่มีขนาดปานกลางและเล็ก ๆ อีกครั้งนี่คือทั้งหมดที่คุณต้องการ แต่การพูดภาษาแบบไดนามิกจะช่วยให้คุณสามารถทำสิ่งที่น่ารังเกียจเช่น อื่น ๆ ใน Python ซึ่งจะก่อให้เกิด TON ของข้อบกพร่องที่ทดสอบความหมายเฉพาะสามารถจับเนื่องจากเป็น syntactically OK ดังนั้นแม้ว่าเราสมมติว่างูหลามเป็นสั้นเป็น OCaml หรือภาษาอื่น ๆ ที่พิมพ์และเรียบเรียงภาษาที่ใช้งานได้ก็มักจะ จะช้าและจะออกจากขอบขนาดใหญ่สำหรับการแนะนำข้อผิดพลาดใน codebases ใหญ่อย่างไรก็ตามอีกครั้งในฐานะผู้เขียนแนะนำ Python มีข้อได้เปรียบที่ร้ายแรงมากคือชุดของห้องสมุดที่กว้างขวาง แต่ผมเองคิดว่าพวกเขาให้โปรแกรมเมอร์ที่ไม่มีประสบการณ์ในความรู้สึกผิด ของ awesomeness ตั้งแต่คุณได้รับภาพลวงตาของความสามารถในการทำมากโดยไม่ต้อง effort. At มากในตอนท้ายของภาษาวันที่ยังคงเครื่องมือและเรายังคงรักพวกเขาและปกป้องพวกเขาอย่างสุดซึ้งดังนั้นฉันเดาทุกอย่างไปในที่ภาษาเขียนโปรแกรมที่ดีที่สุด การอภิปรายเควินคินเนลล์พฤหัสบดี, 11 ตุลาคม 2555 19 59 40 UTC ชั้นแรกเป็นคำจำกัดความของซีเอสและตามคำนิยามนั้น CL มีฟังก์ชันระดับชั้นแรกฉันเข้าใจผิดเพราะฉันไม่ได้พูดในสิ่งที่ฉันหมายถึงควรจะบอกว่าสามารถใช้งานได้ง่ายในชั้นเฟิร์สคลาสขอโทษที่นั่น Jesse Talbutt Sun, 19 สิงหาคม 2555 16 10 16 UTC ไม่ต้องใช้หุ่นยนต์ในคำถามนี้เป็นครั้งแรกใน Robocop หลังจากนั้นฉันก็อาจใช้ภาษาที่พิมพ์ได้มากขึ้น Jesse Talbutt Sun, 19 ส. ค. 2555 15 59 42 UTCmon LISP ไม่เป็นจริง มีฟังก์ชั่นชั้นหนึ่งมันเป็นหนึ่งใน sine qua nons ของภาษา - im ไม่แน่ใจว่าใครจะเข้าใจผิดได้อย่างไรความแตกต่างหลักระหว่าง LISP และ Scheme คือ LISP ใช้ namespaces แยกต่างหากสำหรับฟังก์ชันและตัวแปรซึ่งเป็น นามธรรมที่ทั้งมีประสิทธิภาพอย่างไม่น่าเชื่อและอันตรายอย่างไม่น่าเชื่อทั้งหมดก็จะเป็นหนึ่งในนักเขียนรหัสฉลาดใช้คุณลักษณะที่จะแตกปิดเปิดและคุณจะได้รับผลข้างเคียงที่คาดเดาไม่ได้ฉันอ่านบทความนี้สงสัยว่าพวกเขากำลังจะใช้ OCaml ทำไมไม่เพียงแค่ไป หมูทั้งตัวและใช้ LISP แต่ฉัน เห็นปัญหาตอนนี้ - OCaml เป็น LISP ที่คุณเสียสละอำนาจที่คุณอาจจะไม่เคยใช้เพื่อแลกกับความปลอดภัยน่าจะพรีเมี่ยมเมื่อคุณจัดการกับธุรกรรมทางการเงินขนาดใหญ่ในเวลาจริงแทนการพูดการสร้างภาษาธรรมชาติ DSL สำหรับ robots. Kevin Kinnell จันทร์, 11 มิถุนายน 2012 23 17 33 UTC. Drat ฉันหมายวรรคสองครั้งที่ผ่านมา C est l ecriture. Kevin Kinnell จันทร์, 11 มิถุนายน 2012 23 03 35 UTC การอ่านของรหัสใด ๆ ที่เกี่ยวข้องกับความรู้ของ 1 จุดประสงค์ ของรหัส 2 ภาษารหัสถูกเขียนในและ 3 - และโปรดให้อภัย pun - ความรู้ของ coder. One สามารถโต้แย้งว่าการเขียนโปรแกรมเขียนโปรแกรม obviates 1 แต่สิ่งที่จริงดูเหมือนว่าจะทำในทางปฏิบัติคือการเพิ่ม การเล่าเรื่องภาษาธรรมชาติทางเทคนิคสูงที่ทำให้การไหลของโปรแกรมกลายเป็นสิ่งที่คุณต้องการเช่นการอ่านบทสรุปเกี่ยวกับกฎหมายโดยละเอียดหากคุณเป็นทนายความที่มีความรู้เกี่ยวกับภาษา meta ที่มีความสลับซับซ้อนของกฎหมายขออภัยของฉันดร. Knuth แต่ที่นั่น มันคือการรักษาจริงสำหรับ 1 คือการรวมกันของการเดินทาง คำอธิบายวัตถุประสงค์ของรหัสและความคิดเห็นที่ดี 3 เป็นมากหรือน้อยรวมกันของความสามารถโดยธรรมชาติและประสบการณ์ไม่ว่าเรากำลังพูดถึงเกี่ยวกับนักเขียนหรือผู้อ่านของรหัสฉัน d bet NO CODE อ่านเหมือนภาษาธรรมชาติ แต่แน่นอนมี isn t ใด ๆ ที่อ่านเหมือนภาษาอังกฤษถ้าคุณคิดว่า มันเป็นเพราะคุณมีความสามารถและประสบการณ์เนื้อหากระบวนการพูดภาษาเขียนโปรแกรมดูเหมือนจะสะท้อนกระบวนการของการเรียนรู้ภาษาธรรมชาติโดยเฉพาะอย่างยิ่งช่วงทั้งหมดของเจ้าของภาษาอยู่ที่นั่นคุณสามารถมีทารกพูดคุยกับ เด็กทารกพูดคุยกับผู้ใหญ่ผู้ใหญ่ที่มีการศึกษาดีพูดคุยกับผู้ใหญ่ที่มีการศึกษาน้อย ฯลฯ มันค่อนข้างสนุกในการสังเกตความรู้ของ coders ทั้งผู้อ่านและนักเขียนเป็นส่วนใหญ่ของการอ่านง่ายทุกคนที่สามารถทำ ภาษาที่ใดกระโปรงนี้ในความเห็นของฉันบางจัดเรียงของ supernatural being. That ใบ 2 ภาษารหัสเขียนในมุมมองที่ใกล้เคียงกับวัตถุประสงค์ของที่ฉันคิดว่าวิธีการอย่างรวดเร็วอ่านสามารถเข้าใจโดยรวม วัตถุประสงค์ของ codin g ลำดับและรวมที่เข้าไหลของโปรแกรมในคำอื่น ๆ รหัสสามารถ grokked easily. You สามารถสร้างภาษาที่ทำให้เกือบเป็นไปไม่ได้ที่จะบรรลุ - APL มาถึงใจไม่มีใครสามารถโต้เถียงที่ APL ไม่รัดกุม การได้รับประสบการณ์ที่จำเป็นเพื่อให้สามารถอ่าน APL ได้เช่นภาษาธรรมชาติอาจปฏิเสธมนุษย์ธรรมดาสามัญโดยอายุขัยที่แน่นอนของพวกเขาฉันสงสัยว่าทุกคนสามารถ glow APL แม้ว่าจะเขียนโค้ดไว้ที่อื่น ๆ มี COBOL และ Java อีกหนึ่งโปรแกรมเมอร์ s ความเห็นแน่นอนถ้าคุณสามารถ grok รหัสเขียนทั้งคุณสามารถทำกองเงิน แต่คุณขาย soul. Lisps ของคุณมีแนวโน้มที่จะถูกขัดจังหวะโดยการปิดวงเล็บของพวกเขา แต่คุณสามารถเรียนรู้ที่จะไม่เห็นพวกเขา Lisps ยังใช้ REPL ทำให้พวกเขาได้รับประโยชน์จากการเข้ารหัสที่เพิ่มขึ้น แต่น่าเสียดายที่ยกเว้นภาษา Scheme ฟังก์ชัน aren t ชั้นแรกใน Lisp Lisp สามารถ grokked ได้ แต่ก็ขาดพลังงานแสดงออกบางส่วนโดยเฉพาะอย่างยิ่งชนิดโปรแกรมที่สร้างขึ้นได้และประเภท checkin g, making computation with types a huge burden on the programmer. Perl goes beyond Lisp in concision, and its scope-control is as good as it gets But Perl has a steep learning curve for fluency, and functions aren t really first-class, Perl lacks a usable REPL, and Perl is missing automated type checking. OCaml manages to be concise, allows computation with types, makes functions first-class objects, has a visually clean syntax, has a REPL, does not require purity thus allowing coder-readable access to the real world and seems to be quite easy to learn--can you imagine a trading company requiring its traders to learn any of the languages in the last paragraph. Well expressed OCaml code is easy to grok. I think Dr Minsky makes his case. Fredrik Skeel Lkke Tue, 13 Mar 2012 18 25 46 UTC. It would be wonderfull to hear how the language plays out in the context of tests Especially regarding tests involving stubbing of external resources. Rowan Fri, 09 Mar 2012 05 41 37 UTC. name on more practical Actually, monadic effects and the like are quite common in OCaml In fact about 1 month before you posted your comment, Yaron the author also announced a new monadic concurrency library called Async. For unintended side-effects, it s more a library issue than a language issue it s pretty easy in OCaml to encapsulate effects in a monadic library, and then only use the monadic versions, banning other uses or considering them unsafe in a similar sense to Haskell s unsafePerformIO. To me the main reason I tend not to use Haskell except for small projects is that I ve hit the unintended side-effect of allocating massive amounts of memory and thrashing or crashing and sometimes been unable to resolve it without digging deep into the source code of multiple libraries written by different authors This is improving in Haskell, but I d still trust OCaml much more for critical systems like the one described. gkannan Thu, 12 Jan 2012 15 57 31 UTC. name Thu, 22 Dec 2011 22 27 19 U TC. more practical Wow, those are weasel words if ever I heard them. Haskell is way more practical you see what I did there for me than O Caml O Caml is great, but it doesn t even try to prevent unintended side-effects The whole Applicative Semiring Monoid Monad MonadT is insanely useful and rewarding if you just try it fo realz.2016 ACM, Inc All Rights Reserved.

Comments

Popular posts from this blog

Forex Usd Jpy

การวิเคราะห์ทางเทคนิคของ USDJPY ได้ทบทวนเหตุการณ์สำคัญ ๆ ที่จะทำให้เงินเยนและ dollaryen ในช่วงสัปดาห์ที่ผ่านมา การเปลี่ยนแปลงการจ้างงานแบบ nonfarm ของ ADP ทำให้ภาพรวมการจ้างงานของภาคเอกชนในสหรัฐมีขึ้นอย่างรวดเร็วและนำเสนอรายงานการจ้างงานนอกภาคเกษตรกรรมที่จัดขึ้นเมื่อวันศุกร์ที่ผ่านมา การอ่านซึ่งสูงกว่าการคาดการณ์ของตลาดคือค่าเงินดอลลาร์อ่อนค่าลง นี่คือรายละเอียดและ 5 ผลลัพธ์ที่เป็นไปได้สำหรับ USDJPY เผยแพร่เมื่อวันพุธที่ 13:15 GMT การสร้างงานเป็นตัวชี้วัดที่สำคัญที่สุดประการหนึ่งของกิจกรรมทางเศรษฐกิจโดยรวม ดังนั้นการตีพิมพ์ข้อมูลการจ้างงานจึงคาดว่าจะได้รับการคาดหมายโดยตลาดและการอ่านที่ไม่คาดคิดอาจมีผลต่อทิศทางของ USDJPY เงินเดือนของ ADP Nonfarm พุ่งขึ้นแตะระดับ 246 กิโลกรัมในเดือนมกราคม ตลาดคาดว่าการอ่านที่อ่อนโยนในเดือนกุมภาพันธ์มีมูลค่าประมาณ 184,000 ราย ความเชื่อมั่นและระดับการบริหารงานของ Trump เดือนแรกในที่ทำงานถูกรุมเร้าด้วยความยากลำบากและอาจมีปัญหามากขึ้นจากการต่อสู้และคาดไม่ถึง Trump เศรษฐกิจสหรัฐฯยังอยู่ในภาวะที่มองในเชิงบวกและดีขึ้นเรื่อย ๆ สำหรับการปรับขึ้นอัตราดอกเบี้ยในเดื

Betul คี อัตราแลกเปลี่ยน

TEKNIK FOREX SEBENAR TFS. Saya Khalid Hamid Seorang FULL-TIME FOREX ผู้ค้าหลักทรัพย์ Saya merupakan bekas ธนาคารเพื่อการส่งออกและตั๋วเงินสกุลเงินของประเทศอื่น ๆ การวิเคราะห์สกุลเงิน Tugas พูดและพูดคุยเกี่ยวกับเรื่องนี้เป็นเรื่องยากที่จะหาทางออกที่ดีที่สุดสำหรับธุรกิจขนาดใหญ่ menyumbangkan tips artikel dalam ฟอรั่มฟอรั่มแลกเปลี่ยนเงินตราต่างประเทศและ juga antarabangsa. Pengalaman sebagai นักวิเคราะห์สกุลเงินและ keaktifan berforum selama 9 TAHUN telah banyak mahjay mahjadi trader seperti yang anda lihat pada hari ini. Sebelum ini, sejak 2011 saya telah menulis 5 buah ebook berjudul TEKNIK FOREX SEBENAR V1, V2, V3, V4 และ V5 Kini, เซ็ทอัลบัมเล่ย์ Banyak Proses Penambahbaikan, ia kembali dengan lebih mantap dalam bentuk Buku DVD iaitu TEKNIK FOREX SEBENAR EDISI KE-6.APA ITU FOREX. Kepada yang pertama kali terbaca tentang forex, istilah โฟเร็กไดรฟ์สำหรับการเปลี่ยนแปลง EXE atau Tukaran Matawang Asing Forex โฟรโด di dunia dengan nilai transaksi harian melebihi USD 5 TRILLION SEHARI Ia jauh me