RE: What perl's bad for

2000-10-26 Пенетрантность Victor Wagner
On Thu, 26 Oct 2000, Greg Belenky wrote:

> #   Например, в Tcl нет встроенного unless, но я могу написать
> #   proc unless {condition args} {
> # eval if [list !$condition] $args
> #   }
> #   и получить конструкцию неотличимую по использованию от стандартного if.
> 
> это не + Tcl. в Паскале, например, тоже нет unless.
> не думаю, что eval ускорит выполнение программы, легче if с ! написать.

На самом деле и не замедлит. args это уже список. Так что сливать/парсить
его не придется. Кстати, в perl есть конструкция 
eval {
};  которая тоже ничего не замедляет. Просто семантика у Tcl-евского
и перлового eval заметно разная.



 
> #   Благодаря этому в TclX есть такие симпатичные конструкции как
> #   for_recursive_glob file pattern {
> #  do_something with $file
> #   }
> #
> 
> ну и чего такого? насколько я понял - обработка файлов, удовлетворяющих
> паттерну? никогда про процедуру find в перле не слышали?

Ну и то, что это не процедура, а полноценная управляющая конструкция.
Благодаря этому можно писать проблемно-ориентированные расширения,
в которых в виде управляющих конструкций реализована, например, работа
с результатами SQL-запроса.

Это намного удобнее для конечного пользователя, если данный скриптовый
язык используется как макроязык встроенный в некоторое большое приложение.
   
> #   И еще я обожаю писать процедуры  нотификации об ошибке, которые
> #   по возвращении вызывают return из вызвавшей процедуры.
> 
> а если ошибка возникла на 666 рекурсивном вызове и повлияла на результат
> предыдущих 665? что будет тогда?

Тогда надо использовать нормальные exception.

А описанную конструкцию я обычно использую в обработчиках событий.
Кстати, посредством встроенного event-loop в Tcl  очень легко реализуется
хвостовая рекурсия, а также циклы работающие в фоновом режиме (без всяких
нитей).

> 
> die, warn, carp понятнее...

Привычнее. А у меня бывают ситуации когда мне нужно то то, то другое.
 
Ох, если бы я писал Communiware на tcl, не извращался бы я с парсерами,
а просто делал бы шаблонам eval в slave interpreter-е из которого
старательно удалены все потенциально-опасные команды.

Но, у perl есть и преимущества, и они в тот момент, когда принималось
решение, перевесили. 
-- 
Victor Wagner   [EMAIL PROTECTED]
Programmer  Office:7-(095)-785-09-72
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



RE: What perl's bad for

2000-10-26 Пенетрантность Greg Belenky
#
#   Сравните это с
#   return "Form begins [cgi startmultipartform] form ends"
#   Речь -то идет, естественно, именно о return а не о print.
#   А смысл такой
#   print 

RE: What perl's bad for

2000-10-26 Пенетрантность Greg Belenky
#
#   Не катит. Попробуй проделать то же самое со строкой. Я уж не говорю
#   о более сложных случаях, типа $cgi->start_multipart_form().

Кук-бук читали?
$string = "...${\($cgi->start_multipart_form())}...";

или речь не об том?
ИМХО не для этого листа разговор...


