ภาษาพีต (อังกฤษ: Piet) คือภาษาโปรแกรมเชิงความลับที่ออกแบบโดยเดวิด มอร์แกน-มาร์ (David Morgan-Mar) โดยใช้ภาพบิตแมปซึ่งดูคล้ายศิลปะนามธรรมเป็นสื่อกลางสำหรับการเขียนโปรแกรม ภาษาพีต‌ได้รับการตั้งชื่อตามศิลปินชาวดัตช์ชื่อ พีต มอนดรีออน (Piet Mondrian) ผู้ซึ่งสร้างผลงานศิลปะนามธรรมด้วยเส้นและบล็อกสี่เหลี่ยม

ตัวอย่างโปรแกรมในภาษาพีต แสดงผลลัพธ์เป็นข้อความ "Piet"

รูปแบบการเขียน แก้

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

#FFC0C0
(แดงอ่อน)
#FFFFC0
(เหลืองอ่อน)
#C0FFC0
(เขียวอ่อน)
#C0FFFF
(ฟ้าอ่อน)
#C0C0FF
(น้ำเงินอ่อน)
#FFC0FF
(ม่วงอ่อน)
#FF0000
(แดง)
#FFFF00
(เหลือง)
#00FF00
(เขียว)
#00FFFF
(ฟ้า)
#0000FF
(น้ำเงิน)
#FF00FF
(ม่วง)
#C00000
(แดงเข้ม)
#C0C000
(เหลืองเข้ม)
#00C000
(เขียวเข้ม)
#00C0C0
(ฟ้าเข้ม)
#0000C0
(น้ำเงินเข้ม)
#C000C0
(ม่วงเข้ม)
#FFFFFF
(ขาว)
#000000
(ดำ)

ความหมายและการทำงาน แก้

 
โปรแกรมแสดงข้อความ "Hello, world!"
 
เส้นทางการเดินตามโคเดลของโปรแกรมดังกล่าว

ความหมายของคำสั่งสามารถแปลได้จากความต่างของค่าสี (hue) และความสว่าง (lightness) ระหว่างโคเดลก่อนหน้ากับโคเดลปัจจุบันในขณะทำงาน โดยการวนรอบ (cycle) เพื่อพิจารณาความต่างของค่าสีจะเรียงลำดับจาก แดง→เหลือง→เขียว→ฟ้า→น้ำเงิน→ม่วง→แดง และความสว่างเรียงตาม อ่อน→กลาง→เข้ม→อ่อน ส่วนสีขาวและสีดำไม่อยู่ในการวนรอบใดๆ ซึ่งคำสั่งทุกอย่างจะแปลผลด้วยอินเทอร์พรีเตอร์และเก็บทุกสิ่งที่คำนวณได้ไว้ในสแต็ก (stack) หากคำสั่งใดไม่สามารถกระทำได้ คำสั่งนั้นจะถูกข้ามไป เช่น คำสั่ง pop ออกจากสแต็กว่างเปล่า เป็นต้น

ความสว่าง
ค่าสี ไม่ต่าง ต่าง 1 ขั้น ต่าง 2 ขั้น
ไม่ต่าง - push pop
ต่าง 1 ขั้น add subtract multiply
ต่าง 2 ขั้น divide mod not
ต่าง 3 ขั้น greater pointer switch
ต่าง 4 ขั้น duplicate roll in (ตัวเลข)
ต่าง 5 ขั้น in (ตัวอักษร) out (ตัวเลข) out (ตัวอักษร)

การทำงานจะเริ่มจากโคเดลที่มุมซ้ายบนสุดของภาพและเดินต่อไปบนโคเดลที่อยู่ติดกัน ทิศทางของการเดินถูกกำหนดด้วย พอยเตอร์ทิศทาง (DP) โดยมีทิศทางไปทางขวาเป็นค่าเริ่มต้น ซึ่งพอยเตอร์ทิศทางนี้สามารถเปลี่ยนให้เป็นค่าบน ล่าง ซ้าย ขวา ได้ตามต้องการ และยังมีตัวแปรหนึ่งเรียกว่า ตัวเลือกโคเดล (CC) ใช้สำหรับพิจารณาเปลี่ยนการเดินไปทางซ้ายหรือทางขวาเมื่อโคเดลถัดไปนั้นเดินต่อไปไม่ได้หรือไม่มี กล่าวคือ เป็นโคเดลสีดำหรืออยู่ที่สุดขอบภาพ ซึ่งโคเดลสีดำเปรียบเสมือน "กำแพง" ที่ไม่สามารถเดินผ่านไปได้ ส่วนโคเดลสีขาวจะไม่ทำงานใดๆ (เดินผ่านไป) โปรแกรมจะสิ้นสุดการทำงานเมื่อไม่มีทางอื่นให้เดินต่อไป ทั้งพอยเตอร์ทิศทางและตัวเลือกโคเดลอาจมีการเปลี่ยนแปลงบ่อยในโปรแกรมหนึ่งๆ และทุกโคเดลในภาพไม่จำเป็นต้องเดินผ่านทั้งหมด

อ้างอิง แก้

  • ภาษาพีต โดยเดวิด มอร์แกน-มาร์ พร้อมตัวอย่าง

ดูเพิ่ม แก้

แหล่งข้อมูลอื่น แก้