Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > На чем писать программы чтоб работали везде


Автор: Abyx 2.5.2010, 18:01
На каком языке\какой платформе писать программы, чтобы они работали не только у меня на компе, а еще и на компе у пользователя, у которого стоит голая винда, в худшем случае (winXPsp3)
Также допустим, мне удастся убедить пользователя, что ему надо установить .NET 3.5 (включает в себя .NET 2.0).

Вот например есть хороший и удобный язык Python. Но чтобы программы на нем работали, надо либо ставить питон, либо таскать с ним кучу дллок. Даже IronPython который вроде бы "компилит в MSIL", на самом деле требует чтобы с программой распространялись сами дллки IronPython'а, и все используемые модули библиотеки питона.

Итак, на чем писать программы, чтобы было быстро и удобно (как на том же питоне), но и чтобы они работали везде?
Неужели C# - это лучшее что у нас есть? =\

Автор: kemiisto 2.5.2010, 18:22
  • Я так и не понял, на "голой" Windows или нет? Ремарка про .NET 3.5 сбивает с толку.
  • Если таки на голой - C/C++/Delphi + Win API, Delphi / C++ & MFC/Qt/whatever со статической "линковкой".
  • Про Python - опять не понял. Какую кучу ты там собрался таскать? Почему можно заставить пользователя установить .NET Framework, но нельзя заставить установить Python?

Вопрос задан отвратно. В таком виде ответить невозможно... Критериев чётких нет, что пишем не указано, что не так с C# - тоже тайна... 

Автор: Abyx 2.5.2010, 19:03
kemiisto, 
ок, повторю вопрос еще раз.

Надо написать программу.
Она должна работать на максимальном количестве компов, иметь небольшой размер и ее должно быть удобно и быстро писать.

Например если писать на асме, то программа будет работать везде, и иметь минимальный размер, но писать на асме неудобно и небыстро.
Если писать на питоне, то программа будет работать только там где может быть питон, иметь размер питона, зато будет писаться удобно и быстро.

Очевидно надо искать компромиссное решение.
Допустим, у большинства пользователей .NET уже установлен, т.к. он нужен многим другим программам, по этому можно считать что программа может писаться под .NET, т.к. большинству пользователей ничего ставить не надо.
Также допустим что размер не минимальный, но для программы строк в 500, размер должен быть порядка 500Кб, но не 5Мб.
Быстрота написания наиболее субъективный вопрос, по этому будем считать что программа должна работать с сетью (бинарные данные),  делать обработку строк, и иметь ГУЙ в виде пары диалоговых окон. Очевидно что обработка строк на С - гораздо сложнее чем на C#.

Итак, какие есть варианты:

С++, диалог на winapi, сеть через boost.asio, работа со строками с помощью boost.regexp 
- писаться будет небыстро, модифицироваться тоже небыстро, зато все нативное и размер файла небольшой.
Если заменить диалог на winapi на Qt - размер значительно увеличится, а выгоды... хз.

Та же задача на С# потребует меньше кода, меньше времени, и меньший размер файла.

Та же задача на питоне потребует совсем мало кода (в основном проблема в ГУЙ),
но пользователю придется либо ставить питон, а для GUI на PyQt ему надо будет поставить Qt и PyQt,
либо размер проги вырастет до размера используемых библиотек питона, если использовать cx_freeze (или py2exe).

Автор: kemiisto 2.5.2010, 19:46
Цитата(Abyx @  2.5.2010,  20:03 Найти цитируемый пост)
Очевидно надо искать компромиссное решение.

Abyx, твоя беда в том, что ты не ишешь компромиссное решение. smile Ведь
Цитата

Компроми́сс — понятие из области этики, права — разрешение некой конфликтной ситуации путём взаимных уступок.

Ты же не хочешь уступать ни в чём. Тебе хочется и рыбку съесть, и ... Такого не бывает. Точнее, у тебя как в том анекдоте про ресторан:
Цитата

Мы можем обслужить Вас:

  • Быстро.
  • Качественно.
  • Недорого.

Выберите 2 опции из 3-х.

 smile 

Цитата(Abyx @  2.5.2010,  20:03 Найти цитируемый пост)
Она должна работать на максимальном количестве компов, иметь небольшой размер и ее должно быть удобно и быстро писать.

Решай уже. В одном из этих 3-х пунктов ты должен уступить. Иначе никак. Расставляй приоритеты.

