ibash.org.ru - Новый цитатник Рунета | Цитаты: По дате По рейтингу Случайно Добавить Поиск RSS |
Форум: О PHP 1 2 3 > [RSS] | Форум: Вход Регистрация Участники Поиск RSS |
Eldor 25.10.2009 - 23:52 | Везде, млин, где тема про PHP, то обязательно обкоментируют "быдлокодеры поналетели", "О, freshmeat для быдлокодеров" и так далее. Давным-давно на канале #unix меня опустили когда я задал вопрос о настройке одного параметра в квартете FreBSD Apache MySQL PHP, причем отмазывались гентушники говоря "не туда пришел". Когда я намекнул, что, мол, моя ось немного более к месту чем ихняя, то они отмазались генеральным "еще один...". На следующий вопрос "что же использовать" мне сказали Дебиан, PostgreSQL, руби и еще какой-то сервер. Подумать головой что хостинг с этим делом найти очень проблематично и о том, что возможностей MySQL для создания не слишком проблематичных сайтов, вполне хватает, они не подумали. Это прелюдия, теперь вопрос: Считается ли быдлокодером любой кодер на ПХП? (учитывая что этот кодер умеет работать с 3я самыми популярными фреймворками, имеет свой под GPL, знает как правельно использовать MVC при продумывании архитектуры сайта, знает как правильно использовать в ООП другие шаблоны проектирования (singleton, prototype), понимает как работает сервер, и так далее. Все перечеслять не буду ибо это бесполезно. Но самое главное он _не_хочет_ терять время на изучение других языков в этой же области т.к. он потеряет время(=деньги), которое мог бы потратить на самосовершенствования себя в пхп и компании(css, javascript и тд)). |
Shock #101 - 08.12.2009 - 18:44 | > 2. Насколько я понял, индексы будут начинаться от 0. У меня - от 1. Просто сделай так же $a1 = array(1 => 'a', 'b', 'c', 'd', 'e'); $a2 = array(1 => 'q', 'w', 'e', 'r', 't'); foreach ($a1 as $k => $v) { if (!isset($a2[$k])) break; if ($k) echo ';'; echo '$k: $v, $a2[$k]'; } > [17:26:37] <naryl> лишние элементы более длинного списка * игнорируются так и происходит |
naryl #102 - 08.12.2009 - 18:44 | >.< s/.*segfault.*// |
Aelita #103 - 08.12.2009 - 18:45 | ну ты делал, старался, для неизвестного тебе человека. Я редко кого-то прошу мне помочь... Просто я еще тебя вопросами замучаю от "почему не работает" и вплоть до того "как запускается"... Надо уважать труд людей =) Потом сообщишь мне свой адрес и я тебе шоколадку пришлю О:-) |
naryl #104 - 08.12.2009 - 18:47 | Кто-то что-то путает: $ php -a Interactive shell php > $a1 = array(1 => 'a', 'b', 'c', 'd', 'e'); php > $a2 = array(1 => 'q', 'w', 'e', 'r', 't'); php > php > foreach ($a1 as $k => $v) { php { if (!isset($a2[$k])) break; php { if ($k) echo ';'; php { echo '$k: $v, $a2[$k]'; php { } ;$k: $v, $a2[$k];$k: $v, $a2[$k];$k: $v, $a2[$k];$k: $v, $a2[$k];$k: $v, $a2[$k] Вывод, мягко говоря, не совсем ожидаемый. |
Shock #105 - 08.12.2009 - 18:48 | В предыдущем посте я допустил ошибку. тут исправил: http://pastebin.ru/308909 |
Shock #106 - 08.12.2009 - 18:50 | Aelita, я шоколад не ем, но с благодарностями разберемся =) пиши, без проблем. всегда рад помочь =) |
Shock #107 - 08.12.2009 - 18:51 | как видишь, сегфолт не случается. > При первом взгляде не видна связь a2 с этим циклом. В foreach (...) его нет, потом он *внезапно* появляется где-то в теле цикла. "при первом взгляде синтаксис ПХП *внезапно* не похож на синтаксис Лиспа, это меня смущает". |
unikoid #108 - 08.12.2009 - 18:51 | Мне одному это все напоминает Специальную Олимпиаду, потому что у каждого языка есть своя ниша, в том числе и на рынке, и свои плюсы и минусы (не только академические). И каждый их них может быть удобней другого при решении какой либо задачи? |
Кто-то #109 - 08.12.2009 - 18:54 | #108, скорее уж столкновение фанатиков в чистом поле |
Aelita #110 - 08.12.2009 - 18:54 | Шок, вопрос - ты в контакте есть?) Понимаю, что блондинистый вопрос, но все-таки) И кинь ссыль если есть... Женское любопытство... |
Shock #111 - 08.12.2009 - 18:54 | задачу давать не хочу. глупости это. но если очень желаешь — напиши консольный форум на Лиспе(хотя бы как первую версию), если сможешь конечно))). если хочешь — могу скинуть исходники ДжаваСкрипта. посмотрим, какой ты мен, а насколько LISP(TCL) силён в боевой ситуации. учти, что я её на пхп написал за одну ночь. а у кого изящнее цикл выглядит — это глупости. тем не менее, пых отлично выдержал "испытание" |
Shock #112 - 08.12.2009 - 18:55 | Aelita, есть и я достаточно активно им пользуюсь =) напиши мне в Джаббер, там скажу всё =) |
naryl #113 - 08.12.2009 - 18:59 | > "при первом взгляде синтаксис ПХП *внезапно* не похож на синтаксис Лиспа, это меня смущает". Синтаксис - лишнее. Забудь про синтаксис. Синтаксис меня никогда не смущал. В цикле на CL все переменные, использующиеся в цикле упоминаются в вызове. В PHP - нет. a2 берётся хз откуда. Скорее всего здесь меня смущает математическая "грязность" PHP. |
Shock #114 - 08.12.2009 - 19:00 | unikoid, про "потому что у каждого..." и дальше — согласен. на счёт специальной олимпиады — не согласен. было вполне приятное и интересное обсуждение. я размял мозг. если бы мне было неинтересно решать эти задачи — я бы не решал =) |
naryl #115 - 08.12.2009 - 19:04 | Не вовремя. Будет лишняя ночь - сообщу о начале написания :) Один вопрос. Не будешь против, если вместо команд консоли будут использоваться формы Лиспа, как в Лисп-машине вроде emacs? В реализации разницы почти никакой. И второе - не вопрос, а предложение того, что я считаю фичёй. Работать будет не по html, а по telnet. ;) |
Shock #116 - 08.12.2009 - 19:05 | naryl, он не семантически грязен. просто он рассчитан на совершенно иные задачи. > #108, скорее уж столкновение фанатиков в чистом поле я не фанатик. но всеобщие глупые стереотипы на счёт пхп меня просто убивают. люди судят про этот язык, не зная матчасти. |
naryl #117 - 08.12.2009 - 19:06 | Не силён в JS. Не представляю, как сделать такой интерфейс сайта. Поэтому telnet. |
naryl #118 - 08.12.2009 - 19:07 | "семантически грязен"? Что бы это могло значить? :D |
Shock #119 - 08.12.2009 - 19:08 | naryl, твои условия я выполнил на 100% точно. ты даже к единице вместо нуля придрался =) я же тебе предлагаю сделать похожее, а ты говоришь, что сделаешь что-то совершенно другое =) |
naryl #120 - 08.12.2009 - 19:23 | Ок. freecr на CL. Только договоримся, что я всё-таки баги не буду эмулировать :D |
Shock #121 - 08.12.2009 - 19:39 | <naryl> кстати, loop реализован на лиспе <Shock> кто? <naryl> foreach - встроенная структура <naryl> в PHP <naryl> Но это дело вкуса <naryl> Мне в tcl паре раз помог тот факт, что все команды, включая proc и set, - такие же команды, как и определённые пользователем. <Shock> я писал в объектной обёртке свой форич: $a->each(function ($key, $value) { }); <naryl> ы! <naryl> только твой each зовётся map :D <Shock> почему? О.о <naryl> список b = map(список a) <Shock> почему это? <naryl> список b = map(список a, функция) <naryl> а <naryl> так принято в ФП <naryl> each выполняет операцию над списком (или массивом), но результат ты можешь разве что показать пользователю <naryl> потому что в ФП ты не можешь из функции просто присвоить другое значении какой-то девой переменной. <Shock> o('a', 'b', 'c')->each(function ($key, $value) { echo "$key.$value; "; }); => 0.a; 1.b; 2.c; <Shock> в пыхе можно так: <naryl> вывод пользователю! :) <Shock> $var = 0 o(1, 2, 3)->each(function ($key, $value) use ($var) { $var += $value; }); echo $var; // 6 <Shock> там был и альтернативный синтаксис <Shock> while ($a->each($key, $value)) { // } <Shock> и кстати <Shock> через foreach ($a as $key => $value) я там тоже реализовал <Shock> и тоже отдельно написал <naryl> use ($var) - захватывает переменную из контекста? <Shock> наверное <Shock> позволяет юзать её <naryl> нельзя в ФП. и вообще присваивать нельзя. <Shock> и что? <Shock> тут есть такая дополнительная функциональность <naryl> зато есть reduce для таких случаев <naryl> reduce([1, 2, 3], (+)); <naryl> псевдокод <naryl> вот это я и имел в виду под *математической* "грязностью". Присваивание и обращение к переменным из другого контекста. <naryl> Некоторые языки считают отсутствие такой функциональности своей фичёй :D <Shock> это недоработка других языков, что они не позволяют это делать <Shock> аха <naryl> И это на самом деле фича <naryl> Лисп, кстати, позволяет <Shock> это недоработка <naryl> Но делать это очень сильно не рекомендуется <naryl> Это фича <Shock> а лиспе нормальная реализация <Shock> ладно <Shock> $var = 0 o(1, -2, 3)->each(function ($key, $value) use ($var) { $var += abs($value); // $value по модулю }); echo $var; // 6 <Shock> reduce([1, 2, 3], (+)); так не справишься уже <naryl> Если в языке Haskell "реализовать функциональность" или, как ты говоришь "устранить недоработку" присваивать значения переменным из других контекстов, то всё на*** сломается. <naryl> reduce(map([1, 2, 3], abs)m (+)); <naryl> reduce(map([1, 2, 3], abs), (+)); <naryl> print(reduce(map([1, 2, 3], abs), (+))); <naryl> :) <naryl> ВОт тебе пара идей для библиотеки =) <Shock> $var = 0; $log = array(); o(1, -2, 3)->each(function ($key, $value) use ($var, $log) { $var += abs($value); // $value по модулю $log[] = "$key — done"; }); echo $var; // 6 <Shock> > то всё на*** сломается. почему сламается? <Shock> если оно задается и настраивается программистом в каждом отдельном случае <naryl> print(reduce(map([1, 2, 3], (int i) { log.info("{} - done", i); return abs(i); }), &add)); - это уже вполне честный D. <naryl> http://en.wikipedia.org/wiki/Referential_transparency_(computer_science) <naryl> математика параллельна. <Shock> а откуда взялся log в локальной видимости функции? <naryl> отустствие этой "функциональности" позволяет компилятору автоматически распараллеливать и кэшировать код. <naryl> Из контекста. <naryl> Это делегат. Он выполняется в контексте декларации <Shock> если это массив-переменная, в которую в конец добавляют информцию <Shock> а я думал, что нельзя брать из контекста <naryl> Это D. D - не функциональный :) <Shock> о. <Shock> ты уже третий язык подключил <Shock> TCL и CL не справляются, да? <naryl> Да, я такой :o) <Shock> я скину обсуждение на форум, ок? <naryl> хотел использовать более понятный тебе синтаксис <Shock> начиная с "кстати, loop реализован на лиспе" <naryl> а tcl - совсем не функциональный и не имеет отношения к данной теме <naryl> не думаю, что это кто-то будет читать :D <naryl> но давай <Shock> просто я вот не прибегаю к возможностям , скажем, языка JavaScript <Shock> а только пхп <naryl> с вырезанием скучных моментов не в тему <Shock> а ты тут намешал и TCL и Lisp и D <naryl> ок <naryl> сейчас покажу ФП на CL |
Eldor #122 - 08.12.2009 - 19:40 | #61 Поясни, если не затруднит, что твои интернеты имеют против Эльдора? #73 О, вменяемый пост... Мне лишь интересно было узнать, откуда у пхп такое клеймо. Оказалось от популярности. А что думаешь насчет питона в вебе? |
Shock #123 - 08.12.2009 - 19:42 | ньюанс в чем. код приведенный в #87 можно на пхп было написать так: echo join(array('a', 'b', 'c', 'd', 'e'), ','); но я повторил алгоритм программы на лиспе. потому похожий код, или другой код, но реализующий ту же функциональность — не подходит. надо именно то же самое. |
naryl #124 - 08.12.2009 - 19:46 | Ну вообще-то да. Суть была в цикле. (print (join-string-list '("a" "b" "c" "d" "e") ", ")) |
Shock #125 - 08.12.2009 - 19:49 | я же про это и говорю. если суть в цикле, то надо его повторить. аналогично и в заданиях выше |
naryl #126 - 08.12.2009 - 19:53 | http://paste.lisp.org/display/91774 -> "1 - done" -> "2 - done" -> "3 - done" -> 6 Так можно и на PHP, если он позволяет передавать функции по имени/указателю/символу/... |
Shock #127 - 08.12.2009 - 19:57 | ты написал совершенно другое, хотя и выполняющее такой же результат. оно отличается настолько же, как и echo join(array('a', 'b', 'c', 'd', 'e'), ','); и фраза "Так можно и на PHP" доказывает это, то есть то, что пример на ПХП был не такой и ты его повторить не смог. |
naryl #128 - 08.12.2009 - 19:59 | Речь была про ФП. Я показал ФП на Лиспе, чтобы не привлекать другой язык. Но так и быть, сейчас повторю. |
Shock #129 - 08.12.2009 - 20:05 | я на пхп повторил лисп. а вот сможет ли лисп повторить пхп? |
naryl #130 - 08.12.2009 - 20:10 | Давай кусок кода, использующий только стандартную библиотеку php, а то боюсь там куча твоего кода скрыта за o() и each() =) |
Shock #131 - 08.12.2009 - 20:17 | код — под LGPL, http://code.google.com/p/obj-php/source/checkout в #80 ты тоже код расширял, так что протест не засчитан. |
naryl #132 - 08.12.2009 - 20:23 | http://paste.lisp.org/display/91774#2 Но это как раз и есть попытка императивного программирования в языке, больше подходящем для функционального. :) Примерно как писать (reduce #'+ (map 'list #'abs '(1 -2 3))) на PHP :) |
naryl #133 - 08.12.2009 - 20:25 | > в #80 ты тоже код расширял, так что протест не засчитан. С учётом этого: > http://code.google.com/p/obj-php/source/checkout не засчитан :) |
Shock #134 - 08.12.2009 - 20:28 | ok, засчитано. поверим, что работает. смысла сравнивать дальше этих два разных языка не вижу =) надеюсь, теперь не будет глупых заявлений в сторону пхп по крайней мере от умных и читавших эту тему людей |
naryl #135 - 08.12.2009 - 20:47 | Вот более читаемый вариант: http://paste.lisp.org/+1YTA/4 > надеюсь, теперь не будет глупых заявлений в сторону пхп по крайней мере от умных и читавших эту тему людей И, надеюсь, не будет глупых заявлений в сторону CL от читавших эту тему людей. =) |
naryl #136 - 08.12.2009 - 20:49 | Но считаю своим долгом напомнить, что Лисп, который успешно смог повторить PHP, в 3 с лишним раза его старше. =) |
Shock #137 - 08.12.2009 - 21:06 | в отличии от бедного пхп, на лисп особо без причин никто не нападается. возраст неважен, учитывая тот факт, что это кардинально разные яп. |
naryl #138 - 08.12.2009 - 21:10 | Просто PHP популярнее => чаще появляется в обсуждениях. А шанс того, что упомянувшего PHP/Lisp казнят примерно одинаков. |
К списку вопросов | Страницы: 1 2 3 > |
«ibash.org.ru — Новый цитатник Рунета» | Почта вебмастера: imail@ibash.org.ru |