На практике, если лицензия будет коммерческой, то, скорее всего, клиенту и нельзя будет ничего менять. Он должен будет заказывать изменения у разработчика.
Если это открытая лицензия — то клиент просто (если захочет простой жизни в будущем) отдаст изменения разработчику и в будущем получит новую версию в том числе и со своими изменениями.
…
В общем, ситуация на практике очень распространённая, а не абстрактная, и успешно решаемая в рамках любых языковых парадигм :)
>оба позиционируются как ФП-яыки для real world programming
А… Ну, с этой точки зрения PHP и Си, например, близнецы-братья :) Оба — императивные языки для real world programming. И даже оба фигурные скобки для выделения блоков кода используют ;)
А все механизмы извлечения данных из БД — скрыты от конечного программирования. Это и вероятность ошибок снижает, и лёгкость смены бэкенда данных, и перемены в структурах БД в будущем…
Видимо, это ограничение — недавняя фишка. Или клиентская. Но факт, в районе 1999..2000 гг. У меня было чуть более 640 контактов в ICQ. После чего в один прекрасный день я просто удалил всех без уведомления и стал заносить лишь тех, кто продолжал общаться со мной сам. осталось около 250 контактов :)
…
А сегодня активных контактов в ICQ у меня практически 0 :D
Так в том-то и дело, что Google Talk работает на открытом протоколе XMPP. Да, они в _своих_ клиентах могут вводить рекламу как захотят. Но к ним можно заходить с любого стороннего клиента.
А менять протокол, теряя совместимость с другими клиентами — это не выгодно в первую очередь самому Гуглю. Иначе бы могли изначально ввести закрытый протокол :) Но они сделали ставку на открытый. Более того, этим хорошо его пропиарили.
Как и со всеми нестандартными ICQ-клиентами. В России не работало, за рубежом — работало.
Сейчас вывел свой Jabber-транспорт в ICQ через Tor (система анонимизации). Всё заработало. Хотя сообщения идут по 15-20 секунд :) Зато не страшны теперь любые санкции AOL против России.
Pidgin умеет работать с ICQ напрямую. Как любой родной ICQ клиент. В этом случае никакой JabberID не нужен.
Pidgin может работать с Jabber. Для этого нужен JabberID на любом из Jabber-серверов.
Pidgin может работать с ICQ через Jabber. Т.е. цепочка будет такая: Pidgin -> [jabber-протокол] -> Jabber-сервер -> Jabber-ICQ транспорт -> [ICQ-протокол] -> ICQ-сервер.
Для пользователя эта цепочка выливается в одно дополнительное действие — на Jabber-сервере нужно зарегистрироваться в ICQ-транспорт, указав свои ICQ-UIN/пароль. После этого транспорт будет работать с ICQ-сервером от твоего имени, а в клиенте (Pidgin или любой Jabber-клиент, не обязательно мультипротокольный) ICQ-контакты будут видны как обычные Jabber-контакты.
Jabber не мультипротокльный. Jabber — это сам протокол :)
Pidgin — мультипротокольный клиент, поддерживающий среди прочих протоколов, ICQ и XMPP (aka Jabber).
ICQ в Pidgin не работает там же, где не работают и другие альтернативные клиенты.
Jabber в нём работает.
Jabber поддерживает транспорты в другие IM-сети. Например, ICQ, Mail.Ru Agent, Yahoo и т.д.
Pidgin может использовать ICQ не только нативно, но и через Jabber-транспорт.
Jabber-транспорты сегодня испытывают те же проблемы, что и все клиенты. Скажем, из России они не коннектятся к ICQ. За границей же обычны проблемы с кодировкой.
Если по какому-то пункту ещё будут вопросы — могу расширить :)
На практике, если лицензия будет коммерческой, то, скорее всего, клиенту и нельзя будет ничего менять. Он должен будет заказывать изменения у разработчика.
Если это открытая лицензия — то клиент просто (если захочет простой жизни в будущем) отдаст изменения разработчику и в будущем получит новую версию в том числе и со своими изменениями.
…
В общем, ситуация на практике очень распространённая, а не абстрактная, и успешно решаемая в рамках любых языковых парадигм :)
Это очень важная и полезная потенциальная фишка чистых ФП. Увы, пока только потенциальная :)
А… Ну, с этой точки зрения PHP и Си, например, близнецы-братья :) Оба — императивные языки для real world programming. И даже оба фигурные скобки для выделения блоков кода используют ;)
Haskell сам по себе. А F# — в составе .Net. Что позволяет легко интегрировать его с решениями на C#, VB, Boo, Nemerle и т.д.
Кстати, F# — это ml-язык, насколько я понимаю, так что его не с Хаскеллом надо сравнивать, а с тем же O'Caml.
Со временем не только полностью отказался от имитаций полиморфных функций, но даже от классов с объектами, идентифицируемыми множествами параметров.
Один объект — один идентификатор.
Всё остальное — свойства объекта…
А если требуется загрузка объектов из списка по ряду параметров, то этим уже ORM занимается. Скажем, то, что у автора темы идёт как
static function create($name,$price){… }
у меня будет:
$objects = objects_array('product', array('name' => $name, 'price' => $price));
А все механизмы извлечения данных из БД — скрыты от конечного программирования. Это и вероятность ошибок снижает, и лёгкость смены бэкенда данных, и перемены в структурах БД в будущем…
Так что выход — настроить их из того же Psi, например, а пользоваться уже потом можно Pidgin'ом.
…
А сегодня активных контактов в ICQ у меня практически 0 :D
Если так лениво откручивать 4 сообщения наверх, то вот повтор прямой ссылки на спеки: dev.aol.com/aim/oscar
А менять протокол, теряя совместимость с другими клиентами — это не выгодно в первую очередь самому Гуглю. Иначе бы могли изначально ввести закрытый протокол :) Но они сделали ставку на открытый. Более того, этим хорошо его пропиарили.
Только в рамках одного сервера. И только если на нём есть сервис каталогов :)
И это же к лучшему. Спама много меньше.
Сейчас вывел свой Jabber-транспорт в ICQ через Tor (система анонимизации). Всё заработало. Хотя сообщения идут по 15-20 секунд :) Зато не страшны теперь любые санкции AOL против России.
Pidgin может работать с Jabber. Для этого нужен JabberID на любом из Jabber-серверов.
Pidgin может работать с ICQ через Jabber. Т.е. цепочка будет такая: Pidgin -> [jabber-протокол] -> Jabber-сервер -> Jabber-ICQ транспорт -> [ICQ-протокол] -> ICQ-сервер.
Для пользователя эта цепочка выливается в одно дополнительное действие — на Jabber-сервере нужно зарегистрироваться в ICQ-транспорт, указав свои ICQ-UIN/пароль. После этого транспорт будет работать с ICQ-сервером от твоего имени, а в клиенте (Pidgin или любой Jabber-клиент, не обязательно мультипротокольный) ICQ-контакты будут видны как обычные Jabber-контакты.
Pidgin — мультипротокольный клиент, поддерживающий среди прочих протоколов, ICQ и XMPP (aka Jabber).
ICQ в Pidgin не работает там же, где не работают и другие альтернативные клиенты.
Jabber в нём работает.
Jabber поддерживает транспорты в другие IM-сети. Например, ICQ, Mail.Ru Agent, Yahoo и т.д.
Pidgin может использовать ICQ не только нативно, но и через Jabber-транспорт.
Jabber-транспорты сегодня испытывают те же проблемы, что и все клиенты. Скажем, из России они не коннектятся к ICQ. За границей же обычны проблемы с кодировкой.
Если по какому-то пункту ещё будут вопросы — могу расширить :)