Języki programowania (małe JTZ)
Autor: Risto S. Varanka
v?, 22 lipca 2000
WWeerrssjjaa ppoollsskkaa:: TToommaasszz ''ttssccaa'' SSiieenniicckkii,, ttssccaa@@eeddbb..ddkk
v1.0, 10 grudnia 2001
Krótkie porównanie najważniejszych języków programowania oraz bib
liotek służących do tworzenia graficznego interfejsu użytkownika (GUI)
pod Linuksem.
______________________________________________________________________
Spis treści
1. Formalności
1.1 Najnowsza wersja tego dokumentu
1.2 Prawa autorskie
1.3 Licencja
1.3.1 Warunki modyfikacji tekstu
1.4 Zastrzeżenie
1.5 Informacje o autorze
1.6 Podziękowania
2. Wstęp
2.1 Tematyka dokumentu
2.2 Odnośniki
3. Języki programowania
3.1 Pojęcia użyte w tabeli
3.2 Najważniejsze języki
3.3 Programowanie w powłoce (szelu)
3.4 Inne języki
3.5 Odnośniki
4. Narzędzia do tworzenia GUI
4.1 Pojęcia użyte w tabeli
4.2 Najważniejsze biblioteki do tworzenia GUI
4.3 Odnośniki
5. Od tłumacza
______________________________________________________________________
11.. FFoorrmmaallnnoośśccii
11..11.. NNaajjnnoowwsszzaa wweerrssjjaa tteeggoo ddookkuummeennttuu
Najnowsza wersja tego dokumentu dostępna jest pod adresem
.
11..22.. PPrraawwaa aauuttoorrsskkiiee
Copyright (c) 2000 Risto Varanka.
11..33.. LLiicceennccjjaa
Omówione tu warunki używania dotyczą wszystkich dokumentów LDP, o ile
w danym dokumencie nie stwierdzono inaczej. Dokumenty LDP można
kopiować i rozpowszechniać w całości lub w części za pomocą dowolnego
fizycznego lub elektronicznego medium pod warunkiem, że niniejsza
licencja nie jest usunięta. Rozpowszechnianie komercyjne jest
dozwolone. W przypadku rozpowszechniania proszę miesiąc wcześniej
skontaktować się pocztą elektroniczną z autorami w celu uzyskania
najnowszej wersji tekstu.
11..33..11.. WWaarruunnkkii mmooddyyffiikkaaccjjii tteekkssttuu
Wszelkie zmodyfikowane wersje dokumentów, w tym tłumaczenia, antologie
oraz dokumenty rozpowszechniane w części muszą spełniać następujące
warunki:
1. Wersja musi być oznaczona jako zmodyfikowana
2. Osoba wprowadzająca modyfikacje nie może być anonimowa
3. Należy pozostawić nazwisko pierwotnego autora
4. Należy podać informację o lokalizacji oryginalnej wersji tekstu
5. Bez zgody pierwotnego autora/autorów nie wolno ich/jego
nazwiskiem/nazwiskami potwierdzać ani sugerować ważności
zmodyfikowanego dokumentu.
Dodatkowe wymagania:
1. Zmiany (w tym cięcia) muszą być zaznaczone
2. Przed rozpoczęciem dystrybucji należy autora o tym powiadomić
pocztą elektroniczną (jeśli w dokumencie podany został adres)
Antologie dokumentów LPD mogą wyjątkowo zawierać w widocznym miejscu
pojedynczą kopię tej licencji. W takich przypadkach treść licencji
zawartej w dokumentach można zastąpić informacją o jej lokalizacji w
antologii; wówczas zmiany w niniejszej sekcji nie nadają dokumentowi
statusu tekstu zmodyfikowanego.
Umieszczenie dokumentów LPD na wspólnym nośniku z innymi dokumentami
bądź programami nie powoduje objęcia owych innych prac niniejszą
licencją.
Wszelkie tłumaczenia, modyfikacje i teksty wywodzące się z dokumentów
LDP nie mogą mieć bardziej restrykcyjnej licencji niż niniejsza.
Wyjątkiem jest możliwość wymagania od dystrybutorów udostępniania
wersji źródłowych dokumentów.
11..44.. ZZaassttrrzzeeżżeenniiee
DOKUMENT NINIEJSZY OPISUJE SZEROKĄ I STALE ZMIENIAJĄCĄ SIĘ DZIEDZINĘ
WIEDZY. DLATEGO INFORMACJE ZAWARTE W TYM TEKŚCIE MOGĄ BYĆ BŁĘDNE LUB
NIEAKTUALNE. JAKIEKOLWIEK UŻYCIE TEGO DOKUMENTU I ZAWARTYCH W NIM
INFORMACJI MOŻE ODBYWAĆ SIĘ WYŁĄCZNIE NA WŁASNE RYZYKO UŻYTKOWNIKA.
AUTOR NIE DAJE ANI NIE SUGERUJE ŻADNYCH GWARANCJI.
11..55.. IInnffoorrmmaaccjjee oo aauuttoorrzzee
Adres poczty elektronicznej:
Strona domowa: .
11..66.. PPooddzziięękkoowwaanniiaa
Chciałbym podziękować osobom, które wypowiedziały się na temat języków
programowania. Rozmowy te dały mi lepszą orientację w temacie, mam też
nadzieję, że reakcje czytelników w przyszłości przyczynią się do
rozwoju niniejszego dokumentu. Podziękowania swoje kieruję szczególnie
do użytkowników kanału #linux: Morphiego, Bluesmurfa, Vadima, Zonk^a,
Rikkusa i wielu innych, których nicki zapomniałem. Dziękuję też
Stigowi Erikowi Sandoe za pomocne uwagi.
22.. WWssttęępp
22..11.. TTeemmaattyykkaa ddookkuummeennttuu
Linux jest fascynującym systemem, ponieważ każdy może uczestniczyć w
jego rozwijaniu. Czasem jednak różnorodność dostępnych języków
programowania może powodować zagubienie początkującego programisty.
Niniejszy dokument opisuje najbardziej typowe z tych języków. Nie jest
moim celem pisanie recenzji ani układanie ich rankingu. Każdy język na
swoje zastosowania i zwolenników. Jeśli interesujesz się tematem,
łatwo możesz natrafić na sprzeczne informacje. Znajdujące się w tym
dokumencie odnośniki skierują cię do źródeł, dzięki którym będziesz
mógł wyrobić sobie własną opinię.
Języków programowania i bibliotek do tworzenia GUI pod Linuksem jest
zatrzęsienie. Dokument ten ogranicza się tylko do aktualnie
najpopularniejszych z nich. Starałem się być neutralny, ale nie byłem
w stanie wspomnieć tu o wszystkich dostępnych językach. Ponieważ moje
opinie z pewnością są w taki czy inny sposób stronnicze, osobom
poważnie podchodzącym do tematu proponuję zajrzenie na strony bardziej
kompletnie go wyczerpujące. Pamiętaj też, że w niniejszym tekście
omówione są tylko linuksowe wersje danych języków i narzędzi; nie
wspominam o ich możliwościach dostępnych w wersjach na inne platformy.
Dokument niniejszy dopiero niedawno trafił do zasobów Linux
Documentation Project, czytelnicy nie mieli więc póki co wiele czasu
na wyrażenie swoich opinii. Mam jednak nadzieję, że tekst ten przyda
się osobom (szczególnie początkującym) interesującym się
programowaniem pod Linuksem.
Znak zapytania w tabelach oznacza brak informacji. Skontaktuj się z
autorem, jeśli je posiadasz.
22..22.. OOddnnoośśnniikkii
Wyczerpujące listy języków i narzędzi programistycznych dla Linuksa:
Freshmeat
Linux Development Tools
linuxprogramming.com
Interesującym, szczególnie dla początkujących programistów, tekstem
jest Hacker FAQ
napisane przez Erica S. Raymonda. Dokument ten traktuje o kulturowych
i psychologicznych aspektach pracy nad rozwojem oprogramowania
wolnodostępnego.
Innymi zajmującymi się tematem programowania dokumentami LDP
są "Reading List HOWTO" oraz "Linux
Programmer's Guide". Oprócz nich dostępny jest szereg tekstów
poświęconych bardziej szczegółowym zagadnieniom.
33.. JJęęzzyykkii pprrooggrraammoowwaanniiaa
Tradycyjnie w GNU/Linuksie używanymi językami są C, Lisp i Perl.
Ostatnio do grupy tej dołączyły Python, PHP, Java i C++.
33..11.. PPoojjęęcciiaa uużżyyttee ww ttaabbeellii
JJęęzzyykk
Powszechnie używana nazwa języka.
PPoocczząąttkkuujjąąccyy
Czy język jest dobrym wyborem dla początkującego programisty?
SSzzyybbkkoośśćć
Jak szybko aplikacje będą w praktyce działać. W zasadzie zależy
to bardziej od jakości ułożonego przez programistę algorytmu,
niż od samego języka. Generalnie przyjmuje się, że języki C,
C++ i Fortran oferują większą szybkość niż ich alternatywy.
Wszystko zależy jednak od celu, jaki chcemy osiągnąć: czasem
języki te mogą okazać się bardziej nieporęczne od innych. (Mam
pomysł na mało naukowe porównanie języków: należy napisać w
każdym z nich prosty algorytm sortujący i porównać czas jego
wykonania. To oczywiście nie zmierzy szybkości samych języków --
taki pomysł byłby bez sensu -- a jedynie ich implementacji. Nie
jest to również szczególnie niezawodna ani dokładna metoda,
pozwala jednak porównać szybkość wykonania zadania. Ktoś chce
spróbować?)
OOOOPP,, pprrooggrraammoowwaanniiee oobbiieekkttoowwee kkoonnttrraa iinnnnee mmeettooddyy
Programowanie obiektowe jest ważną i coraz bardziej popularną
metodą tworzenia aplikacji. W tym modelu struktury danych i
algorytmy połączone są w jednostki zwane klasami. OOP
przeciwstawia się często programowaniu proceduralnemu (w którym
używa się oddzielnych algorytmów i struktur danych). Nie jest
to wyłącznie kwestia języka; można programować obiektowo w
językach nie opisanych jako obiektowe, i odwrotnie:
proceduralnie w językach obiektowych. Jako języki obiektowe
wymieniłem te, które takie programowanie ułatwiają różnymi
dodatkami. Języki funkcjonalne (np. Lisp) to jeszcze inna
sprawa, bowiem programowanie funkcjonalne jest nadzbiorem
obiektowego. Z drugiej strony programowania logicznego (np.
Prolog), zwanego także programowaniem deklaratywnym, nie można w
podobny sposób odnieść do innych modeli programowania.
RRAADD ((bbłłyysskkaawwiicczznnee pprrooggrraammoowwaanniiee aapplliikkaaccjjii))
Zależy bardziej od używanych narzędzi niż języka. Istnieje
dokument HOWTO omawiający narzędzia ułatwiające tworzenie GUI
pod Linuksem, jest jednak przestarzały. Dobre narzędzie znacznie
przyspiesza prace nad graficznym interfejsem użytkownika,
umożliwia także prace nad istniejącym już kodem; wolnodostępne
oprogramowanie jest tu więc doskonałym punktem wyjścia.
ZZaassttoossoowwaanniiaa
Domeny programowania, w których dany język jest najczęściej
używany. Istnieją także inne, mniej lub bardziej sensowne
zastosowania języka, są jednak mniej typowe.
UUwwaaggii
Dodatkowe informacje o języku, np. jego możliwości lub odmiany.
33..22.. NNaajjwwaażżnniieejjsszzee jjęęzzyykkii
Perl
Początkujący: tak - OOP: tak
Zastosowania: Skrypty, administracja systemem, WWW
Uwagi: Doskonały do przetwarzania tekstów
Python
Początkujący: tak - OOP: tak
Zastosowania: Skrypty, skrypty do aplikacji, WWW
Uwagi:
TCL
Początkujący: tak - OOP: nie
Zastosowania: Skrypty, administracja systemem, aplikacje
Uwagi:
PHP
Początkujący: tak - OOP: tak
Zastosowania: WWW
Uwagi: Używany przy tworzeniu sieciowych baz danych
Java
Początkujący: tak - OOP: tak
Zastosowania: Programy działające na wielu platformach systemowych, WWW
Uwagi: Zakres zastosowań rozszerza się (np. handel elektroniczny)
Lisp
Początkujący: tak - OOP: funkcjonalny
Zastosowania: Tryby Emacsa (Elisp), AI (Sztuczna inteligencja)
Uwagi: Odmiany: Elisp, Clisp i Scheme
Fortran
Początkujący: nie - OOP: nie
Zastosowania: Aplikacje matematyczne (naukowe)
Uwagi: Odmiany: f77 i f90/95
C
Początkujący: nie - OOP: nie
Zastosowania: Oprogramowanie systemowe, aplikacje
Uwagi:
C++
Początkujący: nie - OOP: tak
Zastosowania: aplikacje
Uwagi:
33..33.. PPrrooggrraammoowwaanniiee ww ppoowwłłooccee ((sszzeelluu))
Powłoki są również ważnym środowiskiem programistycznym. Nie omawiam
ich, ponieważ nie zrozumiałem jeszcze dokładnie całości tematu.
Znajomość powłok jest istotna dla wszystkich używających regularnie
Linuksa, szczególnie administratorów. Istnieje wiele podobieństw
między programowaniem w szelu i pisaniem skryptów w innych językach --
często osiągnąć można identyczne rezultaty, wybór jest więc wolny. Do
najpopularniejszych powłok należą bash, tcsh, csh, ksh i zsh.
Podstawowe informacje o nich znajdują się w podręczniku systemowym
(użyj polecenia man, np. man bash).
33..44.. IInnnnee jjęęzzyykkii
Inne warte zauważenia języki to: AWK, SED, Smalltalk, Eiffel, Ada,
Prolog, asembler, Objective C, Logo, Pascal (konwerter p2c).
33..55.. OOddnnoośśnniikkii
Strona z dużą ilością informacji i opinii o różnych językach
programowania
TCL
Perl
Python
PHP
Java
clisp
44.. NNaarrzzęęddzziiaa ddoo ttwwoorrzzeenniiaa GGUUII
Standardowym środowiskiem graficznym w systemach Unix i Linux jest
posiadający swoje własne biblioteki GUI _X _W_i_n_d_o_w _S_y_s_t_e_m. Biblioteki
te umożliwiają niskopoziomowe tworzenie graficznych aplikacji dla X,
bywają jednak trudne w użyciu. Wykorzystuje je głównie starsze
oprogramowanie, dziś graficzne aplikacje tworzy się raczej w oparciu o
biblioteki GTK+ i Ot -- to na nich oparte są dwa najpopularniejsze
duże środowiska graficzne dla Linuksa: GNOME i KDE.
44..11.. PPoojjęęcciiaa uużżyyttee ww ttaabbeellii
BBiibblliiootteekkaa
Powszechnie używana nazwa biblioteki
PPoocczząąttkkuujjąąccyy
Czy biblioteka nadaje się dla początkującego programisty?
LLiicceennccjjaa
Poszczególne narzędzia opatrzone są różnymi licencjami. Licencje
GTK+, TK i GNUstep pozwalają na bezpłatne tworzenie zarówno
wolnodostępnego, jak i zamkniętego oprogramowania. Licencja
Motifa jest płatna, a licencja Qt jest płatna tylko w przypadku
tworzenia oprogramowania zamkniętego.
JJęęzzyykk
Język najczęściej używany z daną biblioteką.
IInnnnee jjęęzzyykkii
Inne języki, których również można używać z daną biblioteką.
ZZaassttoossoowwaanniiaa
Programy korzystające z biblioteki.
UUwwaaggii
Dodatkowe informacje.
44..22.. NNaajjwwaażżnniieejjsszzee bbiibblliiootteekkii ddoo ttwwoorrzzeenniiaa GGUUII
Biblioteka: TK
Początkujący: tak
Licencja: darmowa
Język: TCL
Inne jęz: Perl, Python, inne
Zastosowania: make xconfig, TKDesk
Uwagi:
Biblioteka: GTK+
Początkujący: nie
Licencja: darmowa (LGPL)
Język: C
Inne jęz: Perl, C++, Python, wiele innych
Zastosowania: GNOME, Gimp
Uwagi: Bardzo popularna
Biblioteka: QT
Początkujący: nie
Licencja: darmowa przy rozwijaniu oprogramowania wolnodostępnego
Język: C++
Inne jęz: Python, Perl, C, inne?
Zastosowania: KDE
Uwagi: Bardzo popularna
Biblioteka: Motif
Początkujący: nie
Licencja: płatna
Język: C/C++
Inne jęz: Python, inne?
Zastosowania: Netscape, Wordperfect
Uwagi: Darmowy odpowiednik: Lestiff (http://www.lesstif.org/)
Biblioteka: GNUstep
Początkujący: nie
Licencja: darmowa (LGPL)
Język: Objective C
Inne jęz: Guile, Java?
Zastosowania: Żadna z popularnych aplikacji
Lista aplikacji: http://www.gnustep.org/resources/apps.html
Uwagi: Wciąż w trakcie rozwoju
44..33.. OOddnnoośśnniikkii
TK
GTK+
QT
Motif
GNUstep
55.. OOdd ttłłuummaacczzaa
Zmiany w stosunku do oryginału: Podział pierwszego rozdziału na dwie
tematyczne sekcje ("Formalności" i "Wstęp") oraz przeformatowanie
spisu najważniejszych bibliotek.
Wersja oryginalna dokumentu: .
Tłumaczenia pozostałych dokumentów HOWTO na język polski:
.
Copyright for the translation:
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
Wyszukiwarka
Podobne podstrony:
programming languages pl 4
programming languages pl 5
Programming Languages pl (2)
programming languages pl
programming languages pl 3
programming languages pl 1
programming languages pl 2
Easy Rob Program Language
Oracle?tabaseg Programowanie w jezyku PL SQL or10ps
Oracle?tabaseg Programowanie w jezyku PL SQL or11ps
Oracle8 Programowanie w jezyku PL SQL or8pls
program szkolenia specjalistycznego www katalogppoz pl
io programming pl 11
12 Sekretów Błyskawicznego Zarabiania w Programie Partnerskim Chomikuj pl
więcej podobnych podstron