Blog (3)
Komentarze (209)
Recenzje (1)

Znacie Elbox Laboratorium Informatyki? Poznajcie język G!

@KuzdoZnacie Elbox Laboratorium Informatyki? Poznajcie język G!22.06.2015 02:09

Niektórzy z Was mogą pamiętać zajęcia Informatyki w szkole podstawowej lub gimnazjum, na których uczyło się obsługi języka Logo w programach Logomocja lub Logo Komeniusz. Sterowało się tak zwanym żółwiem, który wykonywał nasze komendy i rysował na ekranie różne obiekty - zazwyczaj to co chcieliśmy ;) Było to jedno z pierwszych środowisk programistycznych, jakie poznawało się w szkole.

[1/2] ELI - Algorytm Euklidesa
[2/2] ELI - Algorytm sygnalizacji świetlnej

Kolejnym programem powiązanym z programowaniem, a którego również poznawało się w szkole, był Elbox Laboratorium Informatyki. Służył on jako pomoc naukowa w szkołach przy nauce Algorytmów i obsługi komputera. W programie mieliśmy dostępnych kilkanaście różnych bloczków, które spełniały różne role. Mieliśmy bloczki początku i końca algorytmu, linie łączące bloczki, bloczki wykonywania obliczeń lub funkcji, bloczki sprawdzania warunku, bloczki od wprowadzania i wyprowadzania danych (i lokalnych i globalnych). ELI oferował nam nie tylko tworzenie prostych algorytmów, ale również budowę programów z wykorzystaniem wbudowanego żółwia, zewnętrznych interfejsów (jak np. pomiar natężenia światła), tzw. "taśm", czyli prostych rejestrów danych czy tablic przechowujących dane. Te wszystkie mechanizmy pozwalały nam na zbudowanie bardzo rozbudowanych algorytmów, które mogły wykonać praktycznie dowolne zadanie. Sterowanie sygnalizacją świetlną, rysowanie grafik za pomocą żółwia, tworzenie wykresów i tabel czy stworzenie gry logicznej - to wszystko było możliwe do zrobienia za pomocą ELI. A przy okazji, można było się bawić i uczyć.

Ale to, co chcę Wam dzisiaj przedstawić, to język G. Jest to graficzny język programowania wykorzystywany w oprogramowaniu LabVIEW stworzony przez firmę National Instruments (w skrócie NI). NI jest producentem urządzeń, kart pomiarowych i systemów akwizycji danych, które stosuje się właśnie do kontrolowania różnych urządzeń, zbierania danych z tych urządzeń i systemów oraz akwizycji zebranych danych i ich analizy. Flagowym produktem firmy jest oczywiście oprogramowanie LabVIEW, a drugim z kolei (również tak samo ciekawym) jest LabWindows/CVI, którego przedstawię innym razem.

Czym jest LabVIEW?

Z Wikipedii możemy dowiedzieć się, że LabVIEW (akronim nazwy ang. Laboratory Virtual Instrument Engineering Workbench) powstało w 1986 roku jako rozwiązanie dla wszystkich osób, które nie były programistami, a potrzebowały programu do obsługi ich problemu. Dzięki temu, każdy naukowca, inżynier czy jakikolwiek inny badacz, mógł stworzyć potrzebną sobie aplikację, która np. zbierała dane z jego urządzeń, analizowała te dane i wyświetlała np. w postaci wykresów. Takie aplikacje oczywiście mogły być interaktywne, więc nie było problemu, by w określonych warunkach aplikacja podejmowała jakieś decyzje np. w przypadku przekroczenia dozwolonej temperatury mogła wyłączyć urządzenie lub włączyć dodatkowe wentylatory.

Z naszej internetowej encyklopedii dowiemy się również, że LabVIEW jest często wykorzystywane w ośrodkach badawczych takich jak CERN czy NASA i wszędzie tam, gdzie wykonuje się jakieś pomiary i analizuje się zebrane dane.

Pierwsza wersja aplikacji, wydana w 1986 roku, była dostępna jedynie na komputery Macintosh, dopiero 6 lat później pojawiły się na rynku wersje dla systemów Sun oraz Windows. Od następnego roku środowisko było już rozwijane równocześnie dla wszystkich platform, a obecnie dostępne jest na systemy Windows, Unix, Linux oraz Mac OS i to w wersjach 32 i 64 bitowych.

W języku graficznym G do tworzenia programów wykorzystuje się różne ikonki, które symbolizują realizowane przez nie funkcje. Takie bloczki następnie łączymy ze sobą "nitkami", które determinują przepływ danych pomiędzy wszystkimi obiektami jakie umieścimy na planszy.

Interfejs graficzny programu tworzymy poprzez umieszczanie na pustej planszy, różnych elementów graficznych, jak np. suwaki, pola tekstowe, wykresy, gałki, pokrętła, przyciski, diody LED i wiele wiele innych. Środowisko posiada bardzo rozbudowaną bazę elementów interfejsu graficznego. LabVIEW udostępnia również ponad 400 różnych funkcji matematycznych, funkcje do przedstawiania danych. itd.

Hello World

Na początek, jak wygląda interfejs graficzny środowiska. Program składa się z dwóch okien, pierwsze, o nazwie "Front Panel", jest oknem, w którym tworzymy interfejs graficzny naszego programu. Możemy tam umieszczać wszelkiego rodzaju kontrolki, wykresy, grafiki, miejsca na wprowadzanie danych, jak i miejsca z wynikami z programu. To jedno okno pozwala nam zdefiniować cały interfejs aplikacji. Drugim oknem środowiska jest "Block Diagram", czyli nasz "kod źródłowy" aplikacji. Tam pojawiają się nam wszystkie elementy naszego interfejsu w postaci ikonek o podobnej wielkości, dzięki czemu łatwo możemy je łączyć z innymi elementami aplikacji, np. pole tekstowe, w którym będziemy wprowadzać dane, możemy połączyć z funkcją konwertującą tekst na liczbę, która następnie przekaże wynik do jakiejś funkcji matematycznej lub np. do elementu graficznego przedstawiającego zbiornik. W ten sposób tworzymy kod programu, który ma się wykonać po każdym uruchomieniu.

Napisanie najprostszej wersji "Hello World", to tak naprawdę umieszczenie jednego obiektu w oknie Front Panel, a w oknie Block Diagram, dodanie stałej, która przekaże wartość do wcześniej dodanego obiektu.

[1/2] Przed uruchomieniem aplikacji
[2/2] I po uruchomieniu aplikacji

Chciałem Wam również pokazać trochę bardziej rozbudowaną wersję Hello World, w której napis wyświetlany jest poprzez migające diody LED. Niestety blog nie dopuszcza gifów, dlatego pod tym linkiem możecie zobaczyć jak to działa (niestety, ale program w darmowej wersji nagrywał z małą ilością FPS). Natomiast "kod" odpowiedzialny za działanie tego programu przedstawiam już w grafice poniżej.

Jak widać na załączonym obrazku, kod nie jest wcale jakiś skomplikowany, ale już tłumaczę, co tam mamy i co to wszystko robi. Szara ramka, która znajduje się w około wszystkich elementów i która posiada w prawym dolnym roku strzałkę, to pętla while. Wszystko co znajdzie się w środku tej ramki, znajduje się w pętli while. Po prawej stronie tej ramki mamy przycisk "stop", który jest podłączony do małego kwadracika z czerwoną kropką w środku. Ta ikonka z czerwoną kropką to warunek pętli while. Do wyboru mamy dostępne dwa warunki pętli while:

  • czerwona kropka - czyli "stop if true" - jeżeli do czerwonej kropki podamy wartość true, to pętla zostanie przerwana.
  • zielona zaokrąglona strzałeczka - czyli "continue if true" - jeżeli do ikonki przestaniemy podawać wartość true, to pętla zostanie przerwana.

Natomiast po lewej stronie mamy kilka niebieskich elementów, jakiś kwadracik i trójkąt. Niebieskie elementy to stałe, a ich kolor oznacza typ zmiennej. Niebieski oznacza liczby całkowite, pomarańczowy oznacza liczby zmiennoprzecinkowe, różowy oznacza ciągi tekstowe, a zielony wartości logiczne. Występują jeszcze inne kolory odpowiadające innym typom, ale ich na razie nie będę opisywał.

I tak wracając do tematu, po lewej stronie mamy trzy wartości całkowite, z czego jedna jest własnością pętli while. Tym elementem należącym do pętli jest zmienna "i", która przy każdym przebiegu pętli jest zwiększana o 1. Wartości "1" i "2" dodałem ręcznie, tak samo, jak kwadrat i trójkąt, które są funkcjami. Kwadrat to funkcja dzielenia z resztą. Po lewej stronie bloku znajdują się wejścia, pod które podłączona jest zmienna "i" i wartość "2", a po prawej stronie znajdują się dwa wyjścia funkcji, przy czym tylko jedno jest w tej chwili podłączone. Literka R znajdująca się przy pierwszym wyjściu oznacza resztę z dzielenia, a IQ oznacza wynik dzielenia. W moim programie chciałem, by diody naprzemiennie zapalały i gasiły się, więc potrzebuję tylko reszty z dzielenia przez 2, która daje wynik 0 lub 1. Następnie porównuję tę resztę z dzielenia z liczbą 1, co daje mi wynik true lub false.

Kolejnym elementem na planszy jest ramka w kształcie filmu do aparatu fotograficznego, która nazywa się "Flat Sequence Structure". Element ten pozwala nam zbudować strukturę sekwencji do wykonania przez program, najpierw wykonuje się pierwsza część "filmu" z lewej strony i później kolejne bloki, aż do ostatniego. W każdym z tych bloków widzimy ikonki podpisane jako Boolean. Są to nasze diody LED umieczone na Front Panelu. Ich nazwa pochodzi od typu zmiennej jaka je obsługuje, a z racji, że światło może być tylko zapalone lub zgaszone, to typem obsługującym ten element jest typ logiczny, czyli Boolean.

Jak widzimy na rysunku, jeden sygnał może być źródłem dla wielu elementów i nie ma z tym żadnych problemów. Na zrzucie pozostał jeszcze jeden element w 5 sztukach. Time Delay, to jak sama nazwa mówi, odstęp czasowy. Blok ten wymusza odczekanie zadanego czasu zanim przejdziemy do kolejnego bloku. Dzięki temu mogłem zrealizować poszczególne uruchamianie literek w programie.

Czytelność kodu

Czas pokazać, co może pójść nie tak w tym środowisku. Jednym z problemów języka G jest zachowanie czytelności kodu. Jeżeli nie będziemy dbali o naszą aplikację od samego początku, to możemy źle na tym skończyć. Programy lubią być modyfikowane, ulepszane czy rozbudowywane. Dokładanie kolejnych funkcji do już istniejącego bałaganu, nie spowoduje nagle, że kod stanie się czytelniejszy. I niestety wszystkie osoby tworzące programy w LabVIEW muszą być świadome tego, że im bardziej będą dbali o czytelność swojego kodu, tym lepiej będzie się go edytowało w przyszłości. A już na pewno ułatwi to zadanie nowym osobom, które nie są wtajemniczone w projekt. W sumie te zdania tyczą się każdego języka, tak jak się mówi, by nazwy zmiennych były logicznymi nazwami, które oznaczają coś sensownego, by kod był odpowiednio wyrównany i wcięty itp., tak w G jest to jeszcze bardziej istotne. No bo kto chciałby edytować program z kodem jak z rysunku poniżej?

I jak ja mam tutaj pracować?!
I jak ja mam tutaj pracować?!

A uwierzcie mi, takich aplikacji jest dużo więcej:

[1/2]
[2/2]

Na szczęście, jest na to rozwiązanie. LabVIEW umożliwia wykorzystywanie wcześniej stworzonych aplikacji jako podprogramów. Dzięki temu możemy jedną dużą aplikację podzielić na kilka mniejszych i pracować nad nimi osobno. Następnie w głównym projekcie włączamy wszystkie podprogramy i łączymy je w jedną całość. Takie podprogramy zyskują ikonkę podobną do wszystkich elementów, posiada ona wejścia i wyjścia i można ją łączyć z innymi blokami do współpracy.

Podsumowanie

Znów chciałem napisać krótki wstęp do bardzo ciekawego języka, ale chyba nie da się tego zrobić w postaci kilku krótkich akapitów z kilkoma zdjęciami i tyle. Język jest bardzo bogaty, umożliwia tworzenie wielu ciekawych aplikacji pomiarowych i jest bardzo przydatny właśnie w środowiskach naukowych i przemysłowych przy zbieraniu danych i ich analizie. Z chęcią przedstawię Wam ten język w kolejnych wpisach bardziej szczegółowo, ale już może bardziej na zasadzie kursu niżeli takiego wpisu jak ten. Oczywiście ponownie jestem świadom tego, że wpis nie jest napisany jakimś super językiem do czytania, tego niestety muszę się dopiero nauczyć. Mam jednak nadzieję, że wpis ten zainteresuje chociaż kilka osób, a może ktoś zna firmę NI i korzysta z ich produktów i oprogramowania? Czekam na wszelkie komentarze (te negatywne również ;))

PS. A poniżej dwa przykłady, ładnych graficznie aplikacji, których zadaniem jest sterowanie kilkoma urządzeniami, zbieraniem danych z tych urządzeń i prezentacją ich w różny sposób.

[1/2]
[2/2]
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.