Home
So high, so low, so many things to know - программистское, PHP [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программистское, PHP [Июн. 23, 2009|10:58 pm]
Previous Entry в избранное рассказать другу Next Entry
(Эта запись будет интересна разве что веб-программистам)

В новую версию PHP ввели оператор goto.

"Я вот никак не пойму: тебе что, мало того, что ты - негр?"
ссылкаОтветить

Comments:
[User Picture]From: [info]breqwas
2009-06-23 08:08 pm none (UTC)

(Link)

Был бейсик, теперь PHP, кто следующий?
[User Picture]From: [info]e_mir
2009-06-23 08:10 pm none (UTC)

(Link)

Ну, сначала был таки Фортран.
[User Picture]From: [info]vadimgoncharov
2009-06-23 08:12 pm none (UTC)

Хмм

(Link)

А где он может пригодиться?
[User Picture]From: [info]amarao_san
2009-06-23 09:21 pm none (UTC)

Re: Хмм

(Link)

очевидно же - для передачи управления на указанную строку указанного файла:

goto /var/www/site/admin.php 303
[User Picture]From: [info]stas
2009-06-24 04:52 am none (UTC)

Re: Хмм

(Link)

парсеры писать
во всяком случае, так это мотивировали те, кто его запросил
[User Picture]From: [info]ygam
2009-06-23 08:18 pm none (UTC)

(Link)

А оператор ALTER еще не внесли?
[User Picture]From: [info]avva
2009-06-23 08:27 pm none (UTC)

(Link)

Хаха, какая прелесть. Не знал о нем.

Оператор для Настоящих Программистов (ТМ).
From: [info]eresiarh
2009-06-23 08:23 pm none (UTC)

(Link)


Если в бочку говна добавить ложку говна, что изменится ?
From: [info]oleg_mu
2009-06-23 11:01 pm none (UTC)

(Link)

Хахахахаха!!!
[User Picture]From: [info]mikser
2009-06-23 08:31 pm none (UTC)

(Link)

Про негра - это из какого анекдота?
[User Picture]From: [info]ygam
2009-06-23 08:34 pm none (UTC)

(Link)

В Нью-Йорке в метро сидит негр и читает газету на идише. Мимо проходит еврей, и говорит: ...
(без темы) - (Анонимно) Expand
[User Picture]From: [info]vanja_y
2009-06-23 08:33 pm none (UTC)

(Link)

Gotично.
[User Picture]From: [info]nechaman
2009-06-23 08:40 pm none (UTC)

(Link)

лишь бы обидеть... А может кому-то надо?
[User Picture]From: [info]agaspher
2009-06-23 10:14 pm none (UTC)

(Link)

Кому, как известно, и кобыла - невеста.
[User Picture]From: [info]zanudka
2009-06-23 08:50 pm none (UTC)

(Link)

а я сегодня в коде на C обнаружила likely и unlikely :)
From: (Anonymous)
2009-06-25 05:32 am none (UTC)

(Link)

Они в ядре «Линукс» используются повсеместно.
[User Picture]From: [info]amarao_san
2009-06-23 09:24 pm none (UTC)

(Link)

ну, возможность делать goto по номеру строки из выражения была ещё на спектруме. Там ещё можно было делать go sub с переменной. ..Вычисляемой через $eval.
[User Picture]From: [info]emdin
2009-06-23 09:49 pm none (UTC)

(Link)

вот и правильно. не то OOP stuff; он был крайне неловко втиснут.
[User Picture]From: [info]ostap
2009-06-23 09:50 pm none (UTC)

(Link)

По-моему давно пора. Мне всегда казалось, что в PHP чего-то нехватает для полной гармонии. А теперь он приобрёл логическую завершенность.
From: [info]oleg_mu
2009-06-23 11:03 pm none (UTC)

(Link)

Полная гармония - в сомещении пхп и javascript. О_о... ПОЛНАЯ гармония...
[User Picture]From: [info]agaspher
2009-06-23 10:14 pm none (UTC)

(Link)

(плачет)
[User Picture]From: [info]o4kapuk.ru
2009-06-23 10:38 pm none (UTC)

(Link)

Не могу поверить, что раньше его не было. Как же без него умудрялись писать макаронный код?
[User Picture]From: [info]lasc
2009-06-23 11:10 pm none (UTC)

(Link)

мы так мучались, но теперь то заживем!
[User Picture]From: [info]_rowan_tree_
2009-06-24 12:37 am none (UTC)

(Link)

В связи с финансовым кризисом гранты не дают, физики переквалифицировались в веб-программисты, с фортрана на php :-)
[User Picture]From: [info]pargentum
2009-06-24 06:30 am none (UTC)

(Link)

А фон у этой странички нарочно такой сделан, чтобы никто ни о чем не догадался?
(без темы) - (Анонимно) Expand
From: [info]potan
2009-06-24 06:28 am none (UTC)

(Link)

Единственное достоинство пхп - популярность. И им, из-за этого, приходится пользоваться.
Лучший способ при этом не проблевать - использовать какой-нибудь компилятор нормальный язык в пхп.
А бекенду компилятора в целевой платформе goto полезен.
[User Picture]From: [info]and2u
2009-06-24 06:46 am none (UTC)

(Link)

Ааа!
Никогда не используй goto (цы) :-)
[User Picture]From: [info]rus_arbuz
2009-06-24 06:58 am none (UTC)

(Link)

Интересно, какой же скриптовый веб язык считается "нормальным"?
From: [info]silly_sad
2009-06-24 07:06 am none (UTC)

(Link)

C
From: [info]silly_sad
2009-06-24 07:06 am none (UTC)

(Link)

после того как я обнаружил, что:
(float)(string)(float)"1.5" != 1.5

прекратил пользоваться пхп совсем ибо это ни в какие ворота не лезет
[User Picture]From: [info]rus_arbuz
2009-06-24 07:14 am none (UTC)

(Link)

и чем же это плохо?
[User Picture]From: [info]rus_arbuz
2009-06-24 07:27 am none (UTC)

(Link)

Вообще, программирование это не только искусство в себе, но и инструмент, призванный решать конкретные задачи. С этой точки, гибкости и простоте решения задач при помощи PHP остальные языки могут только позавидовать. И даже goto, не является таким уж злом, как вдалбливают при обучении программированию. С точки зрения красоты кода - да, но не как быстрое решение конкретной задачи.
[User Picture]From: [info]alexis_m
2009-06-24 11:32 am none (UTC)

(Link)

Вот-вот. :-)
Вряд ли Дейкстре нравилось, что идею подняли чуть ли не на знамена инквизиции.
Хотя как знать.
From: (Anonymous)
2009-06-26 05:28 pm none (UTC)

goto is considered helpful. In my book.

(Link)

Когда-то, к 1970м, с развитием железа и т.д. программирование доросло до нужды писать более длинные программы. Естественно, им надо было придавать "структуру". Возникло движение за отрицание старых приемов работы, где экстремистом-лидером стал Дийкстра. Символом старого плотного кода, на который повесили ярлык "спагетти-кода" он (сознательно ли или нет) выбрал один оператор, GOTO, который якобы был главным виновником того, что у программ создавалась запутанная структура.
Лозунгом движения стала фраза "Goto is considered harmful".

"Structural programming" с операторами ветвлений и процедурами, было успешно внедрено, а GOTO стал главным программистским табу: практически каждый автор каждого курса программирования вспоминал о нем ровно один раз, давая пример, страшно после него извиняясь и посыпая голову всеми скопившимися запасами пепла, и объясняя что "все это можно реализовать без goto". Религия оказалась удивительно жизнестойкой - я читал статьи 95-2000 годов где "изучалось" какими структурами (логически неочевидными и дико громоздкими) можно заменить такие-то использования goto.
Еще лучше идолопоклонничество показывают отклики под этой заметкой: только двое оказались при своем мнении, остальные выступили как стадо леммингов.

Интересно, что кроме экстремиста-Дийкстры были и умеренные. Donald Knuth написал в ответ статью "программирование с оператором goto", где дотошно разбирал разные примеры его применения и оценивал сравнительную эффективность идиом, с или без goto.

ЕЩЕ БОЛЕЕ ИНТЕРЕСНО, ЧТО история с GOTO, который надо считать вредным, получила отклик к 1980м. Приняв как и все новую парадигму, Structural Programming, Дональд Кнут остался внутренне недоволен такой процедурой программирования, и выдумал свой способ, который он подавал как отдельную противостоящую парадигму, "Literate Programming".
Можно использовать встроенные процедуры поскольку это эффективно, но процентов 90 делений программы на куски делается человеком чтобы не запутаться, и машине они не были бы нужны (так, "оптимизирование" включает в себя разворачивание циклов или подпрограмм).
Literate Programming позволяет с помощью системы макро на естественном человеческом языке (вроде того, как объясняют идеи с помощью псевдокода) не потеряться, следить за мыслью на нескольких уровнях абстракции, и генерировать потом output из человечески понятного в машинный.

ВТОРОЕ ИНТЕРЕСНОЕ ЗАМЕЧАНИЕ заключается в том, что в истошности борьбы с GOTO революционеры СТруктурного Программирования не заметили, что структурирование, очень внятное, равносильное делению, скажем, на подпрограммы, можно делать именно с оператором GOTO. При этом (что признали даже они сами) он выполняется БЫСТРЕЕ (as there is less overhead), по крайней мере в C.

GCC extension, вычисляемые метки, позволяет вводить элемент программирования более высокого уровня.
Я, помню играл с этим в PErl'е чтобы попробовать идею - и да, получается гибко и удобно, и этими приемами можно даже делать объекты с encapsulation, которую обеспечивают простые фигурные скобки, в противовес громоздким кошмарам Ларри и неуклюжести of the default scheme.

Люди, понимающие подобное, пользуются goto вполне свободно. Например университетская разработка языка логического программирования с типами, Mercury, использует в implementation именно вычисляемые метки GOTO, которые им предоставляет GCC.

So in my book, GOTO is considered helpful. And 30-year-old religious sects and their sectarian taboos can go to hell.
Amen.
From: (Anonymous)
2009-11-02 09:01 pm none (UTC)

Re: goto is considered helpful. In my book.

(Link)

Откуда этот шедевр? Меня конкретно достали эти противники GOTO, начитавшиеся книжек по рефакторингу и считающие себя теперь умнее всех других!