Сравнение C# с Python/C++/Java: почему C# мой любимый язык программирования?

Поділитися
Вставка
  • Опубліковано 18 лис 2024

КОМЕНТАРІ • 16

  • @nanoqsh
    @nanoqsh 7 місяців тому +5

    В своё время ценил шарп по подобным причинам, изложенным в ролике. Это довольно хороший компромис, немного пожертвовать производительностью и памятью, но получить безопасный и удобный язык.
    Но потом я узнал про Rust. В нём не нужно жертвовать ни производительностью, ни безопасностью. Язык safe, но при этом позволяет делать всякие низкоуровневые штуки. Скажем, как и в Си ты сам решаешь, где размещать экземпляр объекта, на стеке или в куче (в C# насколько я знаю это свойство привязывается к типу). Можешь брать ссылку на объекты, где бы они ни были, хоть на стеке, хоть куче. Можешь как и в Си экономить аллокации, скажем, нужна тебе подстрока - тогда просто возьми ссылку на уже существующую без необходимости выделять новую строку в куче, а потом копировать её (в Си даже, порой, сделать это сложнее из за нул-терминации строк). И так далее, но при этом компилятор статически проверяет что всё safe. Более того, компилятор ещё и помогает писать многопоточный код, отслеживая, какие типы можно передавать в другие потоки, не будет ли где-то гонки данных из за многопоточной записи и так далее.
    И что наиболее важно для производительного языка, в расте как и в C++ есть понятие zero cost abstractions - то есть на расте можно довольно эффективно выстраивать оптимальные абстракции, которые при компиляции собираются в максимально эффективный ассемблер, словно ты руками написал одну длинную процедуру. Для примера возьмём лямбду из C# - чтобы её использовать мне нужна аллокация, мне нужно менеджить эту аллокацию сборщиком мусора, мне нужно делать виртуальные вызовы чтобы вычислить результат этой лямбды. Всё это требует какие-то дополнительные расходы памяти и перфоманса. В расте это не так. Лямбда (там это называется замыканиями/кложурами) размещает всё окружение по значению (то есть обычно в стеке) не требуя аллокации, никакой виртуальный вызов не требуется - раст статически знает тип лямбды. Сборщика мусора в расте и вовсе нет, так что ещё одно потенциальное снижение перфоманса отпадает. В итоге когда я использую разные абстракции, скажем итераторы и лямбды внутри, то в итоге компилятор генерирует мне такой же код, как если бы я написал его на обычных циклах, без какой-либо высокоуровневой магии.
    Что касается кроссплатформенности - она изумительна. Я собирал приложения под разные десктоп системы, под андроид и даже под браузер на wasm, также раст отлично подходит чтобы запускать его в embedded среде вообще без ОС. В общем, фактически, можно писать код под любую платформу.
    Но, конечно, ни один язык не обходится без недостатков. Я бы выделил два основных:
    Первое, язык довольно сложный, требует освоения довольно специфичных вещей. Скажем, лайфтаймы, система владения, понимание как работать с борроу чеккером и так далее. Основная сложность это переучиться писать код так, чтобы он лучше вписывался в систему владения и проверки заимствований. Например, по возможности избавляться от разделяемого и одновременно изменяемого состояния, что на самом деле плохо не только для раста, но и в целом сложнее отлаживать и при этом оно вредит производительности (скажем, такой код сложнее распараллелить).
    Второй недостаток: на данный момент не так много готовых библиотек, в целом язык ещё только развивается. Но потенциал у языка огромен

  • @Artem-k8y4v
    @Artem-k8y4v 7 місяців тому +1

    Мужик,удачи тебе во всем!)

  • @_sergeevich5827
    @_sergeevich5827 Місяць тому

    Питухон простой, до тех пор, пока на нем не пишешь, что-то сложнее хэллоу ворд. Питухон для небольших скриптов.

    • @casualden7656
      @casualden7656 5 днів тому

      ты сейчас сидишь на платформе,у которой кор на "питухоне"

    • @_sergeevich5827
      @_sergeevich5827 5 днів тому

      @casualden7656 , а сам питухон на чём написан ? Все библиотеки нормальные на чём написаны ? И про кор на питухоне ты в газете "пионэрская правда" прочитал ?

    • @casualden7656
      @casualden7656 4 дні тому

      @@_sergeevich5827 ну откуда уже не скажу, где то на хабре статья есть ,а так есть реализации интерпретатора, которые вполне подходят для хай-лоад сервисов , CPython которы идет с "коробки" - не самый шустрый , согласен, но есть много других, например, IronPython, которые и с дотнет работают.Если интересно - прочитайте. А так, со всеми минусами , готовый, работающий продукт легче сделать на "питухоне", да и точки зрения бизнеса, питонист дешевле обойдется, чем плюсовик или шаржист,да даже гошник

    • @casualden7656
      @casualden7656 4 дні тому

      да и есть сферы, где "питухон" явно обходит любой другой ЯП)

    • @_sergeevich5827
      @_sergeevich5827 4 дні тому

      @@casualden7656 , говоришь А, говори Б, пример в студию, где питухон обходит С, С++ или хотя бы Java.

  • @ИванИванов-я8т2ц
    @ИванИванов-я8т2ц 6 місяців тому

    Спасибо!

  • @alexreich8711
    @alexreich8711 5 місяців тому

    Наконец-то адекватное сравнение ЯП

  • @ZugDuk
    @ZugDuk 4 місяці тому

    Есть один фатальный недостаток, перечеркивающиц все - корпорация зла.

    • @dje848
      @dje848 2 місяці тому

      Корпорация зла в последние годы лояльная к опенсорсу, в том числе открыла .NET и C#, насколько я понимаю