Wyklad04 2008 handout


Co to jest Perl?
Narzędzia informatyczne w językoznawstwie
Perl jest dynamicznym językiem programowania stworzonym
przez Larry ego Walla (lingwistę) w roku 1987
Perl - Wprowadzenie
Perl jest językiem bardzo wysokiego poziomu (C  niskiego
poziomu, Java  wysokiego poziomu)
Marcin Junczys-Dowmunt
Perl jest językiem skryptowym, interpretowanym (oraz
junczys@amu.edu.pl
kompilowanym)
Zakład Logiki Stosowanej Perl jest językiem proceduralnym, obiektowym lub/i
http://www.logic.amu.edu.pl
funkcjonalnym (w porównaniu: Pascal  proceduralny, Java 
obiektowy, Haskell  funkcjonalny, Prolog  deklaratywny)
29. pazdziernika 2008
Perl jest językiem wielozadaniowym ze szczególnym naciskiem
na przetwarzanie dużych ilości danych w postaci tekstu
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/18
Krótka historia Perl Dlaczego właśnie Perl?
Perl powstał jako język służący do przetwarzania dużych
Larry Wall tworzy pierwszą wersję w grudniu 1987
zbiorów tekstu
Pełna integracja wyrażeń regularnych
W roku 1988 powstaje wersja Perl 2, w 1989 Perl 3
Wbudowana i prosta obsługa dynamicznych struktur danych:
W roku 1991 pojawia się książka Programming Perl autorstwa
list, tablic i tablic asocjacyjnych (tzw. hashe) oraz struktur
Larry ego Walla (tzw. Wielbłąd  the Camel Book). Numer
bardziej złożonych
wersji zostaje podniesiony do 4, żeby zasygnalizować zgodność
Prosta obsługa operacji wejścia/wyjścia w przypadku
z tym dziełem
wczytywania plików tekstowych
W roku 1994 pojawia się Perl 5, który jest stale rozszerzany.
zwięzła składnia  średnio jeden wiersz kodu Perla to tyle co 6
Najbardziej aktualną wersją jest Perl 5.8.8
wierszy C++
W roku 1995 powstaje CPAN  Comprehensive Perl Archive
Gigantyczna biblioteka ogólnodostępnych modułów (CPAN -
Network  zbiór rozszerzeń, który dzisiaj zawiera 11,000
Comprehensive Perl Archive Network) np. parsery XML,
modułów pochodzących od ponad 5000 autorów.
HTML, obsługa Unicode itp.
Obecnie trwają pracę nad zupełnie nową wersją Perl 6
Od lingwistów pracujących w przemyśle informatycznym
najczęściej wymaga się znajomość Perla
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18
Perl jako zjawisko kulturowe Poezja w Perlu - przykład
Wokół Perla powstało coś w rodzaju subkultury zwolenników
Laureat pierwszego konkursu (2000) poezji pisanej w Perlu:
tego języka (dzieje się podobnie w przypadku innych języków
skryptowych) 1 if ((light eq dark) && (dark eq light)
&& ($blaze_of_night{moon} == black_hole)
Motto:  There is more than one way to do it  skrót:
&& ($ravens_wing{bright} == $tin{bright})){
TIMTOWTDIwymawiane jako Tim Toady
my $love = $you = $sin{darkness} + 1;
Ksywy:
5 };
Practical Extraction and Report Language
Na podstawie wiersza  The Invocation Jim a Steinman a
Pathologically Eclectic Rubbish Lister
The Duct Tape of the Internet
If light were dark and dark were light
The Swiss Army Chain Saw of Programming Languages
The moon a black hole in the blaze of night
 Obfuscated Perl Contest  konkurs na pisanie najbardziej
A raven s wing as bright as tin
nieczytelnego programu, który nadal  coś robi
Then you, my love, would be darker than sin.
Zawody poezji pisanej w Perlu, która nadal jest poprawnym
programem (tzn. kompiluje się)
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/18
Alternatywy Dystrybucje Perla
Obecnie najważniejszą alternatywą do Perla jest język
skryptowy Python, któremu ostatnio mocno po piętach depcze
ActivePerl  Najpopularniejsza dystrybucja Perla dla
język Ruby
Windowsa autorstwa Activision  łatwy dostęp do (nie do
Cała trójka rózni się między sobą raczej filozofią niż
końca aktualnej wersji) CPAN poprzez PPM (Perl Package
funkcjonalnością
Manager)
http://www.activestate.com/store/activeperl/download/
Jak dotąd Perl jest najpopularniejszym wielozadaniowym
1
językiem skryptowym w internecie
Cygwin  Nie tyle dystrybucja Perla, raczej coś w rodzaju
symulatora Linuxa pod Windowsem, zawiera wersję Perla
Więc dlaczego właśnie Perl?
http://www.cygwin.com/
Ponieważ prowadzący nie zna ani Phytona ani Ruby (podejrzewa
Istnieje wiele innych dystrybucji, ale wydają się one nie do
jednak, że znajomość jednego języka z tej trójki jest w zupełności
końca dopracowane
wystarczająca)
1
omijamy tutaj PHP, który jest językiem przeznaczonym praktycznie tylko i
wyłącznie do tworzenia stron internetowych
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 7/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/18
Jak tworzymy program w Perl? Zliczanie wyrazów - wersja czytelna
1 use strict;
my %conc;
while (my $line = <>) {
Programy Perl (skrypty) to zwykłe pliki tekstowe (najczęściej
5 chomp $line;
z rozszerzeniem.pl)
my @words = split /[ .\?,!;:\(\)]+/, $line;
foreach my $word (@words) {
Możemy je edytować dowolnym edytorem tekstu, jednak
if (exists $conc{$word}) {
polecam edytory z podświetlaniem składni (np. EmEditor) lub
$conc{$word}++;
środowiska bardziej wyspecjalizowane (np. Activision Komodo
10 }
Edit  darmowa wersja Komodo IDE)
else {
Skrypty wykonujemy z poziomu wiersza poleceń, wpisując
$conc{$word} = 1;
perl nazwaskryptu.pl }
}
15 }
foreach my $word (sort keys %conc) {
print "$word: $conc{$word}\n";
}
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 10/18
Zliczanie wyrazów - wersja hakerska Ekonomia zapisu  wada czy zaleta?
1 while (<>) {
chomp;
Istnieje zarzut, że taki styl programowania promuje pisanie
$conc{$_}++ foreach (split /[ \.\?,!;:\(\)]+/);
nieczytelnego kodu
}
To prawda  jednak napisania 4 wierszy kodu zajmuje o wiele
5 print "$_: $conc{$_}\n" foreach (sort keys %conc);
mniej czasu niż napisania 17 wierszy
Zaleta: Perl pozwala na pisanie programów jednym i drugim
Skrócenie powstało przez:
stylem: czytelnym i czystym lub szybkim i brudnym.
Korzystanie ze zmiennych domyślnych
Własne doświadczenie: im lepiej znamy Perla, tym chętniej
Wykorzystanie faktu, że Perl potrafi automatycznie
korzystamy ze stylu skróconego
deklarować i definiować zmienne
Wspomniane zawody  Obfuscated Perl
Zapis skrótowy pętli, jeśli wykonany jest tylko jedno polecenie
Inne mechanizmy: np. interpolacja zmiennych
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/18
Nasz pierwszy program Anatomia programu
Utwórzmy plik tekstowyhello.plzawierający następujący wiersz:
print("Hello, world!\n");
print("Hello, world!\n");
printjest funkcją, czymś w rodzaju czasownika
Fragmenty ujęte w nawiasie to argumenty funkcji  inaczej
Typowy pierwszy przykład w (prawie) każdym podręczniku
dopełnienia czasownika
programowania
Wszytko w cudzysłowie to łańcuchy znakowy, możemy je
Wykorzystamy go do zabawy z komunikatami o błędach
traktować jak nazwy lub imiona
Dowiemy się w ten sposób jakie polecenia są według Perla
całość zakończoną średnikiem nazywamy instrukcją (zdania w
 gramatyczne a jakie nie
języku naturalnym)
Najpierw wykonamy nasz program z poziomu wiersza poleceń
Nasz prosty program przykładowy składa się tylko z jednej
komendą (o ile znajdujemy się w tym samym katalogu)
instrukcji
perl hello.pl
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18
Komunikaty o błędach Komunikaty o błędach
Ćwiczenie
Teraz zmodyfikujemy nasz mały program do następującej postaci:
Proszę zmodyfikować programhello.pl
możemy np. :
use diagnostics;
print "Hello, world!\n";
powtórzyć wiersz programu, usunąć średniki w różnych
kolejnościach
usunąć nawiasy
Powtórzymy poprzednie modyfikacje i przeanalizujemy ponownie
dodać białe znaki (spacje, taby, załamania wiersza) w
komunikaty o błędach. Tym razem będą one znacznie bardziej
dowolnych miejscach programu
wyczerpujące.
zmienićprintna jakąś wersję ortograficznie niepoprawną
usunąć znaki cudzysłowu
Komunikaty zostaną wyświetlone na wyjściu błędów. Żeby móc je
zmienić znaki cudzysłowu podwójnego na cudzysłów
obejrzeć ekran po ekranie, trzeba je przekierować na wyjście
pojedynczy
standardowe:
Po każdym kroku wykonać programhello.pli
przeanalizować komunikaty błędu (o ile się pojawią) i perl hello.pl 2>&1 | more
wyświetlaną treść
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/18
Komunikaty o błędach Literatura
Wnioski
Nawiasy nie są konieczne przy wywołaniu funkcji (o ile nie ma
Michael Hammond, Programming for linguists: Perl for
wieloznaczności), ale zwiększają czytelność
language researchers. Oxford: Blackwell, 2003
Białe znaki nie mają wpływu na program, o ile nie pojawiają
Randal L. Schwartz, Tom Phoenix, Brian d Foy, Perl.
się w cudzysłowie
Wprowadzenie. Wydanie IV. O Reilly/Helion, 2006
Cudzysłów (podwójny lub pojedynczy) jest konieczny do
Larry Wall, Tom Christiansen, Jon Orwant, Programming
oznaczania łańcuchów znakowych
Perl. Third Edition. O Reilly, 2000
Ostatni średnik (wewnątrz bloku) możemy opuścić,
Tom Christiansen, Nathan Torkington Perl Cookbook, Second
opuszczenie pozostałych spowoduje wystąpienie błędu
Edition. O Reilly, 2003
Nasz program nie wykona się, jeśli popełniliśmy błąd
Simon Cozen Perl. Zaawansowane programowanie. Wydanie
składniowy
II. O Reilly/Helion, 2006
Ważna zasada: najpierw poprawiamy pierwsze pojawiające się
błędy. Pozostałe mogą być wtórne
Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/18


Wyszukiwarka

Podobne podstrony:
Wyklad1 2008 handout
Wyklad03 2008 handout
Wyklad2 2008 handout
Wyklad05 2008 handout
Poprzedni rok ETYKA WYKLADY 2008 czarno biale
Wyklad xmlparse handout
Wyklad04 2008
Wyklad V 2008
wyklady 2008 urban i plan przestrz
Wyklad5 2008
RACHUNKOWOSC WYKLAD 2008
Rynki finansowe WYKŁAD 2008
Wyklad03 2008
Wyklad2 2008
Wyklad05 2008
Wyklad I 2008
wykład t i 2008 1
wyklad 7 emocje stres niestacjonarne WSEiP 16 2008

więcej podobnych podstron