Powłoki systemu operacyjnego i interpretery

Transkrypt

Powłoki systemu operacyjnego i interpretery
Powłoki systemu operacyjnego UNIX
Lisp
Python
Powłoki systemu operacyjnego i interpretery
Bogdan Kreczmer
[email protected]
Zakład Podstaw Cybernetyki i Robotyki
Instytut Informatyki, Automatyki i Robotyki
Politechnika Wrocławska
Kurs: Zaawansowane metody programowania
c
Copyright2010
Bogdan Kreczmer
Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on
udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany
wyłącznie w całości, razem z niniejszą stroną tytułową.
Zaawansowane metody programowania
Powłoki systemu operacyjnego i intepretery
Powłoki systemu operacyjnego UNIX
Lisp
Python
Niniejsza prezentacja została wykonana przy użyciu systemu składu PDFLATEX oraz stylu beamer, którego autorem jest Till Tantau.
Strona domowa projektu Beamer:
http://latex-beamer.sourceforge.net
Zaawansowane metody programowania
Powłoki systemu operacyjnego i intepretery
Powłoki systemu operacyjnego UNIX
Lisp
Python
1
Powłoki systemu operacyjnego UNIX
Trochę historii
2
Lisp
Podstawowe cechy
3
Python
Podstawowe cechy
c
Copyright2010
BK
Zaawansowane metody programowania Powłoki systemu operacyjnego i intepretery
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Na początku był system operacyjny . . .
sh – (shell) powłoka stworzona przez Stephen Bourne w
Laboratorium AT&T Bell Laboratories. Pierwsze jej wydanie miało
miejsce w 1977. Stał się on powłoką 7 wersji systemu UNIX.
Zastąpiła ona wcześniejszą powłokę Thompson.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Powłoka Bourne’a
Ważniejsze założenia będące podstawą konstrukcji powłoki Bourne’a:
Wprowadzenie możliwości programowania poprzez pisanie
skryptów.
Możliwość tworzenia zmiennych.
Umożliwienie wykorzystywania skryptów jako powłoki.
Brak limitu na tworzone napisy w trakcie działania skryptu.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Powłoka Bourne’a
Ważniejsze założenia będące podstawą konstrukcji powłoki Bourne’a:
Wprowadzenie możliwości programowania poprzez pisanie
skryptów.
Możliwość tworzenia zmiennych.
Umożliwienie wykorzystywania skryptów jako powłoki.
Brak limitu na tworzone napisy w trakcie działania skryptu.
Ważniejsze wady:
Sposób edycji linii komend nieprzyjazny dla użytkownika.
Składnia skryptów przypominała bardziej ALGOL niż C.
Brak wbudowanych mechanizmów obliczania wyrażeń
arytmetycznych.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Aby użytkownikom żyło się lepiej . . .
csh – (shell) powłoka stworzona przez Bill Joy studenta Uniwersytetu
Berkeley. Została ona wykorzystana w drugim wydaniu BSD UNIX
(1978). Bill Joy (William Nelson Joy) był również twórcą edytora
via . Powstał on w 1976 dla wczesnej wersji BSD UNIX. Miał też
znaczący udział w stworzeniu NFS (Network File System)
BSD UNIX jest podstawą aktualnie rozwijanych dystrybucji takich jak FreeBSD,
OpenBSD, NetBSD. Mac OS X jest również oparty na tej technologii. Jądrem
sytemu Mac OS X jest NeXTSTEP (obiektowo zorientowany system operacyjny
rozwinięty przez firmę NeXT, której właścicielem był Steve Jobs). Zawiera on
fragmenty systemów FreeBSD i NetBSD.
a
Anegdota mówi, że Joy napisał edytor vi w jeden weekend. On sam temu
zaprzecza.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Powłoka csh
Zalety powłoki csh
Większe udogodnienia dla użytkownika. Możliwość odwoływania
się do historii poleceń i ich edycji,
Składnia skryptów jest zbliżona do języka C,
Aliasy,
Kontrola zadań (zawieszanie poprzez Ctrl-Z),
Skrócona notacja śicieżki do kartoteki domowej ( ˜ ).
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Powłoka csh
Ważniejsze wady:
Nie było gwarancji, że csh będzie na każdym systemie, dlatego
częściej do pisania skryptów był wybierany sh,
Niespójność składni, np. różnice dla poleceń set, setenv i alias,
Brak funkcji,
Brak możliwości niezależnego manipulowania deskryptorem stdio,
Gramatyka języka nie jest w pełni rekurencyjna.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Aby ponownie wysunąć się na czoło
ksh – (Korn shell) powłoka stworzona przez Davida Korna w
Laboratorium AT&T Bell Laboratories. Jej pierwsze wydanie
pojawiło się we wczesnych latach 1980-tych.
Zachowuje wsteczną kompatybilność z sh i implementuje
udogodnienia, które pojawiły się w csh.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Aby zapanawała przenośność ...
POSIX – (Portable Operating System Interface for UNIX)
Jako standard dla interfejsu linii komendy oraz skryptów została
wybrana powłoka Korna (ksh).
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Pojawiły się jednak problemy :-O
Powłoka Korna (ksh) była początkowow produktem komercyjnym
i licencjonowanym.
Kod powłoki był zamknięty.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
I narodził się Linux
Powłoka Korna (ksh) była początkowow produktem komercyjnym
i licencjonowanym.
Kod powłoki był zamknięty.
Szybki rozwój Linuksa, który był oparty na wolnym
oprogramowania.
Brak możliwości korzystania z wygodnej powłoki.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
A nieco później powstał bash
bash – (Bourne-again shell) powłoka stworzona przez Briana Foxa i dla
projektu GNU. Wydanie wersji bety nastąpiło 7 czerwcu 1989.
Napisany został w języku C.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Inne powłoki
tcsh – stworzył ją Ken Greer (Carnegie Mellon University), jej powstanie
datuje się na późnie lata 70-te. Litera T pochodzi od nazwy
systemu operacyjnego TENEX, który był inspiracją dla Greera.
ash – autorem powłoki jest Kenneth Almquist. Jest ona zgodna z
powłoką Bourne’a. Stworzona była dla systemów NetBSD, Cechą
charakterystyczną jest lepsza obsługa programu INN, który służy
do wymiany artykułów w grupach dyskusyjnych. ash jest domyślną
powłoką dla środowiska Cygwin.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Trochę historii
Inne powłoki
zsh – utworzył ją Paul Falstad w 1990. Był wtedy studentem
Princeton University. Nazwa pochodzi od loginu profesora Zhong
Shao z Yale, który w tym czasie pracował w Princeton.
Powłoka oferuje obsługę bardzo dużej ilości symboli
wieloznacznych, wypisów zawartości katalogu itp.
esh – (easy shell) Składnia poleceń i skryptów jest zbliżona do składni
języka Lisp. Cechami charakterystycznymi jest bardzo oszczędne
wykorzystanie pamięci.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Podstawowe cechy
Lisp
Lisp – (LISt Processing) Pierwsza specyfikacja pojawiła się w 1958.
Jest to jeden z najstarszych języków programowania wysokiego
poziomu. Starszym od niego jest jedynie Fortran.
Lisp jest realizacją idei tworzenia praktycznej notacji
matematycznej w programowaniu komputerów.
Najpopularniejsze dialekty: Common Lisp, Scheme
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
Podstawowe cechy
Python
Python – głównym twórcą tego języka jest Guido van Rossum.
Pierwszą implementację języka rozpoczął w grudniu 1989.
Python jest językiem interpretowalnym ogólnego przeznaczenia.
Wspiera kilka paradygmatów programowania:
programowanie strukturalne,
programowanie funkcyjne,
programowanie obiektowe.
c
Copyright2010
BK
Zaawansowane metody programowania
Powłoki systemu operacyjnego UNIX
Lisp
Python
I to już koniec.
c
Copyright2010
BK
Zaawansowane metody programowania Powłoki systemu operacyjnego i intepretery