Tôi luôn có xu hướng đổ lỗi cho sự phổ biến của C về sự cần thiết của một ngôn ngữ lắp ráp phổ quát. Sự kết hợp của tính đặc hiệu ở cấp độ máy, tiêu chuẩn hóa và tính di động cực cao cho phép C hoạt động như ngôn ngữ lắp ráp phổ biến trên thực tế và vì lý do đó tôi nghi ngờ vai trò của nó sẽ tiếp tục vô tận.
Tôi nên đề cập rằng tôi luôn có một chút ngạc nhiên khi OOP được trình bày trong các khóa học lập trình như một "mô hình cuối cùng", đó là điểm cuối duy nhất có thể để lập trình tốt. Giống như nhiều khía cạnh khác của lập trình, giá trị của OOP là sự thỏa hiệp giữa nhiều yếu tố cạnh tranh, bao gồm cách bộ não của con người tổ chức thông tin, cách các nhóm xã hội hỗ trợ phần mềm trong thời gian dài và trong trường hợp lập trình hướng đối tượng, một số khía cạnh khá sâu sắc về cách thức vũ trụ hoạt động.
Và điểm cuối cùng đó đáng để rèn một chút. Đọc thêm nếu bạn quan tâm đến một khám phá ở cấp độ vật lý về lý do tại sao các kiểu lập trình nhất định tồn tại, cách chúng hoạt động cùng nhau và nơi thế giới có thể hướng tới trong tương lai khi chúng ta mở rộng hơn nữa về các khái niệm đó ...
Một đối tượng trong vật lý là bất cứ điều gì duy trì sự gắn kết dễ nhận biết theo thời gian. Điều đó đến lượt nó cho phép các sinh vật đơn giản như chúng ta thoát khỏi việc đại diện cho vật thể chỉ bằng một số bit nhỏ, mà không gây nguy hiểm cho sự sống sót của chúng ta quá nặng. Nhưng về mặt vật lý nói chung, số lượng những thứ bạn phải có chính xác để làm cho loại đơn giản hóa đó trở nên dễ dàng và phổ biến là rất lớn. Là con người chúng ta không nghĩ về tất cả những điều đó bởi vì thật lòng mà nói, chúng ta sẽ không ở đây nếu điều đó không đúng.
Nghe có vẻ quá trừu tượng? Nó thực sự không. Ví dụ, hãy tưởng tượng bạn đang cố gắng điều hướng con đường đến nhà của bạn mình nếu thay vì những chiếc xe bạn gặp phải trường plasma dao động nhanh và sự ngưng tụ nhất thời của vật chất chuyển động với một phạm vi vận tốc khổng lồ. Một kịch bản như vậy có thể cắt giảm sâu vào các cơ hội xã hội hóa, phải không? Chúng ta cần đồ vật, chúng ta là các đối tượng và sự tồn tại của các đối tượng cung cấp cho chúng ta một mức độ đơn giản hóa cực kỳ quan trọng và cực kỳ quan trọng của môi trường xung quanh chúng ta.
Vì vậy, hãy kéo tất cả những thứ đó trở lại với phần mềm. Các đối tượng trong thế giới thực nói gì về các đối tượng về mặt lập trình?
Chà, đối với một điều, điều đó có nghĩa là những gì định nghĩa một đối tượng "tốt" trong phần mềm phải thực sự là liệu loại dữ liệu bạn đang xử lý có hỗ trợ ý tưởng về sự bền bỉ dễ nhận biết theo thời gian hay không .
Với định nghĩa, các dạng OOP dễ nhất rất dễ nhận ra. Họ là những người đối phó một chút bằng cách chỉ sử dụng dữ liệu đã được "đính kèm" hoặc được xác định bởi một số đối tượng thực tế, thực sự như một người, nhà hoặc xe hơi. Ngay cả ngày nay, đây vẫn là quá thường xuyên định nghĩa duy nhất về các đối tượng mà mọi người có được trong các khóa học phần mềm. Điều đó thật tệ, bởi vì ngay cả các chương trình hướng đối tượng tầm thường cũng cần một định nghĩa rộng hơn thế.
Loại đối tượng thứ hai và thú vị hơn bao gồm những thứ tôi sẽ gọi là sự kiện trong thế giới thực bất tử . Bằng cách "bất tử", ý tôi là những thứ ít nhất tồn tại trong một thời gian ngắn như một thực thể hoặc bộ sưu tập được xác định rõ trong thế giới thực, nhưng sau đó phân tán và ngừng tồn tại như những bộ sưu tập có ý nghĩa vật lý. Một hội nghị chuyên đề là một ví dụ tuyệt vời: Hội thảo chuyên đề tồn tại trong một thời gian ngắn như là một bộ sưu tập các địa điểm và con người được xác định rõ ràng. Nhưng than ôi, ngay cả những hội nghị tốt nhất cũng phải kết thúc, và những phần riêng lẻ đã khiến họ chuyển sang các hoạt động khác.
Nhưng bằng cách sử dụng máy tính và mạng, chúng ta có thể làm cho một hội nghị chuyên đề thoáng qua như vậy có vẻ như một đối tượng lâu dài bằng cách bắt và duy trì một ký ức về nó như là một đối tượng phần mềm. Rất nhiều điều chúng ta làm với máy tính và cơ sở dữ liệu tương đương với sự bất tử của các sự kiện thoáng qua, trong đó chúng ta thực sự cố gắng làm cho vũ trụ thực sự của chúng ta trở nên giàu có hơn bằng cách nắm bắt và mở rộng nó theo những cách không thể tồn tại về mặt vật lý. Ví dụ, bạn đã thấy một Pandora thực sự gần đây? Việc chụp và mở rộng các mảnh trong thế giới thực như vậy giúp làm phong phú và mở rộng cuộc sống, nền kinh tế và lựa chọn của chúng ta theo những cách đáng chú ý. Đối với tôi đây là trung tâm của lập trình hướng đối tượng, nơi mà nó đã có và tiếp tục có những tác động đáng chú ý nhất.
Danh mục cuối cùng của OOP bao gồm các đối tượng không có kết nối chặt chẽ với các sự kiện bên ngoài, nhưng thay vào đó là cơ sở hạ tầngcần thiết để hỗ trợ chúng tôi tiếp tục mở rộng thực tế bằng cách sử dụng các vật thể bất tử từ thế giới thực. Đây là nơi bạn có thể hạ xuống toàn bộ kim loại (bán) của máy tính, tạo ra những mảnh thực tế dai dẳng giống như các yếu tố hóa học của thế giới thực có thể được kết hợp nhanh chóng và theo những cách thú vị để xây dựng thế giới nội tâm mới. Điện toán di động đã giúp thúc đẩy sự phát triển của loại phương pháp tái tổ hợp cao này, một lần nữa theo nhiều cách bắt chước các tính năng tái tổ hợp của thế giới vật lý. Nó cũng khó: Những gì có vẻ như là một lựa chọn tốt có thể chứng minh theo thời gian là một điều xấu bất ngờ, thường là vì nó kết thúc việc ngăn chặn sự đa dạng và mở rộng thay vì hỗ trợ nó.
Danh mục cuối cùng này cũng chỉ ra những rủi ro khi chỉ sử dụng một mô hình để lập trình, vì giống như thế giới thực, thế giới được lập trình cũng cần các quy trình khôngtương ứng tốt với các đối tượng tương đối không thay đổi. Trái đất có rất nhiều vật thể, nhưng mặt trời chứa đầy các dòng năng lượng rất năng động mà cuối cùng là cần thiết để "lái" các vật thể và hoạt động trên trái đất có năng lượng thấp hơn. Tương tự như vậy, trong việc tạo ra thế giới điện toán, có những trường hợp bạn phải đối phó với các luồng và biến đổi và bối cảnh thay đổi nhanh chóng, mặc dù bản thân chúng không giống đối tượng, nhưng lại cực kỳ quan trọng để cho phép các đối tượng đơn giản hơn, thân thiện với con người hơn được sử dụng ở cấp độ cao hơn . Không phải ngẫu nhiên mà phần lớn các chương trình được thực hiện ở cấp hạt nhân không giống như đối tượng, hoặc nó có xu hướng phụ thuộc nhiều vào các ngôn ngữ như C được định hướng xử lý nhiều hơn. Đây là những miền sâu hơn bổ sung cho sự đa dạng hấp dẫn mà chúng ta thấy cao hơn trong thế giới do máy tính tạo ra.
Một lĩnh vực khác mà OOP có thể trở nên tồi tệ là tập trung quá nhiều vào các khái niệm đối tượng cũ .
Các vật thể trong thế giới thực, và đặc biệt là các vật thể sống , có một mức độ hoàn toàn đáng kinh ngạc về khả năng tương tác với môi trường của chúng theo những cách phức tạp và tinh tế. Các vật dụng có thể kết hợp nhìn nhau, thực hiện một số kiểm tra tính tương thích và độ tỉnh táo và thậm chí có thể tìm ra một số cách mới để tương tác gần với khái niệm sinh học trong thế giới thực hơn là các khung đơn giản và các kế hoạch thừa kế đơn giản mà chúng ta có xu hướng để tập trung vào (thường là do sự cần thiết!) ở cấp mã. Đây là một trong những lĩnh vực tăng trưởng cho các đối tượng trong thế giới mạng, các cách tiếp cận "giống như tác nhân" hơn trong đó phản ứng với môi trường là tiêu chuẩn ngay cả trong chính chương trình.
Và rất nhiều cho "phê bình" của tôi về OOP! Tuy nhiên, tuy nhiên, tôi hy vọng tôi đã chỉ ra lý do tại sao tạo ra một thế giới mạng phong phú hơn có nghĩa là bao gồm sự đa dạng của các phong cách lập trình, thay vì cho rằng "chỉ một" là tất cả những gì cần thiết. Cảm giác của tôi là những thứ thực sự thú vị vẫn chưa đến, bất kể những gì chúng ta làm bây giờ là trần tục!