jarekr000000
2018-08-10 15:59

Autobograficznie - inspirowane postami na forum.
Jak się zostawało programisto na początku lat 90tych

W natłoku postów – czy mogę zostać programistą w X miesięcy?, czy ma sens po 30tce? itd. postanowiłem napisać jak zostałe programisto.
Tak się składa, że dość dobrze pamiętam jak zostawałem programistą i te mniej więcej te 18 godzin z komputerem jestem w stanie jakoś odtworzyć.

Co więcej moja historia jest typowa dla wielu ludzi z pokolenia (oczywiście jest zupełnie też dziś nieprzydatna).

W okolicach, któryś nastych (14-tych ??) urodzin dostałem komputer.

Rodzice zakupili w Commodore 64 Niemczech. Zanim nawet donieśli sprzęt do domu, to już udało mi się przy pomocy kolegi zdobyć podręcznik do programowania. Była to jedyna dostępna książka na ten temat w bibliotece mojego miasteczka i traktowała o Atari Basicu.
Do commodore Basica pasowała zupełnie wcale. Różnice między dialektami Basica były dość spore, a Atari Basic, o czym wtedy nie wiedziałem szczególnie odstawał od reszty. Pomocna była ta książka jak podręcznik do C#/ .NET na wnidows do nauki Javy na linuksie. Żaden przykład nie działał, ale za to udało się załapać jakieś zasady – jak to działa. (I pierwszy wielki WTF - jak to X = X + 1)

Żeby nie było to miałem też zakupiony z komputerem podręcznik. Tak, dołączali wtedy do komputerów podręczniki i traktowały one głównie! o programowaniu.
Pech polegał na tym, że podręcznik ów nazywał się Handbuch... i był w zupełnie dla wszystkich zrozumiałym języku niemieckim. Więc było zabawnie.

Dość powiedzieć, że pierwsze godziny z komputerem to gigantyczne tony frustracji. Koszmar początkujących basicowców – SYNTAX ERROR i miazga.

Dodatkowo, wiele rzeczy mi nie ułatwiało np. kompletny brak wiedzy o komputerach – wcześniej cały mój kontakt z komputerami ograniczał się do widziałem w telewizji i raz! mogłem dotknąć małe atari. Raz widziałem też z daleka ZX Spektrum (Timex 2048 po prawdzie), ale zanim się dopchałem żeby dotknąć to upalił się kabel zasilający i tyle z tego było).

Już sam początek czytania (tłumaczenia ze słownikiem) specyfikacji to wielki WTF. No bo z jednej strony czytam, że komputer jest ośmiobitowy (ogarniałem koncepcje bitu). Tyle, że wydawało mi się, że w ośmiu bitach to wiele się nie zmieści.. .Więc jak to działa? Potem leci informacja, że komputer ma 64 kilobajty pamięci, a to wydawało się już potwornie dużo – na pewno więcej niż 8 bitów... Ale w końcu to ile on ma pamięci...8 bitów czy 64k i jakie ma to znaczenie? Miazga. (tak, bajtu, adresowania itp. nie ogarniałem długo -( z 5 dni)...).

Tak czy siak, nie przeszkadzało to metodą prób i błędów pisać / przepisywać pierwszych programów w Basicu. Początkowo totalnie bez zrozumienia. Ale szybko jakieś efekty się pojawiały.

10  X = 2
20  Y = 2 
30  PRINT  X + Y

Wiele rzeczy, które dziś jest oczywiste – były wtedy zupełnie nie znane. Np. koncepcja edytora.
W C64 system operacyjny był powiązany z BASICiem i mocno dziwacznym edytorem, który był trochę pełnoekranowy, a trochę nie był. Takie połączenie interfejsu command line z edytorem.
Jak naciskasz enter to komputer analizuje co jest w danej linii i albo od razu to wykonuje, albo zapisuje do pamięci linie programu. Fajne...

Basic to ogólnie był język rak, szczególnie w tej wersji z ośmiobitowców. Np. nazwy zmiennych mogły mieć dowolną długość, ale tylko pierwsze dwie litery były brane pod uwagę (to musiał wymyśleć niezły troll) Czyli zmienna GRACZ1 i GRACZ2 po prawdzie odnosiły się do tej samej wartości. Szybko się człowiek uczył, że aby mieć jak najmniej błędów to trzeba zmienne jedno max dwuliterowe używać.
Typy danych też były dość mocno ograniczone – jak zmienna się kończyła $ to był to ciąg tekstowy: np. NA$=”IMIE GRACZA”. Jak zmienna się kończyła % to był to int – czyli P1 = 7.

Numerowanie linii to była najfajniejsza cecha. Zamiast głowić się nad jakimiś głupimi nazwami to po prostu procedury umieszczało się pod jakimś numerkiem i jazda.

5000 POKE 1024 + x + 40*y, 42
5020 RETURN

i potem

1012 X = 7
1022 Y = 9 
1030 GOSUB 5000 

I już mamy gwiazdkę wstawioną na współrzędnych 7,9 w ekranie.

Dodatkowo wszystkie zmienne były zawsze globalne czyli, żadnej głupiej zabawy z wymyślaniem lokalnych nazw nie było :-)

GOTO to oczywiście była największa moc,
IF X<0 THEN GOTO 500 i lecimy gdzie chcemy.
Serio, 2-3 lata później jak mi jeden gość powiedział, że GOTO to nie jest najlepsza rzecz w programowaniu to jakby mi ktoś w mordę....

Parę lat temu znalazłem mój zeszyt z tamtych czasów. Ileś stron z numerami linii dla kluczowych procedur. Linie dla ważnych GOTO. Najważniejsze zmienne globalne. To było jakieś projektowanie, a nie tam UML.

Generalnie największym wyzwaniem były POKE i PEEK. Basic C64 był bardzo ubogi i poza wyświetleniem czegoś na ekran tekstowy PRINT i pobraniem liczby/ciagu INPUT nie dało się wiele zrobić. Nawet do prostej gierki tekstowej trzeba było jeździć po pamięci i ustawiać kolory i kody znaków w RAM. To, że kompletnie nie ogarniałem w tym momencie czegoś takiego jak adresowanie, raster itp. na pewno nie pomagało. Była to nauka magiczna. Brało się niezrozumiały kawałek kodu z Handbucha i metodą prób i błędów ustalało co to robi.

Np. POKE 1024 + x + y*40, 42 to było to wstawienie gwiazdki na ekran na danych współrzędnych. Długo to y*40 to była dla mnie magia – choć teraz jak się wie, że ekran tekstowy w C64 ma 40 kolumn to wydaje się to oczywiste.
Takie POKE się gromadziło i można było ogarnąć grafikę, obsługę joysticka i nawet muzykę.

Wpisywanie losowych POKE jakoś tam wspomagane tłumaczeniem z niemieckiego to był sposób poznawania komputera. Oczywiście co któryś POKE kończył się nieplanowanym resetem, albo przejściem w nieczytelny tryb graficzny i … w ten sposób traciło się kod programu.

Nie było zapisywania na dysk! Ba, nie miałem nawet stacji dysków. Zapisywać program mogłem tylko na kasetę magnetofonową. To po pierwsze trwało dość długo (prawie widać było jak bajty mozolnie lecą na kasetę). Co gorsza trzeba było tą kasetę przewinąć do jakiejś ustalonej pozycji, żeby wiedzieć skąd potem zacząć ładowanie. Rzadko coś zapisywałem.

Pomimo tych wszystkich problemów pamiętam, że już drugiego dnia po dostaniu kompa śmigała pierwsza (nędzna) gierka (nie pytajcie...). Zawziętością udawało się nadrobić wszelkie braki. Tak w 3,4 dniu ogarnąłem tablice! I mogłem zrobić węża (akurat węża – bo: to jedna z kilku gier, które widziałem na automatach, POKE 1024 + x + y*40, 42 załatwiał sprawę rysowania, a tablice umożliwiły mi zrobienie znikania ogona – miazga, wcześniej był taki TRON – bo ślad zostawał.)

Wtedy czułem, że jestem programisto i już nic mnie nie zatrzyma :-)
Podobnie programistami zostawali niektórzy moi koledzy z podwórka, i żeby było śmieszniej chyba żaden z nich chyba nie został zawodowo programistą.

Trzeba przyznać, że było dużo łatwiej niż dziś.

  • Nie był dostępnego internetu przez to poznawanie komputera było dużo szybsze – czas w którym można było (przy pomocy losowych POKE metodą prób i błędów) ogarnąć działanie np. trybu graficznego i tak był krótszy niż przejrzenie demotów, jebzdziy i ostatnich wpisów na facebooku.
  • Nie było żadnych ekspertów, których można byłoby prosić o pomoc więc człowiek klepał te GOTO jak porypany i nikt mu nie mówił, że kod prosi się o użycie wzorców projektowych.
  • Nie było tony super gierek, więc pisane kodu to była najlepsza ROZRYWKA na komputer.
  • Nie było wypasionych kart graficznych więc jak się zrobiło dwie odbijające się kulki to był wypas do chwalenia się na podwórku (no dobra – pamiętam, że prawie nikt nie podzielał mojego entuzjazmu :-( ).
  • Nie było koncepcji zawodu programisty, (w Polsce nie funkcjonowała wtedy nawet ochrona praw autorskich), więc wiadomo było, że to wszystko robi się tylko dla zabawy – serio, jeszcze długo później kombinowałem jaki poważny zawód (typu piekarz) wybrać, żeby mieć dużo czasu na programowanie.

Żeby nie było - to były też wady.
Wiedza była zdobywana metodą prób i błędów kolportowana na zasadzie plotek. Mnóstwo wyciągnietych wniosków to były totalne bzdury, które sobie jeszcze powtarzaliśmy. Co gorsza raz powstałej plotki zwykle nie udawało się ubić (nawet po zweryfikowaniu), bo wszyscy już w nią wierzyli. Co znaczą niektóre komórki pamięci, jak przyspieszyć programy itp. Coby nie mówić o internecie – tu też jest tona bzdur, ale zwykle daje się też dotrzeć do prawdy. Tak naprawdę dopiero w erze internetu, długo po tym jak już na C64 nie pisałem, udało mi się niektóre niuanse zrozumieć.

Mimo czucia mocy szybko też przeżyłem rozczarowanie.

Gdzieś tak tydzień po dostaniu komputera udało się mi skopiować pierwsze profesjonalne gry na C64. Pamiętam jak dziś, że gra (GIANA SISTERS) to mnie mało obchodziła, chciałem zobaczyć jak to kodują profesjonaliści. Wgrałem grę – wpisałem magiczną komendę LIST (czyli wylistuj program w BASICu). Pojawił się taki kod:

10 SYS 2072

No jak to? Zajebista (naprawdę niezła gra) i cały kod to taki krótki?
Wpisałem z palca SYS 2072 i faktycznie odpaliła się gra. (WTF?)

Czy pisanie gier to po prostu wymyślanie takiego numerku ?

Próbowałem wpisywać inne numery ale jakoś były słabe rezultaty. Przy SYS 4096 nie wyszedł symulator lotu :-( tylko crash.

Co gorsza, po skopiowaniu innych gier okazało się, że one często mają ten sam SYS. (Najczęściej SYS 2064) Więc musi tam być jakaś diabelska moc.

Alę na tą moc to musiałem jeszcze poczekać 5 tygodni, aż udało się na wyjeździe zakupić książkę Frelka i ogarnąć assembler.

Przykład programowania level basic :-) w BASICu C64 znaleziony w sieci: https://www.youtube.com/watch?v=35tiI-tKkSo

LukeJL

co do Basica to pamiętam te listingi z Bajtka czy z takiej książki "komputer nie tylko do gier" <3 totalna magia. Byłem wtedy jeszcze na etapie pisania Hello Worldów, ale działało to na wyobraźnię, zobaczyć kod źródłowy większego programu, który coś robił.

LukeJL

Ja zaczynałem od peceta, chociaż też od BASICa. Pamiętam, że robiłem takie animacje typu animowane kółka, kreski, było to inspirowane demosceną (tylko 100 razy gorsze, bo przecież byłem początkujący). Potem był Pascal i nauka obiektowości i jakiejś tam biblioteki do sprajtów. Przy okazji też był tryb 13h i rajcowało mnie, że trzeba było zrobić wstawkę w asemblerze, a potem ręcznie liczyć pozycję bajta (coś jak y * 320 + x) i dopiero ustawiać bajt. Potem było Delphi i znowu kupę zabawy z wizualnym edytorem, z tworzeniem własnych komponentów itp. Pamiętam też, że była taka biblioteka Delphix do obsługi grafiki DirectX. A potem z kolei wszedłem w C++ i bawiłem się w grafikę 3D (jakąś grę, w której się chodzi czajnikiem zacząłem robić). Generalnie jedna wielka zabawa. Potem dopiero poznałem webówkę i programowanie stało się nudne (chociaż też nie zawsze). No i dopiero potem myślałem o tym, żeby szukać zleceń czy pracy, więc pojawiły się pierwsze frustracje ("nie chcą mnie do pracy") itp.

LukeJL

Też zauważyłem, że kiedyś paradoksalnie łatwiej było się nauczyć programować. Człowiek nie kalkulował "co się najlepiej opłaci" tylko po prostu uczył się tego języka, do którego miał dostęp, z tych materiałów do których miał dostęp (nie ważne było, że nie po polsku, bo przecież kiedyś były słowniki języków obcych i się siedziało i tłumaczyło słowo po słowie. Teraz mam wrażenie, że dzisiaj młodzież jest przekonana, że słowniki języków obcych nie istnieją i że jak coś jest "nie po polsku" i "słabo znam angielski" to jest to bariera nie do przekroczenia xD).

stivens

jak ktos w 21 wieku nie zna angielskiego to a. jest za mlody (nie wymagajmy za duzo od 10latkow) b. jest za stary (no kiedys takie byly czasy ze ludzie sie angielskiego nie uczyli) c. jest za glupi

stivens

wiec w wypadku punktu c to jesli nie jezyk to i tak inna bariera nie do przeskoczenia sie znajdzie;)

Burdzi0

Zawsze przy takich opowieściach żałuję, że urodziłem się tak późno - jakoś ten świat, kiedy programowanie stawało się bardziej powszechne zawsze mnie urzeka.

stivens

@Burdzi0: sa zady i walety no. Nie popadaj w melancholie;)

Burdzi0

@stivens: Bardziej uderza mnie to, że kiedyś znało się język programowania i zasadę działania komputera. Teraz trzeba znać bibliotekę i wiedzieć, gdzie znaleźć tutoriale

hurgadion

a ja przygodę z IT zacząłem w SP... chodziłem na kółko, i graliśmy dzielnie w Jednorękiego Bandytę (taka gra) na dwóch Timexach, kolejka była... :) a pierwszy projekcik napisałem już w LO, w LOGO, narysowałem fraktal, płatek śniegu, uuuu, to było coś, chyba szóstkę wtedy dostałem... :)

jarekr000000

@Burdzi0 w tym sęk, że własnie totalnie się nie znało, ale to własnie była zabawa. Obcowanie z magią. Pamiętam jak kiedyś zrozumiałem koncepcję, rastra, pamięci obrazu itp... koniec magii - nawet trochę szkoda.

czysteskarpety

ja dostałem C64 ze starymi numerami bajtka i basic'a, ale potem przeszedłem na hardware i palenie sprzętu OC, zresztą w mojej okolicy nie było za dużo programowania (zasadniczo to w ogóle za dużo nie było czegokolwiek) tak więc hardware to był wtedy najlepszy wybór niestety

scibi92

@jarekr000000: dla mnie dalej programowanie to najlepsza rozrywka na komputerze :)

WeiXiao

IF X<0 THEN GOTO 500 i lecimy gdzie chcemy. Serio, 2-3 lata później jak mi jeden gość powiedział, że GOTO to nie jest najlepsza rzecz w programowaniu to jakby mi ktoś w mordę.... MEMORIES @jarekr000000 może by wypadało puścić w poniedziałek na produkcje jakiegoś sneaky GOTO np. GOTO DROPDATABASE; :\DROPDATABASE System.out.printin("https://youtu.be/dQw4w9WgXcQ");?

Burdzi0

@WeiXiao: Było kiedyś goto w Javie, tylko zostało usunięte, a szkoda :P - source

jarekr000000

@Burdzi0 zawsze kojarzyłem, że goto w javie jest zarezerwowane w ramach trollingu, po to żeby nikt nie dodał :-) (swego czasu był taki urban legend), a tu zupełnie inna historia. Dzięki.

hurgadion

jest jeszcze chyba w VBA, i w .NET chyba też bywa... :)

furious programming

@jarekr000000: w ramach trollingu mogliby zrobić tak, że jeśli w kodzie znajduje się co najmniej jedno goto, to przy każdej pętli wywala syntax error – albo używa się pętli, albo goto. :D

WeiXiao

@hurgadion: np. w C# nadal jest GOTO http://rextester.com/JFGK21236 i nie widzę solidnego argumentu za tym, aby go wyrzucić.

LukeJL

goto to ludzie w c używają, bo nie ma wyjątków.

jarekr000000

O ile jest obecnie zgoda, że GOTO to bardzo niebezpieczna konstrukcja, to są ludzie którzy twierdzą, że programowanie strukturale i dalsze jego meandry to ślepa uliczka, Tak naprawde prawidłowym rozwiązaniem problemu GOTO jest wprowadzenie zamiast GOTO instrukcji COME FROM , która działa (po prostu!) w drugą stronę. Jest nawet język, w
którym to zrobiono : https://pl.wikipedia.org/wiki/INTERCAL https://pl.wikipedia.org/wiki/COME_FROM

WeiXiao

@jarekr000000: nvm, nie zauważyłem drugiego "come from" https://pl.wikipedia.org/wiki/COME_FROM chociaż i tak trochę jestem zmieszany :D

Tenonymous

Trochę się czuję jakbym był z tamtych czasów. W gry nie gram, facebook tylko do komunikacji, na jbzd i tego typu rzeczy nie wchodzę bo 99% contentu wywołuje u mnie politowanie, a na forum zadaje pytanie głównie jak mnie najdzie kodowanie na kacu. Obym tylko nie skończył jako javowiec :D

czysteskarpety

@Tenonymous: ale właśnie w latach 80-90 w gry sie cieło, bo było w co i było to świeże, praktycznie co miesiąc wychodziło coś fajnego, co w obecnych czasach jest odgrzewane

Tenonymous

@czysteskarpety: co prawda nie na w latach 80-90, ale na początku XXIw. to i ja grałem w gry, ale bardziej na pegasusie. Ah te czasy kiedy nie było save&load. potem jeszcze chciałem być sportowcem, więc się tyrało PES na stacjonarce z windowsem. A teraz? Xbox leży zakurzony, co pol roku dostaje noweg gry, bo wujek w anglii za funta kupuje, i tak sobie to stoi i czeka aż brat dorośnie :D

Mjuzik

Super historia, brzmi jak poznawanie nowego magicznego świata, w którym szuka się logiki :)

arczinosek

Bardzo ciekawa i wciągająca historia :) Który to był rok?

jarekr000000

Rok to był 1991 - ale czasem mam wątpliwości (technicznie to kojarze jakie to były dni tygodnia, ale zabawne, że na 100% nie jestem tego roku pewny - za dużo się działo i wydaje mi się niemożliwie za długi...)

stivens

kazdy kolejny rok Twojego zycia wydaje sie subiektywnie coraz krotszy. Moze to byc spowodowane tym, ze 1 rok dla 10 latka to 10% jego dotychczasowego zycia (i zgromadzonych doswiadczen) a dla 30 latka to juz tylko 3%

LukeJL

@stivens Myślę, że to raczej dlatego, że z biegiem czasu popadamy w rutynę. Za dzieciaka robi się zwykle masę rzeczy, a jak człowiek jest dorosły to często niestety robi to samo przez lata, co najwyżej zmienia X na Y (gdzie X i Y należą do tej samej kategorii, np. zmiana pracy).

stivens

to tez. W kazdym razie chodzilo mi o ta rozna percepcje czasu bo jarkowi rok wydawal sie za dlugi;)

Hispano-Suiza

@jarekr000000: Ostatnio widziałem tutaj w ogłoszeniach wątek o kupnie PDF do C# w 10 osób :-) Dorzuć kontynuację ile w tamtych czasach kosztowały tego typu pozycje. Bo z opowieści wiem, że po kilka pensji :-)

kodokleta

Ło matko nie mam siły ani czasu tego czytać... ale rzeczywiście były jakieś wielkie różnice między basic'ami? Pisałem jakieś banalne, prawie losowe programy (czasami z poke) na spectrum, ale może lepiej że są takie języki jak PHP, czy python, czy inne

jarekr000000

@Hispano-Suiza: z książkami to róźnie. Podstawowe podreczniki polskich autorów do nauki wystarczały. Ale jakies tam oficjalne guide/reference to były w zasadzie pozycje tylko legendarne. Dużo materiałów miałem na ksero. Np. wydruk całego ROM (16k) C64 deassemblowany z komentarzami.

jarekr000000

W czasach piractwa (półlegalnego) cena nie była problemem. Problemem był dostęp. Dopiero po wyprowdzce z małego miasteczka zdobyłem kontakty. Giełda komputerowa czyli wrzuta/chomik tamtych czasów.

Hispano-Suiza

@jarekr000000: Od ludzi starszych ode mnie, ktorzy zaczynali dosc dawno slyszalem, ze jedna pozycja ksiazkowa potrafila kosztowac nawet kilka owczesnych wyplat. Stad dopytuje wlasnie :-)

kodokleta

@Hispano-Suiza: byli jeszcze znajomi, uczelnie, antykwariaty (ale tam to rzadko)... poza tym to wydaje mi się, że w PRL książki wydawane w Polsce były tanie. Zresztą chyba nie było czegoś takiego jak piractwo, bo nie było prawa anty-pirackiego (chyba umów międzynarodowych z zachodem)

stivens

piraci mieli swoja bandere to tez zadnych umow z ofiarami nie mieli¯_(° ͜ʖ °)_/¯

kodokleta

bardziej korsarze :P Działali pod flagą RWPG ;)

WhiteLightning

@jarekr000000: czy ten podrecznik to bylo to? Commodore 64 Bedienungshandbuch -> http://pepele.pl/commodore-64-bedienungshandbuch/

jarekr000000

@WhiteLightning: raczej tak - w środku było to: http://cbm.6502.org/alternative/c64_de/c64_de.pdf - zobacz stronę 168 - pamiętam jak na podstawie tego listingu próbowałem ogarnąć tryb hi-res (totalna magia na C64 ze względu na organizację pamięci/rastra dla vica).

jarekr000000

Teraz jakcoś robie na c64 (przeważnie na emulacji...) to są dokumentacje takie jak ta: http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt - cudo

WhiteLightning

Ja pamietam ten balon (70 - 72). Wtedy to byla zabawa jak malpka -> przepisywalem niewiele rozumiejac z tego co robie (zwlaszcza jak uzywalo sie polecenia DATA). Razem z komputerem dotarla do mnie brutalna prawda ze rodzice wielu rzeczy nie wiedza i nie potrafia wytlumaczyc.

LukeJL

Mnie urzekł jeszcze obrazek w książce do pascala, na którym była pokazana wyrenderowana powierzchnia 3D w pascalu (bez żadnego gotowego silnika, w książce był opisany algorytm, w jaki sposób wyliczyć współrzędne tej powierzchni i wyrenderować). Podobnie w tej książce był opis jak renderować fraktale czy podobne rzeczy. Tylko, że wtedy jak ją czytałem, to byłem za bardzo początkujący, żeby zrozumieć o co tam chodzi. Dalej jestem.

jarekr000000

@LukeJL: jak ogarnąłem jak rysować takie mądre wykresy pseudo 3d jak w tym przykładzie http://retro64.altervista.org[...]mons-basic-and-basic-2-0-c64/ to miałem radość na wiele dni.

LukeJL

o właśnie to wyglądało podobnie do tego co wrzuciłeś. Swoją drogą kiedyś eksperymentując z cosinusami i sinusami całkiem przez przypadek... stworzyłem system cząsteczkowy, na którym animowała się jakaś powierzchnia/bryła w 3D (złożona z cząstek). Do dzisiaj nie wiem jak to zrobiłem. Tzn. cząsteczki zrobiłem świadomie, cosinusów i sinusów używałem wcześniej też świadomie do renderowania okręgów na ekranie - jednak ta animacja 3D, która mi wyszła powstała całkiem przypadkowo na zasadzie tutaj dodam cosinus z kąta alfa mnożony przez x + y i podzielę przez sinus z kąta beta * y, gdzie kąt alfa inkrementuje o tyle, a kąt beta o tyle podczas iteracji (tzn. wymyślam teraz, bo w rzeczywistości nie wiem jak to liczyłem, ale chodzi mi o to, że po prostu eksperymentowałem i dopisywałem rzeczy do równania na zasadzie "ciekawe co się stanie")

hurgadion

a na studiach, z tego co pamiętam, napisałem programik (średniej jakości) do obsługi biblioteki... w Pascalu... :)

jarekr000000

dokładnie tak się bawiłem z wykresami, fraktalami - co z tego, że 90% efektów to jakis nonsens - czasem wychodziło ładnie. Później jeszcze się bawiłem z https://pl.wikipedia.org/wiki/Krzywa_Lissajous (ale to już głównie na amidze ).

LukeJL

swoją drogą do matmy w szkole też miałem takie podejście i np. kiedyś rysując linie w zeszycie w kratkę odkryłem sposób na wizualne liczenie NWW i NWD (dla liczb A i B rysujesz prostokąt o bokach A i B i z rogu prostokątu przeprowadzasz na skos linię, potem jedziesz, i jak natrafisz na ścianę to się odbijasz od niej jak piłeczka, i tak dalej, aż do natrafienia kolejnego rogu. A potem, jeśli dobrze pamiętam, to liczysz ile kratek przejechałeś (NWW) oraz jaki jest odstęp między liniami (NWD).

LukeJL

do dzisiaj nie wiem jak to działa i nie umiałbym tego udowodnić jeśli bym pisał maturę z matmy i byłoby zadanie "udowodnij" (bo tylko na maturze kazali coś udowadniać), ale jakoś to działa :) Matematyka jest zadziwiająca.

kodokleta

@jarekr000000: figury lissajous to była moja pierwsza miłość programistyczna