История языков программирования: C# — впереди планеты всей
Содержание
- 1 История языков программирования: C# — впереди планеты всей
- 1.1 Для чего нужен язык C#
- 1.2 Главное
- 1.3 Игры на DirectX
- 1.4 Игры на Unity
- 1.5 Машинное обучение
- 1.6 Игры и программы для разных мобильных платформ
- 1.7 Программы и сервисы для веба
- 1.8 Исходные коды программ и игр
- 1.9 История языка программирования C#
- 1.10 Рождение C#
- 1.11 Для новых задач — новый язык программирования
- 1.12 С# и .NET
- 1.13 C# это мощь С++ и простота Visual Basic
- 1.14 Особенности С#
- 1.15 Ограничения C#
- 1.16 Почему языки C, C++, C# так называются?
- 1.17 1. C это следующая буква после B
- 1.18 2. C плюс единичка
- 1.19 3. C плюс половинка
- 1.20 4. Существует ли язык C минус единичка?
Для чего нужен язык C#
Вы наверняка слышали о языках программирования, которые начинаются на «Си»: просто «Си», «Си плюс плюс» и «Си шарп». Сейчас хорошее время, чтобы разобраться, что к чему.
Главное
- C# — язык программирования, который компания Микрософт изначально делала для своих проектов.
- Название читается как «си-шарп».
- Многие думают, что это отдельная версия языка С, но на самом деле нет. В C# действительно есть много конструкций, похожих на С и С++, но точно так же в нём можно найти элементы Паскаля и Java. Это не развитие линейки С, а новый язык, созданный с нуля.
- C# — объектно-ориентированный язык, а значит, вся теория про классы, объекты и наследования работает и в нём, но с некоторыми оговорками.
- Спрос на программистов C# не шквальный, этот язык сложно назвать модным в 2020 году. Но на нём можно делать всё, что нужно в 2020-м: от игр и приложений до веб-сервисов.
- Особенно хорошо он сочетается с экосистемой Microsoft.
Игры на DirectX
DirectX — набор компонентов, которые используются для программирования трёхмерной графики и работы со звуком и видео. С помощью C# можно легко подключиться к DirectX и написать свой трёхмерный шутер или любую другую игру. Технически это выглядит так: C# отвечает за логику и поведение игры, а DirectX — за графику и звуковое сопровождение.
Игры на Unity
Unity — это движок для создания двумерных и трёхмерных игр. Он берёт на себя физику, графику и многие служебные штуки, чтобы вы могли сосредоточиться на контенте и сценарии игры. Всё бы хорошо, но без программирования в Unity всё равно не получится, и бывалые разработчики рекомендуют для Unity выбирать именно C#. Есть и другие варианты, например, собственный язык UnityScript или JavaScript.
Машинное обучение
Так как C# — это проект Микрософта, то у него всё в порядке с поддержкой и с библиотеками. В мире C# библиотеки есть практически для всего, в том числе и для работы с нейросетями и машинным обучением — ML.NET.
Это значит, что вы можете использовать все возможности нейронок в приложениях и объединять их с помощью одного и того же языка программирования. А так как C# — мультиплатформенный язык, то машинное обучение можно встроить практически во что угодно, от мобильных приложений до носимой электроники.
Игры и программы для разных мобильных платформ
Чтобы один и тот же C#-код работал на разных платформах, используют Mono и Xamarin — продукты для кросс-платформенной разработки под разные операционные платформы.
- Вы пишете программу для одной платформы, например Windows.
- Берёте Mono, загружаете туда свой код и выбираете новую платформу — например iOS.
- Mono смотрит и говорит — вот тут нужно подключить другую библиотеку, вот здесь немного переписать код, а это место вообще можно удалить и написать заново, чтобы всё работало.
- В итоге программист не пишет софт с нуля для каждой операционной системы, а правит его так, чтобы он соответствовал её требованиям.
- Это сокращает время разработки в несколько раз, потому что основа кода одна и та же, а разница только в деталях.
Программы и сервисы для веба
C# можно использовать для создания веб-приложений. Работает так:
- У вас есть компьютер-сервер, на котором работает серверный софт Microsoft.
- Серверный софт умеет исполнять код на нескольких языках, среди них — C#.
- Где-то из интернета в этот сервер прилетает запрос, например «выдай мне главную страницу».
- Серверный софт компонует веб-страницу и пуляет обратно пользователю. Как и из чего компонуется эта страница — это и есть то, что нужно разработать в веб-приложении.
Теоретически вы можете написать приложение для п. 2 на любом языке, который поддерживает серверные решения Microsoft, в некоторых случаях это может быть и PHP. Но эксперты говорят, что для софта Microsoft есть смысл писать на их языке C#.
Сразу скажем: в большинстве бытовых и любительских проектов вам будет достаточно даже не приложения на C# (или Python, Ruby или PHP), а уже готового решения. Например, если нужен блог, лучше запустить его на хостинге WordPress и просто начать им пользоваться. Это не самый быстрый софт и не самый гибкий, но его запуск займёт у вас 15 минут, а не 15 недель.
А вот на сложных высоконагруженных сайтах WordPress уже не потянет — нужны другие технологии. И тут уже требуются глубокие знания: на одном железе и с одним стеком технологий лучше всего будет работать C#, на другом — PHP, на третьем — Ruby и т. д.
Исходные коды программ и игр
Программирование — работа и хобби
- В начало
- Все статьи
- История программирования
- История языка программирования C#
История языка программирования C#
Рождение C#
Язык C# появился на свет в июне 2000 г., в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg). Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM — Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).
Для новых задач — новый язык программирования
Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#.
Кроме того, Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.
С# и .NET
С# и .NET и являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# есть новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 20 лет.
Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут свободно общаться с ними.
C# это мощь С++ и простота Visual Basic
Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ — Java — лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов, Java не поддерживает ни ту, ни другую возможность). С# это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, и так же прост, как Visual Basic, но обладает практически той же мощью и гибкостью, что и C++.
Особенности С#
- Полная поддержка классов и объектно-ориентированного программирования, включая наследование интерфейсов и реализаций, виртуальных функций и перегрузки операторов.
- Полный и хорошо определенный набор основных типов.
- Встроенная поддержка автоматической генерации XML-документации.
- Автоматическое освобождение динамически распределенной памяти.
- Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).
- Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).
- Указатели и прямой доступ к памяти, если они необходимы. Однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого.
- Поддержка свойств и событий в стиле VB.
- Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).
- Возможность использования С# для написания динамических web-страниц ASP.NET.
Ограничения C#
Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ остается в этой области наилучшим из языков низкого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода.
Почему языки C, C++, C# так называются?
На фоне таких названий языков программирования, как Prolog, Pascal, Python названия из одной буквы или буквы со знаками выглядят странно. Но в них есть свой смысл. В этой статье мы узнаем, как эти языки получили свои названия.
1. C это следующая буква после B
В 1969 в компании Bell Labs Кен Томпсон и Деннис Ритчи решили написать язык B, чтобы улучшать операционную систему UNIX.
Кен Томпсон
Изначально ОС UNIX была написана на ассемблере, что сильно замедляло ее доработку.
Деннис Ритчи
Дальше произошла история, которую некоторые считают легендой. Сотрудники Bell Labs Брайан Керниган и Деннис Ритчи любили одну компьютерную игру. Но она запускалась на сервере. Они решили перенести эту игру на компьютер, который стоял у них в офисе. Попытка перенести игру кончилась неудачей, так как операционная система была написана на ассемблере и машинные коды компьютеров не совпадали.
Брайан Керниган
Тогда им пришло в голову, что нужно написать операционную систему на языке более высокого уровня. За основу взяли язык B и назвали новый язык New B. Но это было неудобно и поэтому позже переименовали этот язык в язык C, взяв следующую букву алфавита.
В 1973 язык С уже стал достаточно развит и на нем переписали операционную систему UNIX. С того момента язык С становится основным языком системного программирования.
2. C плюс единичка
В конце 67-х годов появился язык Simula 67, в котором были впервые сформулированы принципы объектно-ориентированного программирования. В 1980 году сотрудник всё той же компании фирмы Bell Labs Бьёрн Страуструп писал на языке Simula программу моделирования телефонных вызовов. Но Simula очень медленно работал. В то время как язык С был намного быстрее.
Бьёрн Страуструп
Тогда Страуструп решил добавить принципы ООП в язык C. Получившийся язык сначала был назван «C with classes» («Си с классами»). Название «С++» придумал Рик Мэсчитти. В название использован оператор «++», что на языке С означает добавить единичку. То есть к множеству возможностей C добавлена еще одна.
При этом в самом начале этот язык не имел собственного компилятора. Сначала текст программы обрабатывался препроцессором, а потом передавался компилятору C.
Первый коммерческий выпуск язык C++ состоялся в октябре 1985 года.
3. C плюс половинка
В 2000 году компания Microsoft подготовила инструментарий для разработки приложений – платформу .NET. Одним из компонентов этой платформы стала технология активных серверных страниц ASP.NET (Active Server Page). Она была написана на языке C#. Читается С Sharp (от англ. sharp — диез). Или на программистском сленге — «Си диез».
Авторами языка программирования C# стали четыре человека. Руководил группой Андерс Хейльсберг, который до этого разработал Turbo Pascal и Delphi.
Андерс Хейлсберг
Возможности C# копируют возможности языка Java, который был выпущен в 1995 году и стал очень популярным.
Основное отличие между C# и другими языками программирования, особенно Java, заключается в том, что мы постарались остаться как можно ближе к С++
Ключевым отличием от C++ (как и в языке Java) стало следующее изменение. Так как в C++ есть множественное наследование, которое приводит к проблеме «Алмаз смерти«, то в C# множественное наследование было убрано. Таким образом, к языку С добавлена уже не единичка, а половинка. В музыке знак # (диез) как раз и означает означает повышение звука на полтона.
Но есть и другая трактовка. Если присмотреться, то диез состоит из четырех маленьких плюсиков. Поэтому C# — это сокращенное название C++++.
После появления этих вариантов языка C каждый из языков стал развиваться самостоятельно. Но популярности С клоны так и не достигли. Это можно посмотреть в рейтингах языков программирования.
4. Существует ли язык C минус единичка?
Да, существует. Только сейчас он по-другому называется. С названием у этого языка вообще не задалось.
В 1992 году компания Nombas начала разработку встраиваемого скриптового языка Cmm (Си-минус-минус). Этот язык потом был переименован в ScriptEase. В апреле 1995 года Брендан Эйх доработал этот язык и назвал его Mocha.
Брендан Эйх
Затем этот язык переименовали в LiveScript, а в декабре 1995 этот язык получили свое окончательное название — JavaScript.