Какие программы написаны на с
Перейти к содержимому

Какие программы написаны на с

  • автор:

Какие есть серьезные программы на С?

Я заканчиваю в университете базовый курс по С и задался вопросом:

Насколько серьезные программы были написаны на С? И в чем из этого можно попытаться разобраться, для совершенствования собственных навыков. Хочется знать реальные возможности этого языка.

  • Вопрос задан более трёх лет назад
  • 11251 просмотр

2 комментария

Оценить 2 комментария

Базовый курс по Си, это еще не значит что надо сразу идти в прогеры на си, есть еще много языков и технологий, на которые стоит хотя бы посмотреть

nadom @nadom Автор вопроса
Само собой. Просто пока есть время, хочется узнать больше о возможностях языка.
Решения вопроса 1

  1. Операционные системы
  2. Системы управления базами данных
  3. Компиляторы и интерпретаторы
  4. Драйвера
  5. Микроконтроллеры

Ответ написан более трёх лет назад
Нравится 7 3 комментария
nadom @nadom Автор вопроса

А не известны ли вам учебники/посбоия по написанию такого рода программ? Тк в «стандартных» учебниках, которые прочитал не увидел возможности перехода к программам такого урвоня.

@nadom для каждого случая нужно что-то конкретное, для написания драйверов и мк нужна инструкция от производителя железа, для компиляторов и субд разбираться в алгоритмах и структурах данных для эффективного поиска и хранения, а ос это все вместе. В этом и фишка языка Си, в нем из коробки нет ничего, для написания таких программ вы должны с нуля изобрести все сами.

Стоило бы уточнить, что здесь Си применяется с большой долей интеграции кода на ассемблере, особенно в двух последних случаях из данного списка.

Ответы на вопрос 7
Ядро Linux
Ответ написан более трёх лет назад
Комментировать
Нравится 7 Комментировать
Front-end Developer @ Starbucks

veZuk: Многие элементы Си потенциально опасны, а последствия неправильного использования этих элементов зачастую непредсказуемы. Керниган говорит: «Си — инструмент, острый, как бритва: с его помощью можно создать и элегантную программу, и кровавое месиво».
SARS: Quake тому пример ))

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

Весь, поверьте, весь С укладывается в ~292 страницы КерниганаРитчи. Учитывая, что в С нет ничего кроме массивов, указателей и структур, то практически весь код на С выглядит примерно вот так : https://github.com/jonof/jfbuild/blob/master/kenbu.
Учитывая, что сейчас почти всё можно решить на Java и Python, то на С пишется такой лютейший хардкор, что даже с ходу не поймете что к чему. Посмотрите хотя бы ядро Linux.

Ответ написан более трёх лет назад
Нравится 3 2 комментария
nadom @nadom Автор вопроса

Дело в том, что я эту книгу ( и некоторые другие) прочитал. Теперь хочется применить знания на практическом уровне. Выйти за пределы консольных приложений.

Мде. Хардкор.
А я на сях вообще все пишу — мне эти вашы пхытоны с пыхпыхами 100 лет не втарахтелись: и GUI на сях (motif, gtk), и веб на сях (CGI), и числодробилки (в т.ч. с CUDA).
Пхытон — слишком примитивный язычок.

Сейчас я вообще склоняюсь к тому, что нечего извращаться с GUI: GTK скатился в GTK3, GTK2 уже практически объявили deprecated — в общем, лучше делать веб-морды для всего, что требует GUI, это даже сократит время разработки.

C# (Си Шарп, C Sharp): что это за язык программирования, что на нем пишут и его преимущества

В названии C# (Си шарп или С решетка) есть сакральный смысл. Знак «решетка» — диез в музыкальной нотации, означает повышение высоты звука на полтона (от англ. sharp — диез). Но в названии языка программирования этот знак имеет другой смысл. Он символизирует 4 знака «+» и показывает следующую эволюционную цепочку C → C++ → C++++ (C#).

�� Бесплатный вебинар о 6 популярных IT-профессиях ��

Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2 IT-специальностях под присмотром опытного эксперта в прямом эфире

Реклама. ОАНО ДПО «СКАЕНГ», ИНН 9709022748, erid: LdtCKBHZy

В этом материале рассмотрим характеристики C#, особенности синтаксиса, сферы применения, плюсы и минусы, а также разберемся, стоит ли начинать его изучать.

Скриншот: Как стать разработчиком на C# / proglib.io

  • Описание
  • Пример синтаксиса
  • Где используется C#
  • Какие компании используют C#
  • Программы, написанные на C#
  • Преимущества и недостатки C#
  • Зарплата шарпистов
  • Востребованность
  • Как стать C#-разработчиком
  • Итоги
  • �� ТОП-3 курса по разработке на C# в 2023 году

Для начала краткая выжимка из истории языка программирования:

  1. Начало. Работа над C# началась в конце 1990-х годов под руководством Андерса Хейлсберга, который ранее работал над Delphi в Borland. Целью работы программиста было создать язык, который сочетал бы простоту и многофункциональность, а также был бы частью платформы .NET, продвигаемой Microsoft.
  2. Выпуск первой версии. Первая версия C# была выпущена в 2000 году. Это была часть Microsoft Visual Studio .NET. Версия включала те же концепции и возможности, которые есть у C# сегодня.
  3. Развитие. С 2003 года C# продолжает развиваться. Выпускались новые версии, каждая из которых включала улучшения, доработки и расширение функционала. Наиболее значимые в истории версии — C# 2.0 (с введением обобщений), C# 3.0 (с LINQ и выражениями-лямбда), C# 5.0 (с асинхронным программированием).
  4. Свободное распространение. В 2014 году Microsoft объявила о выпуске компилятора C# и .NET Framework под лицензией с открытым исходным кодом. Это позволило сообществу разработчиков по всему миру вносить свой вклад в развитие C#.
  5. Кроссплатформенность. С появлением .NET Core (а позже — .NET 5 и .NET 6) C# стал кроссплатформенным языком, поддерживаемым на разных операционных системах, включая Windows, Linux и macOS. Программисты пишут приложения для Windows C# и по сегодняшний день.
  6. Фреймворк Blazor (ASP.NET Core). С выходом этого фреймворка C# получил большую популярность в веб-разработке, так как программисты получили возможность создавать веб-приложения с использованием C# и HTML как клиентского языка.

C# написан на C++, а ребята из Microsoft создали его для решения следующих задач:

  • развития платформы .NET;
  • упрощения работы программистов с разным опытом;
  • стимулирования написания приложения для Windows сторонними разработчиками;
  • обеспечения простоты при разработке приложений для Windows.

C# (C-Sharp) — современный язык программирования. Он пользуется популярностью благодаря следующим характеристикам:

  1. Объектно-ориентированность. Полностью ориентирован на объекты, что позволяет программистам разрабатывать модульный и масштабируемый код.
  2. Типобезопасность. Обеспечивает строгую типизацию, что помогает предотвращать ошибки времени выполнения.
  3. Совместимость. Язык программирования разработан нацелен на платформу .NET, что обеспечивает высокую совместимость с Windows-приложениями.
  4. Многозадачность. C# поддерживает параллельное программирование и асинхронные операции, что улучшает производительность и отзывчивость приложений.
  5. Огромная стандартная библиотека. Поставляется с обширной стандартной библиотекой классов (FCL). Она включает в себя множество инструментов для работы с файлами, сетью, базами данных и т. д.
  6. Синтаксис. Синтаксис языка программирования чистый и легкочитаемый, что делает код довольно понятным для тех, кто с ним работает. То есть разработка на C# происходит в короткие сроки.
  7. Кроссплатформенность. Начиная с версии C# 5.0 и появлением .NET Core, приложения на C# могут работать на разных платформах, включая Windows, Linux и macOS.
  8. Интеграция с Visual Studio. Microsoft предоставляет среду разработки Visual Studio для работы с C#, которая облегчает создание, отладку и тестирование приложений.
  9. Активное сообщество. C# имеет огромное активное сообщество разработчиков, что обеспечивает доступ к множеству ресурсов и библиотек, написанных программистами из разных уголков планеты.

Эти характеристики делают C# прекрасным выбором для разработки мобильных и десктопных веб-приложений, игр.

Пример синтаксиса

Вот пример простейшей программы на C#, которая выводит «Hi!» в консоль:

using System; class Program < static void Main() < Console.WriteLine("Hi!"); >>

Рассмотрим код подробнее:

  • using System; — директива using позволяет использовать пространство имен System, включающее базовые классы и структуры C#;
  • class Program — определение класса с именем Program;
  • static void Main() — метод Main, входная точка программы;
  • < . >— фигурные скобки обозначают блок кода;
  • Console.WriteLine(«Hi!»); — вызов метода WriteLine для вывода строки в консоль.

Этот код создает консольное приложение, которое при запуске выведет «Hi!!» на экран.

Где используется C#

C# применяется для разработки самых разнообразных программ, включая desktop- и веб-приложения, мобильные приложения, игры на базе Unity, облачные приложения на Microsoft Azure, приложения для работы с базами данных, интеграции с другими системами и создания инструментов разработки. Это очень гибкий язык программирования, который используется на разных платформах. Рассмотрим самые популярные сферы его применения.

Скриншот: Почему C# программисты скоро будут нарасхват / proglib.io
Игры и виртуальная реальность на Unity

C# — основной язык программирования для разработки игр в среде Unity. Именно он позволяет создавать 2D- и 3D-игры для разных платформ, включая ПК, мобильные устройства и консоли.

А вот какие задачи в VR можно решить с помощью C# и Unity:

  • разработка VR-игр и симуляторов;
  • создание обучающих и тренировочных VR-приложений для образования и промышленности;
  • реализация виртуальных туров, позволяющих пользователям путешествовать по разным локациям;
  • разработка VR-приложений для медицинских целей (например, тренинги хирургов или реабилитация пациентов);
  • интерактивное моделирование и визуализация виртуальных объектов и окружений.

C# для разработчиков игр и VR-приложений — функциональный инструмент управления объектами и анимацией.

Серверная логика веб-сайтов

C# используется для разработки серверной логики веб-приложений. С помощью ASP.NET и ASP.NET Core можно создавать масштабируемые:

  1. Веб-приложения. C# позволяет разрабатывать веб-приложения с использованием ASP.NET, ASP.NET Core и других веб-фреймворков. С его помощью можно делать динамические сайты, онлайн-магазины, социальные сети и прочие веб-проекты.
  2. Обработчики данных. Язык программирования предлагает средства для обработки данных на сервере. Сюда входит считывание и запись данных в БД (базе данных), валидация данных и выполнение бизнес-логики.
  3. Бэкенд веб-сервисы. C# подходит для создания бэкенд-сервисов, обеспечивающих взаимодействие фронтенда веб-приложения с БД и другими ресурсами. Это включает в себя обработку запросов, аутентификацию, авторизацию и т. п.
  4. Системы управления контентом (CMS). Некоторые CMS (например, Umbraco) используют C# для разработки пользовательских расширений и плагинов.

C# — отличный инструмент для создания серверной логики, обеспечивает высокую производительность, масштабируемость и безопасность.

Программы для Windows

C# — ключевой язык разработки приложений под Windows. С помощью технологий Windows Forms и Windows Presentation Foundation (WPF) на C# можно создавать разнообразные десктопные приложения, включая текстовые редакторы, графические приложения и т. п.

Вот несколько типов программ, которые могут быть созданы с использованием C#:

  1. Desktop Applications (приложения для рабочего стола). C# позволяет создавать приложения для Windows с графическим пользовательским интерфейсом. Например, текстовые и графические редакторы, приложения для управления файлами.
  2. Игры под Windows. С помощью C# можно писать игры для Windows, используя различные игровые движки по типу Unity3D и MonoGame. Это позволяет создавать как 2D-, так и 3D-игры.
  3. Утилиты и инструменты. Язык программирования используется для создания утилит, для облегчения решения задач в Windows. Например, на C# можно писать утилиты для управления файлами, резервного копирование данных, архивации.
  4. Системные приложения. C# можно использовать в разработке системных приложений для мониторинга ресурсов компьютера, управления правами доступа, администрирования сети и т. д.
  5. Приложения для управления БД. Язык программирования позволяет создавать приложения для управления, анализа и визуализации данных.
  6. Образовательные приложения. C# используется для разработки образовательных программ по обучению, включая интерактивные учебники и тренажеры.
  7. Бизнес-приложения. На C# можно писать программы для учета финансов, управления складом, даже полноценные CRM-системы.
  8. Приложения для IoT (интернета вещей). С помощью C# можно разрабатывать приложения для IoT-устройств, работающих под Windows IoT Core.
  9. Программное обеспечение для HoloLens. Платформа Universal Windows Platform (UWP) и C# позволяют создавать приложения для гарнитур виртуальной и дополненной реальности Microsoft HoloLens.
  10. Серверные Windows-приложения. C# также используется для разработки серверных приложений под управлением Windows Server. Например, на нем написаны многие веб-сервисы и службы обработки данных.

Скриншот: Microsoft работает над стандартами для открытого исходного кода C# / osp.ru

Кроссплатформенные приложения

С помощью платформы Xamarin, основанной на C#, можно разрабатывать кроссплатформенные мобильные приложения для iOS и Android. Это упрощает разработку и обслуживание приложений для разных платформ. Xamarin предоставляет доступ к нативным API и библиотекам каждой платформы, что позволяет создавать приложения с полным набором функций.

Кроме того, Xamarin полностью интегрирован с средой разработки Visual Studio, что облегчает создание, отладку и развертывание мобильных приложений. А еще Xamarin был поглощен Microsoft, и его интеграция с продуктами Microsoft (например, с Azure) обеспечивает широкие возможности для создания мобильных приложений.

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

  1. CNTK (Microsoft Cognitive Toolkit). Библиотека машинного обучения от Microsoft, которая предоставляет поддержку для C#. Имеет широкие возможности для создания и обучения нейронных сетей.
  2. TensorFlow.NET. Библиотека позволяет использовать TensorFlow, один из наиболее популярных фреймворков, позволяет создавать и обучать нейронные сети.
  3. Keras.NET. Высокоуровневый API для глубокого обучения. С Keras.NET можно без больших усилий создавать нейронные сети.
  4. Accord.NET. Библиотека машинного обучения для C#, включающая инструменты для работы с нейронными сетями и другими методами машинного обучения.

Какие компании используют C#

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

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

Этот язык программирования невероятно популярен и имеет массу преимуществ. На нем создается программное обеспечение для решения разнообразных задач. Его используют практически все крупные компании, имеющие отношение к веб-разработке или созданию мобильных и десктопных приложений.

Программы, написанные на C#

Есть масса известных программ и приложений, написанных на C#. Вот некоторые из них:

  • Microsoft Visual Studio. Одна из самых популярных интегрированных сред разработки (IDE) для создания программ на C# и других языках программирования.
  • Microsoft Office. Некоторые компоненты пакета Microsoft Office (Microsoft Word и Excel) написаны на C#.
  • Unity. Интегрированная среда разработки для создания игр и виртуальной реальности, где C# используется для написания игровой логики.
  • Visual Studio Code. Легковесная кроссплатформенная IDE, написанная на C# и JavaScript.
  • Adobe Photoshop Elements. Графический редактор, который использует C# для реализации некоторых функций и плагинов.
  • Skype. Популярное приложение для голосовых месенджей, видеозвонков, текстовых сообщений. Полностью создано на C#.
  • Paint.NET. Графический редактор с открытым исходным кодом, также полностью реализован на C#.
  • AutoCAD. Популярное приложение для проектирования (САПР), использует C# для расширения функциональности.
  • GitHub Desktop. Графический клиент для платформы GitHub, написанный на C# с использованием технологий WPF.
  • ShareX. Бесплатная утилита для создания скриншотов и записи видео экрана, разработанная на C#.

Это всего лишь несколько примеров. Инструменты C# позволяют реализовать буквально любую задумку программиста. Поэтому язык и пользуется большой популярностью среди разработчиков.

Скриншот: Введение в интегрированную среду разработки Visual Studio (C#) / learn.microsoft.com
Преимущества и недостатки C#

Как и любые другие решения, язык программирования имеет свои плюсы и минусы. Достоинства C#:

  • Простота изучения. C# имеет чистый и интуитивно понятный синтаксис, что делает его отличным выбором для начинающих программистов.
  • Интегрированная среда разработки (IDE). Visual Studio предоставляет множество инструментов и функций для упрощения разработки на C#. Например, она предлагает разработчикам отладчик и функцию автодополнения кода.
  • Широкое применение. Язык программирования используется для создания самых разнообразных приложения — игр, веб-решений, мобильных приложений, программ под Windows и т. д.
  • Многопоточность. C# предоставляет средства для работы с многопоточностью, что делает его подходящим для создания высокопроизводительных приложений.
  • Сильная типизация. Помогает предотвратить ошибки на этапе компиляции и значительно повышает надежность кода.
  • Большая стандартная библиотека. Включает обширный набор различных классов (FCL) и множество готовых решений для типовых задач.
  • Поддержка объектно-ориентированного программирования. C# спроектирован с учетом принципов ООП, что упрощает создание и поддержку объектно-ориентированных приложений.

Слабые стороны C#:

  • Ориентированность на Windows. Несмотря на кроссплатформенность, C# все равно ассоциируется с Windows, что в некоторых случаях может усложнить разработку мультиплатформенных приложений.
  • Производительность. В определенных ситуациях C# будет менее производительным, чем другие низкоуровневые языки программирования, такие как C++.
  • Зависимость от .NET Framework. Приложения, написанные на C#, обычно требуют наличие .NET Framework на компьютере пользователя, что иногда создает проблемы совместимости.
  • Замкнутость на Microsoft. Развитие C# и его инструментов контролируется Microsoft, что может вызвать определенные ограничения и зависимость от компании.

Несмотря на эти недостатки, C# остается популярным языком программирования, особенно в мире разработки приложений для Windows и игр на платформе Unity.

Зарплата шарпистов

По данным hh.ru, средние зарплаты C#-разработчиков на российском рынке — 150 000–250 000 ₽. Разумеется, зарплата зависит от разных факторов (опыт, география, специализация, уровень навыков, тип работодателя). В зарубежных компаниях можно получать более высокие зарплаты (от $5 000 и выше) при тех же требованиях к разработчику.

Сколько получают программисты в России и других странах / sky.pro

Востребованность

C# — один из топовых языков программирования. Также это очень популярная платформа разработки в современной IT-индустрии. Вот несколько основных причин, почему C# остается и будет оставаться востребованным:

  1. Игры и виртуальная реальность на Unity. Именно С# — основной язык программирования для создания игр и приложений виртуальной реальности на платформе Unity. Этот фактор делает C# неотъемлемым инструментом разработчиков в сфере развлечений и виртуальной реальности.
  2. Серверная логика веб-сайтов. Фреймворк C#, ASP.NET, активно применяется в веб-разработке и обеспечивает функциональность веб-сайтов.
  3. Программы для Windows. C# — ключевое решение для создания десктопных приложений под ОС семейства Windows. Сюда входит огромный спектр приложений — от офисных инструментов до настольных игр.
  4. Кроссплатформенное ПО. С появлением платформы .NET Core C# стал основным языком для кроссплатформенной разработки.
  5. Нейросети. C# широко используется в машинном обучении и разработке нейронных сетей. А все благодаря библиотекам по типу TensorFlow.NET и CNTK. Они обеспечивают комфортное и быстрое создание интеллектуальных приложений.

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

�� Бесплатный вебинар о 6 популярных IT-профессиях ��

Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2 IT-специальностях под присмотром опытного эксперта в прямом эфире

Бонус: получите персональный пошаговый план перехода к формату удаленной работы

Как стать C#-разработчиком?
Скриншот: Как стать разработчиком на C#: обучение с нуля до профи / eddu.io

Прежде всего стоит почитать книгу Чарльза Петцольда «Код» и руководство «Грокаем алгоритмы» — это база для новичков. Они дадут понимание основ программирования. Затем можно переходить к освоению основ программирования конкретно на C#. Так как C# — язык, ориентированный на объекты, нужно научиться понимать принципы ООП (классы, объекты, наследование, инкапсуляция и полиморфизм).

Чтобы создавать, отлаживать и разрабатывать приложения на C#, нужно разобраться с основами Visual Studio. Также потребуется изучить .NET Framework (или .NET Core/.NET 5+), ASP.NET для веб-разработки и прочие библиотеки, которые связанны конкретно с вашей областью интересов.

Это может выглядеть сложно, но на практике все не так трудно. Главное — помните, чтобы стать хорошим C#-разработчиком, придется тратить время, прикладывать усилия, регулярно обновлять знания и практиковаться. Успех придет с опытом, поэтому развивайтесь и страйтесь чаще применять знания на практике

C# — один из тех языков программирования, который будет присутствовать на мировом рынке еще очень-очень долго. Изучать его имеет смысл любому, кто планирует заняться разработкой программного обеспечения для Windows. Да, он немного «замкнут» на продуктах от Microsoft, но ведь именно продукты от Microsoft в топе по популярности. Поэтому мы рекомендуем ознакомиться с его синтаксисом — сами того не заметите, как «втянетесь» и начнете создавать программы на C#.

�� ТОП-3 курса по разработке на C# в 2023 году

«C# Developer» от OTUS — лучший курс для новичков, соответствует требованиям работодателей

«Инженер-программист C#» от GeekBrains — лучший курс с гарантией трудоустройства

«C#-разработчик» от SkillFactory — лучший курс с высоким пользовательским рейтингом

Больше вариантов смотрите в нашей подборке курсов по разработке на C#.

Реклама. ООО «Отус онлайн-образование», ИНН 9705100963, erid: LdtCJyCA3; ООО «ГикБреинс», ИНН 7726381870, erid: LatgC7HxL; ООО «Скилфэктори» , ИНН:9702009530, erid: LatgBV3Ep)

Реклама. ОАНО ДПО «СКАЕНГ», ООО «Отус онлайн-образование», ООО «ГикБреинс», ООО «Скилфэктори»

Язык С#: где используют, что пишут, как появился и чем хорош

Изучаем под микроскопом популярный язык от Microsoft, который называется совсем не «Си решётка».

Иллюстрация: Polina Vari для Skillbox Media

Максим Сафронов

Максим Сафронов

Автор, редактор, IT-журналист. Рассказывает о новых технологиях, цифровых профессиях и полезных инструментах для разработчиков. Любит играть на электрогитаре и программировать на Swift.

C# (читается как «Си шарп») — это язык программирования от компании Microsoft. Изначально его создавали для проектов под Windows, но теперь это по-настоящему универсальный язык: на нём пишут игры, десктопные приложения, веб-сервисы, нейросети и даже графику для метавселенных.

Один из ведущих разработчиков языка — легендарный Андерс Хейлсберг, который до C# успел сделать Turbo Pascal и Delphi, а после — TypeScript (майкрософтовский JS на стероидах).

Если коротко, этот язык:

  • Кросс-платформенный — запускается почти на любом железе.
  • Объектно-ориентированный — состоит из классов и объектов, которые умеют передавать свойства друг другу.
  • Постоянно развивается — для тех, кто любит учиться.
  • Дружит с экосистемой Windows — для этого и был написан.

Есть две основных версии, зачем Microsoft стала делать свой язык программирования.

Официальная: чтобы упростить разработку приложений под Windows. А то языки в то время были сложные и плохо адаптировались под разные Windows-компьютеры.

Правдоподобная: чтобы заменить Java, на который у Microsoft не было лицензии. В итоге получился почти такой же язык, но с интеграцией под Windows. Как и Java, он основан на языке C и легко запускается на любом устройстве. А название «Си» с решёткой как бы говорит: «У нас тут не копия Java, а новый язык в линейке „Си“».

Кстати, всю эту историю о борьбе Microsoft за Java и причинах появления C# мы рассказывали в статье о Java Virtual Machine — в разделе о конкурентах JVM.

Привет, C#: пишем первую программу

Запуск любой программы на C# начинается с главной функции — Main(). В ней прописано, как программа будет себя вести дальше — что за чем пойдёт, что за что отвечает и так далее. Выполняется она из главного класса — назовём его HelloWorld. Если перевести это на программистский, получится как-то так:

В теории на Unity можно делать не только игры, но и любые проекты, где нужна 3D-графика, — метавселенные, программы для VR-устройств, дизайн интерьеров и так далее. А пишут под Unity в основном на языке C# — отличный повод выучить именно его, если видите себя в геймдеве или виртуальной реальности.

Программы для Windows

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

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

Кросс-платформенные приложения

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

Допустим, мы пишем приложение для смартфона — мобильные карты. Они должны одинаково работать и на айфоне, и на Android-устройстве, но выглядеть нативно — то есть по дизайн-коду своих платформ. Вот как эту идею можно воплотить на Xamarin:

  • Проектируем дизайн приложения в визуальном редакторе.
  • Привязываем к нему логику на C#.
  • Всё это дело подхватывает Xamarin и переводит в родные для iOS и Android интерфейсы.
  • На выходе получаем целых два приложения — для Android и iPhone. А программировали мы всего один раз — удобно вышло.

Подробнее о том, как писать мобильные приложения на Xamarin, мы рассказываем в этой статье.

Серверная логика веб-сайтов

Когда пользователь что-то нажимает на сайте, его действия сначала обрабатывает сервер. Например, мы ставим лайк фотографии — сервер это получает и записывает у себя в базе данных: «Вот такому пользователю понравилось». Или, допустим, логинимся на сайте — сервер сверяет пароли и отвечает: «Войти разрешаю».

В чистом виде сервер — это просто машина, и, чтобы она заработала, нужен специальный софт. Нередко его пишут на языках PHP и Java, но если вам нужен софт для сервера на Windows, эксперты рекомендуют именно C#. Он хорошо работает с фреймворками от Microsoft и быстро запускается на Windows-машинах.

Нейросети

В любое приложение на C# можно встраивать алгоритмы машинного обучения — например, компьютерное зрение, распознавание лиц или музыкальные рекомендации в плеере. Фишка в том, что для этого не надо глубоко разбираться в математике или Data Science. Достаточно подключить специальную библиотеку от Microsoft — ML.NET, — и она возьмёт все внутренности на себя.

А ещё с ML.NET работает кросс-платформенность — то есть алгоритмы в теории можно запускать вообще где угодно. Например, на банкомате, если надо сделать авторизацию по лицу.

Преимущества C#

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

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

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

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

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

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

На российском hh.ru мы нашли около 4 тысяч вакансий для разработчиков на C#. Больше всего предложений в Москве и Петербурге — это неудивительно, ведь там сосредоточена львиная доля энтерпрайза, где C# является стандартом. В основном компании ищут программистов для разработки бэкенда и десктопных программ, но есть варианты и в геймдеве, и в больших данных.

Интересно, что стажёры, которые только пришли в профессию, могут получать в районе 40 тысяч рублей в месяц. А если у новичка хорошая теоретическая база или уже есть какой-то опыт разработки, можно сразу пробоваться на Junior-позиции — там зарплаты уже около 64 тысяч рублей. Среди крупных компаний, которые готовы брать джунов-шарпистов, — Сбербанк, «МТС», Ozon и Kaspersky.

Более опытным Middle-разработчикам компании готовы платить в районе 120–150 тысяч рублей, а сеньорам и тимлидам — от 234 тысяч. Но такие программисты должны не только хорошо кодить, но и кое-что понимать в управлении командой и проектом.

Подходит ли С# новичку?

Если вы ищете язык для старта в программировании, обязательно рассмотрите С# — он популярен, широко распространён и официально поддерживается Microsoft. Его используют тысячи компаний, поэтому новичок может довольно быстро получить оффер. Особенно понравится язык тем, кто хочет делать 3D-графику на Unity или писать программы для Windows.

Какие программы можно написать на C#?

Можно ли на C# написать Abode photoshop,blender,fl studio,visual studio и тд? Если посмотреть, то эти программы в основном написаны на C++ (Хотя все сейчас пишут что C# для разработки программ топ)
Что вообще можно написать на C#?

  • Вопрос задан более трёх лет назад
  • 8035 просмотров

2 комментария

Простой 2 комментария

Хачатур Эдуардович , вот это относится и к твоему вопросу тоже.

vabka

Василий Банников @vabka Куратор тега C#

Можно ли на C# написать Abode photoshop,blender,fl studio,visual studio и тд?

Ghostblade-shot-2.jpg

Да. Например вот:
https://en.gritgene.com/gritgene-showcase-videos/

Написано на C# с использованием Avalonia

Решения вопроса 10

hottabxp

Сначала мы жили бедно, а потом нас обокрали..
Практически, все что угодно. А так, на что фантазии хватит, то и можно написать.
Ответ написан более трёх лет назад
Нравится 4 2 комментария

motkot

Дядя Богдан @motkot Автор вопроса
Есть ли в этом смысл? Или C# создан для более простых программ?

hottabxp

Хачатур Эдуардович, C# создан для enterprise. Но его можно использовать практически в любой области. Только это не всегда оправдано. Это же касается и любых других языков.

GavriKos

99% функционала в указанных вами программах не зависит от языка в целом. Там куча алгоритмов, и щепотка UI. Алгоритмы от языка не зависят (только разве что быстродействие, удобство реализации и прочее — но результат будет на любом языке), интерфейс — в целом тоже.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

sarapinit

Илья @sarapinit Куратор тега C#
Точу водой камень
Можно написать stackoverflow.com, например.
Ответ написан более трёх лет назад
Нравится 3 1 комментарий

samodum

Джоэдь Спольски именно об этом и говорил.
Тут могло бы быть краткое описание меня

Во-первых, FLStudio написан на Delphi. А во-вторых — почему бы и нет? На C# тоже можно написать подобные программы.

Ответ написан более трёх лет назад
Нравится 2 6 комментариев

motkot

Дядя Богдан @motkot Автор вопроса
Есть ли в этом смысл? Или C# создан для более простых программ?

Casper-SC

Хачатур Эдуардович, прозвучало как оскорбление 🙂

HemulGM

Первая версия фотошопа, кстати, тоже на делфи 😀

Hemul GM, наверное не на Delphi, а на Turbo Pascal. Потому что Delphi в то время ещё не было даже в проекте 🙂

HemulGM

pfemidi, да, скорее всего)

yarosroman

Роман @yarosroman Куратор тега C#
Hemul GM, Ибо первая версия была для маков только. Его под вин позже портировали.

twobomb

На большинстве ЯП можно написать что угодно и уж точно всё то что в списке.
Ну понятно что лучше всего написать на С++, вообще всё лучше писать на С++ от сайтов до крупных проектов, но почему же этого никто не делает и создали кучу языков? Да потому-что люди ленивые и не хотят тратить кучу времени и нервов, им нужно что-то более удобное, то на чем можно быстро и легко выполнить поставленную задачу, даже ценой производительности.
C# простой язык на котором можно быстро и без заморочек написать нужную программу, ну если стоит вопрос написать тот же 3д редактор типа blender, тут лучше смотреть в сторону С++ из-за того что банально это программа в которой происходит очень много вычислений и как ни крути на С++ она будет работать быстрее, чем на C#, а здесь это критично, но это не значит что ее нельзя написать на C#.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

Мое мнение, написать можно но пользы как разработчику так и пользователям это не принесет.

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

Скорость выполнения программ у .net сравнима с java, поэтому можете сравнить visual studio (написано похоже на си и c#) и к примеру eclipse (полностью на java), на последний я одно время слышал жалобы, типа кушает память, кушает проц как не в себя (я то как раз считаю eclipse лучшим проектом для подражания).

Я к тому что рано или поздно придется критичные и важные вещи оптимизировать и уходить от managed кода в быстрый c/c++/компилируемый в нативный бинарник код

Ответ написан более трёх лет назад
Нравится 1 2 комментария

Casper-SC

Ну вот не надо, C# будет быстрее Java и в некоторых тестах с отрывом. Jit компилятор компилит код в машинный код, скорость практически как у С++. Зависит от того как его написать на том и другом языке и скорость в каком-нибудь .NET 5 будет быстрее, чем в .NET Framework 4.5 хотя бы.

Не сомневаюсь, современные технологии jit компиляции вытворяют чудеса, пишут что даже llvm код иногда работает быстрее того же собранного на c++ нативно.

Но как бы вам донести мои ощущения (к сожалению только так, так как иначе все упирается в конкретные решения и задачи) — когда обычный разработчик пишет для .net решения получаются (особенно отзывчивость и интерфейс) не быстрыми.

Я прекрасно помню, как работает .net на старых слабых машинах, как буквально видно процесс перерисовки интерфейса, что заставляет вспомнить что то же самое было наверное в 90-ых с нативным кодом но уже чисто по техническим причинам, а не из-за странно кривой реализации (когда как рядом запущенный qt-интерфейс летает и издевательски рисует кнопками пикселы изображения). Мы всего этого сейчас не видим, только потому что вся неэффективность работы базовых/системных вещей в большинстве задач не заметна из-за невероятно высокой скорости современных процессоров и графический акселераторов (а они реально используются иногда на всю катушку).

Я знаю что изучив невероятно красивый и удобный, ну к примеру какой-нибудь linq, программист начнет его использовать даже там где казалось не надо, где то ради синтаксического сахара и упрощения читабельности закроет глаза на возникшую квадратичную трудоемкость, вместо логарифмической. кому какое дело, работает ведь и укладывается в казалось бы норму отзывчивости (а у многих ли в ТЗ прописаны лимиты на отзывчивость интерфейса?).. но все в конечном счете начинает тормозить на конкретных задачах пользователя, а рефакторить и оптимизировать проект уровня фотошопа или блендера у разработчиков нет никаких сил и денег.

Да это не проблема из-за языка или фреймворка, в конечном счете всему виной разработчик, но может он может так делать потому что это ему предложили так делать?

p.s. мое мнение выбор .net это не про эффективность использования ресурсов машины — а про скорость разработки

HemulGM

Delphi Developer, сис. админ

Шарп как правило — это разработка программ под Windows. Он конечно отходит от своей целевой платформы и позволяет писать кроссплатформенны софт (частично), но ещё не так хорошо, чтоб противостоять некоторым другим языкам.
Так что, шарп — это язык для написания почти любых программ под Windows.

Ответ написан более трёх лет назад
Нравится 1 16 комментариев

vabka

Василий Банников @vabka Куратор тега C#

Шарп как правило — это разработка программ под Windows

Нет. Больше половины вакансий — это ASP NET (Core).

Шарп как правило — это разработка программ под Windows

А что там частичного?

DevMan

Больше половины вакансий — это ASP NET (Core)

asp обычно завязан на винду. в том или ином виде.

А что там частичного?

в бизнес-логике ничего. а как доходит до визуальщины или выхода за рамки системных апи, то уже не всё так гладко.

прост ремарка, а не камень в огород. я давно считаю, что решетка и вся платформа вокруг — лучшее, что сделали майки.

HemulGM

Василий Банников, я не трогал веб часть. Речь идёт о программах. Частичного там то, что поддерживается в одном фреймворке пара платформа, а в другом другая пара платформ. Но не все платформы вместе.

vabka

Василий Банников @vabka Куратор тега C#

Hemul GM, в Uno и Avalonia вполне поддерживается весь десктоп.
В Xamarin поддерживаются все мобилки.
Не вижу никаких проблем.
Писать и десктоп и мобилку одновременно — это дичь какая-то, имхо

vabka

Василий Банников @vabka Куратор тега C#

DevMan, core не завязан на винду вообще.
Про визуальщину — это в принципе к любому кроссплатформенному фреймворку относится. Вот такая вот плата за кроссплатформенность.

HemulGM

Василий Банников, ну так это и называется частичный кроссплатформ

vabka

Василий Банников @vabka Куратор тега C#
Hemul GM, мне кажется, в таком термине нет смысла, тк любая кроссплатформа — частичная.

DevMan

Василий Банников, не завязан сам по себе.
я от том, что его обычно крутят либо на Винде, либо пользуют другие ништяк, вроде sql server (да, его тож можно крутить ненавинде, но лично я не встречал много желающих этим заниматься).

HemulGM

Василий Банников, ну по крайней мере, когда говорят «кроссплатформенный» подразумевают основные популярные платформы. «винда, мак, андроид, иос, линукс»

vabka

Василий Банников @vabka Куратор тега C#

я от том, что его обычно крутят либо на Винде, либо пользуют другие ништяк, вроде sql server

По обоим пунктам не согласен.
По крайней мере что я видел — Windows + SQL Server — это достаточно редкое сочетание.

vabka

Василий Банников @vabka Куратор тега C#

Hemul GM, Не знаю ни одного фреймворка, который может выдать хоть что-то адекватное под все платформы, включая мобилки. Вроде KMM умеет, но там тоже своя специфика.

DevMan

Василий Банников, видимо зависит от сферы.
в моём мире с точностью наоборот: sql server + неwinserver — исключения.

HemulGM

Василий Банников, ну, к примеру FireMonkey

HemulGM

Василий Банников, это очень странный опыт. Как минимум потому что, один из мощнейших SQL СУБД серверов — MS SQL Server ставится под винду.

vabka

Василий Банников @vabka Куратор тега C#

Hemul GM, Не я только 1 проект видел с sql server.
Зато видел мускул, постгрес, моего, и оракл.
И ещё кассандра была.
Хотя кстати кейс с Кассандрой был на винде

DevMan

один из мощнейших SQL СУБД серверов — MS SQL Server ставится под винду

однако, в серьёзном проде я такого не встречал.

firedragon

Владимир Коротенко @firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.

UI под windows. Мобильные приложения. Современный веб в части бэка и фронта.
Если добавить сюда электрон, то будет работать на всех 3 платформах.

Ответ написан более трёх лет назад
Нравится 1 5 комментариев

GavriKos

Это в каком таком виде c# на фронте в вебе?

vabka

Василий Банников @vabka Куратор тега C#
GavriKos, Blazor видимо.
Хотя я не удивлюсь, если имелся в виду Webforms

vabka

Василий Банников @vabka Куратор тега C#
В принципе и без электрона можно в кроссплатформенный десктоп.

GavriKos

Василий Банников, почитал про Blazor, прикольно.

firedragon

Владимир Коротенко @firedragon
GavriKos, Razor pages, Asp .NET Forms, блэзор

DollyPapper

DollyPapper @DollyPapper

A turing machine can create another turing machine. . Thus most programming languages are turing complete. C, C++, C#, Java, Lua, Python. They are all turing complete.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Berserk/BrainFackMan

В порядке бреда.
Могу на C# раскорячиться и написать быстрый код.
Производительность съедает :
1) вызов функций (если написать одним моноблоком то быстрее)
2) Отсутствие оптимизации вообще, хотя-бы на уровне циклов.
Про системные библиотеки вообще молчу.
Там после реверс инжиниринга в c# исходном коде небоскреб из GoTo, прыжки туда и обратно много раз. В общем полный Биг Мак.
3) Говорят в C# можно писать в не безопасном коде (Unsafe code) через указатели. Это правда.
4) Говорят в C# есть аппаратное (моментальное) сложение массивов одинаковой длинны, через специализированны тип данных (по моему это вектор) и mmx мультимедийные регистры (либо видеокарта, либо графический сопроцессор — это догадки). В c# также при пошаговом исполнении можно перейти к дизассемблеру, как и в с++. В общем экспериментируйте сами.
Подтвердить самому не удалось, не хватило времени.
В c# ассемблерных вставок нет .
5) универсальный или абстрактный инструментарий.
На рефлексии алгоритм глубокого копирования (если сумеете написать), работает допустим 18 секунд.
Если написать подхват-интерфейс для глубокого копирования и реализовывать его в каждом частном случае, то работает примерно 5 секунд.

Ситуацию может исправить сильная 64 битная машина с грамотной реализацией многопоточности или многозадачности в самом программном коде, но это не панацея.
Ситуацию может исправить туча микросервисов (TCP, UDP, HTTP), распределенная по сети слабых машин, как на крупных торговых площадках типа Ozon или Ali. говорят так было лет 10 что ли назад. Не хотелось бы майнить.
(на изыскания ушел месяц или два в фоновом режиме)

Быстрый код — в промышленных масштабах это свойство теряется — там до неприличия: «Чих пых, тыры пыры, носки в уши, ноги в продакшен» (дословная цитата). Видел корпоративное приложение на C#, что загружается 5 минут. — Это диагноз невменяемости. И не пытайтесь не перепрете.
Нарочно постараются и сделают 10 минут.

Все надоело — учу FlatAssembler.

Ответ написан более трёх лет назад
Нравится 1 2 комментария

firedragon

Владимир Коротенко @firedragon
Поток сознания и бред.

2) Отсутствие оптимизации вообще, хотя-бы на уровне циклов.

Любой язык становится лапшой из гото после компиляции. А насчет оптимизации смотрите исходники, там много интересного.

Вставить ассемблер тоже просто. Компилируете dll и вызываете этот метод с помощью PInvoke

За PInvoke — спасибо, при случае посмотрю.
Ошибся в том что ранее говорил про С++VS19/VS13.
Теперь же предлагаю публике скромное развлечение С#VS19.
***Пример первый.

static void Main(string[] args) < int a = 0; for (int i = 0; i < 10; i++) < a = 2; >a = 3; >
int a = 0; 014A0884 xor edx,edx 014A0886 mov dword ptr [ebp-40h],edx for (int i = 0; i < 10; i++) 014A0889 xor edx,edx 014A088B mov dword ptr [ebp-44h],edx 014A088E nop 014A088F jmp ConsoleApp3.Program.Main(System.String[])+055h (014A089Dh) < 014A0891 nop a = 2; 014A0892 mov dword ptr [ebp-40h],2 >014A0899 nop for (int i = 0; i

***Пример второй

int a = 0; int i = 0; while (i < 10) < i++; a = 2; >a = 3;
int a = 0; 04F50884 xor edx,edx 04F50886 mov dword ptr [ebp-40h],edx int i = 0; 04F50889 xor edx,edx 04F5088B mov dword ptr [ebp-44h],edx 04F5088E nop 04F5088F jmp ConsoleApp3.Program.Main(System.String[])+055h (04F5089Dh) < 04F50891 nop i++; 04F50892 inc dword ptr [ebp-44h] a = 2; 04F50895 mov dword ptr [ebp-40h],2 >04F5089C nop while (i

***Пример третий

int a = 0; int i = 0; do < i++; a = 2; >while (i < 10); a = 3;
int a = 0; 015F0884 xor edx,edx 015F0886 mov dword ptr [ebp-40h],edx int i = 0; 015F0889 xor edx,edx 015F088B mov dword ptr [ebp-44h],edx do < 015F088E nop i++; 015F088F inc dword ptr [ebp-44h] a = 2; 015F0892 mov dword ptr [ebp-40h],2 >015F0899 nop while (i < 10); 015F089A cmp dword ptr [ebp-44h],0Ah 015F089E setl al 015F08A1 movzx eax,al 015F08A4 mov dword ptr [ebp-48h],eax 015F08A7 cmp dword ptr [ebp-48h],0 015F08AB jne ConsoleApp3.Program.Main(System.String[])+046h (015F088Eh) a = 3; 015F08AD mov dword ptr [ebp-40h],3

***Пример последний

int a = 0; 00EF0887 xor edx,edx 00EF0889 mov dword ptr [ebp-40h],edx int caseSwitch = 1; 00EF088C mov dword ptr [ebp-44h],1 switch (caseSwitch) 00EF0893 mov eax,dword ptr [ebp-44h] 00EF0896 mov dword ptr [ebp-4Ch],eax 00EF0899 mov eax,dword ptr [ebp-4Ch] 00EF089C mov dword ptr [ebp-48h],eax 00EF089F cmp dword ptr [ebp-48h],1 00EF08A3 je ConsoleApp3.Program.Main(System.String[])+069h (0EF08B1h) 00EF08A5 nop 00EF08A6 jmp ConsoleApp3.Program.Main(System.String[])+060h (0EF08A8h) 00EF08A8 cmp dword ptr [ebp-48h],2 00EF08AC je ConsoleApp3.Program.Main(System.String[])+073h (0EF08BBh) 00EF08AE nop 00EF08AF jmp ConsoleApp3.Program.Main(System.String[])+07Dh (0EF08C5h) < case 1: a=1; 00EF08B1 mov dword ptr [ebp-40h],1 break; 00EF08B8 nop 00EF08B9 jmp ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh) case 2: a= 2; 00EF08BB mov dword ptr [ebp-40h],2 break; 00EF08C2 nop 00EF08C3 jmp ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh) default: a=0; 00EF08C5 xor edx,edx 00EF08C7 mov dword ptr [ebp-40h],edx break; 00EF08CA nop 00EF08CB jmp ConsoleApp3.Program.Main(System.String[])+085h (0EF08CDh) >a = 3; 00EF08CD mov dword ptr [ebp-40h],3

Теперь обоснование.
Цикл с пост условием это одын CMP(сравнение) и одын J**(JE,JNE,JZ,JNZ И ТАК ДАЛЕЕ). Это эталон, без спорно. Минимализм всегда рулит.
Цикл с пред условием (Как в BrainFack) одын CMP(сравнение) и одын J** и один безусловный переход JMP.

Теперь посмотрите на примеры. С# VS 2019. Пошаговое исполнение, затем правая кнопка мыши и перейти к деассемблеру.

Считаем количество CMP, J** и JMP. Думаю каждому будет интересно.
Обратите внимание что CALL, J**, JPM, CMP - это ассемблерно долгие операции, по этому их стараются либо избегать , либо минимизировать.
Предполагаю что все везде где J**, JPM, CMP больше чем по одной штуке - должно настораживать.
Обратите внимание что CMP - операция не всегда обязательная, так как арифметические операции тоже меняют состояние флагов, а значит по ним можно ветвить.
Теперь вопрос на засыпку, можно ли на ASM написать (оптимизировать) ветвления и циклы компактнее.

Операции For и ForEach - достаточно медленные, через них бегают почти все. LinQ List.ForEach удивительно, но ведет себя также, либо быстрее. Проверял - сам писал тесты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *