ภาษาโปรแกรมเพื่อการศึกษาใหม่ที่เรียกว่า 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