LinuxForum.Fans
Тема

О "быстром" программировании GUI и его цене

Автор: weldpuya2008 21 сообщений 6229 просмотров
#143214

Добрый вечер
Меня интересует мнение людей которые писали на qt*/gtk+ и чём-то не требующим компиляции (типо python, perl, +/- java) под GUI.

Стоит ли время сэкономленное на разработку программы на языке "не требующим компиляции" того?
То есть проигрывая по быстродействию, по занимаемой памяти или же при невозможности распараллелить работу на несколько ядер, больше нагрузка на процесор?
Недостатки питона по википедии:


1.Низкое быстродействие

2.Глобальная блокировка интерпретатора (GIL) - в каждый момент времени в одном процессе интерпретатора Python может исполняться только один поток Python кода, даже если в компьютере имеется несколько процессоров или процессорных ядер (GIL также освобождается на время выполнения блокирующих операций, таких как ввод-вывод, изменения/проверка состояния синхронизирующих примитивов и других — таким образом, если один поток блокируется, другие могут исполняться). В ближайшем будущем переход от GIL к другим техникам не предполагается по причине того, что по мнению автора языка Python Гвидо Россума однопоточных программ, ускоряемых GIL больше, чем многопоточных, которые GIL тормозит.

Про питон не раз встречал такое:

легко читабельный
быстро писабельный

В общем вопрос стоит в том, что после того как упрёшься в ограничение языка и будешь пытаться бороться с этим - переписывая на с++ например, то время потраченое на разработку изначально под тот же qt против времени на такое приложение+его оптимизация?
Я понимаю, что маленькие приложения можно и на pythone, java или еще чём-то писать, да хоть на zenity+bash, а вот что-то например учёт моих домашних финансов(всякие Gnucash'и и т.д. Мне не подошли)))), IM-клиент, торрент-клиент, ну еще не знаю - браузер, офисный пакет)))?
Или тут дело в руках?
Планируется в том числе и работа под Windows?

Вообще Я планирую для Себя/Не Себя под Linux & KDE писать, но не хотелось бы jav'у задействовать (что бы не тащить по зависимостям), а что еще осталось?

В общем вопрос пока сформулировал так, а там может надо будет переформулировать?

#143221

weldpuya2008, к слову, питон всегда присутствует в Lnux. На нём даже написана куча программного обеспечения.
Например, торрент-клиент Deluge. Правда, последняя его версия была выпущена в марте 2010г. :o
Браузер вспоминается только консольный (вроде бы правильно Linx пишется).

#143227

Вообще Я планирую для Себя/Не Себя под Linux & KDE писать, но не хотелось бы jav'у задействовать (что бы не тащить по зависимостям), а что еще осталось?
C++/Qt ..... питон тоже вещь хорошая.... к тому же есть биндинги к Qt....
#143228
weldpuya2008 написал:
Добрый вечер
Меня интересует мнение людей которые писали на qt*/gtk+ и чём-то не требующим компиляции... java) под GUI.

В качестве ликбеза. Java требует компиляции. Но вот с GUI там проблемы wink

#143289
Wolfenberg написал:
weldpuya2008, к слову, питон всегда присутствует в Lnux. На нём даже написана куча программного обеспечения.
Например, торрент-клиент Deluge. Правда, последняя его версия была выпущена в марте 2010г. :o
Браузер вспоминается только консольный (вроде бы правильно Linx пишется).

Я видел)))
Когда запиливаешь Debian из debootstrap а потом ставишь рабочий стол, то видно что с софтом идёт)))

mycetophylax написал:
[quote=weldpuya2008]Добрый вечер
Меня интересует мнение людей которые писали на qt*/gtk+ и чём-то не требующим компиляции... java) под GUI.

В качестве ликбеза. Java требует компиляции. Но вот с GUI там проблемы wink[/quote]
эт понятно)))
К Яве у Меня вообще "особое" отношение - из-за больших трудозатрат и небольшого профита, а так же из-за их проприоретарности и некоторых проблем с открытием исходников.


Вопрос в том - быстро сделать что-то мостроуозное на pythone или же дольше пилить на qt?
Окупится ли пиление на qt? Оба Я не знаю, хотя пробовал помаленьку)))
Или это будет как kernel Linux(python) и hurd(qt)?

#143326

weldpuya2008, на питоне лучше всего писать в обычном блокнотике и компилировать при помощи GCC.
Что касается библиотек Qt, то для программирования, по-моему, лучше всего подходит KDevelop (C, C++) smile

#143367
weldpuya2008 написал:
В общем вопрос стоит в том, что после того как упрёшься в ограничение языка и будешь пытаться бороться с этим - переписывая на с++ например, то время потраченое на разработку изначально под тот же qt против времени на такое приложение+его оптимизация?

не нужно.
пишите на python'е, а если что-то критичное - пишете на C. и всё будет хорошо. Я имею ввиду, что можно писать на двух языках. Пайтон так умеет.

Wolfenberg написал:
к слову, питон всегда присутствует в Lnux.

нет. К сожалению - нет. Мне не дают на некоторых боевых серверах ставить mercurial, и как раз из-за пайтона. Приходится делать костыли, например на sed. К сожалению...

#143371
Wolfenberg написал:
на питоне лучше всего писать в обычном блокнотике

ещё вам минус поставить?
Ну видимо вы имеете ввиду под "обычным блокнотиком" kate? я угадал? я надеюсь - угадал...

#143384
drBatty написал:
[quote=weldpuya2008]В общем вопрос стоит в том, что после того как упрёшься в ограничение языка и будешь пытаться бороться с этим - переписывая на с++ например, то время потраченое на разработку изначально под тот же qt против времени на такое приложение+его оптимизация?

не нужно.
пишите на python'е, а если что-то критичное - пишете на C. и всё будет хорошо. Я имею ввиду, что можно писать на двух языках. Пайтон так умеет.
[/quote]

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

Насколько существенно будет нанесён урон производительности, использованию памяти и т.д.?

ЗЫ:
Вообще Я нахожусь под впечатлением от TweetDeck реализоаном на Adobe AIR. То есть под впечатлением от "лёгкости" разработки и на то как быстро обрастают функционалом air-приложения.

Я сейчас прекрасно осознаю об ограниченности платформы AIR, и как она работает )))

Но:
Тот же qutIM(qt) начат в 2008 и tweetdeck( Adobe Air) -примерно там же.
qutIM: ведется разработка 0.3, tweetdeck: доступна 0.37.5

tweetdeck у Меня отлично работает в linux&win, а вот qutIM переодически падает и оно "переписывается".

На Хабре:

А Пользовательский интерфейс «среднестатистической» программы не требует высокой оптимизации и производительности. Именно это позволило Adobe Air существовать вообще.

мыслите масштабней, по вашему получается, что разработчик на АСМе должен рассуждать так: «Наплодили тут языков программрования высокого уровня, и никто об оптимизации и производительности не заботится».

Конечно Adobe AIR проприоретарная платформа (это не гуд); так же Приложения, написанные на AIR, являются однопоточными, но при этом Adobe AIR стабилизировался и релизился в 2008 году, а qt3 был задолго, Qt 4.2 - 2006 год.


В общем хотелось бы услышать, что-то вроде:
Мы написали х-пионовых гуй-приложений и заметили/получили профит/геморой/вообще всё переписали )))
Или пока наши коллеги на qt/gtk+ писали ____ Мы уже клепаем ____

В общем может кто-то читал или на собственном опыте...

#143394
weldpuya2008 написал:
Я в нете находил разные темы и обсуждения и так и не нашёл как сильных аргументов за то, что бы на питоне писать, так и против этого...

Насколько существенно будет нанесён урон производительности, использованию памяти и т.д.?

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

weldpuya2008 написал:
Вообще Я нахожусь под впечатлением от TweetDeck реализоаном на Adobe AIR. То есть под впечатлением от "лёгкости" разработки и на то как быстро обрастают функционалом air-приложения.

она закрытая.
фтопку. даже смотреть не стану.

#143415
drBatty написал:
[quote=weldpuya2008]Я в нете находил разные темы и обсуждения и так и не нашёл как сильных аргументов за то, что бы на питоне писать, так и против этого...

Насколько существенно будет нанесён урон производительности, использованию памяти и т.д.?

не будет никакого урона. Если конечно, вы будете использовать вставки на С, в тех местах, где это необходимо. Посмотрите на mercurial. Там есть, чему поучиться.
[/quote]
Неожиданно открыл QML...
В общем решил на нативном qt4 пробовать, а если что на pyqt4(((

#143505

drBatty, под "блокнотиком" я имел ввиду текстовый редактор. smile
Если у вас не хватает сил провести аналогию - ваше дело.
И нефиг на сервера лепить что попало! :P

#143508
Wolfenberg написал:
под "блокнотиком" я имел ввиду текстовый редактор. smile
Если у вас не хватает сил провести аналогию - ваше дело.

не понял тогда. В чём ещё можно править текст? В sed что-ли?

#143511

drBatty, sed вообще-то управляет файлами. Вы ещё DOS запустите smile
Nano, vi, kate.... Незнакомые названия?

#143520
Wolfenberg написал:
sed вообще-то управляет файлами.

не в этом назначение sed, а в редактировании потока информации.

Wolfenberg написал:
Nano, vi, kate.... Незнакомые названия?

nano и vi не подходят. Они слишком примитивны, и не предназначены для редактирования программ на python'е.
нужно использовать kate или vim.
сразу снимаются множество идиотских вопросов типа "зачем ставить пробелы", или "как 100500 раз писать file_count вместо fc?" или "почему нужно писать стилистически правильно?" или "какая ошибка в этом коде". (на последний вопрос в 99% случаев ответ даётся vim'ом, на нём 99% ошибок просто нельзя допустить).

#199478

А я бы советовал все писать на языке C++ и Qt. Пусть это немного дольше, но зато будет правильнее. Можно память использовать именно так, как хочется. Да и вообще, если правильно разработать алгоритм, то никаких сбоев не будет. С "легкими" языками типа Питона, думаю, такого не случится. Ошибка может в самый неподходящий момент вылезти.

#199550
Lucky_spirit написал:
А я бы советовал все писать на языке C++ и Qt. Пусть это немного дольше, но зато будет правильнее.

А с какой, прошу пардона, точки зрения правильнее?

Lucky_spirit написал:
Да и вообще, если правильно разработать алгоритм, то никаких сбоев не будет.

О! Золотые слова! Комрады-разработчики, в самом деле, давайте уже писать софт сразу без багов, ведь так же намного круче :) И ошибки будут вылазить исключительно в подходящие для этого моменты :)

#199610

Iskan Der, хочу заметить, что я сторонник компилируемых языков. Интерпретация занимает время - это раз, второе - наличие места для интерпретатора. Недавно очень задумался о статье. Вот ее краткая суть:

Показать
С фотоаппаратом именитой фирмы шла утилита, которая помогала копировать фотографии с аппарата на компьютер. Утилита при установке самостоятельно установила .NET Framework 2. После установки эта программа занимала 200 мегабайт! Автор статьи удалил ее и пользовался для копирования фотографий небольшим плагином к Total Commander'у. Плагин этот занимал чуть больше пары мегабайт.

Думаю, что хотя бы факт, что откомпилированная программа заработает на любом компьютере этой платформы (Windows, Linux...) и небольшой вес перечеркивает факт наличия того же установленного Питона в системе.
Я до сих пор пользуюсь ограниченным количеством софта на своем смартфоне Nokia 6120 Classic. Все потому, что некоторые программы требуют определенную версию Питона. Причем некоторые версии противоречат друг другу. Что делать в таком случае?
Я еще раз настаиваю на C++ и иже с ним. :D

#199699
Lucky_spirit написал:
Iskan Der, хочу заметить, что я сторонник компилируемых языков. Интерпретация занимает время - это раз, второе - наличие места для интерпретатора. Недавно очень задумался о статье. Вот ее краткая суть...

Сайтики тоже на плюсах рисовать будете? :)
Если серьезно, то любой инструмент (ЯП в нашем случае) имеет свои достоинства и недостатки и, как следствие, границы применимости. Затраты времени на интерпретацию во многих случаях несущественны и с лихвой окупаются меньшими затратами на разработку (не всегда). Наличие места для интерпретатора при нынешних ценах на жесткие диски не особо актуальна, на мой взгляд.
Что до статьи, то ее суть проста: для каждой задачи нужно выбирать адекватный инструмент, а не просто наиболее привычный (модный, красивый, популярный, и т.п.).

Lucky_spirit написал:
Я до сих пор пользуюсь ограниченным количеством софта на своем смартфоне Nokia 6120 Classic. Все потому, что некоторые программы требуют определенную версию Питона. Причем некоторые версии противоречат друг другу. Что делать в таком случае?

Ломать руки разработчикам таких программ :) С++ тоже не панацея: тут софтины тоже могут требовать разных версий одних и тех же библиотек и между собой брутально конфликтовать. Дело не в ЯП и платформе, а в культуре разработки.

#199831

Iskan Der, в принципе, согласен с Вашим ответом. Но, я так понимаю, что и Вы меня поняли. Думаю, дальнейший холивар не будем разводить, почитаем чужие мнения?

Войдите или зарегистрируйтесь, чтобы ответить.