Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > Актуальность C# |
Автор: WolfAlone 24.12.2009, 12:49 |
Здравствуйте! Я подозреваю, что подобные вопросы уже возможно задавались, но я бы хотел уточнить Ваше мнение по комплексному вопросу, а не по его отдельным частям. Перед тем, как изучать какой-либо язык или технологию, перед человеком встаёт вопрос резонный вопрос рациональности этих действий. На выпуск в жизнь платформы .net, компанией Microsoft были затрачены огромные деньги, но даже этот факт не дал мне уверенности в целесообразности последней. По этому, я хотел бы узнать Ваше мнение по следующим пунктам: И так, мы имеем «хорошую(?)» платформу, множество готовых классов, новый язык, кучу готовых компонентов, по мимо платных, дорогих компиляторов мы так же имеем бесплатную среду разработки* и много других относительных плюсов. И всё бы оно хорошо, но всё же терзают душу мою душу смуты по этому вопросу! *Visual Studio Express И так, ещё раз, мы имеем платформу которая может быть установлена на Windiows, а так же (!!!), на Linux/Unix, мобильных устройствах и многих других. Это несомненно большой плюс! Не смотря на всё вышесказанное, как я подозреваю у этой технологии есть ещё и минусы. Давайте обсудим их вместе ещё раз 1. Если я правильно понимаю, то для того, что бы на «голой» виндовс ИксПи заработало приложение разработанное для работы с БД, помимо самого инсталлятора БД, нам потребуется ещё как минимум дистрибутив платформы .net под Win32? Верно ли это? 2. Если я правильно понял, то приложения разработанные для платформы .net — работают медленнее своих «обычных» аналогов, т. к. приложения написанные для этой платформы, являются чем-то вроде «скриптов», т. е. они интерпретируются. 3. Резонно ли использовать эту платформу, для написания например, кросс-платформенного консольного приложения (например, http-сервера) 4. Какие по Вашему мнению приложения резонно было бы иметь в качестве приложений .net, а какие мнению лучше иметь в «классическом» исполнении, например из: а) 1с Бухгалтерия б) Фотошоп в) Автокад г) Архиватор ВинРар д) 3Д студио макс / Алиас Майя 4а. Как Вы думаете, если бы 1с бухгалтерия, была написана под .net, как бы это сказалось на её кроссплатформенности? Можно было бы её в таком случае запускать под линуксом без проблем? Как бы это сказалось на её производительности? 5. Действительно ли «система сборки мусора» платформы .net настолько хороша и актуальная, или она лишь способствует попыткам упростить программирование до уровня «бейсика»? Лично меня вполне устраивал механизм работы с памятью старого доброго С++'a! Что вы думаете по этому поводу? 6. Насколько резонно использовать эту платформу для разработки программ мультимедиа (например, видео-конверторы) и/или для разработки ПО игрового 2D и 3D ПО! *7. Планируется ли выпуск Visual Studio 2010 версии Express? P.S. Уважаемые читатели сего, я очень убедительно прошу Вас обсудить в этой теме не грамматические ошибки или уровень интеллекта автора данной темы и прочие второстепенные вещи, а именно указанные мной выше вопросы! Я думаю (надеюсь на это!), что очень многим получившийся материал станет полезным пособием, перед выбором, стоит изучать этот или иной язык, систему/платформу для решения каких-либо конкретных задач! Что позволит в будущем избежать ошибок, с которыми многие из нас сталкивались не однократно. P.P.S. Собственно говоря, если кратко перефразировать всё вышесказанное, то вопрос будет звучать так: На сколько актуален C# (и другие языки) и платформа .net? Насколько оправдано его (её) применение в той или иной области? Всё же не стоит забывать, что ресурсы компьютера не безграничны... Благодарю всех за внимание! |
Автор: Dobermann 24.12.2009, 12:58 |
Препод сказал, что будущее за всей этой технологией! |
Автор: diadiavova 24.12.2009, 13:44 | ||||||||||||||||
Если на хр стоят все последние сервиспаки, то там уже всё есть(по крайней мере 2-й фреймворк точно). В любм случае это небольшой пакет и необходим он для запуска всё большего количества программ. Так что машин без фреймворка становится всё меньше, да и хр - не показатель, в силу того, что система медленно но верно сдаёт позиции, да и поддерживаться скоро перестанет(это не значит, что все сразу с неё уйдут, но тем не менее это уже вчерашний день).
Кроме того при использовании низкоуровневых технологий ручного кода оказывается в разы больше, а количество ошибок в приложении прямо пропорционально количеству ручного кода. На любой ошибке(не фатальной ессно, а той, которую трудно отследить, в силу того, что приложение с ней работает)ты теряешь в производительности. Сборщик мусора почти гарантирует от утечек памяти, точнее утечки могут иметь место только при использовании неуправляемой памяти. Во время разработки не всегда можно точно определить где может быть утечка, а сборщик решает проблему. Байт-код не является интерпретируемым языком. Это аналог машинного кода, только выполняется он на виртуальной машине и если это и даёт потерю производительности, то совсем незначительную. Ну и кроме того надо учесть джит-компиляцию и такую штуку, как ngen, которая позволяет скомпилить программу в машинные коды. Это не совсем то же что и натив-код, но с помощью этих фич возможные потери нивелируются.
реализации дают возможность запускать нет-приложения под другими платформами. Не всё работает, да и если работает то только то, что написано под 2-й фреймворк, но и это тоже неплохо. Что касается консольного приложения- без проблем, а сервер будет работать даже лучше, поскольку он может работать без перезагрузки месяцами, то небольшая утечка памяти(незаметная в десктопе) может сильно перегрузить машину, поскольку мусор будет накапливаться, что обычно приводит к тормозам.
Любые. Системные - нет, а прикладные программы, особенно крупномасштабные... Другой вопрос, что уже написанное с использованием других технологий никто "с нуля" переписывать не будет, а так в той же Visual Studio очень многое на .Net написано, а основа - COM/
Для того, чтобы приложение было кроссплатформенным его надо писать как кроссплатформенное приложение. Там есть много нюансов, далеко не всё, что написано даже под 2-й фреймворк можно под линухом запускать без всяких вайнов. В этом смысле, пожалуй что у явы дела получше обстоят, а технология очень похожа на .Net(но .Net исё-равно круче ![]()
Действительно, и упростить тоже позволяет, что немаловажно. Требования к софту растут, а времени на его разработку отводится всё меньше, так что ... и вообще мне не понятно зачем делать руками то, что может сделать машина. И кстати на счёт бейсика ![]()
Учитывая что бета-версии есть... ![]()
Всё ИМХО ессно. |
Автор: A5uKa 24.12.2009, 15:02 |
Лучше знать, чем не знать. Изучать его или что-то другое ? А что другое ? на чистом С++ много не напишешь, а VCL отстаёт как-то ... |
Автор: Heinzz 24.12.2009, 19:12 |
Интересная тема! У меня дополнительный вопрос: когда уже java сгорит, подскользнется, утонет ..далее по вкуск ![]() ![]() Почему .NET растет медленнее джавы? Когда начнут отрывать с руками? Где недостатки, в чем-то уступает? |
Автор: WolfAlone 24.12.2009, 19:20 |
Ой, СПАСИБО вам (*и Вам лично) всем огромное! Очень интересная дискуссия получилась! Я свято верю, что она станет ответом на много маленьких вопросов для людей не знающих возможностей .net (вроде меня)! С Вашего разрешения, я позволю себе немного отвлечься от темы, и задать вот такой вопрос: Давайте представим на мгновение, что некто решил переписать 1с бухгалтерию 7.7 на .net, и это у него получилось на ура! (ну гением "он" был ![]() Смог бы он использовать не "стандартный" MsSQL Server, а например FireBird (2) и запускать эту программу на LINUX'e, без танцев с бубном, если он изначально ничего "сверх естественного" в свою софтину не вкладывал. Т.е. обычная "математика", работа с БД и печать документов? P.S. Ещё раз огромное спасибо всем вам! |
Автор: NightmareZ 24.12.2009, 19:46 | ||||||||||||||||
Я не уверен в этом. Есть пруфлинк? В википедии http://ru.wikipedia.org/wiki/.NET_Framework о том, на какой винде какой фреймворк по-дефолту есть.
Я бы не стал писать фотошоп под .NET, ибо довольно много работал с графикой (в .NET) и навидался тормозов. А чтобы всё работало более-менее шустро, часто приходится заниматься хакерством и работать с памятью в обход рантайма, что убивает многие идеи дотНета. Хотя, впринципе, можно интерфейс писать на дотНете, а ресурсоёмкие операции вынести в DLL. Кстати, http://flowchartbuilder.blogspot.com/, загнулся частично от того, что я изначально не подумал, что работа с графикой "в лоб" будет слишком тормозной.
В играх львиная доля вычислений (графика, физика) происходит на видеокарте, потому не особо важно, на чём написано ядро движка.
Они не интерпретируются. Они компилируются в байт-код. Байт-код же на целевой машине компилируется в машинный код.
Я http://flowchartbuilder.blogspot.com/ кроссплатформенное приложение на шарпе.
Для того, чтобы приожение на дотНете было кроссплатформенным, нужно изначально об этом позаботиться, а не портировать его в близи релиза. Ибо есть некоторые различия между фреймворком под винду и Mono, а также некоторые недоработки Mono. А, вообще, имхо, 1С - идеальный кандидат для написания под дотНет.
Она собирает управляемые объекты. А мы все живём в реальном мире, где есть много чего ещё: различные gdi дескрипторы, подключения к БД, файлы и т.п. Первые хорошо бы удалять, вторые и третьи закрывать сразу после завершения работы с ними, т.е. детерминированно.... а, значит, руками. Но, вообще, GC хорош и удобен. Если правильно им пользоваться. Добавлено через 1 минуту и 33 секунды
Смотря что подразумевать под танцами с бубном. Но, вообще, конечно, это сделать можно. |
Автор: WolfAlone 24.12.2009, 20:39 |
Ой спасибо Вам ещё раз! Супер полезная информация! Под "танцами с бубном" я понимаю вот что: есть линукс (например убунту 9.10, с CD), есть у нас MONO (последний stable-релиз), есть у нас софтина некая (возьмем ту же "1с бух." написанную на С#), в которой используются только "модуль" для работы с БД FireBird (я не знаю, как это правильно называется, может "компонент", "сторонний класс" или как-то ещё) + класс для печати (работаем с принтером) + чистый код на C# без сторонних "компонентов" и пр. Сможем ли мы запустить "сие чудо" в линуксе, не задаваясь вопросами типа "почему не работает"?* Linux ubuntu 9.10 настроен по умолчанию (т.е. как поставили так и стоит) + mono с аналогичными настройками. |
Автор: diadiavova 24.12.2009, 21:29 | ||||
Это больше из опыта, поэтому ни на чём не настаиваю(кроме того, что пакет небольшой, бесплатный для пользователей винды и по любому нужен)
Обычно так и делают, только почему интерфейс? Как будто на дотнете только интерфейсы и можно писать.
Писать нужно изначально кроссплатформенное приложение. Есть инструменты, позволяющие устранить некоторы проблемы совместимости(типа MOMA), но далеко не все проблемы можно решить с их помощью. |
Автор: ДобренькийПапаша 24.12.2009, 21:39 |
По поводу .NET в составе XP. Если XP официальный, то по-моему нету там .NET. Но, ИМХО, ставят в основном сторонние сборки, а вот сколько я их не ставил .NET был везде))) |
Автор: jonie 25.12.2009, 09:19 | ||
Не надо чтобы джава куда-то уходила... это даст серъезное подспорье майкрософту в пользуй заворачивания .net на платформу виндофс (и так-то завернута донельзя). В java есть много интересного и вкусного - например сервера приложений вроде веб сферы... Есть еще такая штука как кросплатформенность... Кроме того, .net растет как раз быстрее джавы. Другой вопрос о том, насколько он уже занял рынка... |
Автор: Dobermann 25.12.2009, 15:43 |
Вот вот! Что то в вузах его преподавать не спешат! |
Автор: Экскалупатор 25.12.2009, 16:06 |
Dobermann, почему? у нас преподают. |
Автор: NightmareZ 25.12.2009, 16:11 |
Потому что у нас подавляющее большинство вузов калечные и преподают там недопреподы. |
Автор: LamerTM 25.12.2009, 17:25 |
Я на шарп перешел пару месяцев назад после Delphi. Впечатления. Минусы: - Тормознейший старт приложения. Более 2 сек, вместо менее 0.5 сек у делфи. - Подтормаживания при вызове форм и методов в первый раз. (происходит JIT-компиляция, загрузка dll и прочая муть). На втором вызове всё уже быстро. Пока всё приложение не продрочишь (извиняюсь, но по-другому это не скажешь) работать противно. - Торможение GUI. Иногда видно в каком порядке рисуются контролы, в отдельных случаях видно как прорисовывается сам контрол. ![]() - Тормозная графика. Но можно сделать и быструю при желании. - Управление памятью оптимизировано по скорости (что конечно гуд) но в итоге может жрать памяти немеряно. Короче, когда приложению надо занимать мало памяти, то шарп будет не лучшим вариантом (можно сделать чтобы не жрал много, но будут тормоза. К тому же CLR тоже не выкинешь). Плюсы: - Меня не по-децки прёт от синтаксиса. Нет ничего лишнего, почти нет приспособлений для мазохистов (я не мазохист, поэтому они меня бесят), всё почти супер, если не считать мелочей. - Скорость выполнения скомпилированного кода выше чем Delphi (как бы это странным не казалось, но это так). - Можно формошлёпить, быдлокодить и мышедрочерствовать. - Есть дженерики, от которых меня прёт. Ну вот и всё. У меня есть калькулятор, написанный на Delphi. Я кликаю его иконку, он мгновенно появляется. Если бы он был на шарпе, я бы охренел от тормозов. Так что если приложение должно быстро стартовать, то шарп идёт лесом. NightmareZ, я ж говорил твой проект ###, а ты хвастался. ![]() В общем, писать на шарпе можно проги которые не очень маленькие и где юзеру не впадлу подождать долгую загрузку. А так всё можно сделать (про драйвера и прочую муть ничего не знаю - не делал). На асме писать нельзя, кстати. Необходимость фреймворка это всё фигота я так думаю. Винда ведь тоже необходима и никто не ноет. |
Автор: wester 25.12.2009, 19:19 |
LamerTM, типичнейший взгляд программиста C++\Delphi на C#\ и вообще не пора ли тему перенести в религиозные войны ? |
Автор: ДобренькийПапаша 25.12.2009, 19:40 |
Ламер, а это у Вас что за калькулятор? У нас делали на парах люди калькулятор как в Windows. Ничё не тормозило. p.s. Я заканчиваю реализацию крупной АСУ ВУЗом (ну не то чтобы крупной, это относительно, ну 40к строк где-то). И ничё не тормозит... |
Автор: LamerTM 25.12.2009, 20:17 |
Обычный калькулятор. В строке пишу выражение, в другой он пишет результат. Ничего особенного. Написан на делфе. По университетскому заданию, с тех пор и остался (я его сестре писал, она нулевая в программировании). На шарпе даже пустая прога стартует медленнее. (Я говорю о времени старта программы, а не о скорости работы уже компиленного кода. То есть время от нажатия на ярлык до появления формы на экране). |
Автор: diadiavova 25.12.2009, 20:27 |
LamerTM, http://ru.wikipedia.org/wiki/Ngen |
Автор: LamerTM 25.12.2009, 20:46 |
diadiavova, Я эту фишку знаю. Но однажды тестанул, и скорость выполнения кода была ниже чем у простого запуска с JIT-компиляцией. Так что там тоже недостатки есть. Но там где скорость выполнения кода не очень важна (как в моём калькуляторе) вполне может и подойти. |
Автор: diadiavova 25.12.2009, 21:21 |
А по-моему ты придираешься. На большинство случаев есть готовые решения(хош так, хош эдак), а тебе всё не так. ![]() |
Автор: thomas 25.12.2009, 21:30 |
Приветствую всех. Тут упоминали, что для работы .NET приложений нужен FW. Потом поднимали вопрос на всех ли выпусках ХР он есть. Так вот мне хочеться напомнить, что для работы приложений написанных на кроссплатформенной JAVA тоже что-то нужно. И это что-то не присутствует в windows изначально. Насчет unix систем не знаю, присутствует ли там виртуальная машина JAVA по умолчанию или нет. ЗЫ У меня на машине виртуальная машина java не установлена и соответственно ни одно кроссплатформенное приложение не запускаеться. ![]() ![]() |
Автор: diadiavova 25.12.2009, 21:33 |
thomas, да тут как бы о яве вскользь упоминали. Речь шла о преимуществах(недостатках) таких технологий как .Net и Java с одной стороны и.......так скажем...более близких к железу с другой. |
Автор: thomas 25.12.2009, 21:56 | ||
diadiavova, приветствую. Да я собственно к этому
ну и дальше другие участники обсуждали наличие FW в ОС. Кстати, про графику: существует же paint полностью написанный на C#. И он вроде как очень даже и ничего. Не фотожаба конечно, но и не хуже гимпа линуксоидного. |
Автор: LamerTM 25.12.2009, 22:11 | ||
Я всегда придираюсь и ко всему. ![]() ![]() |
Автор: diadiavova 25.12.2009, 23:06 | ||
thomas, все эти машины CLR, JRE и прочее занимают такое мизерное пространство на диске, что ИМХО даже серьёзного обсуждения не стоит. Кстати не понимаю почем у не установит JRE, очень много классных бесплатных прог под неё есть. С гуем ява конечно явно подгавняла, однако софт, не требующий мощного гуя, весьма недурён и главное - бесплатен.
За всё надо платить. |
Автор: Amp 26.12.2009, 00:05 | ||
Хуже гимпа. Сильно хуже. Но симпатичнее ![]() |
Автор: OXYGENE 26.12.2009, 00:36 |
LamerTM, Используй NGen. Скомпилируй заранее, тогда и загрузка будет быстрей... |
Автор: mrbrooks 26.12.2009, 09:15 |
товарищ не надо обобщать ![]() Delphi - это лол. C# - это кошерный mainstream. особенно это становится очевидно, когда перестаешь писать калькуляторы и чаты. |
Автор: DenWPF 26.12.2009, 12:00 |
С# - крут, и не чего тут думать, говорю со стороны продовца, а не программиста, есть заказы и их проще и быстрей выполнить в С#. а ещё если по технологии WPF, то вообще заказчик писается, от того что там все крутится вертится горит, а саймой проге 100 строчек не больше)) |
Автор: Dobermann 26.12.2009, 14:01 |
Интересно, а LINQ заменит ADO.NET ??? |
Автор: NightmareZ 26.12.2009, 14:09 | ||
Иногда лучше жувать, чем говорить. |
Автор: SKrivosein 26.12.2009, 19:14 |
Не нравятся мне эти разговоры: "вот такой язык, круче такого". Ну ладно, сам такие речи вёл когда писал на C/С++, типа мы .exe - .dll меньше делаем, наш код быстрее бежит... А потом мне человек от Java кое что обьяснил. Само название темы: "Актуальность C#" мне не нравится, как то уж задвигается сразу до тёмных углов всё остальное, VB, ASP.NET WebForm - MVC, XAML a сним и WPF - Silverlight, новый F# и многое другое... Лучше уж "Актуальность .NET". Вот здесь о калькуляторе много писали, ну да на C++, Delphi он возможно на секунду спускается быстрее. Зато я за день на WPF такой калькулятор зделаю, повторить который на С++ ( с Delphi незнаком, но думаю тоже самое) будет граничить наверное с мазохизмом. Почитав книжки и недельку потренировавшись можно писать RIA аппликации на Silverlight.... и так далее. Конечно кто пишет драйвера, утилиты для режима ядра, здесь вопросов нет. Но кто пишет бизнес приложения с базами данных, веб сервесами и тому подобное, то время проектирования, кодинга, вылавливания ошибок думаю ясно в пользу .NET. Это моё лично мнение. |
Автор: dazy 12.1.2010, 00:24 |
Выскажусь по поводу фотошопа на .net Посмотрите на линейку Expression. Есть там такая штука, как Expression Design, чем вам не младший брат фотошопа? Про blend и web я вообще молчу, не фотошоп конечно. Не знаю, пойдет ли линейка Expression под моно, думаю что нет. Но суть то в другом, вот вам хорошие примеры того что можно делать на .net. Ладно, это Микрософт, они знают тайные коды, и поэтому только у них получаются программы на .net, а все остальные нервно курят. Посмотрите на новый Автокад, я не знаю что там у него внутри, но интерфес сделан на wpf. Вообще, мне кажется, что на сегодняшний день, делать что либо с графикой без wpf это чистой воды извращение. Сегодня, мы вступаем (уже вступили) в эру когда не только и не столько техническое наполнение играет роль, но дизайн + юзабилити становится ведущим параметром для оценки продукта. Посмотрите на автомобили, сотовые телефоны, ноутбуки, телевизоры, стиральные машины и т.п. Дизайн занимает ведущую роль, потому что технический прогресс притормозил, а wow-эффект (привет Пелевину) создавать все же надо. И благодаря дизайну моя дамочка переплачивает за ноут 5-10 штук, только потому, что "ну он же такой веселенький, и со стразиками ![]() С софтом тоже самое. Уже сегодня дизайн (именно дизайн как картинка) многих приложений превалирует над функционалом. Как правило, программисты не особо заморачиваются над дизайном, может это и правильно - код превыше всего. Согласен, для настоящего програмера - все равно на чем писать. Но дело в том, что пользователи как раз очень сильно завязаны на дизайн. Это сегодня, а завтра еще хуже будет. А WPF + silverlight позволяют быть ближе к пользователю, который во итоге и платит деньги. Поэтому если кратко, то кроме всего прочего, платформа .net актуальна сегодня не только с технологической стороны, но так же актуальна еще и тем, что позволяет легко и непринужденно натягивать на вашу супертехнологичную платформу дизайн от pininfarina, а пользователи от этого приходят в неописуемый восторг. |
Автор: Dobermann 12.1.2010, 01:00 |
Да, WPF - бесподобен! |