ภาษาโปรแกรมเพื่อการศึกษาใหม่ที่เรียกว่า Titania ซึ่งพัฒนาบนพื้นฐานของ Oberon-07 ของ Niklaus Wirth ได้ปรากฏขึ้นเป็นเครื่องมือสำหรับการสอนการพัฒนาคอมไพเลอร์ ภาษานี้ได้รับการตั้งชื่อตาม Titania ภรรยาของ Oberon ในบทละครเรื่อง A Midsummer Night's Dream ของ Shakespeare โดยมีเป้าหมายเพื่อให้พื้นฐานที่เรียบง่ายแต่ครอบคลุมสำหรับการทำความเข้าใจหลักการสร้างคอมไพเลอร์
คำสำคัญของภาษา Titania
- การควบคุมการทำงาน:
if,then,else,elself,case,of,while,do,for,to,by,repeat,until - การประกาศ:
module,import,const,type,var,proc,begin,end,return - ตัวดำเนินการ:
and,or,xor,not,in,is - ค่าคงที่:
true,false,nil
ความขัดแย้งเรื่องตำแหน่งการประกาศตัวแปร
การอภิปรายที่ร้อนแรงที่สุดในหมู่นักพัฒนาเป็นเรื่องของข้อกำหนดของ Titania ที่ต้องประกาศตัวแปรทั้งหมดที่ด้านบนของฟังก์ชัน ตามแบบแผนของภาษา Wirthian แบบดั้งเดิม นักวิจารณ์โต้แย้งว่าการเลือกออกแบบนี้สร้างความยุ่งยากที่ไม่จำเป็นในกระบวนการพัฒนา นักพัฒนาที่มีประสบการณ์คนหนึ่งได้กล่าวถึงความท้าทายในทางปฏิบัติ:
ฉันเคยเขียนโค้ดที่อ่านยากกว่าที่ตั้งใจไว้ เพราะไม่อยากขึ้นไปประกาศตัวแปรอีกตัวสำหรับการใช้งานระยะสั้น การล่อลวงให้ใส่นิพจน์แบบ inline มีอยู่เสมอ เพราะคุณรู้ว่าทุกส่วนหมายถึงอะไรเมื่อคุณเขียนมัน
การวิจารณ์นี้เน้นให้เห็นว่าข้อกำหนดการประกาศในระดับบนสุดสามารถนำไปสู่โค้ดที่อ่านยากขึ้นเมื่อนักพัฒนาหลีกเลี่ยงการสร้างตัวแปรกลางที่เป็นประโยชน์ การเลื่อนหน้าจอไปมาระหว่างการประกาศตัวแปรและจุดที่ใช้งานอย่างต่อเนื่องจะกลายเป็นเรื่องยุ่งยากโดยเฉพาะในฟังก์ชันที่ยาว
อย่างไรก็ตาม ผู้สนับสนุนโต้แย้งว่าข้อจำกัดนี้มีจุดประสงค์ทางการศึกษาที่สำคัญโดยการส่งเสริมให้มีฟังก์ชันที่สั้นและมีจุดเน้นมากขึ้น ข้อจำกัดนี้ผลักดันนักพัฒนาไปสู่การจัดระเบียบโค้ดที่ดีขึ้นและรูปแบบการออกแบบแบบโมดูลาร์โดยธรรมชาติ
การมุ่งเน้นด้านการศึกษาและคุณสมบัติของภาษา
Titania รวมความสะดวกสมัยที่ไม่พบใน Oberon แบบดั้งเดิม เช่น ฟังก์ชันพิมพ์แบบ variadic และขั้นตอนการจัดการหน่วยความจำ ภาษานี้รองรับโครงสร้างการเขียนโปรแกรมที่คุ้นเคย รวมถึงอาร์เรย์ เรคอร์ด พอยน์เตอร์ และโพรซีเดอร์ ในขณะที่รักษาไวยากรณ์ที่สะอาดซึ่งเป็นลักษณะเฉพาะของปรัชญาการออกแบบของ Wirth
ข้อกำหนดไวยากรณ์เผยให้เห็นภาษาที่สร้างสมดุลระหว่างความเรียบง่ายกับการทำงาน โพรซีเดอร์ที่มีอยู่แล้วครอบคลุมการดำเนินการที่จำเป็น ตั้งแต่ฟังก์ชันคณิตศาสตร์พื้นฐานเช่น abs() และ odd() ไปจนถึงการจัดการหน่วยความจำด้วย new() และ delete() รวมถึงฟังก์ชันยูทิลิตี้สำหรับความยาวของอาร์เรย์และข้อมูลประเภท
ฟังก์ชันในตัวหลัก
- การคำนวณ:
abs(x),odd(x),floor(x),ceil(x) - การจัดการหน่วยความจำ:
new(ptr),delete(ptr),addr(x),copy(dst, src, n) - การดำเนินการกับประเภทข้อมูล:
size_of(x),align_of(x),len(x) - การดำเนินการบิต:
lsh(x, y),ash(x, y),ror(x, y) - การแปลงข้อมูล:
chr(i),ord(c) - เครื่องมือช่วย:
inc(x),dec(x),incl(x, y),excl(x, y),assert(cond) - อินพุต/เอาต์พุต:
print(...),println(...)
การตอบรับจากชุมชนและทิศทางในอนาคต
นักพัฒนาแสดงความสนใจเป็นพิเศษในการเชื่อมโยงของภาษากับ Odin ซึ่งเป็นภาษาโปรแกรมระบบสมัยใหม่อีกภาษาหนึ่ง การแลกเปลี่ยนแนวคิดระหว่างภาษาเพื่อการศึกษาและภาษาสำหรับการผลิตชี้ให้เห็นว่า Titania อาจมีอิทธิพลต่อการอภิปรายการออกแบบภาษาในวงกว้างนอกเหนือจากขอบเขตการสอนที่ตั้งใจไว้
โครงการนี้แสดงถึงแนวทางที่รอบคอบต่อการศึกษาคอมไพเลอร์ โดยให้นักเรียนมีข้อกำหนดภาษาที่สมบูรณ์แต่จัดการได้ แม้ว่าการถกเถียงจะยังคงดำเนินต่อไปเกี่ยวกับตัวเลือกการออกแบบเฉพาะ แต่ชุมชนโดยทั่วไปชื่นชมที่มีเครื่องมืออีกตัวหนึ่งในชุดเครื่องมือภาษาโปรแกรมเพื่อการศึกษา
อ้างอิง: Titania Programming Language
