# CSharp  
  
C# — это язык программирования от компании Microsoft. Изначально его создавали для проектов под Windows, 
но теперь это по-настоящему универсальный язык: на нём пишут игры, десктопные приложения, веб-сервисы, нейросети и даже графику для метавселенных.
___
![Hello World на C#](http://213.155.192.79:3001/u20belous/ISRPO/raw/fbeca5733db393696c5e4a00b031842a2f807c87/%d0%9b%d0%b5%d0%ba%d1%86%d0%b8%d0%b8/CSharp/Photos/1.png)
___
**Кто и для чего использует C#**

C# — пятый по популярности язык программирования в мире. Его используют банки, диджитал-агентства, провайдеры связи и крупные IT-компании. Вот что пишут на C# российские и зарубежные корпорации:
Microsoft — приложения для Windows и Xbox.
Tesla — корпоративные веб-сервисы и программы.
Stack Overflow — серверную логику сайтов.
Сбербанк — 3D-графику и программы виртуальной реальности.
Ozon — складские и логистические системы.
«Яндекс» — приложения для автоматизации продаж.
___
**Сферы применения C#.**

*Игры и виртуальная реальность на Unity*
Если вы увлекаетесь разработкой игр или просто играете в игры, то наверняка слышали про Unity. Это такая среда, где можно быстро собрать игру из готовых объектов, а потом запустить почти на любом компьютере.
Процесс разработки выглядит так: вы продумываете содержание игры и её сюжет, а Unity берёт на себя графику, физику, звук.
___
**Программы для Windows**

Поскольку C# — это язык от Microsoft, на нём удобно писать настольные приложения для Windows. Для этого разработчики придумали специальную платформу — называется .NET Framework. 
Она умеет переводить код из понятного человеку в понятный процессору — то есть компилировать.

Преимущество платформы в том, что она может исполнить любую C#-команду на любом процессоре — а на Windows работает не меньше тысячи разных моделей. 
Если бы не .NET, пришлось бы компилировать код под каждый компьюер отдельно. 
А ещё .NET поддерживает много плагинов, библиотек и шаблонов для наглядной разработки интерфейсов — это фактически целый мир и экосистема для программиста на Windows.
___
**Кросс-платформенные приложения**

С помощью фреймворка Mono один и тот же С#-код можно запускать в разных десктопных системах — например, в Linux или macOS. А если код надо запустить на мобильных платформах, используют версию Mono для смартфонов — Xamarin.
___
**Нейросети**

В любое приложение на C# можно встраивать алгоритмы машинного обучения — например, компьютерное зрение, распознавание лиц или музыкальные рекомендации в плеере. Для этого не надо глубоко разбираться в математике или Data Science. 
Достаточно подключить специальную библиотеку от Microsoft — ML.NET, — и она возьмёт все внутренности на себя.
___
![Тренировка алгоритмов компьютерного зрения на ML.NET](http://213.155.192.79:3001/u20belous/ISRPO/raw/master/%d0%9b%d0%b5%d0%ba%d1%86%d0%b8%d0%b8/CSharp/Photos/2.jpg)
___
А ещё с ML.NET работает кросс-платформенность — то есть алгоритмы в теории можно запускать вообще где угодно. Например, на банкомате, если надо сделать авторизацию по лицу.
___
**Преимущества C#**

1. Независимость от системных требований. Программисту не надо адаптировать программу под разные платформы и системы — за него это делает виртуальная машина, вшитая в .NET Framework. 
В итоге один и тот же код можно запускать на любых устройствах — смартфонах, компьютерах, серверах, банкоматах и даже умных часах.

2. Отличная совместимость с Windows.
Так же как Swift идеально подходит для программирования под экосистему Apple, C# прекрасно вписывается в экосистему Windows.

3. Управление памятью. Чтобы программа работала стабильно, её надо иногда чистить от ненужных объектов, ссылок, кэша и прочего мусора. 
В C# это происходит автоматически — разработчику не надо следить за расходом памяти, бороться с её утечками или удалять мёртвые куски кода.

4. Строгая типизация. Когда вы объявляете переменную в C#, надо сначала указать, что в ней лежит — строка, число или массив. 
Так разрабатывать чуть дольше, зато ваш код работает предсказуемо — числа взаимодействуют с числами, строки со строками и так далее. 
В языках со слабой типизацией свободы и драйва больше, но есть шанс пропустить ошибку, которая всплывёт в готовой программе.

5. Большое сообщество. На С# пишут более миллиона программистов по всему миру. В соцсетях полно чатов и сообществ «шарпистов», где можно задать вопрос, обсудить сложную тему или найти готовое решение. 
В теории можно даже найти ментора, который поделится знаниями и поможет быстрее освоить язык.
___
**Недостатки языка**

Есть у C# и недостатки, причём довольно серьёзные, — давайте разберём и их тоже.

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

2. Безопасность. Эксперты говорят, что код на C# легко декомпилировать — то есть перевести из машинного обратно в человеческий. 
Проблема в том, что так программу может легко прочитать хакер или конкурент — и изучить её уязвимости, украсть фрагменты кода или написать для неё вредоносный софт.
___
**Зарплаты программистов на C#**

По данным «Хабр Карьеры», средняя зарплата разработчиков на C# составляет 162 000 рублей в месяц. 
Примерно столько же получают программисты на Java, Python, PHP и других популярных языках.
