Не мое, но интересное ...
Это хорошо известный пример из http://en.wikipedia.org/wiki/Obfuscated_code (автор: Джеймс О. Коплиен):
#include
main(t,_,a)char *a;{return!0
«Хотя На первый взгляд, неразборчиво, это легальная программа на Си, которая при компиляции и запуске сгенерирует 12 стихов «12 дней Рождества» и содержит все строки, необходимые для стихотворения, в зашифрованном виде, вставленном в код. 12 дней показывают, что ему нужно ».
Это не выиграет гольф, хотя, это около 830 байтов.
A high-level status: mono-project.com/Plans
API status: go-mono.com/status
In case you want to migrate an existing app to Linux: MoMA
I also think it would be a better idea to ...
A summary from my short experience:
For news and stuff, follow Miguel's blog at tirania.org/blog/
I'd say it's come a long way if it can support development of a game creation engine like Unity, which was used to develop Sims 3, among other things. Also, the Mono team is in some ways beating Microsoft at their own game, creating things like a static linker so that .NET code can run natively on the iPhone, and a C# REPL console.
For what it's worth, I've been playing with it on the ASP.NET side, and though there were a few bumps, it has been a very positive experience. I was able to get an ASP.NET MVC app running using NHibernate and MySQL.
The current mono implementation (2.4) is quite good in terms of .NET 2.0 compilance (and some of the libraries from 3.5, like ASP.NET MVC or LINQ), but is still far away from generic .NET 3.0/3.5. If your application is designed using winforms, and does not use much from the .NET 3.0/3.5, then you have good chances that it'll work with mono. Of course there will be some parts of the .NET 3.5 framework that will probably be never supported, like WPF.
There is a Migration Analyzer on the mono page which can pinpoint you whether your application will run probably fine, or not under mono 2.4.
The mono website states that the following C# 3.0 features are supported:
По моему опыту работы с областью оконных форм, компоненты .NET 2.0 работают хорошо. Чем сложнее программное обеспечение, тем больше у вас будет проблем. Есть вещи, которые нужно изменить, чтобы заставить их работать. Такие вещи, как разделители путей. Кроме того, некоторые элементы управления Win Forms ведут себя по-разному, такие мелочи, как порядок запуска события, подкрадываются к вам. Вы должны все протестировать, вы обнаружите проблемы, как и в Java. Вы найдете проблемы во всех перестановках Win / Mono и Linux / Mono, также у Mono есть ошибки, которые не исправлены, что может быть препятствием для показа.
Вы можете использовать инструмент MOMMA для поиска известных проблем, но он не обнаруживает все. http://www.mono-project.com/MoMA
Отладка выполняется очень медленно, а настройка среды отладки затруднена.
Я, но я думаю, что для .NET 3.0 это еще слишком рано , если вы не делаете это для развлечения.
По моему опыту, специальные элементы управления, такие как datagridview, прошли долгий путь. Они достигают этого, но еще не полностью.
Я разрабатываю небольшое приложение OpenGL, используя библиотеку OpenTK. Это приложение при запуске в Windows и Mono в основном одинаково, но такие вещи, как datagridview, кажутся немного случайными в реализации. Выберите последнюю версию моно, и все будет в порядке.
На мой взгляд, различия теперь незначительны, без каких-либо проблем (кроме, возможно, отладчика). Однако в Monodevelop отсутствуют хорошие инструменты рефакторинга, которые есть в VS.