Всё остальное ты правильно описал. Все эти решения являются компромисными. Только уступки разные. 

Автор: Abyx 2.5.2010, 20:08
kemiisto, я в этой теме хочу получить отзывы о различных языках, и выбрать себе подходящий язык.

Например мне очень понравилось писать на питоне3к, но он не подходит т.к. проги на нем тянут много зависимостей.
Я услышал что есть IronPython который вроде бы "компилит в MSIL", но оказалось библотеки он статически не компилит, и по этому тянет столько же зависимостей.
Еще есть Jython, который я еще не смотрел но мне почему-то кажется что там будут много мегабайтные jar'ы

Есть функциональные языки, про которые тоже говорят что на них удобно писать, но нигде не говорится какие при этом будут зависимости у программы.
Скажем, требуют ли F# или Nemerle чтобы пользователь ставил себе их рантайм, или они обходятся только тем что есть в .NET ?

Автор: Logo 2.5.2010, 20:50
Если под "везде" подразумевается windows, то чем не устраивает Delphi?

Автор: Abyx 2.5.2010, 20:55
Logo, Delphi не устраивает по религиозным соображениям (шутка).
Язык конечно хороший, но я просто *не хочу* на нем писать. На C++ Builder тоже.

Добавлено @ 20:56
и да, под "везде" подразумевается именно windows, в никсах проблемы с зависимостями прог нет.

Автор: qweqwe 2.5.2010, 21:11
Цитата(Abyx @  2.5.2010,  19:03 Найти цитируемый пост)
Она должна работать на максимальном количестве компов, иметь небольшой размер и ее должно быть удобно и быстро писать.

веб приложение smile 

Автор: Abyx 2.5.2010, 21:17
qweqwe, согласен, если не надо работать с системой, то js+html это часто очень хорошее решение.

Автор: qweqwe 2.5.2010, 22:52
если надо работать с системой, то придется так или иначе учитывать особенности каждой поддерживаемой системы

Автор: A5uKa 4.5.2010, 09:22
BOO

Добавлено через 36 секунд
ftw  smile 

Автор: Abyx 4.5.2010, 10:26
A5uKa, и какие зависимости у прог на Бу?

заодно расскажи какие зависимости у немерле, раз у тебя подпись такая)

Автор: A5uKa 4.5.2010, 13:08
Цитата(Abyx @ 4.5.2010,  10:26)
A5uKa, и какие зависимости у прог на Бу?

заодно расскажи какие зависимости у немерле, раз у тебя подпись такая)

.NET || Mono

Автор: Abyx 4.5.2010, 14:18
надо будет посмотреть.

Автор: IgorIV 4.5.2010, 19:26
A5uKa, можно пример программы на Nemerle?

Автор: qweqwe 4.5.2010, 19:31
У Nemerle нет будущего, %username%

Автор: Abyx 4.5.2010, 19:38
qweqwe, обоснуй

Автор: IgorIV 4.5.2010, 21:14
qweqwe, так же как и у PHP smile
Можно просто пример показать?
С java знаком - азареус
NET - MeGUI
Или нет конктретного примера?

Автор: A5uKa 6.5.2010, 10:57
Цитата(IgorIV @ 4.5.2010,  19:26)
A5uKa, можно пример программы на Nemerle?

Код

        [DataObjectMethod(DataObjectMethodType.Delete, true)]
        static public DeleteMember(UserName : string) : void 
        {
            unless (conn.State==ConnectionState.Open) conn.Open();
                def cmd = SqlCommand("FlowClientDeleteUserSubjects '"+UserName+"'", conn);
                MsgBox.Show
                (
                    try
                    {
                        _=cmd.ExecuteNonQuery();
                        _=Membership.DeleteUser(GetUserName(), true);
                        "Пользователь " + UserName + " удалён"
                    }
                    catch
                    {
                        | e is SqlException => e.Message
                        | _ => "Ошибка при удалении пользователя, повторите операцию"
                    }
                    finally { conn.Close(); }
                )
        }


п.с. примеров куча на сайте

Автор: qweqwe 6.5.2010, 12:32
Цитата(Abyx @  4.5.2010,  19:38 Найти цитируемый пост)
qweqwe, обоснуй

итак, http://www.google.com/search?hl=ru&q=Nemerle+book
во вторых, идеология Nemerle - позволить разработчику писать плагины к компилятору - несколько необычна и мне кажется неверной
в результате мы рискуем получить кучу не поддерживаемого кода, EDSL, использующие макросы Nemerle для реализации select * from person и тому подобного
в третьих, разработчик, начиная разбираться в проекте написанном на Nemerle должен еще разобраться во все макросах, которые этот проект использует, которые кстати распространяются отдельно от проекта
в четвертых, многие языки программирования позволяют создавать DSL и заниматься мета-программированием без использования подобных, опасных техник, использую исключительно возможности языка
в пятых, Nemerle - плохо поддерживает ФП, например каррирование(currying) там эмулируется, результат - довольно высокая стоимость абстракции

Добавлено через 1 минуту и 7 секунд
в шестых - Nemerle использует очень сложный механизм вывода типов, вполне возможно он будет сильно тормозить на больших проектах

Автор: Abyx 6.5.2010, 13:27
qweqwe, 
ты не видел fasm.

Автор: qweqwe 6.5.2010, 14:29
Цитата(Abyx @  6.5.2010,  13:27 Найти цитируемый пост)
ты не видел fasm.

this is not relevant

Добавлено через 14 секунд
и таки видел

Автор: IgorIV 6.5.2010, 18:24
A5uKa, я так и думал, что меня неправильно поймут. Нужен не пример как программировать, а сам окончательный результат. Программа глазами пользователя.

Автор: A5uKa 7.5.2010, 07:28
Цитата(IgorIV @ 6.5.2010,  18:24)
A5uKa, я так и думал, что меня неправильно поймут. Нужен не пример как программировать, а сам окончательный результат. Программа глазами пользователя.

Зачем ? Что ты там хочешь увидеть ? Какой программы ? Hello world ?
Да там же смотри на сайте вроде как что-то лежит.
Свои проекты не дам, они не бесплатные.
Презентавать не буду, убогая консперация.

Автор: Logo 7.5.2010, 08:14
Цитата

Какой программы ? Hello world ?


Неужели это все что написали на Nemerle smile 

Автор: A5uKa 7.5.2010, 10:22
Цитата(Logo @ 7.5.2010,  08:14)
Цитата

Какой программы ? Hello world ?


Неужели это все что написали на Nemerle smile

Да ! отстань .

Автор: IgorIV 7.5.2010, 18:42
A5uKa, спасибо что не отказал. smile

Автор: Abyx 8.5.2010, 20:23
Boo действительно хорош.

Автор: A5uKa 11.5.2010, 12:59
Цитата(Abyx @ 8.5.2010,  20:23)
Boo действительно хорош.

Для заклинателей змей

Автор: Akella 18.5.2010, 00:07
Цитата(Abyx @  2.5.2010,  20:55 Найти цитируемый пост)
Delphi не устраивает 

тогда MSVS и С++

Автор: bems 18.5.2010, 03:01
Цитата(Abyx @  2.5.2010,  20:55 Найти цитируемый пост)
Delphi не устраивает по религиозным соображениям (шутка).
Язык конечно хороший, но я просто *не хочу* на нем писать
Это значит что не шутка.

Автор: A5uKa 18.5.2010, 07:59
http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F

Автор: xwicked 24.1.2011, 18:51
Цитата(Abyx @ 2.5.2010,  18:01)
На каком языке\какой платформе писать программы, чтобы они работали не только у меня на компе, а еще и на компе у пользователя, у которого стоит голая винда, в худшем случае (winXPsp3)
Также допустим, мне удастся убедить пользователя, что ему надо установить .NET 3.5 (включает в себя .NET 2.0).

Вот например есть хороший и удобный язык Python. Но чтобы программы на нем работали, надо либо ставить питон, либо таскать с ним кучу дллок. Даже IronPython который вроде бы "компилит в MSIL", на самом деле требует чтобы с программой распространялись сами дллки IronPython'а, и все используемые модули библиотеки питона.

Итак, на чем писать программы, чтобы было быстро и удобно (как на том же питоне), но и чтобы они работали везде?
Неужели C# - это лучшее что у нас есть? =\

Я разрабатываю программы на C++(Qt). Распространяю вместе с библиотеками(13,7 МБ). Версии библиотек годичной давности. Чтобы пользователя сильно не напрягать постоянными скачками этих библиотек - можно второй раз уже просто екзешник размещать для обновления(около 300-400 КБ). А в архиве это всё не больше 6-ти метров. По-моему неплохо. А функционал программ, о котором можно только мечтать Delphi и остальным. Если начнёте изучать C++ + Qt - не пожалеете. Программы работают от 2000-ой до 7-ой, включая Висту. Про линукс я не говорю. Ни строчки правки кода и оп - программа на другой платформе  smile 

Автор: de_Nis 10.3.2011, 17:34
Чтобы не создавать новую тему, задам вопрос в этой.
Если немного модифицировать вопрос и вместо 
 " На чем писать программы чтоб работали везде"
спросить 
" На чем писать программы чтоб работали везде и всегда"
(да простит меня Abyx за такую вольность).
С уточнениями: 
- под "везде" по-прежнему понимать "Windjws",
- под "всегда" понимать "как можно дольше".
- для пользователя, "...у которого стоит голая винда...", по выражению Abyx,
- кроме ехе-файла пользователю ничего для запуска программы не нужно (никакого NET, Qt, виртуальной машины Java и т. д.).
Короче: написал программу, передал пользователю любым способом - и она "живет" как можно дольше.

Автор: A5uKa 11.3.2011, 08:39
Цитата(de_Nis @ 10.3.2011,  17:34)
Короче: написал программу, передал пользователю любым способом - и она "живет" как можно дольше.

Haskell же

Автор: LSD 11.3.2011, 15:31
Как показывает практика, bat файлы написанные под MS-DOS работают до сих пор smile 

Автор: de_Nis 14.3.2011, 10:13
Цитата(A5uKa @  11.3.2011,  07:39 Найти цитируемый пост)
Haskell же 

Хорошо, уточняю условия.
Пишем относительно несложное приложение, например, Калькулятор или Блокнот, при помощи
1) VC++ + API
2) VC++ + MFC
3) Delphi + API 
4) Delphi + VCL
и, как предлагает A5uKa
5) Haskell.
При любом из пяти способов написания соблюдаются условия, оговоренные ранее: рабтают в "голой Винде" и не требуют для своей работы ничего дополнительно.
Какая из пяти программ с наибольшей вероятностью будет работать на компьютерах с более широким диапазоном версий установленной Windows, например, от версии 95 (первая 32-битная) до 8 (первая 128-битная, судя по сообщениям в Сети)?

Автор: bems 14.3.2011, 12:45
первые четыре

Автор: A5uKa 14.3.2011, 13:01
VCL уже не катит, только NT, насколько мне извесно . Delphi + API я не знаю что такое. MFC морально мёртв.

По поводу Haskell спроси лучше у тех, кто слышал чуть больше, чем название.

Автор: k0rvin 14.3.2011, 13:37
Цитата(bems @ 14.3.2011,  12:45)
первые четыре

почему ты думаешь, что Хаскелл не заработает на 95-й винде?

новый, 7-й не заработает, но 6.6 например официально поддерживает: http://www.haskell.org/ghc/download_ghc_66

Автор: bems 14.3.2011, 13:44
Цитата(k0rvin @  14.3.2011,  13:37 Найти цитируемый пост)
почему ты думаешь, что Хаскелл не заработает на 95-й винде?
Я ничего не знаю на эту тему, поэтому не стал говорить.

Автор: de_Nis 14.3.2011, 14:57
Цитата(A5uKa @  14.3.2011,  12:01 Найти цитируемый пост)
Delphi + API я не знаю что такое

Написание программ на языке Дельфи с использованием API, без использования VCL. Можно же разрабатывать программу на VC++ без использования MFC?

Цитата(A5uKa @  14.3.2011,  12:01 Найти цитируемый пост)
MFC морально мёртв

А что тогда обозначают новые версии MFC в каждой новой версии VC++? 
Visual C++ 6.0    -> MFC 6.0 (mfc42.dll)
...
Visual C++ 2010 -> MFC 10.0.30319.1 (mfc100.dll), .NET 4.0
Я не оспариваю мнение, просто интересно узнать, что меняется в MFC.

Автор: A5uKa 14.3.2011, 15:50
Цитата(de_Nis @ 14.3.2011,  14:57)
Я не оспариваю мнение, просто интересно узнать, что меняется в MFC.

Я знаю, что MFC стал не нужен, когда есть .NET

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)