Стоит ли переходить на платформу .NET?
На большем количестве ОС будет работать.
Kosfiz - Насчет переносимости - так конечно, что до java далеко всем. Но тебе нужна ли такая широкая переносимость? И что главнее тебе - производительность, переносимость, удобство кодинга?
Насчет .Net - мое скромное imho: ява уже живет свободной жизнью, а .Net судьба зависит от позиции мелкомягких полностью. Уже были слухи, что проект Mono перенеса под линух они считают нелицензом и думают судиться. Соответственно, если вендоры не будут делать фреймворки для всевозможных платформ, то - станет ли MS трудиться?
Судьба нета будет ясна через 3-4 года, думаю...
P.S. Насчет сравнения WinForms < swing < jambi < Qt - это из опыта тестирования интерфейсов нескольких прикладных программ.. эээ... среднего уровня. И даже не по сухим логам профайлера, а заметно на глаз на P4 2400 / 512. Может, в каких то областях и не так, но сомневаюсь.
Буду рад, если мне кто-то аргументированно докажет, что я неправ в недооценке скорости java и шарпа.
важнейший аргумент - проприетарные продукты полностью зависят от их владельцев. и каким бы крутым дотнет ни был, всё равно решают пользователи (то есть программеры) и насильно им ничего не впаришь.
в opensource чаще всего сами разработчики для своих же целей и разрабатывают, если брать в пример PHP... многие думают, что это всё игрушки для чайников, но события последних года-двух говорят от том, что PHP уже практически полностью коммерческая разработка для коммерческих решений и это неспроста. почитайте блоги разработчиков.
дотнет же ИМХО целесообразен только в одном случае - когда нужен именно дотнет :) выбирая его, ты фактически становишься рабом windows и дяди Билла в частности, подумай об этом ;)
от использования шарпа никуда ты не попадаешь. есть веб сервисы, обеспечивающие обмен информацией по сети, не зависящий от платформы -- как программной, так и аппаратной.
шарп занимает свою нишу в огромном множестве языков и технологий. это новый язык, в котором реализованы довольно интересные вещи и которых частенько не хватает той же джаве. да, он виндовозный. но под аиндовоз тоже нужны программы. и далеко не всегда и не везде уместа кроссплатформенность.
т.е. решать ты должен сам, исходя из поставленных задач.
Как уже сказал <SCORP>, ты должен это решать сам исходя из сложившейся ситуации. Это будет зависеть от множества факторов: твой стиль кодинга, языки которые тебе нравятся, задачи которые ты собираешься реализовать на .NET и т.д. Ты ничего из этого нам не рассказал и ожидаешь совета.
Они правы. Тем не менее, эта статья - чистый маркетинг. Давить маркетологов!
А может, не надо?:) Глаза людям открывают всетки.
далее... просветите есть ли какие преимущества у программ написанных с помощью .NET перед теми, что созданы без неё? и будут ли эти преимущества в висте?
возможно у меня появятся еще вопросы - так я добавлю.
P.S. меня не особо интересуют высказывания вроде "Microsoft зло" и т.п.
Ты имеешь в виду .Net весь, или в основном шарп?
далее... просветите есть ли какие преимущества у программ написанных с помощью .NET перед теми, что созданы без неё? и будут ли эти преимущества в висте?
Ну в висте-то вроде, там этому чуть ли не уровне ядра поддержка:) (может, чего путаю).
Ты сам вопрос ставь точнее, скажи, с чем ты кокретно хочешь сравнить .net? с явой?
мощная IDE (кста, если пишешь на С++, то попробуй 2003 студию -- там по сравнению с 6.0 много нового и удобного. на 2005 для С++ ставить бесполезно практически -- только лишней тяжестью машину нагружать)
интеграция с 2005 SQL сервером (можно хранимые процедуры, триггеры, функции на шарпе\бейсике писать)
мощный механизм RTTI
ну да, всё компилируется в Mcro$oft Intermidiate Langage (MSIL) который потом ещё раз "компилируется" во время выполнения.
у программ написаных для платформы .NET (как, впрочем, и для Java) справедлива особенность, которую сложно назвать достоинством или недостатком сходу -- код этих программ выполняется в т.н. "защищённой" среде, где программа не имеет прямого доступа к памяти. что само по себе практически уменьшает до нуля возможность неправильной работы с ней. как следствие -- повышение безопасности и стабильности программ. с другой же стороны если ошибка допущена в самой среде, любая программа в ней работающая рискует на неё напороться. но такие ошибки централизовано исправляются -- выходят апдейты, патчи и т.п.
а вообще, шарп это современный объектно-ориентированый язык. ООП изначально было придумано для облегчения труда прогеров, а не для более эффективной работы самих программ. с этой задачей шарп, помоему, вполне справляется...
P.S.
...хотя я на нём ещё не писАл :)
Причем тут сравнение, автор хочет узнать конкретно про платформу .NET.
Вообще и самому интересно, перспективна ли она, как устоялась и как на долго. Стоит ли вообще переходить на нее?
Хочется спросить у более опытных в этом направлении, т.к. сам еще с ней не работал, и тоже думаю, СТОИТ ЛИ?
Я не жалею, что в свое время работал с этой технологией. Ушел с нее из-за Visual Basic-a который терпеть не могу, но это уже оффтоп.
[quote=Zorkus]Ты сам вопрос ставь точнее, скажи, с чем ты кокретно хочешь сравнить .net? с явой?[/quote]
а что разве непонятно, помоему конкретно спросил:
[quote=kosfiz]просветите есть ли какие преимущества у программ написанных с помощью .NET перед теми, что созданы без неё?[/quote]
P.S. Zorkus я о яве ни строчки не написал, а ты мне все ява, ява.
2All
программы написанные с помощью .NET вроде не работают на системах, где .NET Framework не установлен, тогда возникает вопрос: а можно ли как-нибудь сделать, чтобы не зависило есть ли Framework на машине или нет? и вообще возможно ли это и как это скажется на размере программы? вопрос этот собственно задаю потому что предполагается возможное использование моих программ на машинах без .NET Framework.
Можно для програм на .NET делать инсталляторы и в них встраивать проверку на то, что в системе установлен framework. Инсталятор framework тоже можно добавить в инсталяху твоей программы.
т.е. мне придется тащить весь framework за собой(размер проги+~30 Мб)? а отдельно без инсталлятора можно как-нибудь(ну там файлы какие с собой таскать)? просто у нас в провинции мало у кого framework есть(где то 50%), так что может быть не очень-то удобно. + основная скажем так "организация" где мои проги используется на данный момент вряд ли framework поставит и соответственно мне не разрешат его поставить.
собственно вот вроде один минус и есть(хотя не уверен такой ли уж это и минус), а какие еще есть + и - у .NET?
P.S. те кто работает с .NET скажите почему вы перешли, по какой причине, что вас привлекло?
Зависит от заказчика. Понятливым достаточно прописать в требованиях наличие установленного .NET. Любителям получать откаты с поддержки - непаханое поле для деятельности.
Посмотри на сайте любой популярной программы, использующей .NET. Например, nLite. Хотя, в альтернативном дистрибутиве лежат файлы, требуемые для работы nLite, и не факт, что их окажется достаточно для твоей программы. Недостающие можно добавить опытным путём. Но в начале полезно ответить на вопрос: а оно мне надо?
В последнее время .NET ставится на всё большее количество машин, по мере набирания популярности программами, его использующими. Хоть я и противник лишнего ПО на машине, у меня .NET стоит всё из-за того же nLite.
.NET поставляется на микрочленовском диске с лицензионной Виндой, и его установка часто включена в корпоративный сценарий установки/конфигурирования рабочих мест. 2007-й Офис, кажется, вообще будет требовать .NET в обязательном порядке.
Я не перешёл на .NET, потому что не приемлю эмуляторы. Среду с управляемым кодом можно реализовать по-другому, без каких-либо потерь в скорости вообще, даже теоретических. С этой точки зрения ни Java, ни .NET не являются образцом правильного подхода к решению задачи. И пока есть альтернатива, мой выбор не в пользу .NET.
Че за хрень? Как минимум там стандарт языка лучше соблюдается. Причем сразу заметно )
ЗЫ Сам под нетом не сидел, а вот под VB одно время писал. Выдержал я его чуть больше полугода.
Дот НЕТ - не язык программирования. Поэтому сравнение какое-то нелепое получилось.
И много написано за полгода? А то, что VB это, кроме прочего, и скриптовой язык, вам известно? Между прочим, очень удобный. Нахвататься по верхам и кричать "все казлы, адин я дартаньян" может каждый.
эээ.... ну может погарячился. но первое впечатление от неё было именно такое. а второго уже и не было вовсе :)
по поводу запуска .NET программ без фреймворка -- очередная маничка типа "как запустить джвав приколжение без виртуальной машины". но тем не менее, говорят такая софтина есть -- она вкомпиливает кусок фреймворка прямо в ЕХЕшник и программа работает без посторонних библиотек. если сильно интересно, могу узнать как называется
[quote=kosfiz]а какие еще есть + и - у .NET?
P.S. те кто работает с .NET скажите почему вы перешли, по какой причине, что вас привлекло?[/quote]
И много написано за полгода? А то, что VB это, кроме прочего, и скриптовой язык, вам известно? Между прочим, очень удобный. Нахвататься по верхам и кричать "все казлы, адин я дартаньян" может каждый.
Да я ж не возражаю. Билл Гейтс - гений. Известно, что VB скриптовый язык. И на VBS я писал. Но зачем он нужен? Мало того, что криво работает (хотя могу угадать, что вы скажите: у меня руки не оттуда, ну ладно спорить не буду), так еще и работает только под ИЕ. Оно мне надо? Тоже самое и с .NET. Как я понимаю он будет только под винду (ну не считая майкрософтского FreeBSD и проектов Mono, DotGNU)? Нет, я понимаю, что ей пользуется большинство, но ведь и ИЕ тоже. И кто сказал, что это хорошо?
PS Если дот нет не язык программирования, то что?
VisualBasic Script и VisualBasic разные вещи.... просто названия похожи...
Но зачем он нужен? Мало того, что криво работает (хотя могу угадать, что вы скажите: у меня руки не оттуда, ну ладно спорить не буду), так еще и работает только под ИЕ. Оно мне надо?
Если он существует столько лет и достаточно популярен - значит для чего-то нужен (например вспомним тот же VBA)
не считая майкрософтского FreeBSD и проектов Mono, DotGNU)?
У мелкософт есть своя фря??? Да ну!!! А ссылочку можно-очень хочу посмотреть на это...
Платформа.
Руки у вас растут не знаю откуда, а вот голова, судя по следующей фразе:
- догадываюсь из чего растет. Вы даже не знаете, что такое VBS. Я работаю с ним уже много лет и ни разу не использовал компоненты, работающие с ИЕ. А вы говорите, что он ТОЛЬКО с ИЕ работает. Откровенная глупость.
Кошмар, не разбираться в вопросе, но обязательно "нас..ать" в топике. Если вам действительно интересно, что такое .net, то поищите Гуглом - первые 10 ссылок вам откроют глаза.
PS Тут собственно упоминается о Microsoft FreeBSD
http://ru.wikipedia.org/wiki/.NET
PSS А под какими еще браузерам работает VBS? Или вы имеете ввиду MSOffice? Знаю, что в нем макросы пишут на VB, но сам их оффисом не пользуюсь.
Вы имеете ввиду веб-скрипты. Но это очень маленькая часть возможностей VBS. К тому же - нафик никому ненужная. Я бы сказал, что с помощью VBS можно делать ВСЁ, но это неправда, к сожалению. Нельзя написать программу, как таковую.
может все же про .NET, а не про VBS.
[QUOTE=Wiki]
NET — кроссплатформенная технология, однако в настоящее время существует реализация для платформы Microsoft Windows, FreeBSD (от Microsoft) и ограниченный вариант технологии для ОС Linux в рамках свободных проектов Mono, DotGNU.
[/QUOTE]
Следует читать так: "существует реализация .NET от Microsoft для FreeBSD"
Так вы не о вебе, тогда я умываю руки. Сорри
А дот нет не только для веб-разработчиков создан.
[QUOTE=kosfiz]может все же про .NET, а не про VBS.[/QUOTE]Сорри )) Не сдержался, посчитал нужным возразить )
[quote=kosfiz]а какие еще есть + и - у .NET?
P.S. те кто работает с .NET скажите почему вы перешли, по какой причине, что вас привлекло?[/quote]
ответить желающих нет - странно.
ссылочка интересная. еще один минус .NET, но учитывая вот этот пост 3A3-968M есть и + в том, что
[quote=3A3-968M]А вот что касается использования памяти, то, безусловно .NET может иметь либо такую же оптимальность что и Native либо лучше. Что вобщем, тоже можно доказать.[/quote]
уже интереснее.
Чтоб быть объективным, вот +-сы нета от Троелсен, "C# и платформа .NET" (книжку советую, хотя бы вступление почитать;) там ответы на тему найдешь, но односторонние - он +-сы шарпа и нета описывает подробно):
- Возможности наследования кода (взаимод. сборок нета с бинарниками
обычными)
- Полное языковое взаимодейтствие и единая объектная модель для всех .NET - языков
- Простота развертки (не нужно регистрировать в реестре, например)
P.S. А от себя добавлю минус - GUI там кривоватый (Windows Forms), это лично мое мнение, не навязываю, но раз уж спрашиваешь все +/-:)
Теперь плюсы:
1) Кроссплатформенность (без потребности перекомпилляции исходного кода на другую аппаратную платформу).
2) Автоматическая сборка мусора - париться над выделением и удалением не надо.
3) Взаимодействие с COM и WMI.
4) Секрет .NET: неуправляемые приложения могут вызывать управляемые статические методы классов (MethodAttributes.UnmanagedExport). Сигнатуры управляемых методов распологаются в секции экспорта PE файлов.
5) Технология разработки Web-приложений: ASP.NET
6) Доступ к источникам данных различными способами: ADO.NET, ODBC и OLE.
7) Средства для разработки GUI. Не нравиться Windows Forms - ешьте Microsoft Windows Presentation Foundation.
8) Технология LINQ - поддержка sql-подобного языка запросов на уровне синтаксиса языков программирования. Позволяет использовать запросы к различным данным (включая массивы, строки и перечисления).
9) Динамическая компиляция кода, динамические методы и модули - System.Reflection.Emit рулит.
Ну и минусы:
1) Практически отсутствует доступ к возможностям мультимедия. Средства из System.Media - курям на смех.
2) Сложная система сборки мусора - 3 поколения объектов и невозможность предсказания момента сборки мусора. Из-за этого большой процент от всего времени работы составляет сборка мусора.
3) Только статическая работа с Native DLL и вызов функций из неё (смотрим DllImportAttribute и его ограничения).
4) Средства системного программирования плохо реализованы в конценпции .NET, что говорит о прикладной направленности платформы.
5) Отсутствует доступ средствами .NET к GAC и Native Image Cache. Только через Fusion и Unmanaged Metadata API - что привинчивает приложение к Windows жирными болтами COM.
6) Доступ к аппаратуре практически отсутствует (что обусловленно природой .NET)