Jeśli nie JavaScript to co na początek? - Jak zacząć programować.

Jeśli nie JavaScript to co na początek? - Jak zacząć programować.

Ostatnio próbowaliśmy przeanalizować język Javascipt pod kątem jego przydatności w nauce programowania. Okazało się, że nie jest to najlepszy wybór dla początkujących. Ma on jednak ogromną zaletę - bardzo łatwo jest zacząć w nim programować ze względu na to, że w zasadzie każdy już ma odpowiedni zestaw narzędzi potrzebnych do tego.

TL;DR - czyli skocz do podsumowania

Na początek mała dygresja 

Otóż zaczynałem naukę programowania od języka BASIC na komputerze Commodore 64.  Był to bardzo ciekawy komputer, ponieważ uruchamiał się on wprost do środowiska programistycznego języka BASIC. Czyli wystarczyło go włączyć i już można było kodować. I nie trzeba było się specjalnie starać aby zacząć programować, a obsługa tego komputera prędzej czy później i tak wymagała napisania kawałka kodu. 

Ekran po uruchomieniu C64

Ale czasy się zmieniły i dziś, aby zacząć zabawę z programowaniem potrzeba znacznie więcej wysiłku niż uruchomienie komputera. Dziś trzeba zainstalować specjalne oprogramowanie, które będzie w stanie uruchomić program napisany w danym języku (interpreter) lub przetłumaczyć go na kod maszynowy (kompilator). Co więcej, potrzebujemy jeszcze specjalnego edytora tekstu (czasem zwanego też środowiskiem programistycznym), w którym będzie nam znacznie łatwiej pisać kod. No i przede wszystkim musimy wybrać język w którym będziemy pisać, lub którego będziemy się uczyć. W przypadku C64, ten wybór był dokonany za nas, ponieważ ten komputer domyślnie wyposażony był w język programowania BASIC. I właśnie tematem wyboru języka będziemy się zajmować w tym artykule. 

Z językami programowania jest trochę jak z językami obcymi - francuski wspaniale brzmi, ale angielskiego łatwiej się nauczyć. Niemiecki może nie brzmi wspaniale lecz daje ogromne możliwości na tworzenie nowych słów i jest niezwykle precyzyjny, stąd częste upodobanie filozofów do tego języka. Wymienione języki się różnią, ale mają podobne koncepcje, tzn. w każdym z nich znajdują się przecież czasowniki, rzeczowniki itd. I w każdym z nich można opowiedzieć historię "Poszedłem do sklepu i kupiłem 15 bułek, bo były jajka". 

Podobnie rzecz ma się z językami programowania. Niektóre z nich mają wspaniały marketing i wszyscy chcą w nich pisać, choć same w sobie nie są niczym szczególnym (Ruby i RoR). Niektóre mają wręcz mitycznie złą opinię, ale aż tak złe nie są (PHP), a inne zostały stworzone z myślą o konkretnym zastosowaniu (R, Matlab, Octave). Mamy też języki, które powstały dla żartu (Brainfuck, COW). Zatem który z nich wybrać? Jaki język jest najlepszy dla początkujących? Jakie powinny być kryteria dobrego języka dla początkujących? 

Kryteria i prezentacja kandydatów

Poniższa lista to wynik moich ostatnich przemyśleń nad pytaniem: "Jeśli nie JS, to jaki język byś polecił?". Należy pamiętać, że to moja osobista opinia, z którą można się nie zgodzić. 

1. Powinien być to język dynamicznie typowany

Czyli taki, który zajmuje się obsługą typów danych za nas. Możecie się zastanawiać o co chodzi z tymi typami danych, a to jest w sumie temat na osobnego posta, który zostanie opublikowany, kiedy zostanie napisany. Logiczne nie? Na potrzeby tego artykułu jednak nadmienię, że wszelkie informacje które przechowujemy i przetwarzamy za pomocą komputerów są upakowane w jakiś typ danych. Typy danych możemy z grubsza podzielić na:

  • liczby - całkowite, rzeczywiste, zespolone,
  • napisy - łańcuchy znaków, np. zdanie "Ala ma kota",
  • typ logiczny - prawda lub fałsz, oraz
  • typy złożone - obiekty, rekordy - czyli kilka rodzajów informacji zorganizowanych w jeden byt. na przykład Student ma imię i nazwisko (napis),  wiek (liczba) i informację czy wszystko zdane (typ logiczny: tak/nie).

