Skocz do zawartości

Co w Arduino piszczy? cz.3


Elvis

Pomocna odpowiedź

Co w Arduino piszczy? cz.3

Poznaliśmy już schemat Arduino, wiemy jak działa bootloader oraz jak wgrać program do naszego modułu. Czas zobaczyć co kryje się pod Arduino IDE. Opis dotyczy wersji 1.6.10, ale starsze oraz nowsze wydania raczej nie będą różniły się zbyt drastycznie. Na początek musimy pobrać i zainstalować środowisko programistyczne. Ja wybrałem domyślną lokalizację: C:\Program Files (x86)\Arduino

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Co ciekawe plik test1.ino.hex to gotowy obraz dla avrdude – znowu standardowy, bez magii niestety.

Ale dlaczego "niestety"? Osobiście jestem bardzo wielkim fanem standardów, a za to nie przepadam za tym, co jest często nazywane "magią", a co zazwyczaj jest po prostu ukrytym zachowaniem. Tutaj mamy wszystko otwarte i widoczne jak na tacy, dzięki czemu nie tylko możemy swobodnie włączać do naszych programów elementy bardziej zaawansowane, nie pochodzące ze środowiska Arduino, w miarę jak je poznajemy, a w pewnym momencie nawet całkowicie porzucić to środowisko i robić wszystko samemu, jeśli akurat taką chęć lub potrzebę mamy.

Link do komentarza
Share on other sites

Napisałem "niestety", bo trochę liczyłem że jednak Arduino daje coś więcej niż tylko niezbyt wygodny edytor - Sketch. Oczywiście masz rację, że lepiej używać standardowego C, niż jakiegoś nowego, dziwnego języka, ale w bardzo wielu miejscach można przeczytać, że Arduino wykorzystuje coś "podobnego" do C, więc spodziewałem się odrobiny magii, może chociaż pre-kompilatora - podobnie jak w przypadku Qt.

Link do komentarza
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

Pełny opis "magii" Arduino jest tutaj: https://www.arduino.cc/en/Hacking/BuildProcess

Ogólnie warto przejrzeć cały folder "Hacking": https://www.arduino.cc/en/Hacking/HomePage

[ Dodano: 08-08-2016, 09:21 ]

Wychodzi więc na to, że tylko zakładki bez rozszerzeń są łączone. Jeśli mają rozszerzenia .h, .c, .cpp są traktowane jak należy.

Link do komentarza
Share on other sites

Chodziło mi o język, nie o kompilator. Kompilator może generować kod maszynowy, ale również inny język - np. większość kompilatorów C/C++ możne generować kod w asemblerze. Nie byłoby jednak problemu napisać kompilator, który na wyjściu tworzy program np. w Pythonie.

To jak działa kompilator to raczej temat na oddzielny artykuł, pewnie sporo obszerniejszy.

Nie chcę się spierać o nazewnictwo, po prostu dla mnie było to ciekawe odkrycie, że Arduino wykorzystuje język C++.

Pod względem języka programowania nie ma między C++, a "językiem Arduino" żadnej różnicy, to te same języki formalne. Wymyślanie więc nowych nazw to raczej wprowadzanie niepotrzebnego zamieszania.

Link do komentarza
Share on other sites

Ale właśnie jest różnica. Różnica jest w tym jakie biblioteki "standardowe" masz dostępne. Różnica jest w tym ile rzeczy jest doklejanych do twojego programu na początku, różnica jest w tym jak traktowane są twoje pliki z kodem. Te wszystkie rzeczy są dość dobrze opisane w standardzie C++ i zapewniam cię, że to, co robi Arduino standardu tego nie spełnia -- wniosek, nie jest to już C++, choć na C++ jest w 99.99% oparte i pozawala ci nawet w C++ pisać, jeśli odpowiednio nazwiesz swój plik z kodem (i nikt tego nigdy nie ukrywał, jest to informacja ogólnie dostępna i chyba każde wprowadzenie do Arduino od tego zaczyna).

Można się jeszcze spierać, że biblioteki, makra i ten main() to w zasadzie wykorzystują normalne mechanizmy języka C++ i tylko stanowią swoisty framework, ale dla mnie ostatnią kroplą, która przepełniła czarę jest właśnie to łączenie wszystkiego w jeden plik z kodem źródłowym -- to już nie używa mechanizmów zdefiniowanych w C++, tylko osobnego, dodatkowego preprocesora, który jest kompletnie z czapy. Zatem nie jest to już standardowy C++. Poprawne programy w C++ potraktowane w ten sposób nie będą działać.

Link do komentarza
Share on other sites

Wydaje mi się, że trochę za duży offtopic z tej dyskusji wychodzi. Moim zdaniem konkatenacja kilku plików nie jest wystarczającym powodem do nazywania tego nowym językiem (preprocesor C też coś takiego potrafi).

Natomiast co do biblioteki C++ to mnie zaskoczyłeś - nie sprawdziłem, ale mogę się upewnić jak wrócę do domu. Dlaczego nie miałoby być standardowej biblioteki C++ w Arduino? O ile pamiętam g++ zainstalowany jest tak samo jak np. w WinAVR, więc jest to 100% kompilator C++ i biblioteki też powinny być na miejscu.

Link do komentarza
Share on other sites

Nie o to mi chodziło. Standardowa biblioteka C++ w Arduino jest (no, dobra, te kawałki, które są w gcc-avr, czyli nie cała). Ale w Arduino jest też dużo więcej bibliotek "w standardzie". Powstaje z tego nowy język (chyba, że wolisz to nazywać frameworkiem, albo po polsku, ramówką) -- osoby nauczone jednego nie będą potrafiły korzystać z drugiego bez dodatkowej nauki i vice versa.

Link do komentarza
Share on other sites

Ok, wreszcie doszliśmy do wspólnych wniosków - Arduino używa C++ (faktycznie nie ma wszystkich bibliotek, standard jest na poziomie C++98).

Natomiast Arduino dostarcza własne biblioteki, co napisałem w artykule i w pełni się z tym zgadzam. Nie uważam, żeby dodanie bibliotek zmieniało sam język, chociaż faktycznie ma wpływ na sposób programowania. Propobuję na tym zamknąć temat, bo chyba dużo więcej o tym piszemy niż warto.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.