Сам Ruby медленнее Python. Дело не в рельсах и не в django. Тот уровень ООП, который присутсвует в Ruby требует времени. Много. Осмелюсь предположить, Ruby никогда не будет быстрее Python. И уж точно будет медленнее Python+PSYCO. Имхо.
даже скомпилированную СИ программу можно разложить на исходники. Но на реальные исходники они будут похожи весьма сомнительно :). Таки потеря комментариев, всех названий переменных и проч. делает исходники практически нечитаемыми. Хоть и взлом программ при этом возможен. Зато невозможна перепродажа и практически исключается reuse. И ещё практически невозможно вытащить алгоритмы в которых потом разобраться (т.е. красть идеи).
p.s. возможно всё, но вот какими усилиями и далеко не каждому... :)
питон на хостинге мне кажется странной идеей. Те кто пишут на питоне сайты, как правило, пишут и свои http-сервера, и используют распределённую память и memcached, открывают сами уйму tcp соединений на что-то... представить себе возможный виртуальный хостинг с такими возможностями - не получится :)
виртуальные выделенные сервера это наше все. Если уж проект до цельного сервера пока не дорос :).
Если честно - питон штука хорошая, а статья - дурацкая. Непонятно для кого статья? Для начинающих? Упущено дофига теории. Для уже-знающих-другой-язык? В таком случае объяснение как расставлять двойные и одинарные ковычки в строках для кого? :)
Да и о питоне тут мало. Мало хорошего.
1. Многопоточность (пусть и с GIL, но все же)
2. Сильное ООП. Особенно радуют возможности манипуляции классов. Так, паттерн Singleton на питоне невозможен. Зато можно "расшарить" состояние объектов между их инстанциями. Куда более продвинутый и чаще нужный вариант.
3. Скорость. СКОРОСТЬ! Особенно если взять psyco (иногда получится быстрее чем C и это не шутка).
4. Изобретай-не-хочу. Есть PyPy. Питон написанный на питоне. Экспериментировать там с движком для энтузиастов - милое дело ;)
5. Stackless Python. С возможностью переключения стека C.
6. Self-Документирование. Так, открыв питон (сам интерпретатор). Пишем import sys. Затем help(sys). Весело? А теперь представьте - копаетесь вы в какой-нибудь программке. И запутались. И прям там в середине кода help(ЧТО_УГОДНО). И в консоли где порграмма исполняется будет help.
7. Питон легко может стать "связующим" языком. В него легко писать модули на Си. Ничуть не сложнее в программу на Си вставиьт интерпретатор питона. Не сложнее и в Яву питон впихнуть (Jython). И наоборот. В итоге питон и впихивают везде и вся. Скоро и Mozilla обещает в Firefox вставить наряду с JS. А пользователи линукса наверное уже давно заметили что и в муз. плеере и в граф. приложениях - уже везде можно писать скрипты на питоне :)
8. Python vs Perl: они достойны друг друга.
9. Python vs Ruby = Django vs ROR. RoR чертовски хорошо. А django оказывается почти на 300% быстрее :). В Ruby ещё подкупают блоки и концепция "всё - объекты" (очень уж легко читается: 5.times { do_something })
10. Библиотека скриптов. Так или иначе но и веб-сервер и работа с тегами - ну прям все там есть.
11. Python vs PHP: PHP Manual ROCKS! Начинающим (тем кто впервые программить садится) в питон лучше не лезть.
12. Встроенная возможность (и необходимость) компиляции в байткод. А так же сохранение этой стадии в виде файла *.pyc или *.pyo. После чего возможно распространение только байткода без полных исходников.
13. Segfault у меня у него получается выбить куда реже чем у PHP, например %)
14. Генераторы. Да.
В качестве огормного ЖИРНОГО минуса - GIL. Или Global Interpreter Lock. Из-за этого урода 8-ядерный сервер можно загрузить только на треть или чуть более (где то 250% из 800% у меня получалось). Т.е. конкуретное исполнение кода (необходимый минимум для GUI приложений) в питоне есть, но вот эффективной многопоточности - нет (пока?).
Сейчас питон уже популярен. И вы даже не представляете насколько. В России разрабтчиков днём с огнём не сыщешь. А ведь его уже ставят в практически все дефолтные поставки дистрибутивов линукс. Яву, знаете ли не пихают. PHP тем более. Перл - да. Но я же сказал они друг друга стоят ;).
Я вот питон люблю. С каждым днём все больше. Уж и не помню в чем была такая необходимость его изучить. Наверное Пол Грэхэм. И его эссе "Python Paradox" (погугл... поищите!). А с тех пор постоянно нахожу в нём что то новое (чего только стоило понять возможность расшаривания состояний между объектами вместо паттерна одиночки!).. И кажется нет этому конца и края %)
Кстати многое в статье относится только к Python 2.4
Например в Python 2.5 мы уже имеем очень весёлую модель исключений:
try:
except:
..
else:
..
finally:
..
Так же появился оператор with... =)
Кстати говоря "научить" язык пониманию скобок и традиционного синтаксиса - в общем-то, легко. Кажется такой проект в инете где-то есть... Понимать отступы сложнее чем искать скобки %)
высокая читабельность кода получается из жестких требований к отступам.
в пхп вы могли бы написать
if () {
..
}
if () { .. }
if ()
{
..
}
и даже
if ()
{ .. }
в питоне же - вариант только один
if cond:
..
так или иначе - получается что чьи бы исходники на питоне вы не открыли - везде будет только 1 вариант. И никак иначе. Особенно учитывая тот факт что фреймворки а-ля Zend и вовсе сейчас рекомендуют смешивать стили:
function asd()
{
}
if () {
..
}
Среду разработки лучше смотреть ту которая на питоне на самом и написана :) Заодно неплохой пример будет. wing ide скажем.
быстрее чем что? пула в зенде своего нет и не будет ибо это не осуществимо :)
он может-таки использовать pconnect в mysql библиотеке, в pdo и тп. Через driver_options в конфиге у фабрики Zend_Db
а если посмотреть чуть глубже и сообразить, что если в версии выше 1.0 они что-то переделают, то и способ подставки в autoload тоже переделают. А вам придётся постоянно дублировать их функциональность. Я уже не говорю о стандартизации и удобном понимании вашего кода другими разработчиками знакомыми с ZendFramework :).
да, кстати. Работая с Зендом всегда нужно иметь ввиду - если возникает какая-то идея по поводу реализации какой-то фичи, то в 90% случаев это уже есть в зенде либо скоро будет. По крайней мере ленится и периодически заглядывать в сёрсы зенды (поучится хотя бы :)) явно не нужно.
там вообще впринципе мало что понятно. Но можно выдрать extract_good_source() (убивает require, комментарии, whitespace левый... :)
принцип - запускать через бразуер, чтобы был доступ к APC (статистика по загрузке файлов тащится оттуда). В проекте уже это портировано с APC на XCache - если надо, могу выложить (почти тоже самое в общем-то). Так вот. Смотрит в xcache/apc по файлам. Находит те у которого больше всгео запросов. Считает их как выполняющиеся "всегда". Затем у остальных файлов выстраивает процент - сколько типа грузится. Рисует табличку на экране и красным показывет те новые штуки, что он выбрал но в массиве autoloadfiles не обнаружил. Берём файлик и руками пишем в autoloadfiles. Перезапускаем скрипт с ?SAVEFILE и он всё соберёт. Just for example.
>>> a = 'asd'
>>> a.__len__()
3
Сам Ruby медленнее Python. Дело не в рельсах и не в django. Тот уровень ООП, который присутсвует в Ruby требует времени. Много. Осмелюсь предположить, Ruby никогда не будет быстрее Python. И уж точно будет медленнее Python+PSYCO. Имхо.
p.s. возможно всё, но вот какими усилиями и далеко не каждому... :)
виртуальные выделенные сервера это наше все. Если уж проект до цельного сервера пока не дорос :).
Да и о питоне тут мало. Мало хорошего.
1. Многопоточность (пусть и с GIL, но все же)
2. Сильное ООП. Особенно радуют возможности манипуляции классов. Так, паттерн Singleton на питоне невозможен. Зато можно "расшарить" состояние объектов между их инстанциями. Куда более продвинутый и чаще нужный вариант.
3. Скорость. СКОРОСТЬ! Особенно если взять psyco (иногда получится быстрее чем C и это не шутка).
4. Изобретай-не-хочу. Есть PyPy. Питон написанный на питоне. Экспериментировать там с движком для энтузиастов - милое дело ;)
5. Stackless Python. С возможностью переключения стека C.
6. Self-Документирование. Так, открыв питон (сам интерпретатор). Пишем import sys. Затем help(sys). Весело? А теперь представьте - копаетесь вы в какой-нибудь программке. И запутались. И прям там в середине кода help(ЧТО_УГОДНО). И в консоли где порграмма исполняется будет help.
7. Питон легко может стать "связующим" языком. В него легко писать модули на Си. Ничуть не сложнее в программу на Си вставиьт интерпретатор питона. Не сложнее и в Яву питон впихнуть (Jython). И наоборот. В итоге питон и впихивают везде и вся. Скоро и Mozilla обещает в Firefox вставить наряду с JS. А пользователи линукса наверное уже давно заметили что и в муз. плеере и в граф. приложениях - уже везде можно писать скрипты на питоне :)
8. Python vs Perl: они достойны друг друга.
9. Python vs Ruby = Django vs ROR. RoR чертовски хорошо. А django оказывается почти на 300% быстрее :). В Ruby ещё подкупают блоки и концепция "всё - объекты" (очень уж легко читается: 5.times { do_something })
10. Библиотека скриптов. Так или иначе но и веб-сервер и работа с тегами - ну прям все там есть.
11. Python vs PHP: PHP Manual ROCKS! Начинающим (тем кто впервые программить садится) в питон лучше не лезть.
12. Встроенная возможность (и необходимость) компиляции в байткод. А так же сохранение этой стадии в виде файла *.pyc или *.pyo. После чего возможно распространение только байткода без полных исходников.
13. Segfault у меня у него получается выбить куда реже чем у PHP, например %)
14. Генераторы. Да.
В качестве огормного ЖИРНОГО минуса - GIL. Или Global Interpreter Lock. Из-за этого урода 8-ядерный сервер можно загрузить только на треть или чуть более (где то 250% из 800% у меня получалось). Т.е. конкуретное исполнение кода (необходимый минимум для GUI приложений) в питоне есть, но вот эффективной многопоточности - нет (пока?).
Сейчас питон уже популярен. И вы даже не представляете насколько. В России разрабтчиков днём с огнём не сыщешь. А ведь его уже ставят в практически все дефолтные поставки дистрибутивов линукс. Яву, знаете ли не пихают. PHP тем более. Перл - да. Но я же сказал они друг друга стоят ;).
Я вот питон люблю. С каждым днём все больше. Уж и не помню в чем была такая необходимость его изучить. Наверное Пол Грэхэм. И его эссе "Python Paradox" (погугл... поищите!). А с тех пор постоянно нахожу в нём что то новое (чего только стоило понять возможность расшаривания состояний между объектами вместо паттерна одиночки!).. И кажется нет этому конца и края %)
Кстати многое в статье относится только к Python 2.4
Например в Python 2.5 мы уже имеем очень весёлую модель исключений:
try:
except:
..
else:
..
finally:
..
Так же появился оператор with... =)
Кстати говоря "научить" язык пониманию скобок и традиционного синтаксиса - в общем-то, легко. Кажется такой проект в инете где-то есть... Понимать отступы сложнее чем искать скобки %)
в пхп вы могли бы написать
if () {
..
}
if () { .. }
if ()
{
..
}
и даже
if ()
{ .. }
в питоне же - вариант только один
if cond:
..
так или иначе - получается что чьи бы исходники на питоне вы не открыли - везде будет только 1 вариант. И никак иначе. Особенно учитывая тот факт что фреймворки а-ля Zend и вовсе сейчас рекомендуют смешивать стили:
function asd()
{
}
if () {
..
}
Среду разработки лучше смотреть ту которая на питоне на самом и написана :) Заодно неплохой пример будет. wing ide скажем.
helloworld (лучше уж game over :))
hello.py:
#!/usr/bin/env python
print "Hello, World!"
#sh >python hello.py
:)
он может-таки использовать pconnect в mysql библиотеке, в pdo и тп. Через driver_options в конфиге у фабрики Zend_Db
:-) будьте внимательны
принцип - запускать через бразуер, чтобы был доступ к APC (статистика по загрузке файлов тащится оттуда). В проекте уже это портировано с APC на XCache - если надо, могу выложить (почти тоже самое в общем-то). Так вот. Смотрит в xcache/apc по файлам. Находит те у которого больше всгео запросов. Считает их как выполняющиеся "всегда". Затем у остальных файлов выстраивает процент - сколько типа грузится. Рисует табличку на экране и красным показывет те новые штуки, что он выбрал но в массиве autoloadfiles не обнаружил. Берём файлик и руками пишем в autoloadfiles. Перезапускаем скрипт с ?SAVEFILE и он всё соберёт. Just for example.