Po raz pierwszy zetknąłem się z programowaniem w szkole, na lekcjach informatyki. Składały się one z kilku żmudnych wyjaśnień, jak działają n-argumentowe systemy liczbowe. I oczywiście był test, który wymagał napisania własnej strony internetowej. Wtedy wydawało mi się, że nie może być nudniejszego zajęcia. Jak bardzo się myliłem! Niestety, program informatyki w szkole średniej nie daje pełnego obrazu pracy informatyka i nie wyjaśnia, jak wybrać język programowania. Przed pytaniem „Którego języka programowania powinienem się uczyć?”, początkujący powinien zapoznać się z tym, jakie języki istnieją i czym się od siebie różnią. Wybór języka programowania - 1

Próg wejścia: wysoki, niski, średni

Programiści często mówią o „progu wejścia” — pojęciu, które odzwierciedla ilość wysiłku wymaganego od każdego „młodszego programisty”, aby opanować język programowania wystarczająco dobrze, aby napisać swój pierwszy poważny program i znaleźć pracę. Na „próg wejścia” składa się znajomość:
  • osobliwości składni i niuanse języka
  • biblioteki
  • algorytmy i struktury danych.
Pracę w Excelu można nawet nazwać swego rodzaju programowaniem. Nawiasem mówiąc, ten znany program biurowy nie jest tak prosty, jak się wydaje. Dla jednego użytkownika progiem wejścia może być możliwość stworzenia tabeli. Po drugie, może to być znajomość złożonych formuł i makr. W obu przypadkach próg ten jest niewielki. Następnie nadchodzą quasi-języki, takie jak programowanie 1C . Następnie są najprostsze języki do nauki, np. PHP . Ponadto mamy języki z natywną składnią (zwykle wywodzącą się z języka angielskiego), które nie wymagają obsługi zarządzania pamięcią, np. Java i JS . Są też języki, które wymagają niezwykle ostrożnego obchodzenia się z pamięcią, strukturami danych i algorytmami, na przykład C iC++ . Młode wieloparadygmatowe języki, na przykład Scala , mają prawdopodobnie najwyższy próg wejścia, ponieważ opanowanie ich wymaga głębokiego zanurzenia się w tak wielu paradygmatach programowania. Ale zanim wybierzesz język, powinieneś zdecydować, co chcesz dalej robić: tworzyć dla sieci, przedsiębiorstw, komputerów stacjonarnych lub urządzeń mobilnych .

Sieć czy nie sieć?

Sieć

Programistów webowych można podzielić na programistów frontendowych i backendowych . Powinieneś zrozumieć, co oznaczają te terminy. Twórcy frontendu zajmują się stroną klienta, czyli tym, co widzi użytkownik. „Backend” polega na manipulowaniu i przechowywaniu danych — części usługi działającej na serwerze. Dla programisty Frontend decydującego, jakiego języka programowania się uczyć, JavaScript i frameworki JavaScript (Angular JS, React i inne) są niezbędne. Dialekty JS, takie jak CoffeeScript i TypeScript, nie są tak popularne jak ich rodzice, ale mogą być również przydatne. Jest też Flash AS, kiedyś był JScript i VBScript, ale to pamiętają tylko dinozaury =) Poza tym wszystkim trzeba rozumieć HTMLi CSS . Wybór języka programowania - 2Wielu początkujących uważa, że ​​JavaScript i Java to prawie to samo. Nie mylcie tych języków. JS był wcześniej nazywany „LiveScript” i otrzymał swoją obecną nazwę tylko ze względu na popularność słowa „Java”. Dla programisty zaplecza sieciowego odpowiednie są PHP, Python, Ruby, Perl i Java. Tutaj chcę się skupić na PHP (porozmawiamy o innych językach później). PHP jest jednym z najłatwiejszych do nauczenia się języków, ma niski próg wejścia. Według ankiety przeprowadzonej wśród znanych twórców stron internetowych, Ruby powoli, ale systematycznie zyskuje na popularności — jest uwielbiany za swoją zwięzłość i piękno.

Nie sieciowe (korporacyjne, stacjonarne, mobilne)

Celowo połączyłem następujące języki programowania w tę kategorię o dziwnej nazwie. Większości z nich można używać do pisania aplikacji korporacyjnych, komputerowych, a nawet mobilnych. Python jest łatwym do zrozumienia obiektowym językiem programowania, który stał się ostatnio niezwykle popularny ze względu na rozwijające się uczenie maszynowe (ML): programiści ML szeroko wykorzystują Pythona. MLjest dość nowym obszarem w IT i choć widzieliśmy już jego efekty, nie spieszyłbym się z wyborem języka programowania do tej branży. Po pierwsze, potrzebujesz DOSKONAŁEGO zrozumienia matematyki. Po drugie, fala popularności może przejść tak samo, jak w przypadku „blockchaina” czy „nanotechnologii”. To powiedziawszy, być może pamiętasz, że Python jest używany do tworzenia stron internetowych. C++: klasyczny język, w którym wszystko jest zbudowane na operatorze „plus-plus”. Język ten jest przodkiem wszystkich popularnych obiektowych języków programowania i początkujący powinien zdecydowanie zwrócić na niego uwagę. Na jego podstawie napisano wiele popularnych aplikacji. Ale doskonała szansa na „strzelenie sobie w stopę” i trudna do zrozumienia składnia zmniejszają do zera prawdopodobieństwo, że początkujący opanuje ten mastodont programowania. Kotlin, która jest jak Java dla hipsterów, to szalona mieszanka OOP i programowania funkcyjnego. Ostatnio zyskał popularność, ponieważ doświadczony programista przechodzący z Javy na Kotlin może poważnie poprawić swoją produktywność. Doświadczony programista szybko oswoi się z tym językiem programowania. Nawiasem mówiąc, to samo dotyczy Scali, ale Kotlin jest popularny w świecie Androida. Java jest łatwa do nauczenia dla początkujących. Zwłaszcza z pomocą CodeGym =) Składnia Javy jest zrozumiała i choć istnieje ryzyko „strzelenia sobie w stopę”, nie jest krytyczna.

OOP czy POP?

Podejście proceduralne

Podejście zorientowane na procedury polega na napisaniu programu składającego się z następujących po sobie instrukcji, które można złożyć w jednolitą całość, aby skutecznie rozwiązać określony zestaw problemów. Do takich języków należą C , PureBasic i Pascal . Innymi słowy, języki, które przynoszą rozpacz uczniom szkół średnich i studentom. Jest też stosunkowo młode GOjęzyk. To powiedziawszy, znajomość języków proceduralnych jest bardzo przydatna dla potencjalnego programisty. Moje zanurzenie w języki proceduralne przyszło wraz z systemem Wolfram Mathematica i badaniami uniwersyteckimi. Odpowiednie algorytmy i proste procedury, poruszające się liniowo od początku do końca programu, pozwoliły mi wyliczyć wartości istotne dla współczesnej fizyki teoretycznej. Ten „sekwencyjny” język programowania ma pomóc ci zrozumieć, że czasami łatwiej jest napisać kod, który wykonuje obliczenia ręcznie. Nauka programowania zorientowanego na procedury (POP) zapewnia dobre szkolenie algorytmiczne, które pracodawca prawie zawsze chce widzieć u kandydata do pracy. Absolutnie wszystko w IT jest zbudowane na fundamencie języków proceduralnych, więc nie lekceważ ich. Przy okazji, początkujący decydujący się, jakiego języka programowania się uczyć, często myślą, że tylko języki OOP obsługują wielowątkowość. To nie jest prawda. Proceduralne języki programowania umożliwiają również obliczenia równoległe. Wybór języka programowania - 3

Podejście obiektowe

Ci, którzy zaczynali od języków proceduralnych, są zwykle dobrze zorientowani w matematyce, algorytmach i strukturach danych (ze względu na nacisk uniwersytetów technicznych na te obszary). Mimo to dzisiejsza rzeczywistość jest taka, że ​​odnoszący sukcesy programiści to zwykle ci, którzy opanowali inne podejście do programowania: paradygmat zorientowany obiektowo. Ideologia OOP pozwala budować prawdziwie globalne systemy. Cechą tego podejścia jest jego podobieństwo do świata rzeczywistego:
  • Różne obiekty oddziałują na siebie i istnieją niezależnie od siebie.
  • Obiekty mają hierarchię i mogą adoptować lub zmieniać zachowanie swoich przodków.
  • Możesz używać abstrakcyjnych pojęć, ale tylko obiekty, które faktycznie istnieją, mogą wchodzić w interakcje.

Przykład

Języki zorientowane na procedury są narzędziami do rozwiązywania konkretnych problemów. Jeśli twoje zadanie zmieni się, choćby nieznacznie, prawdopodobnie będziesz musiał poświęcić czas i wysiłek na przepisanie wszystkich algorytmów.

Wyobraź sobie program opisujący salon samochodowy, który sprzedaje samochody i ciężarówki, zarówno nowe, jak i używane. W języku proceduralnym musisz zdefiniować funkcje, które przetwarzają dane wejściowe lub wyjściowe dla każdej jednostki: nowego samochodu, nowej ciężarówki, używanego samochodu i używanej ciężarówki. Co oferuje OOP? W podejściu zorientowanym obiektowo wystarczy zdefiniować klasę bazową Vehicle, która przechowuje cechy wspólne dla wszystkich typów pojazdów:

  • Robić
  • Pojemność skokowa silnika
  • Konie mechaniczne
  • Rok
  • Nowe lub używane
  • Cena

Oraz metody przyjmowania i wysyłania informacji. Następnie tworzymy obiekty, które dziedziczą cechy klasy Vehicle: Car i Truck. Zawierają informacje, które odnoszą się konkretnie do tego typu pojazdów, jak również metody wejścia/wyjścia.

Nagle kierownictwo salonu postanawia rozszerzyć ofertę o motocykle. Zgodnie z podejściem proceduralnym musielibyśmy odtworzyć całą logikę dla nowych i używanych motocykli, podczas gdy język OOP pozwala nam po prostu stworzyć nową klasę motocykli, która dziedziczy wszystkie cechy nadklasy pojazdów i zawiera udoskonalenia specyficzne dla motocykli.

A co by się stało, gdybyśmy dodali różne pojazdy? Implementacja proceduralna wymagałaby więcej pracy niż OOP. Co więcej, im większy skład, tym mniej operacji na obiektach będzie wymaganych.

Tak więc OOP to styl programowania, który pozwala łączyć dane i metody w jedną całość i pracować z nimi jako zunifikowanym obiektem. Jednostki mogą być ułożone w hierarchię i wchodzić ze sobą w interakcje bez zagłębiania się w wewnętrzne szczegóły implementacji innych. Wskażę trzy powody, dla których OOP jest dla mnie bardziej progresywnym podejściem:
  1. OOP polega na samodzielnym rozwijaniu poszczególnych modułów, pozwalając programiście lub zespołowi na wybór sposobu i granic kontaktu oraz wymiany informacji.
  2. Kod podzielony na małe moduły jest znacznie łatwiejszy do odczytania niż procedury monolityczne. W rezultacie osoba z zewnątrz może szybko zrozumieć Twój kod, a także możesz dołączyć do nowego projektu, jeśli to konieczne.
  3. Jedną klasę można zmienić bez wpływu na interakcję innej, ale taka zmiana może wpłynąć na hierarchię obiektów podrzędnych. Po opanowaniu tego podejścia rozszerzanie i modyfikowanie programu staje się trywialne.
Pamiętaj, że jedno podejście nie jest w konflikcie z drugim, ale OOP wciąż jest wyżej w hierarchii. Dlaczego więc polecam Javę? Podkreśliłbym następujące powody:
  1. Międzyplatformowe.

    Java działa wszędzie dzięki wirtualnej maszynie Java (JVM). Jedną z głównych zalet tego języka jest jego wieloplatformowy charakter: nie trzeba zastanawiać się, którą bibliotekę dodać ani architekturę konkretnego procesora. "Napisz raz, biegnij gdziekolwiek."

  2. Dokumentacja.

    Istnieje ogromna baza dokumentacji: oficjalna dokumentacja Oracle, portale szkoleniowe i stale rozwijająca się społeczność. Odpowiedzi na większość pytań, które pojawiają się podczas tworzenia, można znaleźć w ciągu kilku minut. Najważniejsze to zrozumieć, co wpisać w wyszukiwarkę =)

  3. Popularność.

    Java jest najpopularniejszym językiem programowania na świecie: poza wspomnianymi programistami Androida i webowymi prawie każdy programista korporacyjny pisze w Javie. Enterprise odnosi się do wewnętrznego rozwoju korporacyjnego niezbędnego dla potrzeb dużych korporacji.

    Co roku hejterzy przewidują „śmierć Javy”. Mówią: „ Oracle przestanie to wspierać. Całkowicie marnujesz swój czas ”. To nieprawda! Obiecują wypuszczać nowe wersje Javy co sześć miesięcy.

    Dla mnie wyrażenia lambda w Javie 8 były rewolucją i rewelacją, nie mówiąc już o nowych wersjach! Obecnie pracuję nad „starszym” projektem, więc nie zagłębiam się w najnowsze innowacje, ale faktem jest, że Java żyje.

    Wybór języka programowania - 4
  4. Android.

    Przez ostatnie 4 lata Android niezmiennie kontrolował ponad 80% rynku telefonów komórkowych . Telewizory, odtwarzacze multimedialne, a nawet samochodowe systemy informacyjno-rozrywkowe działają na tym systemie operacyjnym. A tworzenie aplikacji dla tego systemu operacyjnego odbywa się głównie w Javie. Wyobraź sobie tylko otwierające się perspektywy. Kiedy dostałem pracę jako programista Androida, zastanawiałem się, ile wart jest produkt, który tworzę? Jak się okazało, cena wynosiła około 5 USD rocznie. To nasuwa pytanie: „Skąd więc biorą się pieniądze na to biuro, pensje, stołówkę, stół do ping-ponga, roboty i inne dodatki? Odpowiedź leży w ilości: nasza aplikacja ma 20 milionów użytkowników.

  5. Wynagrodzenia.

    A teraz wisienka na torcie: wynagrodzenie programisty Java należy do najwyższych w branży. W końcu planujesz studiować programowanie w konkretnym celu: zdobyć dobrą pracę.

Popularność języka programowania

Istnieją oficjalne źródła informacji, więc przejdźmy do nich. Według TIOBE Java zajmuje pierwsze miejsce w październiku 2019 r. W rankingu PYPL Java zajmuje drugie miejsce, znacznie wyprzedzając JS i rywalizując z modnym Pythonem.

Wniosek

Gdy początkujący zastanawia się nad wyborem języka programowania, powinien zwrócić uwagę na:
  • Popularność (Java niezmiennie zajmuje czołową pozycję)
  • Próg wejścia (dla Javy jest średni: pracodawcy wymagają dość szerokiego zakresu umiejętności)
  • Dostępne materiały (witamy w CodeGym =))
  • Obszary zastosowania: im więcej dziedzin, w których używany jest język programowania, tym więcej specjalistów jest potrzebnych na rynku. Wspomniałem już, jak Java obsługuje programowanie międzyplatformowe, ale nigdy nie mam dość powtarzania tego.
Oczywiście wszędzie czyhają pułapki, ale ten, kto zrobi krok, idzie do przodu: tylko Ty możesz zdecydować, który język programowania wybrać. Powodzenia w nauce!