อะไรคือต้นกำเนิดของคำว่า "รหัสดั้งเดิม" ที่เป็นลบ


28

ทุกคนพูดเกี่ยวกับรหัสดั้งเดิมในการพัฒนาซอฟต์แวร์และฉันเคยได้ยินคำว่าในช่วงสิบปีที่ผ่านมาใช้ในการวาด codebase ใด ๆ ที่ไม่ดี

คำนี้อยู่ที่ไหนซึ่งมีความหมายแฝงอันทรงพลังเช่นนี้สำหรับโปรแกรมเมอร์

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


13
ฉันได้ยินคำนิยามของรหัสมรดกต่อไปนี้เมื่อ 20 ปีที่แล้วและฉันจำได้ตั้งแต่: รหัสดั้งเดิมเป็นรหัสที่คุณมีอยู่ในปัจจุบัน มันช่วยให้มุมมองของฉันหลายครั้ง
Michael Durrant

10
"รหัสดั้งเดิม" เป็นคำเชิงลบหรือไม่ ใครบอกว่า อย่างไรก็ตามคำว่า "มรดก" ไม่เฉพาะเจาะจงกับการเขียนโปรแกรมและไม่สำคัญอย่างยิ่งในบริบทนี้
Robert Harvey

5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/ … ) ส่วนใหญ่อาจไม่ใช่นักประดิษฐ์ของคำนั้น แต่เขาทำคำจำกัดความที่น่าสนใจ: เขาเรียกว่ารหัสดั้งเดิมโดยไม่มีการทดสอบรหัส และนั่นเป็นคุณลักษณะเชิงลบ
Doc Brown

11
เขียนมัดรหัส ตรวจสอบค่ะไปรับอาหารกลางวัน กลับมาเถอะ มีทั้งหน้าจอที่เต็มไปด้วยรหัสดั้งเดิม! ตอนนี้คุณต้องเข้าใจรหัสนั้นและตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลงในอนาคตทั้งหมดทำงานอย่างถูกต้องในบริบทของรหัสนั้น รหัสเดิมเป็นเช่นเดียวกับรหัสที่มีอยู่
Eric Lippert

4
"Legacy" ที่นี่เพียงแค่หมายความว่านักพัฒนาดั้งเดิมไม่ได้อยู่ที่ใดอีกต่อไปและเหลือเพียงรหัสและเอกสารสิ่งประดิษฐ์เท่านั้น ไม่ได้อ้างถึงอายุหรือคุณภาพ แต่อย่างใด
SK-logic

คำตอบ:


39

รหัสดั้งเดิมขึ้นอยู่กับวลีของระบบเดิมที่ใช้กับรหัสโดยเฉพาะ ตามวิกิพีเดียมันอาจย้อนไปถึงปี 1970 และมีการใช้งานทั่วไปในปี 1980 มันเริ่มต้นด้วยการระเบิดของเทคโนโลยีแห่งปี 1990

สิ่งนี้สามารถเห็นได้ด้วยโปรแกรมดู ngram ของ Google: ระบบเดิมรหัสดั้งเดิม

ระบบเดิมและรหัส

ขุดลงต่อไปนี้คุณสามารถหาเอกสารการใช้คำว่า 'ระบบเดิมในปี 1970

ตัวอย่างแรกสุดของ 'ระบบดั้งเดิม' ที่ google มีอยู่ในหนังสือเกี่ยวกับการดำเนินการวิเคราะห์เชิงตัวเลขและการประชุมคอมพิวเตอร์ของกองทัพบกตั้งแต่ปี 2521:

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

นอกจากนี้ยังมีตัวอย่างของ 'ระบบดั้งเดิม' ที่ใช้นอกอุตสาหกรรมเทคโนโลยีในClout: Womanpower and Politics grin 1976:

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

นอกเหนือจากตัวอย่างเหล่านี้ซึ่งแสดงให้เห็นว่าการใช้งานนั้นได้ขยายออกไปนอกเหนือจากโลกของซอฟต์แวร์ที่บริสุทธิ์ข้อมูลเฉพาะของที่ซึ่งคำที่กำเนิดนั้นอาจสูญหายไปกับผืนทรายแห่งกาลเวลา จากการอ้างอิงทางทหารและการเมืองอาจมีต้นกำเนิดมาจากพวกเขา (ส่วนใหญ่เป็นการทหารและการย้ายถิ่นของศัพท์แสง ( "ดูเหมือนว่า 'kluge' มาที่ MIT ผ่านศิษย์เก่าของโครงการอิเล็กทรอนิกส์ทหารจำนวนมากที่ทำงานในเคมบริดจ์ในช่วงสงคราม อาคาร 20 ที่น่านับถือของ MIT ซึ่งเป็นที่ตั้งของ TMRC ... " ))


