"PHP" / Говнокод #3608 Ссылка на оригинал

0

  1. 1
http://wiki.php.net/rfc/functionarraydereferencing

На днях наткнулся вот такую ночную вазу с хорошо выдержанным содержимым.
Копипастить не буду, просто загляни под крышку.
Речь идет о том чтобы спустя 10 лет наконец пропатчить невозможность обращения к элементу массива без использования промежуточной переменной, если массив возвращается функцией (коих функций в Personal Home Page сотни).
Также обратите внимание на даты.

Запостил: bugmenot bugmenot, (Updated )

Комментарии (59) RSS

  • Помнится, когда я после JS начал раскуривать PHP, мне здорово не хватало этой штуки. Ещё вот такую хотелось бы:
    (new SomeObject())->someMethod();

    Также хочу заметить, что всё-таки, имхо, обсуждать недоработки и костыли в ПО, а не конкретный код - это немного оффтоп.
    Ответить
    • На мой взгляд, язык программирования, в который спешно добавили поддержку классов, но не хотят добавить поддержу выражений уже сам по себе символизирует. Безусловно, спойлер, раскрывающий секрет бешеной популярности PHP на ГК. Однако, согласен, возможно лучше было бы наложить это в кучу.
      Ответить
      • ничего тут символичного нету. если обсуждения по линку почитаешь, увидишь что отклонялось ранее по тому что: (1) пхп разработчики были заняты чем то более важным, (2) были проблемы с гарбадж коллекшн, (3) полноценную поддержку (не только для массивов но и для других типов) на скорую руку сделать бы не получилось.
        Ответить
        • Мде, в серьёзных пороектах такие "проблемы" фиксят за пару часов. Видимо, сам ПХП написан с применинем жуткого количества ГК, так что там парсер весь надо переписывать, чтобы подключить эту фичу. Хорошая кстати идея - поищу-ка говно в исходниках их.
          Ответить
          • ага. за пару часов. попробуй сам язык написать, который поддерживает хотя бы половину того что умеет пхп.

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

              А ПХП написан за пару часов? О_о Тогда всё понятно...
              Ответить
            • Если код пишется копипастом и хаками, то взятие индекса из возвращаемого массива конечно будет трудно реализовать.
              А если архитектура продуманная - то добавить это - ну максимум пара дней (по идее нужна только пара строк, чтобы просто свести одно с другим). Или они жуткие лентяи, или жуткие говнокодеры.

              > и проблем там с парсером даже не упоминалось...

              Тогда в чём проблема? Я, может, плохо знаю пхп (свят-свят), но здесь ведь проблема только синтаксическая. Или в пхп всё езё хуже, и он не может делать автоматические временные переменные?
              Ответить
              • Лол, зыкаю исходники php, буквально первая же попавшаяся строчка на си:

                filespec = (char *)malloc(strlen(dir) + 2 + 1);


                Накаких комментариев, почему 2 + 1, конечно же нету.. (их там вообще нету)
                Ответить
                • пыхапэ вообще отличный.

                  var_unserializer.c

                  if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
                  	yych = *YYCURSOR;
                  	switch (yych) {
                  	case 'C':
                  	case 'O':	goto yy13;
                  	case 'N':	goto yy5;
                  	case 'R':	goto yy2;
                  	case 'S':	goto yy10;
                  	case 'a':	goto yy11;
                  	case 'b':	goto yy6;
                  	case 'd':	goto yy8;
                  	case 'i':	goto yy7;
                  	case 'o':	goto yy12;
                  	case 'r':	goto yy4;
                  	case 's':	goto yy9;
                  	case '}':	goto yy14;
                  	default:	goto yy16;
                  	}
                  Ответить
              • > Тогда в чём проблема?

                лень по линку сходить? читать не умеешь? цитирую (самого себя) для идиотов еще раз причины:

                "(1) пхп разработчики были заняты чем то более важным, (2) были проблемы с гарбадж коллекшн, (3) полноценную поддержку (не только для массивов но и для других типов) на скорую руку сделать бы не получилось."
                Ответить
                • > (1) пхп разработчики были заняты чем то более важным

                  Чем?

                  > (2) были проблемы с гарбадж коллекшн

                  А "гарбадж коллекшн" какого рода в ПХП?

                  > (3) полноценную поддержку (не только для массивов но и для других типов) на скорую руку сделать бы не получилось.

                  Почему?
                  Ответить
                  • а чего ты меня спрашиваешь? это причины которые были указаны пхп разработчиками. их и спрашивай что и почему. там по линку можно перейти на дискусии по поводу фичи. читай.

                    я понимаю если бы что-то серьёзное не работало. а так мелкий баг, на который реально может раз в год кто и натыкается. подняли шум...
                    Ответить
                    • > а так мелкий баг, на который реально может раз в год кто и натыкается

                      ничёсе..
                      Ответить
                • >были проблемы с гарбадж коллекшн
                  Использовать готовый и проверенный что-ли не могли? Говнокодеры...
                  Ответить
  • Ну наконецтож, особенно бесила невозможность if (in_array(parse_url($url)['host'], $blacklist)) сделать
    Ответить
    • за такую возможность мне в какой то мере нравился перл, хотя там много неоправданных сложностей
      Ответить
      • Да-да, в мэйллисте есть доставляющие возражения, что, мол, "не хотим, слишком перлово!" 🙂
        Ответить
        • вот почему пхп язык это сборище костылей: в погоне за двумя зайцами язык собирался
          Ответить
          • Предлагаю ещё php переписать под моно.
            Я-то думал Boehm GC, юзаемый в моно (кстати, в транке уже есть mono-sgen.exe, но только под линукс), - то ещё говнецо, но прочитав немного о "модели" памяти в PHP, я понял, что моно - прямо-таки state of the art в рантаймостроении, а Мигель де Иказа - гений.
            Ответить
                • Всё-таки как ни крути, но опенсорсники не умеют продумывать архитектуры и вообще не имеют вкуса. Руби - каша пубертатных хвастовств, питон - неопрятный, почти как пхп.
                  Ответить
                    • Опрятно это когда имена функций следуют определённой конвенции. В питоне функции тоже могут иметь то андерскор, то обходиться без него, классов могут быть с большой буквы, с маленькой...

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

                      Я вообще не люблю андерскоры, лично мне они кажутся неопрятными.
                      Ответить
                        • Это общее впечатление, не буду же я здесь каждую мелочь описывать.
                          Ответить
                          • канеш не надо ничего описывать, лучше сесть и наваять труЪ язык с запретом андерскоров =)
                            Ответить
                        • В C# всё цельно свели в единую систему.

                          Смори: ООП расширен до компонентной системы. C# это компонентно-ориентированный язык. Компонентная система использует события, чтобы можно было замыкать обработчик (делегат) события компонента на текущий контекст. Делегаты для простоты записи могут быть лямбдами. А отсюда и функциональщины недалеко.

                          Всё пронизано одной идей. Что там ещё в C# есть? Указатели, ref, signed целые -- для простоты p/invoke'а. И т. д.

                          Вот только LINQ, имхо, не в кассу.
                          Ответить
                            • Да нет, не в куче. Я хотел сравнить, да не закончил. Компонентность не мыслима без замыканий, то бишь лямбд. А вот теперь скажите, зачем лямбды в питоне? Он совершенно не компонентный по духу язык и события там не являются примитивным конструктом... И в то же время он далеко не функциональный... Т.е. чисто для понта ("какой крутой язык не обходится без лямбд?") и в кучу. Список можно продолжать.
                              Ответить
                            • Я ничё не имею против питона, и лямбды это всегда крута, но со стороны питон, руби, пхп, пёрл - действительно менее опрятные и продуманные, чем жаба, сишарп и даже дельфи (все первые придумывались пацанами в свитерах, все последние - компаниями, и тенденция налицо).
                              Ответить
                • > руби и петон
                  почему гении всегда такие извращенцы?
                  *ворчит* нет, что бы попроще и поэлегантней, что-то в стиле явы....
                  Ответить
  • Может оно и к лучшему
    Не хочу потом отлаживать типа такого $foo->bar()[2]->baz()[0]->buzz($arg)[0] (и ни одного коммента) за очередными сказочными долбоебами. один фиг все в итоге раскладывается на составляющие.
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8