czwartek, 26 kwietnia 2012

W Szczecinie powstał pierwszy Hackerspace. Inicjatywa jest ogromną szansą na ożywienie szczecińskiej sceny wspólnego tworzenia. Po udanych wydarzeniach DevCrowd, Android Hackathonie, (i kilku innych) zauważalna jest nuta ożywienia, pojawiającego się ducha wspólnego tworzenia, który dla mnie jest esencją Open Source. Wszystkim zaangażowanym w projekt Hackerspace bardzo, bardzo dziękuję :) Mam nadzieję, że miejsce będzie skupiać nie tylko środowiska tworzenia oprogramowania, ale także sprzętu oraz twórców sztuki cyfrowej, w tym mojej ukochanej - wizualnej.

Z myślą o sztuce wizualnej i łatwej wizualizacji powstał język Processing. Nie jest to kolejny martwy twór akademicki, ale bardzo elegancka "warstwa abstrakcji" na Java, która - mimo wielu swoich zalet - nie nadaje się jako język prototypowy z akcentem na aplikacje wizualne. Z drugiej strony jej dostępność, przenośność, uniwersalność, potężna biblioteka standardowa są niewątpliwie atrybutami. O Processing należy myśleć jak o warstwie abstrakcji, nakładce. Język jest zgodny z Java, umożliwia korzystanie z biblioteki standardowej Java, ale:
  • posiada zerowy narzut związany z tworzeniem okna graficznego
  • definiuje podstawowy zbiór "łatwych" metod matematycznych, graficznych, OpenGL, ....
  • posiada automatyczną obsługę głównej pętli programowej (wraz z odświeżaniem okna)
  • opakowuje niskopoziomowość organizacji bitmap w pamięci, kodowaniem koloru etc.
Processing dostarczany jest w standardowej dystrybucji jako gotowe IDE (zwane szkicownikiem) oraz właściwy .jar Osoby lubiące Eclipse mogą zintegrować Processing z tym środowiskiem. Manual gdzieś na stronie języka. Można by powiedzieć, że nic odkrywczego, gdyby nie kilka dodatkowych szczegółów. Processing posiada bardzo ciekawe opcje eksportu, w tym do gotowej strony WWW (aplikacja jest kompilowana do postaci apletu Javy + generowany jest plik HTML uruchamiający). To rozwiązanie ma charakter "out-of-box". Cała trudność to parę kliknięć. Jeżeli chciałbyś swoją aplikację uruchomić na  Android, to za pomocą szkicownika możesz wygenerować wersję dla tego systemu. 

Processing udostępniany jest jako LGPL, natomiast jego IDE jako GPL. Inspirująca jest ilość dostępnych pakietów dodatkowych oferujących najrozmaitsze funkcjonalności, choćby tworzenie GUI. Oczywiście wszystko poddane odpowiedniej abstrakcji :]

Po dłuższej przyjaźni z Processing trudno nie zauważyć, że świetnie się on nadaje do nauczania programowania, także przetwarzania obrazu, czy pisania gier. Ja jestem zachwycony. Choć sam nie wierzę, że to mówię, mając nauczyć kogoś podstaw tworzenia gier 2D, wybrałbym Processing, zamiast dotychczas preferowanego Pygame. Moja sympatia do Pythona nie słabnie :) Po prostu Processing jest wygodniejszy, zapewnia typowanie i bardzo elegancko automatyzuje obsługę elementarnych zdarzeń. To, co mnie najbardziej inspiruje w Processing to doskonała dokumentacja (dwie wersje API: dla nie-geeków oraz tradycyjny Javadoc), dodatkowo multum przykładów online, bardzo dobre tutoriale oraz kilka książek opisujących praktyczne przykłady wizualizacji i animacji z użyciem Processing. Kładę nacisk na praktyczne. Kilka materiałów na początek:
Fragmenty drugiej książki stanowią oficjalny tutorial do Processing, który można znaleźć na stronie języka (bezpłatnie). Do książki "Learning Processing" można pobrać za darmo przykłady. Oprócz tego na stronie ksiązki umieszczono - takze za darmo - kilka tutoriali. Osoba mająca doświadczenia w czymś co przypomina C++, Javę lub dowolny inny wysokopoziomowy, typowany język, może uczyć się wyłącznie z przykładów. Warto wspomnieć, że Processing potrafi obsługiwać Arudino.

Podczas tegorocznego Google's Summer of Code jednym z projektów był Processing. Po wakacjach możemy się spodziewać kolejnych nowości. Wszystkim, którzy się dostali składam gorące gratulacje :) Mam nadzieje, że ktokolwiek z Wydziału Informatyki ZUT zasilił w tym roku szeregi GSoCerów.

Gorąco gratuluję Jakubowi Narlochowi z Politechniki Warszawskiej (dawniej z WI ZUT) otrzymania wakatu GSoC. Jakub będzie rozwijał JBoss.

Następnym razem napiszę co nieco o matematyce w informatyce, lub informatyce w matematyce, czyli jak zrobić z macierzy 2D płaski wektor (bez zamykania jednego oka).

czwartek, 12 kwietnia 2012

Nowe języki programowania

Dziś bardzo szybciutko. Podrzucam kilka języków, którym warto się przyjrzeć, ponieważ mają "to coś". Wczoraj na #programming (FreeNode) rozpocząłem niewielką - w zamierzeniu - dyskusję o przyszłości języków programowania. Miałem nadzieję, że po niedługiej wymianie faktów temat się skończy. Jestem zaskoczony, bo po dwóch godzinach temat dalej się sączył.

To, co na mnie zrobiło wrażenie:
Dydaktyczne:
Kilka słów: Rust wydaje się niesamowity. Absolutnie "wow". Obecnie w wersji 0.2 i do samodzielnego zbudowania ze źródeł. Moje *buntu nie oferuje paczki w gałęzi stabilnej. Rust sam w sobie zbudowany jest w architekturze LLVM, proces kompilacji jest koszmarnie wolny.

io: coś a'la Smalltalk, silne wpływy funkcyjne, funkcje wywoływane w notacji postfixowej. Bardzo, bardzo ciekawa propozycja. Aha! io jest pomyślany jako język do osadzania.

Processing: świetne narzędzie dydaktyczne, doskonały do prototypowania dla osób spoza IT - także dla artystów sztuk wizualnych, fizyków, matematyków. Ubolewam, że nikt nie wprowadza go jako podstawy nauczania (zamiast dydaktycznie niewydolnego C++ lub - o zgrozo - Pascala).

Pike: składniowo jak C, natywna obsługa okienek. Przejrzysta składnia. Projekt akademicki.

Konkulzja wczorajszej rozmowy jest jedna: najbliższe pare lat będą należeć do JavaScript :))

Aha! Czternastego w Szczecinie odbędzie się DevCrowd. Tematy? Java, Node.JS, ogólna inżynieria oprogramowania, ... Agenda na stronie.

środa, 4 kwietnia 2012

Trudne początki

Trochę mi wstyd.

Zbierałem się do wyprodukowania pierwszego posta przez półtora roku. Przez cały pozostały czas wisiał post sprawdzający poprawność kolorowania składni. Wszystkich, którzy tu byli gorąco zachęcam do bywania częśćiej. Zobowiązuję się także, że sam będę bywał nieporównanie częśćiej :)

Niedługo wspomnę o tym, ze:
  • Processing jest doskonałym narzędziem w dydaktyce informatyki
... już niebawem :)