Python набирает обороты

Raziel[SD]

untitled00
Rin
Чем тебе не понравились условия?
Регул. выражения в javascript, например, не поддерживают нежадность, вполне жизненный пример
Давайте поговорим о птичках - у бегемота такая жопа и ни одного перышка.

Тут идет уже вторая(хех, я начал третью:)) страница флейма, но так и не вижу преимуществ Питона перед PHP, и пока их не будет нет смысла продолжать данную тему.
 

su1d

Старожил PHPClubа
Например, написать один SQL-запрос для переноса узлов в дереве вложенных множеств для класса DBTree, так никто и не смог
малтшык! бегом к доктору!
там проблема не в языке, на котором написана либа, а в SQL-e: в механизме хранения данных.

тем более, насколько мне известно, никто пока ещё не жаловался на патч Макса.

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

Доктор

Новичок
Romantik:
Слава богу, умным меня делает не тявканье, а отсутствие такового, помимо всего прочего...
А слюна, разбрызгиваемая регулярно некоторыми гражданами здесь на форуме по самым ничтожным поводам и без них, монитор изнутри пачкает настолько, что сюда приходить лишний раз не хочется.
 

Demiurg

Guest
Доктор
нынешний пост, кроме как "тявкание" от твоего Рина не назавешь.
 

Доктор

Новичок
Romantik: очень предсказуемо.

Demiurg: во-первых, почему моего? Во-вторых, "назовешь". В-третьих, не знаю, какой "нынешний пост", но читая эту ветку сначала в общем-то все понятно. И дело даже не в том, кто прав или не прав по существу, а в том, кто как выражает свои мысли (или оформляет их отсутствие). Сразу видно виртуалов, забывших, что такое нормальное общение...
 

Demiurg

Guest
Доктор
И в чем же ненормальность общения в данном топике ?
 

Доктор

Новичок
Demiurg: сейчас начну дергать по одной цитаты и слушать в ответ: "и это все, что ты, козел, сумел найти? А чего тогда выступал?"
В общем, если ты сам не видишь, то я просто и не стану объяснять. Надеюсь, ты не обидишься...
 

Crazy

Developer
Доктор, почему бы из уважения к автору треда тебе не перенести обсуждение общекультурных аспектов общения на форуме в другой тред?

Спасибо.
 

Rin

*
Теперь моя очередь стрелять. ;)

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

Доктор
Как известно из врачебной практики, хронические больные лечению не поддаются.

Итак, тема нашей дружелюбной дискуссии -- питон. :)

А вот и обещаное:

*) синтаксис более краток и логичен:
блоки задаются равными отступами, а не фигурными скобками => хороший стиль записи программ
в инструкциях нет лишних скобок
перед переменной не нужен знак доллара $
нет лишних ключевых слов при множественном присваивании типа присутствующих в 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 года и РНР не выучил и даже не понял, то лучше вообще не приходи.
Мне нравится политика партии.
Кто не с нами -- тот против нас? Да? :)
 

Raziel[SD]

untitled00
*) наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary)
в PHP схож только массив.
подробнее о том что это за зверь, чем он так хорошо и почему без него очень жить очень плохо.
3 типа вместо одного позволяет делать более читабельный и оптимальный код
Разве в PHP только один тип у переменных ? или я что-то не понял ?
из мануала:
PHP supports eight primitive types.

Four scalar types:


boolean

integer

float (floating-point number, aka 'double')

string

Two compound types:

array

object

And finally two special types:

resource

NULL
*) компиляция в байт код при первом исполнении скрипта, при повторном вызове исполнение байт кода.
в PHP компиляция в байт код происходит при каждом вызове скрипта
(* для PHP для есть расширения, позволяющие это сделать, но они не не входят в стандартную поставку)
Насколько мне известно, значительно быстрее от этого скрипты на питоне не работают.
*) перечисление параметров функции (метода) м.б. произвольное,
в PHP только в том порядке, в котором они перечислены (именованные аргументы функции).
это мне не совсем понятно
*) В PHP4 И в PHP5 класс может наследовать только один класс,
то есть множественное наследование не поддерживается
Не особо оно и нужно, я еще не встречал случая когда мне оно было действительно нужно, и без него нельзя было обойтись.
*) Встроенная документация
object.__doc__
это то, чего так нехватает в PHP :)
*) импорт имен (функций, классов, переменных и т.д.) из модуля.
from module import obj_list
можно все сразу, а можно по отдельности.
что это дает ?

нет смысла обсуждать вещи, которых нет в PHP4, но они появились в пятой версии, т.к. к тому времени когда можно будет писать что-то серьезное на питоне, пятый PHP будет довольно распространен.
 

Demiurg

Guest
Честно говоря, не ожидал подобного поворота событий.
Питона я не знаю, поэтому просто выскажу несколько сомнений, которые возникают у меня глядя на этот список.

>блоки задаются равными отступами, а не фигурными скобками
>=> хороший стиль записи программ
>в инструкциях нет лишних скобок
хотелось бы пример. А то звучит как реклама.

>использование "." вместо "->"
приемущество в том, чтопечатать меньше ?

>более продуманные мелочи типа file.read(size) читает size
>байт из файла и возвращает в виде строки. Если size
>отсутствует, то читает до конца файла
не понимаю, чем это лучше fread ?

>Сколько раз Вам приходилось выяснять ...
вот отсюда и до кода я ничего не понял,кроеме как то, что вопрос из деталей...

>>>> print >> f, 'test'
не понимаю, чем это лучше fputs

>Не получится получить элемент последовательности (в PHP
>это массивы) по индексу/ключу, если он выходит за ее
пределы
а в php при разработке принято включать вывод ошибок.

>Операция получения последовательности по срезу (slice),
>аналогичная функциональность которых в PHP достигаются
>только через вызов функций
>а в питоне это сделано на уровне синтаксиса! Очень полезная вещь!
примера нет, так что говорить не о чем.

>перечисление параметров функции (метода) м.б. произвольное,
>в PHP только в том порядке, в котором они перечислены (именованные аргументы функции).
это как ? а как же параметры по умолчанию ?

> присваивание в Python происходит следующим образом: ....
в php наблюдается использование техники copy on write, в питоне тоже ?

>*) Встроенная документация
>object.__doc__
очень позновательно

>импорт имен (функций, классов, переменных и т.д.) из модуля.
а что есть модуль ?

>*) создание GUI интерфейсов
php дизигнед фор веб, зетс вай зерес но ризон то дискас итс гуи посабилити
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Rin
*) компиляция в байт код при первом исполнении скрипта, при повторном вызове исполнение байт кода.
в PHP компиляция в байт код происходит при каждом вызове скрипта
(* для PHP для есть расширения, позволяющие это сделать, но они не не входят в стандартную поставку)

*) импорт имен (функций, классов, переменных и т.д.) из модуля.
from module import obj_list
можно все сразу, а можно по отдельности.
вот это я бы из преимуществ и оставил. всё остальное --- либо несущественные синтаксические различия, либо, как бы это помягче, результат недостаточного изучения вопроса.

отсутствие компиляции в байт-код --- последствия бизнес-стратегии фирмы Zend (то есть вряд ли будет исправлено, разве что Zend'овцы обанкротятся), почему задавили import --- не помню...
 

Screjet

Новичок
>синтаксис более краток и логичен:
блоки задаются равными отступами

Ха-Ха(2раза).

Всякие разделители как раз повышают читабельность кода. Их отсутствие (пример VB) наводит на сомнения правильности синтаксиса еще на этапе кодинга. Без case-средств (тот же VB) не актуален. Своеобразный ход конем (имхо).

>наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary)

Везде должен быть разумный предел. Напридумывать можно чего угодно. Но в основе так и останется хеш-функция. (В жабе, например, нет массивов).

Ну и главное:
>В питоне это не пройдет (требуется приведение типов):

Вот и приплыли. Один знакомый програмер писАл сайт на жаве, и я работал примерно над тем же в ПХП. Тока кода у него получилось 300Кб, а у меня 50Кб. "В чем сила, брат?" (с)
 

Макс

Старожил PHPClub
Rin
вот с этого и надо было начинать.

