mboost-dp1

For C nørder


Gå til bund
Gravatar #2 - CBM
28. jan. 2019 05:57
Jeg har aldrig oplevet den slags problemer med fx GCC eller andre C compilere

Men det kan åbenbart opstå

Good to know

Der er ellers mange der har en fast overbevisning om at compilere er fejlfrie og det inkluderede mig indtil jeg læste dit link

På den anden side så er en compiler et program som alt andet og kan derfor naturligvis indeholde fejl

Gravatar #3 - arne_v
28. jan. 2019 14:48
#2

Det sker. Typisk i forbindelse med hård optimering. Så ender man op med noget kode, hvor der i kommentar står "med compiler XYZ version V skal du compile med optimization level N fordi med >N giver det fejl". Det er selvfølgelig typisk ved mere "usædvanelig" kode at problemet opstår.


Det sker også for GCC. Check f.eks. deres bug liste.
Gravatar #4 - arne_v
28. jan. 2019 14:50
#2

Derover så er der for nogle en meget stor forskel på:

* vi har testet grundet og ingen fejl fundet

og:

* vi har bevist at koden er korrekt
Gravatar #6 - Claus Jørgensen
28. jan. 2019 19:22
#4

Der kan stadigvæk være fejl i bevist korrekt kode. (Altså hvis man spørger en slutbruger)
Gravatar #7 - arne_v
29. jan. 2019 00:04
#6

En bevist korrekt correct compiler garanterer at når programmet kører så vil programmet gøre det som C source koden siger den skal.

Om C source koden gør det som brugerne ønsker er et helt andet spørgsmål.
Gravatar #8 - Claus Jørgensen
29. jan. 2019 10:07
#7

Compiler, måske, ja.

Men bevist korrekt C kode kan stadigvæk have fejl i, hvis der er fejl i compileren.

Ligesom der kan være fejl i standard frameworks (Så ikke så relevant for C, men de fleste andre sprog nu om dage), hvilket vil sige at selvom din kode er bevist korrekt, så kan der stadigvæk være fejl.

F.eks. oversætte vi noget Objective-C kode til Swift for et par uger siden. Vi kan bevise at koden er korrekt og oversat korrekt, men der er stadigvæk fejl i Swift udgaven _fordi_ at der var ukendte side-effects i Objective-C der gjorde at visse fejl i _brugen_ af koden, ikke blev opdaget.

Så et bevis er kun noget værd i isolation. En bevist korrekt compiler kan vel stadigvæk indeholde fejl hvis der er fejl på et hardware niveau.
Gravatar #9 - arne_v
29. jan. 2019 14:41
Claus Jørgensen (8) skrev:

Men bevist korrekt C kode kan stadigvæk have fejl i, hvis der er fejl i compileren.


Ja.

Det er vel det man har forsøagt at afhjælpe her.

Først beviser man at ens egen C kode er korrekt.

(ikke nemt i C !)

Så er der noggle flinke mennesker som beviser at deres compiler oversætter C til korrekt instruktions sekvens.

Claus Jørgensen (8) skrev:

En bevist korrekt compiler kan vel stadigvæk indeholde fejl hvis der er fejl på et hardware niveau.


Ja.

Det manglende trin er nu at CPU vendor beviser at deres CPU udfører instruktion sekvens korrekt.


Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login