eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Dlaczego software to F35 jest pisany w C++ a nie w Ada
Ilość wypowiedzi w tym wątku: 93

  • 51. Data: 2012-09-28 16:54:38
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Roman W <r...@g...com>

    W dniu piątek, 28 września 2012 12:33:42 UTC+1 użytkownik Maciej Sobczak napisał:
    > W dniu piątek, 28 września 2012 10:54:11 UTC+2 użytkownik Roman W napisał:
    >
    >
    >
    > > Glowna roznica polega na tym, ze producent sterownikow do rozrusznika serca czy
    samolotu prawnie odpowiada ze mozliwe fakapy, lacznie z mozliwa wizyta w wiezieniu,
    natomiast jezeli sterownik dziala dobrze, to dostanie umowiona zaplate, ewentualnie
    wyplacajac swoim programistom skromne bonusy na Swieta. Asymetria zachet jest taka,
    ze bardziej sie oplaca byc 2x ostroznym niz szarzowac.
    > >
    > >
    > > W finansach jest zupelnie odwrotnie: koles ktory napisze system do algotrading
    ktory przegwizda $100mln kasy pracodawcy, w najgorszym wypadku straci prace.
    Natomiast jezeli system zarobi $100mln, to bonusy moga wyniesc i 100% rocznej pensji.
    Asymetria zachet jest taka, ze bardziej sie oplaca szarzowac, kosztem bezpieczenstwa.
    Dopiero akcjonariusze, wierzyciele firmy (i czasami podatnicy) sa naprawde "on the
    hook" jesli chodzi o fakapy, ale oni z kolei nie nadzoruja bezposrednio procesu
    produkcji software'u.
    >
    > To jest chyba bardzo dobra analiza tego problemu.
    > A może to nie jest problem? Skoro jest akceptowane przez zainteresowanych...

    Nie przez wszystkich zainteresowanych.

    RW


  • 52. Data: 2012-09-28 16:57:31
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Roman W <r...@g...com>

    W dniu piątek, 28 września 2012 13:03:41 UTC+1 użytkownik Edek Pienkowski napisał:
    > Z tego punktu widzenia nie tylko rozwiązania związane z
    > zarządzaniem projektem, ale też techniczne mają wielki
    > wpływ na powodzenie lub nie całości - tylko dlatego moim
    > zdaniem warto dyskutować nad wyborem języka programowania.
    > W idealnym świecie sferycznych programistów nie miałoby
    > to większego znaczenia.

    Ale wybor jezyka jest zawsze konsekwencja panujacej kultury i podejscia do kwestii
    bezpieczenstwa. W typowym banku "wybor jezyka" oznacza wybor pomiedzy Java, C# i C++.
    Nikt nie bedzie sie wyglupial z propozycjami typu Ada i uzasadnial ich wzgledami
    bezpieczenstwa, bo uslyszy, ze marnuje czas grupy.

    RW


  • 53. Data: 2012-09-28 19:35:24
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-09-28 10:17, Maciej Sobczak wrote:
    > Zastanów się najpierw *po co* istnieją bezpieczne języki.

    Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
    nalepszym stopniu.

    Gdybysmy tworzyli oprogramowanie bez bledów takie języki nie mają racji
    bytu. W związku z tym podstawowa cechą bezpiecznego języka jest
    podwyższenie jakości poprzez eliminację błedów nawet kosztem wydajności
    bądź wyprucia żył programisty poprzez udziwniona składnię.

    > czyli do interakcji ze sterowanikami urządzeń albo wręcz do bezpośrednich odwołań
    do pamięci

    *G* prawda. Sterowanie rakietą poprzez algorytmy nawigacyjne *NIE*
    polega na dziobaniu po gołej pamięci bądź zapalaniu bitów na porcie IO
    uC albo sprawdzanie czy w milionie miejsc nastapil overflow. Sterowanie
    rakietą polega na realizacji (zapewne) statycznego pamieciowo zadania
    matematycznego. A jakiś drugorzędny duperelek zajmuje się częscią
    łaczącą wyniki z elektroniką. W załaczonym przykładzie sterowania
    rakietą nie ma śladu po *sterowaniu* w twoim sensie, jest natomiast ślad
    po *obliczaniu*. Programista zaliczył fail, tym bardziej komiczny że
    wypruto sobie żyły na użycie Ady która okazała się wydmuszką bo nic nie
    dała. Prawdopodobnie dałbym osobiście radę naklepać bezpieczną klasę do
    konwersji w C++ która dzięki prostym zabiegom *uniemożliwiła* by
    programiście jej nie-użycie bez chamskich sztuczek. Głupi C++ potrafił
    by lepiej zabezpieczyć przed radosną twórczością byłych programistów
    demek. Żałosne.

    >, bo właśnie tak wyglądają te interakcje na odpowiednio niskim poziomie.

    Tutaj *nie* było niskiego poziomu. Jesli zaś ktoś matematykę i overflow
    implementuje ręcznie na bitach jak w przytoczonym przykładzie to jest
    idiotą.

    > Otóż żeby dany język w ogóle się do tego nadawał
    >, to musi udostępnić wszystkie narzędzia z rodziny
    > memset, memcpy, reinterpret_cast oraz link z dowolnym symbolem.

    Żadna z tych funkcji nie jest wymagana w liczeniu kąta otwarcia
    przepustnicy lewej dyszy.

    > Ada to wszystko umożliwia, ale trzeba o te rzeczy poprosić bardziej, niż w C. I to
    "bardziej" jest właśnie miarą bezpieczeństwa, bo w C te rzeczy spadają programiście
    na głowę same.
    > Język, który tych narzędzi nie udostępnia *nie nadaje się do tworzenia bezpiecznych
    systemów*.

    Te narzędzia na szczęscie udostepnia asm. I nic dziwnego że ten kawałek
    algorytmu naklepano w stylu asm. Zapewne resztę też. I tyle było z tej Ady.

    > Proste?

    Jednak za bardzo to uprościłeś. Uprościłeś do systemów embedded
    zajmujących się *bezpośrednim* sterowaniem. To tylko pewien zbiór
    problemów. Niekompletny.


  • 54. Data: 2012-09-28 22:39:39
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Maciej Sobczak <s...@g...com>

    W dniu piątek, 28 września 2012 19:35:26 UTC+2 użytkownik Sebastian Biały napisał:

    > > Zastanów się najpierw *po co* istnieją bezpieczne języki.
    >
    > Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
    > nalepszym stopniu.

    No właśnie. Ze znanych mi języków Ada robi to lepiej, niż inni.

    > > czyli do interakcji ze sterowanikami urządzeń albo wręcz do bezpośrednich odwołań
    do pamięci
    >
    >
    > *G* prawda. Sterowanie rakietą poprzez algorytmy nawigacyjne *NIE*
    > polega na dziobaniu po gołej pamięci bądź zapalaniu bitów na porcie IO
    > uC albo sprawdzanie czy w milionie miejsc nastapil overflow.

    Te rzeczy są konieczne.

    > Sterowanie
    > rakietą polega na realizacji (zapewne) statycznego pamieciowo zadania
    > matematycznego.

    Tak by było, gdyby rakiety latały tylko na papierze. Tymczasem one latają w świecie
    rzeczywistym i oprócz rozwiązywania zadań matematycznych muszą wziąć na klatę różne
    upierdliwości tego rzeczywistego świata, takie jak np. upływ czasu. Czy hasło "system
    czasu rzeczywistego" coś Ci mówi?

    Pisałem wcześniej o interakcjach z procesami fizycznymi i cały czas przy tym
    jesteśmy. Upływ czasu jest procesem fizycznym, z którym interakcje polegają nie na
    tym, że się grzebie po portach I/O, ale na tym, że program ma być w określonych
    punktach *na czas*. To dosyć niskopoziomowy problem. Z tego co rozumiem nt. Ariane 5,
    to właśnie takie niskopoziomowe rozważania doprowadziły do decyzji o wyłączeniu
    bezpiecznika. Gdyby tego nie można było zrobić, to (tak tylko przypuszczam, ale nie
    mam podstaw zakładać, że rozważania wydajnościowe wyciągnęli sobie z czapki) program
    nie spełniłby zadanych ograniczeń. Czyli nie byłoby go.

    > A jakiś drugorzędny duperelek zajmuje się częscią
    > łaczącą wyniki z elektroniką.

    Drugorzędny? Duperelek? I w czym ten duperelek jest napisany, co?

    Do rozważenia są dwie alternatywy:

    1. Piszemy w bezpiecznym języku i łączymy go z modułami (tzw. duperelkami) napisanymi
    w niebezpiecznym języku, np. w C albo w asm.

    2. Piszemy wszystko w bezpiecznym języku i lokalnie wyłączamy bezpieczniki na
    potrzeby niskopoziomowych interakcji (uwaga: upływ czasu też tu się wlicza).


    Jaką niby wartość dodaną w dziedzinie bezpieczeństwa ma pierwsze rozwiązanie? Bo nie
    widzę.

    Natomiast w drugim przypadku widzę wartość dodaną w postaci jednolitości rozwiązania,
    co ułatwia znalezienie i zastosowanie chociażby narzędzi do analizy statycznej. Znam
    narzędzia, które radzą sobie z jednorodnym kodem, natomiast nie znam takich, które
    sensownie analizują zlepek modułów napisanych w kilku językach. Dostępność narzędzi
    to kolejny punkt na drodze do większego bezpieczeństwa i ten drugi wariant daje tu
    większe możliwości. Ada jest bezpieczniejsza właśnie przez to, że to, co chciałbyś
    zrobić w C, możesz dalej robić w Adzie.

    > Prawdopodobnie dałbym osobiście radę naklepać bezpieczną klasę do
    > konwersji w C++ która dzięki prostym zabiegom *uniemożliwiła* by
    > programiście jej nie-użycie bez chamskich sztuczek.

    Jeśli ta niemożność uniemożliwiłaby spełnienie oczekiwań związanych z koniecznością
    interakcji z procesami fizycznymi, to Twoja klasa nie nadawałaby się do robienia
    bezpiecznych systemów. Natomiast chamskie sztuczki w C++ *zawsze* są możliwe, bo do
    dyzpozycji są wskaźniki i reinterpret_cast (oraz memcpy, itd.). Zapewniam Cię, że ten
    sam programista, który wyłączył bezpieczniki w Adzie, poradziłby sobie z Twoją
    niehakowalną klasą. W obu przypadkach ominięcie bezpiecznika można uznać za chamskie.

    > Głupi C++ potrafił
    > by lepiej zabezpieczyć

    Nie, nie potrafiłby. Użycie systemu typów jako mechanizm ochronny miałby podobną
    skuteczność i podobnie nie zatrzymałby zdeterminowanego programisty.

    > przed radosną twórczością byłych programistów
    > demek.

    Jak już pisałem, nie znam nikogo z tego zespołu, więc nie wypowiadam się nt.
    przeszłości zawodowej tych ludzi.

    > Żałosne.

    Na razie pokazałeś tylko, że nigdy nie widziałeś systemu sterowania. W szczególności
    systemu sterowania czasu rzeczywistego.

    > Tutaj *nie* było niskiego poziomu. Jesli zaś ktoś matematykę i overflow
    > implementuje ręcznie na bitach jak w przytoczonym przykładzie to jest
    > idiotą.

    Ten program był poprawny, bo był przeznaczony dla poprzedniego modelu rakiety i tam
    wpisywał się w zadane warunki techniczne. Nie widzę powodu, dla którego można by tego
    programistę nazwać idiotą - napisał program w zgodzie z danymi. Natomiast to, że ten
    moduł bezrefleksyjnie użyto w nowszej rakiecie, w której warunki techniczne były już
    inne, to błąd wdrożeniowy. Ktoś wykorzystał słabsze cegły do budowy większego budynku
    - to nie wykonawca cegieł jest tu idiotą, tylko ten koleś, który wybrał złe cegły.
    Język pomógłby, gdyby miał włączony bezpiecznik.

    > > Otóż żeby dany język w ogóle się do tego nadawał
    > >, to musi udostępnić wszystkie narzędzia z rodziny
    > > memset, memcpy, reinterpret_cast oraz link z dowolnym symbolem.
    >
    > Żadna z tych funkcji nie jest wymagana w liczeniu kąta otwarcia
    > przepustnicy lewej dyszy.

    Co najmniej jedna z nich jest wymagana, żeby ta dysza faktycznie sie otworzyła. Bez
    tych ficzerów rakieta poleci tylko na papierze.

    > Te narzędzia na szczęscie udostepnia asm.

    Rozumiem - czyli bezpieczne rozwiązanie to połączenie bezpiecznego języka z asm, tak?

    Pomińmy fakt, że już samo łączenie języków to jazda bez pasów dokładnie równoważna
    reinterpret_cast, bo ze względu na rozdzielność systemu typów właśnie to trzeba
    zrobić na granicy języków.

    Po prostu zaplątałeś się we własne gacie w tej dyskusji.

    > > Proste?
    >
    > Jednak za bardzo to uprościłeś. Uprościłeś do systemów embedded
    > zajmujących się *bezpośrednim* sterowaniem. To tylko pewien zbiór
    > problemów. Niekompletny.

    Tak. Ale wystarczy do wykazania, że nie masz racji odrzucając Adę w całości. Twoje
    stwierdzenie, że Ada jest do niczego, było ogólne - mi wystarczy wskazać jeden
    przykład, żeby Twój ogólny kwantyfikator wyłożyć.
    Tym przykładem są... bezpieczne systemy. Ot, ironia.

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


  • 55. Data: 2012-09-28 23:32:58
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Edek Pienkowski <e...@g...com>

    Czy da się zasymulować w Google zawijanie linii do usenotwego 70
    char perline? Ja tak tylko pytam.

    Dnia Fri, 28 Sep 2012 13:39:39 -0700, Maciej Sobczak napisal:

    > W dniu piątek, 28 września 2012 19:35:26 UTC+2 użytkownik Sebastian
    > Biały napisał:
    >
    >> > Zastanów się najpierw *po co* istnieją bezpieczne języki.
    >>
    >> Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
    >> nalepszym stopniu.
    >
    > No właśnie. Ze znanych mi języków Ada robi to lepiej, niż inni.

    Heh. Haskell?

    >> > czyli do interakcji ze sterowanikami urządzeń albo wręcz do
    >> > bezpośrednich odwołań do pamięci
    >>
    >>
    >> *G* prawda. Sterowanie rakietą poprzez algorytmy nawigacyjne *NIE*
    >> polega na dziobaniu po gołej pamięci bądź zapalaniu bitów na porcie IO
    >> uC albo sprawdzanie czy w milionie miejsc nastapil overflow.
    >
    > Te rzeczy są konieczne.
    >
    >> Sterowanie rakietą polega na realizacji (zapewne) statycznego
    >> pamieciowo zadania matematycznego.
    >
    > Tak by było, gdyby rakiety latały tylko na papierze. Tymczasem one
    > latają w świecie rzeczywistym i oprócz rozwiązywania zadań
    > matematycznych muszą wziąć na klatę różne upierdliwości tego
    > rzeczywistego świata, takie jak np. upływ czasu. Czy hasło "system czasu
    > rzeczywistego" coś Ci mówi?

    Mi mówi, i polega na czym innym. Na nie wykonywaniu potencjalnie
    kosztownych operacji w wątkach realtime, tylko w wątkach nie-realtime.

    > Pisałem wcześniej o interakcjach z procesami fizycznymi i cały czas przy
    > tym jesteśmy. Upływ czasu jest procesem fizycznym, z którym interakcje
    > polegają nie na tym, że się grzebie po portach I/O, ale na tym, że
    > program ma być w określonych punktach *na czas*. To dosyć niskopoziomowy
    > problem. Z tego co rozumiem nt. Ariane 5, to właśnie takie
    > niskopoziomowe rozważania doprowadziły do decyzji o wyłączeniu
    > bezpiecznika. Gdyby tego nie można było zrobić, to (tak tylko
    > przypuszczam, ale nie mam podstaw zakładać, że rozważania wydajnościowe
    > wyciągnęli sobie z czapki) program nie spełniłby zadanych ograniczeń.
    > Czyli nie byłoby go.

    Przewidywanie czasy wykonania nie jest magią. Przynajmniej od 1 roku
    studiów.

    >> A jakiś drugorzędny duperelek zajmuje się częscią łaczącą wyniki z
    >> elektroniką.
    >
    > Drugorzędny? Duperelek? I w czym ten duperelek jest napisany, co?

    To zależy od implementacji, ale często w C. Minimalny kod.

    > Do rozważenia są dwie alternatywy:
    >
    > 1. Piszemy w bezpiecznym języku i łączymy go z modułami (tzw.
    > duperelkami) napisanymi w niebezpiecznym języku, np. w C albo w asm.
    >
    > 2. Piszemy wszystko w bezpiecznym języku i lokalnie wyłączamy
    > bezpieczniki na potrzeby niskopoziomowych interakcji (uwaga: upływ czasu
    > też tu się wlicza).
    >
    >
    > Jaką niby wartość dodaną w dziedzinie bezpieczeństwa ma pierwsze
    > rozwiązanie? Bo nie widzę.
    >
    > Natomiast w drugim przypadku widzę wartość dodaną w postaci jednolitości
    > rozwiązania, co ułatwia znalezienie i zastosowanie chociażby narzędzi do
    > analizy statycznej. Znam narzędzia, które radzą sobie z jednorodnym
    > kodem, natomiast nie znam takich, które sensownie analizują zlepek
    > modułów napisanych w kilku językach. Dostępność narzędzi to kolejny
    > punkt na drodze do większego bezpieczeństwa i ten drugi wariant daje tu
    > większe możliwości. Ada jest bezpieczniejsza właśnie przez to, że to, co
    > chciałbyś zrobić w C, możesz dalej robić w Adzie.

    Mało wiesz o statycznej analizie. I o projektach typu Arianne. Po
    pierwsze, stosuje się rozwiązania typu "mamy 3 implementacje i porównujemy
    wyniki" - jeżeli dwa dają te same wyniki, engage. Po drugie, istnieje
    coś takiego jak abstrakcja (w kontekście OS na przykład). Problem polega
    nie na braku narzędzi, ale na stopniu skomplikowania powiązań, gdzie
    niskopoziomowe IO ma jasną i prostą abstrakcję a problemy leżą w
    granicach statycznej analizy. Matematycznych, nie "czy możemy coś
    sparsować" - to byłby kiepski żart.

    >> Prawdopodobnie dałbym osobiście radę naklepać bezpieczną klasę do
    >> konwersji w C++ która dzięki prostym zabiegom *uniemożliwiła* by
    >> programiście jej nie-użycie bez chamskich sztuczek.
    >
    > Jeśli ta niemożność uniemożliwiłaby spełnienie oczekiwań związanych z
    > koniecznością interakcji z procesami fizycznymi, to Twoja klasa nie
    > nadawałaby się do robienia bezpiecznych systemów. Natomiast chamskie
    > sztuczki w C++ *zawsze* są możliwe, bo do dyzpozycji są wskaźniki i
    > reinterpret_cast (oraz memcpy, itd.). Zapewniam Cię, że ten sam
    > programista, który wyłączył bezpieczniki w Adzie, poradziłby sobie z
    > Twoją niehakowalną klasą. W obu przypadkach ominięcie bezpiecznika można
    > uznać za chamskie.

    Chyba nigdy nie pracowałeś w zorganizowanym projekcie o dużych wymaganiach
    niezawodności. Prosto jak to tylko możliwe: powyższe daje się zapewnić
    mając jednego świadomego reviewera na 20 wytresowanych małp tudzież
    specjalistów od innych rzeczy niż programowanie. Czyli jest trywialne.

    >> Głupi C++ potrafił by lepiej zabezpieczyć
    >
    > Nie, nie potrafiłby. Użycie systemu typów jako mechanizm ochronny miałby
    > podobną skuteczność i podobnie nie zatrzymałby zdeterminowanego
    > programisty.

    J.w.

    >> przed radosną twórczością byłych programistów demek.
    >
    > Jak już pisałem, nie znam nikogo z tego zespołu, więc nie wypowiadam się
    > nt. przeszłości zawodowej tych ludzi.
    >
    >> Żałosne.
    >
    > Na razie pokazałeś tylko, że nigdy nie widziałeś systemu sterowania. W
    > szczególności systemu sterowania czasu rzeczywistego.

    Systemy realtime są proste w obsłudze. To wszystko, co musi wiedzieć
    programista _używający_ RTOS, w przeciwieństwie do implementatora
    RTOS.

    >> Tutaj *nie* było niskiego poziomu. Jesli zaś ktoś matematykę i overflow
    >> implementuje ręcznie na bitach jak w przytoczonym przykładzie to jest
    >> idiotą.
    >
    > Ten program był poprawny, bo był przeznaczony dla poprzedniego modelu
    > rakiety i tam wpisywał się w zadane warunki techniczne. Nie widzę
    > powodu, dla którego można by tego programistę nazwać idiotą - napisał
    > program w zgodzie z danymi. Natomiast to, że ten moduł bezrefleksyjnie
    > użyto w nowszej rakiecie, w której warunki techniczne były już inne, to
    > błąd wdrożeniowy. Ktoś wykorzystał słabsze cegły do budowy większego
    > budynku - to nie wykonawca cegieł jest tu idiotą, tylko ten koleś, który
    > wybrał złe cegły.
    > Język pomógłby, gdyby miał włączony bezpiecznik.

    Ok. Smoke and mirrors i bezpieczniki Ady.

    >> > Otóż żeby dany język w ogóle się do tego nadawał
    >> >, to musi udostępnić wszystkie narzędzia z rodziny
    >> > memset, memcpy, reinterpret_cast oraz link z dowolnym symbolem.
    >>
    >> Żadna z tych funkcji nie jest wymagana w liczeniu kąta otwarcia
    >> przepustnicy lewej dyszy.
    >
    > Co najmniej jedna z nich jest wymagana, żeby ta dysza faktycznie sie
    > otworzyła. Bez tych ficzerów rakieta poleci tylko na papierze.

    J.w., automatyka na poziomie przemysłowym jest dobrze przećwiczona.

    >> Te narzędzia na szczęscie udostepnia asm.
    >
    > Rozumiem - czyli bezpieczne rozwiązanie to połączenie bezpiecznego
    > języka z asm, tak?
    >
    > Pomińmy fakt, że już samo łączenie języków to jazda bez pasów dokładnie
    > równoważna reinterpret_cast, bo ze względu na rozdzielność systemu typów
    > właśnie to trzeba zrobić na granicy języków.
    >
    > Po prostu zaplątałeś się we własne gacie w tej dyskusji.

    Wcale ale to wcale nie. Język to narzędzie, nikt nie każe młotkiem
    bić się w palec. Problemy są na innym zupełnie poziomie.

    >> > Proste?
    >>
    >> Jednak za bardzo to uprościłeś. Uprościłeś do systemów embedded
    >> zajmujących się *bezpośrednim* sterowaniem. To tylko pewien zbiór
    >> problemów. Niekompletny.
    >
    > Tak. Ale wystarczy do wykazania, że nie masz racji odrzucając Adę w
    > całości. Twoje stwierdzenie, że Ada jest do niczego, było ogólne - mi
    > wystarczy wskazać jeden przykład, żeby Twój ogólny kwantyfikator
    > wyłożyć.
    > Tym przykładem są... bezpieczne systemy. Ot, ironia.

    Nie rozumiem ironii, ale nikt nie odrzuca Ady. Problem jest zupełnie
    gdzie indziej: Ada nic więcej nie daje. Porównywanie samego języka
    z innym nie ma podstaw w temacie systemów tego typu. Realia są
    po pierwsze dużo bardziej skomplikowane, a po drugie ci goście nie
    są "aż tak głupi" jak zakładasz.

    --
    Edek


  • 56. Data: 2012-09-29 00:19:19
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Roman W <r...@g...com>

    W dniu piątek, 28 września 2012 22:28:11 UTC+1 użytkownik Edek Pienkowski napisał:
    > Czy da się zasymulować w Google zawijanie linii do usenotwego 70
    > char perline? Ja tak tylko pytam.

    Google Groups jest coraz gorsze.

    > Dnia Fri, 28 Sep 2012 13:39:39 -0700, Maciej Sobczak napisal:
    > > W dniu piątek, 28 września 2012 19:35:26 UTC+2 użytkownik Sebastian
    > > Biały napisał:
    > >
    > >> > Zastanów się najpierw *po co* istnieją bezpieczne języki.
    > >>
    > >> Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
    > >> nalepszym stopniu.
    > >
    > > No właśnie. Ze znanych mi języków Ada robi to lepiej, niż inni.
    > Heh. Haskell?

    Haskell nie nadaje sie do zastosowan praktycznych, to jezyk akademicki. Lazy
    evaluation powoduje, ze bardzo ciezko jest przewidziec, jak szybko sie wykona i ile
    pamieci bedzie potrzebowal niewinnie wygladajacy kawalek kodu.

    > > rzeczywistego świata, takie jak np. upływ czasu. Czy hasło "system czasu
    > > rzeczywistego" coś Ci mówi?
    >
    > Mi mówi, i polega na czym innym. Na nie wykonywaniu potencjalnie
    > kosztownych operacji w wątkach realtime, tylko w wątkach nie-realtime.

    A watki realtime beda grzecznie czekaly, az ten "kosztowny" skonczy obliczenia? Wrog
    ktory usiluje zestrzelic Twoj samolot, tez grzecznie poczeka, az skonczysz obliczenia
    w watku nie-realtime?

    > Przewidywanie czasy wykonania nie jest magią. Przynajmniej od 1 roku
    > studiów.

    Zalezy w jakim jezyku. W C++ z funkcjami wirtualnymi mozesz miec problem, bo wolajac

    p->f();

    nie wiesz z gory, ktora implementacja f() sie wykona.

    > >> A jakiś drugorzędny duperelek zajmuje się częscią łaczącą wyniki z
    > >> elektroniką.
    > >
    > > Drugorzędny? Duperelek? I w czym ten duperelek jest napisany, co?
    >
    > To zależy od implementacji, ale często w C. Minimalny kod.

    Oprogramowanie do Mars Rover napisano wylacznie w C, btw.

    > Mało wiesz o statycznej analizie. I o projektach typu Arianne. Po
    > pierwsze, stosuje się rozwiązania typu "mamy 3 implementacje i porównujemy
    > wyniki" - jeżeli dwa dają te same wyniki, engage. Po drugie, istnieje

    Przeciez nie przetestujesz wszystkich kombinacji inputow, jakei moga sie przytrafic
    podczas lotu rakiety kosmicznej.

    RW


  • 57. Data: 2012-09-29 00:37:37
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Edek Pienkowski <e...@g...com>

    Dnia Fri, 28 Sep 2012 07:57:31 -0700, Roman W napisal:

    > W dniu piątek, 28 września 2012 13:03:41 UTC+1 użytkownik Edek
    > Pienkowski napisał:
    >> Z tego punktu widzenia nie tylko rozwiązania związane z zarządzaniem
    >> projektem, ale też techniczne mają wielki wpływ na powodzenie lub nie
    >> całości - tylko dlatego moim zdaniem warto dyskutować nad wyborem
    >> języka programowania.
    >> W idealnym świecie sferycznych programistów nie miałoby to większego
    >> znaczenia.
    >
    > Ale wybor jezyka jest zawsze konsekwencja panujacej kultury i podejscia
    > do kwestii bezpieczenstwa. W typowym banku "wybor jezyka" oznacza wybor
    > pomiedzy Java, C# i C++. Nikt nie bedzie sie wyglupial z propozycjami
    > typu Ada i uzasadnial ich wzgledami bezpieczenstwa, bo uslyszy, ze
    > marnuje czas grupy.

    Ze wszystkich osób nie podejrzewałem z tej strony wypowiedzi typu
    "wsyzscy znamy X, Y jest niepopularne, więc używamy X". Technologia
    nie jest konkursem popularności. To też jest częścią kultury, albo
    nie jest.

    Wybór języka zawsze ma oparcie w dostępności programistów ze znajmością,
    ale to nie jest jednowymiarowa decyzja - wybiera się język wraz z
    "czym chata bogata". Na tym opiera się m.in. wybór programistów
    kernela: "czym chata bogata" nam nie odpowiada, wybieramy proste
    C, którego wszyscy są w stanie się nauczyć więc to jest największy
    wspólny mianownik i dopasowujemy kulturę do kultury projektu. Decyzja
    na pewno nie prosta jak drut i - co widać na załączonym obrazku -
    niezbyt popularna, ale nie to jest istotne dla powodzenia projektu,
    biorąc pod uwagę wszystkie czynniki w tym jak najbardziej ludzkie,
    po prostu nie czynnik zwany "popularność" albo przynajmniej nie
    "popularność w kręgach, które niosą ze sobą inne wartości" tylko
    raczej "popularność w kręgach bardziej zbliżonych do tego,
    co nam się podoba" - dla kernela w tym przypadku - albo nawet
    "wybieramy tych z kulturą taką, że moda nie jest czynnikiem
    w niej dominującym".

    Wracając do Ady, nie wiem w jakich kręgach jest modna ani
    dlaczego, sam się akurat z Adą bezpośrednio nie zetknąłem,
    ale nie miałbym nic przeciwko, nawet gdyby mi niespecjalnie
    "leżała".

    --
    Edek


  • 58. Data: 2012-09-29 07:52:21
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-09-28 22:39, Maciej Sobczak wrote:
    >> Sterowanie
    >> rakietą polega na realizacji (zapewne) statycznego pamieciowo zadania
    >> matematycznego.
    > Tak by było, gdyby rakiety latały tylko na papierze.
    > Tymczasem one latają w świecie rzeczywistym
    > i oprócz rozwiązywania zadań matematycznych muszą wziąć
    > na klatę różne upierdliwości tego rzeczywistego świata
    >, takie jak np. upływ czasu. Czy hasło "system czasu rzeczywistego" coś Ci mówi?

    Więcej niż myslisz. I musze przyznać, że gdyby software ariane był
    "wyżyłowany co do cykla" to programiści nie powinni się zajmowac więcej
    programowaniem. Wyłączanie (bo można!) systemów bezpieczeństwa żeby
    zdobyć pare cykli więcej ...

    > Pisałem wcześniej o interakcjach z procesami fizycznymi i cały czas przy tym
    jesteśmy.
    > Upływ czasu jest procesem fizycznym, z którym interakcje polegają nie na tym
    >, że się grzebie po portach I/O, ale na tym, że program ma być w określonych
    > punktach *na czas*.

    Jeśli więc wymagana jest szybkośc to musisz pozegnać bezpieczeństwo. Oby
    dwóch rzeczy nic nie zapewnia. Czasem można za free dostać
    bezpieczeństwo statyczne, ale to potrafi byle C++.

    > To dosyć niskopoziomowy problem.

    Nawigacja nie jest problemem niskopoziomowym. Może byc problemem
    wydajności obliczeń, ale nie niskopoziomowym.

    >> A jakiś drugorzędny duperelek zajmuje się częscią
    >> łaczącą wyniki z elektroniką.
    > Drugorzędny? Duperelek? I w czym ten duperelek jest napisany, co?

    W czymś *prostym* co pozwoli na formalną weryfikacje.

    > Do rozważenia są dwie alternatywy:
    > 1. Piszemy w bezpiecznym języku i łączymy go z modułami (tzw. duperelkami)
    > napisanymi w niebezpiecznym języku, np. w C albo w asm.

    Oczywiscie - sterowanie PWM przepustnicą zdecydowanie lepiej realizować
    specjalizowanym kawałkiem elektroniki niż prosto z algorytmu nawigacji
    dziobać porty I/O.

    > 2. Piszemy wszystko w bezpiecznym języku i lokalnie wyłączamy bezpieczniki
    > na potrzeby niskopoziomowych interakcji (uwaga: upływ czasu też tu się wlicza).

    Czyli lokalnie nie jest bezpieczny. I tyle było z bezpieczeństwa.

    > Jaką niby wartość dodaną w dziedzinie bezpieczeństwa ma pierwsze rozwiązanie?
    > Bo nie widzę.

    a) możliwy arbitraż separowany hardwareowo przed wykonaniem poleceń
    b) możliwa implementacja asercji/constrains bez wiedzy algorytmu (np.
    przepustnica otwarta więcej niż 90% przez 1 sek oznacza błąd, odpalam
    procedurę awaryjną)
    c) możliwa formalna weryfikacja fragmentów systemu

    > Natomiast w drugim przypadku widzę wartość dodaną w postaci jednolitości
    rozwiązania
    >, co ułatwia znalezienie i zastosowanie chociażby narzędzi do analizy statycznej.
    > Znam narzędzia, które radzą sobie z jednorodnym kodem, natomiast nie znam takich
    >, które sensownie analizują zlepek modułów napisanych w kilku językach.
    > Dostępność narzędzi to kolejny punkt na drodze do większego bezpieczeństwa
    > i ten drugi wariant daje tu większe możliwości.

    Małe duperelki wykonawcze mozna łatwiej formalnie zweryfikować niż
    wielką kupę kodu. Rozbicie modułów softwareowych na kawałki hardwareowe
    i ich osobna weryfikacja pozawala zminimalizować błedy. I powiem tak:
    EDA jest o lata świetlne przez software w formalnej weryfikacji kodu.

    > Ada jest bezpieczniejsza właśnie przez to, że to
    >, co chciałbyś zrobić w C, możesz dalej robić w Adzie.

    :D True true ...

    >> Prawdopodobnie dałbym osobiście radę naklepać bezpieczną klasę do
    >> konwersji w C++ która dzięki prostym zabiegom *uniemożliwiła* by
    >> programiście jej nie-użycie bez chamskich sztuczek.

    > Jeśli ta niemożność uniemożliwiłaby spełnienie oczekiwań związanych

    ... z bezpieczeństwem Ady to .... wyłaczmy bezpieczniki !

    > Natomiast chamskie sztuczki w C++ *zawsze* są możliwe, bo do dyzpozycji
    > są wskaźniki i reinterpret_cast (oraz memcpy, itd.).

    Zupełnie jak w Adzie? Czekaj czekaj czy Ada jest nadzbiorem C++ w sensie
    niskopoziomowego gówna? OMG!

    > Zapewniam Cię, że ten sam programista, który wyłączył bezpieczniki w Adzie
    >, poradziłby sobie z Twoją niehakowalną klasą.

    A-ha ! Czyli oba są niebezpieczne !

    > W obu przypadkach ominięcie bezpiecznika można uznać za chamskie.

    I możliwe. Game over.

    > Na razie pokazałeś tylko, że nigdy nie widziałeś systemu sterowania.

    Telepatia jest niezdrowa.

    > W szczególności systemu sterowania czasu rzeczywistego.

    Może nie widziałem, ale jakieś tam napisałem.

    >> Tutaj *nie* było niskiego poziomu. Jesli zaś ktoś matematykę i overflow
    >> implementuje ręcznie na bitach jak w przytoczonym przykładzie to jest
    >> idiotą.
    >
    > Ten program był poprawny, bo był przeznaczony dla poprzedniego modelu rakiety
    > i tam wpisywał się w zadane warunki techniczne. Nie widzę powodu, dla którego
    > można by tego programistę nazwać idiotą - napisał program w zgodzie z danymi.
    > Natomiast to, że ten moduł bezrefleksyjnie użyto w nowszej rakiecie, w której
    > warunki techniczne były już inne, to błąd wdrożeniowy. Ktoś wykorzystał słabsze
    > cegły do budowy większego budynku - to nie wykonawca cegieł jest tu idiotą,
    > tylko ten koleś, który wybrał złe cegły.

    Bo wszystko Panie, to wina tych kolesi od kasy. Jezyk bezpieczny wszak był.

    > Język pomógłby, gdyby miał włączony bezpiecznik.

    Gdyby.

    >>> Otóż żeby dany język w ogóle się do tego nadawał
    >>> , to musi udostępnić wszystkie narzędzia z rodziny
    >>> memset, memcpy, reinterpret_cast oraz link z dowolnym symbolem.
    >> Żadna z tych funkcji nie jest wymagana w liczeniu kąta otwarcia
    >> przepustnicy lewej dyszy.
    > Co najmniej jedna z nich jest wymagana, żeby ta dysza faktycznie sie otworzyła.
    Bez tych ficzerów rakieta poleci tylko na papierze.
    >
    >> Te narzędzia na szczęscie udostepnia asm.
    >
    > Rozumiem - czyli bezpieczne rozwiązanie to połączenie bezpiecznego języka z asm,
    tak?

    To oznacza że Ada pozwala na to samo co ASM. Jak widać w przykładzie
    powyżej pozwala na dziobanie po bitach wektora i ręczną obsługę overflow
    - zupełnie jak asm. I w końcu ktos wpadl na pomysł: Skoro mamy Adę to
    możemy *bezpiecznie* s..dolić kod. I s..dolił.

    > Pomińmy fakt, że już samo łączenie języków to jazda bez pasów dokładnie
    > równoważna reinterpret_cast, bo ze względu na rozdzielność systemu typów
    > właśnie to trzeba zrobić na granicy języków.

    Łączenie językow przez hardware.

    > Po prostu zaplątałeś się we własne gacie w tej dyskusji.

    To tylko takie twoje wrażenie. Wymagane było by jednak uzycie
    bezpiecznego systemu do oceny, na przykład przez arbitraż .... oh wait.

    > Tak. Ale wystarczy do wykazania, że nie masz racji odrzucając Adę w całości.

    Niczego nie odrzucam. Prowadzę tylko mała krucjatę wobez religijego
    traktowania marnego języka jako zbawcy ludzości albo co najmniej
    systemów sterowania. Prawda jest taka że nie posiadamy *żadnego*
    bezpiecznego języka (może poza lispem :).

    > Twoje stwierdzenie, że Ada jest do niczego

    ... na szczęscie nie ma miejsca.


  • 59. Data: 2012-09-29 10:33:58
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Edek Pienkowski <e...@g...com>

    Dnia Fri, 28 Sep 2012 15:19:19 -0700, Roman W napisal:

    > W dniu piątek, 28 września 2012 22:28:11 UTC+1 użytkownik Edek
    >> Dnia Fri, 28 Sep 2012 13:39:39 -0700, Maciej Sobczak napisal:
    >> > W dniu piątek, 28 września 2012 19:35:26 UTC+2 użytkownik Sebastian
    >> > Biały napisał:
    >> >
    >> >> > Zastanów się najpierw *po co* istnieją bezpieczne języki.
    >> >>
    >> >> Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
    >> >> nalepszym stopniu.
    >> >
    >> > No właśnie. Ze znanych mi języków Ada robi to lepiej, niż inni.
    >> Heh. Haskell?
    >
    > Haskell nie nadaje sie do zastosowan praktycznych, to jezyk akademicki.
    > Lazy evaluation powoduje, ze bardzo ciezko jest przewidziec, jak szybko
    > sie wykona i ile pamieci bedzie potrzebowal niewinnie wygladajacy
    > kawalek kodu.

    Są praktyczne zastosowania Haskella. Co ciekawe, "niewinnie wyglądający
    kawałek kodu" to wrażenie subiektywne, jednym z pierwszych języków
    których się nauczyłem był Scheme - polecam każdemu programiście
    przejście choć jednego języka funkcyjnego i dowolny kod wygląda
    po tym inaczej.

    Ale może Haskell się nie nadaje.

    >> > rzeczywistego świata, takie jak np. upływ czasu. Czy hasło "system
    >> > czasu rzeczywistego" coś Ci mówi?
    >>
    >> Mi mówi, i polega na czym innym. Na nie wykonywaniu potencjalnie
    >> kosztownych operacji w wątkach realtime, tylko w wątkach nie-realtime.
    >
    > A watki realtime beda grzecznie czekaly, az ten "kosztowny" skonczy
    > obliczenia? Wrog ktory usiluje zestrzelic Twoj samolot, tez grzecznie
    > poczeka, az skonczysz obliczenia w watku nie-realtime?

    A jak policzyć coś zajmującego potencjalnie 10s w 0,1s? W RTOS jest
    jasny podział, nie przeskoczy się kwestii czasu natomiast wiadomo,
    co ile zabiera i jakie ma inne właściwości.

    >> Mało wiesz o statycznej analizie. I o projektach typu Arianne. Po
    >> pierwsze, stosuje się rozwiązania typu "mamy 3 implementacje i
    >> porównujemy wyniki" - jeżeli dwa dają te same wyniki, engage. Po
    >> drugie, istnieje
    >
    > Przeciez nie przetestujesz wszystkich kombinacji inputow, jakei moga sie
    > przytrafic podczas lotu rakiety kosmicznej.

    Inputy mają często nieskończenie wiele możliwości, ale są zbiorem.
    Matematycznie daje się stwierdzić, czy jakiś inwariant lub dzielenie
    przez zero zajdzie czy nie - geometrycznie szukając przecięć wynikających
    z reprezentacji kodu we wszystkich miejscach. Nawet mając nieskończony
    zbiór często daje się przewidzieć, że naruszenie inwariantu nie nastąpi,
    albo nastąpi w jasno określonym matematycznie przypadku. Przynajmniej
    dzisiaj to wiadomo, w oparciu głównie o programowanie liniowe, na podobnej
    zasadzie jak jedna z metod optymalizacji pętli w gcc, gdy nie da
    się przewidzieć ilości pętli i podobnych zmiennych, ale zna się ich
    zależności.

    --
    Edek


  • 60. Data: 2012-09-29 11:22:49
    Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
    Od: Marek Borowski <m...@...borowski.com>

    On 2012-09-29 07:52, Sebastian Biały wrote:
    > On 2012-09-28 22:39, Maciej Sobczak wrote:
    Wiesz co, wszytkie te twoje "argmumenty" przeciwko Adzie da sie
    zastosowac w dyskusji C vs. C++ przeciwko C++, gdzie przedstawiasz
    zupelnie odmienne stanowisko. Wez wyluzuj i zastanow sie nad tym co
    piszesz. A jezyk uniwersalny musi udostepniac niskopoziomowe operacje.



    Pozdrawiam

    Marek



strony : 1 ... 5 . [ 6 ] . 7 ... 10


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: