-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin2!goblin.stu.neva.r
u!aioe.org!eternal-september.org!feeder.eternal-september.org!reader01.eternal-
september.org!.POSTED!not-for-mail
From: heby <h...@p...onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: POpularno?? j?zyk?w programowania ??
Date: Mon, 7 Oct 2019 19:47:06 +0200
Organization: A noiseless patient Spider
Lines: 166
Message-ID: <qnftmt$8vc$1@dont-email.me>
References: <ZFueF.189972$Jh2.55867@fx39.am4>
<b...@g...com>
<5d835054$0$525$65785112@news.neostrada.pl>
<qm5o8c$6mr$1@news.icm.edu.pl>
<5d867c27$0$17361$65785112@news.neostrada.pl>
<qm5va9$c07$1@dont-email.me> <5d86b148$0$520$65785112@news.neostrada.pl>
<qm7c3j$pl6$1@dont-email.me> <5d87968d$0$503$65785112@news.neostrada.pl>
<qm875f$g8o$1@dont-email.me> <5d87b31a$0$522$65785112@news.neostrada.pl>
<qm8e0j$s55$1@dont-email.me> <qmgven$som$1@z-news.wcss.wroc.pl>
<f...@g...com>
<qmnls7$tml$2@news.icm.edu.pl>
<b...@g...com>
<qmtap2$kfe$1@dont-email.me>
<4...@g...com>
<qn5dj9$qh9$3@dont-email.me>
<b...@g...com>
<qn82tb$4uq$1@dont-email.me>
<0...@g...com>
<qnb1gg$68i$1@dont-email.me>
<9...@g...com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 7 Oct 2019 17:47:09 -0000 (UTC)
Injection-Info: reader02.eternal-september.org;
posting-host="310307e244db9c9ec2501078161cbd54"; logging-data="9196";
mail-complaints-to="a...@e...org";
posting-account="U2FsdGVkX1/dvTX7NkmR6XyVjg3FXlHS"
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
Thunderbird/60.9.0
Cancel-Lock: sha1:Z7EziJJzKK7XOy+Yk1Jt+37EBDU=
In-Reply-To: <9...@g...com>
Content-Language: en-US
Xref: news-archive.icm.edu.pl pl.comp.programming:214359
[ ukryj nagłówki ]On 06/10/2019 23:21, Maciej Sobczak wrote:
>> Bardzo prosta. Twój kompilator w poprawnej funkcji dodawania przypadkiem
>> zrobił mnożenie kiedy x=15 i y=90.
> To wychodzi w pokryciu kodu obiektowego.
Najpierw musisz znaleźć metodę testowania która zawiera dostatecznie
dużo przypadków.
>> Shit happens.
> Nie, nie happens.
Ależ happens. Na ten przykład popularną metodą testowania kodu
krytycznego, ale naprawdę krytycznego, jest psucie go w czasie
rzeczywistym i patrzenie gdzie i co wybuchnie analizując czy jest czy
nie podatny na uszkodzenia.
Nawet krzemowi się nie wierzy.
> Tzn. może są firmy, gdzie happens i się nie bada pokrycia (tak, tak, teraz ja sobie
dorabiam, dla równowagi do Twoich teorii, że w Ariane 5 nie było testów), ale tam
gdzie widzę, bada się i nie happens.
No ale jednak happens. Jesli nie to masz kompilator zewryfikowany
funkcjonalnie. Nie język, kompilator. Gratuluje.
W HDL jest jeszcze ciekawiej: co prawda można testować kod ale podczas
syntezy zamienia się on w graść tranzysotrów i tak ląduje w krzemie. Tam
jest dopiero zabawnie bo metody testowania software nie chcą pasować.
>> Czasem to tylko mignie
>> szybciej diodą a czasem wyśle samolot w kierunku gruntowym.
> Nie było przypadku, żeby samolot poleciał w kierunku gruntowym przez to, że użyto
jednego kompilatora a nie trzech.
Inaczej: akurat w tej branży testuje się kilkoma innymi metodami
również. Albo inaczej: z faktu że internet działa nie wynika że admini
są zbędni.
> Dlatego ten pomysł byłby potraktowany jako koszt bez wartości dodanej.
Nie "byłby" tylko jest stosowany. Może bardziej w HDLu ale w normalnym
programowaniu też.
>> A kod działa przypadkiem tylko dlatego że kompilator w jakimś miejscu
>> zamiast referencji użył wartości. W kodzie produkcyjnym użyje referencji
> Zaraz, zaraz... Testowałeś nieprodukcyjny kod a produkcyjny były jakiś inny?
Kod źródłowy ten sam. Kod wynikowy już niekoniecznie. Kompilator to jest
dość nietrywialny produkt.
> Tyle mądrości na temat weryfikacji a tu taki klops. Skup się.
No właśnie skup się, potwierdzenie kodu źródłowego, nawet metodami
formalnymi, nie oznacza że wynikowy jest poprawny. Potwierdzenie kodu
wynikowego unittestami czy innymi testami nie odpowiada na pytanie czy
będzie poprawnie się zachowywał na produkcji, to tylko przybliżenie do
ideału.
>> Aby zweryfikować narzędzia do weryfikacji.
> O, tu, widzisz, poruszyłeś ciekawe zagadnienie.
> Ale kwalifikację narzędzia robi się przed projektem, bo projekt zaczyna się mając
już zatwierdzone narzędzia.
Różnie bywa. Taka ciekawostka: weryfikację narzędzia robi się czasem na
słowo honoru: "działa od dziesięciu lat i nie ma problemu". Serio mówie.
Zarządzanie ryzykiem z braku środków pewnych opiera się o statystykę i
szczęście.
> I jeśli do tej kwalifikacji chcesz sobie użyć materiału testowego pochodzącego z
różnych kompilatorów, to właściwie może to mieć sens (ale nie musi).
Musisz zagwarantować że twój pewny kompilator jest pewny dla kodu
którego jeszcze nie ma. Dasz radę to udowodnić na etapie wyobu
narzędzia? Niektórzy stosują dupchrony w postaci wybierania narzędzi
certyfikowanych. Ale certyfikacja to nie jest brak bugów. To jest tylko
takie zapewnienie że tamci się też starali.
> Tylko że nadal nie ma sensu używać więcej niż jednego kompilatora do robienia tego
właściwego projektu.
Do robienia nie. Do weryfikacji musisz użyć środków adekwatnych do
ryzyka zdefiniowanego w planie. To może oznaczać np. rozbieranie na
pojedyncze bramki CPU na którym ten kod będzie działać aby wykluczyć
wątpliwości czy hardware jest pewne. Nie, nie wyssałem tego z palca.
>> Jest narzędziem które odpowiada na pytanie czy kod działa czy nie.>
> Kompilator? Nie, nie odpowiada na takie pytanie.
Oczywiśćie że odpowiada. Jesli masz tak w wyniku błedu kompialtora:
bool runUnitTesting()
{
return true;
....
}
To własnie wylądowałeś w dupie. Twój kompilator stwierdził że coś jest
okay choć nie jest.
> Właściwie to mogłoby nie być żadnego kompilatora, można posadzić człowieka z
zapasem kawy i herbatników i niech "kompiluje". I to nawet nie jest fikcja.
Tylko że to nie działa w praktyce ponieważ dodałeś dodatkową wartwę
błedów. Ktoś o nią zapyta.
>> Czasami odpowiada źle.
> Nie pokazałeś niczego takiego.
Mam masę uni testów które przechodzą mimo błednego kodu. Tylko dlatego
że urawło referencję ale obiekt dalej ma dobre dane, wyskoczyłem poza
tablicę a tam akurat dobre 0 itd itp. Mówie o błedach *KOMPILATORA* a
nie kodu. Fakt, to gówniany C++ ale nie zmienia to koncpecji ogólnej.
Testy nie mówią czy kod jest poprawny. Co najwyżej mówią że kod pod
testami daje spodziewane wyniki.
>> Nie. Wykazałeś że w jakiś warunkach Twój kod działa. A czy to te same
>> warunki kiedy będzie używany produkcyjnie?
> I w jaki sposób trzy kompilatory mają coś tu zmienić?
Zwiększają asymptotycznie pewność kodu. Kiedy w końcu coś spadnie z
białkiem w środku zapytają: a czy użyliście wszystkich osiąglanych metod
weryfikacji poprawniści kodu a jeśli nie to dlaczego? A ty im będziesz
bredził że postawiłeś kogoś z herbatnikami i kompilował na kartce bo to
żadna różnica skoro kod poprawny. BO TAK BYŁO W SPECYFIKACJI.
> Ilość kompilatorów wpływa na to, jak bardzo zmieniają się warunki w użyciu
produkcyjnym?
Pozwalają zminimalizować nieszczęscie związane z błedami w kompilatorze
lub z UB, z tym drugim nawet bardziej.
>> formalnej również to czy zweryfikowali narzędzia. Ponieważ smutni
>> panowie od certyfikowania nie są z kosmosu i znają realia to zapytali w
>> ILU różnych symulatorach potwierdzono działanie kodu i czy ich
>> producenci sami są certyfikowani do użycia w takiej branży.
> Wszystko się zgadza.
> Ale nie ma tu ani słowa o użyciu wielu kompilatorów.
Symulator. HDL. Niczym to się nie różni od kompilatora "normalnego", też
kompilator i w dodatku Ady + pierdoły.
> I jeśli jesteśmy w temacie samolotów i smutnych panów - standardy lotnicze są tak
napisane, że użycie wielu kompilatorów do kompilowania tego samego kodu w projekcie
nie jest podstawą do dodatkowego uznania (tzw. certification credit) w czasie audytu
certyfikacyjnego a weryfikacji kodu wynikowego nie robi się garścią kompilatorów, bo
kod ma być jeden. Ten sam w testach, co na produkcji.
To jest to samo źródło, ale nie ten sam kod który będzie pracował na
testach. Kompilatory nie są proste, a już na pewno nie są pewne. Dlatego
robi się corss-checki na róznych. Wiesz, ja piszę głównie o EDA i
głównie o HDL gdzie tego typu zabawy to codzienność.
Uzycie kilku narzędzi zwiększa pewność weryfikacji. Kila firm solidnie w
ostatnich latach robiło w gacie i kupiło (bardzo) drogie narzędzia
testując wszystko na wszystkim. "Dla pewności".
> Dlatego ten pomysł nie ma zastosowania w projektach krytycznych, w szczególności w
lotniczych. Prawie byłeś blisko w temacie
> kwalifikacji narzędzi (np. narzędzie do badania pokrycia kodu testami można
próbować kwalifikować przy użyciu materiału testowego z jakiegoś zestawu
kompilatorów, ale to i tak niewiele wnosi w konteście danego projektu, gdzie jest
jeden kompilator), ale generalnie mylisz pojęcia.
Albo z miejsca gdzie siedzę widać coś innego niż z Twojego. Siedzimy
gdzie indziej.
> No i fajnie, że znasz "człowieka pracujacego dla poważnej instytucji związanej z
lotnictwem".
Nie, to nie jest fajnie. Dowiadujesz się raczej jak ciężko pracuje się
nad trudnymi projektami. Na ten przykład dokumentowanie kodu trwa
znacząco dłużej niż jego pisanie. Trudno mieć pretensje ale nie każdy by
potrafił.
>> PS. A zupałnie na marginesie wszelkiej certyfikacji. Odpalam mój kod pod
>> trzema kompilatorami.
> Ja też - wtedy, gdy piszę biblioteki.
> Ale w projekcie krytycznym używa się jednego kompilatora. I testuje się kod
produkcyjny.
Super. Być może certyfikujesz używając róznych innych metod weryfikacji.
Nikt nie naciska na kilka kompilatorów. Ale kilku wielkich graczy
zdecydowało się na to. Widzisz, lista bugów w kompilatorach jest długa i
raczej nie zamknięta. W tych certyfikowanych też.
Następne wpisy z tego wątku
- 07.10.19 19:50 heby
- 07.10.19 23:08 J-23
- 08.10.19 08:11 AK
- 08.10.19 08:13 AK
- 08.10.19 08:48 AK
- 08.10.19 09:28 Maciej Sobczak
- 08.10.19 09:34 Maciej Sobczak
- 08.10.19 09:54 AK
- 10.10.19 21:40 heby
- 10.10.19 21:52 heby
- 10.10.19 23:08 AK
- 11.10.19 12:07 g...@g...com
- 12.10.19 16:34 heby
- 15.11.19 17:53 wloochacz
- 15.11.19 18:08 wloochacz
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-28 droga laweta
- 2024-11-28 Co tam się odpierdala w tej Warszawie?
- 2024-11-28 skąd się biorą tacy debile?
- 2024-11-28 JDG i utylizacja sprzetu
- 2024-11-27 Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Bydgoszcz => QA Engineer <=
- 2024-11-28 Zielona Góra => Spedytor międzynarodowy <=
- 2024-11-28 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-27 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-11-27 Zielona Góra => Senior PHP Developer <=
- 2024-11-27 Warszawa => Senior Java Developer <=