Psia jucha, kurcze pióro... Egzamin, który dzisiaj dane mi było pisać okazał się łatwym. Jednak by nie podnosić publiczności (czyli siebie) na duchu pragnę dodać iż spieprzyłem trochę sprawę, przez co nie wiem, czy zdam czy nie. A wystarczyło jeszcze z rana zajrzeć na reguły wnioskowania. Kurczę.
Ostatnio ściągnąłem sobie nową zabawkę - JDeveloper wyprodukowany przez Oracle - i muszę przyznać, że fajnie mi się nią bawi. Wizualny edytorek GUI aplikacji, ładnie generowany kod. Do tego przyjemnie wszystko wygląda i tylko trochę muli (bo bo nie ma lekko, nie ;)).
Nic, wracam do plucia sobie w brodę.
No niestety, każdego dopada. Dlatego przez jakiś czas będzie cisza na moim joggerze. Aktualnie męczę Programowanie (trochę z teorii języków formalnych, trochę z dowodzenia poprawności, rachunku lambda i różnych paradygmatów programowania), potem będę walczył z Algebrą (w międzyczasie - Sieci komputerowe). Na deser zostaje Analiza II. Trzymajta kciuki!
Kolejne odkrycia warte zapisania w moim internetowym pamiętniczku:
Dzisiaj dowiedziałem się, że:
Constans: SML to szit...
Z powodu zbliżającej się sesji zmniejszyła mi się diametralnie ilość czasu wolnego. Przez cały weekend i dzisiaj robiłem zadania domowe z algebry, zaraz będę robił programy w SMLu. I nie mam czasu pisać niczego fajnego.
Chciałem wspomnieć trochę o ostatniej pielgrzymce Benedykta XVI do Polski. Byłem na jednym ze spotkań, konkretniej w Krakowie na Błoniach w sobotę. Wg mnie było świetnie - dobre kazanie, zarówno B16 jak i później biskupa na Eucharystii. Do nabożeństwa dobrali bardzo dobre filmy opowiadające o różnych ludziach, których można by uznać, że są przegrani. Wszystko cisnęło po emocjach, i może to nie dobrze, bo trąci manipulacją. Staram się być bardzo odemocjonalniony religijnie, jednak ta impreza będzie dla mnie pamiętna właśnie ze względu na pewne podniecenie związane z obecnością Benka i całego tego tłumu, z którym tworzyłem wspólnotę tego dnia. Co do komentarzy okołopielgrzymkowych - wypowiadał się nie będę, bo niestety nie powiem nic mądrego czy nowego z tych sprawach. Dla mnie ważna była tamta chwila i tyle. :)
Odnośnie życia programistycznego - kończę swój projekt na pracownię, nazwany yget. Jest to narzędzie do ściągania witryn razem z obrazkami do danego zagłębienia w linkach. Aplikacja dosyć prosta, pisana w Javie w oparciu o HttpURLConnection, dzięki czemu nie muszę się pieprzyć z obsługą protokołu HTTP za bardzo. Brakuje mi tylko obsługi autentykacji Basic i chwilowo brakuje mi pomysłów na rozwiązanie tego właśnie problemu - oczywiście chodzi mi o przekazywanie juz wpisanych haseł do innych stron w danej domenie które również wymagają autoryzacji. Jeśli ktoś ma jakiś fajny pomysł to byłbym wdzięczny za naprowadzenie mnie nań.
Hura! Wreszcie juwenalia! Czas błogich zabaw, pijaństwa i totalnej rozpusty. Tym bardziej się cieszę, że praktycznie w ogóle nie będę brał w nich udziału.
Rzec by się chciało - cóż to za student kaprawy, co zabawić się w chwili swego święta nie chce. Wtóruje mu głos w mej głowie - łajdaku, świnio! Jednak serce nie sługa - podczas juwenaliów postanowiłem nadrobić zaległości. Oprócz tradycyjnego poświęcenia czasu Programowaniu (w sensie przedmiotu na studiach), postanowiłem zrobić wreszcie zadania domowe z algebry (abstrakcyjnej), by zaliczyć jakoś ćwiczenia. Pocieszającym jest fakt, że już dwa zaliczenia mam w kieszeni, trzecie powoli też, a z czwartym myślę, że też nie będzie problemu.
Jednak moja ambicja mówi mi: Jachu, pisz program z Sieci (kolejny przedmiot). Zatem prawdopodobnie najbliższy weekend (który zaczyna się już jutro wieczorem) spędzę przy komputerze i kartce papieru.
Dzięki Bogu, że chociaż w środę pójdę na drobny lansik z karaoke, bo tak to by szło zwariować.
A tak by być do końca szczerym - dla mnie juwenalia się skończyły wraz z końcem koncertu Pogodno na Marsowych Polach. Reszta koncertów, które się we Wro szykują, będzie raczej dupna, może poza Lili Marlene czy Lao Che.
Jakem już wspomniał w poprzednim poście pisałem niedawno
interpreter. Pewien całkowitego sukcesu, nie testując zbyt
dokładnie gotowego programu wysłałem ów już jako niby działający
świetnie, a tu się okazało, że przynajmniej 10 testów na 40 nie
przechodzi. Wynik niby i tak nie taki zły, jednak nie starczał, bo
zaliczenia przez to nie miałem. Wyjścia również dzięki temu nie
miałem - poprawki trzeba było zrobić, i to jak najszybciej, bo
ostateczny termin oddania interpretera minie w poniedziałek
przyszły. A, że wtedy będę chadzał po górach, to zabrałem się za
poprawki już wczoraj. Początki były ciężkie - nie wiedziałem
kompletnie co jest źle. Fakt jest taki, że jedna poprawka była
oczywista (zapomniałem o relacji różności), druga też dosyć prosta
- w pewnym momencie program mi się zapętlał, bo pętle, która nigdy
nie powinna się skończyć, ew. kończyła się przy bardzo dobrych
wiatrach :) Jednak później szło jeszcze gorzej - zabawa z
Eclipse'owym debugerem do Javy, a debugowanie programu
interpretującego inny program jest trochę idiotyczne, bo niby
tkwisz w odpowiednim kodzie, ale nie wiesz, jakiej on instrukcji
odpowiada, więc mieszasz się totalnie. Wtedy pomaga trik z
dodawaniem printa wszędzie tam, gdzie czujesz, że coś się kopie.
Innym przydatnym sposobem znajdowania błędów było drukowanie
dokładnych lokalizacji błędów (przy użyciu printStackTrace) oraz
używanie jakichś pól do przechowywania szczegółów wyjątku.
Okazało się również, o dziwo, że funkcji ma być przekazywane nie
aktualne środowisko (aktualne w sensie używane w trakcie
wywołania), a środowisko w którym funkcja została zdefiniowana.
Tego założenia niestety nie rozumiem, jednak postanowiłem się do
niego zastosować, przy lekkim nagięciu, tj. owszem używam
środowiska definicyjnego (tak je szalenie nazwę), ale oprócz tego
aktualnego i oczywiście do całości aplikuję parametry wywołania.
Nie wiem, czy to do końca poprawne, jednak jak narazie program
przechodzi wszystkie testy, więc powinno być dobrze.
Ostatnim problemem była zła obsługa is_null, funkcji sprawdzającej,
czy dana zmienna jest pusta. Jak się okazało... zapomniałem
przekompilować gramatykę, przez co miałem starą klasę parsującą, co
niestety powodowały błędy w jednym teście.
Ostatecznie zwyciężyłem - interpreter został ukończony, mam
nadzieję, że jutro zostanie on pozytywnie oceniony i będę miał z
nim spokój. I git! Jak narazie mnie jednak czeka jeszcze kolos z
analizy. A, coś od serca napisałem dzisiaj na kanapie. Zobaczcie, jeśli
chcecie, Wy nieczytelnicy.
Miało być tak pięknie - interpreter koncepcyjnie działał cudownie, jednak teoria różni się znacząco od praktyki. Wprowadzając do tematu - miałem napisać interpreter prostego języka programowania, nieczuły na typowanie, obsługujący struktury, funkcje, ify i while. No i napisałem - niby wszystko miało działać ładnie, a tu się okazało, że zapomniałem o funkcji != (przez co wywalił mi się jeden test). Jakiś inny test się zapętlał i testowarka nie sprawdzała dalej. I tak oto, z radości z ukończenia interpretera przeszedłem w smutek z powodu błędów tegoż. W każdym razie czas na poprawki.