Стоит ли разрабатывать программы на Mono?
Известный популяризатор C# и Mono Мигель де Икаса выступил на конференции AltDevConf, где призвал разработчиков игр активнее использовать C#.
Свое ораторское выступление Мигель начал с традиционных слов о том, что софт на .NET можно запустить на большом количестве платформ: Linux, Mac OS X, PlayStation 3, Apple iOS, Android и Windows. Программа пишется один раз и работает везде.
Затем Мигель призвал активнее использовать Mono в разработке игр, указывая на технологические преимущества платформы .NET. По его мнению, «жизнь слишком коротка», чтобы ее тратить на поиск утечек памяти и прочую отладку. C# и Mono ограждает разработчика от низкоуровневого программирования.
Мигель уверен, что разработка на C/C++ требует больше времени, чревата ошибками и сбоями. C# сокращает время разработки, в то время как производительность работы программы падает «всего» на 10-50%.
Восторг и оптимизм Икасы не разделяет другой известный агитатор — Ричард Столлман, который давно предупреждает, что Microsoft может легко перевести свободную реализацию .NET на нелегальное положение. Тогда весь написанный софт потеряет свою свободу. Более того, даже дистрибутивы, в которые включены программы на Mono, могут оказаться в центре патентных войн.
Комментарии
MrBison
14 февраля, 2012 - 05:42
>> Microsoft может легко перевести свободную реализацию .NET на нелегальное положение.
Хоть Mono и нарушает некоторые патенты Microsoft, о том, что это так опасно, говорить рано.
Неоткрытые под Community Promise патенты Microsoft покрывают только те части Mono, которые необходимы для совместимости с Windows-софтом (вроде WinForms). Написанный изначально для Mono и линуксов сишарповый софт этих патентов не нарушает.
pomodor
14 февраля, 2012 - 14:34
Так и с Андроидом было. «Хоть Android и нарушает некоторые патенты Microsoft, о том, что это так опасно, говорить рано». Потом Андроид стал популярен и MS начала доить производителей девайсов. Как только на Mono будет написана "критическая масса" достойных приложений, доить начнут и разработчиков на Mono. Нельзя же не учиться на ошибках. ;)
MrBison
14 февраля, 2012 - 16:42
Вы второй абзац забыли. В случае атаки со стороны Microsoft разработчики Mono просто спокойно удалят нарушающую патенты функциональность, относящуюся к совместимости с виндой. Виндовый софт (который и сейчас далеко не всегда под Mono работает) отпадёт, а написанный для линукса и конкретно Mono -- останется.
pomodor
14 февраля, 2012 - 16:58
Если бы все так было просто, то и из Андроида "спокойно удалили бы нарушающую патенты функциональность". Во-первых, сразу "найдутся" новые патенты, во-вторых, даже если и не найдутся, доказывать лицензионную чистоту придется в суде, а судиться с MS финансово обременительно даже для средних компаний, не говоря уже про сообщества энтузиастов. Не проще ли сразу в это все не вляпываться, чем потом переписывать софт и ходить по судам?
Чингачгук
14 февраля, 2012 - 07:16
>> C# сокращает время разработки, в то время как производительность работы программы падает «всего» на 10-50%.
Всего-то на 50%, подумаешь, фигня какая. :) Одна эта фраза должна отпугнуть разработчиков от использования С#.
Есть не мало кросс платформенных Си-библиотек, например Qt, которые не сокращают производительность, а компилируются в обычный (обычный для выбранной ОС) машинный код. Qt сам пользуюсь, отличная библиотека, производительность не уступает обычным программам на C++ (скажем на библиотеках Visual Studio).
А для интернет игр - PHP или java.
MrBison
14 февраля, 2012 - 08:54
>> Всего-то на 50%, подумаешь, фигня какая. :) Одна эта фраза должна отпугнуть разработчиков от использования С#.
Если серьёзно, то некоторые фанаты .NET заявляют, что написанные на C# программы оптимизируются лучше, чем написанные на C/C++. То есть в результате программа может работать ещё быстрее, чем если бы она была написана на C/C++.
Впрочем, я не знаю насчёт того, как производительность Mono сравнивается с производительностью родного MSовского фреймворка.
(П.С. ИМХО, было бы неплохо увидеть на этом сайте кого-нибудь, кто достаточно разбирался бы в мелкомягких технологиях).
pomodor
14 февраля, 2012 - 14:45
На то они и фанаты, чтобы руководствоваться не здравым смыслом, а эмоциями. А здравый смысл подсказывает, что если имеется две одинаково хорошо оптимизированные программы, то быстрее будет работать та, которая исполняется на физическом процессоре, чем та, которая работает в виртуальной машине.
Но справедливости ради нужно отметить, что хорошо оптимизированные программы никому не нужны. Разработчикам выгоднее сократить цикл разработки, быстрее вывести программу на рынок и начать рубить бабло. Производителям оборудования выгодно чтобы пользователь пользовался медленным софтом, ведь тогда юзер охотнее пойдет покупать новый комп.
MrBison
14 февраля, 2012 - 16:45
>> А здравый смысл подсказывает, что если имеется две одинаково хорошо оптимизированные программы, то быстрее будет работать та, которая исполняется на физическом процессоре, чем та, которая работает в виртуальной машине.
Я с этим не сомневаюсь. Дело тут в том, что дотнетовский MSIL достаточно низкоуровневый, чтобы легко транслироваться в исполняемый на конкретном процессоре код.
>> Но справедливости ради нужно отметить, что хорошо оптимизированные программы никому не нужны. Разработчикам выгоднее сократить цикл разработки, быстрее вывести программу на рынок и начать рубить бабло.
И тут .NET им помогает, позволяя достичь достойного уровня оптимизации без лишних усилий.
>> Производителям оборудования выгодно чтобы пользователь пользовался медленным софтом, ведь тогда юзер охотнее пойдет покупать новый комп.
Я не думаю, что все разработчики ПО пишут медленный софт именно в целях сотрудничества с производителями железа. Иначе бы разница между скоростью работы Windows и GNU/Linux была бы намного выше.
pomodor
14 февраля, 2012 - 17:15
Я это и не утверждал. Я утверждаю, что разработчикам выгодно сократить затраты на разработку софта. Как говорится, сэкономить — значит заработать. Если в системных требованиях можно написать что угодно, то зачем тратить собственные средства на оптимизацию? С другой стороны, такой подход не может не радовать производителей оборудования. Сотрудничества нет, есть положение дел, которое устраивает обе стороны.
botman
19 февраля, 2012 - 10:56
Очень сильно вы боитесь .NET, как я погляжу... при этом Qt на развесистых классах вам видится таким эффективным что прямо сказка, ничего что перед использованием нужно расписать включение рулонов бесполезного кода а стилистика его будет как у древней Visual Studio 6, и при этом нужно не забывать использовать, там где нужно, вместо стандартных классов Qt GObject. Мечта... Не зря, всё-таки, развивают язык Vala - хоть какая-то альтернатива Mono.
Комментировать