-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
e.net!feeder.erje.net!feeds.phibee-telecom.net!news.mixmin.net!eternal-septembe
r.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Rynek pracy STM32
Date: Tue, 19 Jul 2022 18:40:25 +0200
Organization: A noiseless patient Spider
Lines: 128
Message-ID: <tb6mpq$1564q$1@dont-email.me>
References: <b...@h...invalid>
<62d13089$0$550$65785112@news.neostrada.pl>
<tarcdi$qcj$1$cezar91@news.chmurka.net> <tardm4$3173v$1@dont-email.me>
<targas$sql$1$cezar91@news.chmurka.net> <tarnfv$327p4$1@dont-email.me>
<tasdmj$etf$1$PiotrGalka@news.chmurka.net> <taselh$34k3h$1@dont-email.me>
<tb43lu$1ls$1$PiotrGalka@news.chmurka.net> <tb44nf$fm11$1@dont-email.me>
<tb4abv$5ml$1$PiotrGalka@news.chmurka.net> <tb4e3k$i1rd$1@dont-email.me>
<tb4epm$88p$1$PiotrGalka@news.chmurka.net> <tb4ffr$icc3$1@dont-email.me>
<tb4hhs$9qd$1$PiotrGalka@news.chmurka.net> <tb4iek$j5sm$1@dont-email.me>
<tb4irf$ahm$1$PiotrGalka@news.chmurka.net> <tb4jc1$jcbf$2@dont-email.me>
<tb63t5$ajv$1$PiotrGalka@news.chmurka.net> <tb650r$12ec9$1@dont-email.me>
<tb69h8$edq$1$PiotrGalka@news.chmurka.net> <tb6a9r$13mqc$1@dont-email.me>
<tb6cd5$g3f$1$PiotrGalka@news.chmurka.net> <tb6d2u$143ic$1@dont-email.me>
<tb6llt$lti$1$PiotrGalka@news.chmurka.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 19 Jul 2022 16:40:26 -0000 (UTC)
Injection-Info: reader01.eternal-september.org;
posting-host="cb0f2a898241a13f7214c9fa7e9a291c";
logging-data="1218714";
mail-complaints-to="a...@e...org";
posting-account="U2FsdGVkX18o7zqMYkQu9eE0gHMOxeis"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.11.0
Cancel-Lock: sha1:hyjbCYcJO5nQkFVTP54HI1CSfd8=
Content-Language: en-US
In-Reply-To: <tb6llt$lti$1$PiotrGalka@news.chmurka.net>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:773249
[ ukryj nagłówki ]On 19/07/2022 18:21, Piotr Gałka wrote:
>> Tak. To statyczny polimorfizm. Wykonuje się go w C++ za pomocą
>> templates. Dokładnie tak jak opisujesz - umożliwia np. rozdzielenie
>> implementacji hardwareowej UART od kodu implementującego protokół bez
>> ani jednej nadmiarowej instrukcji asm.
> Chyba muszę jeszcze raz poczytać o templates. Dotychczas rozumiałem, że
> to się głównie nadaje do opisania tego samego typu działań realizowanych
> na różnych typach zmiennych.
To prymitywna wersja templates. Z lat 90. Od tamtego czasu przeszliśmy
długą drogę.
> Dla każdego typu zmiennych powstaje osobny
> kod (ale robi w sumie to samo tylko uwzględnia tym zmiennych).
> Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie wiem
> jak to się nazywa) tego templates.
Tak:
template< class _HardwreUartImplementation >
ModBusProtol {
...
}
Raz w kodzie msz wtedy:
ModBusProtocol< STM32UART0 > modbus;
albo
ModBusProtocol< AtmegSoftwarUartImpl > modbus;
albo, co najważniejsze:
ModBusProtocol< UartMock > modbus;
> Jak to zaprząc to machania na innej nodze gdy LED jest gdzie indziej
> podłączony.
Dostarczyć inna klasę, implementująca "setState( bool )" w inny sposób,
jako parametr szablonu klasy Blinker<>. Blinker może też przyjąc inną
klasę jak paramter, na przykłąd implemetacje timera, Albo trzeci,
decydujący o kontroli wypełnienia.
Klasy akceptują klasy jako parametry = i dzięki temu budujesz swój kod
niejako z bloków. Kompilator, po rozwiązaniu wszystkich templaces widzi
jeden wielki spagetti kod, który slicznie optymalizuje i po tych
wszystkich machlojkach nie ma śladu w kodzie wynikowym.
>> To się też da zrobić dynamicznym polimorfizmem (polimorficzne klasy z
>> metodami wirtualnymi), ale ktoś może marudzić, że to zajmuje cenne
>> cykle zegarowe na indirect call. Dlatego istnieje też polimorfizm
>> statyczny, który nie generuje dodatkowego kodu.
> To chyba nie tyle chodzi o czas na indirect call co o wkładanie do kodu
> tylko tego co potrzeba.
Czasami chodzi. Ludzie w embedded mają fobie związane ze słowem virtual,
czasami jest podnoszone, że jest "niebezpieczne". Przyjmuje to do
wiadomości, ale od 100km nad poziomem gruntu ;)
> Jak mamy 20 pochodnych danej klasy z funkcjami wirtualnymi (wszystko
> opisane w jednym cpp) to kompilator potrafi zorientować się, że w tej
> aplikacji używana jest ta jedna klasa i nie wstawić kodu pozostałych?
To robi statyczny polimorfizm. Redukuje kod do 0.
Dynamiczny polimorfizm nie, choć nie do końca - pewne sztuczki pozwalają
kompilatorowi usuwać kod co do którego ma pewnośc, że jest niedostepny.
Wiec tak i nie. Zalezy. To skomplikowane.
> Bo jak zrobimy to w 20 plikach i będziemy ręcznie dokładać do projektu
> tylko to co potrzeba to właściwie my załatwiamy to co miało 'się załatwić'.
Ktoś tą decyzję podejmie, jaki parametr przekazać do szablonu. Jak to
zrobić, zalezy. Może być ifdef, jeśli jest potrzeba.
Nie dostrzegasz koncepcji: nie ma inkludowania przypadkowych plików,
bazując na katalogu w którym jesteś, aby emulować statyczny polimorfizm.
To jest już bardzo duży postęp.
>> Napisałeś, że nie możesz używać C++ bo używasz Buildera. A po co
>> używac Buildera?
> Używam C++. Nie mogę użyć C++ 11.
Statyczny polimorfizm nie wymaga C++11.
> Używam Buildera 5 bo go kiedyś kupiliśmy i załatwia mi (łatwo i w znany
> mi sposób) interfejs użytkownika.
Rozumiem, że zaleta jest w łatwym do ogarnięciu GUI?
> W pakiecie z Builderem 2010 jest jakaś biblioteka komunikacji przez
> internet, którą z wielkim trudem udało mi się (z 8 lat temu - już nic
> nie pamiętam) na tyle ogarnąć, aby się po UDP z naszymi urządzeniami
> komunikować. Jakieś udane próby TCPIP też chyba robiłem, ale nie
> rozumiem całej tej koncepcji z serwerami z komunikacją z wieloma
> chętnymi. Nie miałem musu tego robić, bo ja nie piszę aplikacji dla
> ludzi tylko tak na prawdę nasze programiki testowe.
Z dwóch powyższych wnosze, że to raczej prototypowanie, a nie programowanie.
Obecnie używanie do tego celu C++ mija się z celem.
Python?
> Jak nie używać Buildera to napisz mi co mam używać.
Nie wiem co w nim używasz. Niestety czas RADów, czyli "wyklikaj mi
onClicka" już mija, ten sposób pisania nie sprawdził się, słabo się
skaluje i wręcz narzuca błędy projektowe. Współczesne środowiska do
tworzenia GUI są inne. Nie będziesz zadowolony.
> Ale nie chcę się zajmować samemu tworzeniem interfejsu użytkownika
> (dawno dawno temu, używając Turbo C++ 1.0, pisałem swoją obsługę okienek
> pod DOS).
Nikt go nie robi ręcznie. Rzecz w tym, że środowiska do pisania GUI
odsunely się od koncepcji onClicków z Delphi i stały się czymś w rodzaju
dodatku do pisania kodu a nie kodem samym w sobie.
QtCreator na przykład.
Nie spodoba Ci się.
Nie mam rozwiązania tej bolączki. Może poza zmianą stylu pisania na
poprawny ;)
Następne wpisy z tego wątku
- 19.07.22 18:41 heby
- 19.07.22 18:43 heby
- 19.07.22 18:50 heby
- 19.07.22 18:55 Janusz
- 19.07.22 18:58 Janusz
- 19.07.22 19:03 heby
- 19.07.22 19:04 Janusz
- 19.07.22 19:05 heby
- 19.07.22 19:09 heby
- 19.07.22 19:13 Piotr Gałka
- 19.07.22 19:31 Piotr Gałka
- 19.07.22 20:01 heby
- 19.07.22 20:08 Piotr Gałka
- 19.07.22 20:21 heby
- 19.07.22 20:40 Janusz
Najnowsze wątki z tej grupy
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=