Programming Languages pl


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