ภาษาพีต
ภาษาพีต (อังกฤษ: Piet) คือภาษาโปรแกรมเชิงความลับที่ออกแบบโดยเดวิด มอร์แกน-มาร์ (David Morgan-Mar) โดยใช้ภาพบิตแมปซึ่งดูคล้ายศิลปะนามธรรมเป็นสื่อกลางสำหรับการเขียนโปรแกรม ภาษาพีตได้รับการตั้งชื่อตามศิลปินชาวดัตช์ชื่อ พีต มอนดรีออน (Piet Mondrian) ผู้ซึ่งสร้างผลงานศิลปะนามธรรมด้วยเส้นและบล็อกสี่เหลี่ยม
รูปแบบการเขียน
[แก้]โปรแกรมที่เขียนด้วยภาษาพีตจะใช้ภาพบิตแมปที่อยู่ในรูปแบบ GIF ขนาดกว้างยาวใดๆ ก็ได้เป็นสื่อกลาง (เทียบเท่ากับซอร์สโค้ด) พิกเซลแต่ละช่องใช้แทนคำสั่งหนึ่งคำสั่งและมีชื่อเรียกว่า โคเดล (โค้ด+พิกเซล) สีที่สามารถใส่ได้ในแต่ละโคเดลของภาพบิตแมปมีได้เพียง 20 สีต่อไปนี้ สำหรับสีอื่นๆ ที่ปรากฏนอกเหนือจากนี้จะมีความหมายเป็นสีขาว
#FFC0C0 (แดงอ่อน) |
#FFFFC0 (เหลืองอ่อน) |
#C0FFC0 (เขียวอ่อน) |
#C0FFFF (ฟ้าอ่อน) |
#C0C0FF (น้ำเงินอ่อน) |
#FFC0FF (ม่วงอ่อน) |
#FF0000 (แดง) |
#FFFF00 (เหลือง) |
#00FF00 (เขียว) |
#00FFFF (ฟ้า) |
#0000FF (น้ำเงิน) |
#FF00FF (ม่วง) |
#C00000 (แดงเข้ม) |
#C0C000 (เหลืองเข้ม) |
#00C000 (เขียวเข้ม) |
#00C0C0 (ฟ้าเข้ม) |
#0000C0 (น้ำเงินเข้ม) |
#C000C0 (ม่วงเข้ม) |
#FFFFFF (ขาว) |
#000000 (ดำ) |
ความหมายและการทำงาน
[แก้]ความหมายของคำสั่งสามารถแปลได้จากความต่างของค่าสี (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) ใช้สำหรับพิจารณาเปลี่ยนการเดินไปทางซ้ายหรือทางขวาเมื่อโคเดลถัดไปนั้นเดินต่อไปไม่ได้หรือไม่มี กล่าวคือ เป็นโคเดลสีดำหรืออยู่ที่สุดขอบภาพ ซึ่งโคเดลสีดำเปรียบเสมือน "กำแพง" ที่ไม่สามารถเดินผ่านไปได้ ส่วนโคเดลสีขาวจะไม่ทำงานใดๆ (เดินผ่านไป) โปรแกรมจะสิ้นสุดการทำงานเมื่อไม่มีทางอื่นให้เดินต่อไป ทั้งพอยเตอร์ทิศทางและตัวเลือกโคเดลอาจมีการเปลี่ยนแปลงบ่อยในโปรแกรมหนึ่งๆ และทุกโคเดลในภาพไม่จำเป็นต้องเดินผ่านทั้งหมด
อ้างอิง
[แก้]- ภาษาพีต โดยเดวิด มอร์แกน-มาร์ พร้อมตัวอย่าง
ดูเพิ่ม
[แก้]แหล่งข้อมูลอื่น
[แก้]- ภาษาพีตที่เอโซแลง (วิกิ)
- Hello, world! ในภาษาพีต โดยโทมัส สคอช
- โปรแกรมเขียนและอินเทอร์พรีเตอร์สำหรับภาษาพีต