ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
1048381 Топик полностью
fk0, легенда (31.10.2020 14:44, просмотров: 688) ответил Vit на Имею мнение, что плюсы по сравнению с шарпом просто криворукая недоделка. Но по правде разница в много лет оправдывает такую убогость плюсов. Считаю шарп с дотнетом самым лучшим из того, что сделали в майкрософт.
Имею мнение, что некоторые товарищи не осилили и им конечно лучше подходит Delphi или современные аналоги. Попробуй назвать, что есть принципиального в дотнете (а не его библиотеках, где они идею позаимствовали у CPAN и Tcllib появившихся гораздо раньше), чего нет в C++ и наоборот. Сходу: в C# невозможно метапрограммирование. Уже сразу C# -- это язык на класс ниже. Какой-то синтакс-сахар там делается, разумеется, не средствами языка, а заботливо подставленными костыликами 

в массе мест. Чего только перегрузка операторов стоит -- развидеть не могу (что в C++ легко решается, т.к. есть ADL).


В C# конечно собраны некоторые интересные идеи, вроде Linq, но по большей часто это -- библиотека, а не язык. Сборщик мусора -- преимущество для быстрого прототипирования, для десктоп-приложений... Для RAD (Radpid application development). Я могу признать, C++ -- это медленное программирование (пока ты со своими шаблонами копаешься -- прибегут ардуинщики и всё сделают на шарпе, ага).

Сомнительная вещь для сервера, и совсем сомнительная для embedded. У них там тоже свои утечки есть (к которым обычно аппелируют) и прочие специфические баги. И разумеется способность встать колом в системе реального времени.


Ну и само собой на эффективном коде (скорость, память) можно ставить крест. Даже сравнение с C++ бессмысленно. Это тоже совершенно другой класс, сравнивать нужно скорей с Java. Да, там есть unsafe блоки, но это в лучшем случае попытка догнать голый C, который заметно отстаёт от C++.


Возможность использования в embedded -- C++ можно на любой платформе, где есть компилятор. C# ? Догадываешься куда дело катится? В последнее время сделали ещё на линукс (причём там тоже нюансы), причём только x64. И на arm64 кое-как. А для 32-bit -- плохо или никак.


Возможность использования в задачах, где критична надёжность ПО и высокие сроки службы -- догадываешься как дело обстоит? C# стоит поверх своего рантайма, который прямо скажем, не идеален (под C++ лежит гораздо меньше прослоек и гораздо более простых, в которых средний программист легко может покопаться руками), рантайм привязан к конкретной операционной системе наконец (да, у них есть CoreCLR, но я немного видел как оно там внутри) и так далее...


У меня подозрение, что вообще для использования в серьёзных задачах (атомная промышленность, ракетные технологии, авиа и морские приборы) C# не годится ни разу. Более того, я имею конспироложескую мысль, что оно специально так сделано. Что есть специальные секретные отделы в Микрософте, где решают, что можно делать и как, а что нет. И вот делают удобный, во многом хороший, обладающий массой преимуществ язык и вообще платформу, которая вытесняет с рынка всё другое. Но при этом эта платформа имеет ряд специальных изъянов. Она годится и прекрасно подходит в каких-то отраслях (десктопные приложения, не слишком высоконагруженные сервера), удешевляет и ускоряет разработку ПО. И в странах третьего мира такая платформа быстро всё завоёвывает, всех вытесняет с рынка, есть масса обученных под неё специалистов, всё здорово, но парочка нюансов:


1) ключевые технологии крепко держит в руках Микрософт и США;

2) платформу невозможно так-то просто портировать на компьютеры собственной разработки;

3) платформу, из-за ряда её особенностей невозможно использовать в ряде применений;

4) в любой момент всё можно отключить, если не работу существующих программ (впрочем, я бы не зарекался -- там черт ногу сломит), то сборку так точно (кто работал про nuget знает).


Идеальное решение для поставки бабуинам, для бытовых задач. А не бытовых бабуинам не положено: они должны у белого человека покупать сервис или товары. Ракета не может быстренько залететь на сервер микрософта, чтоб обновление скачать. А навигационное оборудование ледокола, например, будет использоваться десятилетия (за это время у микрософта сменится несколько видов виндов и вместо C# будет какой-нибудь B$).


Что характерно, у них самих-то -- язык Ада. Который распространяется по баллистическим траекториям.


И в C++ тоже ничего бы ни было, но он, к счастью, никому не принадлежит и в него пропихивают в последние годы какие угодно идеи.

[ZX]