Бурный срач про PHP

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Фиксация API - это контракт, явно выраженный в коде через интерфейсы, обеспечивается типизацией, нужно для реализации полиморфизма.
В Java, C#, Go и PHP это возможно, в Python и JS - нет. Аннотации - это другое.

Список зависимостей должен лежать не в библиотеке, а в самом приложении.
Если мне не нужна поддержка JPEG2000 в Image Magic - не надо ее ставить. Это я должен решать, а не автор питоновской библиотеки.

> async, генераторы, итераторы
:) с новым годом
ладно бы ты юникодовые строки в python вспомнил, но это просто чукча-нечитатель

>за 3 года с python я реально не думал ни разу ни о одной проблеме, с которой я постоянно сталкивался в PHP.
плохому танцору в php итераторов не хватает

>в golang я не вижу ни одной киллер фичи.
скорость, типизация, компилируемость, компактный бинарник под любой платформой без runtime
 
Последнее редактирование:

cDLEON

Онанист РНРСlub
Фиксация API - это контракт, явно выраженный в коде через интерфейсы, обеспечивается типизацией, нужно для реализации полиморфизма.
В Java, в C# и PHP это возможно, в Python и JS - нет. Аннотации - это другое.
Список зависимостей должен лежать не в библиотеке, а в самом приложении.
Если мне не нужна поддержка JPEG2000 в Image Magic - не надо ее ставить. Это я должен решать, а не разработчик библиотеки.

> async, генераторы, итераторы
:) с новым годом
ладно бы ты юникодовые строки в python вспомнил, но это просто чукча-нечитатель

>за 3 года с python я реально не думал ни разу ни о одной проблеме, с которой я постоянно сталкивался в PHP.
плохому танцору в php итераторов не хватает

>в golang я не вижу ни одной киллер фичи.
скорость, компилируемость, компактный бинарник под любой платформой без runtime,
Наш диалог напоминает мне
 

cDLEON

Онанист РНРСlub
@cDLEON, не спору ради а интересу. Из ссылки, которую ты прислал:

Код:
class Foo:
    def __getitem__(self, index):
        ...
    def __len__(self):
        ...
    def get_iterator(self):
        return iter(self)

class MyIterable(metaclass=ABCMeta):

    @abstractmethod
    def __iter__(self):
        while False:
            yield None

    def get_iterator(self):
        return self.__iter__()

    @classmethod
    def __subclasshook__(cls, C):
        if cls is MyIterable:
            if any("__iter__" in B.__dict__ for B in C.__mro__):
                return True
        return NotImplemented
__У__ __вас__ __там__ __принято___ __так__?

Я знаю, что в PHP магических методах тоже есть два подчеркивания в начале... но меня это не напрягает, пишется крайне редко и один раз. А вот так, каждое поле(судя по всему системное), писать напрягало бы сильно :)
Ну так эти функции\переменные тоже магические. Используются, в основном, в библиотеках. В бизнес логике очень редко.
 

LIME

Новичок
PHP может позволить себе очень быстрое развитие, сохраняя обратную совместимость.
нуууу...только вот пресловутый шаблонный код либо потеряет обратную совместимость либо навсегда останется злым legacy
ну и те же пресловутые array_... и подобные но без префикса...короче всем давно эти минусы оскомину набили
сохраняя обратную совместимость.
а когда там уже сделают utf в ядре?
HTMLSPESIALCHARS перешел незаметно почти на utf
но в общем и целом согласен
очень хорошо исправляют
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
нуууу...только вот пресловутый шаблонный код либо потеряет обратную совместимость
а когда там уже сделают utf в ядре?
utf в ядре сделали лет 10 назад :)

не знаю, что такое шаблонный код, не понимаю первую фразу
а про array_ - расширяй ArrayObject и SPL, допиши методы, пользуйся своим красивым API, я так делаю
неконсистентно, неакадемично, давай напишем это еще раз
 
Последнее редактирование:

LIME

Новичок
utf в ядре сделали 5 лет назад
нехорошо)) ведь понимаете о чем я))
я об mb_string
сделали??? правда???)))
не знаю, что такое шаблонный код
отсылаю к знаменитой статье "PHP фрактал плохого дизайна"
не верю что не читали
к примеру шаблонного кода strpos('a string', 'a') === false
 

LIME

Новичок
и пофиг решение по Zval с коллизиями массивов
все исправит SPL
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ты так пишешь, будто абстракции верхнего уровня - это плохо :)
проблемы legacy именно так и решаются - в python это библиотеки совместимости, virtualenv, pip, в JS это babel
 

LIME

Новичок
так дело же не в абстракциях
а в основе представления логики
совсем разные вещи
например исключения не в ядре а в верхнем уровне...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не мог бы ты выражаться общеупотребимыми терминами, значения которых можно найти в wiki?
я не знаю, что такое "основа представления логики"
 

LIME

Новичок
справедливо
я имею ввиду в основе операций не отделимых от конструкции самого яп
чтоб правильно меня понял приведу пример
можно написать try catch ... и работать будет...но ...это поверх языка? тоесть мы используем знание как лучше сделать вопреки яп или мы используем яп
 
Сверху