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

อ่าน 5 นาที

บลิส

BLISSเป็นภาษาการเขียนโปรแกรมระบบที่พัฒนาขึ้นที่มหาวิทยาลัยคาร์เนกีเมลลอน (CMU) โดยWA Wulf , DB Russell และAN Habermannในช่วงประมาณปี 1970

บลิส

บลิส
กระบวนทัศน์มีโครงสร้างเป็นแบบบังคับ ( เชิงกระบวนการ )
ออกแบบโดยดับเบิลยูเอ วูล์ฟ , ดีบี รัสเซลล์, แอน ฮาเบอร์มันน์
นักพัฒนามหาวิทยาลัยคาร์เนกีเมลลอน
ปรากฏครั้งแรก1970 ( 1970 )
เวอร์ชันเสถียร
บลิส-64
วินัยในการพิมพ์ไม่มีประเภท
ขอบเขตคำศัพท์
แพลตฟอร์มPDP-10 , PDP-11 , VAX , PRISM , MIPS , DEC Alpha , IA-32 , IA-64 , x86-64
โอเอสข้ามแพลตฟอร์ม
เว็บไซต์pdp-10 .trailing-edge .com /bb-m836d-bm /
ภาษาถิ่น
ความสุขธรรมดา
ได้รับอิทธิพลจาก
อัลโกล

BLISSเป็นภาษาการเขียนโปรแกรมระบบที่พัฒนาขึ้นที่มหาวิทยาลัยคาร์เนกีเมลลอน (CMU) โดยWA Wulf , DB Russell และAN Habermannในช่วงประมาณปี 1970 อาจกล่าวได้ว่าเป็นภาษาการเขียนโปรแกรมระบบที่เป็นที่รู้จักมากที่สุดจนกระทั่งภาษาCเปิดตัวในอีกไม่กี่ปีต่อมา นับตั้งแต่นั้นมา ภาษา C ก็ได้รับความนิยมและแพร่หลาย และ BLISS ก็ค่อยๆ เลือนหายไปจากความสนใจ

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

ชื่อนี้กล่าวกันว่าย่อมาจากBasic Language for Implementation of System SoftwareหรือSystem Software Implementation Language, Backwardsอย่างไรก็ตาม ในบันทึกประวัติศาสตร์ปากเปล่าปี 2015 ของเขาสำหรับโครงการ Computer Security History ของสถาบัน Babbage Wulf อ้างว่าตัวย่อนี้เดิมทีมีพื้นฐานมาจากชื่อ "Bill's Language for Implementing System Software" [ 1 ]

คอมไพเลอร์ดั้งเดิมของมหาวิทยาลัยคาร์เนกีเมลลอนโดดเด่นในด้านการใช้การปรับแต่งประสิทธิภาพ อย่างกว้างขวาง และเป็นพื้นฐานของหนังสือคลาสสิกเรื่อง " การออกแบบคอมไพเลอร์ที่ปรับแต่งประสิทธิภาพ" (The Design of an Optimizing Compiler )

บริษัทDigital Equipment Corporation (DEC) ได้พัฒนาและดูแลรักษาคอมไพเลอร์ BLISS สำหรับ PDP - 10 [ 2 ] PDP-11 [ 2 ] VAX [ 2 ] DEC PRISM [ 3 ] MIPS [ 2 ] DEC Alpha [ 2 ]และ Intel IA-32 [ 2 ] ภาษาดังกล่าวไม่ได้รับความนิยมในหมู่ลูกค้า และมีเพียงไม่กี่รายที่มีคอมไพเลอร์[ 4 ] แต่ DEC ใช้ ภาษานี้อย่างหนักภายในองค์กรจนถึงช่วงทศวรรษ 1980 โปรแกรมยูทิลิตี้ส่วนใหญ่สำหรับระบบปฏิบัติการOpenVMSเขียนด้วย BLISS-32 คอมไพเลอร์ BLISS ของ DEC ได้รับการพอร์ตไปยังสถาปัตยกรรม IA-64และx86-64ซึ่งเป็นส่วนหนึ่งของการพอร์ต OpenVMS ไปยังแพลตฟอร์มเหล่านี้[ 2 ] [ 5 ]คอมไพเลอร์ x86-64 BLISS ใช้LLVMเป็นตัวสร้างโค้ด แบ็กเอนด์ แทนที่แบ็กเอนด์ GEM ที่เป็นกรรมสิทธิ์ซึ่งใช้สำหรับ Alpha และ IA-64

คำอธิบายภาษา

BLISS มีคุณสมบัติหลายอย่างของภาษาโปรแกรมระดับสูงสมัยใหม่อื่นๆ มีโครงสร้างบล็อก สแต็กอัตโนมัติ และกลไกสำหรับการกำหนดและการเรียกใช้รูทีนแบบเรียกซ้ำ ... มีโครงสร้างข้อมูลที่กำหนดไว้ล่วงหน้าหลากหลาย และ ... สิ่งอำนวยความสะดวกสำหรับการทดสอบและการวนซ้ำ ... ในทางกลับกัน BLISS ละเว้นคุณสมบัติบางอย่างของภาษาโปรแกรมระดับสูงอื่นๆ ไม่มีสิ่งอำนวยความสะดวกในตัวสำหรับการป้อนข้อมูล/เอาต์พุต เนื่องจากโครงการซอฟต์แวร์ระบบมักจะพัฒนาการป้อนข้อมูล/เอาต์พุตของตนเอง หรือสร้างขึ้นบนบริการ I/O ของจอภาพพื้นฐาน หรือบริการการจัดการหน้าจอ ... อนุญาตให้เข้าถึงคุณสมบัติเฉพาะเครื่อง เนื่องจากซอฟต์แวร์ระบบมักต้องการสิ่งนี้ BLISS มีลักษณะเฉพาะที่ผิดปกติในหมู่ภาษาโปรแกรมระดับสูง ชื่อ ... จะถูกตีความอย่างสม่ำเสมอว่าเป็นที่อยู่ของส่วนนั้น แทนที่จะเป็นค่าของส่วนนั้น ... นอกจากนี้ BLISS ยังเป็น "ภาษาการแสดงออก" มากกว่า "ภาษาคำสั่ง" [ 6 ]

ภาษา BLISS มีลักษณะดังต่อไปนี้:

  • ค่าคงที่ทั้งหมดเป็นค่าเต็มคำสำหรับเครื่องที่ใช้ เช่น บนเครื่อง 16 บิตอย่างPDP-11ค่าคงที่จะมีขนาด 16 บิต บน คอมพิวเตอร์ VAXค่าคงที่จะมีขนาด 32 บิต และบนPDP-10ค่าคงที่จะมีขนาด 36 บิต
  • การอ้างอิงถึงตัวแปรนั้นหมายถึงที่อยู่ของตัวแปรนั้นเสมอ ตัวอย่างเช่น คำสั่งนี้Z+8หมายถึงการบวก 8 เข้ากับที่อยู่ของ Z ไม่ใช่ค่า ของมัน หากต้องการบวก 8 เข้ากับค่าของ Z จะต้องใส่จุดนำหน้าตัวแปร ดังนั้นจึงต้องพิมพ์.Z+8เพื่อดำเนินการฟังก์ชันนี้ ซึ่งจะบวก 8 เข้ากับเนื้อหาของ Z
  • การกำหนดค่าจะทำโดยใช้สัญลักษณ์มาตรฐาน=เช่นZ=8ซึ่งหมายถึงการสร้างค่าคงที่แบบเต็มคำที่มีค่า 8 และเก็บไว้ในตำแหน่งที่มีที่อยู่ตรงกับที่อยู่ของ Z ดังนั้นZ+12=14(หรืออีกทางเลือกหนึ่ง12+Z=14แม้ว่ารูปแบบนี้จะถือว่าเป็นวิธีปฏิบัติที่ไม่ดีตามเอกสาร BLISS ใน Digital) จะวางค่าคงที่ 14 ไว้ในตำแหน่งที่อยู่ห่างจากที่อยู่ของ Z ไป 12 คำ
  • คำสั่งแบบบล็อกนั้นคล้ายกับคำสั่งในภาษาALGOLกล่าวคือ บล็อกเริ่มต้นด้วยBEGINคำสั่งและสิ้นสุดด้วยคำENDสั่ง เช่นเดียวกับ ALGOL คำสั่งต่างๆ จะถูกคั่นด้วยเครื่องหมายเซมิโคลอน (";") เมื่อคำนวณค่าแล้ว ค่าดังกล่าวจะถูกบันทึกไว้จนกว่าจะถึงคำสั่งถัดไป ซึ่งหมายความว่าสามารถคำนวณค่า กำหนดให้กับตัวแปร และส่งต่อไปยังคำสั่งถัดไปได้หากต้องการ หรืออาจใช้เครื่องหมายวงเล็บเปิดเพื่อเริ่มต้นบล็อก และใช้เครื่องหมายวงเล็บปิดเพื่อปิดบล็อก เมื่อมีวงเล็บอยู่ในนิพจน์จะใช้กฎลำดับความสำคัญ มาตรฐาน โดยนิพจน์ที่อยู่ในวงเล็บจะถูกคำนวณก่อน
  • การดำเนินการแบบมีเงื่อนไขจะใช้IFสูตรที่ทดสอบเงื่อนไขจริงหรือเท็จ ดำเนินการตามทางเลือกต่างๆ และส่งคืนผลลัพธ์
  • การเปรียบเทียบใช้คำหลัก เช่น `<a>` EQLสำหรับความเท่าเทียมกัน (ซึ่งแตกต่างจาก การใช้ สัญลักษณ์ `=` ซ้ำซ้อนGTR เพื่อจุดประสงค์เดียวกัน) `<a>` สำหรับมากกว่า และ `<a>` NEQสำหรับไม่เท่ากับ ตัวอย่างเช่น โค้ดต่อไปนี้จะกำหนดค่าสัมบูรณ์ของ Z ให้กับแอดเดรสที่ระบุโดย Q:
Q = (IF .Z GTR 0 THEN .Z ELSE -.Z);
  • ตัวระบุ (ตัวแปรและค่าคงที่) ต้องได้รับการประกาศก่อนใช้งาน โดยทั่วไปจะใช้OWNคำหลัก `@` การประกาศตัวแปรโดยปกติจะทำให้คอมไพเลอร์จัดสรรพื้นที่สำหรับตัวแปรนั้น เมื่อจำเป็น ตัวแปรอาจได้รับที่อยู่เครื่องคงที่ผ่านการBINDประกาศ คุณสมบัตินี้ส่วนใหญ่ใช้สำหรับการเข้าถึงรีจิสเตอร์เครื่องหรือที่อยู่พิเศษบางอย่าง
  • ในภาษาโปรแกรมนี้ ซับรูทีนเรียกว่ารูทีนและถูกประกาศโดยใช้คีย์เวิร์ดROUTINE`routine`
  • มาโครซึ่งอนุญาตให้แทนที่ข้อความได้ จะถูกประกาศด้วยคำหลักMACRO` macro`
  • ภาษานี้รองรับอาร์เรย์ซึ่งเรียกว่าโครงสร้างVECTOR และประกาศโดย ใช้คีย์เวิร์ด
  • ภาษานี้รองรับโครงสร้างภาษาโปรแกรมระดับสูง บางอย่าง เช่น:
    • เส้นทางการดำเนินการทางเลือกผ่านทางCASEนิพจน์
    • การวนลูปโดยใช้INCRการแสดงออก ซึ่งคล้ายกับคำสั่ง FOR ในภาษา ALGOL
    • ฟังก์ชันสตริงในตัว
    • การแปลงข้อมูลอัตโนมัติบางอย่าง(เช่น การแปลงตัวเลขเป็นสตริง)

ตัวอย่างแหล่งที่มา

ตัวอย่างต่อไปนี้คัดลอกมาจากคู่มือภาษา Bliss โดยตรง : [ 6 ]

โมดูล E1 (หลัก = ควบคุม) = เริ่ม รูทีนไปข้างหน้า CTRL, ขั้นตอน; การควบคุมตามปกติ = !+ ! รูทีนนี้รับค่าเข้ามา ดำเนินการกับค่าดังกล่าว และ ! จากนั้นจึงแสดงผลลัพธ์ !- เริ่ม กิจวัตรภายนอก GETNUM, ! ป้อนตัวเลขจากเทอร์มินัล PUTNUM; ! แสดงตัวเลขออกทางเทอร์มินัล ท้องถิ่น X, ! พื้นที่จัดเก็บสำหรับค่าที่ป้อนเข้า Y; ! พื้นที่จัดเก็บสำหรับค่าเอาต์พุต GETNUM(X); Y = STEP(.X); พุตนัม(.Y) จบ; ขั้นตอนปกติ (A) = !+ ! รูทีนนี้จะเพิ่ม 1 ให้กับค่าที่กำหนด !- (.A+1); จบ เอลูดอม 

เวอร์ชัน

  • ภาษาถิ่น BLISS-10:
    • BLISS-10 - คอมไพเลอร์ดั้งเดิมของ CMU สำหรับ PDP-10
  • ภาษาถิ่น BLISS-11:
  • ภาษา BLISS ทั่วไป (คอมไพเลอร์ DEC ทุกตัว):
    • BLISS-16 - คอมไพเลอร์แบบครอสโอเวอร์ที่ทำงานบนระบบจัดการเนื้อหา (VMS) สำหรับ PDP-11
    • BLISS-16C - ตัวแปลงข้อมูลที่ทำงานบน PDP-10 จากชุดย่อยของ Common BLISS ไปเป็น BLISS-11
    • BLISS-32 - คอมไพเลอร์แบบเนทีฟสำหรับ VAX/VMS
    • BLISS-36C - ตัวแปลงสัญญาณที่ทำงานบน PDP-10 จากชุดย่อยของ Common BLISS ไปเป็น BLISS-10
    • BLISS-36 - คอมไพเลอร์แบบเนทีฟสำหรับ PDP-10
    • BLISS-32EN - คอมไพเลอร์ 32 บิตดั้งเดิมสำหรับ Alpha/AXP [ 7 ]
    • BLISS-64EN - คอมไพเลอร์ 64 บิตแบบเนทีฟสำหรับ Alpha/AXP
    • BLISS-32IN - คอมไพเลอร์ 32 บิตแบบเนทีฟสำหรับ IA64
    • BLISS-64IN - คอมไพเลอร์ 64 บิตแบบเนทีฟสำหรับ IA64
    • BLISS-32XN - คอมไพเลอร์แบบเนทีฟ 32 บิตสำหรับสถาปัตยกรรม x86-64
    • BLISS-64XN - คอมไพเลอร์ 64 บิตแบบเนทีฟสำหรับสถาปัตยกรรม x86-64

หมายเหตุ

  1. ^ วูล์ฟ, วิลเลียม เอ. (23 มิถุนายน 2015). "บทสัมภาษณ์กับ วิลเลียม เอ. วูล์ฟ OH 477" (PDF) (บทสัมภาษณ์). สัมภาษณ์โดย เจฟฟรีย์ อาร์. โยสต์. ชาร์ลอตต์สวิลล์, เวอร์จิเนีย.
  2. ^ a b c d e f g Brender, Ronald F. (2002). "ภาษาโปรแกรม BLISS: ประวัติความเป็นมา" (PDF) . ซอฟต์แวร์: การปฏิบัติและประสบการณ์ . 32 (10): 955– 981. doi : 10.1002/spe.470 . S2CID 45466625 . 
  3. ^ MacLaren, Don (27 สิงหาคม 1987). "โครงการคอมไพเลอร์ DECWest คำอธิบาย และแผนงาน" (PDF) . Bitsavers.org .
  4. ^ da Cruz, Frank (16 กันยายน 1987). "ข่าวเกี่ยวกับโปรแกรม Kermit สำหรับ VAX/VMS" . Info-Kermit Digest (รายชื่อผู้รับจดหมาย). โครงการ Kermit, มหาวิทยาลัยโคลัมเบีย. สืบค้นเมื่อ5 พฤษภาคม 2019. Kermit-32 เขียนด้วยภาษา Bliss ซึ่งเป็น " ภาษาสำหรับการใช้งานภายในองค์กร" ของ DEC (เดิมพัฒนาขึ้นที่ CMU) ภาษา Bliss ไม่ได้รับความนิยมในหมู่ลูกค้าของ DEC มีเพียงไม่กี่ไซต์ที่มีคอมไพเลอร์ Bliss
  5. ^ "การประชุมนักพัฒนา LLVM ปี 2017: J. Reagan "การพอร์ต OpenVMS โดยใช้ LLVM"" . YouTube . 31 ตุลาคม 2017. เก็บถาวรจากต้นฉบับเมื่อ 21 ธันวาคม 2021.
  6. ^ a bคู่มือการใช้งานภาษา Bliss (PDF) . บริษัท ดิจิทัล อีควิซิเบิล คอร์ปอเรชั่น . 1987.
  7. "VSI BLISS V1.15-148 สำหรับระบบ OpenVMS x86-64 " vmssoftware.com . วีเอสไอ พฤศจิกายน 2568 . สืบค้นเมื่อ2025-11-12 .
  • คู่มือ BLISS ที่ DECUS
  • เลฮอทสกี้, อลัน; โพสต์เกี่ยวกับ BLISS ที่ DEC
  • แมดิสัน, แมทธิว ดี.; บันทึกการบรรยายสำหรับ "บทนำสู่ BLISS" (PostScript)
  • คู่มือเบื้องต้นของ BLISS (1978)

ดาวน์โหลด

  • บลิส-10
  • บลิส-11
  • บลิส-36
  • BLISS-11, BLISS-32 และ BLISS-64
  • FreeVMS Portable BLISS สำหรับ GCC
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=BLISS&oldid=1348864842 "

สรุปเนื้อหา

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

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

BLISSเป็นภาษาการเขียนโปรแกรมระบบที่พัฒนาขึ้นที่มหาวิทยาลัยคาร์เนกีเมลลอน (CMU) โดยWA Wulf , DB Russell และAN Habermannในช่วงประมาณปี 1970

คำอธิบายภาษา

BLISS มีคุณสมบัติหลายอย่างของภาษาโปรแกรมระดับสูงสมัยใหม่อื่นๆ มีโครงสร้างบล็อก สแต็กอัตโนมัติ และกลไกสำหรับการกำหนดและการเรียกใช้รูทีนแบบเรียกซ้ำ ... มีโครงสร้างข้อมูลที่กำหนดไว้ล่วงหน้าหลากหลาย และ ... สิ่งอำนวยความสะดวกสำหรับการทดสอบและการวนซ้ำ ...

ตัวอย่างแหล่งที่มา

ตัวอย่างต่อไปนี้คัดลอกมาจาก คู่มือภาษา Bliss โดยตรง : [ 6 ]

เวอร์ชัน

ภาษาถิ่น BLISS-10: BLISS-10 - คอมไพเลอร์ดั้งเดิมของ CMU สำหรับ PDP-10 ภาษาถิ่น BLISS-11: BLISS-11 - คอมไพเลอร์แบบครอสคอมไพล์ ที่ทำงานบน PDP-10 ของ CMU สำหรับ PDP-11 ภาษา BLISS ทั่วไป (คอมไพเลอร์ DEC ทุกตัว): BLISS-16 -...