Taka bardzo duża funkcja

Subskrybuj RSS A A A
19 maja 2009
Kuba Tatarkiewicz

Wiele lat temu, gdy jeszcze nikt nie wymyślił ruchu wolnego oprogramowania, ludzie także programowali dla przyjemności. Komputery osobiste, ze względu na cenę, były raczej niedostępne. Amatorom pozostawały kalkulatory, mające zwykle kilkadziesiąt do kilkuset kroków programowania. Wydawało się, że za ich pomocą można wszystko obliczyć. I rzeczywiście, bardzo szybko napisano wyrafinowane programy, łącznie z nawigacją statku kosmicznego. Ten ostatni program był tak długi, że wymagał kilku kart magnetycznych, które astronauci kolejno wprowadzali do pamięci.

Nie miałem powodu, aby kierować za pomocą komputera żadnym pojazdem, ale też chciałem napisać jakiś program, który mógłbym opublikować i zyskać nieśmiertelną sławę. Publikowanie oznaczało wtedy wydrukowanie listy poleceń programu i wysłanie do pisma, które kopiowało wydruk ręcznie, co często prowadziło do późniejszych sprostowań. Dlatego też postanowiłem, że moje arcydzieło będzie krótkie. W domowej bibliotece ojca-matematyka udało mi się znaleźć definicję funkcji Ackermana. Wyglądała na prostą, tym bardziej że wykorzystywała rekurencję. Po kilku dniach myślenia wykombinowałem, jak za pomocą stosu oraz rejestrów pamięci mogę zrobić tę rekurencję. Mój HP 41CV miał około 2 tysięcy kroków programowych, które można było w tzw. bankach zamieniać na pamięć (von Neumann się kłania). Pobawiłem się moim kodem i tak go zoptymalizowałem, że miał ledwie kilkadziesiąt linijek (odwrotna polska notacja RPN pozwalała na bardzo efektywne kody, bliższe assemblerowi). Całą resztę pamięci przeznaczyłem na rejestry, których zostało ponad trzysta. Byłem bardzo dumny z mojej pracy, tym bardziej że dla niskich parametrów wyniki obliczeń zgadzały się z podanymi w podręczniku. Pełen optymizmu, przed snem zapuściłem program obliczający funkcję A(4,3). Gdy obudziłem się rano, program dalej coś liczył. Zostawiłem go i poszedłem do pracy. Kalkulator był oczywiście podłączony do zasilacza, bo bateria starczała ledwie na parę godzin pracy. Z dzisiejszej perspektywy procesor kalkulatora wydawałby się bardzo powolny (340 kHz), nawet w porównaniu z telefonem komórkowym, ale ćwierć wieku temu było to poważne urządzenie liczące. Nic dziwnego, że gdy wróciłem po południu do domu i kalkulator dalej liczył, to zmartwiłem się. Czyżbym zapętlił program? Poczekałem jeszcze jedną noc. Program dalej liczył. Wyłączyłem go i zapuściłem raz jeszcze. Z tym samym efektem po dwóch dniach.

W czasach internetu od ręki wyszukałbym informację, że funkcja Ackermanna, którą próbowałem obliczyć, nie da się łatwo zapisać jako liczba dziesiętna. Ba, nie wiadomo, czy taka duża liczba naturalna w ogóle ma jakiś sens, bo jest ona większa od liczby wszystkich obiektów we wszechświecie, zliczając cząstki elementarne oraz ich składowe jako odrębne twory. Wielkość liczby, którą usiłowałem obliczyć, spowodowała utratę przeze mnie wiary w matematykę jako naukę stosowaną. Ale samą funkcję zapamiętałem bardzo dobrze. Na tyle, że już dwa razy (w latach 1998 oraz 1999) odwoływałem się do niej w felietonach. A przecież gdybym lepiej studiował literaturę przedmiotu, to do programu, który miał uczynić mnie nieśmiertelnym, wybrałbym jakąś inną funkcję. Na przykład tzw. 91, zaproponowaną przez McCarthy’ego. Zamiast rosnąć jak na drożdżach, zwija ona do 91 wszystkie liczby mniejsze niż 102, zaś większe lub równe zmniejsza o 10. Zastosowana rekurencyjnie w stosunku do każdej liczby prowadzi zawsze do tego samego wyniku. Właściwie zamiast kodować algorytm, można ją zapisać w jednej linijce: "po wprowadzeniu dowolnej liczby wyświetl 91". Byłby to zapewne najkrótszy program. Ale taki mądry to ja jestem dopiero dzisiaj. A może tylko bardziej leniwy?!

Oceń artykuł

średnio: 3 liczba ocen: 2

Komentarze (2)

były

21-05-2009 00:05

witam piekne czasy wtedy miało się szacunek do zasobów które były bardzo ograniczone dzisiaj w gąszczu terabajtów i gigaherców, przy nadchodzącej jak burza technologii clouding programing tworzenie oprogramowania upadło do poziomu obierania ziemniaków

Nemo

20-05-2009 23:56

Szanowny Autor zdaje się mieć obsesję na punkcie wolnego oprogramowania. Pierwsze zdanie ma się nijak do reszty felietonu. Wydaje mi się, że bardziej na miejscu byłby temat wolnego reklamowania. W jego reultacie przeczytanie pierwszych zdań felietonu wymaga swoistej ekwilibrystyki, która do niczego nie prowadzi. Gdyby zamiast wszystkich stron WWW w całym Internecie była jedynie reklama nazwa.pl, to i tak nie kupię domeny, bo jest mi ona niepotrzebna. Jedyny skutek, jaki można w ten sposób uzyskać, sprowadza się do tego, że przestanę odwiedzać idg.pl i czytać felietony Pana J. Tatarkiewicza. W gruncie rzeczy wolne oprogramowanie nikomu nie przeszkadza, nie chcesz - nie korzystaj, natomiast wolne reklamowanie przeszkadza wszystkim. A jeśli wziąć pod uwagę ostatnie wyczyny francuskiego rządu, to można się spodziewać, że koniec Internetu jest bliski. Jeśli nie będzie można z Internetu niczego pobrać, to po co komu będą potrzebne te gigabajty i megabity/sek? To będzie koniec przemysłu komputerowego i software''owego, gdyż w gruncie rzeczy każdemy wystarczy kalkulator, o którym Pan pisze. Dodając do tego jeszcze zakusy mr. Murdocha, to jak będę musiał płacić za każde kliknięcie, to po prostu przestanę klikać. Czy nikt tego nie jest w stanie zrozumieć?

Najnowsze

Państwo do konsolidacji

Obywatele uważają administrację publiczną za jeden organizm. W rzeczywistości jest to kilka tysięcy oddzielnych struktur, obrosłych biurokratycznymi naroślami. Czy można zracjonalizować działanie państwa? Jak w tym może pomóc informatyka?

Zarządzanie po japońsku

W praktyce przemysłowej wypracowano szereg skutecznych metod zarządzania. Wiele powstało w Japonii. Dlaczego, mimo ich efektywności, nie zawsze są stosowane w biznesie?

e-Sąd z odsieczą sprawiedliwości

Polski wymiar sprawiedliwości postrzegany jest jako skostniały i opieszały. Tymczasem kolejne e-usługi udostępniane przez Ministerstwo Sprawiedliwości ułatwiają życie przedsiębiorcom i usprawniają pracę sądów.

e-Zdrowie w Polsce i na świecie

Projekty informatyzacji służby zdrowia realizowane są na świecie z różnym powodzeniem. Skąd Polska mogłaby czerpać wzorce? A może jesteśmy skazani na własne rozwiązania?

Raport Państwo 2.0, czyli nowa wizja informatyzacji państwa

Michał Boni, minister administracji i cyfryzacji, zaprezentował raport "Polska 2.0. Nowy start dla e-administracji". Przedstawia on informacje na temat stanu realizacji projektów będących w gestii nowo utworzonego ministerstwa oraz prezentuje kierunki dalszych działań związanych z informatyzacją i cyfryzacją administracji publicznej w naszym kraju.

Cyberprzestępcy podążają za użytkownikami

Już dwie na trzy polskie firmy odnotowały ataki lub awarie, które spowodowały spadek produkcji. Co trzecia firma utraciła dane. Liczba takich przypadków będzie rosła, bo hakerzy biorą na cel najbardziej masowe technologie. Szybko reagują też na zmiany w firmowej architekturze.

Jak zaplanować karierę w branży IT

Doświadczenia łączone na różnych stanowiskach w firmach o odmiennych profilach są szczególnie cenione przez pracodawców. Dlatego warto głęboko przeanalizować możliwości rozwoju kariery, które obecnie stwarza rynek IT.

Rekomendacje



Serwisy IDG - Warunki obsługi - Kontakt - Redakcja - Regulamin - O nas - Polityka prywatności - Serwis zgodny z ASME
Reklama - Licencjonowanie treści - Prenumerata: Computerworld, Networld, PC World
Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.
© Copyright 2012 International Data Group Poland S.A. 04-204 Warszawa ul. Jordanowska 12 tel.(+4822)321-78-00 fax(+4822)321-78-88