Delphi đã ảnh hưởng đến ngôn ngữ C # theo những cách cụ thể nào


8

Tôi đặc biệt tìm kiếm những ảnh hưởng ngôn ngữ (trái ngược với khuôn khổ). Thoạt nhìn, C # dường như là một sự phát triển của C / C ++ hoặc Java. Nhưng chúng tôi biết C # có cùng nhà thiết kế với Delphi, và anh ấy thậm chí đã thừa nhận một số điểm tương đồng và nói rằng "những ý tưởng tốt không biến mất." Một ví dụ tôi thấy về một cái gì đó trong C # không có trong Java hoặc C / C ++ là thuộc tính. Là nó? Có những người khác?


Thật xấu hổ khi một số người trong số họ thực sự đã làm. Hãy nhìn xem mọi người đã mất bao lâu để thực hiện lại các khả năng động mà Delphi's đã có sẵn trong variantloại này kể từ đó mãi mãi ...
Mason Wheeler

Rất may, họ đã không gắn bó với BEGIN và HẾT ...
Newtopian

2
@Newtopian: Vì vậy, bạn thích chấm câu hơn các từ dễ đọc? Thêm một loại lập trình viên APL?
Jim McKeeth

Turbo Pascal (tổ tiên của Delphi) được viết bởi Anders Hejlsberg , kiến ​​trúc sư trưởng của ngôn ngữ C # tại Microsoft. Kết nối các dấu chấm.
Robert Harvey

5
APERSANDJim Colón yesCOMMA Tôi rất thích dấu chấm câu trên pronounciationEXCLAMATIONMARK tiếng Anh của họ vì tôi nghĩ rằng nó làm cho toàn bộ điều nhiều readablePOINT hơn Colón DASH SEMICOLON
Newtopian

Câu trả lời:


4

Không phải là thứ mà các lập trình viên có thể nhìn thấy, nhưng đằng sau hậu trường, khá nhiều, nhưng rất nhiều trong số đó nằm trong thiết kế điều khiển IDE và windows, thay vì ngôn ngữ, tôi đã sử dụng Delphi 7 được khoảng 10 năm và C # cho khoảng 5 vì vậy tôi đã chọn một vài:

1) Thuộc tính neo giống hệt Delphi

2) Vị trí mặc định của biểu mẫu

3) Hệ thống phân cấp đối tượng cho các điều khiển

4) Nhà thiết kế biểu mẫu nói chung cảm thấy rất giống nhau - không thể đặt ngón tay của tôi lên nó một cách khéo léo.

Một số điều trong ngôn ngữ tôi đã nhận thấy:

1) Một số loại dữ liệu nhất định, còn gọi là Tiền tệ / Số thập phân

Một số điều trong ngôn ngữ rất khác nhau:

1) Tính kế thừa của hàm tạo (delphi được sử dụng để kế thừa tất cả các hàm tạo cho các đối tượng cơ sở mà chúng không phải được định nghĩa lại trong các lớp con cháu)

2) Delphi có khả năng hạ cấp khả năng hiển thị của một phương thức hoặc thuộc tính trong các lớp con cháu, nhưng vẫn giữ nguyên tính đa hình, C # không cho phép điều này (tôi rất nhớ điều này)

Tôi có thể đã bỏ lỡ hàng đống thứ, xin vui lòng thêm chúng nếu bạn nghĩ về chúng.


Tôi ước các nhà thiết kế ngôn ngữ sẽ nhận ra giao diện ngoài thế giới khác biệt được kế thừa từ lớp cơ sở, giao diện thế giới bên ngoài của lớp dẫn xuất và giao diện mà lớp cơ sở trình bày cho lớp dẫn xuất. Nếu các lớp khác nhau sẽ có các nhóm khả năng chồng chéo, thì việc bọc một lớp cơ sở hoặc giao diện chung sẽ thể hiện tất cả các khả năng đó cùng với các thành viên để nói những lớp nào thực sự có thể sử dụng được, hơn là bao bọc nhiều lớp khác nhau. khả năng; Tuy nhiên, không có lý do nào, tại sao các lớp dẫn xuất phải ...
supercat

... phơi bày - với tư cách là thành viên của loại hình riêng của họ (trái ngược với loại cơ sở) - thành viên sẽ không thực sự có thể sử dụng được với loại hình riêng của họ. Nếu một hợp đồng của lớp cơ sở nói rằng bất kỳ lớp dẫn xuất nào có CanWoozletài sản trả về đúng phải cung cấp một Woozle()triển khai có thể sử dụng được , nhưng một lớp dẫn xuất cụ thể luôn trả về sai CanWoozlevà có một Woozletriển khai hợp pháp không thể sử dụng được , thì không có lý do nào mà lớp dẫn xuất phải đưa ra Woozlethành viên của nó .
supercat

2

Anders đã ở với Borland cho đến Delphi 3 - ông là kiến ​​trúc sư ban đầu của Delphi cũng như Turbo Pascal. Nếu bạn tải Delphi 1, hãy mở hộp giới thiệu và nhập VÀ bạn sẽ có được một bức ảnh của Anders nháy mắt với bạn.

Khi anh rời Borland để làm MS, ban đầu anh đã làm J ++, điều đó làm "buồn" Sun một chút. Sau đó, ông đã tạo ra C #. Các dấu chấm bạn nên tham gia đi từ Borland Object Pascal -> Java / J ++ -> C #

C # là nỗ lực của Microsoft để tạo ra một Java tốt hơn. Là một lập trình viên Delphi cũ, tôi chấp nhận rằng họ có thể đã thành công.


1
Tôi không đồng ý rằng C # là một nỗ lực để "tạo ra một Java tốt hơn". Mặc dù có các chuyên gia Java trong nhóm thiết kế C #, chúng tôi rất hiếm khi so sánh rõ ràng với Java khi thiết kế các tính năng ngôn ngữ.
Eric Lippert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.