---
Greg Belenky
WebZavod (http://www.webzavod.ru) programmer

#
#
#
#   --
#   Victor Wagner   [EMAIL PROTECTED]
#   Programmer  Office:7-(095)-785-09-72
#   Communiware.Net Home: 7-(095)-135-46-61
#   http://www.communiware.net  http://www.ice.ru/~vitus
#
#
#   --
#   To UNSUBSCRIBE, email to [EMAIL PROTECTED]
#   with a subject of "unsubscribe". Trouble? Contact
#   [EMAIL PROTECTED]
#
#



Re: What perl's bad for

2000-10-26 Пенетрантность Victor Wagner
On Thu, 26 Oct 2000, Dmitry Maevsky wrote:

> VW> 
> VW> Не катит. Попробуй проделать то же самое со строкой. Я уж не говорю
> VW> о более сложных случаях, типа $cgi->start_multipart_form().
> 

> А в чем проблема??? строка длинная получается?

Да. Когда таких строк у тебя в программе несколько сот, это крайне снижает
ее удобочитаемость.

> { my $result="Beginig";
>   $result.=$cgi->start_multipart_form();
>   $result.="Ending\n";}
> (Правда я не вижу смысла в такой обработке $cgi-> :)
> Так-что все катит и на ура.

Сравните это с 

return "Form begins [cgi startmultipartform] form ends"

Речь -то идет, естественно, именно о return а не о print.

А смысл такой

print 

Re: What perl's bad for

2000-10-26 Пенетрантность Dmitry Maevsky
On Thu, 26 Oct 2000 12:51:01 +0400 (MSD)
Victor Wagner <[EMAIL PROTECTED]> wrote:

VW> > а типа print "length of string".#$list." noless no more\n"; не катит?
VW> 
VW> Не катит. Попробуй проделать то же самое со строкой. Я уж не говорю
VW> о более сложных случаях, типа $cgi->start_multipart_form().

А в чем проблема??? строка длинная получается?
{   my $result="Beginig";
$result.=$cgi->start_multipart_form();
$result.="Ending\n";}
(Правда я не вижу смысла в такой обработке $cgi-> :)
Так-что все катит и на ура.
__
Dmitry Maevsky  
Novgorod Datacom7-816-223-8474
__
Весело жить не запретишь, но можно сделать, что смеяться не захочется.



Re: What perl's bad for

2000-10-26 Пенетрантность Victor Wagner
On Thu, 26 Oct 2000, Dmitry Maevsky wrote:

> From: Dmitry Maevsky <[EMAIL PROTECTED]>
> Subject: Re: What perl's bad for
> X-Mailer: stuphead version 0.4.5 (GTK+ 1.2.7; Linux 2.2.17; i586)
> 
> On Thu, 26 Oct 2000 12:24:04 +0400 (MSD)
> Victor Wagner <[EMAIL PROTECTED]> wrote:
> 
> VW> puts "Length of list = [llength $list]"
> VW> 
> VW> т.е. не подстановка _внешних_ команд, а подстановка перловых же команд,
> VW> вызовов процедур, выражений.
> 
> а типа print "length of string".#$list." noless no more\n"; не катит?

Не катит. Попробуй проделать то же самое со строкой. Я уж не говорю
о более сложных случаях, типа $cgi->start_multipart_form().

 

-- 
Victor Wagner   [EMAIL PROTECTED]
Programmer  Office:7-(095)-785-09-72
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



Re: What perl's bad for

2000-10-26 Пенетрантность Dmitry Maevsky
On Thu, 26 Oct 2000 12:24:04 +0400 (MSD)
Victor Wagner <[EMAIL PROTECTED]> wrote:

VW> puts "Length of list = [llength $list]"
VW> 
VW> т.е. не подстановка _внешних_ команд, а подстановка перловых же команд,
VW> вызовов процедур, выражений.

а типа print "length of string".#$list." noless no more\n"; не катит?

__

Dmitry Maevsky  
Novgorod Datacom7-816-223-8474
__
A famous Lisp Hacker noticed an Undergraduate sitting in front of a Xerox
1108, trying to edit a complex Klone network via a browser. Wanting to
help, the Hacker clicked one of the nodes in the network with the mouse,
and asked "what do you see?" Very earnestly, the Undergraduate replied "I
see a cursor." The Hacker then quickly pressed the boot toggle at the back
of the keyboard, while simultaneously hitting the Undergraduate over the head
with a thick Interlisp Manual.  The Undergraduate was then Enlightened.



Re: What perl's bad for

2000-10-26 Пенетрантность Victor Wagner
> > 3. Интерфейс для писания C-шных расширений к перлу громоздок и сложен
> >   по сравнению с Tcl и Python. А сила скриптовых языков заключается ровно
> >   в том, что на них можно не делать то, что на них делать неэффективно.
> 
>  Надо юзать swig - он генерит врапперы  для perl, tcl, python для С и С++ 
> кода.

Кривизна перла заключается имено в необходимости юзать всякие h2xs и swig.
В Tcl swig - откровенное излишество. Написать руками проще и легче
добиться соответствия логики работы добавляемых команд логике языка.
swig генерит врапперы 1:1 с сишным api, а интерфейс конкретного
скриптового языка должен быть совсем другим. В качестве примера того
как я считаю правильным писать врапперы вокруг C-шных функций для
скриптовых языков см. мой  tclsyslog.

 
 
> > 4. И как же меня злит в перле отсутствие командной подстановки в строки... 
> 
>  Это типа `date`?

Нет, это типа

puts "Length of list = [llength $list]"

т.е. не подстановка _внешних_ команд, а подстановка перловых же команд,
вызовов процедур, выражений.
  

-- 
Victor Wagner   [EMAIL PROTECTED]
Programmer  Office:7-(095)-785-09-72
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



Re: What perl's bad for

2000-10-26 Пенетрантность Vlad Harchev
On Thu, 26 Oct 2000, Victor Wagner wrote:

> On Wed, 25 Oct 2000 [EMAIL PROTECTED] wrote:
> 
> > From: [EMAIL PROTECTED]
> > Subject: What perl's bad for
> > 
> > A mozhno li bez flame war spokoyno i konstruktivno
> > obyasnit` svoyu nepriyazn` k perl. Vot vse, chto ya nashel
> > v seti po etomu povodu:
> > ------------
> > What perl's bad for
> > 
> >  User interface design 
> Perl has Tk, but syntax is a bit ugly comparing with Tcl or Python,
> Perl has Gtk, but its interface is no better than C interface, and one
> expects more from scriting language.
> 
> Perl has CDK (Curses development kit) and I've never seen anything
> comparable for Tcl or Python or Scheme.
>   
> >  Proprietary file handling 
> 
> I've seen nothing better in scripting language land. 
> pack and unpack are cool.
> 
> >  Character-by-character processing 
> Any scripting language is bad for it. But typically 
> there are other ways to do same job.
> 
> 
>  
> > int main(void)
> > {
> > int chars=0, words=0, lines=0, inwords=0, c;
> > while ((c=getchar()) != EOF) {
> > chars++;
> > if (c=='\n')
> > lines++;
> > if (isspace(c))
> > inword=0;
> > else if (!inword++)
> > words++;
> > }
> > printf("%d %d %d\n", chars, words, lines);
> > }
> 
> while (<>) {
>   lines++;
>   chars+=length($_);
>   words+=scalar(split("\W+));
> }
> print "lines=$lines words=$words chars=$chars\n";  
> 
> На самом деле проблемы перла начинаются не с этого.
> 1. There is more than one way to do it, and sometimes it might be
> misleading.
> 2. В синтаксисе есть множество исключений из правил. При написании
> маленьких программ это удобно, при написании больших - приводит к
> трудноустранимым ошибкам. 

 Согласен - это напрягает.

> 3. Интерфейс для писания C-шных расширений к перлу громоздок и сложен
>   по сравнению с Tcl и Python. А сила скриптовых языков заключается ровно
>   в том, что на них можно не делать то, что на них делать неэффективно.

 Надо юзать swig - он генерит врапперы  для perl, tcl, python для С и С++ 
кода.

> 4. И как же меня злит в перле отсутствие командной подстановки в строки... 

 Это типа `date`?
 Легко написать процедуру которая будет допускать bash-like синтаксис для
коммандной подстановки.


 Best regards,
  -Vlad



Re: What perl's bad for

2000-10-26 Пенетрантность Victor Wagner
On Wed, 25 Oct 2000 [EMAIL PROTECTED] wrote:

> From: [EMAIL PROTECTED]
> Subject: What perl's bad for
> 
> A mozhno li bez flame war spokoyno i konstruktivno
> obyasnit` svoyu nepriyazn` k perl. Vot vse, chto ya nashel
> v seti po etomu povodu:
> ------------
> What perl's bad for
> 
>  User interface design 
Perl has Tk, but syntax is a bit ugly comparing with Tcl or Python,
Perl has Gtk, but its interface is no better than C interface, and one
expects more from scriting language.

Perl has CDK (Curses development kit) and I've never seen anything
comparable for Tcl or Python or Scheme.
  
>  Proprietary file handling 

I've seen nothing better in scripting language land. 
pack and unpack are cool.

>  Character-by-character processing 
Any scripting language is bad for it. But typically 
there are other ways to do same job.


 
> int main(void)
> {
> int chars=0, words=0, lines=0, inwords=0, c;
> while ((c=getchar()) != EOF) {
> chars++;
> if (c=='\n')
> lines++;
> if (isspace(c))
> inword=0;
> else if (!inword++)
> words++;
> }
> printf("%d %d %d\n", chars, words, lines);
> }

while (<>) {
  lines++;
  chars+=length($_);
  words+=scalar(split("\W+));
}
print "lines=$lines words=$words chars=$chars\n";  

На самом деле проблемы перла начинаются не с этого.
1. There is more than one way to do it, and sometimes it might be
misleading.
2. В синтаксисе есть множество исключений из правил. При написании
маленьких программ это удобно, при написании больших - приводит к
трудноустранимым ошибкам. 
3. Интерфейс для писания C-шных расширений к перлу громоздок и сложен
  по сравнению с Tcl и Python. А сила скриптовых языков заключается ровно
  в том, что на них можно не делать то, что на них делать неэффективно.
4. И как же меня злит в перле отсутствие командной подстановки в строки... 
   

-- 
Victor Wagner   [EMAIL PROTECTED]
Programmer  Office:7-(095)-785-09-72
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net  http://www.ice.ru/~vitus



What perl's bad for

2000-10-25 Пенетрантность igor
A mozhno li bez flame war spokoyno i konstruktivno
obyasnit` svoyu nepriyazn` k perl. Vot vse, chto ya nashel
v seti po etomu povodu:

What perl's bad for

 User interface design 
 Proprietary file handling 
 Character-by-character processing 

int main(void)
{
int chars=0, words=0, lines=0, inwords=0, c;
while ((c=getchar()) != EOF) {
chars++;
if (c=='\n')
lines++;
if (isspace(c))
inword=0;
else if (!inword++)
words++;
}
printf("%d %d %d\n", chars, words, lines);
}
-
Hotelos` by vse taki uznat` chem zhe "mastitym"
tak ne nravitsya perl. Potomu kak, esli na samom dele
gadost`, to ...
Esli rech zaydet o sravnenii ( a kak po drugomu to?),
to luchshe navernoye rassmatrivat` tolko skriptoviye yaziki
(yabloki - apel`siny).

Spasibo.
Igor.

> > 
> > ?? --  ?? ;)
> 
> ??  .  - ???. ???, ??? ?? -  ???,
> ?? ?? ???  ?? ?.
>   
> ??? ?? ? ? ??. , ??, python, ?? ? ??? ? ?? CPAN
> ?? ?? ??.
>  
>  
> 
> -- 
> Victor Wagner [EMAIL PROTECTED]
> ProgrammerOffice:7-(095)-785-09-72
> Communiware.Net   Home: 7-(095)-135-46-61
> http://www.communiware.net  http://www.ice.ru/~vitus
> 
>