eGospodarka.pl
eGospodarka.pl poleca

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

  • 21. Data: 2010-08-17 20:49:33
    Temat: Re: jedno proste pytanie
    Od: Maciej Sobczak <s...@g...com>

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

    > Nie znam SPARKa.

    Polecam, bo w przeciwieństwie do wielu akademickich pomysłów ten język
    wydaje się nawet rozwijać.

    > Czy wstawianie asercji ma sens tzn. coś pomaga?

    Asercje w SPARKu są sprawdzane statycznie (jak wszystko inne) i
    pomagają w tym sensie, że dają narzędziom dodatkowe informacje nt.
    tego, co programista myśli o swoim kodzie.
    W szczególności asercje w SPARKu są potrzebne do tego, żeby przeciąć
    pętle poprzez ustalenie ich niezmienników - to pozwala na sensowną
    analizę tych pętli.
    Asercje istnieją jednak tylko w czasie kompilacji, bo potem są już
    niepotrzebne.

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

    To wygląda na konstrukcję run-time, czyli nie ma związku ze
    statyczną weryfikacją czegokolwiek. W językach z pełną statyczną
    analizą asercje run-time kompletnie nic nie dają - bo skoro analiza
    była statyczna, to wiadomo z góry, że asercja zawsze się sprawdzi i
    wtedy można ją po prostu wyeliminować z kodu. Dokładnie na tej
    zasadzie SPARK eliminuje potrzebę sprawdzania np. indeksów w
    tablicach, dzielenia przez zero, itd. - skoro z analizy wiadomo, że
    takich rzeczy w programie nie ma, to nie trzeba generować kodu, który
    to sprawdza albo który na to reaguje.

    Asercje run-time mają jednak sens w tych językach, które nie są zdolne
    do pełnej analizy statycznej i mogą służyć do wykrywania kompletnych
    fakapów w czasie wykonania programu. Znajdziesz je poutykane w kodzie
    w Javie, w C++, itd.

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


  • 22. Data: 2010-08-18 06:36:38
    Temat: Re: jedno proste pytanie
    Od: shio <s...@b...eu.org>



    On Tue, 17 Aug 2010, Maciej Sobczak wrote:

    >
    > http://en.wikipedia.org/wiki/Partial_correctness
    >
    > Czesciowa poprawnosc oznacza, ze JESLI program w ogole da jakies
    > wyniki, to beda one poprawne. W szczegolnosci czesciowa poprawnosc nie
    > chroni przed zapetleniem sie.

    ale program zapetlony nigdy nie zwroci wyniku, z czego wynika ze nie moze
    byc poprawny


  • 23. Data: 2010-08-18 07:03:00
    Temat: Re: jedno proste pytanie
    Od: Michał Sopniewski <m...@g...com>

    Na początku tej dyskusji wkradł się błąd, który propaguje :-)
    Otóż o poprawności (ang correctness) (jako o terminie w naukach
    komputerowych) mówimy odnosząc się do algorytmów .
    W odniesieniu do programów, tzn. implementacji tych algorytmów, tzn.
    kodu, mówi się o JAKOŚCI (ang. quality).


  • 24. Data: 2010-08-18 07:30:11
    Temat: Re: jedno proste pytanie
    Od: Maciej Sobczak <s...@g...com>

    On 18 Sie, 08:36, shio <s...@b...eu.org> wrote:

    > > Czesciowa poprawnosc oznacza, ze JESLI program w ogole da jakies
    > > wyniki, to beda one poprawne. W szczegolnosci czesciowa poprawnosc nie
    > > chroni przed zapetleniem sie.
    >
    > ale program zapetlony nigdy nie zwroci wyniku, z czego wynika ze nie moze
    > byc poprawny

    Skoro nigdy nie zwróci wyniku, to znaczy, że nigdy nie zwróci błędnego
    wyniku. To bardzo dobry program. :-)

    Właśnie dlatego mówimy o poprawności *częściowej*.
    Chodzi tutaj też o ograniczenia narzędzi weryfikujących. Poprawność
    częściową można udowadniać automatycznie metodami, które mają jeszcze
    sensowną złożoność obliczeniową i dają się stosować (tzn. skalować) w
    praktyce.

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


  • 25. Data: 2010-08-18 08:03:59
    Temat: Re: jedno proste pytanie
    Od: shio <s...@b...eu.org>



    On Wed, 18 Aug 2010, Maciej Sobczak wrote:

    >>> Czesciowa poprawnosc oznacza, ze JESLI program w ogole da jakies
    >>> wyniki, to beda one poprawne. W szczegolnosci czesciowa poprawnosc nie
    >>> chroni przed zapetleniem sie.
    >>
    >> ale program zapetlony nigdy nie zwroci wyniku, z czego wynika ze nie moze
    >> byc poprawny
    >
    > Skoro nigdy nie zwroci wyniku, to znaczy, ze nigdy nie zwroci blednego
    > wyniku. To bardzo dobry program. :-)

    Moze i bardzo dobry ale niepoprawny:-) skoro czesciowa poprawnosc ma
    oznaczac, ze W OGOLE zwraca jakis wynik. Program zapetlony nie zwroci. Juz
    w tym watku zwrocono juz uwage na pomieszanie pojec algorytmu, co do
    ktorego mozna mowic o poprawnosci, z jego implementacja. Niemniej mysle
    jednak, ze to ma sens - czesciowa poprawnosc implementacji oznaczalaby, ze program
    zwroci wynik, ktory moze
    byc niezgodny do konca z wymaganiem funkcjonalnym ale nie bedzie to np.
    wyjatek. Musze przyznac, ze czesto mam do czynienia z tak rozumianymi
    czesciowo poprawnymi programami:)

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: