Стоит ли тратить время на изучение C# и Mono? Есть ли перпективы у этой технологии под UNIX? Хочется найти замену C++ для разработки коммерческих кросс-платформенных приложений...
Есть подозрение, что C# через какое-то время станет основным инструментом для разработки большинства приложений под Windows. Поэтому он предпочтительнее чем другие, может быть и значительно лучшие языки, но которые никогда не будут мейнстримом.
Пока вроде он широкого распространения не получил к щястью. Надеюсь и не получит, ибо коряв без меры. А так - как висуалвасик раньше, фактически его ниша.
Из личного опыта: клинетская часть на C# + gtk# работает без перекомпиляции и в винде и в линуксе. Платформозависмого кода - 4 строчки - определяется под чем работаем и исходя из этого выбираем где хранить конфиг в $HOME/.config или %USERPROFILE%.
В моно конечно далеко не все уже на 100% готово, но то что уже есть - вполне юзабельно. Если не завязываться на WinForms, а юзать gtk# - вполне подходит для рисования кросплатформенной гуйни.
Что в .NET действительно привлекательно - CLR, общая для всех языков.
дивное смешение стилей: там вам и структуры, и указатели, и объекты, и ещё кучя дублирующей друг друга хни, вся скопом производящая впечятление высокой и стройной кучи костылей и подпорок, ничем меж собой не скрепленных. Да и реализации оставляют желать много-много лучшего...
> Есть ли у вас опыт его реального использования?
Вплотную занимался им около двух месяцев, изучял возможность его применения на практике. Однозначный вывод: если _за_такое_ не снимать жывьём шкуру раскалёнными щипцами, утыкав предварительно гвоздми и щедро полив соляным раствором, удерживая во время данного действа за яйтсы при помощью тисков, переламывая при этом одни кости и пиля тупой пилой другие, щедро посыпая тропическими муравьями и делая скипидарные клизьмы, то за что тогда так поступать??? В общем, взвесив все за и против, внимательно обдумав ситуацию, стёр это убогое и глякавое, и с тех пор не трогал каку ибо каку трогать - айяйяй!
> Вплотную занимался им около двух месяцев, изучял возможность его применения на практике. Однозначный вывод: если _за_такое_ не снимать жывьём шкуру раскалёнными щипцами, утыкав предварительно гвоздми и щедро полив соляным раствором, удерживая во время данного действа за яйтсы при помощью тисков, переламывая при этом одни кости и пиля тупой пилой другие, щедро посыпая тропическими муравьями и делая скипидарные клизьмы, то за что тогда так поступать???
у меня возникали совершенно аналогичные эмоции по поводу реализации VFS (Virtual File System layer) в ядре Linux 2.4/2.6 в первые шесть месяцев работы. жестоко терзал лишь один вопрос - как за ЭТО еще не удавили вечерком в подворотне благодарные последователи? впрочем, как и ряда других подсистем.
ничего, время прошло и страсти поутихли, привык. начало даже отчасти нравиться - найти уже готового и квалифицированного разработчика на эту позицию оч сложно :) да и бывало в жизни похуже..
> Есть подозрение, что C# через какое-то время станет основным инструментом для разработки большинства приложений под Windows. Поэтому он предпочтительнее чем другие, может быть и значительно лучшие языки, но которые никогда не будут мейнстримом.
в этом подозрении есть доля правды. правда, в отличии от лоровцев, пользователи C# не ждут с благоговейным трепетом, когда же наконец сдохнут лисп, хаскель, си да и вообще все отличное от.
> правда, в отличии от лоровцев, пользователи C# не ждут с благоговейным трепетом, когда же наконец сдохнут лисп, хаскель, си да и вообще все отличное от.
Есть желание потихоньку уйти с C++ на что-то более "дуракоустойчивое". Вариантов в принципе два - java и C#. Все остальное не мейнстрим и для разработки коммерческих приложений и подходит.
Достоинства Java, на мой взгляд дилетанта, в том, что существует она достаточно давно, есть реальная переносимость.
Достоинства C# - динамичнее развивается, быстрее (???), да и рекламирует его MS из всех сил. Учитывая то, что CLR будет включена в Vista, перспективы радужные. Главный минус = большие (мне так кажется), проблемы с кросс-платформенностью.
> Правильно ли я понял, что в обоих случаях код исполнялся под mono?
Нет. Компилился мелкомягким компилятором и затем под виндой может работать как под родным .NET, так и под виндовой версией mono. Под линуксом - соответсвенно работает под mono.