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

Podobne dokumenty
Co to jest Perl? Narzędzia informatyczne w językoznawstwie. 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,

1 Przygotował: mgr inż. Maciej Lasota

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

Paradygmaty programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Wstęp do Informatyki dla bioinformatyków

Programowanie w języku Python. Grażyna Koba

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

1 Podstawy c++ w pigułce.

Utworzenie pliku. Dowiesz się:

WPROWADZENIE. Użycie PHP

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

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

KARTA KURSU. Języki skryptowe

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

Wprowadzenie do języka Java

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

1 Podstawy c++ w pigułce.

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

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

Cw.12 JAVAScript w dokumentach HTML

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

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

JAVAScript w dokumentach HTML (1)

PERL. Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister

Tworzenie oprogramowania

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

Redis, skrypty w języku Lua

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

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Warsztaty dla nauczycieli

Programowanie I. Wprowadzenie. Proces programowania

Umieszczanie kodu. kod skryptu

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

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

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

Python wstęp. Michał Bereta

Programowanie obiektowe

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Bazy danych i strony WWW

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

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

KURSY PROGRAMOWANIA DLA DZIECI

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.

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

Programowanie Komponentowe WebAPI

Wykład 0 Informacje Podstawowe

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

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

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

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

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

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

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.

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)

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

Wstęp do programowania. Wykład 1

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe

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

System operacyjny Linux

lekcja 8a Gry komputerowe MasterMind

Algorytmika i pseudoprogramowanie

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Powłoka bash. Kurs systemu Unix 1

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

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

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

KATEGORIA OBSZAR WIEDZY

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

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

Systemy operacyjne. Laboratorium 8. Perl find

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

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

7. Pętle for. Przykłady

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

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Transkrypt:

Co to jest Perl? Programowanie w Perlu Perl - Wprowadzenie Marcin Junczys-Dowmunt junczys@amu.edu.pl Wydział Matematyki i Informatyki http://amu.edu.pl/~junczys 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 Programowanie w Perlu 1/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 3/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 5/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 7/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 9/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 11/18 Marcin Junczys-Dowmunt Programowanie w Perlu 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 Programowanie w Perlu 13/18 Marcin Junczys-Dowmunt Programowanie w Perlu 14/18 Komunikaty o błędach Ć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ść Komunikaty o błędach 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 Programowanie w Perlu 15/18 Marcin Junczys-Dowmunt Programowanie w Perlu 16/18

Komunikaty o błędach 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 Programowanie w Perlu 17/18 Marcin Junczys-Dowmunt Programowanie w Perlu 18/18