Skocz do zawartości

Wybór i nauka jezyka pod IoT


Pomocna odpowiedź

Witajcie wszyscy,

Mam do Was pytanie, które jest dla mnie bardzo ważne.

Od jakiegoś czasu działam coś przy RPi, ESP, Arduino.

Nie mniej do tej pory wykorzystywałem kody/programy gotowe.

Coś tam mniej-więcej kumam ale postanowiłem, że muszę się nauczyć programowania i tu pojawił się chyba mój największy problem.

Którego języka się uczyć ? - C, C++, C#, Python, Lua....

Interesuję się głownie tematyką IoT i do tego chciałby wykorzystywać moją wiedzę i kształcić się w tym kierunku.

Część osobników pisze o obowiązkowym C, kto inny poleca uczyć się Pythona.

Przerobiłem poradniki Mirosława Zelenta na YouTube o C++ , zaczynam kolejną serię kursów o Pythonie ale to wszystko jakoś mi nie wiele daje przy kombinowaniu z RPi czy ESP...

Kod napisany w CodeBlock na Windowsie w C++, nie ma dużego zastosowania przy RPi.

Jak zaczynam czytać poradniki , przykłady programów dla RPi czy ESP to widzę, że raz jest program pisany w C raz z Pythonie.

Dodatkowo pojawia się problem dotyczący bibliotek - w kursach jakie obejrzałem o nauce języka C czy Pythona nikt nie wspomina o :

#include

#include

#include

#include

Dodatkowo, fajnie, że w gotowych kodach czy poradnikach wspomina się iż należy dodać taką bibliotekę, ale jak ja sam siadam do pisania czegoś to nie wiem do czego dokładnie służy jaka biblioteka, gdzie je znaleźć, za co odpowiadają, czy potrzebuję ich w swoim programie a jak już potrzebuję to jak się nazywa itd..

Nie trafiłem jeszcze na żaden poradnik wyjaśniający czym są dokładnie biblioteki, czy są one już w standardzie, czy mają jakieś swoje opisy , czy jest jakaś lista bibliotek, jak dana biblioteka nazywa sie w C a jak w Pythonie... Czy ogólnie tak to działa jak ja myślę..

Tym bardziej przy programowaniu na Win nikt nie wspomina o komendach jakie występują np. przy arduino / RPI :

digitalWrite

analogRead

gpio export 9 out

Co polecacie ?

- Który język

- Gdzie zdobywać wiedzę rozszerzającą poznany język pod mikrokontrolery?

Będę wdzieczny za pomoc

Link to post
Share on other sites

Chcesz robić kilka rzeczy jednocześnie, a to dość słabo wychodzi. Zdecyduj się na początek: albo rpi, albo arduino. Bo oczywiście rpi możesz programować w dowolnym języku (włącznie z prologiem, iconem, snobolem czy innym brainfuckiem) - o tyle przy arduino pozostaje c++ (plus znajomość bibliotek wiringa), a znajomość C jest wskazana (o ile chcrsz zrobić coś bardziej ambitnego niż miganie ledą czy podłączenie dwóch fotorezystorów do światłoluba).

Arduino (i wszelkie mikrokontrolery): zacznij od tego śmiesznego dialektu wiringa na Arduino. Potem C/C++.

RPi: python, C, C++ (w tej kolejności), nie dotykaj Javy.

A po za tym naucz się korzystać z dokumentacji, funkcje o które pytasz są bardzo dokładnie omówione.

Link to post
Share on other sites
Chcesz robić kilka rzeczy jednocześnie, a to dość słabo wychodzi. Zdecyduj się na początek: albo rpi, albo arduino. Bo oczywiście rpi możesz programować w dowolnym języku (włącznie z prologiem, iconem, snobolem czy innym brainfuckiem) - o tyle przy arduino pozostaje c++ (plus znajomość bibliotek wiringa), a znajomość C jest wskazana (o ile chcrsz zrobić coś bardziej ambitnego niż miganie ledą czy podłączenie dwóch fotorezystorów do światłoluba).

Arduino (i wszelkie mikrokontrolery): zacznij od tego śmiesznego dialektu wiringa na Arduino. Potem C/C++.

RPi: python, C, C++ (w tej kolejności), nie dotykaj Javy.

A po za tym naucz się korzystać z dokumentacji, funkcje o które pytasz są bardzo dokładnie omówione.

Dzięki za odpowiedź.

Ok, to skupię się tylko na RPI.

Co do bibliotek to właśnie z nimi mam największy problem - są jakieś opisy bibliotek w j. PL ?

Wpisuję np. "biblioteka wiringpi opis" na google ale nic rozsądnego nie widzę... 🤯

Link to post
Share on other sites

Ja zawsze odpowiadam tak samo na pytanie "Który język wybrać?": "A musisz wybierać?"

Przecież to nie jest tak, że jak się zaczniesz uczyć jednego, to przepadłeś i wszystkie inne języki są już dla ciebie na zawsze niedostępne. To też nie jest tak, że jak się skoncentrujesz na jednym języku, to się go jakoś nauczysz szybciej — zajmie to mniej więcej tyle samo czasu, bo twój mózg musi mieć czas żeby materiał przyswoić i przestawić się na nowy sposób myślenia. Tym bardziej, że większość z tych języków ma jednak bardzo dużo wspólnego ze sobą. Tak więc nie przejmuj się wybieraniem, naucz się jak najwięcej i potem będziesz mieć większy wybór jak będziesz zaczynał nowy projekt.

Co do mikrokontrolerów, to najważniejsze zawsze są materiały opublikowane przez producenta, czyli noty katalogowe, noty aplikacyjne i dokumentacja bibliotek, jeśli takie są dostępne. Wiedza tam podana jest w sposób bardzo suchy i oszczędny, ale warto jest się nauczyć je czytać, bo często to jest jedyne dostępne źródło informacji. W drugiej kolejności masz wszelkiego rodzaju kursy — ot choćby tu na forbocie masz ich cały zbiór pod zakładką "kursy". Na youtube masz ich jeszcze więcej, po angielsku zazwyczaj.

Ale dla mnie osobiście najlepszym sposobem nauki jest wzięcie istniejącego projektu, doprowadzenie go do działania, a następnie "zabawa" z tym co tam jest — zmienianie różnych ustawień, rozszerzanie o nowe opcje, etc. — zauważyłem, że przy tym uczę się najszybciej i do tego podchwytuję też różne kruczki i triki. No ale to ja, komuś innemu łatwiej może się być uczyć z kursu czy książki.

[ Dodano: 23-10-2017, 14:55 ]

Co do bibliotek to właśnie z nimi mam największy problem - są jakieś opisy bibliotek w j. PL ?

Tu będziesz mieć bardzo duży problem. Język angielski jest de facto standardem, nawet jak piszesz swój własny kod, to najlepiej pisać nazwy zmiennych i komentarze po angielsku — żeby potem łatwiej móc prosić o pomoc. Dokumentacja w zasadzie cała jest zawsze po angielsku, tak samo noty katalogowe — nikt tego raczej nie tłumaczy. No chyba, że akurat znajdziesz po chińsku, bo i takie się zdarzają — po pewnym czasie człowiek zaczyna rozpoznawać i rozumieć niektóre z tych ich znaczków.

Tak więc jeśli chcesz inwestować w naukę języka, to najlepszą inwestycją będzie jednak język angielski — on ci otworzy drogę do wszystkiego innego.

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

deshipu, Dzięki za wypowiedź.

Naturalnie nie zamierzam się zamykać na żaden język, jednak wydaje mi się, że dobrze znać przynajmniej jeden na zaawansowanym poziomie.

Jak wspomniałem, czytając poradniki pisane w C , zaraz w C++ a później w Pythonie robi mi się małe zamieszanie w mózgowiu i siadając do jakiegoś programu w RPI zastanawiam się w którym języku pisać.

Dlatego planuje po kolei , może jak napisał ethanak, Python , C , C++

Teoretycznie jak wspomniałem przez część kursów C++ i Pythona przeszedłem, w windowsie jakieś proste programy napiszę tylko teraz muszę jakoś tę wiedzę wykorzystać przy RPI.

W moim odczuciu większość kursów na Youtube dot C++, C, Python uczy nas pisania programów pod windowsa, które np. po trochę większym zaangażowaniu pozwolą nam stworzyć program bardziej "matematyczny"... Nie trafiłem jednak na kursy, które uczą języka C w oparciu o budowę programów A.I czy IoT - a szkoda..

Jeśli chodzi o j. ang to ogólnie nie jest to jakiś większy problem jednak zawsze co po PL to łatwiej (bynajmniej mi) przyswoić 🙂

Link to post
Share on other sites

Nie jestem pewien co nazywasz "programami AI" — sztuczna inteligencja to jest duży dział nauki, obejmujący zagadnienia od prostych systemów eksperckich, poprzez parsowanie, algorytmy ewolucyjne, uczenie maszynowe, sieci neuronowe, algorytmy kategoryzujące, analizę sygnałów, etc. — wszystko to jest zupełnie niezwiązane z nauką języków programowania. To mniej więcej tak, jakbyś chciał się uczyć gry na flecie w oparciu o komponowanie fugi — to zupełnie inny poziom abstrakcji. Musisz najpierw poznać podstawy języka żeby móc się zabierać za takie zagadnienia, a i tak bardziej niż umiejętności programowania będą one wymagały znajomości matematyki i samej wiedzy domenowej dla problemu, który rozwiązujesz.

Z "programami IoT" z drugiej strony jest odwrotnie — no bo co w zasadzie ma takiego specjalnego program "IoT" czego nie ma każdy inny? Komunikację przez sieć, czyli głównie informacje o tym jak działają poszczególne protokoły we kolejnych warstwach sieci i jak się programuje sockety na konkretnej platformie, której używasz (albo jak się używa bibliotek załatwiających to za ciebie). Znowu tutaj sam język programowania niewiele wnosi — wszystko będzie tak samo niezależnie czy robisz to w Pythonie czy w C, musisz tylko przeczytać dokumentację bibliotek, których używasz i wiedzieć co się tam dzieje "pod spodem" — a to z nauką samego języka niewiele ma wspólnego.

Jestem pewien, że znajdziesz dużo kursów na oba te tematy niezależnych od języka programowania — albo zakładających, że już jakiś tam język znasz. Uczenie się obu rzeczy jednocześnie może być trudne.

Link to post
Share on other sites

Jeśli jesteś kumaty, jeśli chodzi o komputery i chcesz wiedzieć trochę lepiej, jak to wszystko działa pod spodem, a co najważniejsze umieć później z tej wiedzy skorzystać i napisać samemu jakąś bibliotekę, to naucz się porządnie C. Tylko tak naprawdę porządnie;) Jak już zrozumiesz, jak działa komputer, to później nauczenie się C++ czy Pythona będzie proste, bo będziesz wiedział, co się dzieje pod spodem.

Podejrzewam, że w drugą stronę, czyli od Pythona do C może być trochę trudniej, chociaż na pewno szybciej zobaczysz efekty. Ale no Pythona poza RPi chyba nie poużywasz.

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.