อ่าน 3 นาที
แฟกเตอร์ (ภาษาโปรแกรม)
Factor เป็น ภาษาโปรแกรมเชิงสแต็ก ที่สร้างโดย Slava Pestov Factor เป็น ภาษา ที่มีการกำหนดประเภทข้อมูลแบบไดนามิก มี การจัดการหน่วยความจำอัตโนมัติ...
แฟกเตอร์ (ภาษาโปรแกรม)
| ปัจจัย | |
|---|---|
| กระบวนทัศน์ | หลายกระบวนทัศน์ : การเชื่อมต่อ ( แบบใช้สแต็ก ), ฟังก์ชันนัล , เชิงวัตถุ |
| นักพัฒนา | สลาวา เปสตอฟ |
| ปรากฏครั้งแรก | 2003 |
| เวอร์ชันเสถียร | 0.101 / 8 ธันวาคม 2025 |
| วินัยในการพิมพ์ | แข็งแกร่งมีพลัง |
| โอเอส | วินโดวส์ , มอสซาเรลล่า , ลินุกซ์ |
| ใบอนุญาต | ใบอนุญาต BSD |
| เว็บไซต์ | แฟคเตอร์โค้ด.org |
| ได้รับอิทธิพลจาก | |
| จอย , ฟอร์ธ , พูดติดอ่าง , ตัวเอง | |
Factorเป็นภาษาโปรแกรมเชิงสแต็กที่สร้างโดย Slava Pestov Factor เป็น ภาษา ที่มีการกำหนดประเภทข้อมูลแบบไดนามิกมีการจัดการหน่วยความจำอัตโนมัติและมีคุณสมบัติการเขียนโปรแกรมแบบเมตาที่มีประสิทธิภาพ ภาษานี้มีการใช้งานเพียงครั้งเดียว โดยมีคอมไพเลอร์ที่ปรับแต่งประสิทธิภาพ ได้เอง และสภาพแวดล้อมการพัฒนาแบบโต้ตอบการแจกจ่าย Factor ประกอบด้วยไลบรารี มาตรฐาน ขนาดใหญ่
ประวัติศาสตร์
Slava Pestov สร้าง Factor ขึ้นในปี 2003 ในฐานะภาษาสคริปต์สำหรับวิดีโอเกม [ 1 ] การใช้งานเริ่มต้น ซึ่งปัจจุบันเรียกว่า JFactor นั้นถูกเขียนด้วยภาษา JavaและทำงานบนJava Virtual Machineแม้ว่าภาษาในยุคแรกจะดูคล้ายกับ Factor ในปัจจุบันในแง่ของไวยากรณ์แต่ภาษาในปัจจุบันนั้นแตกต่างกันมากในทางปฏิบัติ และการใช้งานในปัจจุบันนั้นเร็วกว่ามาก
ภาษามีการเปลี่ยนแปลงอย่างมากเมื่อเวลาผ่านไป เดิมทีโปรแกรม Factor เน้นการจัดการอ็อบเจ็กต์ Java โดยใช้ ความสามารถ ในการสะท้อน (reflection ) ของ Java ปรัชญาการออกแบบตั้งแต่เริ่มต้นคือการปรับเปลี่ยนภาษาให้เหมาะสมกับโปรแกรมที่เขียนด้วยภาษานั้น เมื่อการใช้งาน Factor และไลบรารีมาตรฐานมีความละเอียดมากขึ้น ความต้องการคุณสมบัติของภาษาบางอย่างก็ชัดเจนขึ้น และคุณสมบัติเหล่านั้นก็ถูกเพิ่มเข้ามา JFactor ไม่มีระบบอ็อบเจ็กต์ที่โปรแกรมเมอร์สามารถกำหนดคลาส ของตนเอง ได้ และ Factor เวอร์ชันแรกๆ ก็เป็นเช่นเดียวกัน ภาษาจึงคล้ายกับSchemeในแง่นี้ ปัจจุบัน ระบบอ็อบเจ็กต์เป็นส่วนสำคัญของ Factor คุณสมบัติของภาษาที่สำคัญอื่นๆ เช่น คลาส ทูเพิล (tuple classes), การแทรกโค้ดคอมบินาเตอร์ (combinator inlining), มาโคร (macros) , คำ แยกวิเคราะห์ที่ผู้ใช้กำหนดเองและระบบคำศัพท์สมัยใหม่ ถูกเพิ่มเข้ามาทีละเล็กทีละน้อยเมื่อประโยชน์ใช้สอยของมันชัดเจนขึ้น
อินเทอร์เฟซฟังก์ชันภายนอกมีอยู่ใน Factor เวอร์ชันแรกๆ และระบบที่คล้ายกันก็มีอยู่ใน JFactor การเลือกใช้อินเทอร์เฟซนี้แทนการสร้างปลั๊กอินใน ส่วน Cของการใช้งานสำหรับแต่ละไลบรารี ภายนอก ที่ Factor ควรติดต่อด้วยนั้นมีข้อดีคือมีความชัดเจน กว่า คอมไพล์ได้เร็วขึ้น และเขียนได้ง่ายกว่า
การใช้งาน Java ในตอนแรกประกอบด้วยเพียงตัวแปลภาษาแต่ต่อมาได้มีการเพิ่มคอมไพเลอร์สำหรับไบต์โค้ด Javaคอมไพเลอร์นี้ใช้งานได้เฉพาะกับขั้นตอนบางอย่างเท่านั้น เวอร์ชัน Java ของ Factor ถูกแทนที่ด้วยเวอร์ชันที่เขียนด้วยภาษา C และ Factor ในตอนแรกประกอบด้วยเพียงตัวแปลภาษา แต่ตัวแปลภาษาถูกแทนที่ด้วยคอมไพเลอร์สองตัวที่ใช้ในสถานการณ์ที่แตกต่างกัน เมื่อเวลาผ่านไป การใช้งาน Factor เติบโตเร็วขึ้นอย่างมาก[ 2 ]
คำอธิบาย
Factor เป็นภาษาโปรแกรมแบบไดนามิกเชิงฟังก์ชันและเชิงวัตถุ โค้ดมีโครงสร้างโดยใช้ขั้นตอนย่อยที่เรียกว่าคำ ในโค้ดทั่วไป คำเหล่านี้มีความยาว 1-3 บรรทัด และขั้นตอนที่มีความยาวมากกว่า 7 บรรทัดนั้นหายากมาก สิ่งที่โดยทั่วไปจะแสดงด้วยขั้นตอนเดียวในภาษาโปรแกรมอื่น จะถูกเขียนเป็นคำหลายคำใน Factor [ 3 ]
แต่ละคำจะรับอาร์กิวเมนต์จำนวนคงที่และมีค่าส่งคืนจำนวนคงที่ อาร์กิวเมนต์ของคำจะถูกส่งผ่านทางสแต็กข้อมูลโดยใช้สัญกรณ์โปแลนด์แบบย้อนกลับสแต็กใช้เพื่อจัดระเบียบการเรียกใช้คำเท่านั้น ไม่ได้ใช้เป็นโครงสร้างข้อมูล สแต็กใน Factor ถูกใช้ในลักษณะเดียวกับสแต็กในForthดังนั้นทั้งสองจึงถือว่าเป็นภาษาสแต็กตัวอย่างเช่น ด้านล่างนี้คือส่วนหนึ่งของโค้ดที่พิมพ์ "hello world" ลงในสตรีมเอาต์พุตปัจจุบัน:
พิมพ์ "สวัสดีโลก"
printเป็นคำศัพท์ioที่รับสตริงจากสแต็กและไม่ส่งคืนอะไรเลย โดยจะพิมพ์สตริงไปยังสตรีมเอาต์พุตปัจจุบัน (โดยค่าเริ่มต้นคือเทอร์มินัลหรือตัวรับฟังแบบกราฟิก) [ 3 ]
ฟังก์ชันแฟกทอเรียล สามารถนำไปใช้ใน Factor ได้ด้วยวิธีดังต่อไปนี้:
: แฟกทอเรียล( n -- n! ) ซ้ำ1 > [ [1..b] ผลคูณ ] [ ดรอป1 ] ถ้า;ไม่จำเป็นต้องส่งข้อมูลทั้งหมดผ่านสแต็กเสมอไปตัวแปรโลคัลที่มีขอบเขตตามพจนานุกรม ช่วยให้สามารถจัดเก็บและเข้าถึง ข้อมูลชั่วคราวที่ใช้ภายในขั้นตอนได้ ตัวแปร ที่มีขอบเขตตามพลวัตใช้เพื่อส่งผ่านสิ่งต่างๆ ระหว่างการเรียกขั้นตอนโดยไม่ต้องใช้สแต็ก ตัวอย่างเช่น สตรีมอินพุตและเอาต์พุตปัจจุบันจะถูกจัดเก็บไว้ในตัวแปรที่มีขอบเขตตามพลวัต[ 3 ]
Factor เน้นความยืดหยุ่นและความสามารถในการขยายภาษา[ 3 ] มีระบบสำหรับมาโคร รวมถึงการขยายไวยากรณ์ Factor ตามอำเภอใจ ไวยากรณ์ของ Factor มักถูกขยายเพื่อให้รองรับคำจำกัดความคำประเภทใหม่และตัวอักษร ประเภทใหม่ สำหรับโครงสร้างข้อมูล นอกจากนี้ยังใช้ใน ไลบรารี XMLเพื่อให้ไวยากรณ์ตัวอักษรสำหรับการสร้าง XML ตัวอย่างเช่น คำต่อไปนี้รับสตริงและสร้างออบเจ็กต์เอกสาร XML ซึ่งเป็นเอกสาร HTML ที่เน้นสตริง:
: make-html ( string -- xml ) dup <XML <html> <head><title><-></title></head> <body><h1><-></h1></body> </html> XML> ;คำดังdupกล่าวเป็นการทำซ้ำรายการบนสุดในกองข้อมูล โดย<->หมายถึงการเติมส่วนนั้นของเอกสาร XML ด้วยรายการจากกองข้อมูล
การนำไปใช้และไลบรารี
Factor มีไลบรารีมาตรฐานขนาดใหญ่ ซึ่งเขียนขึ้นทั้งหมดด้วยภาษาโปรแกรมนี้ โดยไลบรารีเหล่านี้ได้แก่...
- ชุดเครื่องมือ GUI ข้ามแพลตฟอร์มที่สร้างขึ้นบนOpenGLและระบบหน้าต่างต่างๆ ใช้สำหรับสภาพแวดล้อมการพัฒนา[ 4 ]
- การเชื่อมต่อกับไลบรารีฐานข้อมูลหลายแห่ง รวมถึง PostgreSQLและSQLite [ 5 ]
- เซิร์ฟเวอร์ และไคลเอ็นต์ HTTPพร้อมด้วยเฟรมเวิร์กเว็บ Furnace [ 6 ]
- อาร์เรย์ที่เป็นเนื้อเดียวกันที่มีประสิทธิภาพของจำนวนเต็ม ตัวเลขทศนิยม และโครงสร้าง C [ 7 ]
- ไลบรารีที่ใช้การแสดงออกปกติ สร้างรหัสเครื่องเพื่อทำการจับคู่[ 8 ]
อินเทอร์เฟซฟังก์ชันภายนอกถูกสร้างขึ้นใน Factor ซึ่งช่วยให้สามารถสื่อสารกับ โปรแกรม C , Objective-CและFortranได้ นอกจากนี้ยังมีการสนับสนุนสำหรับการดำเนินการและการสื่อสารกับเชเดอร์ที่เขียนด้วยGLSL [ 3 ] [ 9 ]
ภาษา Factor ถูกพัฒนาขึ้นโดยใช้ภาษา Factor และC++โดยเริ่มแรกพัฒนาต่อยอดมาจากภาษา Java ที่ใช้มาก่อนหน้านี้ ปัจจุบัน ตัวแยกวิเคราะห์และคอมไพเลอร์ที่ใช้ในการปรับแต่งประสิทธิภาพถูกเขียนด้วยภาษา Factor เอง ส่วนประกอบพื้นฐานบางอย่างของภาษา เช่น ตัวจัดการหน่วยความจำ (garbage collector) และชนิดข้อมูลพื้นฐานบางอย่าง ถูกเขียนด้วย C++
Factor ใช้ โมเดลแบบอิง รูปภาพซึ่งคล้ายคลึงกับ การใช้งาน Smalltalk หลายๆ แบบ โดยที่โค้ดที่คอมไพล์แล้วและข้อมูลที่จัดเก็บไว้จะถูกเก็บไว้ในรูปภาพ[ 10 ] ในการคอมไพล์โปรแกรม โปรแกรมจะถูกโหลดลงในรูปภาพและรูปภาพจะถูกบันทึก เครื่องมือพิเศษจะช่วยในกระบวนการสร้างรูปภาพขั้นต่ำเพื่อเรียกใช้โปรแกรมเฉพาะ โดยบรรจุผลลัพธ์ลงในสิ่งที่สามารถนำไปใช้งานเป็นแอปพลิเคชันแบบสแตนด์อโลนได้[ 3 ] [ 11 ]
คอมไพเลอร์ Factor ใช้การเพิ่มประสิทธิภาพขั้นสูงมากมายและถูกใช้เป็นเป้าหมายสำหรับการวิจัยเทคนิคการเพิ่มประสิทธิภาพใหม่[ 3 ] [ 12 ]
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- Slava Pestov (27 ตุลาคม 2551). Factor: ภาษาเชิงโต้ตอบที่ขยายได้ (flv) (การบรรยายทางเทคนิค). Google . เก็บถาวรจากต้นฉบับเมื่อ 22 ธันวาคม 2564
- Zed Shaw (2008). ACL ตายแล้ว (flv) (CUSEC 2008). CUSEC.– งานนำเสนอที่เขียนด้วยโปรแกรม Factor ซึ่งกล่าวถึงและยกย่องโปรแกรม Factor
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แฟกเตอร์ (ภาษาโปรแกรม)
Factor เป็น ภาษาโปรแกรมเชิงสแต็ก ที่สร้างโดย Slava Pestov Factor เป็น ภาษา ที่มีการกำหนดประเภทข้อมูลแบบไดนามิก มี การจัดการหน่วยความจำอัตโนมัติ...
ประวัติศาสตร์
Slava Pestov สร้าง Factor ขึ้นในปี 2003 ในฐานะ ภาษาสคริปต์ สำหรับ วิดีโอเกม [ 1 ] การ ใช้งานเริ่มต้น ซึ่งปัจจุบันเรียกว่า JFactor นั้นถูกเขียนด้วย ภาษา Java และทำงานบน Java Virtual Machine แม้ว่าภาษาในยุคแรกจะดูคล้ายกับ Factor ในปัจจุบันในแง่ของ ไวยากรณ์...
คำอธิบาย
Factor เป็น ภาษาโปรแกรม แบบไดนามิก เชิง ฟังก์ชัน และ เชิงวัตถุ โค้ดมีโครงสร้างโดยใช้ขั้นตอนย่อยที่เรียกว่าคำ ในโค้ดทั่วไป คำเหล่านี้มีความยาว 1-3 บรรทัด และขั้นตอนที่มีความยาวมากกว่า 7 บรรทัดนั้นหายากมาก สิ่งที่โดยทั่วไปจะแสดงด้วยขั้นตอนเดียวในภาษาโปรแกรมอื่น...
การนำไปใช้และไลบรารี
Factor มีไลบรารีมาตรฐานขนาดใหญ่ ซึ่งเขียนขึ้นทั้งหมดด้วยภาษาโปรแกรมนี้ โดยไลบรารีเหล่านี้ได้แก่...