อ่าน 2 นาที
การเรียนรู้ของเครื่องพร้อมกัน
Concurrent ML (CML) เป็นภาษาการเขียนโปรแกรมเชิงฟังก์ชันระดับสูงอเนกประสงค์แบบหลายพาราดิกม์เป็นภาษาถิ่นของภาษาการเขียนโปรแกรมMLซึ่งเป็น ส่วนขยายแบบ พร้อมกันของ ภาษา ML
การเรียนรู้ของเครื่องพร้อมกัน
| การเรียนรู้ของเครื่องพร้อมกัน | |
|---|---|
| กระบวนทัศน์ | รูปแบบการทำงานหลายแบบ : เชิงฟังก์ชัน , เชิงบังคับ , แบบแยกส่วน , พร้อมกัน |
| ตระกูล | ML : ML มาตรฐาน |
| ปรากฏครั้งแรก | 1991 [ 1 ] |
| เว็บไซต์ | cml |
| การนำไปใช้งานหลักๆ | |
| SML/NJ , [ 2 ] MLton , [ 3 ]แมนติคอร์[ 4 ] | |
| ได้รับอิทธิพลจาก | |
| ML , ML มาตรฐาน | |
Concurrent ML (CML) เป็นภาษาการเขียนโปรแกรมเชิงฟังก์ชันระดับสูงอเนกประสงค์แบบหลายพาราดิกม์เป็นภาษาถิ่นของภาษาการเขียนโปรแกรมMLซึ่งเป็น ส่วนขยายแบบ พร้อมกันของ ภาษา ML มาตรฐานโดยมีลักษณะเฉพาะคือความสามารถในการสร้างนามธรรมการสื่อสารที่ประกอบกันได้ซึ่งเป็นแบบเฟิร์สคลาส แทนที่จะสร้างไว้ในภาษา การออกแบบของ CML และการดำเนินการพื้นฐานของมันได้รับการนำไปใช้ในภาษาการ เขียนโปรแกรมอื่น ๆ อีกหลายภาษา เช่นGNU Guile [ 5 ] Racket [ 6 ] และ Manticore [ 4 ]
แนวคิด
ภาษาโปรแกรมหลายภาษาที่รองรับการทำงานพร้อมกัน (concurrency) มีช่องทางการสื่อสารที่อนุญาตให้แลกเปลี่ยนค่าระหว่างกระบวนการหรือเธรดที่ทำงานพร้อมกันในระบบ การสื่อสารที่สร้างขึ้นระหว่างกระบวนการอาจเป็นไปตามโปรโตคอลเฉพาะ ซึ่งต้องใช้โปรแกรมเมอร์เขียนฟังก์ชันเพื่อสร้างรูปแบบการสื่อสารที่ต้องการ ในขณะเดียวกัน ระบบการสื่อสารมักต้องการสร้างช่องทางหลายช่องทาง เช่น ไปยังเซิร์ฟเวอร์ หลายเครื่อง แล้วเลือกช่องทางที่มีอยู่เมื่อมีข้อมูลใหม่เข้ามา ซึ่งสามารถทำได้โดยใช้การตรวจสอบสถานะ (polling ) เช่น การ ดำเนินการ selectในระบบ Unix
การรวมโปรโตคอลเฉพาะแอปพลิเคชันและการสื่อสารแบบหลายฝ่ายเข้าด้วยกันอาจมีความซับซ้อนเนื่องจากความจำเป็นในการแนะนำการสำรวจและการตรวจสอบการบล็อกภายในโปรโตคอลที่มีอยู่ก่อนแล้ว Concurrent ML แก้ปัญหานี้โดยการลดการเชื่อมโยงของแนวคิดการเขียนโปรแกรมโดยการแนะนำเหตุการณ์ ที่สามารถซิ ง โครไนซ์ได้ [ 7 ]เหตุการณ์เป็นนามธรรมระดับแรกที่สามารถใช้กับการดำเนินการซิงโครไนซ์ (เรียกว่าsyncใน CML และ Racket) เพื่อบล็อกและสร้างค่าบางอย่างที่เกิดจากการสื่อสาร (ตัวอย่างเช่น ข้อมูลที่ส่งผ่านช่องทาง)
ใน CML เหตุการณ์ต่างๆ สามารถรวมหรือจัดการได้โดยใช้การดำเนินการพื้นฐานหลายอย่าง การดำเนินการพื้นฐานแต่ละอย่างจะสร้างเหตุการณ์ใหม่แทนที่จะแก้ไขเหตุการณ์เดิม ทำให้สามารถสร้างเหตุการณ์แบบผสมที่แสดงถึงรูปแบบการสื่อสารที่ต้องการได้ ตัวอย่างเช่น CML อนุญาตให้โปรแกรมเมอร์รวมเหตุการณ์ย่อยหลายๆ เหตุการณ์เข้าด้วยกันเพื่อสร้างเหตุการณ์แบบผสม ซึ่งจากนั้นสามารถเลือกเหตุการณ์ย่อยใดเหตุการณ์หนึ่งได้อย่างไม่แน่นอน การดำเนินการพื้นฐานอีกอย่างหนึ่งจะสร้างเหตุการณ์ใหม่ที่จะแก้ไขค่าที่ได้จากการซิงโครไนซ์กับเหตุการณ์เดิม เหตุการณ์เหล่านี้แสดงถึงรูปแบบการสื่อสารที่ในภาษาที่ไม่ใช่ CML มักจะจัดการโดยใช้ลูปการตรวจสอบหรือฟังก์ชันที่มีตัวจัดการสำหรับเหตุการณ์แต่ละประเภท
สวัสดีโลก
นี่คือโปรแกรม "Hello, World!"ที่พิมพ์ข้อความไปยังคอนโซลของระบบ โปรแกรม นี้สร้างเธรด หนึ่ง ที่มีช่องสำหรับรับสตริงและอีกเธรดหนึ่งที่พิมพ์สตริงที่ได้รับผ่านช่องนั้น โปรแกรมนี้ใช้Standard ML of New Jersey (SML/NJ) และ CML (บนแพลตฟอร์มที่ไม่ใช่ linux-x86 ชื่อฮีปจะแตกต่างกัน บรรทัดที่มี "cml_test.x86-linux" อาจต้องเปลี่ยนเป็นชื่ออื่น)
| cml_test.cm |
|---|
ห้องสมุดโครงสร้างสวัสดีเป็น$c มล. / ฐาน. ซม.$c ml / cml . cmcml_test . sml |
| cml_test.sml |
โครงสร้างHello = structเปิดCMLสนุกสนานสวัสดี() = ปล่อยให้val c : string chan = channel ()ในspawn ( fn () => TextIO . print ( recv c ));ส่ง( c , "สวัสดีโลก! \n " );ออก()จบfun main (_, argv ) =RunCML.doit ( fn ( ) = > ignore ( spawn hello ), NONE )จบ |
| ทุบตี |
|---|
$ ml-build cml_test.cm Hello.main Standard ML of New Jersey v110.60 [built: Mon Nov 27 14:19:21 2006] [scanning cml_test.cm] [library $cml/basis.cm is stable] [library $cml/cml.cm is stable] [parsing (cml_test.cm):cml_test.sml] [creating directory .cm/SKEL] [library $cml/cml-internal.cm is stable] [library $cml/core-cml.cm is stable] [library $SMLNJ-BASIS/basis.cm is stable] [compiling (cml_test.cm):cml_test.sml] [creating directory .cm/GUID] [creating directory .cm/x86-unix] [code: 2170, 42, env: 2561 [ไบต์] [กำลังสแกน 18518-export.cm] [กำลังสแกน (18518-export.cm):cml_test.cm] [กำลังแยกวิเคราะห์ (18518-export.cm):18518-export.sml] [กำลังคอมไพล์ (18518-export.cm):18518-export.sml] [โค้ด: 309, ข้อมูล: 37, สภาพแวดล้อม: 42 ไบต์] $ heap2exec cml_test.x86-linux cml_test $ ./cml_test Hello, world! |
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเรียนรู้ของเครื่องพร้อมกัน
Concurrent ML (CML) เป็นภาษาการเขียนโปรแกรมเชิงฟังก์ชันระดับสูงอเนกประสงค์แบบหลายพาราดิกม์เป็นภาษาถิ่นของภาษาการเขียนโปรแกรมMLซึ่งเป็น ส่วนขยายแบบ พร้อมกันของ ภาษา ML
แนวคิด
ภาษาโปรแกรมหลายภาษาที่รองรับการทำงานพร้อมกัน (concurrency) มี ช่องทางการสื่อสาร ที่อนุญาตให้แลกเปลี่ยนค่าระหว่าง กระบวนการ หรือ เธรด ที่ทำงานพร้อมกันในระบบ การสื่อสารที่สร้างขึ้นระหว่างกระบวนการอาจเป็นไปตามโปรโตคอลเฉพาะ...
สวัสดีโลก
นี่คือ โปรแกรม "Hello, World!" ที่พิมพ์ข้อความไปยัง คอนโซลของระบบ โปรแกรม นี้สร้าง เธรด หนึ่ง ที่มีช่องสำหรับ รับสตริง และอีกเธรดหนึ่งที่พิมพ์สตริงที่ได้รับผ่านช่องนั้น โปรแกรมนี้ใช้ Standard ML of New Jersey (SML/NJ) และ CML (บนแพลตฟอร์มที่ไม่ใช่ linux-x86...
ลิงก์ภายนอก
เว็บไซต์อย่างเป็นทางการ ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Concurrent_ML&oldid=1223959006 "