W językach statycznie typowanych musimy sami określać jakiego typu jest dana informacja - czyli musimy zrobić to ręcznie. Języki dynamicznie typowane są w stanie same wykryć jakiego typu jest dana zmienna i przypisać jej odpowiedni typ. Dzięki temu osobom początkującym jest o wiele łatwiej na samym początku odnaleźć się w danym języku. Z drugiej strony warto aby taki język nie ukrywał przed programistą tego, że stworzył zmienną o danym typie i na przykład próbuje dodać dwa do Krakowa. 

Natomiast, jeśli teraz powstaje Wam w głowach słuszne i logiczne pytanie dlaczego w ogóle są jeszcze języki statycznie typowane to spieszę z krótkim wyjaśnieniem, że programy napisane w języku statycznie typowanym są po prostu szybsze, ze względu na to, że komputer nie musi zgadywać za nas (tak wiem, to duże uproszczenie ale kiedyś napiszę o tym więcej).  

Po pierwszej rundzie odpadają nam zatem języki: C/C++, Java, C#, Go, Rust.

Na placu boju zostają: JavaScript, PHP, Python i Ruby.

2. Powinien mieć prostą, łatwą do zapamiętania i przejrzystą składnię

Zarówno JS jak i PHP mają składnię opartą na składni języka C. Znaczy to tyle, że wiele rzeczy jest zapożyczonych z tego języka, a kod wizualnie przypomina ten napisany w C. Ma to wielką zaletę dla osób, które znają C. Natomiast gdy się jej nie zna, jest ona cokolwiek ciężka do zapamiętania. Python i Ruby mają zupełnie inną składnię.

Aby nie być gołosłownym, zobaczmy przykładowe kawałki kodu, który ma za zadanie wypisać sto razy jakiś napis na ekranie.

Javascript

PHP

Python

Ruby

Jak widać, języki JS i PHP wyglądają nieco ezoterycznie w porównaniu do Pythona i Ruby, które wyglądają na najbardziej zbliżone do zwykłego angielskiego. Natomiast one również nie są pozbawione wad - Ruby czerpie inspirację z języka PERL, który posiada bardzo zawiłą i trudną składnię, tak samo część składni Ruby jest co najmniej nieintuicyjna.    

Na przykład coś takiego:

Natomiast jeśli chodzi o Pythona to najczęstszy zarzut dotyczy tego, że białe znaki w Pythonie są znaczące (z ang. significant whitespace). Znaczy to tyle, że wcięcia w kodzie mają znaczenie i są częścią składni języka. Czyli tam gdzie PHP i JS używają nawiasów klamrowych, a Ruby słowa kluczowego end, Python używa wcięć. osobiście uważam to za zaletę, ponieważ dzięki temu wyrabiamy sobie nawyk poprawnego formatowania kodu.

Jak dla mnie w tej kategorii zwycięża Python.

3. Powinien być językiem ogólnego przeznaczenia

Czyli można w nim zrobić wszystko: napisać program księgowy,  zrobić dynamiczną stronę internetową czy jakieś dziwaczne coś, co będzie coś liczyć i mierzyć nie wiadomo komu. Tu niestety odpada PHP, ponieważ jest to język, który został zaprojektowany wyłącznie po to, aby programować w nim dynamiczne strony internetowe.  Reszta idzie łeb w łeb.

4. Powinien być językiem wielo paradygmatowym 

