Article View: pl.comp.lang.perl
Article #1043Re: PERL wymiera ?
From: Michal Mosiewicz
Date: Wed, 04 Mar 1998 23:12
Date: Wed, 04 Mar 1998 23:12
99 lines
5378 bytes
5378 bytes
Marcin Laszewski wrote:
> Jedno jest faktem jest interpreterem, zatem:
Zdefiniujmy najpierw, co to jest interpreter. Bo dla niektórych perl
jest kompilatorem. Zanim kod wykona to go najpierw kompiluje. Nie
generuje najefektywnijszego kodu maszynowego, ale nie jest to też
stricte interpreter.
> * wolniejszy jak jakies C
No tak. To dlatego będziesz pisał wszystko w C?
> * mniej bezpieczny jako CGI
Kwestie bezpieczeństwa CGI są naprawdę w minimalnym stopniu związane z
perlem jako interpreterem. W dobrze skonfigurowanym środowisku perl nie
był nigdy bardziej niebezpieczny niż jakikolwiek inny język
programowania.
> * ma kiepska i nieklarowna skladnie - ktos mowil, ze
> zna lex-a, abstracujac, ze jedno ma sie do drugiego
> jak maszynka do miesa, to moze probowal kto rozmacac
> skladnie perla ? Moglby sie pochwalic osiagnieciami ?
Ta składnia nie jest idealna - fakt. Ale z drugiej strony można w jednej
linii zapisać bardzo dużo. Perl jest bardzo efektywnym językiem w
pisaniu, gdy ktoś już go dobrze pozna. Składnia jest zorientowana na
szybkość klepania. Zresztą od zarania dziejów mottem perl'a była
możliwość napisania wszystkiego na conajmniej kilka sposobów.
> Bazy danych - jak w kazdym innym jezyku - otworz, wykonaj, zamknij.
> I co w tym takiego ciekawego? A co powiecie na obsluga np. takiego
OK. Napisz w C coś takiego:
#!/usr/bin/perl
use Mysql;
$conn = Mysql->connect('localhost', 'bar');
$query = $conn->query('SELECT a,b,c FROM foo');
#tutaj idzie np. początek strony HTML
while( (%pole) = ($query->fetchhash()) ) {
print
"<tr><td>$pole{'a'}</td><td>$pole{'b'}</td><td>$pole{'c'}</td></tr>\n";
}
#reszta strony HTML
undef $conn;
Jak wolisz, może być w awk, albo dowolnym innym języku. W awk może być
trudno. W C program będzie dłuższy przynajmniej jakieś 10 razy. Powyższe
napisałem z pamięci w jakieś 40 sekund (na dodatek musiałem sobie
przypominać tę skomplikowaną składnię perl'a. To teraz stosując jakiś
język o prostszej składni napisz to, w 400 sekund. Starczy?
> dbm-a ? W kazdym man-e pisze, ze jego podstwowa zaleta (wsrod
> masy niedogodnosci) jest to, ze moze gromadzic miliardy rekordow.
> DBM-a z miliardami rekorow co prawda nie widzialem, ale obsluga,
> tfu! otworzenia takiej bazy w perlu to urwanie dysku. Dla ciekawosci
> zapytam: dalej sie taka baze uzywa przez wczytanie jej calej
> zawartosci do tablicy ? Mi stacja robocza Sun-a siadla.
Chyba coś Ci się pomerdało. Odkąd sięgam pamięcią, to w perlu można było
od zawsze korzystać z dbmów tak jak z tablic asocjacyjnych. Ale to nie
znaczy, że one były w całości wczytywane do pamięci i tam obsługiwane.
Poza tym dbm'y to nie są złożone bazy danych. To są jedynie indeksy
pozwalające na poukładanie pewnych wartości według klucza. Nie służą do
niczego bardziej złożonego. Natomiast perl może również korzystać z
innych baz danych.
> Nie chce mowic, ze perl jest do kitu, bo sa firmy ktore pisza w nim
> duze programy, ale jakie ma zalety w prownaniu np. z jezykiem C
> (ograniczmy sie do programow CGI) ? Co jest w Perlu czego nie ma
> w C ?
Naprawdę dużo w perlu jeszcze nie popisałeś. :-)
Przede wszystkim - po to się używa języków wyższego poziomu, żeby pisać
szybciej, a nie koniecznie po to, żeby się szybciej wykonywało.
Natomiast perl jak na język, który ma zalety interpretera jest bardzo
szybki. Jeśli chodzi specyficznie o CGI, gdzie perl akurat jest dość
często stosowany, to są możliwości uruchamiania zwykłych programów CGI w
taki sposób, że dodatkowy koszt wynikający z kompilacji skryptu znika
(mod_perl). Na dodatek na zupełnie przeciętnym komputerze jestem w
stanie obsługiwać kilka tysięcy transakcji na sekundę przy pomocy
skryptów w pelu. W chwili obecnej perl zapewnia moim zdaniem jeden z
lepszych współczynników cena/wydajność.
Nie wspominając już o takich szczegółach jak olbrzymia baza różnych
dodatkowych modułów do perla. Bardzo dobra organizacja i uporządkowanie
modułów. Od modułów, które ułatwiają pisanie skryptów, dostęp do baz
danych, komunikację sieciową, gotowych agentów różnych usług po takie,
dzięki którym możesz tworzyć frontend w X-ach, renderować trójwymiarowe
obrazki w OpenGL i robić jeszcze masę innych rzeczy. I mówisz, że w awk
też tak można? Mówimy o tym samym awk?
Michał
--
WWW: http://www.lodz.pdi.net/~mimo tel: Int. Acc. Code + 48 42 148340
add: Michal Mosiewicz * Bugaj 66 m.54 * 95-200 Pabianice * POLAND
Technical Details
Message-ID:
<34FDDFC6.BB030A34@interdata.com.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!mimo.lodz.pdi.net!not-for-mailReferences:
<6dhi1i$qdp$1@helios.man.lublin.pl> <34FC7039.14B0830B@webcorp.com.pl> <6dkg4o$59i$1@helios.man.lublin.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!mimo.lodz.pdi.net!not-for-mail From: Michal Mosiewicz <mimo@interdata.com.pl> Newsgroups: pl.comp.lang.perl Subject: Re: PERL wymiera ? Date: Thu, 05 Mar 1998 00:12:07 +0100 Organization: Interdata, http://www.interdata.com.pl/ Lines: 99 Message-ID: <34FDDFC6.BB030A34@interdata.com.pl> References: <6dhi1i$qdp$1@helios.man.lublin.pl> <34FC7039.14B0830B@webcorp.com.pl> <6dkg4o$59i$1@helios.man.lublin.pl> NNTP-Posting-Host: mimo.lodz.pdi.net Mime-Version: 1.0 X-Mailer: Mozilla 4.04 [en] (X11; I; Linux 2.0.33 i586) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit