LINUX.ORG.RU

Аргумент в поддержку Mono

 ,


0

0

Neil McAllister(InfoWorld), 2 года назад предсказал, что mono умрёт после открытия Java http://www.infoworld.com/article/06/11/20/47OPopenent_1.html. Теперь он признаёт свою ошибку. За это время проект перестал быть просто клоном .Net и стал чем-то значительно большим. Появились проекты, расширяющие mono за пределы платформы Microsoft.

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

С другой стороны, mono - кроссплатформенная система и позволяет запускать приложения на Linux, Macos X, Windows и с минимумом усилий создавать приложения для всех этих платформ.

Кроме этого, mono поддерживает full static compilation - способность компилировать CLR байт-код в двоичный код процессора. Результирующий код не нуждается ни в just-in-time компиляторе, ни в runtime. Это позволило разработчикам игровой платформы Unity использовать mono для разработки игр для Windows и Macos без изменения кода, простой компиляцией на целевую платформу. Кроме того это позволяет запускать двоичный код на iPhone, где невозможен запуск виртуальной машины из-за запрета Apple. Те же возможности использованы для построения игр для Nintendo Wii.

Mono создало cвою нишу и успешно развивается, так как не пытается заменить Java или .Net, а идёт своим путём.

>>> The case for supporting and using Mono

★★★

Проверено: Shaman007 ()

> За это время проект перестал быть просто клоном .Net и стал чем-то значительно большим. Появились проекты, расширяющие mono за пределы платформы Microsoft.

Огласите, пожалуйста, полный список.

kim-roader ★★
()
Ответ на: комментарий от gaa

> Есть оно в бубунте.

Опа. И вправду появились новые версии. В hardy была только версия 1.2, когда релизилась mono 1.9

kim-roader ★★
()
Ответ на: комментарий от st0ke

>контролируемо ли это в моем коде?

контролируемо. Ты это специально сделал. Ты контролировал это. Если бы ты не хотел утечки, то тогда неконтролируемо.

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

>контролируемо. Ты это специально сделал. Ты контролировал это. Если бы ты не хотел утечки, то тогда неконтролируемо.

я не хотел, случайно получилось... так же как и остальные утечки, они случайны.

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

> Про забудешь - Никто не спорит, никакой GC не спасет.

То есть вопрос "А разве управляемый код не избавляет от утечек памяти??" снимается с повестки дня, с ответом "Нет, не избавляет"?

> Все меняется если ты ее потеряешь (перезатрешь указатель например). В управляемом коде GC все уберет

Это значит только то, что в коде с GC (не обязательно управляемом, кстати) меньше возможностей допустить утечку памяти. Но гарантий всё так же нет.

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

и так же как и остальные утечки они тоже в коде и удаляются правкой кода

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

>Это значит только то, что в коде с GC (не обязательно управляемом, кстати) меньше возможностей допустить утечку памяти. Но гарантий всё так же нет.

100% гарантии нет ни где, просто в некоторых языках приходиться городить велосипеды, в некоторых это стандартные возможности языка. А что использоваться, Qt или Mono.. на цвет и вкус как говориться...

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

> anonymous> Нифига себе кое-как... Миллион песен без тормозов

> Не у всех есть компьютер с Core i7 и 8Gb RAM


ага, и миллион честноспизж^H^H^H^H^Hскачанных песен =)

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

>>А где ты видел в Ява кросплатформенность?

>мсье не знает что такое ява?

думаю, мсье слишком хорошо знает что такое ява :(

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

>> mono ./WindowsApp.exe Ещё не хватало всяких-там exe в линуксе!

Соглаен, но это же всего лишь часть имени файла и что его все так не любят))

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

это не всего лишь имя - программы производимые моной работают под досом и пишут "This program cannot be run in DOS mode."

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

>значит это не преднамеренная утечка.

значит "преднамеренная утечка не может существовать" некорректное утверждение, так как получается что утечка сама по себе не преднамеренная, тавтология.

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

>так как получается что утечка сама по себе не преднамеренная

Ну разумеется "преднамеренная утечка не может существовать" потому что "утечка сама по себе не преднамеренная". Я и говорю что "преднамеренная утечка" это оксюморон. Ты же мне показываешь "не утечку" утверждая что показал "преднамеренную утечку". В чём твоя проблема ?

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

О, да... в стране дебилов всегда оригинальные определения...

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

> Все наши споры от того что мы не договорились о точном определении термина "Утечка памяти".

Мы договорились, но некоторые отщепенцы стали придумывать свои определения, и нагружать простую "утечку памяти" еще какими-то "намерениями".

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

>Подобного примера я и ожидал. Это преднамеренная утечка памяти.

А не важно, что оно без шашечек. Важно, что едет :) Важно, что память у системы быстро исчерпывается.

>Причем, как только станет ненужной ссылка на весь массив - всё очиститься.

Да, но эти массивы нужны всё время работы программы. 24/7 :)

>А вот в языках с ручным управлением без использования умных указателей - как массив не удаляй, если память не почистишь - она останется занятой.

Да, там сложнее. У систем с автоматической сборкой мусора с этим проще. Но проблема всё равно остаётся, хотя и в меньших масштабах.

KRoN73 ★★★★★
()

Лучшеб окамл усиленно развивали. А то понаплодят макак, которым формачки с кнопочками мышкой клепать надо и выдавать поделия за ынтерпрайз...

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

st0ke> а это единственная причина использовать яву и моно(.NET)?

Для моно/дотнета - точно нет. Для моно/дотнета среди причин ещё числится заболевание головного мозга.

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

anonymous> Такой компьютер не нужен. Хватит пня 500ого.

Ага. Только тормозить будет mono и гном, да даже KDE3.

Может лучше сразу - на компьютер с Zilog Z80A? А что? Процессор хороший. Только оперативной памяти всего 1Mb держит. Но это не беда - постраничность можно сделать (что и делали), и даже многозадачность на основе этого реализовать.

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

>Только тормозить будет mono и гном,

С какой стати то тормозить то будет? У меня не тормозило. Гтк прекрасно и на более тормозных машинах работает. А уж на пне 500 с 512 памяти тормозов не будет точно. Вот фаекрфокс и pygtk - да, будут тормозить.

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

>> Ну так память, на которую не сделали free, тоже доступна приложению

> Только если потерял ссылку можешь о ней забыть. Она тобой используется, но та не можешь с ней работать.

> Если в Управляемом коде потерять ссылку, то GC (который все помнит и знает) уберет все что ты нагадил

Послушай, тебе показали, что на языке с GC, также как и без него, можно создать такую ситуацию, когда память выделяется, а затем не освобождается. Хотя объекты, ее занимающие, уже не используются. Т.е. память течет.

Если ты пытаешься доказать, что ты прав, то ТЫ - ПРАВ. Нахрена только тебе такая правота?

anonymous
()

как-то всё это пахнет отмазками для тех, кому лень научиться хорошо программировать

Для прототипов такое пойдёт, но делать хороший софт, который будет работать годами, на mono/java/python/etc - это как минимум странно. Если рассчитываемое "время жизни" приложения существенно превосходит время написания приложения на C, то зачем навсегда мириться с тем, что внутри эта прога работает как попало (интерпретация байткода, gc)?

Вердикт - mono и иже с ними нужен для прототипов или школьных поделок

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

> Если рассчитываемое "время жизни" приложения существенно превосходит время написания приложения на C, то зачем навсегда мириться с тем, что внутри эта прога работает как попало (интерпретация байткода, gc)?

Знаешь ли, программисты --- существа ленивые, а менеджеры --- жадные и опасливые. Поэтому писать кучу кода на ц не интересно ни тем, ни другим.

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

Ну, раз mono поддерживает full static compilation то должно.

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

Аргумент не в поддержку Mono

GC не даст памяти вытечь -- он выпьет её сам.

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

>оно нативные бинарники собирает?

Зачем? Чтобы к одной платформе привязаться?

>Оно уже умеет без моно работать?

Зачем? Или ты потребуешь от Java работать без JVM, а от Perl6 без Parrot? :)

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

>оно нативные бинарники собирает? Оно уже умеет без моно работать?

да, моно умеет AOT Compilation

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

> Знаешь ли, программисты --- существа ленивые, а менеджеры --- жадные и опасливые. Поэтому писать кучу кода на ц не интересно ни тем, ни другим.

Да это понятно. Конечно, этим упырям нужно только денег заработать, но тут ведь речь о некоммерческих приложениях. Собственно, именно FOSS подтверждает "ненужность" таких технологий тем, что подавляющее большинство софта написано без их применения :]

Некоторые мои коллеги, столкнувшиеся с .NET очень довольны, типа "накорябал быстро и заказчик доволен, и не падает". Это просто разное восприятие процесса разработки ПО. Я склонен рассматривать программирование как искусство, а не как промышленность. Я думаю со мной многие согласятся, что это очень круто когда ты знаешь что твоя программа работает как часики, ест минимум системных ресурсов (ровно столько, сколько надо для её задачи) и процессор выполняет её инструкция за инструкцией не делая ничего лишнего. Утопия? В любом случае, не самый худший идеал к которому можно стремиться.

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

>>Оно уже умеет без моно работать?

> Зачем? Или ты потребуешь от Java работать без JVM, а от Perl6 без Parrot? :)

Никогда не поставлю на сервер моно. Кстати микрософт какую-то новую бредятину клепают. Уж не сдохнет ли дотнет и моно вместе с ней? Да и паррот с коровой-явой или с квазимодой-моно сравнивать не корректно.

Капча staling как бы говорит, что на создателей этой моны не хватает массовых репрессий.

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

>Никогда не поставлю на сервер моно.

1. А mono в первую очередь ориентирован на десктоп.

2. У меня уже много лет стоит, хотя так до сих пор и не пользуюсь, ну и что? :)

>Капча staling как бы говорит, что на создателей этой моны не хватает массовых репрессий.

Сталин не рисковал всеми яйцами в одной корзинке. Он предпочитал любой вопрос давать решать параллельным группам. От разработки автомобилей до атомной бомбы. Понимал, что конкуренция - рулит. Даже в условиях лагерных шарашек :) Так что он был бы за моно ;)

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

> Я склонен рассматривать программирование как искусство, а не как промышленность. Я думаю со мной многие согласятся, что это очень круто когда ты знаешь что твоя программа работает как часики, ест минимум системных ресурсов (ровно столько, сколько надо для её задачи) и процессор выполняет её инструкция за инструкцией не делая ничего лишнего. Утопия? В любом случае, не самый худший идеал к которому можно стремиться.

Из этого делаю вывод, что тебе интересно не столько решить задачку, сколько писать код. Соответственно, оптимальность выбора инструмента ты заменяешь на "я пишу на C и это Ъ". И поэтому твои творения будут отставать от поделок на перлопитонах как по простоте написания, так и по скорости реализации новых фич и правке багов.

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

> 1. А mono в первую очередь ориентирован на десктоп.

Воот. А окамл мне нужен на сервере. Вместе с ерлангом. А моно не нужен.

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

>Если ты пытаешься доказать, что ты прав, то ТЫ - ПРАВ. Нахрена только тебе такая правота?

Одной из причин создания управляемой модели (хоть Java хоть .NET) являлась борьба с утечками памяти. Ты утверждаешь что GC это полная бесполезность?? и ты прав?

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

> Из этого делаю вывод, что тебе интересно не столько решить задачку, сколько писать код.

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

> Соответственно, оптимальность выбора инструмента ты заменяешь на "я пишу на C и это Ъ". И поэтому твои творения будут отставать от поделок на перлопитонах как по простоте написания, так и по скорости реализации новых фич и правке багов.

Наверное так обычно и бывает :)

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

>именно FOSS подтверждает "ненужность" таких технологий тем

Фосс проги тоже имеют трудоёмкость. Чем легче писать, тем больше прог и фичей. На моно и жабе писать легче. А прог на них нет, потому что они были совсем не FOSS ещё недавно.

>Я склонен рассматривать программирование как искусство,

О да... кодирование кнопочек и табличек с иконками, парсенье иксемела, работа с стандартными api - это большое искусство. Олололо.

Искусство в программировании не зависит от алгоримов а не от языка или ручного освобождения памяти. На сях все пишут только потому что эффективнее. Чёткий несубъективный критерий. Никакого искусства в таком выборе и подавно нет.

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

Мы утверждаем что GC не решает проблему с утечками. Для особо невообразимо тупых идиотов можно добавить - ", полностью".

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

> конечно, без сборки мусора быдло никуда не годно

Еще бы этот сборщик мусора работал адекватно. В .Нет сборщик вообще с багами.

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

> 1. А mono в первую очередь ориентирован на десктоп.

Угу...полный Пэ... Ноут с коре соло о 512 мегах опративы, федора, гном. Фспот тормозит, как будто на пне 1 работает, вентиляторы боюсь порвуться. и это при этом гнум, кеды (и даже 4!!) работают на этом ноуте без заметных тормозов. Фтопку такое "на десктоп". И сра^Wкакать я хотел на крикунов, у котороых "пень 2 и все летает". НИ разу не видел еще ноут без 2ядерного камня, на котором эта херня не тормозила бы по-скотски. А если там томбой еще, а если еще какая х-ня на моне ...

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

Я говорю: фспот - просто некачественный софт. Банши миллион песен тянет на 8 мегабайтах. Твой ход.

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

>Ноут с коре соло о 512 мегах опративы, федора, гном. Фспот тормозит, как будто на пне 1 работает

Или Федора виновата, или 512 памяти. Celeron-1860, 1Гб, Ubuntu. F-Spot летает как нативный :) На прокрутке длинных альбомов (тысячи фотографий) _намного_ быстрее, чем digikam, например.

>и это при этом гнум, кеды (и даже 4!!) работают на этом ноуте без заметных тормозов

Удивительно, учитывая, что у меня 4-е кеды как-то неопрятно по времени отклика работают даже на C2Q-6600/4Гб :)

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

>Я говорю: фспот - просто некачественный софт.

Вполне качественный. Я ещё ни разу не видел, чтобы он тормозил :)

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

>А окамл мне нужен на сервере. Вместе с ерлангом. А моно не нужен.

У меня и то, и другое, и третье стоит. А ещё - Perl, PHP, Python, Ruby, GHC, Lua, Tcl. Вроде, всё вспомнил. Есть не просит. Тебе жалко несколько десятков мегабайт? Когда последний раз в прайсы по HDD заглядывал? :)

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