นี่คือคำตอบที่ดี ฉันจะทำการค้นคว้าต่อไปเพื่อดูว่าฉันสามารถหาต้นกำเนิดได้หรือไม่ แต่คุณมีสิทธิ์ที่ต้นกำเนิดนั้นจะสูญหายหรืออาจไม่มีเอกสาร
stevebot

1
@stevebot ฉันขอแนะนำให้ติดตามเส้นทางของ 'ระบบเดิม' แทนรหัส ... คำนั้นดูเหมือนว่าจะมีรหัสล่วงหน้าที่สืบทอดมาและมีความหมายที่สำคัญเหมือนกัน

6
ข้อความใน 'หนังสือเกี่ยวกับการสร้างพันธะคาร์บอน - คาร์บอนจากปี 1979' มาจากหนังสือที่เรียกว่า 'แนวทางปฏิบัติใหม่ในการจัดการโครงการ' และมาจากปี 2002 (ตีพิมพ์ครั้งแรก 1998) ดูเหมือนว่ามีบางอย่างสับสนในการสแกน
Pete Kirkham

1
ดูเหมือนว่านี่จะไม่เป็นที่มาของคำเชิงลบ
JeffO

@JeffO ไม่อย่างที่ MichaelT กล่าวถึงข้อสรุปที่ไม่ได้มาจากที่ไหน นี่เป็นคำตอบที่ดีซึ่งแสดงให้เห็นถึงการวิจัยและความพยายาม
stevebot

5

รหัสฐานแบบเดิมมักจะอ้างถึงไม่ได้กับระบบ POS แต่เป็นระบบใด ๆ ที่มีอยู่ในฐานรหัสหรือระบบที่ไม่ได้ใช้สำหรับการพัฒนาใหม่อีกต่อไป ตัวอย่างเช่นทีมของฉันรองรับแอปพลิเคชั่น. net 1.1 และ 2.0 สองสามตัวที่ถือว่าเป็นรหัสเดิม หากมีเวลาที่จำเป็นต้องมีการแก้ไขพวกเขาจะถูกเขียนใหม่หรืออัปเดตเพื่อใช้กรอบงานและมาตรฐานล่าสุด ก่อนหน้านั้นเราจัดการมันเป็นแอปพลิเคชันรุ่นเก่าที่ต้องทำงานต่อไป แต่ไม่มีการปรับปรุงหรือแก้ไขรหัส

นอกจากนี้ยังมีระบบเดิมสองสามระบบที่เราไม่รองรับเลยที่เขียนใน VB6 และ Classic ASP เราไม่มีขีดความสามารถหรือคำสั่งเพื่อสนับสนุนหรือปรับเปลี่ยนระบบเหล่านี้ แต่ตราบใดที่ระบบยังคงทำงานต่อไปและไม่จำเป็นต้องมีการปรับปรุงพวกเขาจะไม่ได้รับการปรับปรุง ไม่มีอะไรผิดปกติกับระบบเหล่านี้ พวกเขาปฏิบัติงานตามที่ควรและนอกเหนือจากการดูแอพตั้งแต่กลางถึงปลายยุค 90 พวกเขาไม่มีปัญหาสำคัญ

ดังนั้นระบบดั้งเดิมจึงไม่ได้หมายถึง POS เพียงระบบที่สร้างขึ้นในเทคโนโลยีหรือภาษาก่อนหน้าซึ่งไม่เป็นไปตามมาตรฐานปัจจุบัน ระบบดั้งเดิมบางอย่างมีคุณสมบัติเป็น POS ส่วนใหญ่เพราะพวกเขาขาดวิธีการพัฒนาที่มีอยู่ในปัจจุบันที่อนุญาตให้มีการจัดการรหัสและประสบการณ์กว่า 15 ปีของผู้เขียนเว็บที่มีประสบการณ์


ฉันยอมรับอย่างสมบูรณ์ว่าระบบดั้งเดิมไม่จำเป็นต้องเป็นระบบ POS ฉันสงสัยว่าที่มาของวลีคืออะไร
stevebot

3
@stevebot หากคุณต้องการค้นหาที่มาของคำคุณควรถามโดยไม่ต้องมีความหมายแฝง
CVn

2
@stevebot - มรดกคือสิ่งที่คุณทิ้งไว้ข้างหลังเมื่อคุณผ่าน ฉันจะสันนิษฐานว่าผู้ให้คำอธิบายเป็นลูกบุญธรรมเพียงอย่างเดียวจากวิธีที่พวกเขานำมันไปใช้กับสาขาอื่น ๆ นับไม่ถ้วน
SoylentGray

1
@ MichaelKjörlingคุณกำลังบอกฉันว่าคุณไม่เคยได้ยินรหัสมรดกที่ใช้ในแง่ลบหรือเปล่า ?? นั่นไม่ใช่ความหมายแฝงของฉัน แต่ของคนอื่นที่ฉันเคยได้ยินครั้งแล้วครั้งเล่าในการพบปะสังสรรค์หนังสือและงานฉันชอบพูดว่าฉันยอมรับอย่างสมบูรณ์ว่ามรดกไม่ควรเป็นคำที่ไม่ดี
stevebot

@stevebot - รหัสดั้งเดิมดูเหมือนว่า 'ลบ' เท่านั้นเนื่องจากเคยถูกใช้ในบริบทของการแทนที่หรือการเชื่อมต่อกับระบบเก่า (และความยากลำบากของมัน) โปรแกรมที่ถูกสร้างขึ้นเมื่อกว่าทศวรรษที่แล้ว แต่ยังมีประโยชน์ / เกี่ยวข้องและมีข้อบกพร่องเล็กน้อยยังคงเป็น 'ซอฟต์แวร์ดั้งเดิม' แต่ทุกคนเรียกมันว่า 'ซอฟต์แวร์' กันไปสำหรับรหัสฐาน
Robotnik

3

"Legacy code" เป็นคำที่คนในตลาดใช้ในการกดดันผู้ที่มีรหัสเก่า (แต่อาจใช้งานได้ดี) ในการอัปเดตเป็นภาษาและเทคนิคซอฟต์แวร์ที่ยิ่งใหญ่ที่สุด (และอาจมากกว่าข้อผิดพลาด) มันเชื่อมโยงอย่างใกล้ชิดกับ "ระบบเดิม" ซึ่งหมายถึงฮาร์ดแวร์เก่าและระบบปฏิบัติการที่ทำงานได้ดี แต่ไม่สอดคล้องกับสิ่งที่ "ถูกต้องทางการเมือง" ในขณะนี้ (เช่น OpenVMS, ระบบ IBM)


6
แม้ว่าสิ่งนี้อาจเป็นจริงมันจะดีกว่าถ้าคุณต้องแก้ไขคำตอบเพื่ออ้างอิงการอ้างอิงเฉพาะที่สนับสนุนการอ้างสิทธิ์ที่ทำในคำตอบนี้ มีการอ้างอิงใด ๆ ที่คุณสามารถอ้างอิงได้หรือไม่?
CVn

2

รหัสคำเดิมใช้วันที่อย่างน้อยปี 1989 ตามที่ Glenn Everhart ใช้ในcomp.sys.amiga :

(... โดยวิธีใช่ฉันทำบางครั้งโปรแกรมใน C ยัง ... แต่ฉันคิดว่ามันง่ายกว่าที่จะแปลงรหัสดั้งเดิมโดยไม่เปลี่ยนภาษา ... )

ฉันไม่พบสิ่งใดใน Google หนังสือที่ตรวจสอบได้ก่อนหน้านี้


ดังที่ Eric Lippert ชี้ให้เห็นว่าในไม่กี่นาทีหลังจากที่คุณเขียนรหัสชิ้นหนึ่งคุณจะได้รับรหัสดั้งเดิม เส้นโค้งที่แสดงโดย MichaelT และการค้นพบของคุณเป็นเพียงการมองเห็นกรอบเวลาซึ่งการเพิ่มขึ้นของกระแสหลักของ IT เริ่มสร้างรหัสจำนวนมหาศาลที่เกี่ยวข้องกับผู้คนจำนวนมากทั่วโลก อีกไม่นานความจำเป็นในการแทนที่ระบบ "เก่า" ด้วยระบบที่ใหม่กว่านั้นก็เป็นเช่นนั้น - และนั่นเป็นสาเหตุและเมื่อมันกลายเป็นคำที่แพร่หลาย
JensG

1
รหัสเก่าถูกแทนที่อย่างต่อเนื่องหากมีเหตุผลที่ดี ฉันเคยทำงานกับระบบเรียกเก็บเงินเมนเฟรมที่เขียน (ใน PL / 1) ในปี 1970 มันแทนที่ระบบที่เขียนด้วยภาษาแอสเซมบลีเมนเฟรม (ซึ่งในตัวมันเองเป็นระบบอัตโนมัติของระบบแมนนวลที่มีอยู่) ในที่สุดระบบ PL / 1 ก็ถูกแทนที่หลังจากใช้งานไปประมาณ 35 ปี (ความพยายามที่ล้มเหลวสองครั้งเพื่อแทนที่มันก่อนหน้านั้น) ตอนนี้อาจเป็นไปได้ว่าเทคโนโลยีที่ทันสมัยได้ถูกทำลายไปก่อนหน้านี้แล้ว (และไม่สนใจว่าจะมีการเขียนระบบมรดกมากน้อยเพียงใด)
กระตุ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.