Języków programowania misternie utkana pajęczyna …

 

en-INTL-L-Visual-Studio-2015-Professional-C5E-01174-mncoOstatnio wysyp darmowych środowisk programowania jest tak duży, że ciężko podjąć decyzję w czym pisać i czego się uczyć dla początkujących. Tu skupię się jednak na innym aspekcie programistycznego miszmaszu, swoistej pajęczyny zależności i możliwości jak też i łatwości …. oraz na podobieństwach .

Wydawać by się mogło że walka o popularność miedzy producentami środowisk niema końca , ale każdy dzięki temu znajdzie coś dla siebie …,  a znajomość kilku języków na pewno też w niczym nie przeszkodzi dlatego tu w tym miejscu  pokażę wam 3 różne języki dostępne za FREE a jednak jakże podobne , na prostym przykładzie sterowania diodą przez port COM na Arduino … (rozpocząłem już to kiedyś i o mało mnie nie zlinczowano … bo nikt nie zrozumiał sensu całego opisu ….)


Zanim ruszymy do porównania  —  warto wspomnieć co bierzemy na tapetę …. a są to:

Każdy z nich możecie pobrać klikając na link.  Myślę tez iż warto mieć wszystkie by móc znaleźć ten właściwy dla siebie , albo poznać je wszystkie ( to chyba dużo lepsza opcja prawda ?? ) . Ja osobiście nie widzę większej różnicy w pisaniu programów w każdym z nich , dlatego też pokarzę wam tutaj 3 identyczne programy napisane w tych 3ch różnych językach .. dzięki czemu myślę że każdy się czegoś nauczy i pozna coś nowego.  Bo tak naprawdę niema się przecież czym przejmować w czym piszemy nasz program niema to większego znaczenia od strony klienta w jakim robimy to języku ważny jest cel …

A w tym arcie chcę wam pokazać, że mimo różnic  tak naprawdę jest wiele podobieństw  i nic nie stoi na przeszkodzie by  pisząc w :

  • Delphi  –> poznać  C# i C++  ,
  • C#  –> poznać  C++ i Delphi  ,
  • C++  –> poznać  C# i Delphi  .

To co jesteście gotowi na to małe przedstawienie składające się z 3ch kodów …?? Jeśli tak zaczynamy  ….


Wspólny mianownik 


By nam się udało musimy podjąć decyzję co ma nasza aplikacja robić i w jaki sposób, ponadto musimy wszystkie środowiska sprowadzić do wspólnego mianownika tak by operacje i czynności były podobne.

Zdecydowaliśmy że nasz program będzie pracował w środowisku Windows i będzie komunikował się z urządzeniem przez UART  okienko będzie zawierać 2 przyciski których kliknięcie spowoduje wysłanie na UART 2ch rozkazów, na które  zareaguje nasze urządzenie testowe …

 


Sprzętowy tester…

arduino-6

Żeby było prościej posłużymy się tu popularną platformą Arduino mamy tam już na pokładzie wszystko co trzeba :

Przechwytywanie

Tak więc nasza aplikacja testowa będzie działać następująco:

  1. Ustawienia początkowe UART i Portów — Dioda LED wyłączona
  2. Oczekiwanie na rozkaz nadchodzący na porcie UART
  3. Odebrano rozkaz  — > jeśli  = 1   zmieniamy stan portu D13  (Dioda ON)
  4. Odebrano rozkaz  — > jeśli  = 0   zmieniamy stan portu D13  (Dioda OFF)
  5. Oczekujemy na rozkaz

Prawda że proste …. ??   Dla jasności przedstawmy go graficznie :

Przechwytywanie

Kod napisany w Arduino IDE  wygląda następująco:

Jak widać od tej strony wszystko jest jasne i możemy sterować w banalny sposób naszą diodą LED przez UART ….

Komunikacja ustawiona na  9600bps  8in1 .

Czas zatem pójść dalej i napisać nasz program sterujący ….


image

Na pierwszy ogień napiszemy aplikację w Delphi 10.1 Berlin ,  dlaczego ?? Dlatego, że jest to dalej dosyć popularny Pascal, który jest prosty w poznaniu gdyż zasadniczo powstał w celu właśnie uczenia programowania ….

Do dzieła ….

Uruchamiamy środowisko i tworzymy nowy projekt VCL, nazwiemy go sobie  LED_Ster,  gdy już nam się pojawi okienko / formatka umieszczamy na niej  2 Butony :

