From: "Денис Смирнов" <mithraen@altlinux.ru> To: smoke-room@lists.altlinux.org Subject: Re: [room] новички Date: Thu, 26 Oct 2006 08:28:27 +0400 Message-ID: <20061026042827.GB5829@localhost.localdomain> (raw) In-Reply-To: <20061026020730.0c1b7963@dhcppc0> On Thu, Oct 26, 2006 at 02:07:30AM +0500, Aleksey Korotkov wrote: AK> Не совсем так. Понятие аналогия знакомо? Так вот, можно провести такую AK> параллель: написание кода PHP "традиционным способом" vs генерация AK> "меташтуками" <-> создание html ручками vs визуальным редактором. Не работает аналогия. Потому что "меташтучки" пишет сам программист, а визуальные редакторы сторонняя компания. Если бы написание визуального редактора было бы неотделимой частью разраобтки _конкретного сайта_ -- код был бы куда чище. Корректная аналогия как раз скорее "ручками сверстать весь сайт" VS "использовать PHP". PHP генерит HTML код часто куда хуже чем для данной конкретной страницы сделал бы хороший верстальщик. В некотором виде использование PHP можно тоже с натяжкой назвать метапрограммированием. Мы используем один язык чтобы генерить код на другом языке. AK> Поскольку, на мой взгляд, процессы сходны, а "чистота кода", AK> генерируемого визуальными редакторами, хорошо известна, я счёл (на AK> мой взгляд, обоснованно), что есть основания _сомневаться_ в чистоте AK> кода, генерируемого "меташтуками". >> Ещё интереснее то, что это >> позволяет мне обходиться практически безкомментариев -- код >> прозрачнее становится. AK> Хотел сам спросить -- ты опередил :) Увеличение прозрачности кода AK> отсутствием комментариев -- что-то новенькое :) Старенькое это. Есть код который требует каждую букву комментировать (начинающие перловики такую муть, например, написать умудряются... без поллитры даже смотреть страшно). А есть код на который смотришь -- и тебе сразу понятно что и как он делает. >> Простой вопрос -- как ты проверяешь входные данные? На какие >> именноусловия ты их проверяешь? Я вот последнее время стараюсь даже >> регекспамиобрабатывать все входящие данные. AK> Так условия, на которые нужно проверять и используемые методы проверки AK> -- от задачи и данных зависят (скажем, регэкспы для проверки AK> корректности почтового адреса). Ещё раз, ты прописываешь полный комплекс всех условий для каждого параметра передаваемого в PHP-код? >> Плюс констрейнты на >> диапазоны. Для_всех_ данных. AK> А так, в принципе, с последним согласен, разумно. Здесь консенсус :) :) >> Ещё раз объясняю. Когда человек пользуется метапрограммированием, он >> несмотрит глазами генерат. Его компьютер исполняет. Для него есть: - >> генератор; - данные для генератора; Это и есть код. AK> Это не код. Код -- результат работы генератора. PHP это тоже не код. И C не код. Код -- это результат работы компилятора. Аналогия ясна? ;) Есть подход при котором удобно писать на наскоро сделаном собственном как-бы языке как-бы программирования. >> Который >> оказывается сильно лучше чем если бы он написалруками то, что будет >> написано генератором. AK> По-прежнему сомневаюсь. Сравни ассемблер и PHP, сделай вывод на чем писать удобнее. Тут то же самое получается -- создается свой язык под конкретную задачу, и пишется с него компилятор. >> Я уже сказал -- если выбирается вариант хоть на один байт длиннее -- >> этотребует обоснования. AK> Извини, но это при современных объёмах дисковой памяти попахивает AK> маразмом ;). И противоречит твоим же словам. И вообще всему -- здравому AK> смыслу и так тобой любимой "общепринятой практике". Потому что программы AK> тогда надо писать без комментариев, без отступов, в одну строку и AK> т.д. :) Будет сэкономлена куча байтов. Ура, товарищи! _требует обоснования_ пропустил. То есть: $a = $a + 1 // прибавляем к a единицу я точно также бы поинтересовался обоснованием необходимости _такого_ комментария. А вот если комментарий нужен для лучшего понимания кода -- это достаточное объяснение зачем он нужен. Аналогично с отступами -- они улучшают читаемость. AK> Я просил _внятных и разумных обоснований_, почему echo, а не print. Пока AK> их не было, и закрадываются сильные подозрения, что не будет. Поскольку AK> их нет :) AK> Ещё раз подчеркну: не мой выбор echo || print, а твой echo && ! print AK> требует обоснования. Я уже сказал -- более частое использование одновременно с на один байт меньшим размером. Объясняться нужно тому кто отходит от общепринятого, а не наоборот. Если ты писать справа налево будешь это не я тебе должен объяснять почему это неправильно, а ты отчего это правильно. Потому что все вокруг пишут слева направо в нашей стране. >> Не. Все просто. echo "общепринятый" вариант и на целый 1 байт >> короче.Поэтому обосновывать выбор не надо. AK> См. выше. Надо, надо и ещё раз надо. Только без анекдотических AK> аргументов. OK? [За такие аргументы надо вообще наказывать, заставляя AK> в течение месяца программировать на ассемблере для Windows 1.0 :)] Детский сад. Ты выбрал нестандартное решение, не смог обосновать его применение _никак_ кроме "так тоже можно". Я выбрал другое решение, обосновав его выбор "так принято, и при этом не имеет неодстатков по сравнению с твоим вариантом". Так как мой вариант имеет хотя бы одно преимущество, твой ни одного, а ты артачишься -- это как раз и есть двойка :) Потому как честно признать что речь идет о вкусовщине попросту не хочешь. >> Как и то что вообще использовался оператор >> вывода, где можно быловообще не использовать никаких операторов. AK> О CLI помним? :) А ты проверь мой вариант в CLI. А то ведь очередную двойку получишь :-P Работает оно в CLI. Может её и можно настроить так, чтобы не работало -- но я не представляю себе где и кто так будет делать. >> Все очень просто. Если код большой, но написаный "метаигрушкой", >> тодостаточно предъявить простой алгоритм того модуля который генерит >> кодпроверки аргументов, и его входные данные. Объем кода для проверки >> в твоемслучае будет больше как минимум на порядок для сложного >> проекта. AK> Всё не очень просто. Тебе будет нужно предъявить доказательство AK> правильности этого "простого алгоритма". Это задача никак не простая AK> (исключая тривиальные случаи). Проверка на одном конкретном наборе AK> входных данных -- не катит (на 10 наборах -- тоже). [и почему только AK> "того модуля"?] Потому что у тебя проверка будет размазана, а у меня будет находится в конкретном месте. Да, при необходимости я смогу представить и математическое доказательство, хотя это и потребует времени. Ты же гарантировано не сможешь -- PHP не даст тебе таких возможностей. -- С уважением, Денис http://freesource.info ---------------------------------------------------------------------------- У нас здесь talk-room, здесь не обижаются. :-) -- aen in talk-room@
next prev parent reply other threads:[~2006-10-26 4:28 UTC|newest] Thread overview: 205+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-10-12 22:25 ` [room] ну почему мы такие страшные Sergey Stepanov 2006-10-13 0:02 ` Денис Смирнов 2006-10-14 16:54 ` [room] новички Michael Shigorin 2006-10-14 19:51 ` Денис Смирнов 2006-10-15 18:27 ` [room] комоды Michael Shigorin 2006-10-15 22:46 ` Денис Смирнов 2006-10-16 11:35 ` [room] IA: комоды += mithraen@ Michael Shigorin 2006-10-16 18:22 ` Maxim Tyurin 2006-10-16 19:40 ` [room] IA: комоды += mrkooll@ Michael Shigorin 2006-10-16 18:19 ` [room] новички Maxim Tyurin 2006-10-16 20:14 ` Денис Смирнов 2006-10-16 21:20 ` Michael Shigorin 2006-10-17 8:10 ` Денис Смирнов 2006-10-17 8:20 ` Evgenii Terechkov 2006-10-17 19:21 ` Michael Shigorin 2006-10-18 0:54 ` Evgenii Terechkov 2006-10-18 7:02 ` Michael Shigorin 2006-10-18 8:08 ` Evgenii Terechkov 2006-10-17 20:34 ` Maxim Tyurin 2006-10-18 0:51 ` Evgenii Terechkov 2006-10-18 8:31 ` Maxim Tyurin 2006-10-18 9:24 ` Evgenii Terechkov 2006-10-18 9:33 ` Maxim Tyurin 2006-10-18 10:10 ` Evgenii Terechkov 2006-10-18 10:22 ` Maxim Tyurin 2006-10-18 15:07 ` Evgenii Terechkov 2006-10-18 20:44 ` Michael Shigorin 2006-10-19 5:46 ` Dmytro O. Redchuk 2006-10-19 5:58 ` Evgenii Terechkov 2006-10-19 23:08 ` Michael Shigorin 2006-10-20 3:58 ` Evgenii Terechkov 2006-10-19 23:07 ` [room] whitespace (не язык) Michael Shigorin 2006-10-20 3:46 ` Evgenii Terechkov 2006-10-20 8:16 ` Michael Shigorin 2006-10-20 9:18 ` Maxim Tyurin 2006-10-20 11:46 ` Michael Shigorin 2006-10-20 12:09 ` Maxim Tyurin 2006-10-20 12:23 ` Evgenii Terechkov 2006-10-19 5:55 ` [room] новички Evgenii Terechkov 2006-10-19 23:05 ` Michael Shigorin 2006-10-20 3:56 ` Evgenii Terechkov 2006-10-20 3:57 ` Evgenii Terechkov 2006-10-19 16:01 ` Maxim Tyurin 2006-10-19 15:57 ` Maxim Tyurin 2006-10-19 17:33 ` Evgenii Terechkov 2006-10-19 17:57 ` Maxim Tyurin 2006-10-19 19:52 ` Evgenii Terechkov 2006-10-20 9:15 ` Maxim Tyurin 2006-10-20 12:32 ` Evgenii Terechkov 2006-10-19 18:28 ` Денис Смирнов 2006-10-20 19:44 ` Aleksey Korotkov 2006-10-20 22:02 ` Денис Смирнов 2006-10-21 19:47 ` Aleksey Korotkov 2006-10-21 20:22 ` Денис Смирнов 2006-10-21 22:16 ` Michael Shigorin 2006-10-21 22:45 ` Денис Смирнов 2006-10-22 11:18 ` Michael Shigorin 2006-10-22 21:01 ` Денис Смирнов 2006-10-22 21:20 ` Aleksey Korotkov 2006-10-22 21:28 ` [room] язычки и библиотечки Michael Shigorin 2006-10-23 6:15 ` Eugene Ostapets 2006-10-23 7:36 ` Michael Shigorin 2006-10-23 7:53 ` Eugene Ostapets 2006-10-23 12:21 ` Maxim Tyurin 2006-10-23 12:38 ` Dmitriy L. Kruglikov 2006-10-24 1:48 ` Денис Смирнов 2006-10-24 10:44 ` Maxim Tyurin 2006-10-23 18:21 ` Michael Shigorin 2006-10-23 18:30 ` Eugene Ostapets 2006-10-23 19:18 ` Michael Shigorin 2006-10-23 19:26 ` Eugene Ostapets 2006-10-24 10:35 ` [room] язычки и библиотечки [fin?] Michael Shigorin 2006-10-23 8:10 ` [room] язычки и библиотечки Денис Смирнов 2006-10-23 20:14 ` Aleksey Korotkov 2006-10-24 10:33 ` Michael Shigorin 2006-10-24 22:57 ` Aleksey Korotkov 2006-10-25 10:18 ` Michael Shigorin 2006-10-23 8:24 ` Денис Смирнов 2006-10-23 18:19 ` Michael Shigorin 2006-10-24 1:55 ` Денис Смирнов 2006-10-24 7:03 ` Michael Bochkaryov 2006-10-24 8:54 ` Денис Смирнов 2006-10-24 10:30 ` [room] wackowiki Michael Shigorin 2006-10-24 10:49 ` [room] lustre Eugene Prokopiev 2006-10-24 15:07 ` Michael Shigorin 2006-10-24 16:04 ` [room] wackowiki Денис Смирнов 2006-10-24 16:08 ` Igor Zubkov 2006-10-24 16:47 ` Денис Смирнов 2006-10-24 17:51 ` [room] wackowiki vs mediawiki Igor Zubkov 2006-10-24 19:20 ` Michael Shigorin 2006-10-25 3:47 ` Денис Смирнов 2006-10-24 19:37 ` [room] wackowiki Michael Shigorin 2006-10-25 3:40 ` Денис Смирнов 2006-10-25 10:10 ` Michael Shigorin 2006-10-25 17:13 ` Денис Смирнов 2006-10-25 18:38 ` Michael Shigorin 2006-10-25 21:17 ` Aleksey Korotkov 2006-10-26 21:01 ` Michael Shigorin 2006-10-26 4:36 ` Денис Смирнов 2006-10-28 14:26 ` Michael Shigorin 2006-10-28 16:02 ` Денис Смирнов 2006-10-29 17:44 ` Michael Shigorin 2006-10-29 20:49 ` Денис Смирнов 2006-10-30 7:48 ` Michael Shigorin 2006-10-30 13:32 ` Денис Смирнов 2006-10-30 17:19 ` Igor Zubkov 2006-11-01 9:22 ` Денис Смирнов 2006-11-01 17:11 ` Igor Zubkov 2006-11-01 21:08 ` Денис Смирнов 2006-10-31 9:47 ` Michael Shigorin 2006-11-01 9:20 ` Денис Смирнов 2006-10-31 9:49 ` Michael Shigorin 2006-11-01 9:21 ` Денис Смирнов 2006-10-30 16:59 ` Igor Zubkov 2006-11-01 9:20 ` Денис Смирнов 2006-10-30 16:58 ` Igor Zubkov 2006-10-31 3:16 ` Evgenii Terechkov 2006-10-25 6:47 ` [room] язычки и библиотечки Michael Bochkaryov 2006-10-25 7:16 ` Eugene Prokopiev 2006-10-28 8:18 ` Michael Bochkaryov 2006-10-25 8:35 ` Денис Смирнов 2006-10-25 10:07 ` Michael Shigorin 2006-10-25 17:15 ` Денис Смирнов 2006-10-24 10:28 ` Michael Shigorin 2006-10-24 8:58 ` Eugene Prokopiev 2006-10-24 15:57 ` Денис Смирнов 2006-10-24 19:35 ` [room] java off the rails Michael Shigorin 2006-10-25 3:37 ` Денис Смирнов 2006-10-25 6:21 ` Eugene Prokopiev 2006-10-25 6:39 ` Eugene Prokopiev 2006-10-25 10:05 ` Michael Shigorin 2006-10-25 16:59 ` Денис Смирнов 2006-10-25 6:00 ` [room] язычки и библиотечки Eugene Prokopiev 2006-10-25 8:30 ` Денис Смирнов 2006-10-25 10:43 ` [room] Лекция по Java Eugene Prokopiev 2006-10-25 10:53 ` Eugene Prokopiev 2006-10-25 16:50 ` Eugene Prokopiev 2006-10-25 18:10 ` Денис Смирнов 2006-10-25 18:34 ` Michael Shigorin 2006-10-26 4:39 ` Денис Смирнов 2006-10-26 8:05 ` Eugene Prokopiev 2007-02-25 21:48 ` Денис Смирнов 2007-02-25 22:10 ` Eugene Prokopiev 2007-02-25 22:20 ` Денис Смирнов 2007-02-25 22:56 ` Eugene Prokopiev 2007-02-26 14:01 ` Денис Смирнов 2006-10-26 7:47 ` Eugene Prokopiev 2007-02-25 22:01 ` Денис Смирнов 2007-02-25 22:52 ` Eugene Prokopiev 2007-02-26 14:05 ` Денис Смирнов 2007-02-26 20:16 ` Eugene Prokopiev 2007-02-26 20:51 ` Денис Смирнов 2007-02-26 5:50 ` Eugene Prokopiev 2007-02-26 14:09 ` Денис Смирнов 2007-02-26 20:07 ` Eugene Prokopiev 2006-10-25 10:45 ` [room] язычки и библиотечки Eugene Prokopiev 2006-10-25 10:03 ` Michael Shigorin 2006-10-25 6:57 ` Michael Bochkaryov 2006-10-25 8:37 ` Денис Смирнов 2006-10-24 10:27 ` Michael Shigorin 2006-10-24 16:01 ` Денис Смирнов 2006-10-24 19:44 ` Michael Shigorin 2006-10-25 3:36 ` Денис Смирнов 2006-10-24 19:44 ` [room] mod_security article (was: язычки и библиотечки) Michael Shigorin 2006-10-23 20:09 ` [room] язычки и библиотечки Aleksey Korotkov 2006-10-24 10:22 ` Michael Shigorin 2006-10-24 23:12 ` Aleksey Korotkov 2006-10-25 10:19 ` Michael Shigorin 2006-10-25 15:46 ` Aleksey Korotkov 2006-10-25 18:39 ` Michael Shigorin 2006-10-25 21:19 ` Aleksey Korotkov 2006-10-23 8:08 ` [room] новички Денис Смирнов 2006-10-23 20:08 ` Aleksey Korotkov 2006-10-24 1:46 ` Денис Смирнов 2006-10-24 10:22 ` [room] г-флейм Michael Shigorin 2006-10-24 10:27 ` Денис Смирнов 2006-10-24 22:44 ` [room] новички Aleksey Korotkov 2006-10-25 3:29 ` Денис Смирнов 2006-10-25 10:00 ` Michael Shigorin 2006-10-25 16:38 ` Денис Смирнов 2006-10-25 18:25 ` Michael Shigorin 2006-10-26 4:14 ` Денис Смирнов 2006-10-25 15:07 ` Aleksey Korotkov 2006-10-25 16:57 ` Денис Смирнов 2006-10-25 21:07 ` Aleksey Korotkov 2006-10-26 4:28 ` Денис Смирнов [this message] 2006-10-26 13:39 ` Aleksey Korotkov 2006-10-26 15:10 ` Денис Смирнов 2006-10-25 9:58 ` Michael Shigorin 2006-10-25 15:30 ` Aleksey Korotkov 2006-10-25 18:27 ` [room] смайлЫ Michael Shigorin 2006-10-25 21:14 ` Aleksey Korotkov 2006-10-25 16:35 ` [room] новички Денис Смирнов 2006-10-18 11:11 ` [room] язЫки программирования Michael Shigorin 2006-10-18 11:22 ` Maxim Tyurin 2006-10-18 15:08 ` Evgenii Terechkov 2006-10-18 11:10 ` [room] новички Michael Shigorin 2006-10-18 15:12 ` Evgenii Terechkov 2006-10-19 16:04 ` Maxim Tyurin 2006-10-19 17:19 ` Evgenii Terechkov 2006-10-19 18:00 ` Maxim Tyurin 2006-10-19 18:57 ` Evgenii Terechkov 2006-10-19 23:10 ` Michael Shigorin 2006-10-20 3:53 ` Evgenii Terechkov 2006-10-23 6:59 ` Dmytro O. Redchuk
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20061026042827.GB5829@localhost.localdomain \ --to=mithraen@altlinux.ru \ --cc=smoke-room@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Культурный офтопик This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \ smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com public-inbox-index smoke-room Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.smoke-room AGPL code for this site: git clone https://public-inbox.org/public-inbox.git