Тёмный

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

John Berden
Подписаться 178
Просмотров 573
50% 1

Делюсь историей и сравниваю C# с Python/C++/Java.
Контакты:
E-mail:
constantine.ryzhikov@gmail.com
Skype:
volibor4444
VK:
johnberden
Facebook:
/ kostiantyn.ryzhykov

Наука

Опубликовано:

 

3 апр 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 4   
@alexreich8711
@alexreich8711 16 часов назад
Наконец-то адекватное сравнение ЯП
@user-gj8fv6ol1l
@user-gj8fv6ol1l 24 дня назад
Спасибо!
@user-jc1rd7xp1q
@user-jc1rd7xp1q 2 месяца назад
Мужик,удачи тебе во всем!)
@nanoqsh
@nanoqsh 2 месяца назад
В своё время ценил шарп по подобным причинам, изложенным в ролике. Это довольно хороший компромис, немного пожертвовать производительностью и памятью, но получить безопасный и удобный язык. Но потом я узнал про Rust. В нём не нужно жертвовать ни производительностью, ни безопасностью. Язык safe, но при этом позволяет делать всякие низкоуровневые штуки. Скажем, как и в Си ты сам решаешь, где размещать экземпляр объекта, на стеке или в куче (в C# насколько я знаю это свойство привязывается к типу). Можешь брать ссылку на объекты, где бы они ни были, хоть на стеке, хоть куче. Можешь как и в Си экономить аллокации, скажем, нужна тебе подстрока - тогда просто возьми ссылку на уже существующую без необходимости выделять новую строку в куче, а потом копировать её (в Си даже, порой, сделать это сложнее из за нул-терминации строк). И так далее, но при этом компилятор статически проверяет что всё safe. Более того, компилятор ещё и помогает писать многопоточный код, отслеживая, какие типы можно передавать в другие потоки, не будет ли где-то гонки данных из за многопоточной записи и так далее. И что наиболее важно для производительного языка, в расте как и в C++ есть понятие zero cost abstractions - то есть на расте можно довольно эффективно выстраивать оптимальные абстракции, которые при компиляции собираются в максимально эффективный ассемблер, словно ты руками написал одну длинную процедуру. Для примера возьмём лямбду из C# - чтобы её использовать мне нужна аллокация, мне нужно менеджить эту аллокацию сборщиком мусора, мне нужно делать виртуальные вызовы чтобы вычислить результат этой лямбды. Всё это требует какие-то дополнительные расходы памяти и перфоманса. В расте это не так. Лямбда (там это называется замыканиями/кложурами) размещает всё окружение по значению (то есть обычно в стеке) не требуя аллокации, никакой виртуальный вызов не требуется - раст статически знает тип лямбды. Сборщика мусора в расте и вовсе нет, так что ещё одно потенциальное снижение перфоманса отпадает. В итоге когда я использую разные абстракции, скажем итераторы и лямбды внутри, то в итоге компилятор генерирует мне такой же код, как если бы я написал его на обычных циклах, без какой-либо высокоуровневой магии. Что касается кроссплатформенности - она изумительна. Я собирал приложения под разные десктоп системы, под андроид и даже под браузер на wasm, также раст отлично подходит чтобы запускать его в embedded среде вообще без ОС. В общем, фактически, можно писать код под любую платформу. Но, конечно, ни один язык не обходится без недостатков. Я бы выделил два основных: Первое, язык довольно сложный, требует освоения довольно специфичных вещей. Скажем, лайфтаймы, система владения, понимание как работать с борроу чеккером и так далее. Основная сложность это переучиться писать код так, чтобы он лучше вписывался в систему владения и проверки заимствований. Например, по возможности избавляться от разделяемого и одновременно изменяемого состояния, что на самом деле плохо не только для раста, но и в целом сложнее отлаживать и при этом оно вредит производительности (скажем, такой код сложнее распараллелить). Второй недостаток: на данный момент не так много готовых библиотек, в целом язык ещё только развивается. Но потенциал у языка огромен
Далее
играем в прятки!
00:30
Просмотров 91 тыс.
Java vs C# (C Sharp). Что выбрать?
14:40
Просмотров 239 тыс.
Что такое Java и как ее выучить?
19:55
Main filter..
0:15
Просмотров 2,4 млн
Ноутбук без экрана
0:22
Просмотров 11 тыс.
Mac Mini Собираем из двух один!
0:59