ฉันมักจะตำหนิความนิยมของ C ที่ต้องการภาษาแอสเซมบลีสากล การรวมกันของความเฉพาะเจาะจงในระดับเครื่องมาตรฐานและพกพาสุดขีดอนุญาตให้ C ทำหน้าที่เป็นภาษาแอสเซมบลีสากลโดยพฤตินัยและด้วยเหตุนี้ฉันสงสัยว่าบทบาทของมันจะยังคงดำเนินต่อไปอย่างไม่มีกำหนด
ฉันควรพูดถึงว่าฉันมักจะแปลกใจเล็กน้อยเมื่อ OOP ถูกนำเสนอในหลักสูตรการเขียนโปรแกรมเป็น "รุ่นสุดท้าย" ซึ่งเป็นจุดสิ้นสุดที่เป็นไปได้สำหรับการเขียนโปรแกรมที่ดีเท่านั้น เช่นเดียวกับด้านอื่น ๆ ของการเขียนโปรแกรมคุณค่าของ OOP คือการประนีประนอมระหว่างปัจจัยที่มีการแข่งขันมากมายรวมถึงการที่สมองของมนุษย์จัดระเบียบข้อมูลว่ากลุ่มสังคมให้การสนับสนุนซอฟต์แวร์ในระยะยาวได้อย่างไรและในกรณีของการเขียนโปรแกรมเชิงวัตถุ ว่าเอกภพทำงานอย่างไร
และจุดสุดท้ายนั้นก็คุ้มค่าที่จะใช้ค้อนทุบนิดหน่อย อ่านเพิ่มเติมหากคุณสนใจในการสำรวจระดับฟิสิกส์ว่าทำไมรูปแบบการเขียนโปรแกรมบางอย่างมีอยู่อย่างไรพวกเขาทำงานร่วมกันอย่างไรและโลกอาจจะมุ่งไปสู่อนาคตในอนาคตเมื่อเราขยายแนวความคิดดังกล่าว ...
วัตถุในวิชาฟิสิกส์คือสิ่งใดก็ตามที่รักษาความเชื่อมโยงที่รู้จักได้ตลอดเวลา ในทางกลับกันทำให้สิ่งมีชีวิตที่เรียบง่ายอย่างพวกเราสามารถหลบหนีจากการเป็นตัวแทนของวัตถุโดยใช้บิตเพียงเล็กน้อยเท่านั้นโดยไม่เป็นอันตรายต่อการอยู่รอดของเรามากเกินไป แต่ในแง่ของฟิสิกส์ในวงกว้างจำนวนของสิ่งที่คุณต้องทำให้ถูกต้องเพื่อทำให้การทำให้เข้าใจง่ายเป็นเรื่องง่ายและทั่วไปนั้นมีขนาดใหญ่อย่างน่าทึ่ง ในฐานะที่เป็นมนุษย์เราไม่ได้คิดถึงเรื่องนั้นมากนักเพราะค่อนข้างตรงไปตรงมาเราจะไม่อยู่ที่นี่ถ้ามันไม่จริง
ฟังดูเป็นนามธรรมเหรอ? มันไม่จริง ลองนึกภาพตัวอย่างเช่นพยายามนำทางถนนไปที่บ้านเพื่อนของคุณถ้าแทนที่จะเป็นรถยนต์คุณจะพบกับสนามพลาสมาที่สั่นคลอนอย่างรวดเร็วและการควบแน่นชั่วขณะของวัตถุเคลื่อนที่ด้วยความเร็วที่มหาศาล สถานการณ์ดังกล่าวอาจลดความลึกลงไปในโอกาสในการเข้าสังคม เราต้องการวัตถุเราเป็นวัตถุและการมีอยู่ของวัตถุทำให้เรามีระดับของสภาพแวดล้อมรอบตัวเราที่ใหญ่โตและสำคัญยิ่ง
งั้นลองดึงทั้งหมดนั้นกลับไปที่ซอฟต์แวร์ วัตถุใดในโลกแห่งความเป็นจริงได้กล่าวเกี่ยวกับวัตถุในแง่ของการเขียนโปรแกรม?
สำหรับสิ่งหนึ่งนั่นหมายความว่าสิ่งที่กำหนดวัตถุ "ดี" ในซอฟต์แวร์ควรเป็นจริงหรือไม่ว่าชนิดของข้อมูลที่คุณจัดการอยู่นั้นรองรับความคิดในการคงอยู่ของสิ่งที่จดจำได้ตลอดเวลาหรือไม่
ด้วยคำจำกัดความรูปแบบที่ง่ายที่สุดของ OOP นั้นง่ายต่อการจดจำ พวกเขาเป็นคนที่จัดการบิตโดยใช้เฉพาะข้อมูลที่ "แนบ" แล้วหรือกำหนดโดยโลกแห่งความจริงวัตถุทางกายภาพอย่างแท้จริงเช่นบุคคลบ้านหรือรถยนต์ แม้วันนี้ยังคงบ่อยเกินไปเพียงความหมายของวัตถุที่ผู้คนได้รับในหลักสูตรซอฟแวร์ มันแย่มากเพราะแม้แต่โปรแกรมเชิงวัตถุก็ต้องการคำนิยามที่กว้างกว่านั้น
ประเภทที่สองและไกลน่าสนใจมากขึ้นของวัตถุที่ประกอบด้วยสิ่งที่ฉันจะเรียกimmortalized เหตุการณ์จริงของโลก โดย "immortalized" ฉันหมายถึงสิ่งต่างๆ ที่มีอยู่อย่างน้อยก็สั้น ๆในฐานะที่เป็นนิติบุคคลหรือคอลเลกชันที่กำหนดไว้อย่างดีในโลกแห่งความเป็นจริง แต่จากนั้นก็แยกย้ายกันไป การประชุมสัมมนาเป็นตัวอย่างที่ยอดเยี่ยม: การประชุมสัมมนามีอยู่ครู่หนึ่งในฐานะที่เป็นคอลเลกชันสถานที่และผู้คนที่กำหนดไว้อย่างเหมาะสม แต่อนิจจาแม้แต่การประชุมที่ดีที่สุดก็ต้องจบลงและแต่ละส่วนก็ทำให้พวกเขาก้าวไปสู่กิจกรรมอื่น ๆ
แต่ด้วยการใช้คอมพิวเตอร์และเครือข่ายเราสามารถทำให้การประชุมสัมมนาชั่วคราวดูเหมือนว่าเป็นวัตถุระยะยาวโดยการจับและรักษาหน่วยความจำของมันเป็นวัตถุซอฟต์แวร์ สิ่งต่าง ๆ มากมายที่เราทำกับคอมพิวเตอร์และฐานข้อมูลเป็นจำนวนมากสำหรับเหตุการณ์ชั่วคราวซึ่งทำให้เราพยายามทำให้เอกภพที่แท้จริงของเราสมบูรณ์ยิ่งขึ้นด้วยการจับภาพและขยายในรูปแบบที่ไม่สามารถมีอยู่จริงในร่างกาย เช่นคุณเคยเห็นแพนดอร่าตัวจริงเมื่อเร็ว ๆ นี้หรือไม่? การจับและการขยายชิ้นส่วนของโลกแห่งความจริงดังกล่าวช่วยเสริมสร้างและยืดอายุชีวิตเศรษฐกิจและทางเลือกของเราในรูปแบบที่น่าทึ่ง นี่คือหัวใจของการเขียนโปรแกรมเชิงวัตถุสถานที่ที่มันมีและยังคงมีผลกระทบที่น่าทึ่งที่สุด
หมวดหมู่สุดท้ายของ OOP ประกอบด้วยวัตถุที่ไม่มีการเชื่อมต่ออย่างใกล้ชิดกับเหตุการณ์ภายนอก แต่เป็นโครงสร้างพื้นฐานแทนจำเป็นเพื่อสนับสนุนการขยายความเป็นจริงของเราอย่างต่อเนื่องโดยใช้สิ่งที่เป็นอมตะจากโลกแห่งความจริง นี่คือที่ที่คุณสามารถลงไปจนถึงโลหะ (กึ่ง) ของคอมพิวเตอร์สร้างชิ้นส่วนของความเป็นจริงแบบถาวรที่เช่นองค์ประกอบทางเคมีของโลกแห่งความจริงสามารถรวมกันได้อย่างรวดเร็วและในวิธีที่น่าสนใจในการสร้างโลกภายในใหม่ การคำนวณแบบเคลื่อนที่ได้ช่วยส่งเสริมการเติบโตของวิธีการ recombinatorial สูงซึ่งเป็นอีกครั้งที่เลียนแบบคุณลักษณะของ recombinatorial ของโลกทางกายภาพ มันก็ยากเช่นกัน: สิ่งที่อาจเป็นทางเลือกที่ดีอาจพิสูจน์ได้ว่าเมื่อเวลาผ่านไปจะเป็นสิ่งที่ไม่ดีอย่างไม่คาดคิดมักจะเป็นเพราะมันปิดกั้นความหลากหลายและการขยายตัวแทนที่จะสนับสนุน
หมวดหมู่สุดท้ายนี้ยังชี้ให้เห็นถึงความเสี่ยงในการใช้รูปแบบการเขียนโปรแกรมเพียงรูปแบบเดียวเช่นเดียวกับโลกแห่งความจริงโลกที่ตั้งโปรแกรมไว้ก็ต้องการกระบวนการที่ไม่จำเป็นสอดคล้องกับวัตถุที่ไม่เปลี่ยนแปลงค่อนข้างดี โลกเต็มไปด้วยวัตถุ แต่ดวงอาทิตย์เต็มไปด้วยกระแสพลังงานที่มีพลังสูงซึ่งในที่สุดจะต้อง "ขับเคลื่อน" วัตถุและกิจกรรมบนโลกพลังงานต่ำ ในทำนองเดียวกันในการสร้างโลกแห่งการคำนวณมีหลายกรณีที่คุณต้องจัดการกับกระแสและการเปลี่ยนแปลงและบริบทที่เปลี่ยนแปลงอย่างรวดเร็วซึ่งในขณะที่ไม่เหมือนวัตถุในตัวของมันเอง . ไม่มีเหตุบังเอิญที่การโปรแกรมส่วนใหญ่ที่ทำในระดับเคอร์เนลนั้นไม่เหมือนวัตถุอย่างชัดเจนหรือมีแนวโน้มที่จะพึ่งพาภาษาอย่าง C ที่เน้นการประมวลผลมากกว่า เหล่านี้คือโดเมนที่ลึกกว่าซึ่งเติมเต็มความหลากหลายที่น่าทึ่งที่เราเห็นสูงขึ้นในโลกที่สร้างจากคอมพิวเตอร์
ส่วนอื่น ๆ ที่ OOP สามารถไปได้นั้นกำลังเน้นไปที่แนวคิดของวัตถุเก่า ๆมากเกินไป
วัตถุในโลกแห่งความเป็นจริงและโดยเฉพาะอย่างยิ่งสิ่งมีชีวิตมีความสามารถในการโต้ตอบกับสภาพแวดล้อมในระดับที่น่าอัศจรรย์และซับซ้อน วิดเจ็ตที่ใช้ร่วมกันซึ่งมองดูกันตรวจสอบความเข้ากันได้และสติปัญญาและอาจคิดหาวิธีใหม่ ๆ ในการโต้ตอบใกล้ชิดกับแนวคิดทางชีววิทยาในโลกแห่งความเป็นจริงของวัตถุมากกว่าโครงร่างที่เรียบง่ายและโครงร่างมรดกที่เรียบง่าย เพื่อมุ่งเน้น (โดยปกติจำเป็น!) ที่ระดับรหัส นี่เป็นหนึ่งในพื้นที่การเจริญเติบโตของวัตถุในโลกไซเบอร์ยิ่ง "แนวทางเช่น" วิธีการทำปฏิกิริยาต่อสภาพแวดล้อมเป็นบรรทัดฐานแม้ในการเขียนโปรแกรมเอง
และมากมายสำหรับ "คำวิจารณ์" ของ OOP ของฉัน! อย่างไรก็ตามถึงกระนั้นฉันหวังว่าฉันจะชี้ให้เห็นว่าทำไมการสร้างโลกไซเบอร์ที่สมบูรณ์ยิ่งขึ้นหมายถึงการรวมรูปแบบการเขียนโปรแกรมที่หลากหลายแทนที่จะคิดว่า "มีเพียง" เท่านั้นที่เป็นสิ่งจำเป็น ความรู้สึกของฉันคือสิ่งที่น่าสนใจจริงๆยังมาไม่ว่าโลกของเราจะทำอะไร!