*) синтаксис более краток и логичен:
блоки задаются равными отступами, а не фигурными скобками => хороший стиль записи программ
в инструкциях нет лишних скобок
ИМХО здесь преимущество лишь в том, что все программисты вынуждены писать в одном стиле и все исходники легче читать.
С краткостью синтаксиса - согласен.

перед переменной не нужен знак доллара $
как раз наоборот знак доллара повышает читабельность, поскольку сразу видно что имеем дело с переменной.

Не получится получить элемент последовательности (в PHP это массивы) по индексу/ключу, если он выходит за ее пределы,
в этом случае сгнерируется исключение IndexError/KeyError.
И все это правильно, это избавит от множества скрытых семантических ошибок.
я вроде тебе уже писал про error_reporting(E_ALL);
Исключений он конечно не генерирует, но нотайсы тоже помогают.
*) наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary)
в PHP схож только массив.
3 типа вместо одного позволяет делать более читабельный и оптимальный код
ну, оптимальность, может быть. А вот при чем здесь читабельность ?
PHP:
 print  t[1];
что делает этот участок кода ? Выводит элемент списка или кортежа ?
*) присваивание в Python происходит следующим образом:
если присваеваемый объект является экземпляром таких типов как числа или строки,
то действует семантика копирования, если же в правой части стоит экземпляр класса,
список, словарь или кортеж, то действует семантика указателей (ссылок).
Для объектов в PHP это сделали только в 5-й версии.
Копирование - медленный процесс + расход памяти.
в пхп4 программист может сам решать, когда ему нужна ссылка а когда копирование
*) Обработка исключительных ситуаций
появилась в PHP только в 5-й версии, но в питоне предоставляются дополнительные возможности
(см. документацию)
+ 1 питону. Мне пока реализация исключений в ПХП не нравится
*) Встроенная документация
object.__doc__
читай в мане по ПХП5 Reflection API
*) импорт имен (функций, классов, переменных и т.д.) из модуля.
from module import obj_list
можно все сразу, а можно по отдельности.
согласен с Saq Spirit-ом, это плюс питону.

*) создание 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)
уже 5-ая версия вышла.

Я бы еще к плюсам питона добавил наличие стаблильной библиотеки для работы с тредами (threads).

А теперь о недостатках.
1. Непродуманость имен некоторых функций.
Кто из программеров, не знающих питон угадает, что делают функции
dir(), zip()

2. Насколько я понял программер не может создавать свои константы.
Или я неправ ?

3. ООП в ПХП5 более функциональное чем в питоне. Хотя в питоне есть множественное наследование.

4. Что в питоне применяется для реализации механизма сессий ?

5. Я уже писал об этом (но ты тактично не прокомментировал).
Хостеры предоставляют доступ к питону через CGI что замедляет работу.

6. есть ли в питоне аналоги SimpleXML ?

7. Какие есть ли средства для генерирования PDF-файлов ?

8. ПХП имеет большее кол-во функций для работы с массивами и строками (в стандартной поставке)

-~{}~ 01.09.04 01:38:

9. есть ли в питоне аналоги mysql_unbuffered_query() ?
 

Crazy

Developer
Автор оригинала: Rin
*) синтаксис более краток и логичен:
Что "краткого и логичного" в том, что каждому методу нужно явным образом описывать параметр, который в PHP всегда доступен как $this?

блоки задаются равными отступами, а не фигурными скобками => хороший стиль записи программ
Причем табуляции приравниваются к НЕКОТОРОМУ количеству пробелов, которое может не совпадать у пишущего и исполняющего, что ведет к трудновылавливаемым семантическим ошбкам.

в инструкциях нет лишних скобок
Хорошо бы с примерами.

перед переменной не нужен знак доллара $
С этим согласен.

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

использование "." вместо "->"
И в чем достоинство такой замены?

более продуманные мелочи типа file.read(size) читает size байт из файла и возвращает в виде строки. Если size отсутствует, то читает до конца файла
...причем никак не сообщает о том, что прекратила чтение досрочно. И это "продуманные мелочи"? А file.readlines -- это тоже продуманный дизайн?

'Fun'*3 эквивалентно 'Fun'+'Fun'+'Fun'.
Это что, концептуальное преимущество языка? :) Оно так улучшает жизнь, чо побуждает сменить язык?

Сколько раз Вам приходилось выяснять, что ошибка в программе на PHP связанна с использованием оператора "=" вместо "=="?
Практически никогда. Hint: даже создавая C++, в нем оставили эту "нелогичность".

Условные операторы на питоне м.б. записаны в цепь.
Цепные условные операторы или тернарные сравнения? Твой пример иллюстрирует второе.

Еще один пример функции print, которая может использоваться для вывода данных в файл, а не на печать
В PHP есть fprintf, к твоему сведению. В чем именно достоинство твоего примера?

PHP:
>>> f = open('/tmp/tmp1', 'wb')
>>> print >> f, 'test'
>>> f.close()

В питоне это не пройдет (требуется приведение типов):
'3' + 4
Это достоинство или недостаток? :)

Не получится получить элемент последовательности (в PHP это массивы) по индексу/ключу, если он выходит за ее пределы, в этом случае сгнерируется исключение IndexError/KeyError.
Говоришь, 4 года PHP изучал?

PHP:
<?php
$a = array();
$a[1] = 2;
echo $a[2];
?>
Ответ при исполнении: "PHP Notice: Undefined offset".

аналогичная функциональность которых в PHP достигаются только через вызов функций а в питоне это сделано на уровне синтаксиса!
Что конкретно потерял PHP за счет того, что это делается через функцию?

*) наличие таких встроенных в сам язык структур как кортежи (tuple), списки (list) и словари (dictionary)

в PHP схож только массив.
Кортежи, как и множественное присваивание, есть один из источников ошибок. Что дол массивов PHP, то они И ЕСТЬ списки и словари из Python. Сведение в один тип имеет как плюсы, так и минусы.

3 типа вместо одного позволяет делать более читабельный и оптимальный код
За оптимальность не скажу, а по читаемости есть строго обратные мнения.

в PHP компиляция в байт код происходит при каждом вызове скрипта

(* для PHP для есть расширения, позволяющие это сделать, но они не не входят в стандартную поставку)
Ты уж определись -- есть они или нет.

*) перечисление параметров функции (метода) м.б. произвольное,
в PHP только в том порядке, в котором они перечислены (именованные аргументы функции).
Формально -- согласен. Но это имеет смысл только для функций с большим числом параметров. Однако, создание таких функций есть грубая ошибка дизайна.

*) присваивание в Python происходит следующим образом:
Переменная семантика присваивания не является однозначным плюсом, ибо ухудшает читаемость программы.

*) В PHP4 И в PHP5 класс может наследовать только один класс,
то есть множественное наследование не поддерживается
Множественное наследование не относится к необходимым вещам в языках без жесткой типизации. Более того, оно порождает больше проблем, чем решает. Кстати, примененное в Python правило разрешения неизбежных при множественном наследовании конфликтов методом "depth-first, left-to-right" мягко говоря неудобно.

*) Встроенный юникод
строки м.б. в юникоде, и с ними корректно работают регулярные выражения.
Плюс. Но плюс не языка, а реализации.

*) Встроенная документация
object.__doc__
Прекрасно. Расскажи, please, как, на твой взгляд, этим надлежит пользоваться на практике.

*) импорт имен (функций, классов, переменных и т.д.) из модуля. from module import obj_list
можно все сразу, а можно по отдельности.
С этим согласен.

*) создание GUI интерфейсов
Это можно применить там, где используется PHP? Нет? Отбрасываем.

Хьюз имеет право на свое мнение. И только.
 

Demiurg

Guest
>Практически никогда. Hint: даже создавая C++, в нем оставили эту "нелогичность".
кстати, как в питоне будет выглядеть такая конструкция:
if($row=mysql_fetch_assoc($result))
?
 

nw

Новичок
Добавлю и свой плюсик к PHP - он похож по синтаксису на некоторые другие языки, что облегчает программисту работу, если ему приходится писать на нескольких языках (а таких вполне много). На какой из популярных языков очень похож питон?
Хотя изначально этой беседе был задан неверный тон. Залезть в форум PHP-разработчиков и сказать "Питон лучше!" это не совсем корректно. Если только не ставишь себе цель пофлеймить.
 
Сверху