Worgle คือเว็บ ORg TanGLEr อย่างน้อยที่สุดก็มีจุดมุ่งหมายเพื่อให้สามารถยุ่งเหยิงสำหรับโปรแกรมการรู้หนังสือที่เขียนในชุดย่อยของมาร์กอัป org ที่เข้ากันได้กับ org-babel ซึ่งรวมถึงการขยายโค้ดสไตล์ noweb ซึ่งเป็นส่วนสำคัญในการเขียนโปรแกรม (ซึ่งมักจะดูเหมือนว่าจะถูกละเลยในโปรแกรมจัดการโหมดองค์กรที่ไม่ใช่ emacs) ในที่สุด ความหวังคือการแนะนำไวยากรณ์ที่คล้ายกับเว็บมากขึ้น และสร้างแบ็กเอนด์สำหรับการสาน (ส่งออกเป็น HTML, TeX ฯลฯ)
แรงจูงใจเริ่มแรกในการสร้าง Worgle คือประสิทธิภาพ การพันกันที่ทำโดย org-babel นั้นช้าอย่างน่าเขินอายจนไม่มีประโยชน์สำหรับโปรเจ็กต์ใด ๆ ที่ใหญ่กว่าสคริปต์ Worgle มุ่งหวังที่จะทำให้ org-tangle สามารถใช้งานได้กับโครงการซอฟต์แวร์จริง
เป้าหมายที่ใหญ่กว่าคือการสร้างผู้สืบทอดทางจิตวิญญาณของ CWEB ซึ่งเป็นโปรแกรมที่ฉันใช้เป็นประจำทุกวันเพื่อเขียนโปรแกรมที่รู้หนังสือในภาษา C มันอาจจะเป็นหนึ่งในเครื่องมือการเขียนโปรแกรมที่รู้หนังสือที่ดีที่สุด ขณะนี้มีอายุมากกว่า 3 ทศวรรษแล้ว CWEB กำลังแสดงสัญญาณของความชราอย่างแน่นอน
ขณะนี้ Worgle มีคุณสมบัติเพียงพอที่จะเป็นประโยชน์
คุณลักษณะขั้นสูงใดๆ ของโหมดองค์กรจะไม่ถูกนำมาใช้ Emacs จัดการเรื่องนั้นได้ดีมากถ้าคุณต้องการ
หากต้องการคอมไพล์ ให้รัน make
หากต้องการติดตั้ง ให้รัน sudo make install
ปรากฎว่า README นี้ คือ โค้ดตัวอย่าง เจ๋งใช่มั้ย?
บล็อกโค้ดสำหรับโปรแกรม Hello World อย่างง่ายในภาษา C มีลักษณะดังนี้:
#include <stdio.h>
int main ( int argc , char * argv [])
{
<< say_the_worgle_greeting >>
return 0 ;
}
โค้ดที่กล่าวถึงข้างต้นมีบล็อกโค้ดที่เรียกว่า say_the_worgle_greeting
สิ่งนี้ได้รับการขยายไปยังบล็อคโค้ดด้านล่างนี้:
printf ( "Orgle Worgle Borgle!n" );
รหัส C พันกันโดยใช้ orgle
bootstrapper ซึ่งสามารถคอมไพล์และรันได้โดยใช้คอมไพเลอร์ C เช่น GCC
./orgle README.org
gcc hello.c -o hello
./hello
การทดสอบประสิทธิภาพแบบไม่เป็นทางการบ่งชี้ว่า Worgle สามารถพันตัวเองได้เร็วกว่า Emacs ถึง 1300x (!) การทดสอบเสร็จสิ้นโดยใช้เชลล์สคริปต์ Measure_Performance.sh
ผลลัพธ์ที่พิมพ์ด้านล่างนี้มาจาก MacBook pro กลางปี 2015 ที่ใช้ High Sierra
Org-babel-tangle (ผ่าน Emacs): 0m1.318s เวิร์ล: 0m0.001s
โครงการนี้อยู่ภายใต้สาธารณสมบัติ ขอให้มีความสุขกับการแฮ็คนะมนุษย์