8e1a81362d17725b535f7d96bd2971c1

O jakoś tak …   jeden button nazywamy Zaświeć LED , z drugi Zgaś LED … oczywiście potrzebna jest nam też kontrolka  COMPort  którą dodajemy do naszego okienka. Oczywiście nie będę tutaj wnikał w szczegóły gdyż każdy sobie poradzi , a dewizą RAD  jest Szybkie tworzenie Aplikacji wiec tak też zróbmy …  Naszą kontrolkę COMPort ustawiamy dokładnie tak jak widać poniżej:

8b2d9c87f8304fff87fe65edc2001f50

UWAGA !!!  

Przechwytywanie

Gdy już ustawiliśmy wszystko czas napisać trochę kodu … oczywiście nie jest to specjalnie skomplikowane i w istocie będzie błyskawiczne:

Klikamy na Butonie , który nazwaliśmy Zapal LED i po otwarciu widoku kodu wpisujemy w procedurze obsługującej zdarzenie Click naszego Butona  co wygląda tak:

Analogicznie postępujemy z drugim przyciskiem Zgaś LED  gdzie wpisujemy kod:

Jak widzicie całość jest banalnie prosta jeden przycisk powoduje wysłanie „1”, a drugi „0”  a wiec dokładnie na to czeka nasz program w Arduino :)

Kompilujemy nasz program …  I oto ON

e0799752cd8e9254b4f4a3ee775094da

Sprawdzamy …  Działa bardzo dobrze i doskonale się spisuje dioda D13 na Arduino zgodnie z oczekiwaniem zaświeca się i gasi po kliknięciu odpowiedniego przycisku … Cel został osiągnięty w szybki i prosty sposób.

Cały kod naszego programu wygląda następująco:


UWAGA !!

Z niewiadomych powodów w Delphi niema kontrolki ComPort … i trzeba użyć obcej … nie jest to specjalnie problematyczne , ale jednak jest i może skutecznie zdenerwować :) Możliwości mamy wiele, ale jak pisałem wcześniej chciałem operacje ujednolicić i dlatego użyłem kontrolki AsynC Pro , która jest podobna w użyciu do tej znanej z Visual Studio.

Instalacja jest prosta wystarczy postępować zgodnie z rysunkiem:

efc84e9fd6c3ea01c511406880c66e24

Kolejność postępowanie opisują strzałki :

1. Czerwona
2. Zielona
3. Niebieska
4. Jasno Zielona


Uff… jeden język mamy za sobą … W Delphi jakoś nam poszło sprawnie  Cały projekt możemy pobrać tutaj :

DiodaLED Delphi
DiodaLED Delphi
DiodaLED_Delphi.7z
2.2 MiB
29 Downloads
Szczegóły

VS_Ultimate_Box

Kolejny przykład bazujący na naszym naiwnym programie dla Arduino wykonamy w popularnym środowisku Visual Studio 2015 Community  i napiszemy program w języku C# , który choć pracuje pod kontrolą .Net również pozwala na szybki i sprawne tworzenie aplikacji Windows. Choć niewątpliwie jest to nowoczesny język w porównaniu z poprzednikiem i dynamicznie rozwijany … chcę tu pokazać na takim samym programie jak bardzo wiele znajdziemy podobieństw …..

Do dzieła …

Uruchamiamy środowisko Visual Studio , analogicznie tworzymy nowy projekt CLR , nazywamy go Dioda_LED2 np..  i na naszym formularzu windows  tworzymy dwa Buttony ,które Nazywamy tak jak poprzednio  Zpal LED  i Zgaś LED

679e5ebe2eaeb6eda9fd688f9888d91e

Dodajemy też kontrolkę serialPort którą na szczęście mamy i nie musimy nic kombinować i szukać jak w przypadku Delphi. Kontrolkę konfigurujemy analogicznie jak wyżej:

5959278bdf940141c1ce5dcc3beee988

UWAGA!!

Jak wyżej … pamiętamy o numerze portu COM  u mnie jest to  COM6


Klikamy na Buttonie „Zapal LED” i wpisujemy kod:

Podobnie postępujemy z drugim Buttonem :

Jak widać wszystko wygląda niemal tak samo jak w przykładzie dla Delphi  oczywiście różnice też są i wynikają one z konstrukcji języków oraz ich składni . W C# wymagane jest aby sekcji InitializeComponent wykonać otwarcie portu …

Możemy nasz program skompilować i uzyskany efekt jest identyczny z tym w Delphi:

9917644e1ccb58646e7aae92b9de3f13

Tak samo klikając na butonach zapalamy i gasimy diodę LED  D13 na naszym ARDUINO. A kod programu wygląda w całości następująco:

Cały projekt można pobrać tutaj i sobie sprawdzić

DiodaLED CS (2)
DiodaLED CS (2)
DiodaLED_CS-2.7z
19.4 KiB
27 Downloads
Szczegóły

Uffff ….  

Popatrzcie … 2 różne środowiska i różne języki … a jak podobne są kody i sposób pisania programu i tworzenia aplikacji , ale zobaczmy jednak jak to będzie wyglądać w C++


91cdc43393566fb969a9b6ee0e20bb45

Tu również podobnie jak wyżej ….  tworzymy nowy projekt  i nazywamy DiodaLED :)

Przechwytywanieg

Dodajemy też kontrolkę ComPort , zauważcie że dodana raz w delphi kontrolka jest też dostępna w C++ to duża wygoda ,  ustawiamy ją więc analogicznie jak poprzednie :

Przechwytywanie

Zauważcie że zwykle zmieniam sobie nazwę kontrolki na ComPort — numer jest dodawany automatycznie przez środowisko.

Teraz klikamy na pierwszym Buttonie o nazwie „Zapal LED” i wpisujemy kod:

Analogicznie dla drugiego Buttona :)

Kompilujemy program i uzyskujemy Wynik :

Przechwytywanie

Jak widać program taki sam jak wyżej realizuje takie same funkcje , klikamy na klawisze i oczywiście Dioda D13 zaświeca się i gaśnie zgodnie z naszymi oczekiwaniami i przyjętym algorytmem.

Pełny kod programu w C++ prezentuje się następująco:

A cały projekt można pobrać tu:

DiodaLED Cpp
DiodaLED Cpp
DiodaLED_Cpp.7z
7.9 MiB
27 Downloads
Szczegóły

EPILOG 


Tym sposobem dotarliśmy do końca tej prozaicznie dziwnej i zakręconej językowej wieży Babel jaką nam zapodali twórcy języków , ale na szczęście są tacy jak ja wariaci, którym  „rozjęzykowienie”  nie przeszkadza i pomimo iż wielu języków nie lubię np. Delphi to jednak nie oznacza, że się w nim źle czuję.

Dlaczego więc poświeciłem tyle czasu na napisanie tego..  hmmm można powiedzieć dramatu programistycznego ??  Ano tylko dlatego by pokazać wam przede wszystkim początkującym jak bardzo wszystko jest do siebie podobne choć tak bardzo się różni :)

Byście mogli sami zobaczyć, że można się uczyć każdego języka osobno i wszystkich razem , a Tym zaawansowanym, którzy mają już jakieś  swoje przyzwyczajenia programistyczne, że inne nie jest gorsze …  :)

Właśnie w tym celu powstały 3 takie same programy robiące to samo w 3-ch różnych językach ..  które jak widać za wiele się nie różnią ..

Oczywiście wszystkie problemy można rozwiązać na wiele sposobów, samo podejście do portu COM może być różne i jest tyle sposobów ilu programistów … dlatego też proszę nie piszcie w komentarzach, że można zrobić tak czy tak …

TO NIEMA ZNACZENIA 

z punktu widzenia tego porównania chodziło mi dokładnie by sprowadzić wszystkie 3 języki do tego samego mianownika , by operacje podczas tworzenia programu były takie same / podobne i tak się udało :)  Dzięki czemu mogłem wam zaprezentować krótko i zwięźle bez zbędnego owijania w bawełnę czy nawijania makaronu na uszy jakie to boskie jest pisanie w języku X , a w Y bla bla bla …. NIE , ale chciałem wam w prostych przykładach i najprostszy możliwy sposób pokazać jak bardzo różne programy są podobne i jak prosto można ten sam efekt uzyskać w  różnych językach.

Wybór języka to trudna sprawa , ale warto poznać ich kilka ….  a jak widzicie, trudne to nie jest….

Miłej zabawy z tworzeniem nowych aplikacji w dowolnym języku , i w poznawaniu różnych języków …