eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Rynek pracy STM32
Ilość wypowiedzi w tym wątku: 355

  • 181. Data: 2022-07-19 18:21:19
    Temat: Re: Rynek pracy STM32
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2022-07-19 o 15:54, heby pisze:

    > 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. 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.
    Jak to zaprząc to machania na innej nodze gdy LED jest gdzie indziej
    podłączony.

    > 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.
    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?
    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ć'.

    >>> Nie używaj więc Buildera. Nikt tego nie sprawdza.
    >> Nie rozumiem.
    >
    > 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.
    Używam Buildera 5 bo go kiedyś kupiliśmy i załatwia mi (łatwo i w znany
    mi sposób) interfejs użytkownika.
    Mam też Buildera 2010, ale używałem go tylko jak już koniecznie
    musiałem. Wynikało to z tego, że on się kłócił w Win7. Dawał się
    uruchomić raz. Jak odruchowo go zamknąłem to następne uruchomienie po
    resecie komputera.
    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.

    Teraz przeniosłem się na Win10. Na razie tylko sprawdziłem, że Buildera
    2010 można zamknąć i znów otworzyć. Ale Builder 2010 to też coś
    starszego niż C++11. A pisząc poprzedni post jak chciałem sprawdzić jak
    się te C++ nazywa, to zauważyłem, że oprócz 11 i 14 o których wiedziałem
    to też jest już 17. Z tego wynika, że tę książkę Stroustrupa
    przeglądałem między 2014 a 2017 rokiem.

    Nie wykluczam, że przeniosę wszystkie moje programy do 2010.

    Jak nie używać Buildera to napisz mi co mam używać.
    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).
    P.G.


  • 182. Data: 2022-07-19 18:26:16
    Temat: Re: Rynek pracy STM32
    Od: Dawid Rutkowski <d...@w...pl>

    wtorek, 19 lipca 2022 o 16:57:56 UTC+2 Mateusz Viste napisał(a):
    > 2022-07-19 o 07:44 -0700, Dawid Rutkowski napisał:
    > > To jak taki fajny ten SVN, bez wad, to po co Linus pisał gita?
    > To jest pytanie z serii "skoro mam traktor, to po co mi samochód".
    > svn i git to dwa VCSy, ale rozwiązujące nieco inne klasy problemów.

    Toteż właśnie o to pytam - czym się różnią?
    I jak bardzo w ogóle mogą się różnić od siebie systemy kontroli wersji?
    Wiadomo, że podstawowym pytaniem jest "co się optymalizuje?" i że się
    nie da mieć wszystkiego (dlatego wśród programistów jest tak mało kobiet - jedynie
    kobieta z umysłem mężczyzny, typu Maria Skłodowska, jest w stanie to zrozumieć),
    no ale na ile różnych sposobów można zrobić to samo?
    Może naiwnie pytam, bo w sumie też wciąż czekam na satori - czyli zrozumienie,
    po co w ogóle takiego oprogramowania używać, w sensie zysków, bo że koszty będą to
    nie ulega wątpliwości.

    A tendencją rozsądnego człowieka jest szukanie rozwiązywania istniejących problemów,
    a nie hipotetycznych (to to podczas analizy i projektu).

    Bo to, że VCS pomoże mi w tym, że sobie z czymś eksperymentuję, a potem to albo
    odrzucam albo
    wrzucam do trunka, to mi na plaster - to samo robi się po prostu kopiując katalog
    (zakładam że katalog jest na tak samo chronionym komputerze w sensie redundancji itp.
    co VCS).
    Ewentualnie mogłoby coś dać, gdybym na raz eksperymentował z kilkoma rzeczami,
    ale dla bezpieczeństwa chciał, by sprawdzać jedną na raz - a potem żeby VCS
    automagicznie
    połączył mi trzy takie gałęzie w spójny projekt będący wersją wyjściową z dodanymi
    tymi 3 nowymi funkcjonalnościami.
    Da się tak?
    Identyczna sprawa gdy w rozproszeniu nad dodaniem poszczególnych funkcji pracują
    osobni programiści.

    Albo jeszcze takie cudo - projekt jest rozwijany, ale nagle przychodzi potrzeba
    dorobienia jednej małej zmiany - ale,
    znów dla bezpieczeństwa i żeby nie latać po osiedlu po raz kolejny, na dość dawnej
    wersji sprawdzonej i wygrzanej przez ładny uptime na produkcji - ale żeby ta zmiana
    weszła sobie "sama" do wszystkich kolejnych wersji, i to też nie tak
    od razu, ale dopiero po wygrzaniu na produkcji. Zrobi tak?


  • 183. Data: 2022-07-19 18:27:04
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 18:00, heby pisze:
    > On 19/07/2022 17:29, Janusz wrote:
    >>>> Ale to jak ona jest faktycznie realizowana zależy od tego pliku h o
    >>>> wspólnej nazwie dla wszystkich projektów a tam jest informacja jaki
    >>>> procesor i jak jest podłączony dla danej wersji płytki.
    >>> Tak. To statyczny polimorfizm.
    >> Guzik prawda, w tym 'h' trzyma pewnie tylko połączenia więc z
    >> polimorfizmem to nic nie ma wspólnego, to tylko konfiguracja sprzętowa.
    >
    > To dalej do osiągniecia statycznym polimorfizmem a nie reinkludowaniem
    > przypadkowych plików.
    Ale człowieku to nie ma nic wspólnego z polimorfizmem, ani statycznym
    ani dynamicznym, przestań pisać bzdury.

    --
    Janusz


  • 184. Data: 2022-07-19 18:35:18
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 18:21, Piotr Gałka pisze:
    > W dniu 2022-07-19 o 15:54, heby pisze:
    >
    >> 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. Dla każdego typu zmiennych powstaje osobny
    > kod (ale robi w sumie to samo tylko uwzględnia tym zmiennych).
    Zapomnij, do embedded się nie nadaje a ty tym się zajmujesz.

    > Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie wiem
    > jak to się nazywa) tego templates.
    Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u
    (architektura Harvard) więc żadnej kopi nie uruchomi.

    --
    Janusz


  • 185. Data: 2022-07-19 18:39:44
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 17:45, Piotr Gałka pisze:
    > I jeszcze chyba trochę brakuje KiCadowi do Protela 3 pochodzącego z 1997r.
    Mi tam nic nie brakuje,a to co ostatnio zrobili z rozsuwaniem ścieszek
    to bajka. No i za to go też cenię że jest szybki i łatwy w obsłudze,
    protel to kobyła która jest potwornie przeładowana i trzeba wiedzieć
    gdzie co zmienić bo jak sie nie wie to mozna długo szukać.

    --
    Janusz


  • 186. Data: 2022-07-19 18:40:25
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    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 ;)


  • 187. Data: 2022-07-19 18:41:15
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:27, Janusz wrote:
    >> On 19/07/2022 17:29, Janusz wrote:
    >>>>> Ale to jak ona jest faktycznie realizowana zależy od tego pliku h o
    >>>>> wspólnej nazwie dla wszystkich projektów a tam jest informacja jaki
    >>>>> procesor i jak jest podłączony dla danej wersji płytki.
    >>>> Tak. To statyczny polimorfizm.
    >>> Guzik prawda, w tym 'h' trzyma pewnie tylko połączenia więc z
    >>> polimorfizmem to nic nie ma wspólnego, to tylko konfiguracja sprzętowa.
    >> To dalej do osiągniecia statycznym polimorfizmem a nie reinkludowaniem
    >> przypadkowych plików.
    > Ale człowieku to nie ma nic wspólnego z polimorfizmem, ani statycznym
    > ani dynamicznym, przestań pisać bzdury.

    A co konkretnie nie ma nic wspólnego?


  • 188. Data: 2022-07-19 18:43:29
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:35, Janusz wrote:
    > Zapomnij, do embedded się nie nadaje a ty tym się zajmujesz.

    Bzdura :)

    >> Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie
    >> wiem jak to się nazywa) tego templates.
    > Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u
    > (architektura Harvard) więc żadnej kopi nie uruchomi.

    ROFL. Wyjasni nam teraz grzecznie jak działają templates, z nastawieniem
    na Harvard i dlaczego akurat tam mają nie działać. Tylko czekaj, bo
    skoczę po popcorn.

    Odpale też moje arduino, w którym zatrzęsienie templates, nie
    działajacych na AVR, pozwoli mi, na AVR, właczyć światełko w lampce.


  • 189. Data: 2022-07-19 18:50:52
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:26, Dawid Rutkowski wrote:
    >> svn i git to dwa VCSy, ale rozwiązujące nieco inne klasy problemów.
    > Toteż właśnie o to pytam - czym się różnią?

    git pozwala na trzymanie lokalnych branchy. Ja nie uważam, ze to jest
    jakakolwiek zaleta, ale *każdy* z kilkunastu programistów w firmie,
    uzywający na codzień gita, przytacza ten argument jako jeden z pierwszych.

    Dalej nie wiem po co.

    Ale przytaczają.

    Najwidoczniej ważny.

    Uzasadnić potrzeby nigdy nie potrafią.

    > Ewentualnie mogłoby coś dać, gdybym na raz eksperymentował z kilkoma rzeczami,
    > ale dla bezpieczeństwa chciał, by sprawdzać jedną na raz - a potem żeby VCS
    automagicznie
    > połączył mi trzy takie gałęzie w spójny projekt będący wersją wyjściową z dodanymi
    tymi 3 nowymi funkcjonalnościami.
    > Da się tak?

    Zmegujesz sobie sam, jak chcesz.

    Możesz automatycznie, ale to się zawsze wiąże z konfliktami. Zazwyczaj
    merge robi się półautomatycznie, po wielu etapach sprawdzania jakości.

    Z kilku miejsc? Zero problemu. Możesz te kilka miejs zrobić atomowo w
    trunk, jesli potrzeba.

    > Identyczna sprawa gdy w rozproszeniu nad dodaniem poszczególnych funkcji pracują
    osobni programiści.

    Mogą pracować na jednym branchu, poświęconym tej funkcjonalności i
    rozwiązywać konflikty dynamicznie na tym branchu.

    > Albo jeszcze takie cudo - projekt jest rozwijany, ale nagle przychodzi potrzeba
    dorobienia jednej małej zmiany - ale,
    > znów dla bezpieczeństwa i żeby nie latać po osiedlu po raz kolejny, na dość dawnej
    wersji sprawdzonej i wygrzanej przez ładny uptime na produkcji - ale żeby ta zmiana
    weszła sobie "sama" do wszystkich kolejnych wersji, i to też nie tak
    > od razu, ale dopiero po wygrzaniu na produkcji. Zrobi tak?

    Masz brancha na którym szykujesz sobie release, który wybranchowałeś z
    trunka w dniu podjęcia decyzji "no to stabilizujemy i wypuszczamy". I on
    tam się grzeje, aż pewnego dnia ktoś stwierdza "już". No i już.

    Ogólnie przedstawiasz problemy, które w firmach pracujacychc z svn są
    normalnością a nie jakimiś wydumanymi przykładami.


  • 190. Data: 2022-07-19 18:55:56
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 18:41, heby pisze:
    > On 19/07/2022 18:27, Janusz wrote:
    >>> On 19/07/2022 17:29, Janusz wrote:
    >>>>>> Ale to jak ona jest faktycznie realizowana zależy od tego pliku h
    >>>>>> o wspólnej nazwie dla wszystkich projektów a tam jest informacja
    >>>>>> jaki procesor i jak jest podłączony dla danej wersji płytki.
    >>>>> Tak. To statyczny polimorfizm.
    >>>> Guzik prawda, w tym 'h' trzyma pewnie tylko połączenia więc z
    >>>> polimorfizmem to nic nie ma wspólnego, to tylko konfiguracja sprzętowa.
    >>> To dalej do osiągniecia statycznym polimorfizmem a nie
    >>> reinkludowaniem przypadkowych plików.
    >> Ale człowieku to nie ma nic wspólnego z polimorfizmem, ani statycznym
    >> ani dynamicznym, przestań pisać bzdury.
    >
    > A co konkretnie nie ma nic wspólnego?
    To
    "Ale to jak ona jest faktycznie realizowana zależy od tego pliku h
    o wspólnej nazwie dla wszystkich projektów a tam jest informacja
    jaki procesor i jak jest podłączony dla danej wersji płytki."

    z tym

    "Tak. To statyczny polimorfizm."

    To jest konfiguracja sprzętowa a polimorfizm to
    "Polimorfizm (z gr. wielopostaciowość) - mechanizmy pozwalające
    programiście używać wartości, zmiennych i podprogramów na kilka różnych
    sposobów[1]. Inaczej mówiąc jest to możliwość wyabstrahowania wyrażeń od
    konkretnych typów[2]."

    Klasycznym przykładem polimorfizmu jest

    "Przeciążanie (lub przeładowywanie, ang. overloading) pozwala nazwać tak
    samo kilka podprogramów operujących na różnych danych i następnie
    obsługiwać te dane w jednolity sposób. Np. inaczej dodawane są liczby
    całkowite, a inaczej zmiennopozycyjne, ale wygodnie obie te operacje
    nazywać po prostu dodawaniem i oznaczać symbolem ,,+". W językach bez
    przeciążania operatory te muszą się różnić (np. w OCamlu są oddzielne
    operatory ,,+" i ,,+."). Przeciążane mogą być np. operatory, funkcje,
    metody, procedury. W niektórych językach niektóre operatory lub funkcje
    są przeciążone, ale programista nie może ich dodatkowo dociążać lub
    przeciążać własnych."


    --
    Janusz

strony : 1 ... 10 ... 18 . [ 19 ] . 20 ... 30 ... 36


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: