Почему php популярнее perl в вебе? Что можно сделать на php, чего нельзя сделать на perl? Почему сплошь и рядом все форумы php'шные, а перловые все какие-то убогие (fastbb например)?
Не шути так больше, я чуть не подавился чаем. Ты видел ПХП парсер XML файлов этоже просто ужас. Да и вообще последнее время от ПХП меня блевать тянет...
другой пример: преобразование кодировки:
перл:
use Text::Iconv;
$converter = Text::Iconv->new ("KOI8-R", "UTF-7");
$Name = $converter->convert ($Name);
пхп:
$Name = iconv ("KOI8-R", "UTF-7", $Name);
ну, где проще?
и как там в перл с getnamebyaddr? Я придумал только
sub GetIPByName
{
my ($name, $alias, $adrtype, $length, @address) = gethostbyname ($_[0]);
my ($a,$b,$c,$d) = unpack ("C4", $address[0]);
my $V = $a.".".$b.".".$c.".".$d;
return $V;
}
За что народ любит синтаксис C? За выразительность, лаконичность и гармонию. Где такое в Perl? А PHP создавался с синтаксисом C. Опять же, с С переходить на него легче.
Синтаксис Си любят от лени и маленького IQ. Выучили его, считают его привычным, и не желают изучать ничего нового. Никаких объективных преимуществ (и уж тем более - выразительности и лаконичности) у этого примитивного и архаичного синтаксиса нет.
$result=$conn->exec("create index _RSERV_LOG_INDX_REL_KEY_ on _RSERV_LOG_ (reloid, key)");
RollbackAndQuit($conn) if ($result->resultStatus ne PGRES_COMMAND_OK);
Я конечно понимаю, что это выполнение запроса к БД с откатом в случае ошибки, но по-моему это не очень так наглядно и читаемо (/usr/bin/MasterInit (78-79) из FC3). К тому же бесконечные $, %, @ вместо оодних $ в PHP довольно путают. Короче, мне, как человеку, не писавшему на Perl ничего крупного, кажется, что даже исходники на LaTeX более понятны, чем на Perl.
Конструкция
выражение if (выражение);
эквивалентна
if (выражение){
выражение;
}
Т.е. это же можно было записать:
if ($result->resultStatus ne PGRES_COMMAND_OK) {
RollbackAndQuit($conn);
}
Но в одну строку намного нагляднее(Роллбак_и_выход если статус не ОК vs если статус не ОК тогда роллбак_и_выход.
Кстати, оч. удобная в этом же отношении конструкция unless:
exit unless ($result == 0)
Для ПХП это будет выглядеть так:
if (!($result == 0)) exit.
Понятно что для условия !($result == 0) можно в данном случае написать $result != 0, однако для более сложных условий...
А различный $, %, @ - это наоборот лучше! Говоря %a я подразумеваю хеш(именованный массив). Говоря @a я подразумеваю массив.
В пхп ихние смешанные хеши-массивы неудобны. Поясняю:
$a = array();
$a["100"] = 1;
Вопрос: сколько элементов в $a. Что такое $a - хеш или массив?
Для перла все однозначно. Если:
my %a;
$a{"100"} = 1
То это хеш с одним елементом.
> Нужна __ОДНА__ дока, типа php-manual, а не зоопарк из perdoc, perldoc -f, search.span.org и каких-то книжек!
Для первоначального изучения советую книжку. В качестве справочника -- man perl* и perldoc. Одну доку сделать сложно, потому что в CPAN находится туева хуча доп. модулей, и у каждого -- своя документация.
На самом деле, если въехать, с документацией проблемы нет.
>На самом деле, если въехать, с документацией проблемы нет.
Понятно, просто плохо, когда в рамках одного и того же языка одинаковые задачи решаются по-разному. Эта избыточность никакого функционала не вносит, а только непонятки.
В пхп, кстати, тоже есть такие "места", как, например, отправка писем с аттачментом.
НАсколько я понял, все разногласия (кроме хэшей-массивов, но об этом потом) сводятся к разногласиям типа юзаю или не юзаю инверт-маус в 3D-играх: если я сначала сел за Перл, то не смогу полюбить PHP, если ясначала сел за PHP (или C, или еще чего C-подобное), то не смогу полюбить Перл.
В пользу моего мнения могу сказать, что на С проходит большая часть образования программистов (хотите - кодеров). И как я однажды начал применять реляционные отношения и сопутствующие понятия к 1C (а этому очень удивился народ, который кроме 1С ничего и не видел), так и люди, кроме Перла да баша ничего не видевшие, не понимают стремление к унифицированному С-синтаксису.
Все вышеприведенное ни в коей мере не призвано кого-либо обидеть, или обвинить в отсутствии знаний. Просто я сокрушаюсь, что ты не имеешь моих знаний, а я не имею твоих.
PS: про хеши-массивы.
"Конструкция выражение if (выражение); эквивалентна if (выражение){ выражение; }
Т.е. это же можно было записать: if ($result->resultStatus ne PGRES_COMMAND_OK) { RollbackAndQuit($conn); }
Но в одну строку намного нагляднее(Роллбак_и_выход если статус не ОК vs если статус не ОК тогда роллбак_и_выход."
Это, на мой взгляд, удобно тем, кто не привык к ставшей обычной в процедурном и ОО-программировании логике.
"Кстати, оч. удобная в этом же отношении конструкция unless: exit unless ($result == 0) Для ПХП это будет выглядеть так: if (!($result == 0)) exit. Понятно что для условия !($result == 0) можно в данном случае написать $result != 0, однако для более сложных условий..."
Что-то типа repeat ... until в паскале. На мой взгляд, гаденькая конструкция была...
"А различный $, %, @ - это наоборот лучше! Говоря %a я подразумеваю хеш(именованный массив). Говоря @a я подразумеваю массив. В пхп ихние смешанные хеши-массивы неудобны. Поясняю: $a = array(); $a["100"] = 1;
Вопрос: сколько элементов в $a. Что такое $a - хеш или массив?"
Ответ: в $a count($a) элементов. $a - всегда хэш с прозрачным заданием индексов (можно задать 100, а можно "100"). Почему это неудобно - я не понял. Вроде, в том же Питоне примерно так же дело обстоит (кроме изменяемых-неизменяемых списков, различающихся низкоуровневой реализацией).
"Для перла все однозначно. Если: my %a; $a{"100"} = 1 То это хеш с одним елементом."
Что самое интересное, записи-то одинаково "говорящие", и результат что в Перле, что в PHP одинаков. Так что это дейстительно религиозная война :)
>так и люди, кроме Перла да баша ничего не видевшие, не понимают стремление к унифицированному С-синтаксису
Это ты о ПХП или вообще о супер-унифицированости С-синтаксиса?
Дать кучу примеров ТРУДНОРАЗБИРАЕМОГО кода как на С так и на ПХП?
(Любители питона не радуйтесь - и у вас есть любители ;) )
>Это, на мой взгляд, удобно тем, кто не привык к ставшей обычной в процедурном и ОО-программировании логике.
Нет. Это удобно тем кто привык к перлу :). Он дает тебе свободу. Свободу использовать более удобную и привычную тебе конструкцию.
>Что-то типа repeat ... until в паскале. На мой взгляд, гаденькая конструкция была...
Чем это она гаденькая? Нормальный цикл с постусловием. Только условие не продолжение а выхода.
>Почему это неудобно - я не понял
Это просто дороже стоит.
>Что самое интересное, записи-то одинаково "говорящие", и результат что в Перле, что в PHP одинаков. Так что это дейстительно религиозная война :)
Неа. Если я в перле напишу
$a{"100"} = 1
То у меня в хеш а добавится один элемент. Ключ "100", значение 1.
Если же
$a["100"] = 1
то в массив а по индексу 100 будет занесено значение 1. Если элементов в массиве было меньще 100, то размер массива будет увеличен до 101 элемента(нумерация с 0)
$2k дают за сайтишко, который ты 2 месяца ваять будешь. В общем, для студентиков заборостроительного провинциального вузика приработка. В общем, свыкнись с мыслью, что ты - отстой.
> а как вы, интересно, зарабатываете деньги с помощью перл? неужели сайты автоматизируете? может CMS? а?
Я, например, поддерживаю (т.е. пишу постоянно уже третий год) сайт, систему управления им, систему контроля, часть ERP и CRM, кучу административных подсистем. Всё это -- не перле и немного на баше. Обзорная документация этой части -- уже полсотни страниц. Есть ещё части на 1C и других языках, но их делает другой человек.
Очень хорошо, что удалось убедить тогда начальство делать сайт на mod_perl, а не PHP. С PHP сегодня было бы тяжелее...
Но сайт-буклетик соседней медельной фирмы я никогда бы не стал делать на Perl. Для него PHP -- самое оно.
кстати, сайт за $2k программируется за 2-3 дня. Всё программирование делится на 2 части: подгонку CMS и привязку. Работа, конечно, дебильная (пусть луговский порадуется), но очень нужная, причём делать всё надо очень быстро. С перлом сдохнуть можно :)
Хей, Луговский, а может мне сайт на лиспе сделать? Или прологе? Ещё я фортран знаю, как ты к нему относишься?
Встраиваться. В код... Думаю, кроме люлей ты за свои сайтишки ничего не получал. Мешать код с дизайном - вершина кретинизма, а PHP/ASP/JSP - достойная реализация этого самого кретинизма. Ну ладно, в JSP custom tags хотя бы есть, если всё остальное оторвать - пущай живёт.
На Лиспе сайт делать - самое то. Особенно удобна поддержка - обновления легко заливаются на работающий сервер без перезагрузки. Производительность, опять же, гораздо выше, чем всё, что доступно с Java или PHP (кстати, единственный достойный компилятор PHP - на Схеме написан).
Да, про 2-3 дня, думаю, ты загнал. При таком подходе - код в html встраивать - ты ничего сложнее уеб-магазинчика не нарисуешь. Если же и получается находить придурочных заказчиков, кто столько платит за уеб-магазинчик, то, уверен, далеко не каждые 2-3 дня. И не каждый месяц. Так что, дитятко, свисти потише - а то смешно выглядишь.
>кстати, сайт за $2k программируется за 2-3 дня. Всё программирование делится на 2 части: подгонку CMS и привязку. Работа, конечно, дебильная (пусть луговский порадуется), но очень нужная, причём делать всё надо очень быстро. С перлом сдохнуть можно :)
Тогда ваш уровень ясен. Поменять иконки, ксс и "шоб новости не слева а справа рисовались".
Если сильно того хочется смотри mod_perl и связанные с ним технологии.
А вообще темплейты рулят, в частности и для того же пхп.
Кстати, интересный путь развития: сначала приблудина для встраивания кода в хтмл страницы, теперь высоко-ооп язык ;) для встраивания в хтмл кода полученого из темплейта.