Драматическая история Python и Zope - [2]

Шрифт
Интервал

Jpython

JPython - довольно позднее изобретение. Первая версия появилась уже после выхода Python 1.5.2. JPython - это пакет, состоящий из двух частей. Часть первая - интерпретатор Питона, написанный на Яве. А вторая - компилятор Питона в явский байт-код. То есть если мне понадобится писать Java-апплеты, я их тоже буду писать на Питоне. :)

Mailman

Mailman - еще одна из известных программ, написанных на Питоне. Mailman - это программа управления списками рассылки (mailing list manager). Кроме почты, Mailman имеет web интерфейс для управления подпиской, индивидуальными настройками подписчика, административными программами. Mailman оказался так хорош, что стал официальным менеджером списков рассылки проекта GNU.

Zope

История возникновения фирмы Digital Creations и Zope. Digital Creations подхватила Python довольно рано, в году примерно 1994. И стали они заниматься разработкой коммерческих интернет-решений . Обычная маленькая фирма, ничего интересного из себя не представляющая.

В 1996 году к фирме присоединился Джим Фултон, ничего не знающий о разработке интернет-решений, но довольно хорошо разбирающийся в Питоне, в тонкостях реализации, и вообще - человек, хорошо понимающий языки программирования. Твердый сторонник объектно-ориентированного подхода, он хорошо его понимает и хорошо умеет его использовать.

Одно из первых дел, с которого он начал - ему предложили где-то прочитать лекцию по протоколу CGI, а он ничего о CGI не знал, и, пока они летели в самолете, Пол Эверит, начальник (CEO) Digital Creations, прочел ему лекцию о CGI. С этой лекцией в голове Джим Фултон поехал на конференцию, где он должен был эту лекцию прочесть, успешно ее прочел, а после лекции подошел к Эвериту и к другим членам Digital Creations, ужаснулся и сказал: "это что ж за протокол такой!" Его поразил протокол CGI своей чрезмерной простотой. Хотя надо сказать, что во многом именно благодаря этой простоте WEB стал тем, что мы имеем сейчас.

Но к тому времени Фултон решил, что это стыдно - иметь такие протоколы, и надо создавать что-то объектно-ориентированное. Вот тут-то им и был задуман первый брокер объектных запросов, который расшифровывал URL и не просто тупо следовал каким-то простым заданным правилам, но честно в дереве объектов искал нужный объект и вызывал его на выполнение. И Digital Creations создала два продукта - один коммерческий, который они использовали внутри, а часть этого продукта - назывался он BoBo Object Publisher - они сделали полностью открытым.

Долгое время все, что они делали, развивалось у них внутри. Они занимались коммерцией, делали сайты, продавали свою коммерческую программу, давали по ней консультации, и за счет этого делали деньги. В основном ориентировались на новостные сайты, так сложилось. Потом они решили, что пора и остальную часть коммерческого софта, который у них есть, открывать, и в августе 1999 года они опубликовали то, что стало Zope версии 1.9. Они так же объявили, что на подходе версия 2.0, которая будет совсем открыта.

Так оно и оказалось, потому что 1.9 была под менее открытой лицензией, в ней было обязательно иметь на сайте ссылку на Digital Creations. А в 2.0 было уже необязательно, просто рекомендовано. То есть исходники стали совершенно свободными, бери Zope, ставь его, используй и вперед - наслаждайся жизнью. :) Они тоже не сразу все открыли. Первоначально была открыта довольно большая часть Zope, но некоторые значительные компоненты, которые на самом деле в маленьких сайтах особо не нужны, а нужны только для крупных сайтов, долгое время не открывали. Например, компонент ZTable, для манипуляций с большими таблицами данных, компонент Zope Enterprise Option для кластеризации нескольких инсталляций Zope в один большой сайт. Через некоторое время ZTable, совсем перестали развивать, а Zope Enterprise Option был открыт, то есть теперь его также можно скачать, как все остальное, и использовать.

Сейчас почти не осталось каких-то закрытых частей. Все исходные тексты раздаются, а деньги они делают за счет создания сайтов или консультаций по своим продуктам. Сами же они говорят, что с тех пор, как они открыли Zope, их бизнес увеличился в 3 раза!

При переходе от версии 1.9 к 2.0 кроме лицензии мало что изменилось. Но в течении 2000 года пользователи и разработчики довольно быстро подхватил исходники Zope, стали их развивать, и версия за версией вышли 2.1 и 2.2. Произошли довольно значительные изменения, появился и новый язык шаблонов: если старый язык шаблонов у них больше похож на Apache SSI (типа ), то новый больше похож на XML () - он проще. В 2.3 сделан совсем большой шаг, появился виртуальный хостинг. Если раньше для виртуального хостинга надо было мучиться с Apache, ставить сложные модули - модуль mod_pcgi2 или FastCgi, то сейчас виртуальный хостинг можно сделать на чистом Zope.

С переходом Гвидо в Digital Creations возникает интересная тонкость - дело в том, что Zope добавил в Python интересный механизм. В Python существует дихотомия между типами данных и классами. От классов можно наследовать обычным способом, от типов наследовать нельзя, и это иногда раздражает. Допустим, нужен какой-то особенный класс-список, но от типа "список" наследоваться нельзя, поэтому приходится применять не очень удобный механизм делегирования.


Еще от автора Олег Бройтман
Python - основные концепции

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


DirectX 8. Начинаем работу с DirectX Graphics

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


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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