Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Python vs. Matlab - co jest bardziej przydatne dla inżyniera elektronika?

ghost666 27 Maj 2019 14:21 9099 30
  • 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?

    Python vs. Matlab - co jest bardziej przydatne dla inżyniera elektronika?


    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.

    Python vs. Matlab - co jest bardziej przydatne dla inżyniera elektronika?
    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.

    ZagadnienieMatlabPython
    Modelowanie systemówWspaniałeJest w stanie zastąpić Matlaba
    Obróbka sygnałówDuża liczba dostępnych toolboxówJest w stanie zastąpić Matlaba
    Wizualizacja danychExcel jest szybszyExcel jest szybszy
    DebuggowanieRzadko stosowanyWspaniałe
    Testowanie oprogramowaniaRzadko stosowanyWspaniałe
    Automatyzacja testów sprzętowychRzadko stosowanyWspaniałe
    Uczenie maszynowe etcNie 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
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Computer Controls
  • #2
    igon
    Poziom 11  
    Matlab spokojnie daje radę w uczeniu maszynowym - ma do tego dedykowane toolboxy. Pozwala też wizualizować "w locie" sieć neuronową czy też przebieg decyzyjności fuzzy logic.
  • #3
    pawelr98
    Poziom 36  
    Na uczelni na okrągło Matlab.

    Ale to co jest mówione o jego cenie- prawda.
    Uczelnia nie wykupiła odpowiedniej ilości licencji i czasem w środku ktoś traci dostęp.
    Nie bez powodu praktycznie cały rok leci na piratach.
    Bez tego zaliczenie sporej ilości przedmiotów graniczy z cudem.


    Matlab generalnie jest dosyć łatwy w obsłudze i nie trzeba aż tak dużo pisać.
    Sporo wbudowanych funkcji i dochodzą toolboxy.
    Simulink może robić symulacje obwodów elektrycznych, można też na spokojnie realizować
    rozbudowane równania matematyczne opisujące działanie układów.

    Robiłem modele neuronowe w matlabie oraz regulatory rozmyte.
    Działały przyzwoicie a sam proces ich tworzenia był łopatologiczny.

    Do tego dochodzi możliwość eksportowania do języka C/C++.

    Z pythonem to miałem znacznie mniej do czynienia.
    Owszem są dedykowane biblioteki ale trzeba więcej posiedzieć aby to wszystko poskładać.
    Tam głównie pisałem proste modele matematyczne z wizualizacją w postaci animacji.

    Są natomiast ludzie co realizują algorytmy sztucznej inteligencji i inne zaawansowane projekty. Jako ciekawy przykład można podać autopilota kierującego samochodem w grze GTA V.
    Żadnego sprzężenia przez kod. Informacje są pobierane wprost z obrazu (wykrywanie linii, drogi itd.).
  • Computer Controls
  • #4
    vernado
    Poziom 3  
    "Exel jest szybszy"... polemizowałbym... Testowałem na 50MB danych. Excel to czytał 30 minut, Python około 5 minut. Dodając 5 minut na napisanie kodu i tak wychodzi lepiej.
    Ponadto znowu porównujemy coś darmowego do płatnego. A Libre Calc nie jest w stanie wczytać kilku milionów lini z wartościami, więc Excel tu nie ma darmowej alternatywy.
  • #5
    -XantiO-
    Poziom 21  
    Korzystam zarówno Matlaba jak i Pythona w pracy. Nie mogę powiedzieć aby jedno mogło zastąpić drugie lub nawet konkurować z drugim. Python w moim wypadku to solidny zestaw narzędzi do budowy test boxów i system testów a Matlab to z kolei całe środowisko wspierające mnie w walce z FPGA i tworzeniem algorytmów procesowych.


    Ostatnio w Pythonie robiłem wizualizację wyników z około 280MB plików txt i jakoś nie widiałbym robić to w exelu :)
  • #6
    Użytkownik usunął konto
    Poziom 1  
  • #7
    Marek_Skalski
    Poziom 35  
    @stmx Dużo masz jeszcze takich złotych myśli?
    Może zademonstrujesz jak uruchomić Androida 8.0 na AtTiny45. No chociaż Xmega. Proszę, przecież to tylko kwestia umiejętności właściwego wykorzystania narzędzia.

    Chińczycy mówią: Nie spadnie ci chleb z nieba, choćbyś nie spał całą noc. Upór nie ma sensu, gdy narzędzie jest niewłaściwe. W sekcji Programowanie jest cała masa tematów, gdzie ktoś próbował zrobić z Excela bazę danych. Bez sukcesu.
    Wizualizacja danych w Excelu przebija Matlaba? Fajny żarcik. Chyba chodzi o kolory, bo na pewno nie o możliwości agregacji, obróbki i prezentacji.
  • #8
    Steryd3
    Poziom 32  
    Bardzo Ciekawy artykuł... chyba dawno nie trafiłem na elektrodzie na coś równie interesującego. Gratulacje dla autora i tłumacza:)

    Z oprogramowaniem Matlab'a miałem kontakt (tak jak to ujęto w artykule) już na studiach(było to już ponad 10 lat temu). Wiele laborek było robionych w oparciu o niego, korzystałem też z jego pomocy przy magisterce. Muszę przyznać...narzędzie jest przepotężne i ciężko wymyślić większą kolubrynę która zawierała by w sobie tak wiele możliwości skomplikowanych obliczeń i symulacji dostępnych niemal od ręki. Drugim środowiskiem wykorzystywanym na niektórych laboratoriach było LabView. Właściwie w wielu przypadkach ćwiczeń laboratoryjnych które wykonywaliśmy dało by się zastąpić jedno drugim.

    Wracając do Matlab'a... temat wrócił mi się w pracy. Mieliśmy kupić oprogramowanie bo miało ono być elementem jakiegoś zlecenia ...w związku z tym byliśmy z kolegami nawet na dość ciekawych dwudniowych warsztatach organizowanych przez chyba jedynego dystrybutora tego oprogramowania na Polskę. Niestety projekt nie ruszył a wydawanie ogromnych pieniędzy na coś co miało by służyć do wyznaczania współczynników wielomianu aproksymującego raz na rok było pomysłem poronionym. Oczywiście przedstawiciele firmy dzwonili z zapytaniem do mnie "czy już się zdecydowaliśmy" chyba ze 6 razy ale...

    Kolejnym problemem jest podejście firmy do uaktualnień. Z tego co pamiętam Matlab jest wydawany dwa razy do roku w wersji "a" i "b". Nie wiem czy był jakiś okres darmowych update'ów w każdym razie później już były płatne...i to nie mało. Polityka firmy przewidywała(może już się zmieniło), że by uaktualnić swoje środowisko do obecnie aktualnego należało wykupić wszystkie uaktualnienia po drodze. Koszt takich operacji był na tyle wysoki, że już po kilku latach bardziej opłacalnym było zakupienie zupełnie nowej licencji.

    Reasumując Matlab to wspaniałe środowisko -niestety niewiele firm może sobie pozwolić na nie legalnie zwłaszcza gdy w grę wchodzi wiele stanowisk. Jest też chyba do wykupienia jakaś opcja "serwerowa" ale to tylko częściowo rozwiązuje problem.

    Tym bardziej zainteresował mnie artykuł prezentujący porównanie Matlaba do Python'a. Będę musiał w wolnej chwili zgłębić temat tego języka skryptowego.
  • #9
    OldSkull
    Poziom 27  
    vernado napisał:
    "Exel jest szybszy"... polemizowałbym... Testowałem na 50MB danych. Excel to czytał 30 minut, Python około 5 minut. Dodając 5 minut na napisanie kodu i tak wychodzi lepiej.
    Ponadto znowu porównujemy coś darmowego do płatnego. A Libre Calc nie jest w stanie wczytać kilku milionów lini z wartościami, więc Excel tu nie ma darmowej alternatywy.

    Tylko, że Excel ma 90% firm, bo i tak jest potrzebny do jeszcze innych zadań. No i generalnie do czegoś innego służy, ale jeśli wiem, że coś zrobię w Excelu w 5-10 minut to nawet nie myślę o użyciu czegoś innego, bo czasu nie zyskam a stracić mogę sporo.
    Natomiast faktycznie jest problem z dużymi plikami. Ostatnio widziałem jak za pomocą Pythona można zrobić analizę danych z pliku CSV mającego kilkaset MB. Excellem bez szans.
    Matlab jako podstawka jest obecnie pomyłką (bo podobne możliwości ma SciLab a nie kosztuje fortuny). Matlab ma sens tylko jeśli konkretnie pomoże nam jakiś toolbox (np. Simulink). Tylko, że dla elektronika nie jestem pewien w czym niby? Symulacja obwodów to albo niesamowicie dobry LTSpice, albo jakieś inne (choć płatne) narzędzie.
  • #10
    Steryd3
    Poziom 32  
    OldSkull napisał:
    Tylko, że dla elektronika nie jestem pewien w czym niby?

    Z tego co mi się obiło o uszy to Matlab ostatnimi czasy służy do generowania kodu w C/C++ i później implementowania tego do systemów Embedded. Jest to często wielkie ułatwienie i spora droga na skróty dla wielu ciężkich tematów.
    Co do Excela ...nie jest to idealne narzędzie ale łatwo dostępne i proste w użyciu. Rysowanie wykresów w Matlabie (pomijając cenę tego oprogramowania) jednak nie jest takie intuicyjne.
  • #11
    tzok
    Moderator Samochody
    Dlaczego w pozycji "uczenie maszynowe" dla Matlaba jest "Nie nadaje się"? Oczywiście, że się nadaje i jest do tego nawet dedykowany toolbox "Machine Learning". Nie rozumiem natomiast co "wspaniałego" jest w debugowaniu w Pythonie - to jeden z gorszych debugerów z jakim się spotkałem. Poza tym Python jest koszmarnie powolny (zwłaszcza w trybie debugowania), nawet w porównaniu z Matlabem.
  • #12
    drobok
    Poziom 29  
    Co jest przydatne dla inżyniera elektronika ? C++ jeśli chcesz mieć szybkie, albo python jeśli chcesz mieć szybko. Matlab to kobyła do wszystkiego i do niczego (i jeszcze męcz te macierze chyba że chcesz mieć pętlę z pojedynczymi forami pod spodem (chyba że już to poprawili), excel dławi się danymi.
  • #13
    CosteC
    Poziom 27  
    Artykuł podejrzanie pro-pythonowy. Jakoś nie ma wspominki o GNU OCTAVE które oczywiście nie zastąpi Matlaba w całości, zwłaszcza toolboxów, ale do zastosowań domowych daje radę spokojnie. Jeśli chodzi o toolboxy to Python w wielu dziedzinach to żal i smutek. Np możliwości programowania FPGA bezpośrednio (no chyba że ktoś mnie poprawi że takowe już istnieją)

    Nie przeczę, dla programisty Python musi być prostszy, ale specjalizowane narzędzie takie jak Matlab ma zupełnie inną moc niż narzędzie generalnego przeznaczenia takie jak Python.

    A porównanie do EXCELa jest w ogóle bez sensu. Arkusz kalkulacyjny to nie język programowania ani nie baza danych, chociaż można od biedy go tak używać. Z podkreśleniem "od biedy".
    Spory odnośnie wizualizacji danych są w ogóle autorstwa kogoś kto nigdy wykresu 3D nie potrzebował zrobić profesjonalnie.
  • #14
    also
    Poziom 15  
    CosteC napisał:
    Artykuł podejrzanie pro-pythonowy.
    Mi się wydawało, że jest pro-Matlabowy :). Ja korzystam amatorsko z Pythona. No i dalej z ulubionych języków programowania c++, java klepanych w Eclipse
    CosteC napisał:
    specjalizowane narzędzie takie jak Matlab ma zupełnie inną moc
    Matlab to korporacyjny, przerośnięty zestaw krów z niewielką społecznością. Żeby go ogarnąć to trzeba by kilka miesięcy poświęcić na poczytaniu dokumentacji, tutków. No chyba, że ja jestem jakiś głupi i mi było ciężko się przestawić. DODATKOWO PŁATNY ... Co oznacza, że uzaleźniasz się względem licencji, regulaminu, kosztów zakupu itd. Żaden świadomy programista, amator programista, przysłowiowy kowalski na to nie pójdzie :D Przykładem jest Huawei ,któremu odcięto dostęp do hamerykańskiej technologii. :D Gdyby ta firma korzystała z Matlaby to byłaby udupiona. :D
  • #15
    CosteC
    Poziom 27  
    Jeśli umiesz napisać sobie toolbox do analizy dynamiki płynów, automatycznego generowania kodu w VHDLu, obliczeń równoległych czy uczenia maszynowego to szacunek. W mojej karierze jeszcze nie znalazłem zastosowania w którym opłacało by się pisać toolbox samemu. Koszty opracowania i czas zawsze przegrają z gotowym narzędziem.
  • #16
    also
    Poziom 15  
    Niektórzy do nawet najprostszych jednolinijkowych funkcji typu określ czy liczba jest nieujemna używają bibliotek. Lekko przesadzając: za 20 lat nikt nie będzie umiał programować tylko zapytać czy to jabłko? Warto spróbować zaimplementować coś samemu, ale nie do produkcyjnego użytku tylko w ramach nauki, aby lepiej zrozumieć co się dzieje pod maską. Dawniej programowanie było sztuką. Dzisiaj to 80% kopiuj i wklej bo liczy się czas ...
  • #17
    CosteC
    Poziom 27  
    Polemizowałbym. Na studiach jest czas i miejsce na dłubanie i pisanie od podstaw. Potem trzeba z reguły rozwiązać problem a nie popisywać się zdolnością kodowania podstaw.

    Może kiedyś programowanie było sztuką dla wybranych, teraz jest rzemiosłem dla mas. Nie widzę pożytku z programisty który przepisuje działającą bibliotekę. Po to się je kupuje żeby oszczędzić czas i pieniądze. Na rozwiązywanie prawdziwych problemów.
  • #18
    tzok
    Moderator Samochody
    CosteC napisał:
    Nie widzę pożytku z programisty który przepisuje działającą bibliotekę.
    ...do czasu aż będzie trzeba stworzyć coś nowego, oprogramować coś do czego jeszcze nie ma biblioteki. Nawet jak się używa bibliotek, warto to robić świadomie - tzn. wiedzieć jak działają i potrafić ocenić ich jakość. Dla Programisty to żaden problem, dla kodera - problem nie do przejścia.
  • #19
    CosteC
    Poziom 27  
    Wiesz tylko, że nie ma bibliotek idealnych i każde narzędzie ma bugi, które zmuszą do grzebania. I albo umiesz albo nie. Znam wielu bardzo inteligentnych programistów którzy wpadli w pułapkę "piszę dobry, ładny kod" i piszą i poprawiają i plują na kolegów którzy piszą brzydszy kod. Kłopot w tym że piękny kod niczego nigdy nie rozwiązał. Problem rozwiązany kodem z bibliotek posklejanych brzydko jest wartościowy: rozwiązuje problem. Ktoś za to płaci. Piękny, wydajny, zgodny ze standardem kod który nie działa albo nie jest na czas jest bezwartościowy. Jest sztuką dla sztuki, niechcianym wytworem kogoś kto nie rozumie o co chodzi.

    Jasne że warto pisać ładnie, zrozumiale i tak dalej, ale to nie może przesłonić celu jakim jest pisanie kodu: rozwiązywanie realnych problemów.
  • #20
    tzok
    Moderator Samochody
    Jakość tego rozwiązania też jest istotna. Czasem priorytetem jest czas opracowania, czasem wydajność kodu, a czasem niezawodność. Inaczej pisze się oprogramowanie do urządzenia, które raz włączone będzie działać przez kilkanaście lat bez restartu, a inaczej do takiego, które które włącza się raz na tydzień na 15 minut. Zaletą Matlaba jest niezawodność, zaleta Pythona jest popularność (której za bardzo nie rozumiem). Python to dość stary język, który przez lata pozostawał niszowym, aż nagle jego popularność poszybowała w górę. Wiążę to z popularnością RPi. Ale nie jest to ani język na który łatwo przejść z C-pochodnych, ani specjalnie wydajny, ani łatwy w debugowaniu. Nie wiem czemu twórca Rasberry Pi (skądinąd legendarny programista, który swoje największe dzieło - "Elite" stworzył w całości w assemblerze) postawił na Pythona.
  • #21
    CosteC
    Poziom 27  
    Napiszę jeszcze raz: Dla mnie priorytetem będzie działające rozwiązanie na czas. Kwestią ważną, ale drugorzędną są czynniki typu "ładność kodu". Jeśli ktoś ma inne priorytety takie jak ewangelizacja konkretnego sposobu pisania konstruktorów to proszę bardzo. Ja dziękuję.

    Python ma swoje zalety, oczywiście, ale nie wyobrażam sobie aby mógł zastąpić nawet połowę toolboxów Matlaba albo innych zamkniętych narzędzi. Są zamienniki tu i ówdzie, jasne. Nie oceniam ich jakości bo nie używałem. Zapewne na poziomie małej firmy albo amatora Python jest jednym z najprostszych rozwiązań poza Octave (o którym jakoś wszyscy tu zapomnieli).

    Bezpłatność Pythona natomiast jest kłamstwem w zastosowaniach profesjonalnych. Jeśli napisanie skryptu w Pythonie zajmie 3 miesiące więcej niż w Mathlabie to będzie to kosztować: 3x pensja programisty + podatki + wynajem biura + ubezpieczenia... A to bardzo szybko daje 50-100k PLN. I nagle Python jest drogi. Bardzo drogi.
  • #22
    DJ_KLIMA
    Poziom 13  
    Do korpo Matchlab, do sypialni MontyPython, na wyścigi C ;)
  • #23
    also
    Poziom 15  
    CosteC napisał:
    Bezpłatność Pythona natomiast jest kłamstwem w zastosowaniach profesjonalnych. Jeśli napisanie skryptu w Pythonie zajmie 3 miesiące więcej niż w Mathlabie to będzie to kosztować: 3x pensja programisty + podatki + wynajem biura + ubezpieczenia... A to bardzo szybko daje 50-100k PLN. I nagle Python jest drogi. Bardzo drogi.
    Pod warunkiem, że programista miał wcześniej doświadczenie w Matlabie. Jak nie to strata kilku miesięcy na zapoznanie się z narzędziami :) No i jest jeszcze to o czym pisałem wcześniej (licencja) i PŁATNOŚĆ. Matlab najpierw cię przyzwyczai ( jak diler do zioła) ,a później zabawkę zabierze jak mu za działkę więcej nie zapłacisz :D
  • #24
    Użytkownik usunął konto
    Poziom 1  
  • #25
    tzok
    Moderator Samochody
    Zarówno Python jak i Matlab są używane w środowiskach naukowych, choćby w działce uczenia maszynowego. Zapewne stąd porównanie, choć bardziej celowe było porównywanie Matlaba, Octave oraz R, bo one powstały w tym samym celu. Zaś Python, to tylko niezbyt udany język programowania, pomyślany raczej dla początkujących. Niemniej ostatnimi czasy zyskał sporą popularność w środowisku naukowym, głównie ze względu na SciPy Toolkits. Umożliwia mu to pod wieloma względami zastępowanie Matlaba, tyle że chodzi nie o samego Pythona, a to toolkit, który równie dobrze mógłby powstać dla C# albo Javy.
  • #26
    Użytkownik usunął konto
    Poziom 1  
  • #27
    CosteC
    Poziom 27  
    stmx napisał:
    CosteC napisał:
    Bezpłatność Pythona natomiast jest kłamstwem w zastosowaniach profesjonalnych
    Kłamstwem? Nie wiem czy wiesz co oznacza to słowo. Tu masz link:https://pl.wikipedia.org/wiki/K%C5%82amstwo .

    Czy ktoś Ci powiedział, że jak zastosujesz Python to programiści będą pracowali za darmo? Czy ktoś Ci powiedział że w Python sam magicznie napisze programy? Oczywiście, że nie. Nie rozumiem zresztą tego tematu MatLab i Python to zupełnie inne rzeczy.

    To takie pytanie: co jest bardziej przydatne: młotek czy piła?


    Adwokacie Pythona, przeczytaj całą wypowiedz nim gniewnie odpowiesz, bo narażasz się na ośmieszenie. Napisałem jeśli zajmie więcej czasu. . A to jest uzasadnione bo Matlab jest specjalizowanym narzędziem a Python językiem generalnego przeznaczenia. Więc poziom wyspecjalizowania sugeruje wyższą wydajność. Jeśli użytkownik nie zna narzędzia i tak będzie to droga przez mękę. Po to też na studiach się Matlaba uczy - aby zachęcić do zakupów. Ostatnio uczy się też Pythona, więc studenci mają wybór i dużo mniejszą wprawę w czymkolwiek.
  • #28
    Użytkownik usunął konto
    Poziom 1  
  • #30
    -XantiO-
    Poziom 21  
    1. Matlab wcale nie jest taki drogi. Dodatkowo ma możliwość zakupu tylko potrzebnych nam modułów
    2. Ilość toolboxów w Matlabie jest tak ogoromna, że "uzależnia"
    3. Python jest przyjaźniejszy i szybszy jeśli mamy niewielki projekt do zrobienia typu z x plików wczytać y danych i przekonwertować to na odpowiednie z danych wyjściowych a przy okazji zrobić z tego jakiś wizualny podgląd
    4. Matlab i Python są to dwa dość podobne rozwiązania ale z całkiem innym targetem. Python to bardziej coś dla leniwych programistów potrzebujących prostego narzędzia do pracy z danymi. Matlab to jednak bardziej naukowe rozwiązanie posiadające naprawdę duże zasoby.

    Sam korzystam z obu rozwiązań bo np. wsparcie HDL w Matlabie to jest coś naprawdę fajnego a jak potrzebuję stworzyć prostą aplikację z GUI do konkretnego zadania to sięgam po Pythona z odpowiednimi modułami.
    Jeśli chodzi o naukę obu rozwiązań to sam Python jest do opanowania w dzień około, do tego dochodzi nauka modułów co w zależności od jego objętości zajmuje od godziny to kilku dni max. Matlaba aby opanować to już potrzeba więcej czasu i tu bardzo dużo pomagają uczelnie wprowadzające w to środowisko. Korzystanie z toolboxów to dodatkowo czas potrzebny na naukę gdzie będzie to już nie godzina dwie a czasami tydzień-dwa.

    Ogólnie zachęcam każdego do pobrania wersji trial Matlaba i spróbowania swoich sił w tym środowisku.