From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 25 Oct 2006 20:57:36 +0400 From: =?koi8-r?B?5MXOydMg883J0s7P1w==?= To: smoke-room@lists.altlinux.org Message-ID: <20061025165736.GC14934@localhost.localdomain> References: <20061020220253.GA15229@localhost.localdomain> <20061022004752.0508b7a4@dhcppc0> <20061021202204.GD19700@localhost.localdomain> <20061023022000.56c4a1aa@dhcppc0> <20061023080813.GA28347@localhost.localdomain> <20061024010852.2acd1adf@dhcppc0> <20061024014602.GC22262@localhost.localdomain> <20061025034444.154aa056@dhcppc0> <20061025032949.GA31147@localhost.localdomain> <20061025200744.43a4f2f5@dhcppc0> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20061025200744.43a4f2f5@dhcppc0> Subject: Re: [room] =?koi8-r?b?zs/Xyd7LyQ==?= X-BeenThere: smoke-room@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: =?koi8-r?b?y9XM2NTV0s7ZyiDPxtTP0MnL?= List-Id: =?koi8-r?b?y9XM2NTV0s7ZyiDPxtTP0MnL?= List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Oct 2006 16:57:55 -0000 Archived-At: List-Archive: 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. В целом же> "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@