Jaki język programowania jest przydatniejszy z punktu widzenia inżyniera elektronika? Rozważmy to zagadnienie porównując ze sobą dwa popularne w tym sektorze języki – Matlaba oraz Pythona.
Temat ten oczywiście jest punktem wyjścia do czasami bardzo gorączkowej dyskusji. Nie jest to pierwszy taki punkt zapalny wśród elektroników, wystarczy wskazać na spory dotyczące kolejności bajtów (little endian i big endian) w zapisie cyfrowym w latach ’80 i ’90 XX wieku. Obecnie tak gorące dyskusje, w wielu branżach, wywołuje temat porównywania ze sobą języków programowania. Dlatego też, w poniższym artykule, skupimy się na porównaniu dwóch języków programowania, popularnych wśród elektroników – Matlaba i Pythona. Który z nich można uznać za przydatniejszy w praktyce inżynierów tej branży?
Zasadniczo odpowiedź jest prosta – to zależy. Oba te narzędzia są bardzo potężne, co czyni wybór pomiędzy nimi szczególnie trudnym. Oba posiadają dodatkowo doskonałe wsparcie i precyzyjną i kompletną dokumentację. Finalnie – oba języki są porównywalnie popularne. Pozwala na to na dosyć sprawiedliwe ich porównanie.
Pierwsza ogromna różnica, jaka rzuca się w oczy przy porównywaniu tych dwóch ekosystemów, to modele biznesowe. Matlab jest drogi. Jest do tego stopnia drogi, że większość firm, która z niego korzysta, kupuje tylko jedną lub kilka licencji i dba, by aplikacja ta była możliwie w pełni wykorzystana i obłożona - to często prowadzi do frustracji inżynierów, którzy nie mogą z niego skorzystać „od ręki”, gdy tylko tego potrzebują. Prowadzi to czasami do sytuacji, w której, aby uruchomić jakiś skrypt napisany w Matlabie, trzeba ustawić się w odpowiedniej kolejce. Z drugiej strony, mimo wszystko, przyznać trzeba, że dostajemy dokładnie to za co płacimy – zaawansowane środowisko z mnóstwem, czasami dodatkowo płatnych, zestawów narzędzi (toolboxów) dedykowanych do rozmaitych zastosowań.
Z drugiej strony Python, który jest w pełni otwarty. Interpretery tego języka są darmowe i stoi za nimi ogromne środowisko programistów. Nieważne, czy nam się to podoba czy nie, to otwarte oprogramowanie świeci obecnie największe triumfy i nic nie wskazuje, aby trend ten miał ulec zmianie. Wiele sektorów bardzo dużo czasu i pracy inwestuje w rozwój Pythona jak i napisanych w tym języku narzędzi. Szerokie zastosowania i ogromna ilość pól eksploatacji tego języka sprawia, że z pewnością będzie on wykorzystywany jeszcze przez wiele lat.
Python potrafi o wiele więcej niż inne podobne języki programowania, ponieważ wiele osób pracuje nad tworzeniem dla niego bibliotek, czy portowaniem tego języka na inne platformy, nawet takie jak niewielkie mikrokontrolery z bardzo ograniczonymi zasobami. Dodatkowo, za językiem tym stoi ogromne wsparcie środowiska open-source, które dokłada wielu starań, by system ten rozwijał się cały czas.
Jedną z wad Pythona, o której trzeba wspomnieć, są problemy z kompatybilnością pomiędzy dwoma, niezależnie rozwijanymi wersjami – 2.7 i 3.x. O ile nie jest to problem dla niewielkich skryptów, które pisane są z zamiarem jednorazowego wykorzystania lub też pozostawienia w niezmienionej formie, to jest to problematyczne dla utrzymywania większego ekosystemu skryptów czy oprogramowania większej infrastruktury.
Żadnemu inżynierowi nie zaszkodzi, jeżeli nauczy się korzystać z tak uniwersalnego narzędzia, jakim jest Python. Ten popularny język programowania może po pierwsze zastąpić wiele, jeśli nie wszystkie, narzędzia do modelowania czy skryptowania, a po drugie jego nauka tylko otwiera horyzont do dalszego samorozwoju. Python posiada wiele ciekawych narzędzi do analizy danych (np. biblioteka Pandas) czy uczenia maszynowego, które wykorzystać można nie tylko w elektronice.
Innymi słowy – ucząc się Pythona, łatwo jest pójść krok dalej i rozpocząć naukę wykorzystania tego języka w innych aplikacjach. Jeśli nauczysz się Pythona, to będziesz w stanie rozmawiać jednym językiem z szerokim gronem specjalistów, od deweloperów aplikacji webowych do analityków finansowych.
Oczywiście, pewnie moglibyśmy wychwalać Pythona tak dalej, jednakże wróćmy do porównania tego języka z drugim ‘gigantem’, zwłaszcza wśród inżynierów-elektroników – Matlabem. Z pewnością jest to najpopularniejsze środowisko wśród elektroników. Jak wskazuje firma MathWorks, twórcy Matlaba, używa go około 5000 uczelni technicznych na całym świecie. Wykorzystywany jest on na zajęciach, ćwiczeniach etc. Dzięki temu, niemalże każdy elektronik, kończący uczelnię wyższą zna przynajmniej podstawy Matlaba. Jest to jeden z powodów, dla których środowisko to jest tak popularne i szeroko stosowane w całym sektorze – ciężko migruje się ze znanego sobie narzędzia do czegoś nowego, nawet jeżeli miałoby być finalnie lepsze.
Wiele osób nie zdaje sobie nawet sprawy, jak bardzo przyzwyczajone są do Matlaba. Dla pracujących w tym środowisku elektroników naturalne jest, że macierz zaczyna się od indeksu równego jeden, gdzie większość, obecnie programistów, zaczyna zliczać indeksy od zera. Taka sytuacja, oprócz częstych pomyłek, prowadzi także czasami do śmiesznych sytuacji. Jakiś czas temu, płytka z interfejsami radiowymi od Silicon Labs, wyposażona została w dwa interfejsy antenowe – RF1 i RF2. Ogromne było zdziwienie inżynierów projektujących ten moduł, gdy programiści dopytywali ich, gdzie jest interfejs RF0, ponieważ było dla nich oczywiste, że taki musi w module być.
O ile Matlab jest drogi, to jest też bardzo potężny. Dodatkowo, dzięki temu, że elektronicy uczą się Matlaba już na studiach (co obecnie się zmienia, ale Pythona wprowadzono na studia elektroniczne dopiero niedawno) to doskonale idzie im wykorzystywanie do w szeregu zawodowych aplikacji.
Na korzyść Pythona działa teraz to, że jest darmowy i – nie bójmy się tego przyznać – modny. Dzięki temu jest to często pierwszy język programowania, jaki ludzie poznają. Kursy Pythona odbywają się na studiach najczęściej zanim jeszcze student trafi na zajęcia z Matlaba, co sprawia, że szala popularności przechyla się powoli w kierunku języka z wężem w logo.
Porównanie detali
Kiedy już znamy tło i ogólne ‘uwarunkowania’ obu języków czas zagłębić się w bardziej techniczne detale obu środowisk. Aby porównanie to było fair, rozważmy oba narzędzia w kontekście realnej ich aplikacji w praktyce inżyniera elektronika. Zacznijmy jednak od pewnej dygresji.
Każdy z nas czasem odniósł wrażenie, że ludzie przyjmują pewne założenia na temat tego, co umiemy i czym się zajmujemy jako elektronicy. Na przykład programiści – pewnie wielokrotnie musieli tłumaczyć swoim rodzicom, że nie potrafią zainstalować nowej drukarki. Tak samo, będąc elektronikiem, często trzeba tłumaczyć, że nie umiemy zainstalować nowego termostatu do centralnego ogrzewania, tym bardziej naprawić starego.
W tym przypadku jest analogicznie. To, że jesteśmy inżynierami, nie oznacza automatycznie, że potrafimy programować, a fakt, że nawet potrafimy stworzyć jakiś skrypt, nie oznacza od razu, ze jesteśmy programistami w szerszej definicji tego słowa. Jak powiedział kiedyś dyrektor ds. technologii w Silicon Labs, Alessandro Piovaccari: „U podstaw większości projektów inżynierskich jest walka z fizycznym światem. Na przykład projektując nowy transceiver radiowy, musimy posiadać elastyczną wiedzę z zakresu wielu dziedzin, od podstaw fizycznych działania systemu radiowego, poprzez niuanse procesu produkcji, rozkład ścieżek w krzemie, elektryczny projekt tranzystorów w nim i warstwę logiczną”. Programowanie samo w sobie jest jedynie narzędziem, które inżynierowie elektronicy wykorzystują przy okazji wykorzystywania urządzeń pomiarowych czy rozmaitych kalkulatorów.
Pierwsze wykorzystanie programowania, jakie przychodzi na myśl, to pomoc w realizacji repetytywnych zadań obliczeniowych, jakich pełno jest podczas optymalizacji układu. Na przykład znalezienie elementów odpowiedniej wartości w filtrze n-tego rzędu. Niektórzy elektronicy do policzenia tego wykorzystają po prostu arkusz w Excelu, gdzie wyliczą sobie tabele ze wszystkimi możliwymi wartościami elementu i wybierze z niej ten który pasuje (np. do szeregu). Tą samą operację i te same obliczenia przeprowadzić można także w Matlabie czy Pythonie, uzyskując identyczny wynik. Różnica jest tylko taka, że korzystając z Matlaba czy Pythona łatwo jest przerobić ten algorytm na ogólnego zastosowania, który będziemy mogli wykorzystywać wielokrotnie, do obliczania tego rodzaju elementów. Co więcej, możemy go następnie rozbudować o np. możliwość wczytywania plików z danymi wejściowymi czy też uwzględnianie takich efektów, jak wpływ połączeń czy jakości i typu lutowia pomiędzy elementami.
Innym zastosowaniem programowania jest modelowanie systemów. Jest to obszar, w którym kompetencje Pythona i Matlaba mocno na siebie nachodzą i możemy powiedzieć, że zadania związane z modelowaniem mogą być równie łatwo realizowane w obu językach, szczególnie dzięki bibliotekom do Pythona, takim jak numpy, scipy czy matplotlib. Jednakże Matlab ma tutaj jedną istotną przewagę nad Pythonem – są do niego dostępne mocno dedykowane i dopasowane do konkretnych zadań toolboxy, jak na przykład DSM Toolbox stworzono przez Richarda Schreiera. Toolbox ten daje zestaw narzędzi dedykowanych tylko i wyłącznie do modelowania przetworników analogowo-cyfrowych typu Delta-Sigma. Python nie posiada tak wąsko dedykowanych i wyspecjalizowanych bibliotek.
Dodatkowo Matlab dostarczany jest wraz z Simulinkiem. To wartościowe narzędzie, o którym jeszcze tutaj nie pisaliśmy, nie ma w zasadzie żadnej konkurencji. Jest to pakiet pozwalający na przeprowadzanie różnego rodzaju symulacji z wykorzystaniem prostego graficznego systemu ich projektowania. Python ani żadne inne środowisko nie oferuje podobnych nawet możliwości.
Inżynierskie umysły są zwinne i inteligentne, ale też często jesteśmy leniwi, co nie zawsze jest złe. Jak to ujął Scott Schwarts (kolega autora artykułu źródłowego przyp.red.): „Kocham moją pracę. Jednakże, między nami mówiąc, nie chcę spędzać każdej chwili życia ją wykonując”.
Scott mówiąc to miał na myśli automatyzację testów i pomiarów. Jest to dziedzina, w której zdolności skryptowe Pythona są bardzo przydatne i Matlab nie może w tym zakresie konkurować z Pythonem. Rzeczywistymi konkurentami Pythona, jeśli chodzi o skryty testowe i pomiarowe mogą być C# i Perl, ale technologie te już straciły na popularności na rzecz Pythona – jest on szeroko wykorzystywany do pisania skryptów dla systemów testów automatycznych niemalże w każdej branży. Jedyną realną konkurencją jest tutaj ekosystem LabVIEW, ale ten z kolei jest również płatny i nie należy do najtańszych (przyp.red.).
Układ pomiarowy do charakteryzacji układu w scalonym chipie (SoC) obejmuje wiele urządzeń (analizatory widma, mierniki mocy, zasilacze, oscyloskopy itp.). Dodatkowo, samych testowanych urządzeń (DUT) może być kilka, na rożnych płytkach rozwojowych etc.
Na studiach w ramach zajęć, wszystkie te pomiary musiały być prowadzone ręcznie i większość z nas pamięta, jak czasochłonne to jest. Nic nie przebije przyjemności spędzenia kilku godzin na pisaniu skryptu (w Python lub C#), który kontroluje i zbiera dane ze wszystkich urządzeń na stole warsztatowym. Po napisaniu skryptu możemy wygodnie usiąść i oglądać, jak wszystkie układy współpracują ze sobą, realizując zaprogramowane pomiary. Skanowanie różnych wyjść czy przemiatanie parametrami stają się wtedy tylko kwestią kilku dodatkowych linii kodu.
Analogicznym, jeszcze popularniejszym zastosowaniem Pythona jest testowanie oprogramowania. Jest to niezwykle praktyczne, gdy mamy np. nową implementację jakiegoś kodu na mikrokontrolerze. Może on być napisany w C lub Assemblerze. Bardzo dobrze jest kod taki, zanim trafi do dalszych testów, sprawdzić w systemie prostych automatycznych testów jednostkowych etc. Oczywiście testy te realizowane są po implementacji kodu na mikrokontrolerze.
Do testowanego układu, z załadowanym kodem programu podłączane są wszystkie wymagane analizatory etc. Obsługujący to skrypt, np. w Pythonie, realizuje wszystkie funkcje kontrolno-pomiarowe i odpowiedzialny jest za przetwarzanie danych i ich wizualizację. W tym samym języku stworzyć możemy kod programu obsługujący maszyny i urządzenia pomiarowe, przetwarzający zebrane dane i wizualizujący je w sposób strawny dla człowieka. Dodatkowo Python może nawet wykorzystywać i uruchamiać skrypty napisane w innych językach i interpretować ich wyniki.
Dodatkowym ułatwieniem, jakie daje stosowanie Pythona, w zakresie testowania oprogramowania, jest fakt, że relatywnie łatwo zintegrować jest Pythonowe skrypty z systemami kontroli wersji, testów automatycznych czy ciągłej integracji. Tego rodzaju narzędzia są coraz częściej stosowane w firmach projektujących urządzenia elektroniczne.
Podsumowanie
Python, Matlab, Excel… i wiele innych. Wszystkie te narzędzia mogą koegzystować w elektronicznym warsztacie i nie ma w tym nic negatywnego. To tak jak oscyloskop i multimetr. Ten pierwszy jest w stanie zastąpić ten drugi w wielu pomiarach, jednakże nikt nie każe wybierać elektronikom, z którego urządzenia pomiarowego korzystają. Każde ma swoje specyficzne zadanie, w którym sprawdza się najlepiej. Tak samo jest z językami programowania czy innymi narzędziami do obliczeń czy symulacji. Rozumiejąc, co do czego najlepiej się nadaje i stosując odpowiednie narzędzia, jesteśmy w stanie najefektywniej wykorzystywać zarówno dane środowisko, jak i nasz czas poświęcony na naukę danego języka programowania i implementację danego zadania w wybranym przez nas środowisku.
W poniższej tabeli zebrano podstawowe cechy poszczególnych środowisk, które mogą pomóc w decyzji, którego nauka będzie dla nas najkorzystniejsza.
A Wy? czy używaliście któregoś z tych języków? A może obu i jesteście w stanie je porównać? Zachęcam do wypowiadania się na ich temat i komentowania - jaki język programowania jest przydatniejszy dla współczesnego elektronika?
Źródło: https://www.eeweb.com/profile/asemelshimi/articles/python-vs-matlab-for-electrical-engineers
Temat ten oczywiście jest punktem wyjścia do czasami bardzo gorączkowej dyskusji. Nie jest to pierwszy taki punkt zapalny wśród elektroników, wystarczy wskazać na spory dotyczące kolejności bajtów (little endian i big endian) w zapisie cyfrowym w latach ’80 i ’90 XX wieku. Obecnie tak gorące dyskusje, w wielu branżach, wywołuje temat porównywania ze sobą języków programowania. Dlatego też, w poniższym artykule, skupimy się na porównaniu dwóch języków programowania, popularnych wśród elektroników – Matlaba i Pythona. Który z nich można uznać za przydatniejszy w praktyce inżynierów tej branży?
Zasadniczo odpowiedź jest prosta – to zależy. Oba te narzędzia są bardzo potężne, co czyni wybór pomiędzy nimi szczególnie trudnym. Oba posiadają dodatkowo doskonałe wsparcie i precyzyjną i kompletną dokumentację. Finalnie – oba języki są porównywalnie popularne. Pozwala na to na dosyć sprawiedliwe ich porównanie.
Pierwsza ogromna różnica, jaka rzuca się w oczy przy porównywaniu tych dwóch ekosystemów, to modele biznesowe. Matlab jest drogi. Jest do tego stopnia drogi, że większość firm, która z niego korzysta, kupuje tylko jedną lub kilka licencji i dba, by aplikacja ta była możliwie w pełni wykorzystana i obłożona - to często prowadzi do frustracji inżynierów, którzy nie mogą z niego skorzystać „od ręki”, gdy tylko tego potrzebują. Prowadzi to czasami do sytuacji, w której, aby uruchomić jakiś skrypt napisany w Matlabie, trzeba ustawić się w odpowiedniej kolejce. Z drugiej strony, mimo wszystko, przyznać trzeba, że dostajemy dokładnie to za co płacimy – zaawansowane środowisko z mnóstwem, czasami dodatkowo płatnych, zestawów narzędzi (toolboxów) dedykowanych do rozmaitych zastosowań.
Z drugiej strony Python, który jest w pełni otwarty. Interpretery tego języka są darmowe i stoi za nimi ogromne środowisko programistów. Nieważne, czy nam się to podoba czy nie, to otwarte oprogramowanie świeci obecnie największe triumfy i nic nie wskazuje, aby trend ten miał ulec zmianie. Wiele sektorów bardzo dużo czasu i pracy inwestuje w rozwój Pythona jak i napisanych w tym języku narzędzi. Szerokie zastosowania i ogromna ilość pól eksploatacji tego języka sprawia, że z pewnością będzie on wykorzystywany jeszcze przez wiele lat.
Python potrafi o wiele więcej niż inne podobne języki programowania, ponieważ wiele osób pracuje nad tworzeniem dla niego bibliotek, czy portowaniem tego języka na inne platformy, nawet takie jak niewielkie mikrokontrolery z bardzo ograniczonymi zasobami. Dodatkowo, za językiem tym stoi ogromne wsparcie środowiska open-source, które dokłada wielu starań, by system ten rozwijał się cały czas.
Jedną z wad Pythona, o której trzeba wspomnieć, są problemy z kompatybilnością pomiędzy dwoma, niezależnie rozwijanymi wersjami – 2.7 i 3.x. O ile nie jest to problem dla niewielkich skryptów, które pisane są z zamiarem jednorazowego wykorzystania lub też pozostawienia w niezmienionej formie, to jest to problematyczne dla utrzymywania większego ekosystemu skryptów czy oprogramowania większej infrastruktury.
Żadnemu inżynierowi nie zaszkodzi, jeżeli nauczy się korzystać z tak uniwersalnego narzędzia, jakim jest Python. Ten popularny język programowania może po pierwsze zastąpić wiele, jeśli nie wszystkie, narzędzia do modelowania czy skryptowania, a po drugie jego nauka tylko otwiera horyzont do dalszego samorozwoju. Python posiada wiele ciekawych narzędzi do analizy danych (np. biblioteka Pandas) czy uczenia maszynowego, które wykorzystać można nie tylko w elektronice.
Innymi słowy – ucząc się Pythona, łatwo jest pójść krok dalej i rozpocząć naukę wykorzystania tego języka w innych aplikacjach. Jeśli nauczysz się Pythona, to będziesz w stanie rozmawiać jednym językiem z szerokim gronem specjalistów, od deweloperów aplikacji webowych do analityków finansowych.
Oczywiście, pewnie moglibyśmy wychwalać Pythona tak dalej, jednakże wróćmy do porównania tego języka z drugim ‘gigantem’, zwłaszcza wśród inżynierów-elektroników – Matlabem. Z pewnością jest to najpopularniejsze środowisko wśród elektroników. Jak wskazuje firma MathWorks, twórcy Matlaba, używa go około 5000 uczelni technicznych na całym świecie. Wykorzystywany jest on na zajęciach, ćwiczeniach etc. Dzięki temu, niemalże każdy elektronik, kończący uczelnię wyższą zna przynajmniej podstawy Matlaba. Jest to jeden z powodów, dla których środowisko to jest tak popularne i szeroko stosowane w całym sektorze – ciężko migruje się ze znanego sobie narzędzia do czegoś nowego, nawet jeżeli miałoby być finalnie lepsze.
Wiele osób nie zdaje sobie nawet sprawy, jak bardzo przyzwyczajone są do Matlaba. Dla pracujących w tym środowisku elektroników naturalne jest, że macierz zaczyna się od indeksu równego jeden, gdzie większość, obecnie programistów, zaczyna zliczać indeksy od zera. Taka sytuacja, oprócz częstych pomyłek, prowadzi także czasami do śmiesznych sytuacji. Jakiś czas temu, płytka z interfejsami radiowymi od Silicon Labs, wyposażona została w dwa interfejsy antenowe – RF1 i RF2. Ogromne było zdziwienie inżynierów projektujących ten moduł, gdy programiści dopytywali ich, gdzie jest interfejs RF0, ponieważ było dla nich oczywiste, że taki musi w module być.
O ile Matlab jest drogi, to jest też bardzo potężny. Dodatkowo, dzięki temu, że elektronicy uczą się Matlaba już na studiach (co obecnie się zmienia, ale Pythona wprowadzono na studia elektroniczne dopiero niedawno) to doskonale idzie im wykorzystywanie do w szeregu zawodowych aplikacji.
Na korzyść Pythona działa teraz to, że jest darmowy i – nie bójmy się tego przyznać – modny. Dzięki temu jest to często pierwszy język programowania, jaki ludzie poznają. Kursy Pythona odbywają się na studiach najczęściej zanim jeszcze student trafi na zajęcia z Matlaba, co sprawia, że szala popularności przechyla się powoli w kierunku języka z wężem w logo.
Porównanie detali
Kiedy już znamy tło i ogólne ‘uwarunkowania’ obu języków czas zagłębić się w bardziej techniczne detale obu środowisk. Aby porównanie to było fair, rozważmy oba narzędzia w kontekście realnej ich aplikacji w praktyce inżyniera elektronika. Zacznijmy jednak od pewnej dygresji.
Każdy z nas czasem odniósł wrażenie, że ludzie przyjmują pewne założenia na temat tego, co umiemy i czym się zajmujemy jako elektronicy. Na przykład programiści – pewnie wielokrotnie musieli tłumaczyć swoim rodzicom, że nie potrafią zainstalować nowej drukarki. Tak samo, będąc elektronikiem, często trzeba tłumaczyć, że nie umiemy zainstalować nowego termostatu do centralnego ogrzewania, tym bardziej naprawić starego.
W tym przypadku jest analogicznie. To, że jesteśmy inżynierami, nie oznacza automatycznie, że potrafimy programować, a fakt, że nawet potrafimy stworzyć jakiś skrypt, nie oznacza od razu, ze jesteśmy programistami w szerszej definicji tego słowa. Jak powiedział kiedyś dyrektor ds. technologii w Silicon Labs, Alessandro Piovaccari: „U podstaw większości projektów inżynierskich jest walka z fizycznym światem. Na przykład projektując nowy transceiver radiowy, musimy posiadać elastyczną wiedzę z zakresu wielu dziedzin, od podstaw fizycznych działania systemu radiowego, poprzez niuanse procesu produkcji, rozkład ścieżek w krzemie, elektryczny projekt tranzystorów w nim i warstwę logiczną”. Programowanie samo w sobie jest jedynie narzędziem, które inżynierowie elektronicy wykorzystują przy okazji wykorzystywania urządzeń pomiarowych czy rozmaitych kalkulatorów.
Pierwsze wykorzystanie programowania, jakie przychodzi na myśl, to pomoc w realizacji repetytywnych zadań obliczeniowych, jakich pełno jest podczas optymalizacji układu. Na przykład znalezienie elementów odpowiedniej wartości w filtrze n-tego rzędu. Niektórzy elektronicy do policzenia tego wykorzystają po prostu arkusz w Excelu, gdzie wyliczą sobie tabele ze wszystkimi możliwymi wartościami elementu i wybierze z niej ten który pasuje (np. do szeregu). Tą samą operację i te same obliczenia przeprowadzić można także w Matlabie czy Pythonie, uzyskując identyczny wynik. Różnica jest tylko taka, że korzystając z Matlaba czy Pythona łatwo jest przerobić ten algorytm na ogólnego zastosowania, który będziemy mogli wykorzystywać wielokrotnie, do obliczania tego rodzaju elementów. Co więcej, możemy go następnie rozbudować o np. możliwość wczytywania plików z danymi wejściowymi czy też uwzględnianie takich efektów, jak wpływ połączeń czy jakości i typu lutowia pomiędzy elementami.
Innym zastosowaniem programowania jest modelowanie systemów. Jest to obszar, w którym kompetencje Pythona i Matlaba mocno na siebie nachodzą i możemy powiedzieć, że zadania związane z modelowaniem mogą być równie łatwo realizowane w obu językach, szczególnie dzięki bibliotekom do Pythona, takim jak numpy, scipy czy matplotlib. Jednakże Matlab ma tutaj jedną istotną przewagę nad Pythonem – są do niego dostępne mocno dedykowane i dopasowane do konkretnych zadań toolboxy, jak na przykład DSM Toolbox stworzono przez Richarda Schreiera. Toolbox ten daje zestaw narzędzi dedykowanych tylko i wyłącznie do modelowania przetworników analogowo-cyfrowych typu Delta-Sigma. Python nie posiada tak wąsko dedykowanych i wyspecjalizowanych bibliotek.
Dodatkowo Matlab dostarczany jest wraz z Simulinkiem. To wartościowe narzędzie, o którym jeszcze tutaj nie pisaliśmy, nie ma w zasadzie żadnej konkurencji. Jest to pakiet pozwalający na przeprowadzanie różnego rodzaju symulacji z wykorzystaniem prostego graficznego systemu ich projektowania. Python ani żadne inne środowisko nie oferuje podobnych nawet możliwości.
Inżynierskie umysły są zwinne i inteligentne, ale też często jesteśmy leniwi, co nie zawsze jest złe. Jak to ujął Scott Schwarts (kolega autora artykułu źródłowego przyp.red.): „Kocham moją pracę. Jednakże, między nami mówiąc, nie chcę spędzać każdej chwili życia ją wykonując”.
Scott mówiąc to miał na myśli automatyzację testów i pomiarów. Jest to dziedzina, w której zdolności skryptowe Pythona są bardzo przydatne i Matlab nie może w tym zakresie konkurować z Pythonem. Rzeczywistymi konkurentami Pythona, jeśli chodzi o skryty testowe i pomiarowe mogą być C# i Perl, ale technologie te już straciły na popularności na rzecz Pythona – jest on szeroko wykorzystywany do pisania skryptów dla systemów testów automatycznych niemalże w każdej branży. Jedyną realną konkurencją jest tutaj ekosystem LabVIEW, ale ten z kolei jest również płatny i nie należy do najtańszych (przyp.red.).
Układ pomiarowy do charakteryzacji układu w scalonym chipie (SoC) obejmuje wiele urządzeń (analizatory widma, mierniki mocy, zasilacze, oscyloskopy itp.). Dodatkowo, samych testowanych urządzeń (DUT) może być kilka, na rożnych płytkach rozwojowych etc.
Na studiach w ramach zajęć, wszystkie te pomiary musiały być prowadzone ręcznie i większość z nas pamięta, jak czasochłonne to jest. Nic nie przebije przyjemności spędzenia kilku godzin na pisaniu skryptu (w Python lub C#), który kontroluje i zbiera dane ze wszystkich urządzeń na stole warsztatowym. Po napisaniu skryptu możemy wygodnie usiąść i oglądać, jak wszystkie układy współpracują ze sobą, realizując zaprogramowane pomiary. Skanowanie różnych wyjść czy przemiatanie parametrami stają się wtedy tylko kwestią kilku dodatkowych linii kodu.
Analogicznym, jeszcze popularniejszym zastosowaniem Pythona jest testowanie oprogramowania. Jest to niezwykle praktyczne, gdy mamy np. nową implementację jakiegoś kodu na mikrokontrolerze. Może on być napisany w C lub Assemblerze. Bardzo dobrze jest kod taki, zanim trafi do dalszych testów, sprawdzić w systemie prostych automatycznych testów jednostkowych etc. Oczywiście testy te realizowane są po implementacji kodu na mikrokontrolerze.
Do testowanego układu, z załadowanym kodem programu podłączane są wszystkie wymagane analizatory etc. Obsługujący to skrypt, np. w Pythonie, realizuje wszystkie funkcje kontrolno-pomiarowe i odpowiedzialny jest za przetwarzanie danych i ich wizualizację. W tym samym języku stworzyć możemy kod programu obsługujący maszyny i urządzenia pomiarowe, przetwarzający zebrane dane i wizualizujący je w sposób strawny dla człowieka. Dodatkowo Python może nawet wykorzystywać i uruchamiać skrypty napisane w innych językach i interpretować ich wyniki.
Dodatkowym ułatwieniem, jakie daje stosowanie Pythona, w zakresie testowania oprogramowania, jest fakt, że relatywnie łatwo zintegrować jest Pythonowe skrypty z systemami kontroli wersji, testów automatycznych czy ciągłej integracji. Tego rodzaju narzędzia są coraz częściej stosowane w firmach projektujących urządzenia elektroniczne.
Podsumowanie
Python, Matlab, Excel… i wiele innych. Wszystkie te narzędzia mogą koegzystować w elektronicznym warsztacie i nie ma w tym nic negatywnego. To tak jak oscyloskop i multimetr. Ten pierwszy jest w stanie zastąpić ten drugi w wielu pomiarach, jednakże nikt nie każe wybierać elektronikom, z którego urządzenia pomiarowego korzystają. Każde ma swoje specyficzne zadanie, w którym sprawdza się najlepiej. Tak samo jest z językami programowania czy innymi narzędziami do obliczeń czy symulacji. Rozumiejąc, co do czego najlepiej się nadaje i stosując odpowiednie narzędzia, jesteśmy w stanie najefektywniej wykorzystywać zarówno dane środowisko, jak i nasz czas poświęcony na naukę danego języka programowania i implementację danego zadania w wybranym przez nas środowisku.
W poniższej tabeli zebrano podstawowe cechy poszczególnych środowisk, które mogą pomóc w decyzji, którego nauka będzie dla nas najkorzystniejsza.
| Zagadnienie | Matlab | Python | Modelowanie systemów | Wspaniałe | Jest w stanie zastąpić Matlaba | Obróbka sygnałów | Duża liczba dostępnych toolboxów | Jest w stanie zastąpić Matlaba | Wizualizacja danych | Excel jest szybszy | Excel jest szybszy | Debuggowanie | Rzadko stosowany | Wspaniałe | Testowanie oprogramowania | Rzadko stosowany | Wspaniałe | Automatyzacja testów sprzętowych | Rzadko stosowany | Wspaniałe | Uczenie maszynowe etc | Nie nadaje się | Łatwe do realizacji |
A Wy? czy używaliście któregoś z tych języków? A może obu i jesteście w stanie je porównać? Zachęcam do wypowiadania się na ich temat i komentowania - jaki język programowania jest przydatniejszy dla współczesnego elektronika?
Źródło: https://www.eeweb.com/profile/asemelshimi/articles/python-vs-matlab-for-electrical-engineers
Fajne? Ranking DIY
