Информация об изменениях

Сообщение Re: Аналог C# в Линуксе от 23.04.2020 20:55

Изменено 23.04.2020 21:07 velkin

Re: Аналог C# в Линуксе
Здравствуйте, Кондраций, Вы писали:

К>1. Правильно понимаю, что ныне, разрабатывая на C# + Студия, можем поиметь программы (как правило, всё с БД работает), работающие под линукс? Это с какой версии студии? На какой .NET целиться?


Нет, не правильно. Лучше так не думать, иначе потом можно пожалеть.

Один из вариантов запуска приложений .NET в GNU/Linux это Mono.

После заключения Microsoft договорённости с компанией Novell платформа Mono была официально признана реализацией .NET на Unix-подобных операционных системах (Linux, Mac OS X и других). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API.


Мало того, что программы на оригинальном .NET в Windows работают не так как в Mono, так ещё и Microsoft не помогает, а лишь мешает. Иными словам нужно изначально разрабатывать и тестировать приложение для Mono, а не просто запускать случайное в надежде на то, что оно будет правильно работать.

Другой вариант Wine. Не знаю как у других, у меня нормально срабатывает Wine32. Я особо не заморачивался с изучением Wine64, но Wine32 как правило работает без проблем, а Wine64 с проблемами. И вот на этот Wine32 нужно как-то накатить .NET версии Windows. Тогда приложение .NET вполне может работать. Тем не менее это не удобно для пользователя.

Всякие виртуальные машины, контейнеры и прочее, это уже извращение, смысл тогда уходить с Windows, чтобы запустить её из GNU/Linux.

Итого в GNU/Linux прекрасно будут работать кроссплатформенные приложения написанные на языках C/C++, Java, PHP, Ruby, Python, Lua и многих других, попсовых, редких, экзотических, но вот на .NET нет. Это то, что не рекомендуется для GNU/Linux или кроссплатформенности.

К>2. На случай, если решат, что .NET тоже вражеская приблуда, то какие аналоги Студии + C# можно использовать можно использовать в Линуксе? Хотелось бы что-то с строготипизированное, относительно не сложное, с библиотечками, с отладчиками и т.п. Цель: программы на десктоп и web-приложения.


Никакие. Или никакие. А может быть никакие?

Для примера у меня из репозитория Debian 9 установлен MonoDevelop. Созданное визардом приложение даже запускается.
using System;
using Gtk;

namespace New
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Application.Init ();
            MainWindow win = new MainWindow ();
            win.Show ();
            Application.Run ();
        }
    }
}

Риторический вопрос, а что такое "using Gtk;". Так-то можно компилировать программы на C# из командной строки, для этого не нужна IDE. Вопрос здесь в надёжности всего этого.

Уходить так уходить, нужно полностью отказываться от .NET. Если по техническим причинам это невозможно, то вот так Microsoft и ловит доверчивых лопухов. Захочешь, а не слезешь.
Re: Аналог C# в Линуксе
Здравствуйте, Кондраций, Вы писали:

К>1. Правильно понимаю, что ныне, разрабатывая на C# + Студия, можем поиметь программы (как правило, всё с БД работает), работающие под линукс? Это с какой версии студии? На какой .NET целиться?


Нет, не правильно. Лучше так не думать, иначе потом можно пожалеть.

Один из вариантов запуска приложений .NET в GNU/Linux это Mono.

После заключения Microsoft договорённости с компанией Novell платформа Mono была официально признана реализацией .NET на Unix-подобных операционных системах (Linux, Mac OS X и других). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API.


Мало того, что программы на оригинальном .NET в Windows работают не так как в Mono, так ещё и Microsoft не помогает, а лишь мешает. Иными словам нужно изначально разрабатывать и тестировать приложение для Mono, а не просто запускать случайное в надежде на то, что оно будет правильно работать.

Другой вариант Wine. Не знаю как у других, у меня нормально срабатывает Wine32. Я особо не заморачивался с изучением Wine64, но Wine32 как правило работает без проблем, а Wine64 с проблемами. И вот на этот Wine32 нужно как-то накатить .NET версии Windows. Тогда приложение .NET вполне может работать. Тем не менее это не удобно для пользователя.

Всякие виртуальные машины, контейнеры и прочее, это уже извращение, смысл тогда уходить с Windows, чтобы запустить её из GNU/Linux.

Итого в GNU/Linux прекрасно будут работать кроссплатформенные приложения написанные на языках C/C++, Java, PHP, Ruby, Python, Lua и многих других, попсовых, редких, экзотических, но вот на .NET нет. Это то, что не рекомендуется для GNU/Linux или кроссплатформенности.

К>2. На случай, если решат, что .NET тоже вражеская приблуда, то какие аналоги Студии + C# можно использовать можно использовать в Линуксе? Хотелось бы что-то с строготипизированное, относительно не сложное, с библиотечками, с отладчиками и т.п. Цель: программы на десктоп и web-приложения.


Никакие. Или никакие. А может быть никакие?

Для примера у меня из репозитория Debian 9 установлен MonoDevelop. Созданное визардом приложение даже запускается.
using System;
using Gtk;

namespace New
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Application.Init ();
            MainWindow win = new MainWindow ();
            win.Show ();
            Application.Run ();
        }
    }
}

Риторический вопрос, а что такое "using Gtk;". Так-то можно компилировать программы на C# из командной строки, для этого не нужна IDE. Вопрос здесь в надёжности всего этого.

Уходить так уходить, нужно полностью отказываться от .NET. Если по техническим причинам это невозможно, то вот так Microsoft и ловит доверчивых лопухов. Захочешь, а не слезешь.

P.S. Лучший аналог .NET на C++ это Qt и это не только GUI. Есть несколько вариантов хуже, касательно GUI — wxWidgets, GTK+, Tcl/Tk и так далее. Можно перейти на Java, я в ней не разбирался, раньше вроде там был Swing. Всё это касалось десктопов, а веб и так кроссплатформенный за счёт серверов написанных на Си (apache, nginx, lighttpd), то есть в реальности это сервера кросссплатформенны, а программы на веб языках получают эту возможность за счёт Си. Опять же про решения от Microsoft для веба не говорю, тот кто на них пишет, пусть сам и разбирается, что там у них с ASP.NET и ADO.NET.