Файл: Современные языки программирования (История создания).pdf
Добавлен: 31.03.2023
Просмотров: 371
Скачиваний: 2
СОДЕРЖАНИЕ
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ и некоторых других языков, не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
Глава 6.2. История развития
Название «Си шарп» (от англ. sharp — диез) происходит от музыкальной нотации, где знак диез означает повышение соответствующего ноте звука на полутон, что аналогично названию языка C++, где «++» обозначает инкремент переменной. Название также является игрой с цепочкой C → C++ → C++++(C#), так как символ «#» можно составить из 4х знаков «+».
Вследствие технических ограничений на отображение (стандартные шрифты, браузеры и т. д.) и того, что знак диез ♯ не представлен на стандартной клавиатуре, знак # был выбран для представления знака диез при записи имени языка программирования. Это соглашение отражено в Спецификации Языка C# ECMA-334.
Названия языков программирования не принято переводить, поэтому язык следует называть по-английски «Си шарп».
Версии
Проект C# был начат в декабре 1998 и получил кодовое название COOL(C-style Object Oriented Language).
Версия 1.0
Версия 1.0 была анонсирована вместе с платформой .NET в июне 2000 года, тогда же появилась и первая общедоступная бета-версия; C# 1.0 окончательно вышел вместе с Microsoft Visual Studio .NET в феврале 2002 года.
Первая версия C# напоминала по своим возможностям Java 1.4, несколько их расширяя: так, в C# имелись свойства (выглядящие в коде как поля объекта, но на деле вызывающие при обращении к ним методы класса), индексаторы (подобные свойствам, но принимающие параметр как индекс массива), события, делегаты, циклы foreach, структуры, передаваемые по значению, автоматическое преобразование встроенных типов в объекты при необходимости (boxing), атрибуты, встроенные средства взаимодействия с неуправляемым кодом (DLL, COM) и прочее.
Кроме того, в C# решено было перенести некоторые возможности C++, отсутствовавшие в Java: беззнаковые типы, перегрузку операторов, передача параметров в метод по ссылке, методы с переменным числом параметров, оператор goto. Также в C# оставили ограниченную возможность работы с указателями — в местах кода, специально обозначенных словом unsafe и при указании специальной опции компилятору.
Версия 2.0
В 2005 году вышел окончательный релиз версии 2.0 C#. Она укрепила позиции этого языка программирования и окончательно убедила в его эффективности и дальнейшем развитии.
Новые возможности C# 2.0:
Частичные типы (разделение реализации класса более чем на один файл)
Обобщённые, или параметризованные типы (generics)
Новая форма итератора, позволяющая создавать сопрограммы с помощью ключевого слова yield, подобно Python и Ruby
Анонимные методы
Оператор '??': return obj1 ?? obj2; означает (в нотации C# 1.0) return obj1!=null ? obj1 : obj2;
Обнуляемые типы-значения
Возможность создавать хранимые процедуры, триггеры
Поддержка 64-разрядных вычислений
Версия 3.0
Окончательно эта версия языка вошла в Visual Studio 2008 и .NET 3.5.
Новые возможности C# 3.0:
Ключевые слова select, from, where, позволяющие делать запросы из XML документов, коллекций и т. п.
Инициализация объекта вместе с его свойствами
Лямбда-выражения
Деревья выражений
Вывод типов локальной переменной : var x = "hello"; вместо string x = "hello";
Безымянные типы
Методы-расширения — добавление метода в существующий класс с помощью ключевого слова this при первом параметре статической функции
Автоматические свойства
Версия 4.0
Окончательная версия вышла в 2010 году.
Новые возможности C# 4.0:
Возможность использования позднего связывания, для использования:
с языками с динамической типизацией (Python, Ruby)
с COM-объектами
отражения (reflection)
объектов с изменяемой структурой (DOM)
Именованные и опциональные параметры
Новые возможности COM interop
Ковариантность и контравариантность
Контракты в коде
Глава 6.3. Особенности языка
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем (однако, эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET). CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.