[room] новички

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_altlinux=2Eru?=
Чт Окт 26 08:28:27 MSD 2006


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@



Подробная информация о списке рассылки smoke-room