Теперь моя очередь стрелять.
Лирические отступления в теме никогда не мешают, если они не заходят слишком далеко. Без них, на мой взгляд, тема выглядит довольно скучно.
Доктор
Как известно из врачебной практики, хронические больные лечению не поддаются.
Итак, тема нашей дружелюбной дискуссии -- питон.
А вот и обещаное:
*) синтаксис более краток и логичен:
блоки задаются равными отступами, а не фигурными скобками => хороший стиль записи программ
в инструкциях нет лишних скобок
перед переменной не нужен знак доллара $
нет лишних ключевых слов при множественном присваивании типа присутствующих в PHP "list", "array", при создании кортежов, списков, словарей
использование "." вместо "->"
более продуманные мелочи типа file.read(size) читает size байт из файла и возвращает в виде строки. Если size отсутствует, то читает до конца файла
'Fun'*3 эквивалентно 'Fun'+'Fun'+'Fun'.
Сколько раз Вам приходилось выяснять, что ошибка в программе на PHP связанна с использованием оператора "=" вместо "=="?
Условные операторы на питоне м.б. записаны в цепь.
Вот хороший пример на питоне:
PHP:
if 1900 < year < 2100 and 1 <= month <= 12 \
and 1 <= day <= 31 and 0 <= hour < 24 \
and 0 <= minute < 60 and 0 <= second < 60:
#правильная дата
return 1
Еще один пример функции print, которая может использоваться для вывода данных в файл, а не на печать
PHP:
>>> f = open('/tmp/tmp1', 'wb')
>>> print >> f, 'test'
>>> f.close()
*) В питоне это не пройдет (требуется приведение типов):
'3' + 4
Не получится получить элемент последовательности (в PHP это массивы) по индексу/ключу, если он выходит за ее пределы,
в этом случае сгнерируется исключение IndexError/KeyError.
И все это правильно, это избавит от множества скрытых семантических ошибок.
*) Операция получения последовательности по срезу (slice),
аналогичная функциональность которых в PHP достигаются только через вызов функций
а в питоне это сделано на уровне синтаксиса! Очень полезная вещь!
*) наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary)
в PHP схож только массив.
3 типа вместо одного позволяет делать более читабельный и оптимальный код
*) компиляция в байт код при первом исполнении скрипта, при повторном вызове исполнение байт кода.
в PHP компиляция в байт код происходит при каждом вызове скрипта
(* для PHP для есть расширения, позволяющие это сделать, но они не не входят в стандартную поставку)
*) перечисление параметров функции (метода) м.б. произвольное,
в PHP только в том порядке, в котором они перечислены (именованные аргументы функции).
*) присваивание в Python происходит следующим образом:
если присваеваемый объект является экземпляром таких типов как числа или строки,
то действует семантика копирования, если же в правой части стоит экземпляр класса,
список, словарь или кортеж, то действует семантика указателей (ссылок).
Для объектов в PHP это сделали только в 5-й версии.
Копирование - медленный процесс + расход памяти.
*) Обработка исключительных ситуаций
появилась в PHP только в 5-й версии, но в питоне предоставляются дополнительные возможности
(см. документацию)
*) В PHP4 И в PHP5 класс может наследовать только один класс,
то есть множественное наследование не поддерживается
*) Встроенный юникод
строки м.б. в юникоде, и с ними корректно работают регулярные выражения.
*) Встроенная документация
object.__doc__
*) импорт имен (функций, классов, переменных и т.д.) из модуля.
from module import obj_list
можно все сразу, а можно по отдельности.
*) создание GUI интерфейсов
wxPython is a GUI toolkit for the Python programming language. It
allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily. It is
implemented as a Python extension module that wraps the popular
wxWidgets cross platform GUI library, which is written in C++.
*) "У PHP4 на самом деле не было объектной модели. Объекты были лишь базовыми типами, внутри состоящими из двух таблиц имён: таблицы функций и таблицы переменных. Это делало объекты непредсказуемыми, непонятными и неэффективными. А самым отвратительным было то, что где бы вы не использовали объекты, вы должны были передавать их по ссылке."
Стерлинг Хьюз (http://detail.phpclub.ru/article/sterling_notes)
-~{}~ 31.08.04 22:42:
su1d
там проблема не в языке, на котором написана либа, а в SQL-e: в механизме хранения данных.
я и не говорил, что проблема в языке, ты меня, видимо, не понял. Про механизм хранения данных я в курсе, мной написан более универсальный аналог DBTree.
Про патч Макса не знал, спасибо.
хотя... если ты за 4 года и РНР не выучил и даже не понял, то лучше вообще не приходи.
Мне нравится политика партии.
Кто не с нами -- тот против нас? Да?
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)