Programowanie w systemie UNIX/Wstęp

Historia edytuj

 
Ewolucja systemów uniksowych oraz uniksopodobnych.
     na licencji open source
     na licencji shared source i mieszanej
     na licencji zamkniętej

Filozofia Unixa edytuj

Filozofia Uniksa została udokumentowana przez Douga McIlroya] w Bell System Technical Journal z 1978:[1]

  • Spraw, aby każdy program robił jedną rzecz dobrze.
  • Aby wykonać nową pracę, zamiast komplikować stare programy dodając nowe "funkcje", należy budować od nowa.
  • Oczekuj, że dane wyjściowe każdego programu staną się danymi wejściowymi innego, jeszcze nieznanego programu. Nie zaśmiecaj danych wyjściowymi obcymi informacjami. Unikaj rygorystycznie kolumnowych lub binarnych formatów wejściowych. Nie nalegaj na interaktywne wprowadzanie danych.
  • Projektuj i buduj oprogramowanie, a nawet systemy operacyjne, które należy wypróbować na wczesnym etapie, najlepiej w ciągu kilku tygodni. Nie wahaj się wyrzucić niezgrabnych części i odbudować je. Używaj narzędzi zamiast niewykwalifikowanej pomocy, aby uprościć zadanie programistyczne, nawet jeśli musisz objechać, aby zbudować narzędzia i spodziewasz się, że niektóre z nich wyrzucisz po zakończeniu ich używania.

Została ona później podsumowany przez Petera H. Salusa w A Quarter-Century of Unix (1994):

  • Pisz programy, które robią jedną rzecz i robią to dobrze.
  • Napisz programy do współpracy.
  • Pisz programy do obsługi strumieni tekstowych, ponieważ jest to uniwersalny interfejs.


W swoim nagradzanym[3] referacie uniksowym z 1974 r., Ritchie i Thompson przytaczają następujące rozważania dotyczące projektowania:

  • Ułatw pisanie, testowanie i uruchamianie programów.
  • Interaktywne użycie zamiast przetwarzania wsadowego.
  • Oszczędność i elegancja wzornictwa ze względu na ograniczenia wielkości („zbawienie przez cierpienie”).
  • System samonośny: całe oprogramowanie Unix jest utrzymywane w systemie Unix.


Porównaj

  • [1] - Home of dwm, dmenu and other quality software with a focus on simplicity, clarity, and frugality, software that sucks less

Co powinniśmy wiedzieć edytuj

Standardy edytuj

  • POSIX
  • Single UNIX Specification


Posix edytuj

POSIX (ang. Portable Operating System Interface for UNIX) – przenośny interfejs dla systemu operacyjnego Unix.

POSIX to odpowiedź na próby standaryzacji różnych odmian systemu operacyjnego Unix. Prace nad tym standardem rozpoczęto ok. roku 1985, a kierowało nimi stowarzyszenie IEEE, dlatego POSIX znany jest również pod nazwą IEEE 1003. Nad dalszym rozwojem standardu sprawuje pieczę The Open Group we współpracy z IEEE i firmami komputerowymi takimi jak: IBM, Sun Microsystems, Hewlett-Packard, NEC Corporation, Fujitsu, Hitachi. Kolejne edycje standardu wydawane przez The Open Group noszą nazwy Single UNIX Specification, Version x, gdzie x to kolejny numer wersji. Aktualna wersja jest trzecią a pojawiła się w roku 2001. Od roku 2003 jest to norma międzynarodowa ISO/IEC 9945:2003.

Nazwę „POSIX” zaproponował Richard Stallman[2].

POSIX standaryzuje:

  • interfejs programistyczny (API);
  • interfejs użytkownika, np. polecenia systemowe takie jak awk, echo, ed;
  • właściwości powłoki systemowej.

Single UNIX Specification edytuj

Single UNIX Specification – dokument publikowany przez The Open Group, definiujący jak powinien zachowywać się system klasy UNIX.

Obecna wersja ma numer 3. Zawartość jest oparta w dużej mierze na specyfikacji POSIX, ale Single UNIX Specification stało się około roku 2001 bardziej popularne wśród twórców systemów operacyjnych. Stało się tak głównie dlatego, że The Open Group udostępnia swój dokument znacznie taniej.


Tryby edytuj

Możliwa jest praca w trybie:[3]

Języki programowania edytuj

Dostępnych jest wiele języków programowania. Dzielimy je wg przeznaczenia na:

"The biggest difference is that Imperative programming is about Control flow while Functional programming is about Data flow. Another way to say it is that functional programming only uses expressions while in imperative programming both expressions and statements are used." [4]

Środowiska programistyczne edytuj

Do programowania wykorzystujemy:

Program graficzny GIMP oferuje wiele możliwości programistom

Wyszukiwarki edytuj

Narzędzia edytuj

Przypisy edytuj

  1. Unix_philosophy
  2. The origin of the name POSIX.
  3. The Art of Unix Programming by Eric Steven Raymond
  4. softwareengineering.stackexchange question : functional-programming-vs-oop
  5. Linux Shortcuts and Commands
  6. wandbox
  7. codepad
  8. Ideone is an online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages
  9. c++ shell
  10. Code-Reading Tools by Diomidis Spinellis

Źródła edytuj