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

อ่าน 3 นาที

แฟกเตอร์ (ภาษาโปรแกรม)

Factor เป็น ภาษาโปรแกรมเชิงสแต็ก ที่สร้างโดย Slava Pestov Factor เป็น ภาษา ที่มีการกำหนดประเภทข้อมูลแบบไดนามิก มี การจัดการหน่วยความจำอัตโนมัติ...

แฟกเตอร์ (ภาษาโปรแกรม)

ปัจจัย
กระบวนทัศน์หลายกระบวนทัศน์ : การเชื่อมต่อ ( แบบใช้สแต็ก ), ฟังก์ชันนัล , เชิงวัตถุ
นักพัฒนาสลาวา เปสตอฟ
ปรากฏครั้งแรก2003
เวอร์ชันเสถียร
0.101 / 8 ธันวาคม 2025 ( 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
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Factor_(programming_language)&oldid=1359704667 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ แฟกเตอร์ (ภาษาโปรแกรม)

Factor เป็น ภาษาโปรแกรมเชิงสแต็ก ที่สร้างโดย Slava Pestov Factor เป็น ภาษา ที่มีการกำหนดประเภทข้อมูลแบบไดนามิก มี การจัดการหน่วยความจำอัตโนมัติ...

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

Slava Pestov สร้าง Factor ขึ้นในปี 2003 ในฐานะ ภาษาสคริปต์ สำหรับ วิดีโอเกม [ 1 ] การ ใช้งานเริ่มต้น ซึ่งปัจจุบันเรียกว่า JFactor นั้นถูกเขียนด้วย ภาษา Java และทำงานบน Java Virtual Machine แม้ว่าภาษาในยุคแรกจะดูคล้ายกับ Factor ในปัจจุบันในแง่ของ ไวยากรณ์...

คำอธิบาย

Factor เป็น ภาษาโปรแกรม แบบไดนามิก เชิง ฟังก์ชัน และ เชิงวัตถุ โค้ดมีโครงสร้างโดยใช้ขั้นตอนย่อยที่เรียกว่าคำ ในโค้ดทั่วไป คำเหล่านี้มีความยาว 1-3 บรรทัด และขั้นตอนที่มีความยาวมากกว่า 7 บรรทัดนั้นหายากมาก สิ่งที่โดยทั่วไปจะแสดงด้วยขั้นตอนเดียวในภาษาโปรแกรมอื่น...

การนำไปใช้และไลบรารี

Factor มีไลบรารีมาตรฐานขนาดใหญ่ ซึ่งเขียนขึ้นทั้งหมดด้วยภาษาโปรแกรมนี้ โดยไลบรารีเหล่านี้ได้แก่...