2018-08-19. Wojciech Jóźwiak. Cykl: Astro-refleksje

« Perwersyjny znak Raka SPIS ↓ Saturn Pluton antropocen »

Czytaj w Czytelni

Flandern i Pulkkinen ! Do not copy for AI. Nie kopiować dla AI.

Niedawno znalazłem w sieci i wstawiłem do znalezisk Taraki pracę z 1979 r. pt. „Low-precision formulae for planetary positions”. Dwóch amerykańskich autorów: Tom Van Flandern (1940-2009) i Kenneth Pulkkinen, podpisywany K. F. Pulkkinen. Pierwszy, Flandern, zmarły prawie dziesięć lat temu, cieszy się sławą i ma obszerne hasło w angielskojęzycznej Wikipedii (zasłynął też jako krytyk uznanych poglądów w astrofizyce, w tym Wielkiego Wybuchu). O drugim, Pulkkinenie, Sieć totalnie zapomniała: tylko we wspomnianej notce o Flandernie wymieniono jego imię i stąd wiemy, jakiej jest (był?) płci. Innych jego śladów nie ma.

Thomas_Van_FlandernWracając do tematu: po co komu „wzory na planety, o małej dokładności”? Po co obniżać dokładność? – Bo te wzory sporządzono nie po to, żeby znać dokładne położenia planet na niebie, tylko po to, żeby móc w kierunku planet nastawiać teleskopy i inne przyrządy pomiarowe. W tym zadaniu zbyt wielka dokładność przeszkadza. Poza tym był to rok 1979 i komputery nie miały dzisiejszej szaleńczej wydajności, więc liczyła się oszczędność obliczeń.

Ja zapoznałem się z pracą Flanderna i Pulkkinena około 1990 roku, kiedy wreszcie posiadłem swój komputer i spróbowałem go zastosować do tego, co astrolog lubi najbardziej, czyli do obliczania i rysowania (w horoskopie) pozycji planet. Reprint Flanderna & Pulkkinena podarowała mi pewna znajoma, której obiecałem, że nie zdradzę jej tożsamości, ponieważ była fanką astrologii i przy tym pracowała zawodowo jako astronom i swoje hobby (kasujące ją w jej środowisku) ukrywała przed kolegami i zwierzchnością. Więc nie zdradzam i teraz, chociaż to było prawie trzydzieści lat temu.

Zapowiedziana niska dokładność wzorów F&P wcale nie jest taka niska. Dają dokładność około 1 minuty kątowej. Taka dokładność z zapasem wystarcza w astrologii. Bo co to jest minuta kątowa, jaka to odległość na niebie? W załamaniu dyszla Wielkiego Wozu (albo na karku Wielkiej Niedźwiedzicy) leży duża gwiazda Mizar, a obok mniejsza (tzn. mniej jasna) Alkor. Kto ma dobry wzrok, widzi je osobno. Częściej zlewają się w jedną. Odległe są o 12 minut kątowych. Z czego wniosek, że jednej minuty kątowej po prostu gołym okiem nie widać. Faktyczne różnice odległości ważne dla astrologa zaczynają się od mniej więcej pół stopnia czyli 30 minut.

Wtedy około 1990 r. wzory Flanderna i Pulkkinena przepisałem na program liczący. W języku, którego wówczas używałem, czyli turbobasic. Czy ktoś go jeszcze pamięta? Ale tamten pierwszy krok był bardzo ważny, ponieważ tworzył algorytm. Później już zostało przetłumaczyć tamten algorytm na inne języki programowania, co było czynnością dość automatyczną. I tak zrobiłem: około r. 1995 nauczyłem się języka C; dokładniej: C++, teraz C ma nowsze warianty. C to jest wysoka półka! To jest właściwie język absolutny. Podobno system Unix (którego wariantami są Linux i Android) został napisany w C. Oczywiście, nie nauczyłem się go całego, a tylko umiejętność pisania wstawek, które potem system sklejał w programy. Wzory F&P przepisałem wtedy do C. Następny ruch był w 2006 r., kiedy współpracujący wtedy ze mną programista przepisał F&P do internetowego języka PHP. I w tym wykonaniu działają do dzisiaj, tyle że przenosiłem je kilka razy z serwera na serwer.

Funkcję liczącą pozycje planet według wzorów F&P nazwałem po prostu „Flandern”. Jest dość prosta, tu na obrazku widzisz około 60% jej kodu:

Zawiera cztery pętle jedna w drugiej, w których są liczone sinusy bądź cosinusy czasu, mnożone przez współczynniki i sumowane. Do tego oczywiście są dołączone tabele tych współczynników.

Między obliczeniami w C i w PHP zachodzi pewna różnica. Program w języku C ma postać „ludzką”, tzn. edytowaną przez człowieka i dla niego czytelną, i tę postać dopiero kompiluje przekształcając ją w kod maszynowy (czyli plik EXE), który system wykonuje i robi to szybko. PHP inaczej, pracuje tylko na kodzie „ludzkim”: kompiluje wersję „ludzką” za każdym razem, kiedy wykonuje skrypt. Słówko „skrypt” się pojawiło: bo właśnie, aby to odróżnić, wprowadzono ten termin. Skrypty to programy, z których nie są robione pliki wykonywalne (EXE) – skrypty to takie ciągi instrukcji, które inny program przetwarza bezpośrednio, chociaż wolniej. Kiedy w latach 90-tych pisałem program Flanderna w C, dopiero czekano na programy skryptowe, które byłyby dość szybkie, żeby je zastosować w praktyce. Około 2000 r. wszedł w życie język PHP, służący do generowania stron internetowych. Kiedy sobie myślę, jak silnik PHP na serwerze musi się namęczyć, powtarzając, za każdym razem, kiedy ktoś przywołuje stronę Taraki lub AstroAkademii, te same w kółko czynności, które C robił raz i magazynował, to mi się go (silnika PHP) żal robi. Jest w tym jakiś ludzki akt wyzysku maszyn, które śmiało mogłyby działać bardziej efektywnie. Ale to nam nie chce się wykorzystywać ich optymalnie i zgodnie z ich naturą, przecież dla nas one i tak są wiele razy zbyt szybkie.

W witrynie AstroAkademii jest program do generowania efemeryd. Pracuje na tym samym algorytmie Flanderna & Pulkkinena. Obliczenia dla stu momentów czasu, dziesięciu planet i około miliona liczenia sinusów i mnożenia ich przez współczynniki trwają przez czas prawie niezauważalny dla człowieka. A i tak z tej 1/10 sekundy większość czasu zabiera transmisja do i z Gdańska, gdzie stoi szuflada z serwerem, oraz pracowite wyliczanie przez procesor komputera wielomianów Béziera potrzebnych do wyrysowania liter i cyfr na ekranie. W ogóle w całej komputerologii wszelkie peryferie, dodatki, manipulacje i interfejsy najbardziej żrą czas i procesora, i ludzi-projektantów.

Dlaczego zainteresowałem się artykułem van Flanderna i Pulkkinena, teraz, po prawie 30 latach? Ponieważ od jakiegoś czasu przymierzam się do dwóch kolejnych zadań. Pierwsze, to żeby tamte algorytmy do liczenia planet przenieść na jeszcze jeden język: na JavaScript. (Też jak PHP, język skryptowy, czyli pracujący na „ludzkim” zapisie komend i nie produkujący plików exe.) Po co? – Ponieważ JavaScript istnieje w każdym komputerze (i w każdym mobilu-komórkowcu) jako narzędzie każdej internetowej przeglądarki. Oraz skrypt w nim może działać bez połączenia z Internetem. A jak moi Czytelnicy wiedzą, prognozuję ciężkie czasy, kiedy z dostępem do Sieci może być różnie. Gdyby jeszcze dla komputerów były niezależne źródła prądu... Poza tym, motywuje mnie mój „panieński” (od Księżyca w znaku Panny) wzgląd na oszczędność i minimum środków: skoro wszystkie narzędzia potrzebne do obliczeń horoskopu są w komputerze lub mobilu, to po co łączyć się z serwerem i sieć męczyć?

Drugie zadania o którym myślę, to żeby ze wzorów F&P, odpowiednio przekształconych, wyliczać węzły Księżyca. Idea jest prosta (żeby nie zanudzić, nie wyłożę jej tutaj), ale wykonanie takie, że... trzeba w stu miejscach uważać, żeby się nie pomylić.

2018-08-19. Wojciech Jóźwiak. Cykl: Astro-refleksje

« Perwersyjny znak Raka SPIS ↓ Saturn Pluton antropocen »

Do not feed AI...
Don't copy for AI. Don't feed the AI.
This document may not be used to teach (train or feed) Artificial Intelligence systems nor may it be copied for this purpose. (C) All rights reserved by the Author, Wojciech Jóźwiak.

Nie kopiować dla AI. Nie karm AI.
Ten dokument nie może być użyty do uczenia (trenowania, karmienia) systemów Sztucznej Inteligencji (SI, AI) ani nie może być kopiowany w tym celu. (C) Wszystkie prawa zastrzeżone przez Autora, którym jest Wojciech Jóźwiak.