avva: (Default)
[personal profile] avva
(Эта запись будет интересна разве что веб-программистам)

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

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

Date: 2009-06-23 08:08 pm (UTC)
From: [identity profile] breqwas.livejournal.com
Был бейсик, теперь PHP, кто следующий?

Date: 2009-06-23 08:10 pm (UTC)
e_mir: (Default)
From: [personal profile] e_mir
Ну, сначала был таки Фортран.

(no subject)

From: [identity profile] oleg-mu.livejournal.com - Date: 2009-06-23 10:58 pm (UTC) - Expand

Хмм

Date: 2009-06-23 08:12 pm (UTC)
From: [identity profile] vadimgoncharov.livejournal.com
А где он может пригодиться?

Re: Хмм

Date: 2009-06-23 09:21 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
очевидно же - для передачи управления на указанную строку указанного файла:

goto /var/www/site/admin.php 303

Re: Хмм

From: [identity profile] oleg-mu.livejournal.com - Date: 2009-06-23 10:59 pm (UTC) - Expand

Re: Хмм

From: [identity profile] amarao-san.livejournal.com - Date: 2009-06-23 11:40 pm (UTC) - Expand

Re: Хмм

From: [identity profile] oleg-mu.livejournal.com - Date: 2009-06-24 01:43 am (UTC) - Expand

Re: Хмм

Date: 2009-06-24 04:52 am (UTC)
stas: (Default)
From: [personal profile] stas
парсеры писать
во всяком случае, так это мотивировали те, кто его запросил

Date: 2009-06-23 08:18 pm (UTC)
From: [identity profile] ygam.livejournal.com
А оператор ALTER еще не внесли?

Date: 2009-06-23 08:27 pm (UTC)
From: [identity profile] avva.livejournal.com
Хаха, какая прелесть. Не знал о нем.

Оператор для Настоящих Программистов (ТМ).

(no subject)

From: [identity profile] kobak.livejournal.com - Date: 2009-06-23 08:27 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-06-23 08:31 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2009-06-23 08:33 pm (UTC) - Expand

(no subject)

From: [identity profile] baramin.livejournal.com - Date: 2009-06-23 09:50 pm (UTC) - Expand

(no subject)

From: [identity profile] a-bronx.livejournal.com - Date: 2009-06-26 01:55 am (UTC) - Expand

(no subject)

From: [identity profile] gianthare.livejournal.com - Date: 2009-06-23 08:46 pm (UTC) - Expand

(no subject)

From: [personal profile] alexeybobkov - Date: 2009-06-23 08:53 pm (UTC) - Expand

(no subject)

From: [identity profile] sleeping-death.livejournal.com - Date: 2009-06-24 03:39 am (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2009-06-23 09:50 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2009-06-23 10:09 pm (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2009-06-23 10:16 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2009-06-23 10:20 pm (UTC) - Expand

(no subject)

From: [identity profile] ostap.livejournal.com - Date: 2009-06-23 09:53 pm (UTC) - Expand

(no subject)

From: [identity profile] cousin-it.livejournal.com - Date: 2009-06-23 10:00 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2009-06-23 10:08 pm (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2009-06-23 10:16 pm (UTC) - Expand

(no subject)

From: [identity profile] nec-p1us-u1tra.livejournal.com - Date: 2009-06-23 10:39 pm (UTC) - Expand

(no subject)

From: [identity profile] nm-work.livejournal.com - Date: 2009-06-24 03:01 am (UTC) - Expand

(no subject)

From: [identity profile] deadkittten.livejournal.com - Date: 2009-06-24 05:57 am (UTC) - Expand

(no subject)

From: [identity profile] ionial.livejournal.com - Date: 2009-06-24 08:44 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 06:29 am (UTC) - Expand

(no subject)

From: [identity profile] ionial.livejournal.com - Date: 2009-06-25 10:00 am (UTC) - Expand

(no subject)

From: [identity profile] a-bronx.livejournal.com - Date: 2009-06-26 02:00 am (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2009-06-26 02:00 am (UTC) - Expand

(no subject)

From: [identity profile] ygam.livejournal.com - Date: 2009-06-26 02:08 am (UTC) - Expand

Date: 2009-06-23 08:23 pm (UTC)
From: [identity profile] eresiarh.livejournal.com

Если в бочку говна добавить ложку говна, что изменится ?

Date: 2009-06-23 11:01 pm (UTC)
From: [identity profile] oleg-mu.livejournal.com
Хахахахаха!!!

Date: 2009-06-23 08:31 pm (UTC)
From: [identity profile] mikser.livejournal.com
Про негра - это из какого анекдота?

Date: 2009-06-23 08:34 pm (UTC)
From: [identity profile] ygam.livejournal.com
В Нью-Йорке в метро сидит негр и читает газету на идише. Мимо проходит еврей, и говорит: ...

(no subject)

From: [identity profile] mikser.livejournal.com - Date: 2009-06-23 08:38 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2009-06-23 08:36 pm (UTC) - Expand

У попа была...

From: [identity profile] p-a-s-h-a.livejournal.com - Date: 2009-06-24 08:39 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2009-06-23 08:54 pm (UTC) - Expand

Date: 2009-06-23 08:33 pm (UTC)
From: [identity profile] vanja-y.livejournal.com
Gotично.

Date: 2009-06-23 08:40 pm (UTC)
nechaman: (Default)
From: [personal profile] nechaman
лишь бы обидеть... А может кому-то надо?

Date: 2009-06-23 10:14 pm (UTC)
From: [identity profile] agaspher.livejournal.com
Кому, как известно, и кобыла - невеста.

Date: 2009-06-23 08:50 pm (UTC)
From: [identity profile] zanudka.livejournal.com
а я сегодня в коде на C обнаружила likely и unlikely :)

Date: 2009-06-25 05:32 am (UTC)
From: (Anonymous)
Они в ядре «Линукс» используются повсеместно.

Date: 2009-06-23 09:24 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
ну, возможность делать goto по номеру строки из выражения была ещё на спектруме. Там ещё можно было делать go sub с переменной. ..Вычисляемой через $eval.

Date: 2009-06-23 09:49 pm (UTC)
From: [identity profile] emdin.livejournal.com
вот и правильно. не то OOP stuff; он был крайне неловко втиснут.

Date: 2009-06-23 09:50 pm (UTC)
From: [identity profile] ostap.livejournal.com
По-моему давно пора. Мне всегда казалось, что в PHP чего-то нехватает для полной гармонии. А теперь он приобрёл логическую завершенность.

Date: 2009-06-23 11:03 pm (UTC)
From: [identity profile] oleg-mu.livejournal.com
Полная гармония - в сомещении пхп и javascript. О_о... ПОЛНАЯ гармония...

Date: 2009-06-23 10:14 pm (UTC)
From: [identity profile] agaspher.livejournal.com
(плачет)

Date: 2009-06-23 10:38 pm (UTC)
From: [identity profile] o4kapuk.ru (from livejournal.com)
Не могу поверить, что раньше его не было. Как же без него умудрялись писать макаронный код?

Date: 2009-06-23 11:10 pm (UTC)
From: [identity profile] lasc.livejournal.com
мы так мучались, но теперь то заживем!

(no subject)

From: [identity profile] vic-vega.livejournal.com - Date: 2009-06-23 11:51 pm (UTC) - Expand

Date: 2009-06-24 12:37 am (UTC)
From: [identity profile] http://users.livejournal.com/_rowan_tree_/
В связи с финансовым кризисом гранты не дают, физики переквалифицировались в веб-программисты, с фортрана на php :-)

Date: 2009-06-24 03:57 am (UTC)
From: [identity profile] tty01.livejournal.com
http://www.procata.com/blog/archives/2004/07/29/goto-in-php/

(c) 2004

Date: 2009-06-24 06:30 am (UTC)
From: [identity profile] pargentum.livejournal.com
А фон у этой странички нарочно такой сделан, чтобы никто ни о чем не догадался?

(no subject)

From: (Anonymous) - Date: 2009-06-24 11:05 am (UTC) - Expand

Date: 2009-06-24 06:28 am (UTC)
From: [identity profile] potan.livejournal.com
Единственное достоинство пхп - популярность. И им, из-за этого, приходится пользоваться.
Лучший способ при этом не проблевать - использовать какой-нибудь компилятор нормальный язык в пхп.
А бекенду компилятора в целевой платформе goto полезен.

Date: 2009-06-24 06:46 am (UTC)
From: [identity profile] and2u.livejournal.com
Ааа!
Никогда не используй goto (цы) :-)

Date: 2009-06-24 06:58 am (UTC)
From: [identity profile] rus-arbuz.livejournal.com
Интересно, какой же скриптовый веб язык считается "нормальным"?

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-24 07:09 am (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2009-06-25 01:58 am (UTC) - Expand

Date: 2009-06-24 07:06 am (UTC)
From: [identity profile] silly_sad.livejournal.com
после того как я обнаружил, что:
(float)(string)(float)"1.5" != 1.5

прекратил пользоваться пхп совсем ибо это ни в какие ворота не лезет

Date: 2009-06-24 07:14 am (UTC)
From: [identity profile] rus-arbuz.livejournal.com
и чем же это плохо?

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-24 07:20 am (UTC) - Expand

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-24 07:22 am (UTC) - Expand

(no subject)

From: [identity profile] kkirsanov.livejournal.com - Date: 2009-06-24 09:44 am (UTC) - Expand

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-24 10:24 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-24 05:07 pm (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2009-06-25 01:59 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 05:07 am (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2009-06-25 05:35 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 06:18 am (UTC) - Expand

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-25 05:25 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 06:17 am (UTC) - Expand

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-25 06:54 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 07:06 am (UTC) - Expand

(no subject)

From: [identity profile] rus-arbuz.livejournal.com - Date: 2009-06-25 07:11 am (UTC) - Expand

(no subject)

From: [identity profile] silly_sad.livejournal.com - Date: 2009-06-25 07:24 am (UTC) - Expand

(no subject)

From: [identity profile] ahaxopet.livejournal.com - Date: 2009-06-24 09:38 am (UTC) - Expand

(no subject)

From: [identity profile] onodera.livejournal.com - Date: 2009-06-24 03:14 pm (UTC) - Expand

Date: 2009-06-24 07:27 am (UTC)
From: [identity profile] rus-arbuz.livejournal.com
Вообще, программирование это не только искусство в себе, но и инструмент, призванный решать конкретные задачи. С этой точки, гибкости и простоте решения задач при помощи PHP остальные языки могут только позавидовать. И даже goto, не является таким уж злом, как вдалбливают при обучении программированию. С точки зрения красоты кода - да, но не как быстрое решение конкретной задачи.

Date: 2009-06-24 09:00 am (UTC)
From: [identity profile] schmeisser.livejournal.com
Ричард Стивенс, автор известных книг TCP/IP Illustrated и Unix Network Programming, как-то раз заметил о том, что противники использования goto могут попробовать реализовать функцию tcp_input() из 4.4BSD реализации TCP/IP без goto, чтобы она была хотя бы настолько же эффективна, как и исходная. Мораль: всему свое место. (http://www.kalinin.ru/programming/cpp/14_04_01.shtml)

Date: 2009-06-24 11:32 am (UTC)
From: [identity profile] alexis-m.livejournal.com
Вот-вот. :-)
Вряд ли Дейкстре нравилось, что идею подняли чуть ли не на знамена инквизиции.
Хотя как знать.

goto is considered helpful. In my book.

Date: 2009-06-26 05:28 pm (UTC)
From: (Anonymous)
Когда-то, к 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.

Re: goto is considered helpful. In my book.

Date: 2009-11-02 09:01 pm (UTC)
From: (Anonymous)
Откуда этот шедевр? Меня конкретно достали эти противники GOTO, начитавшиеся книжек по рефакторингу и считающие себя теперь умнее всех других!

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 05:36 am
Powered by Dreamwidth Studios