Подписка на блог

В Телеграме помимо ссылок на заметки делюсь околодизайнерскими наблюдениями.

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

В Тумблере и Же-же есть автоматические трансляции. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

По РСС и Джейсон-фиду трансляции для автоматических читалок

Windows-приложения на PHP

Мне всегда хотелось писать Windows-приложения на PHP, ведь это такой замечательный язык.

Когда-то я пробовал PHPGTK, но мне сразу не понравилось. Он генерил совершенно отвратительный интерфейс, не имеющий никакого отношения к Windows. Как я понимаю, там люди просто портировали под Windows какой-то первобытный оконный интерфейс из какого-то линукса. Казалось бы, взялись за дело — ну доведите его до ума: замените вызовы своего портированного кода вызовами нормального WinAPI. Ан-нет, это не наш путь.

Но всё меняется, когда приходят они. Если за дело берутся Windows-разработчики, то на выходе получается намного более удобоваримый продукт, WinBinder. WinBinder позволяет делать нормально-интерфейсовые приложения под Windows. Больше того, он позволяет даже собрать такое приложение в exe-файл! Нужно только разобраться, как это делать (смайлик).

В общем, очень интересная штука.
Подписаться на блог
Поделиться
Отправить
11 комментариев
Boris
http://imfo.ru/archive/2004/11/15/winbinder_pre_alpha

Интересно, что вы читаете? :)
Илья Бирман
Ха-ха, я уже и забыл про то, что я эту ссылку оттуда взял. Просто там ничего про сам WinBinder не написано.
Weasel
Ох, Илья, ну ты же умный! Зачем ты хочешь забивать гвозди отвёрткой? Ну не для того предназначен язык PHP.... 
Илья Бирман
Ох, Юля, ну ты же умная! Зачем ты хочешь заставить меня забивать гвозди молотком, когда у меня отверткой получается быстрее и удобнее?

Рассуждения типа «A предназначено для B» — это, почти всегда, чушь. Например, некоторые называют камеру в телефоне бесполезной вещью, говоря «телефон предназначен для того, чтобы говорить». Я не собираюсь пользоваться вещами для того, что чего они предназначены просто потому, что их кто-то для этого предназначил! Если они мне удобны для чего-то другого, то я буду ими пользоваться и для этого тоже.

Что конкретно плохого в том, чтобы писать Windows-приложения на PHP?
slach
а по мне, так winGTK+winGlade очень не плох... кросс-платформенно все таки...
проблема в самих виджетах GTK и скорости их работы
низкоуровнево там интерфейс нормальный не запрограммируешь
вон kukutz пробовал CTRL+A присобачить с text input’у, чтобы выделялся весь текст... дык умучался...

Weasel он умный и ленивый, поэтому пишет GUI на том, на чем умеет =)
Илья Бирман
«Кросс-платформенно все таки». Ну да, но только это в реальном мире никому не нужно.

А GUI я умею и на C++ писать, и машину я (сюрприз) умею с механической коробкой водить. Просто сегодня у меня появилась возможность начать писать Windows-приложения на PHP. Если завтра у меня появится возможность водить машину с коробкой-автоматом, я с удовольствием и этой возможностью воспользуюсь. Почему я должен делать то, что можно поручить роботу?

Если ты умеешь добывать огонь, потирая сухие палочки друг о друга, то, имея зажигалку, ты всё равно предпочтёшь её.
slach
2Boris ;))
они читают что нибудь из этого
http://www.google.com/search?q=link:winbinder.sourceforge.net
Weasel
Если кто-то «предназначал А для Б» — он думал, как сделать А, чтобы с его помощью хорошо получалось Б. Да, бывают случаи, что А можно использовать и для чего-нибудь другого. Но почти всегда это компромис, и при наличии бОльших ресурсов было бы выбрано что-то другое. Например, я буду пользоваться цифровой камерой в сотовом только тогда, когда мне срочно надо что-то снять, а фотоаппарата под рукой нету. Если бы он был, или было время/желание за ним сходить, я бы взяла фотоаппарат, потому что он лучше фотографирует. Потому что он для этого предназначен.

Отвергать предназначение вещи — значит отвергать опыт людей, которые её делали. Как и любой другой опыт, его надо отвергать с умом, разбираясь в предмете и понимая, что ты делаешь.

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

Я знаю один единственный бесспорный случай, когда писать Windows-программу на PHP оправдано:
  1. Некто просто не знает более подходящего языка.
  2. Ему надо написать только одну-две маленькие программы с оконным интерфейсом.
Если ему надо написать три программы, то уже стоит задуматься, что быстрее — мучиться с PHP или выучить Delphi. Может статься, что второе получится быстрее. И лучше. И полезнее для субьекта ;)
Илья Бирман
«Но они будут получаться быстрее и лучше». Что значит лучше? Слово не несёт смысла в данном контексте, поэтому игнорируем :-) Остаётся только «быстрее». Ну, наверное быстрее будет работать программа, да. Но мне важнее время её разработки. И большинству людей уже сегодня важнее именно это. Этот подход называется «Пускай потеет машина».

Я не знаю более подходящего языка для быстрого написания несложных Windows-приложений, чем PHP. При этом я знаю Delphi и, на каком-то уровне, C/C++.

Хороший программист обязан знать много разных средств и не называть какие-то из них неподходящими. Средство нужно подбирать для задачи, а не для целого класса задач, тем более, такого большого, как Windows-приложения. Я же не предлагаю Microsoft Office писать на PHP. Просто те задачи, которые чаще всего приходится решать мне — это у меня почти не вызывает сомнения — будут существенно проще решаться с помощью PHP.
Weasel
>«Кросс-платформенно все таки» Ну да, но только это в реальном мире никому не нужно.
Кому не нужно? А ну-ка дайте сюда! У меня на работе Windows, а дома — Linux, мне очень нужно!

Примеры с добыванием огня и машиной с механической коробкой — не в кассу ;) Огонь удобнее добывать зажигалкой. А писать оконные приложения удобнее на Delphi или C++ c хорошей оконной библиотекой.

А люди, которые пишут GUI на php как раз вызывают ассоциации с теми, кто добывает огонь палочками, потому что не умеет пользоваться зажигалкой и не хочет учиться ;)
Oleg Andreev
Я знаю, зачем мне пригодился бы win+php. Как-то я написал скрипт-макрос, который чистит экспортированные из Ворда хтмл-страницы и собирает их в древовидную структуру веб-сайта, создает зипы разделов, библиотеку гиперссылок и алфавитный указатель. Т. к. этим скриптом заинтересовался (захотел побаловаться) заказчик, пришлось поставить ему Денвер, чтобы он имел дело с браузером в качестве интерфейса. А с окнами получилось бы приличнее.

Offtopic: а чего форма «Имя:» такая непривычно-неудобная?

Илья Бирман
Ну я её изначально сделал непривычно-неудобной, а переделать руки не доходят :-)
Oleg Andreev
One more. В дельфи вместо 5 строк preg_replace_callback и 20 строк соответствующих функций пришлось бы написать в моем случае ... строк.
Weasel
Слово «лучше» несёт вполне конкретный смысл. Можно его разбирать на удобнее/красивее/проще в освоении/и т. д. Можно еще начать примеры приводить. Но ведь ты меня и так понял ;)

«Быстрее» я употребляла не в контексте «быстрее работает программа», а в конектсте «быстрее создаётся». Т. е. программировать GUI на предназначенном для этого языке — быстрее. Если у тебя на дельфи получается рисовать окошки медленнее, чем на php, то извини, но ты просто плохо знаешь дельфи. Кстати, еще не упоминался Visual Basic, а по скорости разработки он, пожалуй, чемпион.

>Средство нужно подбирать для задачи
Ура, тут мы согласны. Наверное, у меня просто фантазии не хватает на то, чтобы представить задачу, для которой нужно GUI и лучше использовать php. Хотя, если совсем уж пофантазировать..
  • Уже есть скрипт на php, к которому надо прикрутить мааааленький gui. Я бы сделала это через браузер, но если нужна иконка в трее — придётся таки брать winapi.
  • Если программа предназначена в основном для обработки текста. (Пример Олега). Я в этих целях использую perl, там с регекспами еще приятнее и проще работать, но php — тоже ничего, сойдёт. Хотя вот именно HTML я бы парсила какой-нибудь DOM-библиотекой, и тогда программу можно хоть на C++ писать.
  • Если важна кроссплатформенность. Но тогда ни о каком winapi не может идти речь, тут что-то вроде gtk или qt придётся брать.
  • ... Всё, фантазия выдохлась. Видимо, Илья, мы с тобой по жизни решаем принципиально разные задачи.
Erlang
Ну слава богу, а то я думал, до огнестрельного оружия дойдёт:)
Моё мнение: если ты разрабатывал что-то для веб на PHP, а потом решил это сделать exe-программой, в этом случае подойдёт метод Ильи. В остальных случаях права Юля.
С уважением.
kukutz
>Хотя вот именно HTML я бы парсила какой-нибудь DOM-библиотекой

Мнэ... не советую... съедят.

Ты часто валидный HTML видела? Я редко.

В лучшем случае наш выбор — HTMLSax, в остальных — регекспы.

Пользовательский интерфейс
Доступны три раздела
электронного учебника

Популярное