อ่าน 2 นาที
ฟูทาร์ค (ภาษาโปรแกรม)
Futharkเป็นภาษาโปรแกรมแบบหลายพาราดิกม์ระดับสูงเชิงฟังก์ชันแบบขนานข้อมูลและแบบอาร์เรย์ เป็นภาษาถิ่นของภาษาMLซึ่งพัฒนาขึ้นครั้งแรกที่ภาควิชาวิทยาการคอมพิวเตอร์ (DIKU) มหาวิทยาลัย...
ฟูทาร์ค (ภาษาโปรแกรม)
| ฟูทาร์ค | |
|---|---|
| กระบวนทัศน์ | อาร์เรย์ , ฟังก์ชัน |
| ตระกูล | เอ็มแอล |
| ออกแบบโดย | โทรลส์ เฮนริกเซ่น, คอสมิน โออันเซีย, มาร์ติน เอลส์แมน |
| นักพัฒนา | มหาวิทยาลัยโคเปนเฮเกน[ 1 ] |
| ปรากฏครั้งแรก | 2014 |
| วินัยในการพิมพ์ | อนุมาน , คงที่ , แข็งแกร่ง , ฮินด์ลีย์-มิลเนอร์ , ความเป็นเอกลักษณ์ , ขึ้นอยู่กับ |
| โอเอส | ข้ามแพลตฟอร์ม |
| ใบอนุญาต | ไอเอสซี |
| เว็บไซต์ | futhark-lang |
| ได้รับอิทธิพลจาก | |
| APL , Haskell , NESL , ML มาตรฐาน | |
Futharkเป็นภาษาโปรแกรมแบบหลายพาราดิกม์ระดับสูงเชิงฟังก์ชันแบบขนานข้อมูลและแบบอาร์เรย์ เป็นภาษาถิ่นของภาษาMLซึ่งพัฒนาขึ้นครั้งแรกที่ภาควิชาวิทยาการคอมพิวเตอร์ (DIKU) มหาวิทยาลัย UCPH เป็นส่วนหนึ่งของโครงการ HIPERFIT [ 2 ]โดยมุ่งเน้นที่การทำให้โปรแกรมแบบขนานข้อมูลที่เขียนในรูปแบบเชิงฟังก์ชันสามารถทำงานได้อย่างมีประสิทธิภาพสูงบน ฮาร์ดแวร์ แบบขนานขนาดใหญ่โดยเฉพาะหน่วยประมวลผลกราฟิก (GPU) Futhark ได้รับแรงบันดาลใจอย่างมากจากNESLและการใช้งานของมันใช้รูปแบบหนึ่งของการแปลงแบบ flatteningแต่กำหนดข้อจำกัดเกี่ยวกับวิธีการแสดงความขนานเพื่อให้สามารถเพิ่มประสิทธิภาพการคอมไพเลอร์ได้มากขึ้น โดยเฉพาะอย่างยิ่ง ไม่รองรับความขนานข้อมูลแบบซ้อนกันที่ไม่สม่ำเสมอ[ 3 ]เป็นซอฟต์แวร์ฟรีและโอเพนซอร์ส ที่ เผยแพร่ ภายใต้ใบอนุญาต ISC
ภาพรวม
Futhark เป็นภาษาใน ตระกูล MLซึ่งมีไวยากรณ์ที่ไม่คำนึงถึงการเยื้องที่ได้มาจากOCaml , Standard MLและHaskell ระบบประเภทนั้นอิงตามระบบประเภท Hindley–Milnerพร้อมส่วนขยายต่างๆ เช่นประเภทเอกลักษณ์และประเภทที่ขึ้นอยู่กับ ขนาด Futhark ไม่ได้มีจุดประสงค์เพื่อเป็นภาษาโปรแกรมอเนกประสงค์สำหรับการเขียนแอปพลิเคชันแบบเต็มรูปแบบ แต่เน้นไปที่การเขียนเคอร์เนลการคำนวณ (ซึ่งไม่เหมือนกับเคอร์เนล GPU เสมอไป ) ซึ่งจะถูกเรียกใช้จากแอปพลิเคชันที่เขียนด้วยภาษาทั่วไป[ 4 ]
ฟูทาร์กตั้งชื่อตามอักษรหกตัวแรกของอักษรรูน [ 5 ] : 2
ตัวอย่าง
ผลคูณดอท
โปรแกรมต่อไปนี้คำนวณผลคูณดอทของเวกเตอร์สองตัวที่ประกอบด้วยตัวเลขทศนิยมสองตำแหน่ง
def dotprod xs ys = f64.sum ( map2 ( * ) xs ys ) )นอกจากนี้ ยังสามารถเขียนในรูปแบบเดียวกันโดยระบุประเภทอย่างชัดเจนได้ดังนี้
def dotprod [ n ] ( xs : [ n ] f64 ) ( ys : [ n ] f64 ) : f64 = f64 . sum ( map2 ( * ) xs ys ))วิธีนี้ทำให้ระบุประเภทที่ขึ้นอยู่กับขนาดได้อย่างชัดเจน: ฟังก์ชันนี้สามารถเรียกใช้ได้เฉพาะกับอาร์เรย์สองชุดที่มีขนาดเท่ากันเท่านั้น และตัวตรวจสอบประเภทจะปฏิเสธโปรแกรมใดๆ ที่ไม่สามารถระบุขนาดได้แบบคงที่
การคูณเมทริกซ์
โปรแกรมต่อไปนี้ทำการคูณเมทริกซ์โดยใช้คำนิยามของผลคูณดอทที่กล่าวไว้ข้างต้น
def matmul [ n ][ m ][ p ] ( A : [ n ][ m ] f64 ) ( B : [ m ][ p ] f64 ) : [ n ][ p ] f64 = map ( \ A_row -> map ( \ B_col -> dotprod A_row B_col ) ( transpose B )) Aนี่แสดงให้เห็นว่าประเภทข้อมูลบังคับให้ฟังก์ชันถูกเรียกใช้กับเมทริกซ์ที่มีขนาดเข้ากันได้เท่านั้น นอกจากนี้ยังเป็นตัวอย่างของการประมวลผลแบบขนานข้อมูล ซ้อน กัน อีกด้วย
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ฟูทาร์ค (ภาษาโปรแกรม)
Futharkเป็นภาษาโปรแกรมแบบหลายพาราดิกม์ระดับสูงเชิงฟังก์ชันแบบขนานข้อมูลและแบบอาร์เรย์ เป็นภาษาถิ่นของภาษาMLซึ่งพัฒนาขึ้นครั้งแรกที่ภาควิชาวิทยาการคอมพิวเตอร์ (DIKU) มหาวิทยาลัย...
ภาพรวม
Futhark เป็นภาษาใน ตระกูล ML ซึ่งมีไวยากรณ์ที่ไม่คำนึงถึงการเยื้องที่ได้มาจาก OCaml , Standard ML และ Haskell ระบบประเภท นั้นอิงตาม ระบบประเภท Hindley–Milner พร้อมส่วนขยายต่างๆ เช่น ประเภทเอกลักษณ์ และ ประเภทที่ขึ้นอยู่กับ ขนาด Futhark...
ผลคูณดอท
โปรแกรมต่อไปนี้คำนวณ ผลคูณดอท ของเวกเตอร์สองตัวที่ประกอบด้วยตัวเลขทศนิยมสองตำแหน่ง
การคูณเมทริกซ์
โปรแกรมต่อไปนี้ทำการ คูณเมทริกซ์ โดยใช้คำนิยามของผลคูณดอทที่กล่าวไว้ข้างต้น