Categories
Ogólne

Języki programowania

Wpis [part not set] z 4 w serii Motywacja

Java, C++, C#, Visual Basic, Python, JavaScript, … – dlaczego tego tyle jest?

Heh, a dlaczego ludzie porozumiewają się w 7 tysiącach języków? 🙂

Informatyka to stosunkowo młoda dziedzina, która stale ewoluuje. Wraz z ciągłym rozwojem okazuje się, że rozwiązania z poprzednich lat nie zdają egzaminu zwiększonego popytu na usługi, stale rosnącej grupy użytkowników komputerów/sieci. W odpowiedzi na nowe potrzeby powstają nowe języki programowania lub istnieje konieczność znacznej modyfikacji już istniejącego języka, która wyklucza wsteczną kompatybilność z poprzednią wersją.

Wyobraź sobie, że jako administrator NASA planujesz program Apollo. Wiesz, że potrzebujesz zestawu narzędzi wspomagających obliczenia trajektorii lotu, że lot na księżyc powinien w maksymalnym stopniu polegać na przetestowanych procedurach. Zastanawiasz się w jakim języku zlecić stworzenie odpowiednich programów. W tym czasie jedynym sensownym rozwiązaniem jest Assembler – skomplikowany, niskopoziomowy język programowania. Wydajesz więc miliony $$ amerykańskich podatników na rozwój oprogramowania w tym języku.

Gdy opada kurz wzbity przez lądownik księzycowy wśród programistów rośnie na popularności COBOL, oferujący wyższą efektywność pracy, będący mniej siermiężny niż Assembler. Świetnie, tylko, że ogromne fundusze zostały władowane w rozwiązanie napisane w Assemblerze i teraz co, przepisujemy program Apollo na nowy język?

Albo inny przykład z naszego poletka. Efektywność energetyczna starych kamienic w centrach miast pozostawia wiele do życzenia. Spełnienie przez nie aktualnie wymaganych współczynników przenikania ciepła jest często niemożliwe. Czyli co? Burzymy i w to miejsce stawiamy obiekt z trójwarstwowymi ścianami? Czy może bardziej delikatnie: obklejamy dawną cegłę styropianem, metoda lekka-mokra i malujemy na pstrokate kolory tak powszechne na naszych osiedlach? Nie zawsze to co nowsze jest na tyle dobre, aby wymazać gumką poprzednie rozwiązania, zwłaszcza jeżeli poniesiono już ogromne nakłady kapitału.

Co roku pojawiają się kolejne języki programowania, które odpowiadają na specyficzne potrzeby grupy programistów. Jednocześnie niezbędne jest utrzymywanie i rozwijanie już napisanych programów – Ty jako użytkownik oczekujesz ciągłego rozwoju narzędzi z których korzystasz. Dlatego pojawianie się nowego języka nie usuwa z użycia poprzednich rozwiązań – ani programiści nie zmienią swojej specjalizacji na pstryknięcie palcami ani kod magicznie nie zostanie przetłumaczony na nowy język. Nie wspominając o testach skomplikowanych systemów.

Popularność języków programowania

Jeżeli ciekawi Cię, który język programowania jest najpowszechniej wykorzystywany to możesz odwiedzić stronę firmy TIOBE, która co miesiąc tworzy zestawienie języków ze względu na powszechność użycia. W chwili pisania tego posta TOP 3 to: Python / C / Java

Powyższy ranking nie do końca odpowiada na pytanie, które technologie są obecnie najbardziej poszukiwane na rynku pracy. W celu próby uzyskania odpowiedzi na takie pytanie polecam skorzystać z wyszukiwarki ofert pracy na portalu NoFluffJobs. Po wykonaniu paru kliknięć otrzymasz wyniki:

  • JavaScript – 677 ofert pracy
  • Java – 635
  • Python – 471
  • .NET (C#) – 292

Czyli co, uczymy się Javy* bo w sumie to 1300 ofert pracy? 😉

Porównywanie liczby aplikacji napisanych w C do obecnego popytu na programistów JavaScript porównałbym do liczby budynków w tradycyjnej technologii murowanej a zapotrzebownaia na konstrukcje szkieletowe. Wierzę, że teraz czujesz, że wybór języka, którego chcesz się nauczyć warto rozłożyć na czynniki pierwsze.

Języki programowania w budownictwie

Jestem zwolennikiem stopniowego zdobywania nowych umiejętności, najlepiej w ramach 8 godzin pracy. To założenie stanowi podstawowe założenie całego Let’s construct IT i rzutuje na wybór C# jako naszego głównego języka.

Dlaczego, zapytasz. Rozważmy dwa scenariusze dla początkującego, który pracuje w biurze projektowym, często łapie nadgodziny a po powrocie do domu czeka na niego dziecięce pandemonium:

  • ‘kurczę, ta JavaScript jest wszędzie, znajomy w to wszedł, bootcampy kuszą już za ~10k PLN, ofert pracy bez liku, wchodzę w to!’
    Super, tylko na jak długo wystarczy Ci motywacji, żeby uczyć się w czasie wolnym po 8 godzinach przepychanek z architektem, próbach dalszej optymalizacji tego już optymalne i odpowiadaniu na telefony z budowy, gdy znów coś się spier*? To kwestia indywidualna, ale moje doświadczenie wskazuje, że po 4 kawie zasób energetyczny nie odnawia się już liniowo, zaczynasz po prostu robić bokami.
  • ‘hmm, mamy w biurze x AutoCADów, y Revitów, z Tekli. Słyszałem, że można rozszerzyć możliwości tych programów, że mają jakieś API, może spróbuję, zobaczę jak i co.’
    To była moja droga (więc oczywiście musi być najlepsza, schemat identyczny jak z dziećmi 😛 ), sensowna choć dłuższa. W stosunku do pierwszego podejścia użyłbym porównania: sprint vs bieg długodystansowy. Nie każdy potrafi/ma warunki to szybkiego biegu. Życiowe ‘opony, które chwilowo trzymają nas za kolana skłaniają do rozłożenia tego wysiłku w dłuższym czasie.

Dlatego zachęcam do zapoznania się z tabelą zbierającą znane mi programy budowlane oraz języki programowania z których można korzystać w celu tworzenia wtyczek. Jeżeli poniższa lista jest niepełna/zawiera błędy daj mi znać 🙂

ProgramJęzyki API
AutoCAD + klonyAutoLisp, C++, C#
RevitC#, C++, Python
Tekla StructuresC#
AllplanPython
ArchiCADC++
Autodesk RobotC#, C++
RFEMC#, Python
AxisVMC#, C++, Python, Delphi
SCIA EngineerC#, Python

W powyższej tabeli nie uwzględniłem VBA czyli Visual Basica wkomponowanego w pakiet Office, w biurach projektowych wykorzystywanego głównie z poziomu Excela. Proszę, nie wchodź w to świadomie, to droga w jedną stronę, jego czas się skończył.

Druga ważna uwaga to fakt, że C# w powyższym zestawieniu może być zastąpiony VB.NET. Oba języki wykorzystują to samo środowisko uruchomieniowe .NET. Jednak liczba materiałów/samouczków/dokumentacji/ofer pracy zdecydowanie przechyla tę szalę (C# vs VB.NET) na rzecz C#.

C++

Pomimo faktu, że niemal każdy z dużych programów budowlanych jest napisany w tym języku – odradzam wybierania go jako pierwszy wybór. C++ jest z cała pewności ‘hard to master’, niestety nie spełnia pierwszej cześci tej maksymy, czyli ‘easy to learn’.

Python

Rozsądny wybór o ile zestaw programów z których korzystasz w biurze go wspiera. Python jest na fali, można w nim postawić stronę internetową, serwer, aplikację desktopową i wtyczkę do Allplana. Duża społeczność inżynierów i bibliotek matematycznych jest kolejną zaletą. Od niego zaczynałem, daaaaaaawno temu. Wspomnienia mam pozytywne 🙂

Punktem odniesienia Pythonowego ‘budowlano-programisty’ jest Łukasz Laba, którego w sieci można znaleźć pod adresem https://github.com/lukaszlaba

C#

Najcześciej spotykany język API w budownictwie. Odpowiedź Microsoftu na sukces Javy, która pozwoliła firmie z Redmond stworzyć cały ekosystem usług. Wykorzystywany wszędzie, dla mnie podstawowe źródło dochodów.

I to właśnie w C# będę przedstawiał zdecydowaną większość treści na tym blogu, choć w późniejszej fazie może zdarzyć coś frontendowego.

*Java vs JavaScript

To dwa diametralnie różne języki programowania. Zbieżność nazw wynika z zabiegu marketingowego, który został podjęty w 1995 roku przez firmę Netscape (łapka w górę kto pamięta tego dinozaura). W dużym uproszczeniu JavaScript jest królem frontendu, czyli stron WWW. Java z kolei … jest wszędzie (pamiętny ekran w trakcie instalacji), natomiast najcześciej spotykany jest po stronie backendu przeróżnych poważnych organizacji, czytaj banków.

Pamiętaj, nie bądź noob’em: Java != JavaScript 😉

Series Navigation

Leave a Reply

Your email address will not be published. Required fields are marked *