Co to jest Perl? Narzędzia informatyczne w językoznawstwie. Dlaczego właśnie Perl? Krótka historia Perl

Podobne dokumenty
Co to jest Perl? Programowanie w Perlu. Dlaczego właśnie Perl? Krótka historia Perl

Narzędzia informatyczne w językoznawstwie

Narzędzia informatyczne w językoznawstwie

Narzędzia informatyczne w językoznawstwie

Narzędzia informatyczne w językoznawstwie

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

1 Przygotował: mgr inż. Maciej Lasota

Paradygmaty programowania

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Wyrażenia regularne w Perlu. Narzędzia informatyczne w językoznawstwie. Przykład bardziej sensowny perlowy minigrep.pl. Pierwsze przykłady

1 Podstawy c++ w pigułce.

Programowanie w języku Python. Grażyna Koba

Wstęp do Informatyki dla bioinformatyków

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Utworzenie pliku. Dowiesz się:

KARTA KURSU. Języki skryptowe

WPROWADZENIE. Użycie PHP

Cw.12 JAVAScript w dokumentach HTML

PERL zarządzanie złożonością. Pavel Pachkouski

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

JAVAScript w dokumentach HTML (1)

Wprowadzenie do języka Java

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

1 Podstawy c++ w pigułce.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Tworzenie oprogramowania

PERL. Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Programowanie I. Wprowadzenie. Proces programowania

Wykład 0 Informacje Podstawowe

Umieszczanie kodu. kod skryptu

Programowanie Komponentowe WebAPI

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Redis, skrypty w języku Lua

Python wstęp. Michał Bereta

Programowanie obiektowe

Bazy danych i strony WWW

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Systemy operacyjne. Laboratorium 7. Perl podstawy. Jarosław Rudy Politechnika Wrocławska 27 kwietnia 2017

Wprowadzenie do Scilab: podstawy języka Scilab

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Python. Skąd taka nazwa? Kurs systemu UNIX 1

KURSY PROGRAMOWANIA DLA DZIECI

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Programowanie 2. Perl - Tablice asocjacyjne oraz funkcje tablicowe. Marcin Junczys-Dowmunt

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Informatyka I. dr inż. Andrzej Czerepicki.

Warsztaty dla nauczycieli

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

KURSY PROGRAMOWANIA DLA DZIECI

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Programowanie obiektowe zastosowanie języka Java SE

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Wykład 3 Składnia języka C# (cz. 2)

Dzisiejszy wykład. Programowanie w Perlu. Co to jest hasz? Inicjalizacja haszów

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Wstęp do programowania. Wykład 1

System operacyjny Linux

Programowanie obiektowe

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Algorytmika i pseudoprogramowanie

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Powłoka bash. Kurs systemu Unix 1

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Wyrażenia regularne. Wyrażenia regularne 1/41

KATEGORIA OBSZAR WIEDZY

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Podstawy programowania. Wprowadzenie

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Wykład nr 1 Język Ruby i framework Rails

7. Pętle for. Przykłady

Magia Ruby : programowanie na wesoło / Eric Weinstein. Warszawa, Spis treści

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Systemy operacyjne. Laboratorium 8. Perl find

lekcja 8a Gry komputerowe MasterMind

Transkrypt:

Co to jest Perl? Narzędzia informatyczne w językoznawstwie Perl - Wprowadzenie Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 21. listopada 2007 Perl jest dynamicznym językiem programowania stworzonym przez Larry ego Walla (lingwistę) w roku 1987 Perl jest językiem bardzo wysokiego poziomu (C niskiego poziomu, Java wysokiego poziomu) Perl jest językiem skryptowym, interpretowanym (oraz kompilowanym) Perl jest językiem proceduralnym, obiektowym lub/i funkcjonalnym (w porównaniu: Pascal proceduralny, Java obiektowy, Haskell funkcjonalny, Prolog deklaratywny) 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? Larry Wall tworzy pierwszą wersję w grudniu 1987 W roku 1988 powstaje wersja Perl 2, w 1989 Perl 3 W roku 1991 pojawia się książka Programming Perl autorstwa Larry ego Walla (tzw. Wielbłąd the Camel Book). Numer wersji zostaje podniesiony do 4, żeby zasygnalizować zgodność z tym dziełem W roku 1994 pojawia się Perl 5, który jest stale rozszerzany. Najbardziej aktualną wersją jest Perl 5.8.8 W roku 1995 powstaje CPAN Comprehensive Perl Archive Network zbiór rozszerzeń, który dzisiaj zawiera 11,000 modułów pochodzących od ponad 5000 autorów. Obecnie trwają pracę nad zupełnie nową wersją Perl 6 Perl powstał jako język służący do przetwarzania dużych zbiorów tekstu Pełna integracja wyrażeń regularnych Wbudowana i prosta obsługa dynamicznych struktur danych: list, tablic i tablic asocjacyjnych (tzw. hashe) oraz struktur bardziej złożonych Prosta obsługa operacji wejścia/wyjścia w przypadku wczytywania plików tekstowych zwięzła składnia średnio jeden wiersz kodu Perla to tyle co 6 wierszy C++ Gigantyczna biblioteka ogólnodostępnych modułów (CPAN - Comprehensive Perl Archive Network) np. parsery XML, HTML, obsługa Unicode itp. 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 tego języka (dzieje się podobnie w przypadku innych języków skryptowych) Motto: There is more than one way to do it skrót: TIMTOWTDI wymawiane jako Tim Toady Ksywy: Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister The Duct Tape of the Internet The Swiss Army Chain Saw of Programming Languages Obfuscated Perl Contest konkurs na pisanie najbardziej nieczytelnego programu, który nadal coś robi Zawody poezji pisanej w Perlu, która nadal jest poprawnym programem (tzn. kompiluje się) Laureat pierwszego konkursu (2000) poezji pisanej w Perlu: 1 if (( light eq dark ) && ( dark eq light ) && ( $blaze_of_night { moon == black_hole ) && ( $ravens_wing { bright == $tin { bright )){ my $love = $you = $sin { darkness + 1; 5 ; Na podstawie wiersza The Invocation Jim a Steinman a If light were dark and dark were light The moon a black hole in the blaze of night A raven s wing as bright as tin Then you, my love, would be darker than sin. 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 język Ruby Cała trójka róźni się między sobą raczej filozofią niż funkcjonalnością Jak dotąd Perl jest najpopularniejszym wielozadaniowym językiem skryptowym w internecie 1 Więc dlaczego właśnie Perl? Ponieważ prowadzący nie zna ani Phytona ani Ruby (podejrzewa jednak, że znajomość jednego języka z tej trójki jest w zupełności wystarczająca) ActivePerl Najpopularniejsza dystrybucja Perla dla Windowsa autorstwa Activision łatwy dostęp do (nie do końca aktualnej wersji) CPAN poprzez PPM (Perl Package Manager) http://www.activestate.com/store/activeperl/download/ Cygwin Nie tyle dystrybucja Perla, raczej coś w rodzaju symulatora Linuxa pod Windowsem, zawiera wersję Perla http://www.cygwin.com/ Istnieje wiele innych dystrybucji, ale wydają się one nie do końca dopracowane 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 ; Programy Perl (skrypty) to zwykłe pliki tekstowe (najczęściej z rozszerzeniem.pl) Możemy je edytować dowolnym edytorem tekstu, jednak polecam edytory z podświetlaniem składni (np. EmEditor) lub środowiska bardziej wyspecjalizowane (np. Activision Komodo Edit darmowa wersja Komodo IDE) Skrypty wykonujemy z poziomu wiersza poleceń, wpisując perl nazwa skryptu.pl my % conc ; while (my $line = <>) { 5 chomp $line ; my @words = split /[.\?,!;:\(\)]+/, $line ; foreach my $word ( @ words ) { if ( exists $conc { $word ) { $conc { $word ++; 10 else { $conc { $word = 1; 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 ; $conc {$_ ++ foreach ( split /[ \.\?,!;:\(\)]+/); 5 print "$_: $conc {$_ \n" foreach ( sort keys % conc ); Skrócenie powstało przez: Korzystanie ze zmiennych domyślnych Wykorzystanie faktu, że Perl potrafi automatycznie deklarować i definiować zmienne Zapis skrótowy pętli, jeśli wykonany jest tylko jedno polecenie Inne mechanizmy: np. interpolacja zmiennych Istnieje zarzut, że taki styl programowania promuje pisanie nieczytelnego kodu To prawda jednak napisania 4 wierszy kodu zajmuje o wiele mniej czasu niż napisania 17 wierszy Zaleta: Perl pozwala na pisanie programów jednym i drugim stylem: czytelnym i czystym lub szybkim i brudnym. Własne doświadczenie: im lepiej znamy Perla, tym chętniej korzystamy ze stylu skróconego Wspomniane zawody Obfuscated Perl 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 tekstowy hello.pl zawierający następujący wiersz: print("hello, world!\n"); Typowy pierwszy przykład w (prawie) każdym podręczniku programowania Wykorzystamy go do zabawy z komunikatami o błędach Dowiemy się w ten sposób jakie polecenia są według Perla gramatyczne a jakie nie Najpierw wykonamy nasz program z poziomu wiersza poleceń komendą (o ile znajdujemy się w tym samym katalogu) perl hello.pl print("hello, world!\n"); print jest funkcją, czymś w rodzaju czasownika Fragmenty ujęte w nawiasie to argumenty funkcji inaczej dopełnienia czasownika Wszytko w cudzysłowie to łańcuchy znakowy, możemy je traktować jak nazwy lub imiona całość zakończoną średnikiem nazywamy instrukcją (zdania w języku naturalnym) Nasz prosty program przykładowy składa się tylko z jednej instrukcji Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18 Ćwiczenie Proszę zmodyfikować program hello.pl możemy np. : powtórzyć wiersz programu, usunąć średniki w różnych kolejnościach usunąć nawiasy dodać białe znaki (spacje, taby, załamania wiersza) w dowolnych miejscach programu zmienić print na jakąś wersję ortograficznie niepoprawną usunąć znaki cudzysłowu zmienić znaki cudzysłowu podwójnego na cudzysłów pojedynczy Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Teraz zmodyfikujemy nasz mały program do następującej postaci: use diagnostics ; print " Hello, world!\n"; Powtórzymy poprzednie modyfikacje i przeanalizujemy ponownie komunikaty o błędach. Tym razem będą one znacznie bardziej wyczerpujące. Komunikaty zostaną wyświetlone na wyjściu błędów. Żeby móc je obejrzeć ekran po ekranie, trzeba je przekierować na wyjście standardowe: perl hello.pl 2>&1 more Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/18

Literatura Wnioski Nawiasy nie są konieczne przy wywołaniu funkcji (o ile nie ma wieloznaczności), ale zwiększają czytelność Białe znaki nie mają wpływu na program, o ile nie pojawiają się w cudzysłowie Cudzysłów (podwójny lub pojedynczy) jest konieczny do oznaczania łańcuchów znakowych Ostatni średnik (wewnątrz bloku) możemy opuścić, opuszczenie pozostałych spowoduje wystąpienie błędu Nasz program nie wykona się, jeśli popełniliśmy błąd składniowy Ważna zasada: najpierw poprawiamy pierwsze pojawiające się błędy. Pozostałe mogą być wtórne Michael Hammond, Programming for linguists: Perl for language researchers. Oxford: Blackwell, 2003 Randal L. Schwartz, Tom Phoenix, Brian d Foy, Perl. Wprowadzenie. Wydanie IV. O Reilly/Helion, 2006 Larry Wall, Tom Christiansen, Jon Orwant, Programming Perl. Third Edition. O Reilly, 2000 Tom Christiansen, Nathan Torkington Perl Cookbook, Second Edition. O Reilly, 2003 Simon Cozen Perl. Zaawansowane programowanie. Wydanie II. O Reilly/Helion, 2006 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/18