Ciężko wytłumaczyć o co chodzi bez wgłębiania się w teorię, ale w skrócie powiem, że język powinien pozwalać na pisanie w dowolnym stylu, czyli zarówno strukturalnie jak i obiektowo czy funkcyjnie. Na przykład w Javie można pisać tylko i wyłącznie obiektowo. Tu wszystkie by się nadały, ale jednak najsłabiej wypada JS. Ma zupełnie inne podejście do obiektowości oraz dużo rzeczy jest pomieszanych, co może skonfundować każdego. 

5. Powinien mieć bogatą bibliotekę standardową

Czyli co daje nam język po zainstalowaniu i bez konieczności instalacji dodatkowych bibliotek. Wygrywa Python bez dwóch zdań, prawie wszystko co potrzebujemy jest dostarczone podczas instalacji języka.

6. Łatwy w instalacji i obsłudze  

Wygrywa tu Javascript - już go macie, jest wbudowany w przeglądarkę internetową. Potem Python, jeśli korzystacie, tak jak ja z Ubuntu, to również już go posiadacie, a nawet zainstalowanie go pod Windowsem nie sprawia większych kłopotów. Tuż za Pythonem - Ruby. Jak dla mnie jego proces instalacji jest ciut bardziej zawiły, ale też nic czego nie można by ogarnąć w godzinę. Peleton zamyka PHP, ze względu na swoją specyfikę, oprócz samego języka konieczne będzie zainstalowanie jeszcze serwera www np. Apache (choć ostatnio przestało być to konieczne).

TL;DR; Czyli podsumowanie

Jeśli jeszcze nie dało się tego odczuć, to dla początkujących polecamy język Python. Owszem można się spierać czy to dobry wybór, ale uważam, że ten język to idealny kompromis pomiędzy przejrzystą składnią, bogatą biblioteką standardową, łatwością przyswojenia i nie staniu na przeszkodzie w poznaniu podstawowych koncepcji programowania. 

Należy też mieć świadomość tego, że jeśli poważnie myślicie o programowaniu, prawdopodobnie znajomość jednego języka nie będzie wystarczająca i kiedyś trzeba będzie poznać kolejny. Python daje dobre podstawy, za jego pomocą możemy łatwo przyswoić sobie podstawowe algorytmy i poznać struktury danych, a zdobyte w ten sposób umiejętność znacznie łatwiej przeniesiemy na grunt innego języka. 

Tak jak już zaznaczyłem wcześniej, z moją opinią można się nie zgodzić, ale nie jestem odosobniony w tym przekonaniu. Eric S. Raymond w swoim eseju "How to become a hacker" również rekomenduje Pythona jako idealny język aby zacząć przygodę z programowaniem.


Nieprzyzwoity Nerd.pl to najprawdopodobniej najlepsza strona o nieprzyzwoitym nerdowaniu.


nieprzyzwoity nerd

Pośród ogrodu siedzi ta królewska para...

...wait what? Nie ogrodu ale sofy (softu) i nie siedzi ale doskonale się bawi. Choć ich gry i zabawy nieco odstają od tego, co normalnie rozumiemy pod kategorią rozrywka.

Czymże zatem tak się zajmują? Programowaniem oczywiście, które w zasadzie jest czynnością bardzo kreatywną. To taki miks pracy detektywa,  architekta, artysty i tłumacza. Tym nie można się znudzić, zwłaszcza gdy nadchodzi ten satysfakcjonujący moment kiedy uruchamiamy program i on działa!

Ale nie samym programowaniem żyje ta para. Jest jeszcze film, teatr, kultura, nowinki techniczne, gry... i inne nieprzyzwoicie przyjemne przyjemności.

To wszystko znajdziecie na tym blogu.
Zapraszamy

Ania i Kris.

nieprzyzwoitka.pl logo

Nieprzyzwoitka.pl

Nieprzyzwoitka.pl - blog o seksie i związkach oraz innych nieprzyzwocie przyjemnych przyjemnościach

nieprzyzwoitynerd.pl logo

NieprzyzwoitaKuchnia.pl

Blog z nieprzyzwoicie pysznymi przepisami dla leniwych... i nie tylko.

Szukaj