  Jzyki programowania (mae JTZ)
  Autor: Risto S. Varanka
  v?, 22 lipca 2000
  WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk
  v1.0, 10 grudnia 2001


  Krtkie porwnanie najwaniejszych jzykw programowania oraz bib
  liotek sucych do tworzenia graficznego interfejsu uytkownika (GUI)
  pod Linuksem.
  ______________________________________________________________________

  Spis treci


  1. Formalnoci

     1.1 Najnowsza wersja tego dokumentu
     1.2 Prawa autorskie
     1.3 Licencja
        1.3.1 Warunki modyfikacji tekstu
     1.4 Zastrzeenie
     1.5 Informacje o autorze
     1.6 Podzikowania

  2. Wstp

     2.1 Tematyka dokumentu
     2.2 Odnoniki

  3. Jzyki programowania

     3.1 Pojcia uyte w tabeli
     3.2 Najwaniejsze jzyki
     3.3 Programowanie w powoce (szelu)
     3.4 Inne jzyki
     3.5 Odnoniki

  4. Narzdzia do tworzenia GUI

     4.1 Pojcia uyte w tabeli
     4.2 Najwaniejsze biblioteki do tworzenia GUI
     4.3 Odnoniki

  5. Od tumacza



  ______________________________________________________________________

  11..  FFoorrmmaallnnooccii

  11..11..  NNaajjnnoowwsszzaa wweerrssjjaa tteeggoo ddookkuummeennttuu

  Najnowsza wersja tego dokumentu dostpna jest pod adresem
  <http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/>.


  11..22..  PPrraawwaa aauuttoorrsskkiiee

  Copyright (c) 2000 Risto Varanka.

  11..33..  LLiicceennccjjaa

  Omwione tu warunki uywania dotycz wszystkich dokumentw LDP, o ile
  w danym dokumencie nie stwierdzono inaczej. Dokumenty LDP mona
  kopiowa i rozpowszechnia w caoci lub w czci za pomoc dowolnego
  fizycznego lub elektronicznego medium pod warunkiem, e niniejsza
  licencja nie jest usunita.  Rozpowszechnianie komercyjne jest
  dozwolone. W przypadku rozpowszechniania prosz miesic wczeniej
  skontaktowa si poczt elektroniczn z autorami w celu uzyskania
  najnowszej wersji tekstu.


  11..33..11..  WWaarruunnkkii mmooddyyffiikkaaccjjii tteekkssttuu

  Wszelkie zmodyfikowane wersje dokumentw, w tym tumaczenia, antologie
  oraz dokumenty rozpowszechniane w czci musz spenia nastpujce
  warunki:


  1. Wersja musi by oznaczona jako zmodyfikowana

  2. Osoba wprowadzajca modyfikacje nie moe by anonimowa

  3. Naley pozostawi nazwisko pierwotnego autora

  4. Naley poda informacj o lokalizacji oryginalnej wersji tekstu

  5. Bez zgody pierwotnego autora/autorw nie wolno ich/jego
     nazwiskiem/nazwiskami potwierdza ani sugerowa wanoci
     zmodyfikowanego dokumentu.


  Dodatkowe wymagania:


  1. Zmiany (w tym cicia) musz by zaznaczone

  2. Przed rozpoczciem dystrybucji naley autora o tym powiadomi
     poczt elektroniczn (jeli w dokumencie podany zosta adres)


  Antologie dokumentw LPD mog wyjtkowo zawiera w widocznym miejscu
  pojedyncz kopi tej licencji. W takich przypadkach tre licencji
  zawartej w dokumentach mona zastpi informacj o jej lokalizacji w
  antologii; wwczas zmiany w niniejszej sekcji nie nadaj dokumentowi
  statusu tekstu zmodyfikowanego.

  Umieszczenie dokumentw LPD na wsplnym noniku z innymi dokumentami
  bd programami nie powoduje objcia owych innych prac niniejsz
  licencj.

  Wszelkie tumaczenia, modyfikacje i teksty wywodzce si z dokumentw
  LDP nie mog mie bardziej restrykcyjnej licencji ni niniejsza.
  Wyjtkiem jest moliwo wymagania od dystrybutorw udostpniania
  wersji rdowych dokumentw.


  11..44..  ZZaassttrrzzeeeenniiee

  DOKUMENT NINIEJSZY OPISUJE SZEROK I STALE ZMIENIAJC SI DZIEDZIN
  WIEDZY.  DLATEGO INFORMACJE ZAWARTE W TYM TEKCIE MOG BY BDNE LUB
  NIEAKTUALNE.  JAKIEKOLWIEK UYCIE TEGO DOKUMENTU I ZAWARTYCH W NIM
  INFORMACJI MOE ODBYWA SI WYCZNIE NA WASNE RYZYKO UYTKOWNIKA.
  AUTOR NIE DAJE ANI NIE SUGERUJE ADNYCH GWARANCJI.


  11..55..  IInnffoorrmmaaccjjee oo aauuttoorrzzee

  Adres poczty elektronicznej:  <mailto:risto.varanka@helsinki.fi>
  Strona domowa:  <http://www.helsinki.fi/~rvaranka/>.
  11..66..  PPooddzziikkoowwaanniiaa

  Chciabym podzikowa osobom, ktre wypowiedziay si na temat jzykw
  programowania. Rozmowy te day mi lepsz orientacj w temacie, mam te
  nadziej, e reakcje czytelnikw w przyszoci przyczyni si do
  rozwoju niniejszego dokumentu. Podzikowania swoje kieruj szczeglnie
  do uytkownikw kanau #linux: Morphiego, Bluesmurfa, Vadima, Zonk^a,
  Rikkusa i wielu innych, ktrych nicki zapomniaem. Dzikuj te
  Stigowi Erikowi Sandoe za pomocne uwagi.


  22..  WWssttpp

  22..11..  TTeemmaattyykkaa ddookkuummeennttuu

  Linux jest fascynujcym systemem, poniewa kady moe uczestniczy w
  jego rozwijaniu. Czasem jednak rnorodno dostpnych jzykw
  programowania moe powodowa zagubienie pocztkujcego programisty.
  Niniejszy dokument opisuje najbardziej typowe z tych jzykw. Nie jest
  moim celem pisanie recenzji ani ukadanie ich rankingu. Kady jzyk na
  swoje zastosowania i zwolennikw. Jeli interesujesz si tematem,
  atwo moesz natrafi na sprzeczne informacje.  Znajdujce si w tym
  dokumencie odnoniki skieruj ci do rde, dziki ktrym bdziesz
  mg wyrobi sobie wasn opini.

  Jzykw programowania i bibliotek do tworzenia GUI pod Linuksem jest
  zatrzsienie. Dokument ten ogranicza si tylko do aktualnie
  najpopularniejszych z nich. Staraem si by neutralny, ale nie byem
  w stanie wspomnie tu o wszystkich dostpnych jzykach. Poniewa moje
  opinie z pewnoci s w taki czy inny sposb stronnicze, osobom
  powanie podchodzcym do tematu proponuj zajrzenie na strony bardziej
  kompletnie go wyczerpujce. Pamitaj te, e w niniejszym tekcie
  omwione s tylko linuksowe wersje danych jzykw i narzdzi; nie
  wspominam o ich moliwociach dostpnych w wersjach na inne platformy.

  Dokument niniejszy dopiero niedawno trafi do zasobw Linux
  Documentation Project, czytelnicy nie mieli wic pki co wiele czasu
  na wyraenie swoich opinii. Mam jednak nadziej, e tekst ten przyda
  si osobom (szczeglnie pocztkujcym) interesujcym si
  programowaniem pod Linuksem.

  Znak zapytania w tabelach oznacza brak informacji. Skontaktuj si z
  autorem, jeli je posiadasz.

  22..22..  OOddnnoonniikkii

  Wyczerpujce listy jzykw i narzdzi programistycznych dla Linuksa:

    Freshmeat <http://www.freshmeat.net/appindex/development/>

    Linux Development Tools <http://www.hotfeet.ch/~gemi/LDT/>

    linuxprogramming.com <http://www.linuxprogramming.com/>


  Interesujcym, szczeglnie dla pocztkujcych programistw, tekstem
  jest Hacker FAQ <http://www.tuxedo.org/~esr/faqs/hacker-howto.html>
  napisane przez Erica S. Raymonda. Dokument ten traktuje o kulturowych
  i psychologicznych aspektach pracy nad rozwojem oprogramowania
  wolnodostpnego.

  Innymi zajmujcymi si tematem programowania dokumentami LDP
  <http://www.linuxdoc.org/> s "Reading List HOWTO" oraz "Linux
  Programmer's Guide". Oprcz nich dostpny jest szereg tekstw
  powiconych bardziej szczegowym zagadnieniom.

  33..  JJzzyykkii pprrooggrraammoowwaanniiaa

  Tradycyjnie w GNU/Linuksie uywanymi jzykami s C, Lisp i Perl.
  Ostatnio do grupy tej doczyy Python, PHP, Java i C++.

  33..11..  PPoojjcciiaa uuyyttee ww ttaabbeellii


     JJzzyykk
        Powszechnie uywana nazwa jzyka.


     PPoocczzttkkuujjccyy
        Czy jzyk jest dobrym wyborem dla pocztkujcego programisty?


     SSzzyybbkkoo
        Jak szybko aplikacje bd w praktyce dziaa. W zasadzie zaley
        to bardziej od jakoci uoonego przez programist algorytmu,
        ni od samego jzyka.  Generalnie przyjmuje si, e jzyki C,
        C++ i Fortran oferuj wiksz szybko ni ich alternatywy.
        Wszystko zaley jednak od celu, jaki chcemy osign: czasem
        jzyki te mog okaza si bardziej nieporczne od innych.  (Mam
        pomys na mao naukowe porwnanie jzykw: naley napisa w
        kadym z nich prosty algorytm sortujcy i porwna czas jego
        wykonania. To oczywicie nie zmierzy szybkoci samych jzykw --
        taki pomys byby bez sensu -- a jedynie ich implementacji. Nie
        jest to rwnie szczeglnie niezawodna ani dokadna metoda,
        pozwala jednak porwna szybko wykonania zadania. Kto chce
        sprbowa?)


     OOOOPP,, pprrooggrraammoowwaanniiee oobbiieekkttoowwee kkoonnttrraa iinnnnee mmeettooddyy
        Programowanie obiektowe jest wan i coraz bardziej popularn
        metod tworzenia aplikacji. W tym modelu struktury danych i
        algorytmy poczone s w jednostki zwane klasami. OOP
        przeciwstawia si czsto programowaniu proceduralnemu (w ktrym
        uywa si oddzielnych algorytmw i struktur danych).  Nie jest
        to wycznie kwestia jzyka; mona programowa obiektowo w
        jzykach nie opisanych jako obiektowe, i odwrotnie:
        proceduralnie w jzykach obiektowych. Jako jzyki obiektowe
        wymieniem te, ktre takie programowanie uatwiaj rnymi
        dodatkami. Jzyki funkcjonalne (np. Lisp) to jeszcze inna
        sprawa, bowiem programowanie funkcjonalne jest nadzbiorem
        obiektowego.  Z drugiej strony programowania logicznego (np.
        Prolog), zwanego take programowaniem deklaratywnym, nie mona w
        podobny sposb odnie do innych modeli programowania.


     RRAADD ((bbyysskkaawwiicczznnee pprrooggrraammoowwaanniiee aapplliikkaaccjjii))
        Zaley bardziej od uywanych narzdzi ni jzyka. Istnieje
        dokument HOWTO omawiajcy narzdzia uatwiajce tworzenie GUI
        pod Linuksem, jest jednak przestarzay. Dobre narzdzie znacznie
        przyspiesza prace nad graficznym interfejsem uytkownika,
        umoliwia take prace nad istniejcym ju kodem; wolnodostpne
        oprogramowanie jest tu wic doskonaym punktem wyjcia.


     ZZaassttoossoowwaanniiaa
        Domeny programowania, w ktrych dany jzyk jest najczciej
        uywany.  Istniej take inne, mniej lub bardziej sensowne
        zastosowania jzyka, s jednak mniej typowe.


     UUwwaaggii
        Dodatkowe informacje o jzyku, np. jego moliwoci lub odmiany.
  33..22..  NNaajjwwaanniieejjsszzee jjzzyykkii


  Perl
  Pocztkujcy: tak - OOP: tak
  Zastosowania: Skrypty, administracja systemem, WWW
  Uwagi: Doskonay do przetwarzania tekstw

  Python
  Pocztkujcy: tak - OOP: tak
  Zastosowania: Skrypty, skrypty do aplikacji, WWW
  Uwagi:

  TCL
  Pocztkujcy: tak - OOP: nie
  Zastosowania: Skrypty, administracja systemem, aplikacje
  Uwagi:

  PHP
  Pocztkujcy: tak - OOP: tak
  Zastosowania: WWW
  Uwagi: Uywany przy tworzeniu sieciowych baz danych

  Java
  Pocztkujcy: tak - OOP: tak
  Zastosowania: Programy dziaajce na wielu platformach systemowych, WWW
  Uwagi: Zakres zastosowa rozszerza si (np. handel elektroniczny)

  Lisp
  Pocztkujcy: tak - OOP: funkcjonalny
  Zastosowania: Tryby Emacsa (Elisp), AI (Sztuczna inteligencja)
  Uwagi: Odmiany: Elisp, Clisp i Scheme

  Fortran
  Pocztkujcy: nie  - OOP: nie
  Zastosowania: Aplikacje matematyczne (naukowe)
  Uwagi: Odmiany: f77 i f90/95

  C
  Pocztkujcy: nie  - OOP: nie
  Zastosowania: Oprogramowanie systemowe, aplikacje
  Uwagi:

  C++
  Pocztkujcy: nie  - OOP: tak
  Zastosowania: aplikacje
  Uwagi:



  33..33..  PPrrooggrraammoowwaanniiee ww ppoowwooccee ((sszzeelluu))

  Powoki s rwnie wanym rodowiskiem programistycznym. Nie omawiam
  ich, poniewa nie zrozumiaem jeszcze dokadnie caoci tematu.
  Znajomo powok jest istotna dla wszystkich uywajcych regularnie
  Linuksa, szczeglnie administratorw. Istnieje wiele podobiestw
  midzy programowaniem w szelu i pisaniem skryptw w innych jzykach --
  czsto osign mona identyczne rezultaty, wybr jest wic wolny. Do
  najpopularniejszych powok nale bash, tcsh, csh, ksh i zsh.
  Podstawowe informacje o nich znajduj si w podrczniku systemowym
  (uyj polecenia man, np. man bash).

  33..44..  IInnnnee jjzzyykkii

  Inne warte zauwaenia jzyki to: AWK, SED, Smalltalk, Eiffel, Ada,
  Prolog, asembler, Objective C, Logo, Pascal (konwerter p2c).
  33..55..  OOddnnoonniikkii


    Strona z du iloci informacji i opinii o rnych jzykach
     programowania <http://www.tunes.org/Review/Languages.html>

    TCL <http://dev.scriptics.com/>

    Perl <http://www.perl.org/>

    Python <http://www.python.org/>

    PHP <http://www.php.net>

    Java <http://www.javasoft.com/>

    clisp <http://clisp.cons.org/~haible/packages-clisp.html>


  44..  NNaarrzzddzziiaa ddoo ttwwoorrzzeenniiaa GGUUII

  Standardowym rodowiskiem graficznym w systemach Unix i Linux jest
  posiadajcy swoje wasne biblioteki GUI _X _W_i_n_d_o_w _S_y_s_t_e_m.  Biblioteki
  te umoliwiaj niskopoziomowe tworzenie graficznych aplikacji dla X,
  bywaj jednak trudne w uyciu. Wykorzystuje je gwnie starsze
  oprogramowanie, dzi graficzne aplikacje tworzy si raczej w oparciu o
  biblioteki GTK+ i Ot -- to na nich oparte s dwa najpopularniejsze
  due rodowiska graficzne dla Linuksa: GNOME i KDE.

  44..11..  PPoojjcciiaa uuyyttee ww ttaabbeellii


     BBiibblliiootteekkaa
        Powszechnie uywana nazwa biblioteki


     PPoocczzttkkuujjccyy
        Czy biblioteka nadaje si dla pocztkujcego programisty?


     LLiicceennccjjaa
        Poszczeglne narzdzia opatrzone s rnymi licencjami. Licencje
        GTK+, TK i GNUstep pozwalaj na bezpatne tworzenie zarwno
        wolnodostpnego, jak i zamknitego oprogramowania. Licencja
        Motifa jest patna, a licencja Qt jest patna tylko w przypadku
        tworzenia oprogramowania zamknitego.


     JJzzyykk
        Jzyk najczciej uywany z dan bibliotek.


     IInnnnee jjzzyykkii
        Inne jzyki, ktrych rwnie mona uywa z dan bibliotek.


     ZZaassttoossoowwaanniiaa
        Programy korzystajce z biblioteki.


     UUwwaaggii
        Dodatkowe informacje.




  44..22..  NNaajjwwaanniieejjsszzee bbiibblliiootteekkii ddoo ttwwoorrzzeenniiaa GGUUII


  Biblioteka:     TK
  Pocztkujcy:   tak
  Licencja:       darmowa
  Jzyk:          TCL
  Inne jz:       Perl, Python, inne
  Zastosowania:   make xconfig, TKDesk
  Uwagi:

  Biblioteka:     GTK+
  Pocztkujcy:   nie
  Licencja:       darmowa (LGPL)
  Jzyk:          C
  Inne jz:       Perl, C++, Python, wiele innych
  Zastosowania:   GNOME, Gimp
  Uwagi:          Bardzo popularna

  Biblioteka:     QT
  Pocztkujcy:   nie
  Licencja:       darmowa przy rozwijaniu oprogramowania wolnodostpnego
  Jzyk:          C++
  Inne jz:       Python, Perl, C, inne?
  Zastosowania:   KDE
  Uwagi:          Bardzo popularna

  Biblioteka:     Motif
  Pocztkujcy:   nie
  Licencja:       patna
  Jzyk:          C/C++
  Inne jz:       Python, inne?
  Zastosowania:   Netscape, Wordperfect
  Uwagi:          Darmowy odpowiednik: Lestiff (http://www.lesstif.org/)

  Biblioteka:     GNUstep
  Pocztkujcy:   nie
  Licencja:       darmowa (LGPL)
  Jzyk:          Objective C
  Inne jz:       Guile, Java?
  Zastosowania:   adna z popularnych aplikacji
                  Lista aplikacji: http://www.gnustep.org/resources/apps.html
  Uwagi:          Wci w trakcie rozwoju



  44..33..  OOddnnoonniikkii


    TK <http://dev.scriptics.com/>

    GTK+ <http://www.gtk.org/>

    QT <http://www.troll.no/>

    Motif <http://www.metrolink.com/>

    GNUstep <http://www.gnustep.org/>


  55..  OOdd ttuummaacczzaa

  Zmiany w stosunku do oryginau: Podzia pierwszego rozdziau na dwie
  tematyczne sekcje ("Formalnoci" i "Wstp") oraz przeformatowanie
  spisu najwaniejszych bibliotek.

  Wersja oryginalna dokumentu:  <http://sunsite.unc.edu/LDP/>.
  Tumaczenia pozostaych dokumentw HOWTO na jzyk polski:
  <http://www.jtz.org.pl/>.

  Copyright for the translation:
  (c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk




























































