Другие языки программирования и технологии

Стоит ли СИ ШАРП (C#) моих первых мыслей о нем ?

"купят лицензионный MS Visual Studio" - попахивает неоправданной тратой средств. Ведь есть Express версия, где функционально ничего не усечено. Разве что нет в GUI поддержки Oracle, только MS SQL.

У вас не стоит задача писать под Linux, поэтому про кросс платформенность можно забыть полностью. Кстати говорят С++ кросс платформенный, однако для каждой платформы одну и ту же библиотеку переписывают заново. И компилируют отдельно. Если на то пошло, программы скомпилированные для Win можно без пере компиляции запускать на MONO. То есть эта кросс платформенность даже более полная чем у С++.

В конечном счёте конечно же будет IL язык, а он компилируется в ассемблерный код согласно архитектуре процессора. С++/Delphi код не умеет компилироваться под машину пользователя, и не использует никаких специфичных команд процессора. Так как компилируется 1 раз на машине разработчика.

Системное API всё обвёрнуто в .NET классы, они отлично структурированы и занимают около 300МБ. Скорость ввода-вывода такая же как в C++ и Delphi потому что в конечном счёте С# не привносит собственной реализации того же WinSock. Да, у вас есть класс Socket с красивыми методами, есть классы отвечающие за файловый ввод-вывод (File, FileStream). Они сильно отличаются от Сишных или Делфийских. Но в конечном счёте всё сводится к вызову системного API, а ООП обёртка его вызова не такая уж и тяжеловесная.

Падение производительности будет в разных случаях. Перво наперво в типичных классических задачах. Например, работа со string классом в циклах вызовет частое выделение памяти и падение скорости работы. Применяем StringBuilder не имеющий этого недостатка. Не правильное применение массивов или коллекций. Массивы заменяются на более эффективные классы коллекции, которых довольно много на все случаи жизни - Queue, Stack, List, Dictionary. К примеру, Queue позволяет удалять элементы стоящие в своём начале без потри производительности. А List даст серьёзное падение скорости. Dictionary позволяет быстро искать элементы, но медленно добавлять новые.

Ещё 1 причина падения производительности о которой стоило бы написать отдельно - IL язык. Есть алгоритмы отлично реализованные в С++ и ассемблере. Например, вычисление CRC32 сводится к 2-3 инструкциям процессора. А в C# ассемблера нет, только IL. Приходится писать на высокоуровневом IL то что на машинном языке занимает 5-10 байтов. Получается 40 строчек на IL языке. И конечно же это не транслируется в красивый ассемблерный код, система просто не знает что вы хотели сделать и не может вам помочь. Выход один - писать на Delphi или ассемблере, делать DllImport. Так сделано во всех местах в .NET классах. И может быть это и правильно. Точно также как в С++ узкие места пишут на ассемблере.

Не надо забывать и о профилировщиках. Одним из лучших является Red Gate ANTS Performance Profiler 6. Бывает нужно подсмотреть как написан определённый метод библиотечного класса, применяйте Reflector v7.
Владислав Степанов
Владислав Степанов
8 358
Лучший ответ
Попробуйте PureBasic.
Язык не сложный и не привязан к винде и позволяет создавать проги для Windows, Linux MacOS X и AmigaOS.
А вдруг ваше руководство захочет сменить на компа винду на линукс, что будете делать? C# только для Windows, да еще и управляемый код создает, из которого сложно работать с железом.
У PureBasic этих проблем нет.
Sinan Korkmaz > управляемый код создает, из которого сложно работать с железом

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

В остальном отличный язык - лучший автокомплит, помощь при написании кода (дополнение Resharper), страховка от распространенных ошибок С++

А зачем вам покупают дорогую Visual Studio, когда есть бесплатная Visual Studio Express ?
Костя Бондаренко Visual Studio Express бесплатна если ты не используешь ее в коммерческих целях. Т.е. если ты студент или домашний любитель поизучать язык - можно. Но
Если ты есть юр лицо, комерческое, то у себя не можешь использовать express.
Странные какие то мысли. Легкость и понятность теперь стали недостатком языка, а не преимуществом? Где проблема?
Костя Бондаренко Я еще весь язык не изучил. Мне непонятно вот что: C# очень логичный и лаконичный. Но довольно простой. Мне может подойдет. Или же положить время на c++.
Ведь там и там язык СИ! И если C# такой приятный, то зачем тогда еще пишут на C++ ?Ну понятно что C# это платоформа CLR а не прямой код. Но почему тогда C# не сделают для прямого исполнения на CPU ? без MSIL....Т.е. это только смущает.
А так конечно синтаксис и идеология оказались гораздо лучше deplhi. Уж больно begin....end долго писать. Гораздо легче { } или там for (i=1;i
С шарп - это основной язык для платформы .нет, синтаксис очень похож на ява, но имеет отличия.
Минусы: приложения занимают много оперативной памяти
Плюсы: удобный код, кросплатформенность, большое количество классов .нет
Выбирать тебе
Костя Бондаренко да, код вроде удобный. Про память: у меня на пк XP и 2 гб озу.
Еще вот, листинги около 5 000 строк было на дельфи. Компиляция была долговатой.
Но один раз. Раз в 2-3 месяца.
И еще: кросплатформенность. А где еще есть виртуальная машина кроме под .NET кроме ПК x86-64 ??
? знаю, что промежуточный код си шарп компилятор генерит. И машина его исполняет. А вот где реализованна она кроме пк ?
Согласен с предыдущим оратором, но насчет кросплатформенности.. . С шарп и дотнет в частности пререгатива сугубо майкрософта, попытки перенести его на юникс системы существуют, насколько мне известно, на данный момент реализован аналог дотнет 2.0 под юникс, так что если вопрос кросплатформенности стоит остро, то лучше использовать яву. А в общем да, С шарп очень удобный язык за счет того, что в самой дотнет библиотеке очень много готовых методов и классов