การเพิ่มความซับซ้อนของระบบนั้นเพิ่มขึ้นอย่างไม่หยุดยั้งกดดันและทำให้ทรุดโทรมในที่สุด สำหรับฉันในฐานะโปรแกรมเมอร์รุ่นเก่ามันก็น่าผิดหวังอย่างขมขื่น
ฉันเขียนโปรแกรมมานานกว่า 40 ปีแล้วมีการเขียนโค้ดในภาษาต่าง ๆ 50-100 ภาษาหรือภาษาถิ่นและกลายเป็นผู้เชี่ยวชาญใน 5-10 เหตุผลที่ฉันสามารถเรียกร้องได้มากมายคือส่วนใหญ่พวกเขาเป็นเพียงภาษาเดียวกันกับการปรับแต่ง การปรับแต่งเพิ่มความซับซ้อนทำให้ทุกภาษาแตกต่างกันเล็กน้อย
ฉันได้ใช้อัลกอริทึมเดียวกันครั้งนับไม่ถ้วน: คอลเลกชัน, การแปลง, การเรียงลำดับและการค้นหา, เข้ารหัส / ถอดรหัส, รูปแบบ / การแยกวิเคราะห์, บัฟเฟอร์และสตริง, เลขคณิต, หน่วยความจำ, I / O การใช้งานใหม่ทุกครั้งจะเพิ่มความซับซ้อนเพราะทุกอย่างแตกต่างกันเล็กน้อย
ฉันสงสัยว่าความมหัศจรรย์ที่เกิดขึ้นจากศิลปินราวแขวนมือบินสูงของเว็บเฟรมและแอพมือถือว่าพวกเขาสามารถสร้างบางสิ่งที่สวยงามได้อย่างไรในช่วงเวลาสั้น ๆ จากนั้นฉันก็รู้ว่าพวกเขาไม่รู้จำนวนเท่าใดพวกเขาจะต้องเรียนรู้เกี่ยวกับข้อมูลหรือการสื่อสารหรือการทดสอบหรือเธรดหรืออะไรก็ตามก่อนสิ่งที่พวกเขาทำจะมีประโยชน์
ฉันเรียนรู้งานฝีมือของฉันในยุคของภาษารุ่นที่สี่ที่เราเชื่ออย่างแท้จริงว่าเราจะผลิตภาษาที่สูงขึ้นและสูงขึ้นอย่างต่อเนื่องเพื่อจับส่วนการเขียนซอฟต์แวร์ซ้ำ ๆ ที่เพิ่มขึ้นเรื่อย ๆ แล้วมันจะกลายเป็นว่าอย่างไร
Microsoft และ IBM ฆ่าความคิดนั้นโดยกลับไปที่ C เพื่อเขียนแอพสำหรับ Windows และ OS / 2 ในขณะที่ dBase / Foxpro และแม้แต่ Delphi ก็เฉื่อยชา จากนั้นเว็บก็ทำอีกครั้งด้วยภาษาแอสเซมบลีสามภาษาที่ดีที่สุด: HTML, CSS และ JavaScript / DOM มันลงจากที่นั่นทั้งหมดแล้ว ภาษามากขึ้นและห้องสมุดมากขึ้นและกรอบและความซับซ้อนมากขึ้น
เรารู้ว่าเราควรจะทำมันแตกต่าง เรารู้เกี่ยวกับ CoffeeScript และ Dart เกี่ยวกับ Less and Sass เกี่ยวกับเทมเพลตเพื่อหลีกเลี่ยงการเขียน HTML เรารู้และเราทำมันต่อไป เรามีกรอบการทำงานของเราเต็มไปด้วย abstractions รั่วและเราเห็นสิ่งมหัศจรรย์ที่สามารถทำได้โดยผู้ที่ได้รับการคัดเลือกน้อยที่เรียนรู้คาถาลึกลับ แต่เราและโปรแกรมของเราถูกดักจับโดยการตัดสินใจในอดีต มันซับซ้อนเกินไปที่จะเปลี่ยนแปลงหรือเริ่มต้นใหม่
ผลลัพธ์คือสิ่งที่ควรจะง่ายไม่ใช่เรื่องง่ายและสิ่งที่ควรจะเป็นไปได้นั้นแทบจะเป็นไปไม่ได้เพราะความซับซ้อน ฉันสามารถประเมินค่าใช้จ่ายในการเปลี่ยนแปลงเพื่อใช้คุณลักษณะใหม่ในฐานรหัสที่กำหนดไว้และมั่นใจได้ว่าฉันจะทำถูกต้อง ฉันสามารถประมาณได้ แต่ฉันไม่สามารถพิสูจน์หรืออธิบายได้ มันซับซ้อนเกินไป
ในการตอบคำถามสุดท้ายของคุณฉันขอแนะนำโปรแกรมเมอร์ที่อายุน้อยกว่าให้เริ่มต้นเค้กเลเยอร์ให้สูงที่สุดเท่าที่จะทำได้และดำดิ่งลงไปที่ชั้นล่างตามที่ต้องการและปรารถนาให้เกิดแรงกระตุ้น การตั้งค่าของฉันสำหรับภาษาที่ไม่มีการวนซ้ำสถานะการแยกย่อยและชัดเจน Lisp และ Haskell เข้ามาในใจ ในทางปฏิบัติฉันมักจะจบลงด้วย C # / Java, Ruby, Javascript, Python และ SQL เพราะนั่นคือที่ชุมชนอยู่
คำพูดสุดท้าย: ความซับซ้อนเป็นศัตรูที่สุด! เอาชนะสิ่งนั้นและชีวิตกลายเป็นเรื่องง่าย