eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjedno proste pytanie
Ilość wypowiedzi w tym wątku: 25

  • 11. Data: 2010-08-11 19:35:24
    Temat: Re: jedno proste pytanie
    Od: "Remek" <b...@t...pl>

    Użytkownik <j...@p...onet.pl> napisał:

    Zdaje się, że pierwszym niepoważnym w tym wątku jesteś Ty sam. I dlatego
    otrzymujesz niepoważne w Twoim mniemaniu odpowiedzi. Co to znaczy
    "poprawność programu"? Sprecyzuj.

    Jeśli dobrze się domyslam o co Ci chodzi to:

    - właśnie testy są podstawą
    - test testowi nierówny
    - są różne metody i sposoby

    Poważne firmy do testowania swoich programów stosują rozbudowane metody i
    specjalne programy, które sprawdzaja program pod kątem:

    - czy nie zawiesza się, lub systemu w trakcie długiego działania
    - czy nie spowalnia pracy i nie zzera pamięci
    - czy podaje prawidłowe wyniki w zależności od danych wejściowych
    - reakcję na różne, w tym możliwe nieprawidłowe dane wejściowe

    To tylko drobna cząstka tego co jest badane i chodzi o zrozumienie w czym
    rzecz.

    I ostatnia uwaga. Nigdy do końca nie wiadomo, czy program nie zawiera
    błedów.

    Remek


  • 12. Data: 2010-08-11 21:49:58
    Temat: Re: jedno proste pytanie
    Od: Mariusz Marszałkowski <m...@g...com>

    On 11 Sie, 21:35, "Remek" <b...@t...pl> wrote:

    > - czy nie zawiesza się, lub systemu w trakcie długiego działania
    > - czy nie spowalnia pracy i nie zzera pamięci
    > - czy podaje prawidłowe wyniki w zależności od danych wejściowych
    > - reakcję na różne, w tym możliwe nieprawidłowe dane wejściowe
    >
    > To tylko drobna cząstka tego co jest badane i chodzi o zrozumienie w czym
    > rzecz.
    Czasami używam metody "wielu różnych algorytmów do tego samego
    problemu" - wszystkie powinny dać taki sam wynik. Struktura danych
    jest przetasowana, algorytm inny, więc przy 3 różnych algorytmach i
    wielu różnorodnych danych wejściowych prawdopodobieństwo błędu
    szybko spada do zera.

    Pozdrawiam


  • 13. Data: 2010-08-17 09:45:11
    Temat: Re: jedno proste pytanie
    Od: j...@p...onet.pl

    > to wcale nie była niepoważna odpowiedź.

    Przez przypatrzenie to można sobie udowodnić poprawność programu Hello World.
    Przez zaliczenie można zaliczyć niepoprawny program u niekompetentnego prowadzącego.
    Przez dochód - można zrobić majątek na pełnym bugów Windows.


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 14. Data: 2010-08-17 10:26:18
    Temat: Re: jedno proste pytanie
    Od: Michal Kleczek <k...@g...com>

    j...@p...onet.pl wrote:

    >> to wcale nie była niepoważna odpowiedź.
    >
    > Przez przypatrzenie to można sobie udowodnić poprawność programu Hello
    > World. Przez zaliczenie można zaliczyć niepoprawny program u
    > niekompetentnego prowadzącego. Przez dochód - można zrobić majątek na
    > pełnym bugów Windows.

    Wszystko to prawda.
    Ilustruje ona tylko fakt, ze definicja slowa "poprawnosc" zalezy od tego,
    kto i po co ja formuluje. Zas od tejze definicji zaleza metody weryfikacji
    poprawnosci.

    Czyli:
    dla studenta - program "poprawny" == "zaliczony"
    dla firmy - program "poprawny" == "przynoszacy (duze) zyski"
    dla hobbysty - program "poprawny" == "jestem z niego (na oko) zadowolony"

    --
    Michal


  • 15. Data: 2010-08-17 11:01:38
    Temat: Re: jedno proste pytanie
    Od: j...@p...onet.pl

    > Co to znaczy "poprawność programu"? Sprecyzuj.

    Każdy student informatyki wie, że:
    poprawność = częściowa poprawność + własność stopu + określoność obliczeń
    gdzie częsciowa poprawność = zgodność z formalną specyfikacją

    > Nigdy do końca nie wiadomo, czy program nie zawiera błedów.

    No właśnie o to chodzi, że testami się tej pewności nie osiągnie, natomiast są
    metody formalne, np. logika Hoare'a które taką pewność dają. Problem, w tym, że
    są to metody pracochłonne i - przy bardziej skomplikowanych programach - trudne
    matematycznie. Stąd całe moje pytanie: czy programiści wykorzystują je w
    praktyce. Oczywiście są sytuacje kiedy dowód formalny poprawności jest bardzo
    pożądany, np. gdy od poprawności programu zależy ludzkie życie.


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 16. Data: 2010-08-17 11:20:23
    Temat: Re: jedno proste pytanie
    Od: Michal Kleczek <k...@g...com>

    j...@p...onet.pl wrote:

    >> Co to znaczy "poprawność programu"? Sprecyzuj.
    >
    > Każdy student informatyki wie, że:
    > poprawność = częściowa poprawność + własność stopu + określoność obliczeń
    > gdzie częsciowa poprawność = zgodność z formalną specyfikacją
    >

    Wlasnie. W praktyce taki byt jak "formalna specyfikacja" wystepuje baaardzo
    rzadko. Co wiecej - nawet jesli wystepuje, to dowiedzenie zgodnosci z
    formalna specyfikacja nie dowodzi poprawnosci programu zdefiniowanej jako
    "klient/uzytkownik/sponsor ma byc zadowolony". Zeby to osiagnac trzeba
    operowac na "metapoziomie" czyli wdrozyc jakis system zapewnienia jakosci.

    --
    Michal


  • 17. Data: 2010-08-17 12:07:41
    Temat: Re: jedno proste pytanie
    Od: j...@p...onet.pl

    > system zapewnienia jakosci.

    O to mi właśnie chodziło. Dzięki za odpowiedź.


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 18. Data: 2010-08-17 13:22:41
    Temat: Re: jedno proste pytanie
    Od: Maciej Sobczak <s...@g...com>

    On 17 Sie, 13:01, j...@p...onet.pl wrote:

    > Każdy student informatyki wie, że:
    > poprawność = częściowa poprawność + własność stopu + określoność obliczeń
    > gdzie częsciowa poprawność = zgodność z formalną specyfikacją

    To zależy, gdzie student studiował.

    http://en.wikipedia.org/wiki/Partial_correctness

    Częściowa poprawność oznacza, że JEŚLI program w ogóle da jakieś
    wyniki, to będą one poprawne. W szczególności częściowa poprawność nie
    chroni przed zapętleniem się.

    > No właśnie o to chodzi, że testami się tej pewności nie osiągnie, natomiast są
    > metody formalne, np. logika Hoare'a które taką pewność dają. Problem, w tym, że
    > są to metody pracochłonne i - przy bardziej skomplikowanych programach - trudne
    > matematycznie. Stąd całe moje pytanie: czy programiści wykorzystują je w
    > praktyce.

    Tak. Jednym z ciekawszych rozwiązań w tym zakresie jest SPARK:

    http://en.wikipedia.org/wiki/SPARK

    Jest ciekawy dlatego, że będąc podzbiorem znanego już języka
    imperatywnego jest też od razu kompilowalny do kodu wynikowego. To nie
    są jakieś obrazki czy inne matematyczne robaczki, tylko żywy kod z
    dodatkową specyfikacją nt. przepływu informacji czy pre/post-
    conditions. Weryfikuje się taki kod odpowiednimi narzędziami a potem
    wrzuca do normalnego kompilatora i działa. Sporo tym można zrobić i
    nawet się tego używa w praktyce a ponieważ kompletny zbiór narzędzi
    jest dostępny za friko, to jest to też dobra platforma dla samouków.

    > Oczywiście są sytuacje kiedy dowód formalny poprawności jest bardzo
    > pożądany, np. gdy od poprawności programu zależy ludzkie życie.

    Nadal pozostaje pytanie o poprawność specyfikacji. Można spokojnie
    udowodnić poprawność źle wyspecyfikowanego programu - program będzie
    idealnie robił nie to, co trzeba. Niestety zawsze gdzieś będzie
    miejsce na czynnik ludzki jako najsłabsze ogniwo.

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


  • 19. Data: 2010-08-17 14:47:32
    Temat: Re: jedno proste pytanie
    Od: j...@p...onet.pl

    > Poza tym dobrze zrobione testy są wystarczające.
    A co gdy nie jesteś pewien czy trudniejszy algorytm jest poprawny a zbiór
    możliwych danych wejściowych obszerny? Będziesz go testował i możesz nigdy nie
    trafić na dane wejściowe, przy których źle działa.

    > Czegoś trudniejszego od "hallo world" nie jesteś w stanie dowieść.
    Udało mi się kiedyś.


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 20. Data: 2010-08-17 15:03:30
    Temat: Re: jedno proste pytanie
    Od: j...@p...onet.pl

    > Tak. Jednym z ciekawszych rozwiązań w tym zakresie jest SPARK

    Nie znam SPARKa.
    Czy wstawianie asercji ma sens tzn. coś pomaga?

    function assert($condition, $message = null) {
    if (!$condition) {
    echo (!empty($message) ? $message : 'Błąd wewnętrzny.');
    exit;
    }
    }

    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

strony : 1 . [ 2 ] . 3


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: