Narzędzia informatyczne w językoznawstwie

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

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

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

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

Paradygmaty programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie w języku Python. Grażyna Koba

Wstęp do Informatyki dla bioinformatyków

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.

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

KARTA KURSU. Języki skryptowe

Utworzenie pliku. Dowiesz się:

WPROWADZENIE. Użycie PHP

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

Cw.12 JAVAScript w dokumentach HTML

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

JAVAScript w dokumentach HTML (1)

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

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

Wprowadzenie do języka Java

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

1 Podstawy c++ w pigułce.

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

Umieszczanie kodu. kod skryptu

Programowanie I. Wprowadzenie. Proces programowania

Redis, skrypty w języku Lua

Wykład 0 Informacje Podstawowe

Programowanie Komponentowe WebAPI

Python wstęp. Michał Bereta

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Programowanie obiektowe

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Bazy danych i strony WWW

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

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

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Wprowadzenie do Scilab: podstawy języka Scilab

KURSY PROGRAMOWANIA DLA DZIECI

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

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

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

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

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

Warsztaty dla nauczycieli

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

Informatyka I. dr inż. Andrzej Czerepicki.

Bash - wprowadzenie. Bash - wprowadzenie 1/39

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

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

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

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

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

KURSY PROGRAMOWANIA DLA DZIECI

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

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

Programowanie obiektowe zastosowanie języka Java SE

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!

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

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

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

Wstęp do programowania. Wykład 1

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

Programowanie obiektowe

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

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

Algorytmika i pseudoprogramowanie

System operacyjny Linux

Podstawy programowania. Wprowadzenie

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

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

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

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

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

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

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

KATEGORIA OBSZAR WIEDZY

Powłoka bash. Kurs systemu Unix 1

7. Pętle for. Przykłady

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

PHP: bloki kodu, tablice, obiekty i formularze

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

Systemy operacyjne. Laboratorium 8. Perl find

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Transkrypt:

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 29. października 2008 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 1/18

Co to jest Perl? Perl jest dynamicznym językiem programowania stworzonym przez Larry ego Walla (lingwistę) w roku 1987 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/18

Co to jest Perl? 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) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/18

Co to jest Perl? 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) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/18

Co to jest Perl? 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) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 2/18

Co to jest Perl? 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 2/18

Krótka historia Perl Larry Wall tworzy pierwszą wersję w grudniu 1987 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Krótka historia Perl Larry Wall tworzy pierwszą wersję w grudniu 1987 W roku 1988 powstaje wersja Perl 2, w 1989 Perl 3 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Krótka historia 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Krótka historia 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Krótka historia 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. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Krótka historia 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 3/18

Dlaczego właśnie Perl? Perl powstał jako język służący do przetwarzania dużych zbiorów tekstu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? Perl powstał jako język służący do przetwarzania dużych zbiorów tekstu Pełna integracja wyrażeń regularnych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? 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++ Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? 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. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 4/18

Dlaczego właśnie Perl? 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 4/18

Perl jako zjawisko kulturowe Wokół Perla powstało coś w rodzaju subkultury zwolenników tego języka (dzieje się podobnie w przypadku innych języków skryptowych) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18

Perl jako zjawisko kulturowe 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18

Perl jako zjawisko kulturowe 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18

Perl jako zjawisko kulturowe 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18

Perl jako zjawisko kulturowe 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ę) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 5/18

Poezja w Perlu - przykład 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 }; Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 6/18

Poezja w Perlu - przykład 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 6/18

Alternatywy Obecnie najważniejszą alternatywą do Perla jest język skryptowy Python, któremu ostatnio mocno po piętach depcze język Ruby 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

Alternatywy 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ą 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

Alternatywy 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 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

Alternatywy 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) 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

Dystrybucje Perla 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/ Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/18

Dystrybucje Perla 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/ Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/18

Dystrybucje Perla 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 8/18

Jak tworzymy program w Perl? Programy Perl (skrypty) to zwykłe pliki tekstowe (najczęściej z rozszerzeniem.pl) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/18

Jak tworzymy program w Perl? 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) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/18

Jak tworzymy program w Perl? 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 9/18

Zliczanie wyrazów - wersja czytelna 1 use strict ; 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 10/18

Zliczanie wyrazów - wersja hakerska 1 while (<>) { chomp ; $conc {$_ }++ foreach ( split /[ \.\?,!;:\(\)]+/); } 5 print "$_: $conc {$_ }\n" foreach ( sort keys % conc ); Skrócenie powstało przez: Korzystanie ze zmiennych domyślnych Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/18

Zliczanie wyrazów - wersja hakerska 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/18

Zliczanie wyrazów - wersja hakerska 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/18

Zliczanie wyrazów - wersja hakerska 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 11/18

Ekonomia zapisu wada czy zaleta? Istnieje zarzut, że taki styl programowania promuje pisanie nieczytelnego kodu Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/18

Ekonomia zapisu wada czy zaleta? 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/18

Ekonomia zapisu wada czy zaleta? 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. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/18

Ekonomia zapisu wada czy zaleta? 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 12/18

Ekonomia zapisu wada czy zaleta? 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 12/18

Nasz pierwszy program Utwórzmy plik tekstowy hello.pl zawierający następujący wiersz: print("hello, world!\n"); Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18

Nasz pierwszy program 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18

Nasz pierwszy program 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18

Nasz pierwszy program 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18

Nasz pierwszy program 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 13/18

Anatomia programu print("hello, world!\n"); print jest funkcją, czymś w rodzaju czasownika Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18

Anatomia programu print("hello, world!\n"); print jest funkcją, czymś w rodzaju czasownika Fragmenty ujęte w nawiasie to argumenty funkcji inaczej dopełnienia czasownika Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18

Anatomia programu 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18

Anatomia programu 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) Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 14/18

Anatomia programu 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 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 Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/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 Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/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 Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/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ą Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/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 Po każdym kroku wykonać program hello.pl i przeanalizować komunikaty błędu (o ile się pojawią) i wyświetlaną treść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/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ść Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 15/18

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. Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 16/18

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 Narzędzia informatyczne w językoznawstwie 16/18

Komunikaty o błędach Wnioski Nawiasy nie są konieczne przy wywołaniu funkcji (o ile nie ma wieloznaczności), ale zwiększają czytelność Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Komunikaty o błędach 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Komunikaty o błędach 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Komunikaty o błędach 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Komunikaty o błędach 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Komunikaty o błędach 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 Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 17/18

Literatura 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 18/18