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

อ่าน 9 นาที

ติวเตอร์

TUTOR หรือที่รู้จักกันในชื่อ PLATO Author Language เป็น ภาษาโปรแกรม ที่พัฒนาขึ้นเพื่อใช้กับ ระบบ PLATO ที่ มหาวิทยาลัยอิลลินอยส์ เออร์บานา-แชมเปญ ตั้งแต่ประมาณปี 1965 TUTOR...

ติวเตอร์

ติวเตอร์
กระบวนทัศน์คำสั่ง ( ขั้นตอน )
ออกแบบโดยพอล เทนซาร์ และ ริชาร์ด บลอมม์[ 1 ]
นักพัฒนาพอล เทนซาร์ และมหาวิทยาลัยอิลลินอยส์ เออร์บานา-แชมเปญ
ปรากฏครั้งแรก1969 ( 1969 )
วินัยในการพิมพ์ไม่มี
การนำไปใช้งานหลักๆ
ติวเตอร์, ไมโครติวเตอร์
ได้รับอิทธิพล
TenCORE , USE ( Regency Systems )

TUTORหรือที่รู้จักกันในชื่อPLATO Author Languageเป็นภาษาโปรแกรมที่พัฒนาขึ้นเพื่อใช้กับระบบ PLATOที่มหาวิทยาลัยอิลลินอยส์ เออร์บานา-แชมเปญตั้งแต่ประมาณปี 1965 TUTOR ได้รับการออกแบบครั้งแรกโดยPaul Tenczarเพื่อใช้ในการสอนโดยใช้คอมพิวเตอร์ช่วย (Computer Assisted Instruction หรือ CAI) และการสอนที่จัดการโดยคอมพิวเตอร์ (Computer Managed Instruction หรือ CMI) (ในโปรแกรมคอมพิวเตอร์ที่เรียกว่า "บทเรียน") และมีคุณสมบัติมากมายเพื่อจุดประสงค์นั้น ตัวอย่างเช่น TUTOR มีคำสั่งวิเคราะห์และตัดสินคำตอบที่มีประสิทธิภาพ กราฟิก และคุณสมบัติเพื่อลดความซับซ้อนในการจัดการบันทึกและสถิติของนักเรียนโดยผู้สอน ความยืดหยุ่นของ TUTOR เมื่อรวมกับพลังการคำนวณของ PLATO (ซึ่งทำงานบนสิ่งที่ถือว่าเป็นซูเปอร์คอมพิวเตอร์ในปี 1972) ทำให้มันเหมาะสมสำหรับการสร้างเกมต่างๆ รวมถึงเกมจำลองการบิน เกมสงคราม เกมสวมบทบาทแบบผู้เล่นหลายคนสไตล์ดันเจี้ยน เกมไพ่ เกมคำศัพท์ และเกมบทเรียนทางการแพทย์ เช่นBugs and Drugs ( BND ) TUTOR ยังคงใช้งานได้ในปัจจุบันในฐานะภาษาการเขียนโปรแกรมสำหรับระบบ Cyber1 PLATO [ 2 ]ซึ่งรันซอร์สโค้ดส่วนใหญ่จาก PLATO ในช่วงทศวรรษ 1980 และมีผู้ใช้ประมาณ 5,000 ราย ณ เดือนมิถุนายน 2020

ที่มาและการพัฒนา

TUTOR ได้รับการพัฒนาขึ้นมาในตอนแรกในฐานะ ภาษาสำหรับการสร้างบทเรียนโดยเฉพาะ และการพัฒนาไปสู่ภาษาโปรแกรมอเนกประสงค์นั้นไม่ได้วางแผนไว้ล่วงหน้า ชื่อ TUTOR ถูกนำมาใช้กับภาษาสำหรับการสร้างบทเรียนของ ระบบ PLATOในช่วงปลายของ PLATO III เอกสารฉบับแรกของภาษาภายใต้ชื่อนี้ปรากฏอยู่ในAvner, Richard Allen; Tenczar, Paul (มกราคม 1969), The TUTOR Manual. CERL Report X-4

บทความTeaching the Translation of Russian by Computer [ 3 ]ให้ภาพรวมของ TUTOR ในช่วงเวลาก่อนที่ PLATO IV จะเริ่มใช้งานได้ องค์ประกอบหลักของภาษามีอยู่ แต่คำสั่งต่างๆ จะถูกเขียนด้วยตัวพิมพ์ใหญ่ และแทนที่จะใช้กลไกทั่วไป การสนับสนุนชุดอักขระทางเลือกจะทำผ่านชื่อคำสั่งพิเศษ เช่นWRUSSสำหรับ "เขียนโดยใช้ชุดอักขระภาษารัสเซีย"

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

ภายในปี 1981 Control Data Corporation (CDC) ได้ลบชื่อ TUTOR ออกจากเอกสาร PLATO ของพวกเขาเป็นส่วนใหญ่ พวกเขาเรียกตัวภาษาเองว่าPLATO Author Language อย่างไรก็ตาม วลีTUTOR fileหรือTUTOR lesson fileยังคงอยู่ โดยใช้เป็นชื่อประเภทไฟล์ที่ใช้เก็บข้อความที่เขียนด้วย PLATO Author Language [ 6 ]

โครงสร้างของบทเรียน TUTOR

บทเรียน TUTOR ประกอบด้วยหน่วยต่างๆ เรียงลำดับกัน โดยแต่ละหน่วยเริ่มต้นด้วยการนำเสนอข้อมูล และการเรียนต่อในหน่วยถัดไปจะขึ้นอยู่กับการตอบคำถามอย่างน้อยหนึ่งข้อให้ถูกต้อง เช่นเดียวกับ ย่อหน้า ใน COBOLการควบคุมสามารถเข้าสู่หน่วย TUTOR จากหน่วยก่อนหน้าและออกไปยังหน่วยถัดไปได้ แต่ยังสามารถเรียกใช้หน่วยต่างๆ เป็นซับรูทีนได้โดยใช้คำสั่ง do`or`join

นี่คือหน่วยตัวอย่าง: [ 7 ]

หน่วยคณิตศาสตร์ ที่ 205 เขียนคำตอบสำหรับปัญหาเหล่านี้ 3 + 3 = 4 × 3 = ลูกศร 413 คำตอบ 6 ลูกศร 613 คำตอบ 12 

จากตัวอย่างนี้ ควรจะมีหลายสิ่งที่เห็นได้ชัดเจนในทันที

  • ประการแรก TUTOR เป็นภาษาที่มีรูปแบบตายตัว แต่ละบรรทัดเริ่มต้นด้วยชื่อคำสั่ง ซึ่งต้องอยู่ในช่องที่มีอักขระ 8 ตัวที่กำหนดไว้ อาร์กิวเมนต์ของคำสั่งนั้น ( แท็ก ) เริ่มต้นที่อักขระตัวที่ 9 แม้ว่า จะใช้ ปุ่ม Tabเพื่อไปยังคอลัมน์ที่ 9 แต่ก็ทำให้เกิดช่องว่าง เนื่องจาก PLATO ไม่มีอักขระ Tab
  • ในบางกรณี เช่นwriteคำสั่งข้างต้น แท็กอาจประกอบด้วยหลายบรรทัด บรรทัดต่อท้ายอาจว่างเปล่าหรือมีแท็บนำหน้า
  • พิกัดหน้าจอจะแสดงเป็นตัวเลขเดี่ยว ดังนั้น 205 หมายถึงบรรทัดที่ 2 คอลัมน์ที่ 5 และ 413 หมายถึงบรรทัดที่ 4 คอลัมน์ที่ 13

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

คุณสมบัติเฉพาะ

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

การตัดสินคำตอบ

บล็อกการตัดสินใน TUTOR เป็นโครงสร้างควบคุมที่เริ่มต้นด้วยarrowคำสั่งและสิ้นสุดด้วยคำสั่งถัดไป คำสั่งนี้ยังarrowแจ้งให้ป้อนข้อมูล โดยแสดงอักขระลูกศรพิเศษ (คล้าย "▷") เป็นข้อความแจ้งเตือนที่พิกัดหน้าจอที่ระบุ ในทางปฏิบัติ บล็อกการตัดสินสามารถคิดได้ว่าเป็นโครงสร้างควบคุมแบบย้อนกลับที่นักเรียนสามารถลองตอบคำถามหลายครั้งจนกว่าจะได้คำตอบที่ถูกต้องซึ่งจะช่วยให้สามารถดำเนินการต่อไปได้ endarrowunitarrow

การตัดสินการจับคู่รูปแบบ

แต่ละบล็อกการตัดสินประกอบด้วยลำดับของ คำสั่ง การจับคู่รูปแบบซึ่งแต่ละคำสั่งจะแนะนำบล็อกคำสั่ง (อาจว่างเปล่า) ที่จะถูกดำเนินการหากรูปแบบนั้นตรงกัน คำสั่งการจับคู่รูปแบบที่พบบ่อยที่สุดสองคำสั่งคือanswerและ คำสั่ง wrongทั้งสองนี้มีความหมายการจับคู่รูปแบบที่เหมือนกัน ยกเว้นว่า จะanswerตัดสินว่าคำตอบของนักเรียนถูกต้องหากตรงกับรูปแบบ ในขณะที่wrongจะตัดสินว่าคำตอบของนักเรียนไม่ถูกต้อง หากตรงกับรูปแบบ

ฟิลด์แท็กใน คำสั่ง answerและwrongประกอบด้วยรายการคำที่เป็นตัวเลือก คำที่จำเป็น และคำทางเลือก พิจารณาตัวอย่างนี้: [ 8 ]

ตอบ <it, is, a, it's, figure,> รูปหลายเหลี่ยม> (ขวา, rt) (สามเหลี่ยม, รูปสามเหลี่ยม) 

คำตอบนี้จะตรงกับคำว่า "มันคือสามเหลี่ยมมุมฉาก" หรือ "มันเป็นรูปทรงสามเหลี่ยม" หรือแค่ "สามเหลี่ยมมุมฉาก" แต่จะไม่ตรงกับคำว่า "ค่อนข้างเป็นสามเหลี่ยม" เพราะคำว่า "ค่อนข้างเป็น" ไม่ได้อยู่ในรายการที่จะถูกละเว้น และจะไม่ตรงกับคำว่า "สามเหลี่ยม ใช่ไหม?" เพราะลำดับคำผิด

ระบบจับคู่รูปแบบจะตรวจจับข้อผิดพลาดด้านการสะกดคำ ดังนั้นคำว่า "triangel" หรือ "triangl" จะตรงกับรูปแบบตัวอย่าง ผู้เขียนบทเรียนสามารถใช้specsคำสั่งเพื่อกำหนดว่าระบบจะเข้มงวดกับข้อผิดพลาดด้านการสะกดคำมากน้อยเพียงใด

อัลกอริทึมการจับคู่รูปแบบที่ใช้โดยการใช้งาน TUTOR ต่างๆ มีความแตกต่างกันในรายละเอียด แต่โดยทั่วไปแล้ว คำแต่ละคำในข้อความอินพุตและคำแต่ละคำในรูปแบบจะถูกแปลงเป็นเวกเตอร์บิตเพื่อดูว่าคำที่นักเรียนป้อนตรงกับคำในรูปแบบหรือไม่ระยะทางแฮมมิงระหว่างเวกเตอร์บิตทั้งสองถูกใช้เป็นตัววัดระดับความแตกต่างระหว่างคำ เวกเตอร์บิตโดยทั่วไปมีความยาว 60 หรือ 64 บิต โดยมีฟิลด์สำหรับการมีอยู่ของตัวอักษร การมีอยู่ของคู่ตัวอักษร และตัวอักษรตัวแรก ด้วยเหตุนี้ จำนวนบิตหนึ่งในการดำเนินการเอกซ์คลูซีฟ ORของเวกเตอร์บิตสองเวกเตอร์ดังกล่าวจึงประมาณขอบเขตของความแตกต่างทางเสียงระหว่างคำที่สอดคล้องกัน[ 9 ]

โครงสร้างการควบคุมการตัดสิน

การนำเสนอโครงสร้างควบคุมของบล็อกการตัดสินของ TUTOR ในช่วงแรกๆ นั้นค่อนข้างสับสน อย่างไรก็ตาม ในแง่สมัยใหม่ บล็อกการตัดสินสามารถอธิบายได้ว่าเป็นโครงสร้างควบคุมแบบวนซ้ำที่หยุดทำงานเมื่อการป้อนข้อมูลของนักเรียนได้รับการตัดสินว่าถูกต้อง ส่วนหลักของโครงสร้างควบคุมนี้ประกอบด้วยชุดของกรณีต่างๆโดยแต่ละกรณีเริ่มต้นด้วย คำสั่ง การจับคู่รูปแบบเช่นanswerหรือwrongเอาต์พุตทั้งหมดที่สร้างโดยส่วนหลักของลูปการตัดสินในรอบก่อนหน้าจะถูกลบออกจากหน้าจอก่อนเริ่มรอบถัดไป

พิจารณาตัวอย่างนี้: [ 10 ]

ผิด <it, is, a> สี่เหลี่ยม ที่ 1501 เขียนว่า สี่เหลี่ยมจัตุรัสมีสี่ ด้านข้าง 

ในกรณีที่นักเรียนป้อนคำว่า "square" หรือ "a square" คำตอบจะถูกตัดสินว่าไม่ถูกต้อง และข้อความ "A square has four sides." จะปรากฏขึ้นบนหน้าจอ โดยเริ่มที่บรรทัดที่ 15 คอลัมน์ที่ 1 ข้อความนี้จะคงอยู่บนหน้าจอจนกว่านักเรียนจะเริ่มป้อนคำตอบใหม่ เมื่อถึงจุดนั้น ข้อความนี้จะถูกลบออกเพื่อให้สามารถคำนวณคำตอบใหม่ได้ กลไกที่หน้าจอแสดงผลกลับไปยังสถานะก่อนหน้าจะแตกต่างกันไปในแต่ละระบบ ระบบรุ่นแรกๆ จะทำงานโดยการเปลี่ยนเทอร์มินัลเป็นโหมดลบและดำเนินการทดสอบกรณีที่ตรงกันทั้งหมดอีกครั้ง ระบบรุ่นหลังๆ บางระบบจะเก็บข้อมูลที่ได้จากการทดสอบไว้ในบัฟเฟอร์เพื่อให้สามารถลบข้อมูลนั้นได้ในภายหลัง

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

คำสั่งกราฟิกและการแสดงผล

เทอร์มินัลนักเรียน PLATO IV [ 12 ] มี แผงแสดงผลพลาสมาขนาด 512 x 512 พิกเซล พร้อมการสนับสนุนฮาร์ดแวร์สำหรับการพล็อตจุดการวาดเส้น และการแสดงข้อความ แต่ละพิกเซลบนเทอร์มินัล PLATO IV เป็นสีส้มหรือสีดำ เทอร์มินัล CDC PLATO V ใช้จอCRT ขาวดำ เพื่อจำลองแผงพลาสมา ชุดอักขระในตัวมี 4 ชุด ชุดละ 63 อักขระ แต่ละชุดมีขนาด 8 x 16 พิกเซล ครึ่งหนึ่งเป็นอักขระคงที่ อีกครึ่งหนึ่งเป็นอักขระที่ตั้งโปรแกรมได้ ภาษา Tutor ให้การสนับสนุนอย่างสมบูรณ์สำหรับเทอร์มินัลนี้

มีระบบพิกัด สองระบบ [ 13 ]

  • พิกัดหยาบถูกระบุโดยอ้างอิงจากแถวและคอลัมน์ของข้อความ ตัวอย่างเช่น พิกัดหยาบ 1501 หมายถึงบรรทัดที่ 15 ตัวอักษรที่ 1 โดยที่ตัวอักษรด้านบนซ้ายของหน้าจออยู่ที่ตำแหน่ง 101 และตัวอักษรด้านล่างขวาอยู่ที่ตำแหน่ง 3264
  • พิกัดละเอียดถูกกำหนดเป็นพิกัด X และ Y โดยสัมพันธ์กับมุมล่างซ้ายของหน้าจอ พิกัดละเอียด 0.511 ระบุถึงมุมบนซ้ายของหน้าจอ ในขณะที่ 0.496 เทียบเท่ากับพิกัดหยาบ 101 ซึ่งอนุญาตให้มีความสูง 16 พิกเซลของตัวอักษร และข้อเท็จจริงที่ว่าตัวอักษรถูกวางตำแหน่งโดยสัมพันธ์กับมุมล่างซ้ายของตัวอักษรนั้น

