กลับไปหน้าบทความ

อ่าน 2 นาที

ฟูทาร์ค (ภาษาโปรแกรม)

Futharkเป็นภาษาโปรแกรมแบบหลายพาราดิกม์ระดับสูงเชิงฟังก์ชันแบบขนานข้อมูลและแบบอาร์เรย์ เป็นภาษาถิ่นของภาษาMLซึ่งพัฒนาขึ้นครั้งแรกที่ภาควิชาวิทยาการคอมพิวเตอร์ (DIKU) มหาวิทยาลัย...

ฟูทาร์ค (ภาษาโปรแกรม)

ฟูทาร์ค
กระบวนทัศน์อาร์เรย์ , ฟังก์ชัน
ตระกูลเอ็มแอล
ออกแบบโดยโทรลส์ เฮนริกเซ่น, คอสมิน โออันเซีย, มาร์ติน เอลส์แมน
นักพัฒนามหาวิทยาลัยโคเปนเฮเกน[ 1 ]
ปรากฏครั้งแรก2014 ( 2014 )
วินัยในการพิมพ์อนุมาน , คงที่ , แข็งแกร่ง , ฮินด์ลีย์-มิลเนอร์ , ความเป็นเอกลักษณ์ , ขึ้นอยู่กับ
โอเอสข้ามแพลตฟอร์ม
ใบอนุญาตไอเอสซี
เว็บไซต์futhark-lang .org
ได้รับอิทธิพลจาก
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

นี่แสดงให้เห็นว่าประเภทข้อมูลบังคับให้ฟังก์ชันถูกเรียกใช้กับเมทริกซ์ที่มีขนาดเข้ากันได้เท่านั้น นอกจากนี้ยังเป็นตัวอย่างของการประมวลผลแบบขนานข้อมูล ซ้อน กัน อีกด้วย

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Futhark_(programming_language)&oldid=1271834659 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ฟูทาร์ค (ภาษาโปรแกรม)

Futharkเป็นภาษาโปรแกรมแบบหลายพาราดิกม์ระดับสูงเชิงฟังก์ชันแบบขนานข้อมูลและแบบอาร์เรย์ เป็นภาษาถิ่นของภาษาMLซึ่งพัฒนาขึ้นครั้งแรกที่ภาควิชาวิทยาการคอมพิวเตอร์ (DIKU) มหาวิทยาลัย...

ภาพรวม

Futhark เป็นภาษาใน ตระกูล ML ซึ่งมีไวยากรณ์ที่ไม่คำนึงถึงการเยื้องที่ได้มาจาก OCaml , Standard ML และ Haskell ระบบประเภท นั้นอิงตาม ระบบประเภท Hindley–Milner พร้อมส่วนขยายต่างๆ เช่น ประเภทเอกลักษณ์ และ ประเภทที่ขึ้นอยู่กับ ขนาด Futhark...

ผลคูณดอท

โปรแกรมต่อไปนี้คำนวณ ผลคูณดอท ของเวกเตอร์สองตัวที่ประกอบด้วยตัวเลขทศนิยมสองตำแหน่ง

การคูณเมทริกซ์

โปรแกรมต่อไปนี้ทำการ คูณเมทริกซ์ โดยใช้คำนิยามของผลคูณดอทที่กล่าวไว้ข้างต้น