Języki programowania (małe JTZ)
Języki programowania (małe JTZ)
Autor: Risto S. Varanka
v?, 22 lipca 2000
Wersja polska:
Tomasz 'tsca' Sienicki, tsca@edb.dk
v1.0, 10 grudnia 2001
Krótkie porównanie najważniejszych języków programowania oraz bibliotek
służących do tworzenia graficznego interfejsu użytkownika (GUI) pod Linuksem.
1. Formalności
1.1 Najnowsza wersja tego dokumentu
Najnowsza wersja tego dokumentu dostępna jest pod adresem
http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/.
1.2 Prawa autorskie
Copyright (c) 2000 Risto Varanka.
1.3 Licencja
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.
Warunki modyfikacji tekstu
Wszelkie zmodyfikowane wersje dokumentów, w tym tłumaczenia, antologie
oraz dokumenty rozpowszechniane w części muszą spełniać następujące warunki:
Wersja musi być oznaczona jako zmodyfikowana
Osoba wprowadzająca modyfikacje nie może być anonimowa
Należy pozostawić nazwisko pierwotnego autora
Należy podać informację o lokalizacji oryginalnej wersji tekstu
Bez zgody pierwotnego autora/autorów nie wolno ich/jego
nazwiskiem/nazwiskami potwierdzać ani sugerować ważności zmodyfikowanego
dokumentu.
Dodatkowe wymagania:
Zmiany (w tym cięcia) muszą być zaznaczone
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.
1.4 Zastrzeżenie
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.
1.5 Informacje o autorze
Adres poczty elektronicznej:
mailto:risto.varanka@helsinki.fi
Strona domowa:
http://www.helsinki.fi/~rvaranka/.
1.6 Podziękowania
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.
2. Wstęp
2.1 Tematyka dokumentu
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.
2.2 Odnośniki
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.
3. Języki programowania
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++.
3.1 Pojęcia użyte w tabeli
JęzykPowszechnie używana nazwa języka.
PoczątkującyCzy język jest dobrym wyborem dla początkującego programisty?
Szybkość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ć?)
OOP, programowanie obiektowe kontra inne metodyProgramowanie 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.
RAD (błyskawiczne programowanie aplikacji)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.
ZastosowaniaDomeny 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.
UwagiDodatkowe informacje o języku, np. jego możliwości lub odmiany.
3.2 Najważniejsze języki
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:
3.3 Programowanie w powłoce (szelu)
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).
3.4 Inne języki
Inne warte zauważenia języki to: AWK, SED, Smalltalk, Eiffel, Ada,
Prolog, asembler, Objective C, Logo, Pascal (konwerter p2c).
3.5 Odnośniki
Strona z dużą ilością informacji i opinii o różnych
językach programowania
TCL
Perl
Python
PHP
Java
clisp
4. Narzędzia do tworzenia GUI
Standardowym środowiskiem graficznym w systemach Unix i Linux jest
posiadający swoje własne biblioteki GUI X Window System.
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.
4.1 Pojęcia użyte w tabeli
BibliotekaPowszechnie używana nazwa biblioteki
PoczątkującyCzy biblioteka nadaje się dla początkującego programisty?
LicencjaPoszczegó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.
JęzykJęzyk najczęściej używany z daną biblioteką.
Inne językiInne języki, których również można używać z daną biblioteką.
ZastosowaniaProgramy korzystające z biblioteki.
UwagiDodatkowe informacje.
4.2 Najważniejsze biblioteki do tworzenia GUI
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
4.3 Odnośniki
TK
GTK+
QT
Motif
GNUstep
5. Od tłumacza
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:
http://sunsite.unc.edu/LDP/.
Tłumaczenia pozostałych dokumentów HOWTO na język polski:
http://www.jtz.org.pl/.
Copyright for the translation:
(c) 2001 by Tomasz 'tsca' Sienicki, tsca@edb.dk
Wyszukiwarka
Podobne podstrony:
programming languages pl 4programming languages pl 5programming languages plprogramming languages pl 3programming languages pl 1programming languages pl 2Programming Languages plEasy Rob Program LanguageOracle?tabaseg Programowanie w jezyku PL SQL or10psOracle?tabaseg Programowanie w jezyku PL SQL or11psOracle8 Programowanie w jezyku PL SQL or8plsprogram szkolenia specjalistycznego www katalogppoz plio programming pl 1112 Sekretów Błyskawicznego Zarabiania w Programie Partnerskim Chomikuj plwięcej podobnych podstron