JustPaste.it

Jaki język programowania wybrać

Spis treści

     1 Określenie żądanych cech języka
          1.1 Krok 1: Cel
          1.2 Krok 2: Przeznaczenie
          1.3 Krok 3: Platforma
          1.4 Krok 4: Środowisko programistyczne
     2 Wybór na podstawie przedsięwzięcia
          2.1 Krok 1: Wyznaczone zadanie
          2.2 Krok 2: Programowanie wspólnie z inną osobą
          2.3 Krok 3: Metodyka tworzenia oprogramowania
     3 Cechy popularnych języków programowania
          3.1 Języki ogólnego przeznaczenia
               3.1.1 Assembler
               3.1.2 Pascal, ObjectPascal
               3.1.3 Delphi, Delphi .NET
               3.1.4 C/C++
               3.1.5 Java
               3.1.6 Python
               3.1.7 C#
          3.2 Języki do obsługi stron internetowych - po stronie serwera
               3.2.1 PHP: Hypertext Preprocessor
          3.3 Języki przetwarzania tekstu i danych
               3.3.1 Wyrażenia regularne - Regex
               3.3.2 XSL (XSLT, XPath, XQuery, XSL)



Porada ta znalazła się tutaj, gdyż stanowi sedno działu FAQ (Frequently Asked Questions - Często Zadawane Pytania). Jest jednym z najczęściej zadawanych pytań, jakie okazje mają gościć na tym forum. Niniejszy tekst ma za zadanie pomóc Tobie, użytkowniku, w odpowiedzi na to pytanie, jednak sam nie zawiera bezpośredniej odpowiedzi, a jedynie wskazówki, czym się kierować, przy podejmowaniu decyzji.

Określenie żądanych cech języka



Krok 1: Cel



Określenie celu jest podstawowym pytaniem, od którego należy rozpocząć wybór języka. Z bardzo dużym prawdopodobieństwem zaliczasz się do przynajmniej jednej z kategorii:
  1. Chcesz się uczyć programowania z własnej, nieprzymuszonej woli.
  2. Masz ochotę zrealizować określony projekt.
  3. Interesują cię nowe technologie lub zagadnienia
  4. Chciałbyś zaimponować kolegom, znajomym, wykładowcom.
  5. Potrzebujesz się nauczyć programowania do szkoły, na studia, na egzamin, etc.

Jeśli nie zaliczasz się do 5 z wyżej wymienionych grup, polecam zapoznanie się z całą treścią porady. W przeciwnym wypadku, został Tobie prawdopodobnie narzucony język programowania oraz środowisko, a niejednokrotnie nawet i styl programowania. W takiej sytuacji raczej postaraj się zapoznać ze stawianymi wymaganiami, zamiast samemu podejmować decyzję. Oczywiście, jeśli mimo wszystko chcesz wybrać język programowania samemu zapraszam do dalszej lektury.

Krok 2: Przeznaczenie



Języków programowania jest bardzo dużo. Ich zastosowanie jest również niebywale szerokie. Na poniższym plakacie możesz poznać najpopularniejsze z języków oraz czas ich opracowania:

Plakat: O'Reilly - History Of Programming Languages

Języki programowania - szeroko rozumiane - można podzielić na następujące kategorie:
  1. skryptowe (np.: skrypty powłoki systemu operacyjnego)
  2. obsługi stron internetowych - po stronie serwera (np.: PHP, JSP)
  3. obsługi stron internetowych - po stronie klienta (np.: JavaScript, JScript, VBScript, ActionScript)
  4. opisu dokumentów (np.: HTML, TeX)
  5. opisu danych (np.: XML)
  6. przetwarzania tekstu i danych (np.: AWK, Perl)
  7. programowania baz danych (np.: PL/SQL)
  8. ogólnego przenaczenia (np.: C++, C#, Delphi, Java, Assembler)

Powyższy podział nie jest formalną kategoryzacją, ale orientacyjnym zestawieniem, głównie dla osób początkujących, które decydują się na wybór języka. Wiele języków ma bardzo podobną składnię (na przykład C++ oraz PHP). Jeśli po prostu chcesz tworzyć programy i powyższy podział nic Ci nie mówi, zapewne zainteresują Cię języki ogólnego przeznaczenia lub języki obsługi stron internetowych. Podjęcie określonej decyzji na tym etapie może narzucać dalszy wybór, więc - jeśli jeszcze nie podjąłeś decyzji - zapoznaj się z dalszą częścią tego opracowania.

Krok 3: Platforma



Jako platformę przyjmijmy ogół programowania systemowego oraz dodatkowego, wraz ze sprzętem, na których bazował będzie stworzony przez Ciebie program. Platformą może być sam sprzęt (np.: Assembler na procesory 8051), system operacyjny (większość języków ogólnego przeznaczenia), specjalne oprogramowanie tworzące 'maszynę wirtualną' (np.: Java), oprogramowanie dedykowane (języki skryptowe, języki obsługi stron internetowych, języki programowania baz danych), system operacyjny z określonymi dodatkowymi bibliotekami (np.: języki z rodziny .NET).

Możesz skupić się na określonym rozwiązaniu, na przykład wybierając programowanie wyłącznie pod systemy Windows lub pisanie skryptów pod powłoki dla systemów Linux, albo możesz skierować swoje działania w stronę rozwiązań przenośnych (crossplatform - wieloplatformowych) (np.: Java, języki opisu danych, języki obsługi stron internetowych), albo wręcz rozwiązań mobilnych (np.: Java - JME).

Krok 4: Środowisko programistyczne



O tym, jakie wybierzesz środowisko programistyczne, w dużej mierze zadecydują nie tylko twoje chęci, ale również zasobność portfela. Jeśli chcesz pisać skrypty dla aplikacji, musisz liczyć się z tym, że twoja platforma docelowa nie będzie darmowa. Tak samo jest w przypadku języków ogólnego przeznaczenia - środowisko programistyczne, kompilator oraz debuger mogą być kosztowne.

Jeśli chcesz się tylko pobawić w programowanie lub nauczyć wyłącznie dla siebie, rozejrzyj się za darmowymi środowiskami, a nawet oprogramowaniem open-source. Wiele dużych korporacji również wydaje wersje darmowe swoich produktów. Często są one ograniczone pod względem funkcjonalności, ale czy naprawdę potrzebujesz zaawansowanych modułów lub bibliotek, kiedy uczysz się podstaw? Sądzę, że nie. Jednak warto zwrócić uwagę na treść licencji - czy zezwala na wykorzystanie komercyjne lub rozpowszechnianie.

Pewne języki programowania mogą nie być dostępne pod niektóre platformy, lub nie mieć darmowych środowisk programistycznych. Wybierając narzędzie dostosowane dla swoich potrzeb, weź to pod uwagę.

Wybór na podstawie przedsięwzięcia



Krok 1: Wyznaczone zadanie



Często zdarza się tak, że zdecydowałeś już, co chcesz robić, a jedynym znakiem zapytania jest język programowania. Zanim zaczniejsz realizować zadanie, zastanów się, czy wybrane narzędzie jest dla ciebie najlepszym. Poniżej znajdziesz kilka porad, zastanów się nad każdą z nich:
  1. Wybierz język, który jest podobny do czegoś, co znasz. Jeśli znasz doskonale język C, może lepiej będzie zrealizować projekt w C++ zamiast w Delphi, albo w PHP zamiast CGI - zależnie jaki projekt realizujesz.
  2. Wybierz język, do którego środowisko jest popularne i dostępne - będziesz miał większą szansę, że ktoś odpowie na twoje pytania lub znajdziesz dla siebie odpowiednią publikację.
  3. Wybierz język, do którego dostępne są biblioteki, przykłady lub moduły, mogące pomóc w realizacji zadania. Zwróć uwagę na ich dostępność, zgodność, poprawność działania i licencję.
  4. Zastanów się, czy przy wykonaniu projektu nie będzie potrzebna dodatkowa nauka, której początkowo nie przewidziałeś. Jeśli znasz jakiś język z rodziny .NET, z bardzo dużym prawdopodobieństwem w innym języku .NET określone zadanie realizuje się w podobny lub taki sam sposób.
  5. Wybierz język, który oszczędzi Ci pracy - po co pisać w assemblerze, skoro skrypt (*.bat) dla systemu Windows wykona zadanie równie dobrze, a jego kod będzie krótszy i mniej skomplikowany - co ułatwi ewentualną modyfikację.


Krok 2: Programowanie wspólnie z inną osobą



Gdy pisanie programu będzie wspierane fragmentami kodu, stworzonymi przez inną osobę, lub będzie ona współtworzyła program na bieżąco, warto zainteresować się trzema rozwiązaniami:
  1. Wybrać wspólny język, który jedna z osób zna najlepiej.
  2. Wybrać języki pozwalające na tworzenie bibliotek lub modułówi i wykorzystanie tych, stworzonych w innych językach.
  3. Wybrać języki, które potrafią ze sobą współpracować (np.: PHP + JavaScript)

Powyższe rozwiązania mogą być przydatne nawet wtedy, gdy aplikację tworzy tylko jedna osoba. Pewne elementy łatwiej tworzyć w określonych językach i środowiskach, inne w innych.

Krok 3: Metodyka tworzenia oprogramowania



Jeśli już znasz jakieś języki programowania, może przywykłeś do jakiejś metodyki programowania. Jeśli jesteś początkującym, łatwiej będzie się Tobie dostosować do narzuconego podejścia, a możliwości są następujące:
  1. Programowanie liniowe
  2. Programowanie logiczne
  3. Programowanie proceduralne
  4. Programowanie funkcyjne
  5. Programowanie deklaratywne
  6. Programowanie strukturalne
  7. Programowanie obiektowe
  8. Programowanie generyczne
  9. Programowanie zdarzeniowe
  10. Programowanie agentowe

Określone języki programowania nie zezwalają lub po prostu nie dają możliwości użycia niektórych z powyższych podejść, faworyzując inne. Ucząc się kolejnego języka, zwróć uwagę, czy nowy język programowania wspiera podejście, do którego jesteś przyzwyczajony.

Cechy popularnych języków programowania



Języki ogólnego przeznaczenia



Assembler


- kompilatory i środowiska:
  1. NASM (DOS, Windows, Linux)
  2. FASM (DOS, Windows, Linux, Unix libc, MenuetOS)
  3. MASM32 (DOS, Windows)
  4. TASM (DOS, Windows)
  5. ASM'51 dla Linux (Linux ? ?C 8051)
  6. MacroAssembler 8051 dla DOS (DOS ? ?C 8051)

- metodologie:
  1. Najpopularniejsze: Liniowa, proceduralna
  2. niedostępne: funkcyjna, deklaratywna, generyczna, zdarzeniowa, agentowa

- wsparcie programowania multimediów:
  1. Grafika 2D: brak
  2. Grafika 3D: brak
  3. Dźwięk: brak
  4. Filmy: brak
  5. Kontrolery gier: brak

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Możliwe
  2. Wygodne
  3. Zalecane
  4. Popularne i szeroko propagowane
  5. Popularne programowanie sterowników sprzętowych i mikrokomputerów

- komentarze:
  1. Często nauczany
  2. Trudny do nauki podstaw programowania
  3. Łatwy do nauki podstaw architektury komputerów
  4. Dobrze napisany program może działać bardzo szybko i mieć małe rozmiary
  5. Kod jest na ogół obszerny i mniej czytelny niż kod języków wyższego poziomu
  6. Istnieje możliwość odtworzenia każdego kodu maszynowego do kodu assemblera
  7. W innych językach istnieje możliwość tworzenia wstawek kodu assemblera
  8. Popularny


Pascal, ObjectPascal


- kompilatory i środowiska:
  1. Borland Pascal (DOS, Windows)
  2. FreePascal (DOS, Windows, Linux, FreeBSD, Mac OS classic, Mac OS X/Darwin, OS/2, Netware classic, Netware libc, MorphOS, SkyOS)

- metodologie:
  1. Najpopularniejsze: Liniowa, proceduralna, strukturalna
  2. niedostępne: Logiczna, deklaratywna, generyczna, zdarzeniowa, agentowa

- wsparcie programowania multimediów:
  1. Grafika 2D: [Borland] (DOS) BGI, (Windows) OWL
  2. Grafika 3D: brak
  3. Dźwięk: brak
  4. Filmy: brak
  5. Kontrolery gier: brak

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Możliwe
  2. Niewygodne
  3. Mało popularne

- komentarze:
  1. Często nauczany
  2. Łatwy do nauki podstaw
  3. Popularny


Delphi, Delphi .NET


- kompilatory i środowiska:
  1. Borland Delphi (Windows), Borland Kylix (Linux)
  2. Lazarus oparty na kompilatorze FreePascal - wykorzystanie środowiska Lazarus pozwala wprowadzić do użycia metodologię zdarzeniową i agentową, przez co programowanie w nim jest bliższe Delphi niż ObjectPascal

- metodologie:
  1. Najpopularniejsze: Proceduralna, obiektowa, zdarzeniowa, agentowa
  2. niedostępne: Logiczna, deklaratywna, generyczna

- wsparcie programowania multimediów:
  1. Grafika 2D: [Borland] VCL, liczne biblioteki dodatkowe
  2. Grafika 3D: liczne biblioteki dodatkowe
  3. Dźwięk: liczne biblioteki dodatkowe
  4. Filmy: liczne biblioteki dodatkowe
  5. Kontrolery gier: liczne biblioteki dodatkowe

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Nie możliwe

- komentarze:
  1. W niektórych wersjach obsługuje platformę .NET
  2. Wiele nagłówków bibliotek dodatkowych musi być przepisanych spacjalnie dla Delphi, przez co często najnowsze wersje bibliotek nie są szybko dostępne
  3. Często nauczany
  4. Łatwy do nauki podstaw
  5. Łatwy w użyciu
  6. Środowiska są narzędziami RAD
  7. Popularny


C/C++


- kompilatory i środowiska:
  1. Microsoft Visual C++ Toolkit (Windows), Microsoft Visual C++ (Windows) [również jako część Microsoft Visual Studio]
  2. GNU Compiler Collection [gcc] (Windows, DOS, Unix, Linux, FreeBSD, OS/2, ELF, ...) - zawiera w sobie g++
  3. Borland C++ Builder (Windows), Borland BuilderX (Windows, Linux, Solaris)
  4. Bloodshed Dev C++ - oparty na gcc
  5. Intel C++ Compiler (Windows, Linux, embedded)
  6. Macintosh Programmer's Workshop (MacOS)
  7. LCC (Windows)

- metodologie:
  1. Najpopularniejsze: proceduralna, obiektowa, zdarzeniowa, agentowa, generyczna (poprzez wzorce)
  2. niedostępne: deklaratywna, logiczna

- wsparcie programowania multimediów:
  1. Grafika 2D: [Borland] VCL, [DJGPP]Allegro, [Microsoft] DirectDraw, liczne biblioteki dodatkowe
  2. Grafika 3D: [Microsoft] Direct3D, [SGI] OpenGL, GLUT, liczne biblioteki dodatkowe
  3. Dźwięk: [Microsoft] DirectSound i DirectMusic, OpenAL, ALUT, [Creative] EAX, ALSA, liczne biblioteki dodatkowe
  4. Filmy: [Microsoft] DirectShow, liczne biblioteki dodatkowe
  5. Kontrolery gier: [Microsoft] DirectInput, liczbe biblioteki dodatkowe

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Możliwe
  2. Wygodne
  3. Zalecane
  4. Popularne i szeroko propagowane (często we współpracy z assemblerem)
  5. Popularne programowanie sterowników sprzętowych i mikrokomputerów

- komentarze:
  1. W niektórych wersjach obsługuje platformę .NET
  2. Wiele nagłówków bibliotek jest początkowo pisanych dla C/C++, przez co są bardzo szybko dostępne.
  3. W dużej mierze programowanie systemów Linux/Unix opiera się na języku C, podobnie jak WinAPI (które można oczywiście wykorzystać w wielu językach, na przykład w Delphi)
  4. Bardzo często nauczany
  5. Łatwy do nauki podstaw
  6. Łatwy w użyciu
  7. W większości środowiska są narzędziami RAD
  8. Popularny


Java


- kompilatory i środowiska:
  1. Sun Java 2 Platform (Windows, Linux, Solaris)
  2. GNU Compiler Collection [gcc] (Windows, DOS, Unix, Linux, FreeBSD, OS/2, ELF, ...) - zawiera w sobie gcj
  3. Eclipse (wymagana maszyna wirtualna Javy)

- metodologie:
  1. Najpopularniejsze: Obiektowa, zdarzeniowa, a od wersji 5: deklaratywna, generyczna
  2. niedostępne: Liniowa, logiczna

- wsparcie programowania multimediów:
  1. Grafika 2D: wbudowane w środowisko, AWT, JFC/Swing, Java2D, wiele innych
  2. Grafika 3D: wbudowane w środowisko, Java3D, Java OpenGL, Xith3D, wiele innych
  3. Dźwięk: wbudowane w środowisko, Java Media Framework, wiele innych
  4. Filmy: Java Media Framework
  5. Kontrolery gier: JInput, wiele innych

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Niemożliwe tworzenie systemów operacyjnych
  2. Bardzo popularne programowanie urządzeń mobilnych (w tym telefonów komórkowych)

- komentarze:
  1. Często nauczany
  2. Bardzo popularny
  3. Aplikacje, dedykowane pod maszynę wirtualną, bez ponownej kompilacji uruchamiają się na każdym systemie z zainstalowaną maszyną wirtualną Javy
  4. Programy w trybie maszyny wirtualnej uruchamiają się wolniej niż programy kompilowane pod specyficzny system
  5. Język wykorzystywany do tworzenia apletów, midletów, serwletów oraz złożonych aplikacji korporacyjnych (Java Enterprise Edition).
  6. Maszyna wirtualna Javy zapewnia wysoki poziom bezpieczeństwa, pozwala dokładnie określić przywileje aplikacji
  7. W niektórych wersjach obsługuje platformę .NET


Python


- kompilatory/interpretery:

- metodologie:
  • najpopularniejsze:
    • proceduralna,
    • strukturalna,
    • obiektowa,
    • generyczna,
    • zdarzeniowa,
    • agentowa,
    • funkcyjna
  • niedostępne:
    • logiczna,
    • deklaratywna

- wsparcie programowania multimediów:

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  • Niezalecane (chociaż możliwe)

- inne zastosowania:

- komentarze:
  • W niektórych wersjach obsługuje platformę .NET (IronPython)
  • W niektórych wersjach obsługuje Java Virtual Machine (Jython)
  • Łatwy do nauki podstaw
  • Łatwy w użyciu
  • Zawiera dużą bibliotekę modułów
  • Umożliwia szybkie tworzenie oprogramowania
  • Doskonale nadaje się jako język do tworzenia prototypów
  • Umożliwia łatwą współpracę z modułami napisanymi w C/C++, dzięki czemu może być wykorzystywany również w systemach wymagających dużej wydajności (pomimo, że program wykonywany jest na maszynie wirtualnej)
  • Zapewniona duża przenośność


C#

(zalążek)

- kompilatory i środowiska:
  1. Csc darmowy kompilator sterowany z wiersza poleceń, dostępny po zainstalowaniu Microsoft .NET Framework
  2. Microsoft Visual C# 2005 (również jako składnik Visual Studio 2005)
  3. Borland C# Builder (w pakiecie Developer Studio 2006 lub Delphi 2005)
  4. SharpDevelop - open-sourcowe IDE na platformę .NET
  5. MonoDevelop - open-sourcowe IDE na platformę Mono (stworzony na podstawie SharpDevelop)

- metodologie:

- wsparcie programowania multimediów:
  1. Grafika 2D: Managed DirectX, liczne biblioteki dodatkowe
  2. Grafika 3D: Managed DirectX, OpenGL, liczne biblioteki dodatkowe
  3. Dźwięk: Managed DirectX, liczne biblioteki dodatkowe
  4. Filmy: Managed DirectX, liczne biblioteki dodatkowe
  5. Kontrolery gier: Managed DirectX, liczbe biblioteki dodatkowe

- programowanie systemów operacyjnych i urządzeń peryferyjnych:
  1. Niemożliwe tworzenie systemów operacyjnych (aczkolwiek ciekawostkę stanowi nowy system Microsoftu, w większości tworzony w C# - Singularity)

- komentarze:
  1. Przeznaczony do pisania pod platformą .NET i w jej obrębie całkowicie przenośny
  2. Dostępne środowiska są narzędziami RAD
  3. Coraz bardziej popularny
  4. Bardzo dobrze wyposarzona biblioteka standardowa (przestrzeń nazw System)


Języki do obsługi stron internetowych - po stronie serwera



PHP: Hypertext Preprocessor



- środowiska:
  1. Serwer HTTP (np. Apache) ze skonfigurowanym silnikiem PHP
  2. Zend Studio - IDE dla Windows, Linux, Macintosh
  3. WinBinder - tworzenie aplikacji z GUI dla Windows


- metodologie:
  1. Najpopularniejsze: proceduralna, strukturalna, obiektowa
  2. Niedostępne: zdarzeniowa


- wsparcie programowania technologii:
  1. Grafika 2D: PHP-GTK
  2. Bazy danych: liczne biblioteki dedykowane oraz ogólne biblioteka PDO
  3. Usługi sieciowe: liczne biblioteki dedykowane usługom


- programowanie urządzeń peryferyjnych:
  1. Możliwe generowanie stron dostępnych przez urządzenia przenośne i mobline (na przykład stron WAP)


- komentarze:
  1. Darmowy silnik rozpowszechniany na zasadach Open-Source
  2. Przejrzysta i łatwa do opanowania składnia z rodziny języków "C-podobnych"
  3. Bardzo popularny, jako język bazowy, do tworzenia dynamicznych serwisów www
  4. Posiada szerokie wsparcie komunikacji z serwerami baz danych i usług sieciowych


Języki przetwarzania tekstu i danych


Wyrażenia regularne - Regex


- kompilatory/interpretery - minijęzyk osadzany w wielu innych językach i programach m. in. edytorach tekstu (np. VIM, EditPlus), narzędziach systemowych (np. grep, find, sed)
- metodologie: deklaratywna
- komentarze:
Występuje w wielu odmianach m. in. Unix, POSIX, Emacs i Perl. Składnia Perl jest jedną z najbardziej rozbudowanych i czytelnych z tego względu jest stosowana (czasem z niewielkimi zmianami) w wielu językach programowania (m. in. PHP, Python, C#)

XSL (XSLT, XPath, XQuery, XSL)


- kompilatory/interpretery:

- metodologie:
  • deklaratywna,
  • funkcyjna
Źródło: 4programmers.net. Treść udostępniona na zasadach licencji Creative Commons Attribution

 

Autor: 4programmers.net

Licencja: Creative Commons