eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPascal - ankieta
Ilość wypowiedzi w tym wątku: 277

  • 241. Data: 2016-10-24 23:33:34
    Temat: Re: Pascal - ankieta
    Od: Maciej Sobczak <s...@g...com>


    > > W częście "krytycznej" konkurentem dla C nie jest C++, tylko Ada/SPARK, ale
    branża nie zdąży tego konkursu rozstrzygnąć, bo prędzej przestawi się na kompletną
    generację kodu a wtedy nie będzie znaczenia, w czym.

    > Z branza motoryzacyjna i lotnicza kolega sie myli - w tym przypadku embeded system
    sa programowane w wiekszosci w Matlab/Simulik (bo daje mozliwosc symulacji
    zastosowanych algorytmow) i docelowy kod jest generowany w C.

    Dokładnie o tym pisałem powyżej. Przeczytaj jeszcze raz.
    Natomiast co do tej "większości" to bym nie szarżował. Na razie branża jest na etapie
    wniosku, że to jest dobry kierunek na przyszłość. Dopiero wtedy (w przyszłości) może
    to będzie większość - ale niekoniecznie Simulink i niekoniecznie C.

    > C++ najczesciej jest uzywany gdy zachodzi potrzeba programowania ladnego GUI (z
    uzyciem QT najczesciej)

    Co oznacza, że szansą dla C++ są gotowe biblioteki i frameworki, bo o sam język dla
    języka nikt walczyć nie będzie. Swoją drogą właśnie tak to zadziałało z Arduino.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 242. Data: 2016-10-25 00:01:54
    Temat: Re: Pascal - ankieta
    Od: Maciej Sobczak <s...@g...com>

    > > To "C++" w Arduino równie dobrze mogłoby być Javą
    >
    > Nie.

    Tak. Mam na myśli oczekiwania odbiorców. Im nie zależy na języku. Ma się po prostu
    fajnie pisać i mają być gotowe biblioteki do pierdyliona "shieldów".
    Zamienisz im C++ na Javę/łotewer i nawet im powieka nie mrugnie. To miałem na myśli.

    Natomiast:

    > Narzut na prosty procesor jest za duży.

    Mówimy o Arduino. O branży, gdzie antenka do wifi ma w sobie uC N razy silniejszy od
    głównego "procesora", który do tej antenki wysyła polecenia i nikogo to nie dziwi. O
    branży, gdzie ludziom jest wszystko jedno, czy mają AVR czy Cortex-M4, bo diodą mruga
    się tak samo fajnie. O branży, gdzie niektóre płytki mają Linuksa (!) udającego, że
    jest AVRem i też mruga diodą - i też nikogo to nie dziwi.
    Wsadź tam jakiś okrojony VM i nikomu nie zrobi to żadnej różnicy. Bo niby czemu?

    A z biegiem lat ta nisza niezauważająca różnicy będzie coraz większa. Za parę lat
    będziesz miał w czajniku Linuksa z Javą udającą AVRa sterującego wyłacznikiem i
    nikogo to nie będzie dziwiło.
    Że będą nisze, gdzie to się nie stanie? Oczywiście - ale tak jak na desktopach i
    serwerach, to będą coraz mniejsze, choć dobrze ustalone, nisze (i w tych niszach
    będzie też przeciwnik w postaci VHDL).

    > > W części "krytycznej" C++ nie wnosi niczego istotnego, bo to, co jest jego
    obiektywną wartością dodaną
    > > i tak nie obniża wymaganego wysiłku weryfikacyjnego a tego jest większość w całym
    cyklu życia projektu.
    >
    > To jest nieprawda. Podstawową wartością jaką wprowadza C++ jest znaczące
    > ułatwienie testowania i weryfikacji bez narzutu runtime. Zarówno na
    > etapie unit testów, jak i przy głupiej kompilacji.

    Testy pisze się z wymagań i nie zależy to od tego, czy program jest w C czy w C++. A
    kompilacja nie jest czynnością weryfikacyjną, wręcz przeciwnie - to ją trzeba
    weryfikować i to właśnie w C++ ten etap jest trudniejszy.
    (mówimy o branży krytycznej)

    > > To oznacza, że o ile w "normalnym" programie takie rzeczy jak RAII czy nawet sama
    kontrola widoczności są cenne
    > >, to w systemie krytycznym ich zbawczy wpływ w kontekście całego
    > projektu jest znacznie mniejszy.
    >
    > Zawsze możesz przedstawić przykład dlaczego mniejszy.

    Powyżej. Przykładowo, testy nie będą zależały od tego, w czym napiszesz kod. Być może
    zaoszczędzisz trochę na pokryciu strukturalnym (bo kodu będzie trochę mniej), ale
    dokładnie tyle samo stracisz na wykazaniu ciągłości kompilacji, bo kodu wynikowego
    będzie odpowiednio więcej w stosunku do źródłowego. Dlatego fakt, że C++
    automatycznie zawoła jakiś tam destruktor nie oszczędza wysiłku związanego ze
    sprawdzeniem, czy akcja z tego destruktora się faktycznie wykonała. Ten wysiłek jest
    ciągle taki sam.
    (mówimy o branży krytycznej)

    Natomiast w branży rozrywkowej oczywiście C++ ma przewagę, taką samą jak na desktopie
    czy na serwerze. Problem w tym, że dokładnie tak samo będzie musiał zmierzyć się z
    Javą (lub czymś jeszcze innym - jakieś Swifty, Rusty czy co tam jest teraz modne).
    Dlatego rynek embedded wcale nie będzie dla C++ łatwiejszy.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 243. Data: 2016-10-25 07:59:13
    Temat: Re: Pascal - ankieta
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2016-10-25 00:01, Maciej Sobczak wrote:
    > Tak. Mam na myśli oczekiwania odbiorców. Im nie zależy na języku.

    To nie jest prawda. Zależy im na jakości, redukjci bugów itp. Język C
    tego nie zapewnia. Jezyk C++ załatwia część problemów. Java generuje
    nowe (jak brak deterministycznego zachowania). Czekamy na Język
    Ostateczny. Chwilowo brak.

    > Ma się po prostu fajnie pisać i mają być gotowe biblioteki do pierdyliona
    "shieldów".
    > Zamienisz im C++ na Javę/łotewer i nawet im powieka nie mrugnie. To miałem na
    myśli.

    W sumie jest to o tyle istotne że C jest gorszy od czegokolwiek. Więc
    być może zmiana na łotewer będzie i tak pozytywna.

    >> Narzut na prosty procesor jest za duży.
    > Mówimy o Arduino. O branży, gdzie antenka do wifi ma w sobie uC N
    > razy silniejszy od głównego "procesora", który do tej antenki wysyła polecenia i
    nikogo to nie dziwi.

    W srodku takiej antenki ESP8266 siedzi *mały* ARM. Dalej Java się nie
    zmieści (tak wiem że zmieści się na AVR ale to już nie jest Java).

    > O branży, gdzie ludziom jest wszystko jedno, czy mają AVR czy Cortex-M4, bo diodą
    mruga się tak samo fajnie.

    Problem w tym że na żadnym z tych CPU w przypadku deterministycznego
    zchowania programu, zagadnień RT itp. bedzie bardzo cieżko zmienić na
    Jave. Nawet do migania diodą się taka java nie nadaje.

    > O branży, gdzie niektóre płytki mają Linuksa (!) udającego
    >, że jest AVRem i też mruga diodą - i też nikogo to nie dziwi.

    R-Pi to nie jest do końca embedded. Istnieje jakaś mętna granica kiedy
    SoC staje się zwykłym komputerem. Wydaje sie że R-Pi z Linuxem jest poza
    ta granicą.

    > Wsadź tam jakiś okrojony VM i nikomu nie zrobi to żadnej różnicy. Bo niby czemu?

    Zrobi różnicę kiedy zapytasz jak szybko odpowie na przerwanie.

    Nie uogólniaj embedded tylko do mocy obliczeniowej. Istnieją zagadnienia
    któych nie da się rozwiązać większym cpu.

    > A z biegiem lat ta nisza niezauważająca różnicy będzie coraz większa.
    > Za parę lat będziesz miał w czajniku Linuksa z Javą udającą AVRa sterującego
    wyłacznikiem i nikogo to nie będzie dziwiło.

    Problem w tym że słyszałem to po raz pierwszy około roku 2000. Nie od
    wróżbity tylko od człowieka który znał doskonale rynek, zawodowo parał
    się projektowaniem i budową calkiem sporych systemow embedded. Jak każdą
    wrózbę można było ją sobie wsadzić w d... Świat jest pełen ARMów z
    obciętymi ficzerami typu M0 i jest na to od groma rynku a Javy nie
    sposób odpalić. I NIC nie wskazuje na zmianę w kierunku większych
    prędkości i mocy obliczeniowych. Embedded które to potrzebuje to jest
    jakaś część, ale nie dominująca. Jazelle umarło zanim ktokolwiek go użył.

    Za parę lat ... czyli nigdy. Zawsze będzie przestrzeń na jakieś małe cpu
    które mają specjalne cechy nie spotykane w duzym świecie.

    Jakieś 10 lat temu było pełno wróżbitów którzy mówili że "już za pare
    lat" CPU połaczy się z FPGA. No i się połaczył jako Zynq który ma
    absurdalne ceny, idiotyczne narzędzia i maluteńki rynek zbytu. Reszta
    wybiera zwykłe ARMy, AVRy PICe i jakoś nic nie wskazuje żeby nagle
    pokochali FPGA posklejane z ARMem za $x00 kiedy osobno kosztują $x.

    Dochodzi do absurdów kiedy chińska firma reanimowała 6502, wsadziła w
    otoczenie peryferiów i sprzedaje (MegaWin). Jest rynek.

    Powstrzymałbym się z tymi wrózbami co będzie za pare lat. Nic nie
    będzie, będzie po staremu.

    > Że będą nisze, gdzie to się nie stanie?
    > Oczywiście - ale tak jak na desktopach i serwerach, to będą coraz mniejsze
    >, choć dobrze ustalone, nisze (i w tych niszach będzie też przeciwnik
    w postaci VHDL).

    Niszą na razie jest używanie Linuxa jako bazy w mikrokontrolerach. Za
    kilka lat będzie miał takie same wady jak dzisiaj.

    >> To jest nieprawda. Podstawową wartością jaką wprowadza C++ jest znaczące
    >> ułatwienie testowania i weryfikacji bez narzutu runtime. Zarówno na
    >> etapie unit testów, jak i przy głupiej kompilacji.
    > Testy pisze się z wymagań i nie zależy to od tego, czy program jest w C czy w C++.

    Implementacja testów zalezy od tego. Implementacja testów w C jest
    znacznie bardziej kłopotliwa niż w C++. Pewno że mozna powiedzieć że
    "implementacja to szczegół". Zerknij jednak na UVM. Z tego "szczegółu"
    zrobiono ogromna filozofię która *coś* znacząco poprawiła w jakości.

    > A kompilacja nie jest czynnością weryfikacyjną, wręcz przeciwnie
    > - to ją trzeba weryfikować i to właśnie w C++ ten etap jest trudniejszy.
    > (mówimy o branży krytycznej)

    Branża krytyczna określa tak wiele aspektów pracy włacznie z kolorem
    skarpetek developera że nie ma sensu mówić o tym co w niej samodzielnie
    wyewoluuje. Nic, do momentu aż komitety certyfikujące nie pozwolą. Nie
    rozumiem jak tak hermetyczne i toksyczne środowisko ma niby być tłem dla
    dyskucji o ewolucji embedded.

    > Powyżej. Przykładowo, testy nie będą zależały od tego, w czym napiszesz kod.

    Będzie zależała ich implementacja.

    > Być może zaoszczędzisz trochę na pokryciu strukturalnym (bo kodu będzie trochę
    mniej)
    >, ale dokładnie tyle samo stracisz na wykazaniu ciągłości kompilacji
    >, bo kodu wynikowego będzie odpowiednio więcej w stosunku do źródłowego.

    Niby dlaczeog uważasz że kodu wynikowego będzie wiecej dla C++? Bedzie
    go dokładnie tyle ile trzeba w testach i tyle ile trzeba w produkcji.
    Statyczy polimorfizm to jedna z prostych metod osiągnięcia perfekcyjnej
    długości kodu dla produkjci i testowania.

    > Dlatego fakt, że C++ automatycznie zawoła jakiś tam destruktor nie oszczędza
    > wysiłku związanego ze sprawdzeniem, czy akcja z tego destruktora się
    faktycznie wykonała.

    Tu musisz mieć zaufanie do kompilatora lub certyfikaty dupochronne. Nie
    tak dawno temu pewna firma robiąca dla wojska miała w standardzie obok
    MISRA rowniez własne zalecenia w których było żeby nie uzywać jakiejśtam
    konstrukcji językowej bo kompilator popsuty, ale certyfikowany.

    Rozumiem że nie ufasz że destruktor się woła, tylko wkładasz wysiłek w
    sprawdzenie? A nie wkładasz go przypadkiem znacznie więcej kiedy musisz
    sprawdzić czy programista wywołał tą akcję w każdym miejscu?

    > Ten wysiłek jest ciągle taki sam.
    > (mówimy o branży krytycznej)

    Nie. Kiedy kompilator wykonuje swoje zadania w sposob pewny - wysiłek
    jest mniejszy. Mozna nie mieć zaufania do kompilatora. Trudno, co robić,
    można tez kopać rowy albo przeglądać wynikowy kod maszynowy co na jedno
    wychodzi.


  • 244. Data: 2016-10-25 11:32:19
    Temat: Re: Pascal - ankieta
    Od: Maciej Sobczak <s...@g...com>


    > > Tak. Mam na myśli oczekiwania odbiorców. Im nie zależy na języku.
    >
    > To nie jest prawda.

    Nie zależy im na języku. Zobacz ich ostatnią nowinkę, ESLOV[*]. Na stronach słowo
    "C++" nie pojawia się ani razu. Przypuszczam, że a) twórcy nie chcą się przywiązywać
    do tego wyboru, b) odbiorcom to wisi.

    [*] https://blog.arduino.cc/2016/09/28/eslov-is-the-amaz
    ing-new-iot-invention-kit-from-arduino/

    > Zależy im na jakości, redukjci bugów itp.

    I właśnie dlatego (z powyższego linku):

    "Draw the connections between the modules on the editor, and watch your project come
    to life."

    Proste? Właśnie w taki sposób zmniejsza się okno wejścia dla C++.
    Jak już pisałem, branża przestawi się na generację kodu wcześniej, niż rozstrzygnie
    wojnę o wyższość C, C++ czy Ady.

    > > O branży, gdzie niektóre płytki mają Linuksa (!) udającego
    > >, że jest AVRem i też mruga diodą - i też nikogo to nie dziwi.
    >
    > R-Pi to nie jest do końca embedded.

    Nawet mi do głowy nie przyszedł. RPi jest bardziej odpowiednikiem dawniejszych
    Commodere 64, na których ludzie robili "automatykę domową" i inne mrugające choinki.
    Dzisiaj ich dzieci mają do tego samego celu R-Pi.

    Ja miałem na myśli raczej Intel Galileo - bo pracuje się z tym tak samo, jak z
    Arduino. Bierzesz swój "sketch", który przed chwilą działał na Arduino Uno, wybierasz
    w menu "Target board -> Galileo", wciskasz guzik "Upload" i Twoja płytka mruga diodą.
    Tego Linuksa na tej płytce nie widać, on pełni bardziej funkcję firmware'u i właśnie
    o tym pisałem - postęp w HW pozwala takie rzeczy robić a odbiorców to nie dziwi.

    > > Wsadź tam jakiś okrojony VM i nikomu nie zrobi to żadnej różnicy. Bo niby czemu?
    >
    > Zrobi różnicę kiedy zapytasz jak szybko odpowie na przerwanie.

    Ta nisza to może być pojedynczy procent całego rynku embedded. Może przegapiłeś, ale
    obecnie istnieje coś z miliard (albo dwa) urządzeń wbudowanych z Javą. Niektórzy
    nazywają je smartfonami.
    Masz w domu tony systemów embedded. Szybkość odpowiedzi na przerwanie jest istotna
    tylko w... no nie wiem w ilu z nich. Ta nisza oczywiście będzie istnieć, ale to
    będzie nisza a nie dominacja.

    > Problem w tym że słyszałem to po raz pierwszy około roku 2000.

    Właśnie od tamtego czasu wyprodukowano ten miliard (albo dwa) smartfonów z Javą.
    Niedawno widziałem... lustro domowe z Androidem. Pokazuje prognozę pogody, akurat
    wtedy, gdy się ubierasz. Fajne, nie?

    > Powstrzymałbym się z tymi wrózbami co będzie za pare lat. Nic nie
    > będzie, będzie po staremu.

    Ale przecież to Ty twierdziłeś, że coś się zmieni w temacie użycia C++. Zmieniłeś
    zdanie? :-)

    > > Testy pisze się z wymagań i nie zależy to od tego, czy program jest w C czy w
    C++.
    >
    > Implementacja testów zalezy od tego.

    Testy pisze się z wymagań.

    > Implementacja testów w C jest
    > znacznie bardziej kłopotliwa niż w C++.

    Nie. Jeżeli wymaganie mówi, że lampka ma zgasnąć, to z punktu widzenia testu, który
    jest pisany z tego wymagania, nie ma znaczenia, czy lampka będzie zgaszona w C przez
    jawne wywołanie jakiejś funkcji, czy w C++ przez destruktor jakiegoś kończącego życie
    obiektu jakiegoś wrappera RAII.
    To jest ten sam test. I to właśnie tam jest wysiłek w sprawdzeniu tego, że lampka
    zgaśnie.

    > Pewno że mozna powiedzieć że
    > "implementacja to szczegół".

    Z punktu widzenia testu tak właśnie jest.

    > Zerknij jednak na UVM.

    Nie miałem przyjemności. Z powierzchownej lektury wynika, że to jest metodologia,
    którę mogę sobie zdownloadować z internetu. I chyba nie dotyczy dyskusji C vs. C++
    (vs. Ada (vs. Java)).

    > Branża krytyczna określa tak wiele aspektów pracy włacznie z kolorem
    > skarpetek developera

    Wręcz przeciwnie. Zdumiewająco mało określa. Nawet nie narzuca języka programowania.
    Ale stawia cele do spełnienia, które łatwiej jest spełnić w C (!), niż w C++.

    > Nie
    > rozumiem jak tak hermetyczne i toksyczne środowisko ma niby być tłem dla
    > dyskucji o ewolucji embedded.

    Bo niektóre urządzenia embedded są krytyczne?
    W szczególności te, w których chciałbyś pytać o czas odpowiedzi na przerwanie?

    [znowu o testach]
    > Niby dlaczego uważasz że kodu wynikowego będzie wiecej dla C++? Bedzie
    > go dokładnie tyle ile trzeba w testach i tyle ile trzeba w produkcji.

    Właśnie to mam na myśli. Kodu wynikowego będzie tyle ile trzeba, ale ponieważ kodu
    źródłowego będzie mniej (RAII, itd.), to w rezultacie będzie więcej kodu wynikowego
    *w stosunku* do źródłowego. I właśnie ten większy stosunek utrudni weryfikację. Bo w
    branży krytycznej musisz wykazać ciągłość metody inżynierskiej a im większy skok
    pomiędzy kolejnymi artefaktami w łańcuchu, tym trudniej tą ciągłość wykazać.
    Właśnie dlatego C++ nie jest aż tak atrakcyjny dla branży krytycznej, jak w
    rozrywkowej, gdzie zmniejszenie ilości kodu albo wsparcie kompilatora są oczywistą
    wartością dodaną i dla której tak bardzo lubimy C++.
    Problem w tym, że w branży krytycznej te argumenty nie działają.

    > Tu musisz mieć zaufanie do kompilatora lub certyfikaty dupochronne.

    Bingo. Doszliśmy do najciekawszego.
    Otóż kompilator C jest znacznie prostszy konstrukcyjnie od C++. Dlatego istnieją
    kwalifikowane kompilatory C, natomiast o takowym dla C++ nie słyszałem (przyjmijmy,
    że wybór jest mniejszy). I teraz masz wybór:

    1. piszesz w C i korzystasz z kwalifikowanego kompilatora C, który oszczędza kupę
    wysiłku weryfikacyjnego
    2. piszesz w C++ i przy braku kwalifikowanego kompilatora C++ robisz weryfikację kodu
    wynikowego, co kosztuje Cię kupę czasu (i pieniędzy).

    Którą opcję wybierasz?

    Szach-mat.

    > Rozumiem że nie ufasz że destruktor się woła, tylko wkładasz wysiłek w
    > sprawdzenie?

    Tak. Sorry, taka branża.

    > A nie wkładasz go przypadkiem znacznie więcej kiedy musisz
    > sprawdzić czy programista wywołał tą akcję w każdym miejscu?

    Testy są pisane z wymagań i to od nich zależy ten wysiłek.

    > Mozna nie mieć zaufania do kompilatora. Trudno, co robić,
    > można tez kopać rowy albo przeglądać wynikowy kod maszynowy co na jedno
    > wychodzi.

    Sorry, taka branża.

    Do wyboru jest też Java (i takie tam), w branży rozrywkowej.
    Prognoza pogody w lustrze, fajna sprawa. :-)

    --
    Maciej Sobczak * http://www.inspirel.com


  • 245. Data: 2016-10-25 12:27:15
    Temat: Re: Pascal - ankieta
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2016-10-25 11:32, Maciej Sobczak wrote:
    > I właśnie dlatego (z powyższego linku):
    > "Draw the connections between the modules on the editor, and watch your project
    come to life."

    Był kiedys taki kawałek kodu o nazwie LabView. Kiedys siedziałem, koło
    2000 roku, na jakiejś konferencji i prelegentowi aż piana leciała z ust
    kiedy wymieniał wszelakie zalety takiego rysowania algorytmiki. Nie to
    żeby pracował w TI, najzwyczajniejszy habilitowany bez pojecia o czym
    mówi jak to zazwyczaj bywa. "I juz za rok nie bedzie trzeba nic
    programować". Ta...

    Swoją drogą znam kolesia który w tym pisywał gdzieś koło 2007.
    Przesiadywał po kilka godzin nad projektem żeby "jakoś narysować ta
    pętlę". Ewentualne refaktorowanie kosztowało uszkodzenie prawego nadgarstka.

    Bez watpienia mamy do czynienia z przyszłościową technologią. Nastepna
    proszę!

    > Proste? Właśnie w taki sposób zmniejsza się okno wejścia dla C++.

    Po LabView widac że strasznie zmniejszyło od 15 lat. O jakiś pewno
    promil projektów.

    > Jak już pisałem, branża przestawi się na generację kodu wcześniej, niż rozstrzygnie
    wojnę o wyższość C, C++ czy Ady.

    No ale jakos od 15 lat się nie daje rady przestawić. Widać nie ta
    rzeczywistość.

    > Ja miałem na myśli raczej Intel Galileo - bo pracuje się z tym tak samo, jak z
    Arduino. Bierzesz swój "sketch"
    >, który przed chwilą działał na Arduino Uno, wybierasz w menu "Target board ->
    Galileo", wciskasz guzik "Upload"
    > i Twoja płytka mruga diodą. Tego Linuksa na tej płytce nie widać, on pełni bardziej
    funkcję firmware'u
    > i właśnie o tym pisałem - postęp w HW pozwala takie rzeczy robić a odbiorców to nie
    dziwi.

    I ten projekt w Arduino to w czym napisano?

    >> Zrobi różnicę kiedy zapytasz jak szybko odpowie na przerwanie.
    > Ta nisza to może być pojedynczy procent całego rynku embedded.

    IMHO wkładasz za dużo zwykłych komputerów do pojcia embedded.

    > Może przegapiłeś

    Tak, głupi jestem, to wiem.

    >, ale obecnie istnieje coś z miliard (albo dwa) urządzeń wbudowanych z Javą.
    Niektórzy nazywają je smartfonami.

    Dziękuję. Ale żeby sarkazm stosować to trzeba jednak umieć.

    > Masz w domu tony systemów embedded.

    Nie. Mam tony pecetów z przyczepionym LCD i baterią. Nijak nie widzę
    dlaczego miałbym to nazywać embedded. Czy jak do mojego peceta dokleje
    monitor i klawiaturę to tez bedzie embedded?

    > Szybkość odpowiedzi na przerwanie jest istotna tylko w... no nie wiem w ilu z nich.

    Bo to pecety a nie embedded o którym tu mowa.

    > Ta nisza oczywiście będzie istnieć, ale to będzie nisza a nie dominacja.

    Ta nisza będzie może niszą, ale obawiam się że sterowanie wektorowym
    falownikiem dalej jest nie za bardzo w zasięgu Javy na Galaxy.

    > Niedawno widziałem... lustro domowe z Androidem. Pokazuje prognozę pogody, akurat
    wtedy, gdy się ubierasz. Fajne, nie?

    Jak tam wstawie płytę na iTX z Atomem to będzie embedded czy blaszak?
    Zawieszenie peceta na ścianie to już embedded?

    > Ale przecież to Ty twierdziłeś, że coś się zmieni w temacie użycia C++. Zmieniłeś
    zdanie? :-)

    Twierdze że będzie ewolucja C do C++. Nic C/C++ nie zastapi na skale
    masową. Nie ma jak. Chwilowo ewolucjia jest blokowana, ale na szczęscie
    natura rozwiązuje ten problem powoli i metodycznie.

    >>> Testy pisze się z wymagań i nie zależy to od tego, czy program jest w C czy w
    C++.
    >> Implementacja testów zalezy od tego.
    > Testy pisze się z wymagań.

    Dalej mówisz jak typowy managier. Się pisze testy. A w czym?
    Doswiadczenia z Verilog/Vhdl pokazują że to jest *zasadnicze* pytanie.
    Decyduje o tak szerokim spektrum przyszłych problemów że nie da się go
    zbyć byle jaką odpowiedzią.

    >> Implementacja testów w C jest
    >> znacznie bardziej kłopotliwa niż w C++.
    > Nie. Jeżeli wymaganie mówi, że lampka ma zgasnąć, to z punktu widzenia testu
    >, który jest pisany z tego wymagania, nie ma znaczenia, czy lampka będzie zgaszona w
    C
    > przez jawne wywołanie jakiejś funkcji, czy w C++ przez destruktor jakiegoś
    kończącego życie obiektu jakiegoś wrappera RAII.

    Dalej nie rozumiesz. Jeśli lampka ma zgasnąc z C to sprawdzenie czy kod
    w C woła właściwą funkcję jest znacznie trudniejsze niż w C++. Dla
    managera to żadna różnica, dla implementatora testu to różnica
    *zasadnicza* która rzutuje na jakośc testowania. W skrajnym wypadku
    sadza się jednostę białkową która nacicka przycisk jak się zapali bo ...
    bo język nie pozwala na inne wykrycie.

    Tak, ta jednostka białkowa tez jest potrzebna, ale dopiero na końcowym
    etapie.

    > To jest ten sam test. I to właśnie tam jest wysiłek w sprawdzeniu tego, że lampka
    zgaśnie.

    Ale możesz ten wysilek zautomatyzować mniej lub bardziej. Możesz nawet
    wziąć książkę do teori testowania i zastanowić się jak podzielić ścieżkę
    testowania na piramidę gdzie na samym dole jest tak wiele testów że
    wymagane jest dostrzeżenie *jak* je implementować.

    Nie rób z siebie takiego teoretyka. Implementacja unit testowania jest
    na tyle złożonym problemem że nie można jej pomijąc głupim "się jakos
    napisze". Ludzie od Veriloga od przynajmniej 10 lat wyprówają sobie żyły
    żeby to robić właśnie w tym szczególe lepiej bo kazalo się że tam
    przynosi to wymierne korzyści. Na tyle że obecnie testowanie bazujące na
    tych szczegółach trzęsie rynkiem i jest wymogiem stawianym w krytycznych
    aplikacjach.

    >> "implementacja to szczegół".
    > Z punktu widzenia testu tak właśnie jest.

    No więc teoretyzujesz lub posiadasz toskyczne środowisko testowania w
    którym czas implementacji testu jest już na tyle długi że nie ma
    znaczenia jak jest stworzony. Coś jest popsute.

    >> Zerknij jednak na UVM.
    > Nie miałem przyjemności. Z powierzchownej lektury wynika, że to jest metodologia

    To jest *implementacja* pewnej metodologii.

    >, którę mogę sobie zdownloadować z internetu. I chyba nie dotyczy dyskusji C vs. C++
    (vs. Ada (vs. Java)).

    Ależ dotyczy wszystkiego, a w szczególności dotyczy "się jakoś napisze
    te testy". Masz przykład (obecnie tip top światowy) że ktoś się pochylil
    nad tymi szczegółami i okazalo się że można znaczaco podnieść komfort i
    jakośc weryfikacji. Szczegóły miały znaczenie, kwestia dostrzeżenia ich
    z wysokich stołków managerów od słupków w PowerPoincie.

    >> Branża krytyczna określa tak wiele aspektów pracy włacznie z kolorem
    >> skarpetek developera
    > Wręcz przeciwnie. Zdumiewająco mało określa. Nawet nie narzuca języka
    programowania.

    Narzuca bardzo wiele. Być może rozmawiamy o róznych dziedzinach. Gdybyś
    poszedł w kierunku latania z fpga ilość rzeczy
    organizacyjno-implementacyjnych które musisz spelnić aby w ogole
    rozmawiać jest zastanawiająca i dotycza może nie koloru skarpetek ale
    niewiele brakuje.

    > Ale stawia cele do spełnienia, które łatwiej jest spełnić w C (!), niż w C++.

    To nie może być prawda z racji że C jest w uproszczeniu podzbiorem C++.
    To nie jest trywializm. To tylko oznacza że możesz z C++ wziąć to co w
    danej chwili wyraża lepiej rozwiązanie problemu.

    > Bo niektóre urządzenia embedded są krytyczne?
    > W szczególności te, w których chciałbyś pytać o czas odpowiedzi na przerwanie?

    Czyli te na Javie z VM popędzane z Linuxem? Czy własnie rozmawiam z
    druga osobowością?

    > [znowu o testach]
    >> Niby dlaczego uważasz że kodu wynikowego będzie wiecej dla C++? Bedzie
    >> go dokładnie tyle ile trzeba w testach i tyle ile trzeba w produkcji.
    > Właśnie to mam na myśli. Kodu wynikowego będzie tyle ile trzeba
    >, ale ponieważ kodu źródłowego będzie mniej (RAII, itd.),
    > to w rezultacie będzie więcej kodu wynikowego *w stosunku* do źródłowego.

    Podstawową zasadą przy redukcji bugow jest trzymanie się jak
    najmniejszej ilości kodu źrodlowego i jak najczytelniejszego wyrażania
    zamiarów. Ponieważ w ten sposób programista popełnia mniej błedów. Język
    C musi być wspomagany przez makra, język C++ pozwala na wyrażanie wprost
    w mniejszei ilości kodu.

    > I właśnie ten większy stosunek utrudni weryfikację

    Nieprawda. Weryfikację utrudnia cieżki do czytania kod, kłopotliwe
    implementowanie testów i kiepski związek kodu (rysowanie z LabView) z
    wynikiem (generowany C).

    Pierwsze słyszę żeby 20MB kodu wynikowego więcej z powodu życia
    templates mialo byc przeszkodą weryfikacyjną i traktowane jako miara
    jakości. Po stronie kodu jest 10x mniej czytania i 10x czytelniej i 3x
    mniej unit testów.

    >. Bo w branży krytycznej musisz wykazać ciągłość metody inżynierskiej

    Pomiędzy jednym a drugim masz kompilator. Możesz wygazać formalnie jego
    działanie? FORMALNIE. Jesli nie to musisz za każdym razem sprawdzać kod
    w C z kodem w asm. Ręcznie. No chyba że oszukujesz i te wszystkie nadęte
    pojęcia o ciągłości są po prostu ponaginane że aż trzeszczy i podparte
    zbutwiałymi certyfikatami?

    > a im większy skok pomiędzy kolejnymi artefaktami w łańcuchu, tym trudniej tą
    ciągłość wykazać.

    Ale jak ją wykazujesz? Pomiędzy A i B użylismy kompilatora X? No no.
    Robi wrażenie. Na managerach.

    > Problem w tym, że w branży krytycznej te argumenty nie działają.

    Z powodu biologi i komitetów certyfikujących a nie rozsądku.

    > Bingo. Doszliśmy do najciekawszego.
    > Otóż kompilator C jest znacznie prostszy konstrukcyjnie od C++.
    > Dlatego istnieją kwalifikowane kompilatory C

    Już Ci napisałem jak duży producent pisal w certyfikowanym kompilatorze
    C z wielką dziurą. Zaznaczam przy okazji że w tym czasie kiedy oni w nim
    pisali gcc osiągał lepsza jakość kodu wynikowego i nie miał bugów. I nie
    oznacza to że należy wziąć gcc. Oznacza to że certyfikowany kompilator
    okazał się polem minowym. "Jakoś(ć) przez certyfikację".

    >, natomiast o takowym dla C++ nie słyszałem (przyjmijmy, że wybór jest mniejszy). I
    teraz masz wybór:
    > 1. piszesz w C i korzystasz z kwalifikowanego kompilatora C, który oszczędza kupę
    wysiłku weryfikacyjnego

    Nie oszczędzę. Bugi pochodzace z kompilatorów to promil promila problemu
    bugow w ogólności.

    > 2. piszesz w C++ i przy braku kwalifikowanego kompilatora C++
    > robisz weryfikację kodu wynikowego, co kosztuje Cię kupę czasu (i pieniędzy).
    > Którą opcję wybierasz?

    Taką w ktorej jestem w stanie szybciej wykryć bugi w kodzie. C jest
    drugi a C++ przedostatni.

    > Szach-mat.

    To nie jest szach mat. Piszesz o embedded tak jak Ci w danej chwili
    pasuje. Raz to wypasione systemy z Linuxem i Java a po chwili
    certyfikowane produkty wczesnej archeologii inzynieri programowania w
    której ludzie rysują kreski od kodu w C do kodu w asm. Nie masz
    certyfikowanej ciąglości wypowiedzi ...

    >> Rozumiem że nie ufasz że destruktor się woła, tylko wkładasz wysiłek w
    >> sprawdzenie?
    > Tak. Sorry, taka branża.

    Ten promil embedded czy te miliardy smartfonów?

    Udowadnianie że c++ nie ma co szukać w embedded z pomocą hermetycznego
    promila aplikacji embedded obwarowanymi certyfikatami i komitetami
    wydaje mi się, przyznaje, zabawny, dlatego to ciągne dalej. A przy
    okazji jesli chodzi o Pascala ...


  • 246. Data: 2016-10-25 16:10:39
    Temat: Re: Pascal - ankieta
    Od: Maciej Sobczak <s...@g...com>

    On Tuesday, October 25, 2016 at 12:27:51 PM UTC+2, Sebastian Biały wrote:

    > > I właśnie dlatego (z powyższego linku):
    > > "Draw the connections between the modules on the editor, and watch your project
    come to life."
    >
    > Był kiedys taki kawałek kodu o nazwie LabView.

    Sam napisałeś, że obecni amatorzy od Arduino to przyszli inżynierowie w firmach
    embedded. Pokazuję Ci, co ci amatorzy teraz robią. Zgadnij, co będą robić za parę
    lat. Pisać szablony w C++?

    > > Proste? Właśnie w taki sposób zmniejsza się okno wejścia dla C++.
    >
    > Po LabView widac

    Po ESLOV widać, że tak rośnie nowe pokolenie inżynierów.

    > No ale jakos od 15 lat się nie daje rady przestawić.

    Kolega obok twierdził, że "większość" softu w samochodach się robi w Simulinku.
    Trochę przesadził z tą większością, ale i tak to są rysy na Twoich argumentach. To
    się dzieje, niezależnie od tego, czy Ci się to podoba.

    > >> Zrobi różnicę kiedy zapytasz jak szybko odpowie na przerwanie.
    > > Ta nisza to może być pojedynczy procent całego rynku embedded.
    >
    > IMHO wkładasz za dużo zwykłych komputerów do pojcia embedded.

    Niedawno powstało takie pojęcie jak "deeply embedded", bo niektórzy nie mogą się
    pogodzić z postępem w hardwarze.
    Podsumujmy: piekarnik/pralka/zmywarka sterowana mikrokontrolerem 8051 to jest system
    embedded. Jeśli w następnej wersji piekarnika/pralki/zmywarki tego samego producenta
    będzie mały komputerek z Linuksem, to to już nie jest embedded. Dlaczego? Bo
    specjaliści od embedded mają naruszone ego? No to sorry.

    > Nie. Mam tony pecetów z przyczepionym LCD i baterią. Nijak nie widzę
    > dlaczego miałbym to nazywać embedded.

    https://en.wikipedia.org/wiki/Embedded_system

    > Czy jak do mojego peceta dokleje
    > monitor i klawiaturę to tez bedzie embedded?

    To zależy, czy będzie częścią większego produktu. Jeśli ten monitor i klawiatura są
    akurat na frontowym panelu w samochodzie, to tak, ten pecet jest systemem embedded.
    Sorry. Nie ja wymyśliłem definicję.

    > Ta nisza będzie może niszą, ale obawiam się że sterowanie wektorowym
    > falownikiem dalej jest nie za bardzo w zasięgu Javy na Galaxy.

    Cieszę się, że znalazłeś sobie ciekawą i niezagrożoną niszę zawodową.

    > > Testy pisze się z wymagań.
    >
    > Dalej mówisz jak typowy managier.

    Nie, jestem inżynierem.

    > Się pisze testy. A w czym?

    Skup się: w Excelu.

    (oczywiście nie jest to jedyna opcja, ale o tyle ciekawa, że kompletnie oderwana od
    dyskusji nt. wyższości C++ nad C)

    > Dalej nie rozumiesz. Jeśli lampka ma zgasnąc z C to sprawdzenie czy kod
    > w C woła właściwą funkcję jest znacznie trudniejsze niż w C++.

    Dalej nie rozumiesz. Jeśli lampka ma zgasnąć, to w jakiejś chwili na jakimś outpucie
    ma być LOW (powiedzmy). Albo jakaś zmienna lub wartość w jakieś tablicy albo
    strukturze ma być LOW. Itp. Zrobienie testu na takie coś nie zależy od tego, czy
    ustawianie tej wartości jest w C czy w C++.

    W szczególności, uwaga, test można zrobić *zanim* powstanie ten kod i tym bardziej
    wtedy widać, że robienie testu nie zależy od tego, czy gaszenie lampki jest w C, czy
    w C++.

    (Proszę nie mylić z TDD (Test-Driven Development), bo to nie to.)

    [branża krytyczna]
    > Narzuca bardzo wiele.

    Na przykład?

    > > Ale stawia cele do spełnienia, które łatwiej jest spełnić w C (!), niż w C++.
    >
    > To nie może być prawda z racji że C jest w uproszczeniu podzbiorem C++.

    Błąd logiczny. Właśnie dlatego jest łatwiej w C, że C jest (w uproszczeniu)
    podzbiorem C++.
    Dzięki temu ilość różnych rzeczy do sprawdzenia w kodzie jest mniejsza (sic!).

    > > Bo niektóre urządzenia embedded są krytyczne?
    > > W szczególności te, w których chciałbyś pytać o czas odpowiedzi na przerwanie?
    >
    > Czyli te na Javie z VM popędzane z Linuxem? Czy własnie rozmawiam z
    > druga osobowością?

    Uzupełniam:
    Jeżeli w danym systemie embedded nie interesujesz się czasem odpowiedzi na
    przerwanie, to prawdopodobnie jest to system rozrywkowy, np. lustro z Andoridem z
    prognozą pogody. Natomiast jeżeli jesteś zainteresowany tym czasem, to prawdopodobnie
    jest to system krytyczny a wtedy chcesz mieć jak najłatwiejsze narzędzia weryfikacji.

    > > I właśnie ten większy stosunek utrudni weryfikację
    >
    > Nieprawda. Weryfikację utrudnia cieżki do czytania kod,

    Więc pisz kod łatwy do czytania. Standardy kodowania po to są.

    > kłopotliwe
    > implementowanie testów

    Testy pisze się z wymagań. N-ty raz to powtarzam.

    > i kiepski związek kodu (rysowanie z LabView) z
    > wynikiem (generowany C).

    Bingo. Dlatego C++ jest trudniejszy w weryfikacji, niż C, bo w C++ jest większy
    przeskok między kodem (źródłowym) a wynikiem (obiektowym).

    > Pierwsze słyszę żeby 20MB kodu wynikowego więcej z powodu życia
    > templates mialo byc przeszkodą weryfikacyjną

    To jest tzw. total showstopper a nie przeszkoda.

    > Po stronie kodu jest 10x mniej

    Zaraz, zaraz. Powyżej napisałeś, że kodu jest 20MB więcej, teraz piszesz, że kodu
    jest 10x mniej. Gubisz się?

    Jeżeli w Twoim projekcie zrobiło się 10x mniej kodu źródłowego a jednocześnie
    przybyło 20MB kodu wynikowego, to leżysz na weryfikacji.
    Hasło: traceability.

    > >. Bo w branży krytycznej musisz wykazać ciągłość metody inżynierskiej
    >
    > Pomiędzy jednym a drugim masz kompilator.

    To jest nieciągłość.

    > Możesz wygazać formalnie jego
    > działanie?

    Jeżeli to jest kompilator C++, to nie da się tego zrobić jeszcze bardziej, niż nie da
    się gdy to jest kompilator w C.

    Właśnie dlatego lepiej, żeby był C.

    > Jesli nie to musisz za każdym razem sprawdzać kod
    > w C z kodem w asm. Ręcznie.

    Tak. Sorry, taka branża.

    Dlatego łatwiej się to robi gdy kod źródłowy jest w C.
    Naprawdę.

    > Już Ci napisałem jak duży producent pisal w certyfikowanym kompilatorze
    > C z wielką dziurą.

    Nie ma problemu - certyfikował tą resztę wokół dziury.

    > Zaznaczam przy okazji że w tym czasie kiedy oni w nim
    > pisali gcc osiągał lepsza jakość kodu wynikowego i nie miał bugów.

    Bzdura. Bugzilla pokazuje, że w historii gcc nigdy nie było takiego przedziału czasu,
    żeby nie było bugów. Różnica jest taka, że w przypadku tego certyfikowanego wiedza o
    tym gdzie są bugi (i jak trzeba pisać, żeby je ominąć) była większa.
    Dlatego ten certyfikowany był bardziej odpowiedni w projekcie krytycznym.

    > Bugi pochodzace z kompilatorów to promil promila problemu
    > bugow w ogólności.

    W branży rozrywkowej? Oczywiście.

    Ale pisaliśmy o krytycznej.

    > Piszesz o embedded tak jak Ci w danej chwili
    > pasuje. Raz to wypasione systemy z Linuxem i Java a po chwili
    > certyfikowane produkty

    Ty sam ten temat szeroko traktujesz. Raz o Arduino, drugi raz o falownikach...
    Próbuję odpisywać wg bieżącego, zmiennego kontekstu.

    > Udowadnianie że c++ nie ma co szukać w embedded z pomocą hermetycznego
    > promila aplikacji embedded obwarowanymi certyfikatami i komitetami
    > wydaje mi się, przyznaje, zabawny, dlatego to ciągne dalej.

    Ale ja nie pisałem tylko o promilu certyfikowanych. Również o tej gigantycznej masie
    rozrywkowych, z Javą w środku.
    Pytanie teraz, czy pomiędzy tymi dwoma kategoriami jest wystarczająco dużo miejsca.
    Pewnie jest, ale nie na tyle, żeby można było pisać o niezastąpionym C++, którego nic
    nie wyprze. Właśnie wypiera (albo nie dopuszcza), z obu tych stron.

    W branży embedded C++ jest w podobnym ścisku i pod podobną presją konkurencji, jak na
    desktopie, z podobnych powodów.

    > A przy
    > okazji jesli chodzi o Pascala ...

    Nie widziałem w embedded.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 247. Data: 2016-10-25 17:28:45
    Temat: Re: Pascal - ankieta
    Od: "re" <r...@r...invalid>



    Użytkownik "Sebastian Biały"

    ...
    Udowadnianie że c++ nie ma co szukać w embedded z pomocą hermetycznego
    promila aplikacji embedded obwarowanymi certyfikatami i komitetami
    wydaje mi się, przyznaje, zabawny, dlatego to ciągne dalej. A przy
    okazji jesli chodzi o Pascala ...
    ---
    Jeśli chodzi o Pascala to myślimy o Object Pascal czy Delphi i uznajemy go
    za mało perspektywiczny, ale dobry język. Koniec kropka.


  • 248. Data: 2016-10-25 17:30:22
    Temat: Re: Pascal - ankieta
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2016-10-25 16:10, Maciej Sobczak wrote:
    >>> I właśnie dlatego (z powyższego linku):
    >>> "Draw the connections between the modules on the editor, and watch your project
    come to life."
    >> Był kiedys taki kawałek kodu o nazwie LabView.
    > Sam napisałeś, że obecni amatorzy od Arduino to przyszli inżynierowie w firmach
    embedded.
    > Pokazuję Ci, co ci amatorzy teraz robią.

    Adruino. Takiego ruchu amatorow na rynku uC nie było nigdy.

    > Zgadnij, co będą robić za parę lat. Pisać szablony w C++?

    No. Mniej więcej. Moze nawet mniej bo biologia nie jest aż tak okrutna.

    >>> Proste? Właśnie w taki sposób zmniejsza się okno wejścia dla C++.
    >> Po LabView widac
    > Po ESLOV widać, że tak rośnie nowe pokolenie inżynierów.

    No, to widać po obu. Moving on.

    >> No ale jakos od 15 lat się nie daje rady przestawić.
    > Kolega obok twierdził, że "większość" softu w samochodach się robi w Simulinku.
    > Trochę przesadził z tą większością, ale i tak to są rysy na Twoich argumentach.
    > To się dzieje, niezależnie od tego, czy Ci się to podoba.

    Alez niech się dzieje. Tylko nic z tego nie wynika. LV nie dał rady
    zdominować nawet procenta rynku. Złosliwi twierdzą że jak by sprzedawali
    hardware za 1/10 ceny to może. Jestem pewny że co kilka lat ktoś musi
    przeprowadzić nastepną kompletną rewolucję na rynku embedded po której
    zostanie jak zwykle tylko troche rozrzuconych papierków po miętówkach na
    sali konferencyjnej. Moving on.

    >>>> Zrobi różnicę kiedy zapytasz jak szybko odpowie na przerwanie.
    >>> Ta nisza to może być pojedynczy procent całego rynku embedded.
    >> IMHO wkładasz za dużo zwykłych komputerów do pojcia embedded.
    > Niedawno powstało takie pojęcie jak "deeply embedded", bo niektórzy nie mogą się
    pogodzić z postępem w hardwarze.

    Ale to nie jest postęp że masz coraz szybsze procesory *wszedzie* bo w
    ogromnej i ignorowanej przez Ciebie części procesory nie zmieniają
    prędkości na wieksze. Ba, odchudzają się z ficzerów, zmienia rdzenie na
    urposzczone, dodaje hardware pozwalające zrobić coś sprzetowo itd. Takie
    do migania diodą i sterowania silnikiem pralki. Przypuszczalnie ten
    rynek to kilka rzedów więcej niż sterowników czarnych skrzynek w
    samolotach które uważasz za istotny w tej dyskusji (a ja komiczny).

    > Podsumujmy: piekarnik/pralka/zmywarka sterowana mikrokontrolerem 8051 to jest
    system embedded.
    > Jeśli w następnej wersji piekarnika/pralki/zmywarki tego samego
    producenta będzie
    > mały komputerek z Linuksem, to to już nie jest embedded. Dlaczego? Bo
    specjaliści od
    > embedded mają naruszone ego? No to sorry.

    Pokaż gdzie jest granica. Używanie hasła embedded do wszystkiego traci
    sens tej rozmowy. Smartfony to już jest wszystko, bo po drugiej stronie
    siedzi AtTiny13 i nijak nie ma tutaj zadnej analogii czegokolwiek a w/g
    Ciebie to jest wszystko embedded. Oczekuje że mój laptop jak tylko go
    podniosę można nazwac smartfonem a mój pecet po wsadzeniu akku i
    monitore na taśmie to będzie laptopem.

    >> Nie. Mam tony pecetów z przyczepionym LCD i baterią. Nijak nie widzę
    >> dlaczego miałbym to nazywać embedded.
    > https://en.wikipedia.org/wiki/Embedded_system

    I to lusterko ze smarfonem spełnia tą definicje? Smarfon spełnia tą
    definicję?

    >> Czy jak do mojego peceta dokleje
    >> monitor i klawiaturę to tez bedzie embedded?
    > To zależy, czy będzie częścią większego produktu.

    Jak dokleje jeszcze lusterko to już będzie embedded? A jak takie duże to
    już? A jak za tym lusterkime będzie monitor to już?

    > Jeśli ten monitor i klawiatura są akurat na frontowym panelu w samochodzie
    >, to tak, ten pecet jest systemem embedded. Sorry. Nie ja wymyśliłem
    definicję.

    To nie jest kwesia czy w samochdozie masz embeddeed tylko czy te
    miliardy telefonów z java są embedded czy są mniejszymi pecetami? A może
    nie ma róznicy i powinniśmy tą rozmowę nie prowadzić o embedded tylko o
    mikrokontolerach? To zaraz przyjdzie jakiś misio i zacznie gadać o tym
    że SoC to taki uC tylko większy itd itp.

    Wyciągasz sobie z embedded dośc szeroki zakres hardware i rzucasz nim tu
    i tam jak wygodniej. OK, trudno, co robić. Głuopia definicja to i głupie
    trolowanie.

    >> Ta nisza będzie może niszą, ale obawiam się że sterowanie wektorowym
    >> falownikiem dalej jest nie za bardzo w zasięgu Javy na Galaxy.
    > Cieszę się, że znalazłeś sobie ciekawą i niezagrożoną niszę zawodową.

    Ich jest całkiem sporo. O dziwo nie pracuje zawodowo jako programista
    embedded.

    >> Się pisze testy. A w czym?
    > Skup się: w Excelu.
    > (oczywiście nie jest to jedyna opcja, ale o tyle ciekawa, że kompletnie oderwana od
    dyskusji nt. wyższości C++ nad C)

    Interesujące. A w czym sie je implementuje? Zapewne to już nie jest
    istotne? A może masz na mysli systemy kontroli specyfikacji i testowania
    które z *faktycznym* testowaniem mają tyle wspólnego co referencja z
    bazy danych?

    >> Dalej nie rozumiesz. Jeśli lampka ma zgasnąc z C to sprawdzenie czy kod
    >> w C woła właściwą funkcję jest znacznie trudniejsze niż w C++.
    > Dalej nie rozumiesz. Jeśli lampka ma zgasnąć, to w jakiejś chwili na jakimś
    outpucie ma być LOW (powiedzmy).
    > Albo jakaś zmienna lub wartość w jakieś tablicy albo strukturze ma być LOW. Itp.
    > Zrobienie testu na takie coś nie zależy od tego, czy ustawianie tej wartości jest w
    C czy w C++.

    Zależy. W końcu ktoś kiedyś fizycznie musi to coś odczytać z przestrzeni
    w której działa C/C++.

    > W szczególności, uwaga, test można zrobić *zanim* powstanie ten kod

    Nie uzywaj aż takich oczywistości.

    > i tym bardziej wtedy widać, że robienie testu nie zależy od tego, czy gaszenie
    lampki jest w C, czy w C++.

    Dalej nie wyjasnileś jak ten test czyta ten LOW. To jest *istotne* i gdy
    zrozumiesz dlaczego UVM trzęsie światem FPGA zrozumiesz rownież dlaczego
    jest istotne *jak* się tam implementuje testy i dlaczego 10 lat trwało
    dojście do tego. Tak, w aplikacjach krytycznych też.

    >> Narzuca bardzo wiele.
    > Na przykład?

    Na przykład metodykę testowania od dupereli jak raporty, przez sledzenie
    specyfikacji po precyzyjne informacje jak testować na poziomie
    implementacji pojedynczych machnięć drutami.

    >>> Ale stawia cele do spełnienia, które łatwiej jest spełnić w C (!), niż w C++.
    >> To nie może być prawda z racji że C jest w uproszczeniu podzbiorem C++.
    > Błąd logiczny. Właśnie dlatego jest łatwiej w C, że C jest (w uproszczeniu)
    podzbiorem C++.
    > Dzięki temu ilość różnych rzeczy do sprawdzenia w kodzie jest mniejsza (sic!).

    Nie, ponieważ w C emulujesz zachowania ktore w C++ masz OOTB. Na tym
    polega róznica. Na tym że legacy programmers w C *emulują* zachowania
    C++ jak RAII. I to *trzeba* testować intensywniej niż wypociny
    kompilatora. Bo wypociny jednostek białkowych są z definicji popsute
    *bardziej* niż wypociny kompilatora.

    >>> Bo niektóre urządzenia embedded są krytyczne?
    >>> W szczególności te, w których chciałbyś pytać o czas odpowiedzi na przerwanie?
    >> Czyli te na Javie z VM popędzane z Linuxem? Czy własnie rozmawiam z
    >> druga osobowością?
    > Uzupełniam:
    > Jeżeli w danym systemie embedded nie interesujesz się czasem odpowiedzi na
    przerwanie
    >, to prawdopodobnie jest to system rozrywkowy, np. lustro z Andoridem z prognozą
    pogody.

    Interesujące. Przecietny DMA w byleczym wymaga krytycznego czasu
    odpowiedzi na przerwanie. Od mówiącej chińskiej lalki po sterownik dysku
    w klastrze. DMA jest wszedzie poza 8051 i AVR. I wszedzie masz
    zagadnienie RT. Oczywiście zawsze można ściemniać że zajmie się tym VM
    Javy a kod za to odpowiedzialny piszą krasnoludki.

    > Natomiast jeżeli jesteś zainteresowany tym czasem, to prawdopodobnie jest to system
    > krytyczny a wtedy chcesz mieć jak najłatwiejsze narzędzia weryfikacji.

    Najłatwiejsze narzedzia weryfikacji do C nie istnieją. To nie ten język.
    C++ też nie.

    Był kiedyś taki język e przeznaczony tylko do testowania o świetlanej
    przyszłości. Niewiele można na ten temat znaleźć bo to raczej radosna
    twórczość hindusów. Całkowicie poświęcony byciem abstrakcyjnym względem
    implementacji i języka ktory testuje. Obecnie można książkami na jego
    temat palić w kominku a i to krótko bo była jedna i chyba tyle. Ale za
    to ile szumu, konferencji i posterów!

    >>> I właśnie ten większy stosunek utrudni weryfikację
    >> Nieprawda. Weryfikację utrudnia cieżki do czytania kod,
    > Więc pisz kod łatwy do czytania. Standardy kodowania po to są.

    Standard kodowania nie czyni kodu latwiejszym w czytaniu na poziomie
    algorytmiki. Cieżko popelnić bład jedną spacją za dużo więc standardy
    kodowania w niewielkim stopniu wpływają na generację błedów przez
    programiste. Wpływa czytelność a więc rozumienie co autor mial na myśli.
    W typowych wypocinach embedded zazwyczaj oznacza to przeczesanie sześciu
    makr do emulacji RAII zmielone z #define na przemian z #include do
    emulacji template.

    >> kłopotliwe
    >> implementowanie testów
    > Testy pisze się z wymagań. N-ty raz to powtarzam.

    Jak typowy menager: piszcie tak zeby było dobrze.

    >> i kiepski związek kodu (rysowanie z LabView) z
    >> wynikiem (generowany C).
    > Bingo. Dlatego C++ jest trudniejszy w weryfikacji, niż C
    >, bo w C++ jest większy przeskok między kodem (źródłowym) a wynikiem (obiektowym).

    Ide o zakład że nie weryfikujesz tego związku żadnym narzedziem i to
    tylko puste hasła. W przypadku językow HDL taka weryfikacja zazwyczaj
    oznacza wykonanie tych samych czynności na dwóch symulatorach roznych
    producentów i komapracje wyników. I to wcale nie oznacza że choć jeden
    jest dobry. To nic nie oznacza. Podnosi tylko jakość snu zespołu.

    Przeciętny projekt fpga jest na tyle skomplikowany że nie da się go
    zweryfikować dowolną metodą jaką znamy. Zakłada się pewien % jakości i tyle.

    >> Pierwsze słyszę żeby 20MB kodu wynikowego więcej z powodu życia
    >> templates mialo byc przeszkodą weryfikacyjną
    > To jest tzw. total showstopper a nie przeszkoda.

    Serio? A niby jak? Masz swój embedded z 2GB flash. program zajmuje po
    kompilacji z 400MB. Każdy bajt Twoj zespół dronów sprawdził, czy zgadza
    się z kodem źrodłowym. Teraz masz +20MB więcej. To przeciez tylko
    kilkaset lat więcej sprawdzania bajt po bajcie. W czym widzisz problem?

    >> Po stronie kodu jest 10x mniej
    > Zaraz, zaraz. Powyżej napisałeś, że kodu jest 20MB więcej, teraz piszesz, że kodu
    jest 10x mniej. Gubisz się?

    Kodu źródlowego mniej, kodu wynikowego więcej. Co poradze na to że to
    kod i tamto kod?

    > Jeżeli w Twoim projekcie zrobiło się 10x mniej kodu źródłowego a jednocześnie
    przybyło 20MB kodu wynikowego, to leżysz na weryfikacji.
    > Hasło: traceability.

    Puste. Dotyczy ono kodu źródlowego. Nie wynikowego.

    Zaznacze też że w przypadku *ogromnych* projektów FPGA korzysta się
    rownież z certyfikaowanych syntezerów i symulatorów. Naprawde myslisz że
    ktokolwiek jak przybijał pieczatkę to mial pewnośc że takowy działa
    poprawnie? Tego nawet w pojedynczym promilu nie da się stwierdzić.
    Przechodza jakiś tam zestaw testów. Przejscie wszystkich ściezek jest
    niemożliwe fizycznie. Ufa się na jakiś procent. Sorry, tak działa świat.
    I co ważne: tam "kod wynikowy" to z grubsza sieć bramek. Każda synteza
    robi ją inaczej. Powiedzmy że dostajesz milion bramek i dwa miliony
    drutów. Drukujesz to na płachcie wielkości boiska i armia ludzi z lupami
    ropoczyna proces weryfikacji. Tak, naprawdę. Zupełnie jak inni bajt po
    bajcie oglądaja assembler po każdej kompilacji.

    >>> . Bo w branży krytycznej musisz wykazać ciągłość metody inżynierskiej
    >> Pomiędzy jednym a drugim masz kompilator.
    > To jest nieciągłość.

    Więc jak rozumiem kompilujesz na kartce (notatnikowi tez bym nie ufał!).

    >> Możesz wygazać formalnie jego
    >> działanie?
    > Jeżeli to jest kompilator C++, to nie da się tego zrobić jeszcze bardziej, niż nie
    da się gdy to jest kompilator w C.

    Ale możesz dla swojego? Ktoś to wykazał? Czy tylko ma pieczatkę?

    > Właśnie dlatego lepiej, żeby był C.

    Żadna roznica. I jeden i drugi nie jest mozliwy do weryfikacji. Bazujesz
    na kompilatorze z pieczatką i tyle. Polepsza może to jakośc snu i
    pozwala osiągnąc pewien poziom dupoochrony. Nie ma żadnej magicznej
    ciągłosci na którą się powołujesz.

    >> Jesli nie to musisz za każdym razem sprawdzać kod
    >> w C z kodem w asm. Ręcznie.
    > Tak. Sorry, taka branża.

    Współczuje. Sprawdź czy nie czeka cie przyszlośc w kopaniu rowów. Z
    prostej przyczyny: nie robicie tego. Ewentualnie robicie to w projektach
    z gatunku miganie diodą gdzie to jest fizycznie możliwe.

    > Dlatego łatwiej się to robi gdy kod źródłowy jest w C.
    > Naprawdę.

    Nie robicie tego lub robicie pierdołowate aplikacyjki. Tego nie da się
    zrobić albo można mówić że się robi a oszukiwać (np. weryfikowac kawałek
    i twierdzić bez podstaw że inne kawałki tego nie psują jak się zmienia kod).

    >> Już Ci napisałem jak duży producent pisal w certyfikowanym kompilatorze
    >> C z wielką dziurą.
    > Nie ma problemu - certyfikował tą resztę wokół dziury.

    Nie. Dziurę wykryto po certyfikacji. Bo tak ta certyfikacja wygląda.
    Ziutek, na oko działa, przyp... pieczatkę, niech se zarobią. To na oko
    to tysiące testów testujących może max kilka procent interakcji w
    kompilatorze. Tylko testów tych testów nie ma. I ich testów.

    Moment w którym mozna jeszcze bylo formalnie weryfikować kompilatory
    czegokolwiek to chyba okolice lat 80tych. Natomiast chyba można ciągle
    assemblery. Czy chciałbys może wyciągnąc z tego wniosek że pisanie w
    asseblerze jest obaczone mniejszą iloscią błedów niż w C?

    >> Zaznaczam przy okazji że w tym czasie kiedy oni w nim
    >> pisali gcc osiągał lepsza jakość kodu wynikowego i nie miał bugów.
    > Bzdura. Bugzilla pokazuje, że w historii gcc nigdy nie było takiego przedziału
    czasu, żeby nie było bugów.

    Zapomniałem dopisać: nie miał takich bugów. Chyba nie zakładasz że
    jestem aż takim idiotą, co?

    >> Bugi pochodzace z kompilatorów to promil promila problemu
    >> bugow w ogólności.
    > W branży rozrywkowej? Oczywiście.

    W każdej. Od bardzo dawna. Już mineły lata 80te. Całkiem przyzwoite
    kompilatory mamy.

    >> Piszesz o embedded tak jak Ci w danej chwili
    >> pasuje. Raz to wypasione systemy z Linuxem i Java a po chwili
    >> certyfikowane produkty
    > Ty sam ten temat szeroko traktujesz. Raz o Arduino, drugi raz o falownikach...
    Próbuję odpisywać wg bieżącego, zmiennego kontekstu.

    Akuratnie falowniki i Atmega leża mniej więcej w tej samej przegródce.
    Sam mam jeden na Atmega.

    >> Udowadnianie że c++ nie ma co szukać w embedded z pomocą hermetycznego
    >> promila aplikacji embedded obwarowanymi certyfikatami i komitetami
    >> wydaje mi się, przyznaje, zabawny, dlatego to ciągne dalej.
    > Ale ja nie pisałem tylko o promilu certyfikowanych. Również o tej gigantycznej
    masie rozrywkowych, z Javą w środku.

    Wiec po co argumenty z jednej strony przenosić na drugą? Czy któś uzywa
    certyfikowanych kompialtorów do Javy? A może uzywa GC w apliakcja RT w
    samolocie? Może i to embedded i tamto embedded ale przeciez to zupełnie
    inne embedded!

    > Pytanie teraz, czy pomiędzy tymi dwoma kategoriami jest wystarczająco dużo miejsca.
    > Pewnie jest, ale nie na tyle, żeby można było pisać o niezastąpionym C++

    Ależ tam jest od groma miejsca. Widzisz świat z wlasnego krzesła. Troche
    ruchu w lewo, w prawo. ARMy przejęły rynek, w wersjach miniaturowych.
    Tam jest w cholere miejsca nawet na zombie 6502. jak wymyslisz za chwile
    coś z rdzeniem AVR i ze 100 makrokomórkami to rynek wessa bez zająknięcia.

    >, którego nic nie wyprze. Właśnie wypiera (albo nie dopuszcza), z obu tych stron.

    Tak, od 15 lat.

    > W branży embedded C++ jest w podobnym ścisku i pod podobną presją konkurencji, jak
    na desktopie, z podobnych powodów.

    Tak na desktopie od 30 lat. Tu wróżbitów było więcej. Co roku coś nowego
    jest rewolucją. Bitów szkoda.

    >> A przy
    >> okazji jesli chodzi o Pascala ...
    > Nie widziałem w embedded.

    Był. Niestety nie pomnę jaki, ale był. Autor twierdził że nic lepszego
    na uC nie wymyślono. Zapamiętałem to bo wtedy łatwiej poznać.


  • 249. Data: 2016-10-25 17:39:11
    Temat: Re: Pascal - ankieta
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2016-10-25 17:28, re wrote:
    > Jeśli chodzi o Pascala to myślimy

    Ale kto konkretnie?


  • 250. Data: 2016-10-25 17:39:53
    Temat: Re: Pascal - ankieta
    Od: "re" <r...@r...invalid>



    Użytkownik "Maciej Sobczak"

    ...
    > A przy
    > okazji jesli chodzi o Pascala ...

    Nie widziałem w embedded.
    ---
    Czemu właściwie dyskutujesz ? Zobacz na temat. Ktoś podał tutaj środowisko
    komercyjne do programowania 8051 itp w Pascalu.

strony : 1 ... 10 ... 20 ... 24 . [ 25 ] . 26 ... 28


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: