From: "Денис Смирнов" <mithraen@altlinux.ru>
To: smoke-room@lists.altlinux.org
Subject: Re: [room] новички
Date: Wed, 25 Oct 2006 20:57:36 +0400
Message-ID: <20061025165736.GC14934@localhost.localdomain> (raw)
In-Reply-To: <20061025200744.43a4f2f5@dhcppc0>
On Wed, Oct 25, 2006 at 08:07:44PM +0500, Aleksey Korotkov wrote:
>> Кажется мы спорили о том что руками написаный код не будет сильно
>> лучшеавтогенерируемого? :)
AK> Так точно. Ты утверждаешь, что да, я -- что нет (единственно, слово
AK> "сильно" ощущается всеми сугубо субъективно, потому я бы его опустил).
Твое утверждение имеет одно отличие от моего -- оно не основано на
сравнении. Спорить о вкусе устриц с теми кто их ел штука бессмысленная.
Вот у меня сейчас валяется маленький самописный проектик. Там сейчас кода
на PHP 3.5k строк. Плюс 2k строк кода темплейтов, которые обычно
встраиваются PHP-никами в код, а с учетом того что мои темплейты это
аналог perl-HTML-Template, можно считать что в виду PHP-кода это было бы
уже 3-4k строк.
Так вот, я вижу как использование трюков с автогенерированием кода
позволяют мне в этом коде не теряться. Потому что если даже на C такой
объем кода это пустяк, то на PHP это очень тяжело.
Ещё интереснее то, что это позволяет мне обходиться практически без
комментариев -- код прозрачнее становится.
>> Ты сам прекрасно доказал почему
AK> Да вроде нет, не доказывал :)
;)
>> -- все
>> равно толькополный псих будет писать идеально чистый код на языках,
>> предназначеных недля enterprise quality а для "побыстрячку налабать
>> на коленке".
AK> Хм. Вот знаешь [просто констатация имеющего место быть] по крайней мере
AK> стараюсь не делать "побыстрячку" и "на коленке". И даже не знаю, плохо
AK> это или хорошо, но вот так вот есть.
Простой вопрос -- как ты проверяешь входные данные? На какие именно
условия ты их проверяешь? Я вот последнее время стараюсь даже регекспами
обрабатывать все входящие данные. Плюс констрейнты на диапазоны. Для
_всех_ данных. Так вот даже просто вызывать уже готовые функции проверки
констрейнтов устал. Неудобно.
>> Поэтому сгенерированый код вряд ли будет уступать коду
>> той же сложности,написаному человеком, если речь о PHP. А вот чиже
>> может быть.
AK> Чище? Вот это самый твой уязвимый постулат. Разве что сравнивать с
AK> кодом, написанных олухом. Тогда всё возможно. Но имеют ли смысл такие
AK> сравнения?
Ещё раз объясняю. Когда человек пользуется метапрограммированием, он не
смотрит глазами генерат. Его компьютер исполняет. Для него есть:
- генератор;
- данные для генератора;
Это и есть код. Который оказывается сильно лучше чем если бы он написал
руками то, что будет написано генератором.
>> В точку. Хотя назвать это корректным HTML нельзя, да и не все что
>> выводитPHP это HTML, у меня он иногда и JavaScript выводит.
AK> Можно и наоборот :)
:)
>> Фактически я признал что на языке без жестко сформулированых
>> требований кcode quality понятие чистого кода отсутствует, остаются
>> тольконеформальные правила. По этим неформальным правилам, например
>> при приеме на работу PHP'шника ябуду читать его код и спрашивать по
>> каждой строчке какие у него былиоснования написать именно так, а не
>> одному из десяти других вариантов. Один ответ в стиле "потому что так
>> тоже можно" будет означать что разговорможно заканчивать.
AK> Я по другому скажу -- если ты утверждаешь, что так-то так-то писать
AK> нельзя/не стоит -- обосновывай или твои критицизмы идут лесом. Вот в
AK> последнем случае тут, действительно, разговор можно будет заканчивать.
AK> Только не в том смысле, который ты имел в виду :)
Я уже сказал -- если выбирается вариант хоть на один байт длиннее -- это
требует обоснования. Ответ в качестве обоснования "потому что так тоже
можно" за обоснования не катит.
>> Сходу я
>> сейчас могу придумать только одну причину применять в этойконструкции
>> print -- если автор и вся команда перловики. И им простонепривычно
>> использоваь разный оператор для одной и той же команы. Сампосле PHP
>> начинал в перловке писать echo вместо print. В целом же<?print
>> "Hello, World!"?> По сравнению с просто:Hellow, World! Это называется
>> грязный код.
AK> Опять таки всё наизнанку. Ты не то придумываешь. Это _тебе_ надо
AK> обосновать, что _надо_ писать echo, а не print. Пока обоснования я не
AK> увидел. И вот пока ты не привёл такие обоснования (веские и
AK> разумные :)), всё это -- вкусовщина и субъективщина ;)
Не. Все просто. echo "общепринятый" вариант и на целый 1 байт короче.
Поэтому обосновывать выбор не надо. А вот если используется другой вариант
-- надо. Как и то что вообще использовался оператор вывода, где можно было
вообще не использовать никаких операторов.
>> Мой -- может и даст. Я уже говорил что я редкостный ламер.
>> Написать можно. Можно и яндекс целиком на ассемблере написать.
>> Дажеработать быстрее будет. Но трудоемкость этого процесса будет на
>> порядкибольше. Вы попробуйте для проекта уровня phpbb какого хотя бы
>> просто реализоватьполную проверку всех аргументов, а также правильный
>> квотинг при обращениик SQL. То бишь то, что срезает большинство
>> уязвимостей. Причем попробуйтеэто сделать так, чтобы вы могли
>> _доказать_ что покрыли тестами всюсистему. И сразу станет все
>> понятно :)
AK> Ну я могу и вернуть этот аргумент. Предлагаю доказать, что это сделает
AK> метаигрушка :)
Все очень просто. Если код большой, но написаный "метаигрушкой", то
достаточно предъявить простой алгоритм того модуля который генерит код
проверки аргументов, и его входные данные. Объем кода для проверки в твоем
случае будет больше как минимум на порядок для сложного проекта.
>> Так то ассемблеры на стероидах. Они не хуже, они в этой области
>> попростунезаменимы.
AK> В каком смысле не хуже? В том, что нет других инструментов? И что
AK> значит незаменимы? То, что нельзя придумать (теоретически, по крайней
AK> мере) ничего более подходящего под те же задачи?
Всегда можно придумать что-то лучше. Но -- не придумали лучше по
совокупности характеристик. Потому незаменимы, что заменить нечем. Было бы
-- заменили бы.
--
С уважением, Денис
http://freesource.info
----------------------------------------------------------------------------
WOW!
Ядра посыпались :-)
-- aen in devel@
next prev parent reply other threads:[~2006-10-25 16:57 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 ` Денис Смирнов [this message]
2006-10-25 21:07 ` Aleksey Korotkov
2006-10-26 4:28 ` Денис Смирнов
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=20061025165736.GC14934@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