Właśnie czytałem inne wyjaśnienie problemu zatrzymania i przyszło mi do głowy, że wszystkie problemy, które widziałem, podane jako przykłady, obejmują nieskończone sekwencje. Ale nigdy nie używam nieskończonych sekwencji w moich programach - trwają zbyt długo. Wszystkie aplikacje w świecie rzeczywistym mają dolną i górną granicę. Nawet liczby rzeczywiste nie są prawdziwymi wartościami rzeczywistymi - są przybliżeniami zapisanymi jako 32/64 bity itp.
Pytanie brzmi: czy istnieje podzbiór programów, które można ustalić, jeśli się zatrzymają? Czy to wystarczy dla większości programów. Czy mogę zbudować zestaw konstrukcji językowych, które mogę określić „haltability” programu. Jestem pewien, że zostało to gdzieś wcześniej zbadane, więc wszelkie wskazówki będą mile widziane. Język nie byłby kompletny, ale czy istnieje coś takiego jak prawie kompletny, co jest wystarczająco dobre?
Oczywiście taka konstrukcja musiałaby wykluczyć rekurencję i nieograniczoną liczbę pętli while, ale mogę napisać program bez tych dość łatwo.
Czytanie ze standardowego wejścia jako przykładu musiałoby być ograniczone, ale to dość proste - ograniczę mój wkład do 10 000 000 znaków itp., W zależności od dziedziny problemu.
tia
[Aktualizacja]
Po przeczytaniu komentarzy i odpowiedzi może powinienem powtórzyć moje pytanie.
Dla danego programu, w którym wszystkie wejścia są ograniczone, możesz ustalić, czy program się zatrzyma. Jeśli tak, jakie są ograniczenia języka i jakie są ograniczenia zestawu danych wejściowych. Maksymalny zestaw tych konstrukcji określałby język, który można wywnioskować, aby go zatrzymać lub nie. Czy przeprowadzono jakieś badania w tym zakresie?
[Aktualizacja 2]
oto odpowiedź, tak, w 1967 roku z http://www.isp.uni-luebeck.de/kps07/files/papers/kirner.pdf
Minsky już w 1967 r. Argumentował, że problem zatrzymania można przynajmniej teoretycznie rozwiązać dla systemów stanu skończonego [4]: „... każda maszyna stanu skończonego, jeśli zostanie całkowicie sama, wpadnie w końcu w całkowicie okresowy okres powtarzalny wzór. Czas trwania tego powtarzającego się wzoru nie może przekraczać liczby stanów wewnętrznych maszyny ... ”
(więc jeśli trzymasz się skończonych maszyn Turinga, możesz zbudować wyrocznię)