ภาษาโคบอลเป็นหนึ่งในภาษาแรก ๆ ที่ฉันได้เรียนรู้ - ถ้าคุณไม่สนใจภาษา Basic, ภาษาแอสเซมเบลอร์สามหรือสี่ภาษาและตัวแปรของ Forth, มันเป็นภาษาห้าภาษาแรกของฉัน, และเรียนรู้พร้อมกับปาสกาล IOW ฉันตอบจากประสบการณ์ส่วนตัวในการใช้ภาษา
แก้ไขฉันควรจะพูดถึงประสบการณ์โบราณ ฉันไม่เคยใช้ภาษาหลังจากสิ้นสุดยุค 80 แม้ว่าฉันจะซื้อหนังสือเล่มใหม่ (เพื่อแทนที่หนังสือเก่าที่ฉันทิ้งด้วยความขยะแขยง) เพื่อที่ฉันจะได้พูดถึงเรื่องสยองขวัญของฉันจะไม่ผิดเพี้ยนไป แต่ฉันก็ไม่รู้ว่าภาษาวิวัฒนาการมาอย่างน้อยในช่วง 20 ปีที่ผ่านมา
เห็นได้ชัดว่าสำหรับหลาย ๆ คนมันเป็นเพียงมุมมอง "เก่าไม่ดี" ที่ jonsca ได้อธิบายไปแล้ว - และยังมีทัศนคติแบบผ่าน ๆ แต่มีปัญหาพื้นฐานที่แท้จริงว่า
การพูดมากเกินไปเป็นปัญหาจริง - มีความยุ่งเหยิงมากเกินไปในการทำความเข้าใจรหัส นี่คือปัญหาที่ใหญ่ที่สุด คนที่มองไปที่MOVE
, ADD
และMULTIPLY
งบอื่น ๆ ในหนังสยองขวัญมีมุมมองที่พูดเกินจริงเล็กน้อยนี้จริง - The COMPUTE
งบอยู่ใกล้กับที่ได้รับมอบหมายในภาษาอื่น ๆ แต่ก็ยังมีความยุ่งเหยิงในแผนกและแผนกทั้งหมด หนึ่งในสิ่งแรกที่ฉันได้เรียนรู้ในภาษาโคบอลคือการเริ่มต้นเสมอโดยการคัดลอก SKELETON.COB ยาวหน้ามาตรฐาน A4
COBOL จะมีคุณสมบัติที่น่าสนใจบางอย่าง แต่คุณสมบัติเหล่านั้น (เช่นPIC
สิ่ง) มีแนวโน้มที่จะเป็นสิ่งที่เป็นส่วนหนึ่งในขณะนี้มากขึ้นของ DBMS มากกว่าการเขียนโปรแกรมภาษาและที่ดูเหมือนว่าฉันมักจะเป็นวิธีที่ดีกว่าที่จะแยกความรับผิดชอบเหล่านั้น นอกจากนี้บางไลบรารีในภาษาอื่น ๆ ก็ใช้สิ่งที่เทียบได้กับPIC
(เช่น printf และ scanf ในไลบรารีมาตรฐาน C) เนื้อหาที่ดีที่สุดได้ถูกเก็บไว้ แต่ที่เลวร้ายที่สุดลดลง
นอกจากนี้สำหรับทุกคุณสมบัติที่ดีมีอย่างน้อยหนึ่งที่ทนไม่ได้ ตัวอย่างเช่นไม่ว่าลูปเล็ก ๆ น้อย ๆ จะเป็นอย่างไรคุณจะต้องย้ายร่างกายไปเป็นขั้นตอนแยกต่างหาก PERFORM ... UNTIL ...
และคล้ายงบมีงบเดียว - ไม่ได้โครงสร้างบล็อก ในความรู้สึก COBOL เป็นรสชาติของการเขียนโปรแกรมโครงสร้างจากการเขียนโปรแกรมโครงสร้างก่อนที่จะถูกคิดค้น - มีเป็นGO TO
แต่ก็ใช้เป็นกำลังใจ (อย่างน้อยเมื่อฉันใช้ภาษาโคบอล) แต่การวนลูปโดยเฉพาะอย่างยิ่งก็ไม่ได้รับการจัดการที่ดี
ในความเป็นจริงภาษาที่ฉันใช้หลังจาก COBOL ที่ทำให้ฉันนึกถึงมันมากที่สุดคือ ... dBase ในขณะที่ Ashton-Tate dBase III + ทุกวันนี้ผู้คนมีแนวโน้มที่จะจดจำโคลนนิ่งที่ตายแล้วหรือกำลังจะตายทั้งหมด (Clipper, FoxPro ฯลฯ ) ที่นำไปสู่ชื่อสามัญ xBase - และยังมีทายาทที่ยังมีชีวิตอยู่ใน xHarbour ประเด็นก็คือสิ่งเหล่านี้เป็นภาษาฐานข้อมูล แต่ไม่มีอะไรเหมือน SQL
ถึงกระนั้นที่COBOL ทุกโปรแกรมที่ทำงานบนฐานข้อมูลเฉพาะจำเป็นต้องมีสำเนาของข้อมูลจำเพาะของฐานข้อมูลนั้น (และสำเนาอาจสิ้นสุดลงอย่างไม่สอดคล้องกัน) นั่นไม่ใช่กรณีใน xBase ที่ฐานข้อมูลรู้ถึงโครงสร้างของตัวเอง
เมื่อคำนึงถึงเรื่องนี้แล้ว COBOL ก็ไม่ได้แย่ขนาดนั้นถ้าคุณยอมรับในสิ่งที่มันเป็น แต่สิ่งที่ไม่เป็นภาษาสำหรับการเขียนโครงสร้างข้อมูล ซึ่งอาจเป็นสาเหตุให้ภาษาโคบอลได้รับความเดือดร้อนมากมายในช่วงเวลาแห่งสงคราม C กับปาสคาล - ทั้งสองฝ่ายเห็นพ้องกันว่าภาษาโคบอลไม่ดีสำหรับการสร้างต้นไม้ไบนารีอีกครั้ง
โอ้ - และสิ่งหนึ่งที่ฉันจะไม่มีวันลืมคือหนังสือตำราภาษาโคบอลเล่มแรกของฉันไม่ได้อธิบายSORT
คำสั่งโดยบอกว่ามันอยู่นอกขอบเขตของหนังสือเล่มนี้ - เห็นได้ชัดว่าผู้เขียนไม่สามารถรับมือกับความคิดในการเรียงลำดับหรือ ถือว่าเป็นมากกว่าความคิดเล็ก ๆ น้อย ๆ ของนักเรียนภาษาโคบอลที่สามารถรับมือกับ [ดูการแก้ไขท้าย] สิ่งนั้นทำให้ยากต่อการพิจารณาภาษาโคบอลอย่างจริงจัง
สิ่งแปลกประหลาดนี้คือ Jackson Structured Programming ซึ่งฉันถูกบังคับให้เรียนรู้ในเวลาเดียวกันและเฉพาะสำหรับใช้กับ COBOL ส่วนหนึ่งคือการวาดแผนภาพโครงสร้างสำหรับอินพุตจากนั้นแผนภาพโครงสร้างสำหรับเอาต์พุตจากนั้นจึงวาดแผนภาพโครงสร้างระหว่างโค้ด การเรียงลำดับคาดว่าชัดเจนว่าเป็นปัญหาที่แก้ไขแล้ว - คุณไม่สามารถรับอัลกอริทึมการเรียงลำดับด้วยวิธีนี้ ดังนั้นจึงเป็นเรื่องแปลกที่หนังสือตำราแนะนำที่แนะนำว่าแนวคิดการเรียงลำดับทั้งหมดอยู่นอกเหนือความคิดเล็ก ๆ ของฉันในขณะเดียวกันก็สอนสิ่งต่าง ๆ เช่นอัลกอริธึมการเรียงลำดับที่แตกต่างกันหลายสิบโหลและวิธีการนำไปใช้ใน Pascal
ปัญหาที่ JSP สามารถจัดการได้อาจเป็นแนวทางที่ดีสำหรับสิ่งที่ COBOL สามารถทำได้ค่อนข้างดี แต่ถึงอย่างนั้นก็ไม่ได้หมายความว่า JSP หรือ COBOL เป็นวิธีที่ดีในการจัดการปัญหาเหล่านั้น
แก้ไขเมื่อวันที่ 30 กรกฎาคม 2014
ฉันเพิ่งได้รับชื่อเสียงจากสิ่งนี้เตือนฉันว่ามันอยู่ที่นี่ เมื่อมันเกิดขึ้นเนื่องจากการสะสมหนังสือโบราณที่ชวนให้นึกถึงตอนนี้ฉันสามารถแก้ไขจุด WRT ที่SORT
คำสั่ง
หนังสือเล่มแรกที่ฉันใช้เป็นข้อความที่แนะนำเมื่อเรียนรู้ COBOL คือ "การเขียนโปรแกรมตามระเบียบวิธีใน COBOL" โดย Ray Welland สิ่งนี้ไม่ครอบคลุม COBOL 85 (แม้ว่าจะมี "การเขียนโปรแกรมตามระเบียบวิธีใน COBOL-85" รุ่นที่ใหม่กว่าซึ่งฉันยังไม่เคยเห็นมาก่อน)
ให้คอมเม้นท์ด้านล่างว่า "คุณควรจะเรียงไฟล์อินพุตก่อนอ่านหรือเรียงลำดับไฟล์เอาต์พุตหลังจากสร้างโดยใช้ยูทิลิตี้การเรียงลำดับที่มาพร้อมกับระบบปฏิบัติการ" จากการตอบกลับของฉันนั้นฉันพลาดจุด "มาพร้อมกับระบบปฏิบัติการ" Kindall แนะนำสิ่งที่คล้ายกับปรัชญา Unix AFAICT โดย COBOL ใช้สำหรับบิตที่ดีสำหรับยูทิลิตี้ระบบปฏิบัติการเช่นยูทิลิตี้การเรียงลำดับที่ใช้สำหรับสิ่งอื่น ๆ และสันนิษฐานว่าใช้ภาษาชุด / สคริปต์ / เชลล์เพื่อกาวบิตด้วยกัน สิ่งนี้สมเหตุสมผลมากขึ้นในโลกยุคโบราณที่ซอฟต์แวร์เชิงโต้ตอบหายากจนไม่มีอยู่จริงดังนั้นคุณจะต้องส่งงานจำนวนมาก (ดังนั้น "ภาษาชุดงาน") ต่อไป
ต่อไปนี้จะยกมาจากหน้า 165-166 ของ "การเขียนโปรแกรมระเบียบในภาษาโคบอล" ...
การใช้ไฟล์ซีเรียลที่สั่งซื้อหมายความว่าจำเป็นต้องมีวิธีการเรียงลำดับเรคคอร์ดภายในไฟล์ไปยังลำดับที่ระบุโดยคีย์ ระบบคอมพิวเตอร์ขนาดใหญ่ส่วนใหญ่มียูทิลิตีการเรียงลำดับซึ่งจะเรียงลำดับไฟล์ตามตำแหน่งประเภทและขนาดของรายการข้อมูลแต่ละรายการที่สร้างคีย์
นอกจากนี้ยังมีสิ่งอำนวยความสะดวกสำหรับการเรียงลำดับระเบียนจากภายในโปรแกรมภาษาโคบอล แต่นี่มันเกินขอบเขตของหนังสือเล่มนี้ด้วยเหตุผลสองประการ:
(a) ส่วนต่อประสานกับระบบปฏิบัติการมักจะค่อนข้างซับซ้อนและแตกต่างกันไปตามระบบ
(b) โมดูลการเรียงลำดับเป็นส่วนเสริมของ ANS '74 COBOL และอาจไม่สามารถนำมาใช้ในระบบ COBOL สำหรับคอมพิวเตอร์ขนาดเล็ก
ดังนั้นจะถือว่ามีสิ่งอำนวยความสะดวกสำหรับการเรียงลำดับไฟล์ตามลำดับที่ระบุและปัญหาของการอัพเดตไฟล์ดังกล่าวจะได้รับการพิจารณา
กล่าวโดยสรุปก็คือถูกต้อง - ข้อสันนิษฐานคือโดยทั่วไปแล้วการเรียงลำดับจะกระทำนอก COBOL อาจมีเหตุผลที่แท้จริงในการยกเว้นการเรียงลำดับจากภาษาการเขียนโปรแกรมประมาณปี 1974 สำหรับคอมพิวเตอร์ขนาดเล็ก
สิ่งที่ฉันพูดไว้ข้างต้นนั้นเป็นสิ่งที่คุณได้รับหลังจาก 20 ปีที่ไม่สามารถตรวจสอบข้อเท็จจริงเนื่องจากทิ้งหนังสือ
ฉันควรชี้ให้เห็นว่าฉันได้ศึกษา COBOL อย่างเป็นทางการจากหนังสือแนะนำเล่มนี้ซึ่งครอบคลุมมาตรฐานปี 1974 (ไม่ใช่มาตรฐานปี 1985) ในปี 1988 และ 1989 รุ่นที่สามของ "COBOL สำหรับนักเรียน" (Parkin, Yorke, Barnes) - รุ่นแรกที่ครอบคลุม COBOL 85 - ยังไม่ได้เผยแพร่จนถึงปี 1990 ฉันไม่แน่ใจ แต่ฉันคิดว่า COBOL 85 รุ่น "ระเบียบวิธีการ" ไม่ได้เผยแพร่จนถึงปี 1994
แต่นั่นไม่ได้หมายความว่าโลกของโคบอลจะลากเท้าของมัน - ก็ไม่มากนัก การนำมาตรฐานใหม่มาใช้ต้องใช้เวลาสำหรับภาษาใด ๆ แม้แต่ตอนนี้