Столбы языка дизайна C # - PullRequest
4 голосов
/ 28 мая 2010

В статье (http://www.artima.com/intv/nonvirtualP.html) Андерс Хейлсберг упомянул, что управление версиями является одним из столпов дизайна языка C #. Кто-нибудь знает, каковы другие столпы?

1 Ответ

7 голосов
/ 29 мая 2010

Я отсылаю вас к первой странице спецификации C #, которая описывает важные факторы, влияющие на дизайн языка. Несколько цитат, которые указывают, какими были некоторые важные факторы, и продолжают быть:

современный, объектно-ориентированный и типобезопасный

-

, немедленно знакомый программистам на C, C ++ и Java.

-

Современный дизайн программного обеспечения все больше опирается на программные компоненты в форме автономных и самоописываемых пакетов функциональных возможностей. Ключом к таким компонентам является то, что они представляют модель программирования со свойствами, методами и событиями; у них есть атрибуты, которые предоставляют декларативную информацию о компоненте; и они включают свою собственную документацию. C # предоставляет языковые конструкции для непосредственной поддержки этих концепций, что делает C # очень естественным языком для создания и использования программных компонентов.

-

Некоторые функции C # помогают создавать надежные и долговечные приложения: сборка мусора [...] обработка исключительных ситуаций [...] безопасная конструкция типа

-

C # имеет единую систему типов. [...] значения любого типа могут храниться, транспортироваться и обрабатываться согласованным образом

-

Чтобы гарантировать, что программы и библиотеки C # могут со временем развиваться совместимым образом, большое внимание было уделено версиям в дизайне C #. Многие языки программирования уделяют мало внимания этой проблеме, и в результате программы, написанные на этих языках, ломаются чаще, чем это необходимо, когда вводятся более новые версии зависимых библиотек. Аспекты дизайна C #, на которые напрямую влияли соображения управления версиями, включают отдельные виртуальные модификаторы и модификаторы переопределения, правила разрешения перегрузки методов и поддержку явных объявлений членов интерфейса.

...