คำสั่งการวาดภาพ

ตัวอย่างต่อไปนี้แสดงคำสั่งการวาดภาพบางส่วนของ Tutor [ 14 ]

วาด 1812;1852;ข้าม;1844;1544 วงกลม 16,344,288 การจับฉลากปี 1837;1537;1535;1633;1833 

โปรดสังเกตการใช้เครื่องหมายเซมิโคลอนเพื่อแยกพิกัดที่ต่อเนื่องกันในdrawคำสั่ง วิธีนี้ช่วยให้สามารถใช้พิกัดละเอียดที่คั่นด้วยเครื่องหมายจุลภาคได้อย่างชัดเจน โดยปกติแล้ว คำสั่ง draw จะเชื่อมต่อจุดที่ต่อเนื่องกันด้วยส่วนของเส้นตรง แต่การใส่skipแท็กเข้าไปdrawจะทำให้คำสั่งนั้นสามารถยกปากกาขึ้นได้ในเชิงแนวคิด

แท็กในcircleคำสั่งจะระบุรัศมีและพิกัดละเอียดของจุดศูนย์กลาง แท็กเพิ่มเติมอาจระบุถึงมุมเริ่มต้นและมุมสิ้นสุดสำหรับวงกลมบางส่วนได้

การสร้างคำสั่งวาดด้วยมือเป็นเรื่องยาก ดังนั้นระบบ PLATO จึงได้รวมโปรแกรมแก้ไขรูปภาพไว้ตั้งแต่ปี 1974 เพื่อทำให้งานนี้เป็นไปโดยอัตโนมัติ[ 15 ] ซึ่งสามารถจัดการได้เฉพาะคำสั่งวาดที่มีพิกัดคงที่เท่านั้น

คำสั่งการแสดงผลข้อความ

ตัวอย่างต่อไปนี้แสดงเครื่องมือแสดงผลข้อความบางส่วนของ Tutor [ 16 ]

ชื่อหน่วย ขนาด 9.5 $$ ข้อความขนาด 9.5 เท่าของขนาดปกติ หมุน 45 องศา $$ ข้อความหมุน 45 องศา เวลา 2519 น. เขียนภาษาละติน ขนาด 0 $$ กลับสู่การเขียนแบบปกติ หมุน 0 เวลา 3125 น. เขียนบทเรียนเกี่ยวกับคำกริยา 

การแสดงผลข้อความด้วยขนาดและมุมหมุนเป็นศูนย์นั้น ใช้ฮาร์ดแวร์การแสดงผลตัวอักษรในตัวของเทอร์มินัล PLATO ในขณะที่การแสดงผลด้วยขนาดและมุมหมุนที่ไม่ใช่ศูนย์นั้น จะใช้ส่วนของเส้นตรง ซึ่งทำให้ช้าลงอย่างมากเนื่องจากความเร็วของลิงก์การสื่อสารไปยังเทอร์มินัล

โครงสร้างควบคุม

นอกเหนือจากกลไกการตัดสินคำตอบที่เป็นเอกลักษณ์แล้ว โครงสร้างควบคุม ดั้งเดิมของ TUTOR ค่อนข้างจำกัด ในช่วงกลางทศวรรษ 1970 ข้อบกพร่องนี้ได้รับการแก้ไขโดยการแนะนำบล็อกif<br> ที่มีส่วน <br> และ<br> ที่เป็นตัวเลือก ความหมายของโครงสร้างควบคุมเหล่านี้เป็นไปตามปกติ แต่ไวยากรณ์ได้รับสืบทอดการเยื้อง บังคับ จากภาษา Tutor ซึ่งเป็นการคาดการณ์ล่วงหน้าถึงการเยื้องของPythonและเพิ่มอักขระเยื้องที่ไม่ว่างเปล่าที่ไม่ซ้ำกันเพื่อแยกความแตกต่างระหว่างการเยื้องกับบรรทัดต่อเนื่อง endifelseifelse

ตัวอย่างต่อไปนี้แสดงให้เห็นดังนี้: [ 17 ]

ถ้า n8<4 เขียนสาขาแรก . calc n9⇐34 ถ้า n8=4 เขียนสาขาที่สอง ทำอะไรบางอย่าง อื่น เขียนสาขาเริ่มต้น ถ้า n8>6 ...เขียนสาขาพิเศษ .endif จบเงื่อนไข 

( เครื่องหมายลูกศร กำหนดค่าในcalcคำสั่งแสดงผลไม่ถูกต้องในบางเบราว์เซอร์ โดยจะปรากฏคล้ายกับ <= แต่เป็นอักขระตัวเดียว บนแป้นพิมพ์ของ PLATO IV มีปุ่มเฉพาะสำหรับเครื่องหมายนี้)

ไวยากรณ์เดียวกันนี้ถูกใช้สำหรับloopบล็อกendloopที่มีความหมายเทียบเท่ากับลูป whileในภาษาโปรแกรมทั่วไป ดังแสดงในตัวอย่างต่อไปนี้[ 18 ]

ลูป n8<10 เขียนภายในลูป . sub1 n8 วนซ้ำ n8≥5 เขียนต่อไปภายในลูป ทำอะไรบางอย่าง ลูปออก n8<3 เขียนต่อไปภายในลูป ห่วงสุดท้าย เขียนนอกลูป 

โปรดสังเกตว่า คำสั่ง reloop`and` outloopนั้นคล้ายคลึงกับ คำสั่ง continue`and` breakในภาษาที่อิงตามC อยู่ บ้าง ยกเว้นว่าคำสั่งเหล่านี้ต้องอยู่ในระดับการเยื้องของลูปที่มันแก้ไข และมีแท็กเงื่อนไขที่ระบุว่าการถ่ายโอนการควบคุมที่ระบุไว้จะเกิดขึ้นเมื่อใด ซึ่งทำให้โครงสร้างนี้มีประสิทธิภาพมากกว่าในภาษาอื่นๆ เพราะบรรทัดใดๆ ในลูปภายในก็สามารถยุติหรือเริ่มลูปภายนอกหลายๆ ลูปใหม่ได้ด้วยคำสั่งเดียว

ไวยากรณ์การแสดงออก

ไวยากรณ์การแสดงออกของ TUTOR ไม่ได้ย้อนกลับไปใช้ไวยากรณ์ของFORTRANและไม่ได้ถูกจำกัดด้วยชุดอักขระที่ออกแบบมาไม่ดีในยุคนั้น ตัวอย่างเช่น ชุดอักขระ PLATO IV มีอักขระควบคุมสำหรับตัวห้อยและตัวยกและ TUTOR ใช้สิ่งเหล่านี้สำหรับการยกกำลัง ลองพิจารณาคำสั่งนี้[ 19 ]

วงกลม (41 2 +72.6 2 ) 1/2 ,100,200 

ชุดอักขระยังรวมถึงสัญลักษณ์ทั่วไปสำหรับการคูณและการหาร×และ÷แต่ที่แตกต่างไปจากธรรมเนียมที่กำหนดโดย FORTRAN อย่างสิ้นเชิงคือ อนุญาตให้มีการคูณโดยปริยาย ดังนั้นนิพจน์(4+7)(3+6)และจึงถูกต้อง โดยมีค่าเป็น 99 และ 15.9 ตามลำดับ (อ้างอิงจากแหล่งเดิม) คุณสมบัตินี้ถือว่ามีความสำคัญ เมื่อนักเรียนพิมพ์คำตอบตัวเลขลงในคำถาม พวกเขาสามารถใช้ตัวดำเนินการ ตัวแปร และสัญลักษณ์พีชคณิตมาตรฐานได้ และโปรแกรมจะใช้คำสั่ง "compute" ของ TUTOR เพื่อคอมไพล์และรันสูตร และตรวจสอบว่ามีค่าตัวเลขเทียบเท่า (หรืออยู่ในช่วงความคลาดเคลื่อนของการปัดเศษทศนิยม) กับคำตอบที่ถูกต้องหรือไม่ 3.4+5(23-3)/2

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

ใน TUTOR การเปรียบเทียบจุดลอยตัวx=yถูกกำหนดให้เป็นจริงหากxและyมีค่าใกล้เคียงกัน[ 20 ]วิธีนี้ทำให้ชีวิตง่ายขึ้นสำหรับนักพัฒนาบทเรียนการสอนที่ไม่เชี่ยวชาญทางคณิตศาสตร์ แต่บางครั้งก็ทำให้เกิดปัญหาสำหรับนักพัฒนาโค้ดที่ซับซ้อนทางตัวเลข เนื่องจากเป็นไปได้ที่ทั้งx<yและx≥yจะเป็นจริงพร้อมกัน[ 21 ]

การจัดการหน่วยความจำ

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

ในระบบ PLATO IV คำมีขนาด 60 บิต ซึ่งสอดคล้องกับตระกูลคอมพิวเตอร์CDC 6600 การใช้งานในภายหลังบางส่วนได้เปลี่ยนเป็น 64 บิต [ 22 ]

ทรัพยากรหน่วยความจำพื้นฐาน

พื้นที่หน่วยความจำส่วนตัวของแต่ละกระบวนการประกอบด้วยคำ 150 คำ ซึ่งเรียกว่าตัวแปรนักเรียน ค่าของตัวแปรเหล่านี้มีความคงทน โดยติดตามผู้ใช้แต่ละคนจากเซสชันหนึ่งไปยังอีกเซสชันหนึ่ง ตัวแปรเหล่านี้จะถูกระบุเป็นn1through n150เมื่อใช้สำหรับเก็บค่าจำนวนเต็ม หรือเป็นv1through v150เมื่อใช้สำหรับเก็บค่าทศนิยม[ 23 ]

บทเรียน TUTOR สามารถแนบพื้นที่หน่วยความจำร่วมได้สูงสุด 1500 คำโดยใช้commonคำสั่ง บทเรียนแต่ละบทสามารถมีบล็อกร่วมชั่วคราวที่ไม่มีชื่อซึ่งมีตัวแปรที่ผู้ใช้ทุกคนในบทเรียนนั้นใช้ร่วมกัน บล็อกดังกล่าวจะถูกสร้างขึ้นเมื่อบทเรียนเริ่มใช้งานและจะถูกยกเลิกการจัดสรรเมื่อบทเรียนไม่ใช้งาน ในทางตรงกันข้าม บล็อกร่วมที่มีชื่อจะเชื่อมโยงกับบล็อกของบทเรียน (ไฟล์ดิสก์) หน่วยความจำร่วมจะถูกระบุผ่านnc1ทางnc1500(สำหรับจำนวนเต็ม) หรือvc1ผ่านทางvc1500(สำหรับจำนวนจุดลอยตัว) [ 24 ]

ในกรณีที่ตัวแปรนักเรียน 150 ตัวไม่เพียงพอ บทเรียนสามารถใช้ storageคำสั่งเพื่อสร้างส่วนหน่วยความจำส่วนตัวเพิ่มเติมได้มากถึง 1000 คำ ส่วนนี้จะอยู่ในพื้นที่สลับเท่านั้น แต่สามารถแมปกับตัวแปรนักเรียนหรือตัวแปรทั่วไปได้ ตัวอย่างเช่น[ 25 ]

ทั่วไป 1000 พื้นที่จัดเก็บ 75 stoload vc1001,1,75 

ตัวอย่างนี้กำหนดให้nc1`to` nc1000เป็นบล็อกทั่วไปที่ไม่มีชื่อซึ่งใช้ร่วมกัน ในขณะที่ ` nc1001to` nc1075เป็นพื้นที่จัดเก็บข้อมูลส่วนตัว

การกำหนดชื่อเชิงสัญลักษณ์

คำสั่ง Tutor defineคล้ายกับ คำสั่งพ รีโปรเซสเซอร์ของภาษาC มาก นี่เป็นวิธีเดียวที่จะเชื่อมโยงชื่อย่อกับตัวแปร โปรแกรมเมอร์ต้องจัดสรรหน่วยความจำแบบคงที่และกำหนดชื่อให้กับตัวแปร พิจารณาตัวอย่างนี้: [ 26 ]#define

กำหนดชื่อของฉัน แรก = v1, ที่สอง = v2 ผลลัพธ์=v3 

สิ่งนี้สร้างชุดคำจำกัดความที่ตั้งชื่อmynamesตามตัวแปรจุดลอยตัวสามตัว ผู้ใช้ได้รับคำแนะนำว่า " ไม่ควรมี v3 หรือ v26 อยู่ที่ใดในบทเรียนของคุณ ยกเว้นในdefineคำสั่งนั้นเองใส่คำจำกัดความทั้งหมดของคุณไว้ที่จุดเริ่มต้นของบทเรียน ซึ่งคุณจะสามารถอ้างอิงถึงตัวแปรที่คุณใช้ได้อย่างง่ายดาย" [ 27 ]

สามารถกำหนดฟังก์ชันได้โดยใช้ความหมายการแทนที่มาโคร ดังตัวอย่างนี้: [ 28 ]

กำหนด cotan(a) = cos(a) / sin(a) 

ต่างจากภาษา C กฎขอบเขต ดั้งเดิม ของ TUTOR นั้นเป็นแบบ "กำหนดก่อนใช้งาน" อย่างแท้จริง โดยไม่มีข้อกำหนดสำหรับการกำหนดในระดับท้องถิ่น ดังนั้น พารามิเตอร์อย่างเป็นทางการaที่ใช้ข้างต้นจะต้องไม่มีการกำหนดไว้ก่อนหน้านี้

ต่อมาในการพัฒนา TUTOR ด้วยการแนะนำชุดคำจำกัดความที่มีชื่อหลายชุด โปรแกรมเมอร์ได้รับการควบคุมอย่างชัดเจนว่าชุดคำจำกัดความใดมีผลบังคับใช้ในปัจจุบัน ตัวอย่างเช่นdefine purge, setnameจะละทิ้งคำจำกัดความทั้งหมดในชุดที่มีชื่อ[ 29 ]

อาร์เรย์ อาร์เรย์แบบแพ็ค และการจัดการข้อความ

เครื่องมือ TUTOR ดั้งเดิมสำหรับการจัดการข้อความนั้นอิงตามคำสั่งสำหรับการดำเนินการข้อความเฉพาะ เช่นpackการวางสตริงอักขระที่บรรจุลงในตัวแปรต่อเนื่องในหน่วยความจำsearchการค้นหาสตริงหนึ่งภายในอีกสตริงหนึ่ง และmoveการย้ายสตริงจากหน่วยความจำหนึ่งไปยังอีกหน่วยความจำหนึ่ง[ 30 ] ในปี 1975 ได้มีการเพิ่มเครื่องมือทั่วไปเพิ่มเติมสำหรับอาร์เรย์ของจำนวนเต็มและอาร์เรย์ที่บรรจุ ตัวอย่างเช่น: [ 31 ]

กำหนดเซกเมนต์ ชื่อ = ตัวแปรเริ่มต้น จำนวนบิตต่อไบต์ s อาร์เรย์, ชื่อ(ขนาด)=ตัวแปรเริ่มต้น อาร์เรย์ ชื่อ (จำนวนแถว จำนวนคอลัมน์) = ตัวแปรเริ่มต้น 

อาร์เรย์แบบแบ่งส่วน (Segmented arrays ) ซึ่งกำหนดด้วยคีย์เวิร์ด `segment` segmentนั้น เทียบได้กับอาร์เรย์แบบแพ็ค (packed arrays) ในภาษาปาสคาลขนาดของไบต์และว่าองค์ประกอบของอาร์เรย์จะถูกพิจารณาว่าเป็นจำนวนเต็มบวกหรือลบนั้น อยู่ภายใต้การควบคุมของผู้ใช้อย่างสมบูรณ์ การจัดการข้อความตามอำเภอใจสามารถทำได้โดยการตั้งค่าขนาดของไบต์ให้เท่ากับขนาดของไบต์ในเครื่อง ซึ่งคือ 6 บิตในระบบที่ใช้รหัสแสดงผล (display code ) และ 8 บิตใน ระบบ ASCIIและASCII แบบขยายใน ภายหลังบาง ระบบ โปรดสังเกตว่าไม่มีการระบุขนาดมิติของอาร์เรย์แบบแบ่งส่วน

การส่งผ่านพารามิเตอร์

กลไก การส่งผ่านพารามิเตอร์ทั่วไปถูกเพิ่มเข้าไปใน TUTOR ในช่วงต้นยุค PLATO IV ตัวอย่างเช่น: [ 32 ]

กำหนดรัศมี = v1, x = v2, y = v3 หน่วยอาจแตกต่างกันไป do halfcirc(100,150,300) ทำครึ่งวงกลม(50) * ครึ่งวงกลมหน่วย (รัศมี, x, y) รัศมีวงกลม, x,y,0,180 วาด x-รัศมี, y;x+รัศมี, y 

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

ตัวแปรท้องถิ่น

ตัวแปรท้องถิ่นถูกเพิ่มเข้าไปใน TUTOR ในช่วงประมาณปี 1980 ผู้เขียนบทเรียนที่ต้องการใช้ตัวแปรท้องถิ่นจะต้องใช้lvarsคำสั่งเพื่อประกาศขนาดของบัฟเฟอร์ที่ใช้สำหรับตัวแปรท้องถิ่น สูงสุด 128 คำ[ 33 ] เมื่อทำเช่นนั้นแล้ว หน่วยที่ใช้ตัวแปรท้องถิ่นสามารถเริ่มต้นได้ดังนี้: [ 34 ]

หน่วยบางส่วน ชื่อ1,ชื่อ2,ชื่อ3(ขนาด) ชื่อ4=ค่าคงที่ ลอยตัว: ชื่อ5, ชื่อ6, ชื่อ7 (ขนาด) จำนวนเต็ม, จำนวนบิต: NAME8,NAME9 จำนวนเต็ม, จำนวนบิต, เครื่องหมาย: ชื่อ10 จำนวนเต็ม:NAME11 

บรรทัดต่อจากunitคำสั่งที่ให้ไว้ข้างต้นนั้น ถือเป็นบรรทัดของdefineคำสั่ง โดยปริยายที่มี ขอบเขตn150 เฉพาะที่ สามารถใช้คำจำกัดความทั่วไปในแง่ของตัวแปรนักเรียน เช่น ในขอบเขตเฉพาะที่ดังกล่าวได้ defineแต่รูปแบบที่แสดงไว้ในที่นี้จะผูกชื่อกับตำแหน่งในบล็อกหน่วยความจำที่จัดสรรโดยlvarsคำสั่งโดยอัตโนมัติ เอกสารประกอบการใช้งาน TUTOR ที่มีอยู่ไม่ได้กล่าวถึงวิธีการจัดสรรตัวแปรเฉพาะที่

การใช้งานอื่นๆ

มีภาษาโปรแกรมที่เกี่ยวข้องกับ TUTOR อยู่หลายภาษา แต่ละภาษามีความคล้ายคลึงกับภาษา TUTOR ดั้งเดิม แต่ก็มีความแตกต่างกันอยู่บ้าง โดยเฉพาะอย่างยิ่ง TUTOR เป็นส่วนประกอบหนึ่งของระบบ (ระบบการศึกษาด้วยคอมพิวเตอร์ PLATO) ที่ทำงานบนฮาร์ดแวร์เมนเฟรม CDC บางประเภท เพื่อประสิทธิภาพที่ดีขึ้น TUTOR จึงมีองค์ประกอบเฉพาะฮาร์ดแวร์บางอย่าง (เช่น ตัวแปรที่เป็นคำ 60 บิต ซึ่งสามารถใช้เป็นอาร์เรย์ 60 บิต หรือเป็นอักขระ 6 บิต 10 ตัว เป็นต้น) นอกจากนี้ TUTOR ยังได้รับการออกแบบก่อนการมาถึงของส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) ที่เน้นการใช้งานบนระบบ Windows

ภาษา microTutor ถูกพัฒนาขึ้นในโครงการ PLATO ที่ UIUC เพื่อให้ส่วนต่างๆ ของบทเรียนสามารถทำงานในเทอร์มินัลที่มีไมโครคอมพิวเตอร์ โดยเชื่อมต่อกับโค้ด TUTOR ที่ทำงานบนเมนเฟรม ภาษา microTutor ยังเป็นภาษาโปรแกรมของระบบ Cluster ที่พัฒนาขึ้นที่ UIUC และได้รับอนุญาตให้ TDK ในญี่ปุ่นใช้งาน ระบบ Cluster ประกอบด้วยกลุ่มเทอร์มินัลขนาดเล็กที่เชื่อมต่อกับมินิคอมพิวเตอร์ซึ่งทำหน้าที่จัดเก็บข้อมูลและประมวลผล ระบบ Tencore Language Authoring System เป็นภาษาที่พัฒนาต่อยอดจาก TUTOR โดย Paul Tenczar สำหรับพีซีและจำหน่ายโดย Computer Teaching Corporation cT เป็นภาษาที่พัฒนาต่อยอดจาก TUTOR และ microTutor ที่ Carnegie Mellon ซึ่งช่วยให้โปรแกรมสามารถทำงานได้โดยไม่ต้องเปลี่ยนแปลงในสภาพแวดล้อม GUI แบบหน้าต่างบนระบบ Windows, Mac และ Unix/Linux

โปรแกรมจำลองเทอร์มินัล Pterm ที่พัฒนาโดย Cyber1 รองรับภาษา microTutor ตั้งแต่เวอร์ชัน 6 เป็นต้นไป[ 35 ] [ 36 ]

การอ้างอิง

  1. ^เชอร์วูด 1974 , หน้า 4.
  2. ^ "ระบบคอมพิวเตอร์ Cyber1 PLATO" . สืบค้นเมื่อ2020-06-06 .
  3. ^เคอร์ทินและคณะ 1972
  4. ^เชอร์วูด 2000
  5. ^โจนส์ 1976 , ส่วนที่ 7.2.
  6. ^ดูตัวอย่างเช่นคู่มือผู้ใช้ PLATOปี 1981หน้า 4-56
  7. ^จากบันทึกของผู้ใช้ TUTORปี 1973หน้า 5
  8. ^จากบันทึกของผู้ใช้ TUTORปี 1973แบบฝึกหัด 4-1
  9. ^ Tenczar & Golden 1972
  10. ^จากบันทึกของผู้ใช้ TUTORปี 1973แบบฝึกหัด 4-1
  11. ^ บันทึกของผู้ใช้ TUTORปี 1973หน้า 21
  12. ^ สติฟเฟิ ล 1974
  13. ^เชอร์วูด 1974 , หน้า II-1.
  14. ^จาก Sherwood 1974หน้า II-11
  15. ^เชอร์วูด 1974 , หน้า II-9.
  16. ^จากเชอร์วูด 1974หน้า II-3
  17. ^จาก Avner 1981หน้า S5
  18. ^จาก Avner 1981หน้า S6
  19. ^จาก Sherwood 1974หน้า IV-1
  20. ^ Avner 1975 , หน้า C5.
  21. ^เชอร์วูด 1974 , หน้า IX-3.
  22. ^ โจน ส์ 1976
  23. ^เชอร์วูด 1974 , หน้า IV-2, IX-17.
  24. ^เชอร์วูด 1974หน้า X-1 ถึง X-3 และ X-6
  25. ^จาก Sherwood 1974หน้า X-11
  26. ^จากบันทึกของผู้ใช้ TUTORปี 1973หน้า 17
  27. ^ขีดเส้นใต้จากต้นฉบับ,เชอร์วูด 1974 , หน้า IV-5
  28. ^จาก Sherwood 1974หน้า IX-2
  29. ^ Avner 1975 , หน้า 15.
  30. ^เชอร์วูด 1974หน้า VII-52 ถึง VII-55
  31. ^จาก Avner 1975หน้า 14
  32. ^จาก Sherwood 1974หน้า IV-10
  33. ^ Avner 1981 , หน้า C3.
  34. ^จาก Avner 1981หน้า C2
  35. ^ ซินเดอ ร์ 2018
  36. ^ซินเดอร์ แอนด์ .

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

  • Denenberg, Stewart A. (เมษายน 1978). "การประเมินระบบ PLATO ส่วนตัว" . ACM SIGCUE Outlook . 12 (2): 3– 10.
  • เชอร์วูด, บรูซ (1977). "ภาษา TUTOR"บริษัท คอนโทรล ดาต้า เอ็ดดูเคชั่น.
  • แอนเดอร์เซน, เดวิด; เชอร์วูด, บรูซ; เชอร์วูด, จูดิธ; ไวท์ลีย์, เควิน. "ภาษาโปรแกรม cT (พัฒนามาจาก TUTOR)"ศูนย์ออกแบบการคำนวณเพื่อการศึกษา มหาวิทยาลัยคาร์เนกีเมลลอน(ไม่ได้รับการสนับสนุนอีกต่อไปตั้งแต่ปี 2002)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=TUTOR&oldid=1311855158 "

สรุปเนื้อหา

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

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

TUTOR หรือที่รู้จักกันในชื่อ PLATO Author Language เป็น ภาษาโปรแกรม ที่พัฒนาขึ้นเพื่อใช้กับ ระบบ PLATO ที่ มหาวิทยาลัยอิลลินอยส์ เออร์บานา-แชมเปญ ตั้งแต่ประมาณปี 1965 TUTOR...

ที่มาและการพัฒนา

TUTOR ได้รับการพัฒนาขึ้นมาในตอนแรกในฐานะ ภาษา สำหรับการสร้างบทเรียนโดยเฉพาะ และการพัฒนาไปสู่ภาษาโปรแกรมอเนกประสงค์นั้นไม่ได้วางแผนไว้ล่วงหน้า ชื่อ TUTOR ถูกนำมาใช้กับภาษาสำหรับการสร้างบทเรียนของ ระบบ PLATO ในช่วงปลายของ PLATO III...

โครงสร้างของบทเรียน TUTOR

บทเรียน TUTOR ประกอบด้วย หน่วยต่างๆ เรียงลำดับกัน โดยแต่ละหน่วยเริ่มต้นด้วยการนำเสนอข้อมูล และการเรียนต่อในหน่วยถัดไปจะขึ้นอยู่กับการตอบคำถามอย่างน้อยหนึ่งข้อให้ถูกต้อง เช่นเดียวกับ ย่อหน้า ใน COBOL การควบคุมสามารถเข้าสู่หน่วย TUTOR...

คุณสมบัติเฉพาะ

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