กลับไปหน้าบทความ

อ่าน 6 นาที

เรโบล

Rebol ( / ˈ r ɛ b əl / REB -əl ; ในอดีตคือ REBOL ) เป็น ภาษาแลกเปลี่ยนข้อมูล ข้ามแพลตฟอร์ม [ 6 ] และ ภาษาการเขียนโปรแกรมแบบไดนามิก หลายกระบวนทัศน์ ที่ออกแบบโดย Carl Sassenrath...

เรโบล

เรโบล
กระบวนทัศน์เน้นภาษา , การแลกเปลี่ยนข้อมูล , เชิงฟังก์ชัน , อิงตามต้นแบบ , เชิงคำสั่ง
ตระกูลเรโบล
ออกแบบโดยคาร์ล ซัสเซนราธ
นักพัฒนารีโบล เทคโนโลยีส์
ปรากฏครั้งแรกพ.ศ. 2540 ( 1997 )
เวอร์ชันเสถียร
2.7.8 / มกราคม 2554 ( 2011-01 )
รุ่นทดลองใช้งาน
2.101.0 / ธันวาคม 2012 ( 2012-12 )
วินัยในการพิมพ์มีพลังแข็งแกร่ง
โอเอสข้ามแพลตฟอร์ม
ใบอนุญาต2.7.8 เป็นซอฟต์แวร์ที่แจกจ่ายได้อิสระ [ 1 ] 2.101.0มีใบอนุญาต Apache 2.0 [ 2 ]
นามสกุลไฟล์.r, .reb [ 3 ]
เว็บไซต์www.rebol.com
ภาษาถิ่น
สีแดง
ได้รับอิทธิพลจาก
ตัวเอง , ฟอร์ธ , ลิสป์ , โลโก้[ 4 ]
ได้รับอิทธิพล
เจซอน [ 5 ] สีแดง
  • โลโก้ Wikibooksการเขียนโปรแกรม Rebolที่ Wikibooks

Rebol ( / ˈ r ɛ b əl / REB -əl ; ในอดีตคือREBOL ) เป็นภาษาแลกเปลี่ยนข้อมูลข้ามแพลตฟอร์ม[ 6 ] และภาษาการเขียนโปรแกรมแบบไดนามิกหลายกระบวนทัศน์ที่ออกแบบโดยCarl Sassenrathสำหรับการสื่อสารเครือข่ายและการประมวลผลแบบกระจายโดยนำเสนอแนวคิดของการแบ่งภาษา : ภาษาเฉพาะโดเมน ขนาดเล็ก ที่ได้รับการปรับให้เหมาะสมสำหรับโค้ดและข้อมูล[ 6 ] [ 7 ]ซึ่งเป็นคุณสมบัติที่โดดเด่นที่สุดของภาษาตามที่Carl Sassenrath ผู้ออกแบบกล่าว ไว้

ถึงแม้ว่าจะสามารถใช้สำหรับการเขียนโปรแกรม การเขียนฟังก์ชัน และการดำเนินการต่างๆ ได้ แต่จุดแข็งที่สำคัญที่สุดคือความสามารถในการสร้างภาษาหรือสำเนียงเฉพาะด้านได้อย่างง่ายดาย

— คาร์ล ซัสเซนราธ[ 8 ]

Douglas Crockfordซึ่งเป็นที่รู้จักจากการมีส่วนร่วมในการพัฒนาJavaScriptได้อธิบาย Rebol ว่าเป็น "ภาษาที่ทันสมัยกว่า แต่มีแนวคิดที่คล้ายคลึงกับLisp มาก โดยสร้างขึ้นจากการแสดงข้อมูลซึ่งสามารถดำเนินการเป็นโปรแกรมได้" และเป็นหนึ่งในอิทธิพลของJSON [ 5 ]

เดิมที ภาษาและการใช้งานอย่างเป็นทางการเป็นกรรมสิทธิ์และปิดแหล่งที่มา ซึ่งพัฒนาโดย REBOL Technologies หลังจากการหารือกับLawrence Rosen [ 9 ]ตัวแปล Rebol เวอร์ชัน 3 ได้รับการเผยแพร่ภายใต้Apache License 2.0 เมื่อวันที่ 12 ธันวาคม 2012 [ 10 ]เวอร์ชันเก่ามีให้ใช้งานในรูปแบบไบนารีเท่านั้น และไม่มีแผนที่จะเผยแพร่ ซอร์สโค้ด สำหรับ เวอร์ชัน เหล่านั้น

Rebol ถูกใช้ในการเขียนโปรแกรมแอปพลิเคชันอินเทอร์เน็ต (ทั้งฝั่งไคลเอนต์และฝั่งเซิร์ฟเวอร์ ) แอปพลิเคชันฐานข้อมูล ยูทิลิตี้และแอปพลิเคชันมัลติมีเดีย[ 6 ]

นิรุกติศาสตร์

เดิมที Rebol เป็นตัวย่อของR elative E xpression B ased O bject L anguage ซึ่งเขียนด้วยตัวพิมพ์ใหญ่ทั้งหมด[ 6 ] [ 8 ]เพื่อให้สอดคล้องกับแนวโน้มสมัยใหม่ในการตั้งชื่อภาษา เช่น การเปลี่ยนแปลงชื่อเดิมLISPเป็นLispโปรแกรมเมอร์จึงเลิกเขียนREBOLด้วยตัวพิมพ์ใหญ่ทั้งหมด ในที่สุด Sassenrath ก็ได้นำคำถามเรื่องการตั้งชื่อนี้ไปถกเถียงกันในชุมชนบนบล็อกของเขา[ 11 ]ในงานเขียนต่อมา Sassenrath ได้นำธรรมเนียมการเขียนชื่อภาษาเป็นRebol มา ใช้ [ 12 ]

ประวัติศาสตร์

Rebol เปิดตัวครั้งแรกในปี 1997 โดยได้รับการออกแบบตลอดระยะเวลากว่า 20 ปีโดย Carl Sassenrath สถาปนิกและนักพัฒนาหลักของAmigaOSโดยอิงจากการศึกษาเรื่องความหมายเชิงสัญลักษณ์ (denotational semantics)และ ใช้แนวคิดจากภาษาโปรแกรมLisp , Forth , LogoและSelf

  1. บริษัท REBOL Technologies ก่อตั้งขึ้นในปี 1998
  2. REBOL 2ซึ่งเป็นโปรแกรมแปลภาษาที่กลายเป็นหัวใจหลักของโปรแกรมแปลภาษารุ่นขยาย ได้ถูกปล่อยออกมาครั้งแรกในปี 1999
    1. REBOL/Commandซึ่งเพิ่มการเข้ารหัสที่แข็งแกร่งและ การเข้าถึง ODBCได้รับการเผยแพร่ในเดือนกันยายนปี 2000
    2. REBOL/Viewเปิดตัวในเดือนเมษายน พ.ศ. 2544 โดยเพิ่มความสามารถด้านกราฟิกให้กับภาษาหลัก
    3. REBOL/IOSซึ่งเป็นสภาพแวดล้อมการทำงานร่วมกันที่ขยายได้ สร้างขึ้นด้วย REBOL เปิดตัวในเดือนสิงหาคม พ.ศ. 2544
    4. REBOL/SDKซึ่งเป็นตัวเลือกเคอร์เนลที่สามารถเชื่อมต่อได้ รวมถึงตัวประมวลผลล่วงหน้า ถูกปล่อยออกมาในเดือนธันวาคม พ.ศ. 2545
  3. Rebol 3 [R3] ซึ่งเป็นเวอร์ชันล่าสุดของตัวแปลภาษามีเวอร์ชันอัลฟ่าที่เผยแพร่โดย REBOL Technologies ตั้งแต่เดือนมกราคม พ.ศ. 2551 นับตั้งแต่เปิดตัวเป็นโครงการ Apache 2 ในเดือนธันวาคม พ.ศ. 2555 ก็ได้รับการพัฒนาโดยชุมชน Rebol [ 13 ]

ออกแบบ

ใช้งานง่าย

หนึ่งในหลักการออกแบบของ Rebol คือ "การทำสิ่งง่ายๆ ด้วยวิธีที่ง่าย" [ 6 ]ในตัวอย่างต่อไปนี้ภาษาถิ่นอินเทอร์เฟซแบบภาพถูกใช้เพื่ออธิบายโปรแกรม Hello world ง่ายๆ ด้วยอินเทอร์เฟซผู้ใช้แบบกราฟิก:

เค้าโครงมุมมอง [ ข้อความ"สวัสดีโลก!" ปุ่ม"ออก" [ ออก ]] 

นี่คือตัวอย่างที่คล้ายกันซึ่งแสดงผลใน R3-GUI:

ดู [ ข้อความ"สวัสดีโลก!" ปุ่ม"ออก" เมื่อดำเนินการ [ ออก ]] 

ตัวอย่างโปรแกรม R3-GUI "Hello world"

ภาษาถิ่น

ภาษาเฉพาะโดเมนของ Rebol ที่เรียกว่าภาษาถิ่นเป็นภาษาขนาดเล็กที่ได้รับการปรับให้เหมาะสมสำหรับวัตถุประสงค์เฉพาะ ภาษาถิ่นสามารถใช้เพื่อกำหนดกฎทางธุรกิจ อินเทอร์เฟซผู้ใช้แบบกราฟิก หรือลำดับของหน้าจอระหว่างการติดตั้งโปรแกรม ผู้ใช้สามารถกำหนดภาษาถิ่นของตนเองได้ โดยนำคำ Rebol ที่มีอยู่มาใช้ซ้ำและให้ความหมายเฉพาะในภาษาถิ่นนั้น[ 6 ]ภาษาถิ่นจะถูกตีความโดยฟังก์ชันที่ประมวลผลบล็อก Rebol (หรือแยกวิเคราะห์สตริง) ในลักษณะเฉพาะ

ตัวอย่างหนึ่งของความสามารถในการสร้างภาษาถิ่นของ Rebol สามารถเห็นได้จากคำว่าreturnในภาษาถิ่นการแลกเปลี่ยนข้อมูลreturnเป็นเพียงคำที่ไม่มีความหมายเฉพาะเจาะจง ในภาษาถิ่น doเป็นreturnตัวแปรส่วนกลางที่อ้างถึงฟังก์ชัน ดั้งเดิม ที่ส่งค่าผลลัพธ์ของฟังก์ชันกลับมา[ 4 ]ในภาษาถิ่นอินเทอร์เฟซภาพ (VID)เป็นreturnคำหลักที่ทำให้เอ็นจิ้นการจัดวางจำลองการขึ้นบรรทัดใหม่โดยย้าย "ปากกาแสดงผล" ลงไปยังจุดเริ่มต้นของบรรทัดถัดไป[ 7 ]

ล่ามภาษาเรโบลที่มีความสามารถด้านกราฟิกต้องเข้าใจและแปลภาษาถิ่นหลายภาษา ตารางด้านล่างแสดงรายการภาษาถิ่นที่สำคัญที่สุดเรียงตามลำดับความสำคัญ

ชื่อภาษาถิ่น แปลโดย วัตถุประสงค์
ภาษาแลกเปลี่ยนข้อมูล loadการทำงาน แสดงถึงข้อมูลและเมตาเดตา; แพลตฟอร์มทั่วไปสำหรับภาษาถิ่นเรโบล
ใช้ภาษาถิ่น doการทำงาน การเขียนโปรแกรม
ภาษาถิ่นวิเคราะห์ parseการทำงาน การจับคู่รูปแบบ
ภาษาถิ่นของการกำหนดฟังก์ชัน makeการทำงาน นิยาม ฟังก์ชัน ; การเขียนโปรแกรมเชิงฟังก์ชัน
ภาษาถิ่นของการกำหนดวัตถุ makeการทำงาน การกำหนด/สืบทอด วัตถุ ; การเขียนโปรแกรมแบบอิงต้นแบบ
ภาษาอินเทอร์เฟซภาพ (VID) หรือRebGUI layoutฟังก์ชันหรือdisplayฟังก์ชัน ระบุส่วนติดต่อผู้ใช้แบบกราฟิก
วาดภาษาถิ่น viewการทำงาน กำหนดองค์ประกอบกราฟิก (เส้นตรง รูปหลายเหลี่ยม ฯลฯ)
ภาษาถิ่นของการกำหนดสคริปต์ doการทำงาน คำจำกัดความของสคริปต์
ภาษาถิ่นนโยบายความปลอดภัย secureการทำงาน ระบุถึงนโยบายความปลอดภัย

ไวยากรณ์

ไวยากรณ์ของ Rebol เป็นแบบอิสระไม่จำเป็นต้องกำหนดตำแหน่งเฉพาะเจาะจง อย่างไรก็ตาม มักใช้ การเว้นวรรคเพื่อช่วยให้ผู้อ่านเข้าใจโครงสร้างของข้อความได้ดียิ่งขึ้น

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

ตรงกันข้ามกับภาษาโปรแกรมอย่างCภาษาแลกเปลี่ยนข้อมูลไม่ได้ประกอบด้วยการประกาศคำสั่ง นิพจน์หรือคำหลัก สตรีม ข้อความ ภาษาแลกเปลี่ยนข้อมูล ที่ถูกต้อง คือโครงสร้างข้อมูลแบบต้นไม้ซึ่งประกอบด้วยบล็อก (บล็อกรากเป็นค่าโดยปริยาย บล็อกย่อยถูกคั่นด้วยวงเล็บเหลี่ยม ) วงเล็บ (คั่นด้วยวงเล็บกลม ) สตริง (คั่นด้วยเครื่องหมายอัญประกาศคู่หรือวงเล็บปีกกาที่เหมาะสมสำหรับสตริงหลายบรรทัดใช้สัญกรณ์ caret สำหรับอักขระที่ไม่สามารถพิมพ์ได้) URLที่อยู่อีเมล ไฟล์ เส้นทาง หรือค่าประกอบ อื่นๆ ต่างจากบล็อกALGOL บล็อก Rebol เป็นค่าประกอบที่คล้ายกับนิพจน์ s ที่อยู่ในเครื่องหมายอัญประกาศ ในLispข้อเท็จจริงที่ว่าโค้ดเขียนในรูปแบบของบล็อก Rebol ทำให้ภาษานี้เป็นhomoiconic [ 4 ]

บล็อกและวงเล็บอาจบรรจุค่าผสมอื่นๆ (บล็อกอาจบรรจุบล็อกย่อย วงเล็บ สตริง ฯลฯ) หรือค่าสเกลาร์เช่น คำ คำที่ต่อท้ายด้วยเครื่องหมายโคลอน คำที่ขึ้นต้นด้วยเครื่องหมายโคลอน คำที่ขึ้นต้นด้วยเครื่องหมายอะพอสโทรฟีตัวเลขเงินตัวอักษรฯลฯ โดยคั่นด้วยช่องว่างอนุญาตให้ใช้อักขระพิเศษในคำได้ เช่น ซึ่งa+bเป็นคำที่แตกต่างจากa + bซึ่งเป็นลำดับของคำสามคำที่คั่นด้วยช่องว่าง

สามารถใส่ ความคิดเห็นต่อท้ายเครื่องหมายเซมิโคลอนจนถึงท้ายบรรทัดได้ สามารถเขียนความคิดเห็นแบบหลายบรรทัดหรือความคิดเห็นที่ตัวแยกวิเคราะห์คำศัพท์ไม่ละเว้นได้โดยใช้ชนิดข้อมูล "ทั่วไป" เช่น สตริงแบบหลายบรรทัด[ 4 ]

ความหมาย

บล็อกที่มีภาษาเฉพาะโดเมนสามารถส่งเป็นอาร์กิวเมนต์ ไปยัง ฟังก์ชันประเมินเฉพาะได้[ 6 ]

ทำ

ตัวประเมินที่ใช้บ่อยที่สุดคือdoฟังก์ชัน โดยค่าเริ่มต้นจะใช้ฟังก์ชันนี้ในการตีความข้อความที่ป้อนเข้าไปในคอนโซล ของตัวแปล ภาษา

ภาษาdoซึ่งถูกตีความโดยdoฟังก์ชัน เป็น ภาษาย่อย ที่เน้นการแสดงออกของภาษาแลกเปลี่ยนข้อมูลหน่วยความหมายหลักของภาษานี้คือการแสดงออกแตกต่างจากภาษาโปรแกรมเชิงคำสั่งที่สืบทอดมาจากALGOLภาษาdoไม่มีทั้งคำหลักและคำสั่ง

คำต่างๆ ถูกใช้เป็นตัวแปรที่ไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก เช่นเดียวกับในภาษาที่มีการกำหนดประเภทแบบไดนามิก ทั้งหมด ตัวแปรไม่มีประเภทที่เกี่ยวข้อง ประเภทจะเชื่อมโยงกับค่า ผลลัพธ์ กล่าวคือ การประเมินคำ จะถูกส่งคืนเมื่อฟังก์ชันพบคำนั้น รูปแบบคำที่กำหนดไว้สามารถใช้สำหรับการกำหนดค่าได้แม้ว่าจะไม่มีคำสั่ง การกำหนดค่าร่วมกับฟังก์ชันที่มีผลข้างเคียงสามารถใช้สำหรับ การ เขียนโปรแกรมเชิงคำสั่งได้[ 4 ]do

บล็อกย่อยของบล็อกรากจะประเมินค่าเป็นตัวเอง คุณสมบัตินี้ใช้ในการจัดการบล็อกข้อมูลสำหรับการเขียนโปรแกรมเชิงโครงสร้างโดยการส่งบล็อกเป็นอาร์กิวเมนต์ไปยังฟังก์ชันควบคุมif เช่น , either, loop, เป็นต้น และสำหรับการแบ่งภาษาเมื่อบล็อกถูกส่งไปยังฟังก์ชันตัวแปลเฉพาะ[ 6 ]

ปัญหาเฉพาะที่ควรสังเกตคือค่าผสมที่กำหนดให้กับตัวแปรจะไม่ถูกคัดลอก หากต้องการคัดลอก ค่าจะต้องถูกส่งผ่านไปยังcopyฟังก์ชัน[ 4 ]

โดยปกติ ฟังก์ชันdoจะใช้รูปแบบการประเมินแบบพรีฟิก (prefix ) ซึ่งฟังก์ชันจะประมวลผลอาร์กิวเมนต์ที่ตามมา อย่างไรก็ตามการประเมินแบบอินฟิก (infix ) โดยใช้ตัวดำเนินการ แบบอินฟิก ก็มีอยู่เช่นกัน การประเมินแบบอินฟิกจะมีลำดับความสำคัญเหนือกว่าการประเมินแบบพรีฟิก ตัวอย่างเช่น

abs -2 + 3 

ส่งคืนค่า 1 เนื่องจากผลการบวกแบบอินฟิกซ์มีความสำคัญเหนือกว่าการคำนวณค่าสัมบูรณ์ เมื่อประเมินนิพจน์แบบอินฟิกซ์ ลำดับการประเมินจะเป็นจากซ้ายไปขวา ไม่มีตัวดำเนินการใดมีความสำคัญเหนือกว่าตัวดำเนินการอื่น ตัวอย่างเช่น

2 + 3 * 4

ส่งคืนค่า 20 ในขณะที่การประเมินที่ให้ความสำคัญกับการคูณจะให้ผลลัพธ์เป็น 14 ตัวดำเนินการทั้งหมดมีเวอร์ชันแบบมีคำนำหน้าDoโดยปกติจะประเมินอาร์กิวเมนต์ก่อนที่จะส่งไปยังฟังก์ชัน ดังนั้นนิพจน์ด้านล่างนี้:

ขั้นแรกจะอ่านหน้า Wikipedia Rebol แล้วส่งผลลัพธ์ไปยังprintฟังก์ชัน วงเล็บสามารถใช้เพื่อเปลี่ยนลำดับการประเมิน การใช้สัญกรณ์คำนำหน้าจะช่วยหลีกเลี่ยงการใช้วงเล็บในนิพจน์ได้[ 4 ]

กฎลำดับความสำคัญแบบง่ายช่วยให้สามารถเขียนนิพจน์ได้โดยไม่ต้องปรึกษาตารางลำดับความสำคัญที่จะเปลี่ยนแปลงเพื่อสะท้อนการรวมตัวดำเนินการใหม่ และยังช่วยให้สามารถเปลี่ยนนิพจน์จากสัญกรณ์แบบคำนำหน้าเป็นสัญกรณ์แบบคำแทรกโดยใช้วิธีการที่ง่ายกว่า อย่างไรก็ตาม ข้อเสียคืออาจเป็นแหล่งที่มาของข้อผิดพลาดสำหรับผู้ใช้ที่คุ้นเคยกับสัญกรณ์แบบดั้งเดิมที่ใช้โดยภาษาและเครื่องมืออื่นๆ ส่วนใหญ่[ 6 ]

วิเคราะห์

ฟังก์ชัน นี้parseมักใช้เพื่อระบุ ตรวจสอบความถูกต้อง แปลง และตีความภาษาถิ่น โดยจะทำเช่นนั้นโดยการจับคู่การแสดงออกทางไวยากรณ์ในระหว่างการทำงาน[ 6 ]

นิพจน์การวิเคราะห์เขียนด้วยภาษาวิเคราะห์ซึ่งเช่นเดียวกับภาษา doเป็นภาษาย่อยที่เน้นการแสดงออกของภาษาแลกเปลี่ยนข้อมูลต่างจากภาษา do ภาษาวิเคราะห์ใช้คำหลักแทนตัวดำเนินการและไม่ใช่เทอร์มินัลที่สำคัญที่สุด ตัวดำเนินการวิเคราะห์แบบอิน ฟิกซ์ไม่มีคำเทียบเท่าแบบพรีฟิกซ์และใช้กฎลำดับความสำคัญ ( ลำดับมีลำดับความสำคัญสูงกว่าตัวเลือก ) [ 6 ]

สามารถรวมการดำเนินการที่จะดำเนินการในระหว่างกระบวนการแยกวิเคราะห์ได้เช่นกัน และparseสามารถใช้ฟังก์ชันเพื่อประมวลผลบล็อกหรือสตริงได้ ในระดับการแยกวิเคราะห์สตริงparseจะต้องจัดการการแยกวิเคราะห์ "ระดับต่ำ" โดยคำนึงถึงอักขระและตัวคั่นการแยกวิเคราะห์บล็อกเป็นระดับที่สูงกว่า โดยจัดการการสแกนที่ระดับค่า Rebol [ 6 ]

ภาษาวิเคราะห์แบบแยกส่วน (Parse dialect) จัดอยู่ในกลุ่มไวยากรณ์ที่แสดงโดยภาษาวิเคราะห์แบบบนลงล่าง (top-down parsing language)หรือไวยากรณ์ นิพจน์วิเคราะห์ ( Parsing expression grammar : PEG) ความคล้ายคลึงหลักคือการมีตัวดำเนินการลำดับและ ตัวดำเนิน การเลือกซึ่งเป็นสิ่งที่สมาชิกในกลุ่มนี้ทุกตัวมี ไวยากรณ์ของภาษาวิเคราะห์แบบแยกส่วนและความคล้ายคลึงระหว่างภาษาวิเคราะห์แบบแยกส่วนกับ PEG แสดงให้เห็นได้จากตัวอย่าง PEGที่วิเคราะห์นิพจน์ทางคณิตศาสตร์ดังต่อไปนี้:

ตัวเลข: ชุดอักขระ [ #"0" - #"9" ] ค่า: [ ตัวเลขบางตัว| "(" นิพจน์")" ] ผลคูณ: [ ค่าใดๆ [[ "*" | "/" ] ค่า ]] ผลรวม: [ ผลคูณใดๆ [[ "+" | "-" ] ผลคูณ ]] นิพจน์: ผลรวมแยกวิเคราะห์/ ทั้งหมด"12+13" นิพจน์

การนำไปใช้

การใช้งาน Rebol 2.7.8 อย่างเป็นทางการมีให้เลือกหลายเวอร์ชัน ( /Core , /View , /Command , /SDKและ/IOS ) ทั้ง เวอร์ชัน /Coreและ/Viewเป็นซอฟต์แวร์ที่สามารถแจกจ่ายต่อได้โดยเสรี[ 1 ]

สภาพแวดล้อมการทำงานถูกจัดเก็บไว้ในไฟล์ปฏิบัติการไฟล์เดียวRebol/Core 2.7.8 รุ่นคอนโซลมีขนาดประมาณ 300 KB และRebol/View 2.7.8 รุ่นส่วน ติดต่อผู้ใช้แบบกราฟิกมีขนาดประมาณ 650 KB

Rebol/Viewให้ การเข้าถึงกราฟิกและเสียง ที่ไม่ขึ้นกับแพลตฟอร์มและมาพร้อมกับชุดเครื่องมือจัดการหน้าต่างและชุดรูปแบบที่ขยายได้ ( วิดเจ็ต GUI ) เวอร์ชันเพิ่มเติม เช่นRebol/Command 2.7.8 หรือRebol/SDK 2.7.8 ต้องใช้ใบอนุญาตแบบชำระเงิน ซึ่งเพิ่มคุณสมบัติเช่น การเข้าถึงข้อมูล ODBC และตัวเลือกในการสร้างไฟล์ปฏิบัติการแบบสแตนด์อโลน

มรดก

  • Douglas Crockfordตั้งชื่อ Rebol ว่าเป็นหนึ่งในแรงบันดาลใจของJavaScript Object Notation [ 5 ]
  • Rebol เป็นแรงบันดาลใจให้กับโครงการ Orca แบบโอเพนซอร์ส ซึ่งเป็นภาษาที่คล้ายกับ Rebol ที่ใช้การตีความ[ 14 ]
  • Boronเป็นภาษาแบบตีความ (interpreted language) ที่ใช้หลักการโฮโมไอโคนิก (homoiconic) ซึ่งได้รับแรงบันดาลใจและคล้ายคลึงกับ Rebol ซึ่งมีจุดประสงค์เพื่อใช้ในการฝังภาษาเฉพาะโดเมน (domain specific languages) Boron ถูกพัฒนาขึ้นในรูปแบบไลบรารีภาษาซี (C library) ภายใต้เงื่อนไขของ LGPLv3
  • ภาษาโปรแกรม Redได้รับแรงบันดาลใจโดยตรงจาก Rebol แต่ตัวเลือกการใช้งานของ Red มุ่งเน้นไปที่การเอาชนะข้อจำกัดที่รับรู้ได้[ 15 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • ไมค์ส, โนรา (20 พฤศจิกายน 1999). "การรุกรานของ REBOL: มันไม่ใช่ภาษาสคริปต์ ไม่ใช่ภาษาโปรแกรม และไม่ใช่ Amiga รุ่นใหม่ด้วย หรือว่าใช่?" . LinuxWorld . เก็บถาวรจากต้นฉบับเมื่อ 24 มีนาคม 2005.
  • สตอรี่, เดอร์ริค (27 สิงหาคม 1999). "Rebol อาจเป็นภาษาสำหรับพวกเราที่เหลือ" . บทวิจารณ์บนเว็บ . เก็บถาวรจากต้นฉบับเมื่อ 12 ตุลาคม 1999.
  • บทช่วยสอน REBOL
  • บทแนะนำการใช้งาน Rebol 3
  • แหล่งข้อมูล Rebol 3 (Oldes' fork)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Rebol&oldid=1359155273 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เรโบล

Rebol ( / ˈ r ɛ b əl / REB -əl ; ในอดีตคือ REBOL ) เป็น ภาษาแลกเปลี่ยนข้อมูล ข้ามแพลตฟอร์ม [ 6 ] และ ภาษาการเขียนโปรแกรมแบบไดนามิก หลายกระบวนทัศน์ ที่ออกแบบโดย Carl Sassenrath...

นิรุกติศาสตร์

เดิมที Rebol เป็นตัวย่อของ R elative E xpression B ased O bject L anguage ซึ่งเขียนด้วยตัวพิมพ์ใหญ่ทั้งหมด [ 6 ] [ 8 ] เพื่อให้สอดคล้องกับแนวโน้มสมัยใหม่ในการตั้งชื่อภาษา เช่น การเปลี่ยนแปลงชื่อเดิม LISP เป็น Lisp โปรแกรมเมอร์จึงเลิกเขียน REBOL...

ประวัติศาสตร์

Rebol เปิดตัวครั้งแรกในปี 1997 โดยได้รับการออกแบบตลอดระยะเวลากว่า 20 ปีโดย Carl Sassenrath สถาปนิกและนักพัฒนาหลักของ AmigaOS โดยอิงจากการศึกษาเรื่อง ความหมายเชิงสัญลักษณ์ (denotational semantics) และ ใช้แนวคิดจากภาษาโปรแกรม Lisp , Forth , Logo และ Self

ใช้งานง่าย

หนึ่งในหลักการออกแบบของ Rebol คือ "การทำสิ่งง่ายๆ ด้วยวิธีที่ง่าย" [ 6 ] ในตัวอย่างต่อไปนี้ ภาษาถิ่นอินเทอร์เฟซแบบภาพ ถูกใช้เพื่ออธิบาย โปรแกรม Hello world ง่ายๆ ด้วยอินเทอร์เฟซผู้ใช้แบบกราฟิก: