2016.12.12 19:49
zdanie Gödla
Nie da się dowieść zdania, które powstanie, kiedy w zdaniu „Nie da się dowieść zdania, które powstanie, kiedy w zdaniu x pod zmienną ‚x’ wstawimy x” pod zmienną ‚x’ wstawimy „Nie da się dowieść zdania, które powstanie, kiedy w zdaniu x pod zmienną ‚x’ wstawimy x”.
komentarze:
2016.12.13 06:11 Piotrek
nie da się udowodnić zdania, które powstanie, kiedy weźmiemy napis "nie da się udowodnić zdania, które powstanie, kiedy weźmiemy napis ____ i w miejsce każdego placeholdera wstawimy w nim wzięty w cudzysłów napis ____" i w miejsce każdego placeholdera wstawimy w nim wzięty w cudzysłów napis "nie da się udowodnić zdania, które powstanie, kiedy weźmiemy napis ____ i w miejsce każdego placeholdera wstawimy w nim wzięty w cudzysłów napis ____"
2016.12.25 18:11 Piotrek
(function (f) {
return f(f);
})(function (f) {
return f(f);
}) == false;
2016.12.25 18:25 Piotrek
Nie rozumiem, dlaczego w poście http://czterycztery.pl/blog/show.php?f=1454562646 musiałem dużo więcej się gimnastykować. Czego mi wtedy brakowało? Czym różnią się te dwa podejścia?
2016.12.25 19:09 Piotrek
Hm, może rozumiem. Tamto jest tłumaczeniem na język naturalny problemu "napisz program, który wyświetla swój kod", a to jest tłumaczeniem na język naturalny problemu "napisz program, który produkuje sam siebie" (albo: "napisz funkcję, która zwraca sama siebie").
2016.12.26 22:56 ŁZ
Weźmy pierwszy komentarz i w miejsce "nie da się udowodnić zdania, które powstanie, kiedy weźmiemy napis" wstawmy "W napisie", a w miejsce "i w miejsce każdego placeholdera wstawimy w nim wzięty w cudzysłów napis" wstawmy "w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis". Wyjdzie coś takiego:
W napisie "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____" w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____"
Czy jest to program, który wyświetla swój kod czy jest to program, który produkuje sam siebie?
2016.12.27 07:20 Piotrek
@ŁZ: Jest to tak samo program, który wyświetla swój kod, jak i program, który produkuje sam siebie. Ale powiedziałem co powiedziałem, bo jak próbowałem znaleźć odpowiadający temu zdaniu program, to pomyślałem, że wstawianie napisów w placeholdery jest jak wywoływanie funkcji - i stąd wyszła mi funkcja, która wywołuje swój argument przekazując mu w argumencie samego siebie, wywołana z samą sobą jako argumentem (czyli, mniej więcej, napisany mnie w trzecim komentarzu program). Ale teraz widzę, że przecież wstawianie napisów w placeholdery jest również jak printf, więc to samo zdanie jest bardzo podobne do takiego programu (będącego wyrażeniem pythonowym): "''{0}'.format('{0}')'.format(''{0}'.format('{0}')')"
2016.12.27 07:21 Piotrek
E, nie, ten powyższy program (będący wyrażeniem pythonowym) nie jest dobry, co ja plotę. Muszę jeszcze popracować nad tym...
2016.12.27 23:29 ŁZ
Pytanie w moim poprzednim komentarzu dotyczyło zdania:
W napisie "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____" w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____"
Niefortunnie użyłem słowa program. Chciałem zapytać czy powyższy napis jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod" czy rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który produkuje sam siebie".
2016.12.28 06:57 Piotrek
@ŁZ: początkowo myślałem, że powyższy napis jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który produkuje sam siebie". Teraz widzę, że jest zarówno rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod" jak i rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który produkuje sam siebie".
2016.12.28 08:30 Piotrek
Już wiem, jak zapisać w Pythonie kłajna 'zdanie, które powstanie, kiedy wezmiemy napis "zdanie, które powstanie, kiedy wezmiemy napis ____ i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis ____" i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis "zdanie, które powstanie, kiedy wezmiemy napis ____ i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis ___'. Tak: print 'print {0}.format(repr({0}))'.format(repr('print {0}.format(repr({0}))'))
2016.12.28 08:34 4
I już wiem, dlaczego w kłajnie 'zdanie, które powstanie, kiedy wezmiemy napis "zdanie, które powstanie, kiedy wezmiemy napis ____ i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis ____" i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis "zdanie, które powstanie, kiedy wezmiemy napis ____ i w miejsce kazdego placeholdera wstawimy w nim wziety w cudzyslów napis ___' nie musiałem gimnastykować się z eskejpowaniem cudzysłowów. Ja w nim eskejpowałem cudzysłowy, tylko sprytnie i elegancko: zwrot "weź napis w cudzysłów" jest powiedzeniem o cudzysłowie bez użycia znaku cudzysłowu. Wniosek: jeśli w języku mogę wyprodukować cudzysłów bez użycia znaku cudzysłowu, kłajn będzie czytelniejszy, bo nie będzie w nim bijącego po ocach eskejpowania. Na przykład w kłajnie print 'print {0}.format(repr({0}))'.format(repr('print {0}.format(repr({0}))')) do stworzenia cudzysłowu użyłem funkcji repr.
Jestem coraz bliżej stworzenia ogólnego przepisu na napisanie kłąjna w dowolnym języku programowania.
2016.12.29 21:49 ŁZ
@Piotrek (@2016.12.28 06:57) Ja myślałem, że tylko "napisz program, który wyświetla swój kod". Umiesz wytłumaczyć dlaczego też "napisz program, który produkuje sam siebie" lub znasz odpowiedź na któreś z poniższych pytania (pytam, bo nie rozumiem)?
Czy jest zdanie, które jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod", a nie jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który produkuje sam siebie"?
Czy jest zdanie, które jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który produkuje sam siebie", a nie jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod"?
2016.12.30 16:55 Piotrek
@ŁZ:
Moje poglądy na te sprawy się zmieniają, czasem były chyba błędne, ale teraz są następujące:
Po pierwsze: nie wiem, czy dobrze cię rozumiem, kiedy piszesz (być może - nie sprawdzałem - cytując nieprecyzyjnego mnie): '(...) zdanie, które jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod"'. To nie problem jest tłumaczony na język naturalny, bo ten problem od początku był wyrażony w języku naturalnym. Może w przeszłości wyrażałem się nieściśle (a może nie), ale kiedy ja w tym wpisie mówię o tych sprawach, to mam na myśli "zdanie to-a-to jest przetłumaczonym na język naturalny rozwiązaniem problemu 'napisz program, który wyświetla swój kod'". Widzisz różnicę? To nie jest tak, że tłumaczę na język naturalny problem i potem rozwiązuję ten przetłumaczony problem, jeno że rozwiązuję ten problem, a potem jego rozwiązanie tłumaczę na język naturalny. Jeśli o tym mówimy, to są trzy ciekawe problemy: "napisz program, który produkuje sam siebie" (na przykład: napisz funkcję, która zwraca sama siebie - najchętniej przy użyciu tylko funkcji anonimowych, bo to ciekawsze), "napisz program, który wywołuje sam siebie" (na przykład: napisz funkcję, która wywołuje sama siebie - najchętniej przy użyciu tylko funkcji anonimowych, bo to ciekawsze) i "napisz program, który wypisuje sam siebie" (najchętniej bez sięgania po plik na dysku, bo to ciekawsze).
Pierwszego problemu - "napisz program, który produkuje sam siebie" - nie umiem rozwiązać.
Drugi problem - "napisz program, który wywołuje sam siebie" - rozwiązuję na przykład takim klasycznym sposobem: (function (f) { return f(f); })(function (f) { return f(f); }). Kiedy próbuję przetłumaczyć to rozwiązanie na język naturalny, to zamiast "wywołaj daną funkcję przekazując jej argument X" mówię "w danym napisie każde wystąpienie placeholdera zastąp napisem X" (bo przecież rachunek lambda jest jak proste napisowe znajdź-i-zastąp), i wychodzi mi z tego tłumaczenia to: 'W napisie "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____" w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____"'.
Trzeci problem - "napisz program, który wypisuje sam siebie" - rozwiązuję tak: print 'print {0}.format(repr({0}))'.format(repr('print {0}.format(repr({0}))')) . To rozwiązanie jeszcze łatwiej przetłumaczyć na język naturalny. Pythonowa metoda format() to jest znajdź-i-zastąp, więc tłumacząc ten jednolinijkowiec każde "dany_napis.format(X)" zastępuję przez "w danym napisie każde wystąpienie placeholdera zastąp napisem X" - i wychodzi mi 'W napisie "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____" w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis "W napisie ____ w miejsce każdego placeholdera wstaw wzięty w cudzysłów napis ____"'. Znowu to samo wyszło!
A z drugiej strony kiedy myślę, co możesz mieć na myśli, kiedy piszesz: '(...) zdanie, które jest rozwiązaniem przetłumaczonego na język naturalny problemu "napisz program, który wyświetla swój kod"', to myślę, że może miałeś na myśli 'weź dotyczący języków programowania problem "napisz program, który wyświetla swój kod", przerób go tak, żeby dotyczył języka naturalnego, a następnie go rozwiąż'. Jeśli to miałeś na myśli, to wydaje mi się, że - ponieważ w przypadku języków naturalnych nie umiem rozróżnić między zdaniem a jego zapisem - zarówno pierwszy problem ("napisz program, który produkuje sam siebie") jak i trzeci problem ("napisz program, który wypisuje sam siebie") przechodzi w taki sam problem: "napisz zdanie, które jest poleceniem, które jak człowiek wykona, to w efekcje dostanie to zdanie (najlepiej bez używania słów 'niniejsze zdanie', bo tak jest ciekawiej)". I chyba - choć tu daleki jestem od pewności - również problem drugi ("napisz program, który wywołuje sam siebie") przechodzi w to samo.
Czy zgadzasz się z tym, co napisałem w niniejszym komentarzu?
2016.12.31 01:23 ŁZ
No to sprawa się wyjaśniła. Ja na te sprawy patrzyłem z perspektywy zabawy z kłajnami (http://czterycztery.pl/blog/show.php?f=1454562646), czyli tak jak opisałeś: 'weź dotyczący języków programowania problem "napisz program, który wyświetla swój kod", przerób go tak, żeby dotyczył języka naturalnego, a następnie go rozwiąż'. W efekcie, komentarz z 2016.12.25 19:09 zrozumiałem tak, że widzisz różnicę między problemem "napisz program, który produkuje sam siebie" i problemem "napisz program, który wypisuje sam siebie" i mnie to zainteresowało. Ja jej nie widziałem, bo (jak się teraz okazuje), tak jak Tobie, wydaje mi się, że przechodzą w taki sam problem. Dzięki za wyjaśnienie ( że masz na myśli "zdanie to-a-to jest przetłumaczonym na język naturalny rozwiązaniem problemu 'napisz program, który wyświetla swój kod'"). Teraz przeczytam jeszcze raz wpis i komentarze :)
2016.12.31 06:49 Piotrek
Czytając jeszcze raz wpis i komentarze miej na uwadze, że kiedy je pisałem, mogłem niektóre sprawy nie do końca jeszcze rozumieć, rozumieć inaczej, niż rozumiem teraz i w ogóle.
powrót na stronę główną
RSS