|
|
ru.website- RU.WEBSITE ------------------------------------------------------------------- From : Serge Shikov 2:5020/400 15 Mar 2001 12:15:49 To : All Subject : Re: Формирование картинки -------------------------------------------------------------------------------- Eugene A Belousov wrote: > > > > > > > Так тебя же язык не заставляет писать лаконично. Он это > _позволяет_. > > > > > Структура языка к этому подталкивает. > > > > Hу тогда и C к этому подталкивает - там же {} вместо begin/end ;-) > > > Если утрировать, то в си выражение a+b не возвращает значение в > > > предопределенную переменую, в отличие, например, от perl, postscript или > > > ассемблера. > > Ага. И это очень плохо! > А зачем это нужно? А затем, что это единообразно, и следовательно это просто. Либо у _любой_ операции есть значение, либо его нету в половине случаев. Причем непонятно в какой половине. > операция возвращает значение, оно может использоваться или нет, > но зачем сохранять его в _глобальной_ переменной, без учета контекста? Hу авторы так решили. Получилось удобно. > Это опять же некоторая ассемблерность, когда значение функции возвращается в > регистре, и, даже если ты его игнорируешь, позднее оно может быть > использовано. Все это создает неочевидные зависимости между частями программы > и сложно читается и прогнозируется. Стиль программирования "спагетти"? Hичего подобного. Спагетти - это если криво использовать. А если прямо - то это функциональный стиль ;-) > > > while (<>) {...} > > чисто сишный синтаксис while, а что? > конечно, только какие операнды принимает операция <>? Кто тебе сказал, что это операция? > Hе слишком ли много подразумеваемых внеконтекстных ссылок на > предопределенные переменные? И как контролировать побочные эффекты? Hу есть такое, чуть-чуть. > > > ---------------- > > > /^Subject:/ > > регулярное выражение. У них свой синтаксис, совершенно отдельный. > И зачем язык, предназначенный для работы с регулярными выражениями, > привлекать в качестве языка web-разработки? Затем что веб - это текст. Ты знаешь другой хороший способ работать с неструктурированным текстом, вместо регекспов? Я - нет. > > > ---------------- > > > tr/a-z/A-Z/ > > снова регулярное выражение. А что, ты бы предпочел > > translate(/a-z/,/A-Z/)? > Да. И еще явно указать откуда берется исходная строка и куда кладется > результат. Дык укажи - на это =~ есть. А вот с функцией - не выйдет так. Ты уже забыл, что в правой и левой части регекспа (и у tr тоже) могут быть функции и переменные? Предлагается все переменные в текущем контексте сделать видимыми всякой левой функции? Hе, спасиба, я пешком постою. > >И какая собственно разница, кроме того, что tr - > > это оператор, и можно написать например так: > > > > $a=~ tr/a-z/A-Z/ со всеми вытекающими, а функции еще параметр $a > > пришлось бы приделать? А уж во что это выльется, если надо tr к массиву > > применить, мне и писать неохота. У тебя это выльется в цикл, очевидно. > Отнюдь не обязательно. если сделать в библиотеке функцию, работающиую с > массивами, то скаляр окажется только частным случаем. Это уже из серии "если бы да кабы". Hету в PHP таких функций, потому-то и отстой. > > > print "$`:$&:$'\n"; # prints abc:def:ghi > > > ---------------- > > Три специальные переменные. Ты бы предпочел три длинных имени функции? > Конечно. Проще воспринимать человеческие имена, а не `&' Гм. Три новых функции, котрые брали бы свои результаты неизвестно где... Видишь ли, я этот подход живьем наблюдаю сейчас в Яве, где сделано несколько попыток реализовать перл-совместимые регекспы, именно путем написания методов для получения этих самых $`, $& и прочих. Так я тебя порадую - ничего близко похожего на реальную совместимость, и ничего близко по удобству к перлу ни у кого до сих пор не получилось. Я уж пока молчу про то, что расширяемые регекспы, которые в перле есть, никто еще и не пытался реализовать. Короче, наличие всех этих переменных - следствие простой вещи, большого количества возможностей регекспов в перле. Это компромисс. Вот попробуй print "$`:$&:$'\n"; реально на PHP записать, а потом нам покажи, а я пока посидю в сторонке, ехидно улыбаясь ;-) > > > это какой синтаксис? сишный? > > Да, в помеси с sh для имен переменных. Чего сложного-то? Все что > > начинается с $, % и @ - переменные, это что, сложно запомнить? Более > > того, @a - это массив, а $a[1] - скаляр, элемент массива @a, и как > > всякий скаляр - он начинается с $. Весьма логично, если подумать. > Логичнее было бы использовать i для целых переменных, str для строковых, > p - для указателей, с префиксом типа, на который он указывает... > одним словом нормальная венгерская нотация, причем не навязываемая, > а добровольная, ибо где-то удобнее обозвать переменную просто i или ptr. Hафига венгерская нотация в языке без типов? Она и сама-то по себе скоро вымрет... --- ifmail v.2.15dev5 * Origin: home (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.website/2825fcbeffc0.html, оценка из 5, голосов 10
|