  | 
 |           
От того, что перл - мощный до безумия, крутой и удобный язык - менее кривым 
он не становится.
И не надо писать мне письма, доказывая обратное :-) 
           
Вот, мне говорят, что "язык развивается тысячами профессионалов по всему
миру вот уже лет 5 и всё в нём довольно строго и правильно - это никак
не кривизна, а несколько другой подход к синтаксу, позволяющий писать
намного более лаконичные и красивые ( да, да ) программы". 
Я рад за язык, а еще больше - рад за язык "бейсик", "развиваемый" профессионалами
фирмы "микрософт" много лет, и на данный момент ставший фактически стандартным
(и уже "системным", то есть, входящим "в комплект") языком для платформы windows, 
и, в связи с возможностью прозрачно обращаться к сотням как системных, так и 
"внешних" active-x объектов, обладающий нехилой мощью.
           
При этом синтаксис бейсика строже и понятнее перла. Про семантику я и не говорю.
Ну и чего, после этого я должен гордо считать некривизну бейсика
доказанной? А разве нет - ведь он такой развитый, такой весь из себя мощный
и адванснутый - значит, кривым он быть не может! Для перла ведь мне так и доказывают -
раз мощный и развивался тысячами профессионалов - значит, не кривой. 
           
Я не буду говорить про "do_something if condition", которое выполняется 
справа налево (это что, локализация мозгов для арабских стран?). И не буду говорить 
про
"sub func { ( $a, $b, $c ) = @_; }", очевидным (для любителей перла, но не для
тех, кто до этого писал на сях, паскалях или тех же бейсиках с джавами) образом 
заменяющий строчки "sub func(a,b,c) {}" в нормальных языках. Где ещё
(в каком еще языке) внутри окавыченного выражения разворачиваются переменные??
Почему строковое сложение - это "точка"? Ааа, не отвечайте. Ответьте вот на что.
 
           
В большинстве языков я могу написать как-то так: 
           
fp=open("file"); // открываем 
           
read(fp,str); //читаем 
           
write(fp,str); //пишем 
           
close(fp); // закрываем 
            
           
Или, скажем: 
           
open fp, "file" 
           
input fp, str 
           
print fp, str 
           
close fp 
            
           
Или: 
           
open(fp,"file") 
           
str=read(fp) 
           
print(fp,str) 
           
close(fp) 
            
           
Везде: open - функция (оператор, сисколл, библиотечный вызов), связывающий дескриптор файла
с собственно файлом ("открывающий" файл); input/read/get - функция (оператор и т. д.)
чтения из файла (по предъявленному дескриптору); print/write - вывод; close - 
"закрытие". 
           
В перле есть open(). 
            В перле есть print. 
           
В перле есть close(). 
           
Как называется оператор (функция, сисколл, либколл), осуществляющий
чтение? Про "галочки" не надо - это не "вызов подпрограммы" а какая-то
хакерская поделка вроде "++" и "--" в Си. 
           
Либо уж пусть изначально отказываются от "операторного" синтаксиса и переходят
полностью на тарабарщину из галочек и палочек, либо пусть тянут "совместимость
со старыми программистами" до логического конца: хотя бы в пределах одной 
группы действий обеспечивают возможность писать единообразный код.
А когда часть программы я могу 
написать (и пишу) "классическими" методами, а в некоторых 
местах меня заставляют учить хакерский диалект - это как-то непоследовательно...
           
"Если бы ты учил его больше, ты бы вник ( вероятно ) во всю красоту синтакса,
позволяющего творить что угодно в зависимости от опыта и знаний,
там где в более строгих языках вариантов просто не существует". 
           
"Это хорошо, что вы такой зеленый и плоский - вы лежите на газоне, и вас не видно". 
Я рад, конечно, что перл предоставляет кучу вариантов сделать то, что я хочу.
Жаль только, что в некоторых местах он не предоставляет простых и очевидных вариантов,
и заставляет выбирать из десятка "хакерских". 
           
 И еще раз. Перл - удобный (когда привыкнешь). Перл - мощный. 
Но кривой от рождения.
 |  |   
 |   |