LINUX.ORG.RU

[не троллинга ради] чем плох дотнет


0

3

Вот, собственно есть разработка всем известной компании, содержащая в себе множество достоинств: выбор языков зависит от личных предпочтений, т.к. работать они будут одинаково(по скорости, по крайней мере), большая стандартная библиотека, легко писать программы. Но ведь в чем-то же есть подвох, раз его так не любят? Единственный недостаток, который я заметил - это обилие синтаксического сахара(обычно я пишу на С). Прошу по пунктам и аргументированно описать его подводные камни.

★★
Ответ на: комментарий от hippi90

А примитивы можно завернуть в объект и так же передавать по ссылке

Да, и это нехорошо. Лишнее время на создание объекта, лишнее время на доступ к полям, лишнее время на уборку объекта.

note173 ★★★★★
()
Ответ на: комментарий от unfo

Его вполне хватит для того, чтобы добрая половина программ для .NET на mono не завелаcь.

А злая половина — это 95% от всех программ на дотнете, я так понимаю.

tensai_cirno ★★★★★
()
Ответ на: комментарий от hope13

а в плане работы как ява, ибо похож.

Да вы что, окститесь. JVM выполняет байт-код, а CLR преобразует IL код метода при первом обращении в машинный. Можно ngen'ом вообще сразу в машинный код все перегнать, но там правда есть ряд ограничений.

Вообще дотнет всем хорош. Единственный минус - он не кроссплатформенный. Моно, к сожалению, плох.

anonymous
()
Ответ на: комментарий от anonymous

А в плане удобства - С# и VB.NET - восхитительны. Правда. Без шуток. Позволяют просто сосредоточиться на решении задачи.

anonymous
()
Ответ на: комментарий от anonymous

хм, да ты прав. я прочитал одно, подумал про другое, написал третье -.-

hope13 ★★★
()

[не троллинга ради] чем плох дотнет

чем-чем, своей кроссплатформенностью

shty ★★★★★
()

Потому, что 99% программ на нем завязаны на эту вашу винду. А еще много софта завязано на особенностях одной всем известной реализации, что делает этот софт неотвязываемым от винды.

В остальном все хорошо.

т.к. работать они будут одинаково(по скорости, по крайней мере)

Бред же. Как раз по скорости будут работать не одинаково.

Deleted
()
Ответ на: комментарий от anonymous

А в плане удобства - С# и VB.NET - восхитительны. Правда. Без шуток. Позволяют просто сосредоточиться на решении задачи.

Согласен. Крестам до C# далеко.

unfo ★★★★★
()
Ответ на: комментарий от Ttt

по определению не могут

весь этот комментарий можно отправлять в палату мер и весов, как эталон заученной программистской глупости

jtootf ★★★★★
()
Ответ на: комментарий от unfo

добрая половина программ для .NET на mono не завелаcь

то же самое касается любой непереносимой библиотеки, на которую завязывается софт - хоть на C#, хоть на Haskell, хоть на C++, хоть на C. драмы из этого, почему-то, никто не делает

jtootf ★★★★★
()
Ответ на: комментарий от netcat

сводит на нет курс шарпа на безопасный доступ к памяти

у любого высокоуровневого языка есть FFI, который делает то же самое. есть, понимаешь ли, случаи, когда без опасного доступа к памяти - никак

jtootf ★★★★★
()
Ответ на: комментарий от unfo

Совместимость у mono и .net никакая

хорошая там совместимость. если не писать изначально под одну платформу, не задумываясь о том, чем пользуешься (COM, например, дёргать), то головняка при портировании будет мало

jtootf ★★★★★
()

Те же притензии, что и к Java - тормозит и жрёт память.

А из-за очень низкого порога вхождения появляется огромное количество быдлокода в приложениях.

KivApple ★★★★★
()

Жосткая завязка на продукцию Microsoft, ну и кнопкодавство, которое приводит к снижению качества программных продуктов и профессиональных качеств разработчиков этих продуктов.

anonymous
()
Ответ на: комментарий от Deleted

Пользуясь случаем, прошу извинить за мистификацию, которую устроил в первый день своей реинкарнации. Настроение было слишком дурашливое, вот и начал чумиться направо и налево. И отдельное спасибо за то, что вспомнил вообще про меня (это я про тему в lor, которую быстро прикрыли). Ты был в единственном числе, остальным, естесственно, было пофиг.

DeVliegendeHollander ★★
()
Ответ на: комментарий от jtootf

Ну хорошо. Одни языки по определению не могут работать так же быстро, как другие, так как при исполнении кода на них машина тратит ресурсы, например, на проверку приведение типов или сборку мусора.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от KivApple

Те же притензии, что и к Java - тормозит и жрёт память.

Брехня... хотя, если посмотреть на некоторые продукты на базе .NET, то можно и такое предположить.

А из-за очень низкого порога вхождения появляется огромное количество быдлокода в приложениях.

Есть такое. Хотя до пыхпыхеров им ещё далековато.

anonymous
()
Ответ на: комментарий от Ttt

по определению не могут работать так же быстро, как другие

вот на этой фразе можно было бы остановиться, потому как она уже неверна. язык и реализация языка - вещи разные

при исполнении кода на них машина тратит ресурсы

при исполнении кода на любом языке машина тратит ресурсы. чтобы она тратила меньше ресурсов, выполняются оптимизации. низкоуровневые языки позволяют выполнить больше низкоуровневых оптимизаций, высокоуровневые - высокоуровневых. делать на этом основании обобщения - дело неблагодарное

проверку приведение типов

не распарсил

сборку мусора

на работу с памятью всегда тратятся ресурсы, и сборщик мусора - всего лишь один из вариантов реализации оной работы

jtootf ★★★★★
()

То что написали аналитики выше по-поводу совместимости — бред. То что в моно нет WinForms и WPF не аргументы ни разу поскольку Win, как говорит КО, онож все таки от Windows, ровно как W в WPF. Аналитики как то забывают, что ежели на Це написать пользуя WinAPI, то работать оно тоже не везде будет.

Касательно всего остального моно работает вполне себе.

ebantrop
()
Ответ на: комментарий от jtootf

проверку приведение типов

не распарсил

Опечатался. Имелось в виду «проверку и приведение».

на работу с памятью всегда тратятся ресурсы, и сборщик мусора - всего лишь один из вариантов реализации оной работы

Ну одно дело, когда машина только удаляет данные из кучи по free() и из стека по завершению функции, а другое — когда отслеживает, может ли этот объект быть использован в будущем, или же его нужно удалить.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от DeVliegendeHollander

:D А ведь неплохо получилось закосить под новичка :) (я и не понял, что это ты, пока аннойнимус не намекнул :))

Ты был в единственном числе, остальным, естесственно, было пофиг.

Подозреваю, что я единственный такой слоу, что не просек твоего возрождения под новым ником :) Хотя да, на ЛОРе всегда ведь всем как обычно :)

Deleted
()
Ответ на: комментарий от Deleted

Подозреваю, что я единственный такой слоу, что не просек твоего возрождения под новым ником

Точно не помню, но кажется мне, что твой пост появился пораньше, чем я реинкарнировал. Но в любом случае thnx.

DeVliegendeHollander ★★
()
Ответ на: комментарий от jtootf

хорошая там совместимость. если не писать изначально под одну платформу, не задумываясь о том, чем пользуешься (COM, например, дёргать), то головняка при портировании будет мало

Лучше вообще не связываться с .net/mono :)

unfo ★★★★★
()
Ответ на: комментарий от ebantrop

То что в моно нет WinForms и WPF не аргументы ни разу поскольку Win, как говорит КО, онож все таки от Windows, ровно как W в WPF

Но тем не менее, WCF (Windows Communication Foundation) в моно имеется.

Итог: моно не угнаться за .net, поэтому у .net не будет кросплатформенности => линуксам это не нужно.

unfo ★★★★★
()
Ответ на: комментарий от Ttt

только удаляет данные из кучи по free() и из стека по завершению функции

это далеко не всегда хорошо :)

отслеживает, может ли этот объект быть использован в будущем, или же его нужно удалить

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

jtootf ★★★★★
()
Ответ на: комментарий от unfo

Лучше вообще не связываться с .net/mono :)

ну, тут уже сложнее. хотя для большинства случаев я предпочту GHC, в некоторых областях mono всё же имеет ряд преимуществ (и благодаря CLR, и благодаря набору прикладных библиотек)

jtootf ★★★★★
()
Ответ на: комментарий от unfo

WCF совсем частично.

моно не угнаться за .net, поэтому у .net не будет кросплатформенности

Моно и не надо гнаться. CLR работает. То что люди пилят потихоньку библиотеки виндовые это их дело. Для многих вещей есть открытые аналоги, которые работают везде. Кроме того есть моно под iOS и андроид.

линуксам это не нужно

А что нужно линуксам?

ebantrop
()
Ответ на: комментарий от ebantrop

Я может что-то пропустил, но как же:

13 мая 2008 года API Mono System.Windows.Forms 2.0 была завершена (содержала 100% классов, методов и т.д. из Microsoft System.Windows.Forms 2.0); также System.Windows.Forms 2.0 естественым образом работает и на Mac OS X.

hippi90 ★★★★★
()
Ответ на: комментарий от ebantrop

А что нужно линуксам?

А на эту тему лучше создать опрос :)

unfo ★★★★★
()
Ответ на: комментарий от hippi90

Ну кабэ да, есть такое. Только работает оно условно. К слову, на OSX работает оно весьма неестественным образом: а именно тупо прибито через эмуляцию иксов, а Qt работает естественно.

ebantrop
()
Ответ на: комментарий от anonymous

Нублишко, ты хоть понял, что сказал? Какой к чёрту _синтаксический сахар_ в платформе, мать её?

Очень зудит крутизна, надо куда-нибудь выплеснуть в форме хамства?

ak369260
()
Ответ на: комментарий от anonymous

JVM выполняет байт-код, а CLR преобразует IL код метода при первом обращении в машинный.

Про JIT-компиляцию в JVM старшие товарищи тебе еще не успели рассказать?

При таком уровне знаний лучше уровень понтов и гонор резко снизь, а то смешон.

ak369260
()

http://www.linux.org.ru/view-news.jsp?tag=flowchartbuilder

Я забросил свой проект, но не об этом сейчас. А о том, что он со второй попытки без проблем завёлся на mono, хотя разрабатывался исключительно под винду. Для GUI юзал WinForms.

Первая попытка была неудачной - потому что наткнулся на единственное встреченное мною различие между реализациями BCL в .NET и mono. Не помню точно подробностей, но суть в том, если не ошибаюсь, что в активаторе, кажется, в методе CreateInstance в .NET можно в качестве аргументов для конструктора создаваемого объекта передавать как null, так и пустой массив, что будет иметь одинаковый смысл, а в mono - только пустой массив, а с null - валится.

anonymous
()
Ответ на: комментарий от DeVliegendeHollander

Еще до того, как он создал свой топик, я напомнил о тебе Синусу в конфе radiolor@conference.jabber.ru Так что, зря ты так)

netcat ★★
() автор топика
Ответ на: комментарий от DeVliegendeHollander

Просто ссыкотно как-то, что он захватит все и каждый школьник, радостно выпучив зенки, пойдет писать программы. И нафига я пять лет пыжился, если любой менее интелектуальный товарищ, выучив шарп, будет выдавать себя за программиста(чего я даже не делаю)?
А сейчас будет баттхерт.
Недавно я на школьной конференции представлял свою прогу, написанную на C+Python. В жюри сидели 2 информатички и учительница по ОБЖ(!!!!11111). В итоге первое место дали старшекласснику, который написал тесты для школоты на дельфях(на мой вопрос, почему делфи, он ответил, что потому, что он проходил их на информатике). Чтобы забить тесты в программу, учитель должен в специальный текстовый файл добавить такую запись:

Сколько дерьма может сгенерировать носорог?
endquestion
20 килограмм
30 килограмм
да мне пофиг
end
Жюри ему сказало, что учитель с этим не справится, он замялся. А мне дали второе место, сказав что нифига не поняли(с трибуны). Я же выбирал язык, исходя из задачи, а не «что знаю, на том писал». Тупизм.

netcat ★★
() автор топика
Ответ на: комментарий от netcat

учитель должен в специальный текстовый файл добавить такую запись

Прикольно, на дельфях, а сделать редактор для своего поделия не догадался.

А мне дали второе место, сказав что нифига не поняли(с трибуны)

У меня что-то похожее было на защите диплома. Они поняли, что я написал, но никто и вопроса не задал, почему это реализовано так, а не и не иначе.

cipher ★★★★★
()

Для меня плох исключительно отсутствием WPF в mono, и неудобством GTK#. Что C#, что F# очень приятные языки для разработки, и библиотеки довольно хороши

anonymous
()
Ответ на: комментарий от cipher

Прикольно, на дельфях, а сделать редактор для своего поделия не догадался.

Я о том и говорю. И использовал бы лучше sqlite, а не собственный велосипедный формат.

У меня что-то похожее было на защите диплома. Они поняли, что я написал, но никто и вопроса не задал, почему это реализовано так, а не и не иначе.

А учителя информатики о python и c даже и не слышали. Делфи, делфи, делфи. Ненавижу.

netcat ★★
() автор топика
Ответ на: комментарий от KivApple

Кстати, хотел спросить, есть народ на сервере? Я заходил 2 дня назад, там только 2 бота было. И да, что это за аватарки такие? Пол-ЛОРа с такими ходят.

netcat ★★
() автор топика
Ответ на: комментарий от Ttt

Та часть , которая должна работать быстро - реализуется на чем-нить менее тормозном и «родном». Отличный пример - сервисы citrix. Там и тормозная java, и однопоточный ocaml, и быстрый низкоуровневый c.

Ну это я Вас прокомментировал дабы у топикстартера не создалось ложного впечатления, что «там просто питец тормоза».

malbolge ★★
()
Ответ на: комментарий от ak369260

Это анонимус, чего ты хочешь.

netcat ★★
() автор топика
Ответ на: комментарий от beka

Читал в ЖЖ пару лет тому назад, как немцы сделали матчер регулярных выражений с линейным временем выполнения в зависимости от входной строки

В линейное время? С backreferences? Реквестую прфулинк.

invy ★★★★★
()

чем плох дотнет

Тем что на линуксе нет и не будет WPF.

Пробегся по треду... «Патенты», «вендоры» «тормоза» - это все конечно же плохо теоретически. Лишь теоретически. На практике про патенты+вендора талдычат те кто к моно не имеет отношения, про тормоза - талдычат плюсоводы, что тоже не авторитетно, если речь идет от дотнете и прочих jit-компилируемых платформах.

Из плохого - см. !unfo - часть программ действительно «не заводится», Вероятно, потому что путается переносимость по MSIL (коя наличествует) с переносимостью по библиотекам (коей нет, и не было), а, может быть, еще и потому, что неясно назначение утилиты MoMA :)

malbolge ★★
()
Ответ на: комментарий от netcat

Просто ссыкотно как-то, что он захватит все и каждый школьник, радостно выпучив зенки, пойдет писать программы. И нафига я пять лет пыжился, если любой менее интелектуальный товарищ, выучив шарп, будет выдавать себя за программиста(чего я даже не делаю)?

Наверное для того, чтобы управлять этими менее-интелектуальными товарищами? Кто-то же должен их бить по рукам, чтобы не лячкали говнокод :)

invy ★★★★★
()
Ответ на: комментарий от netcat

Сам виноват. Нужно делать презентацию к своей работе настолько понятной, чтобы смог разобраться очень далекий от темы человек, но при этом и понимающие люди не скучали.

note173 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.