Python
VIM, spacje zamiast wcięć
lip 7th
Charakterystyczną cechą języka Python jest oddzielanie bloków kodu za pomocą wcięć. Z tego powodu są one niezmiernie istotne, a szukanie błędu powstałego przez źle umieszczone wcięcie, jeśli nie jest sygnalizowane przez interpreter może być bardzo czasochłonne a czasami wręcz frustrujące. Jakiś czas temu spotkałem się z takim problemem, który wynikł z używania 2 edytorów na 2 różnych maszynach. Na Windows korzystałem zamiennie z Vim oraz Programmers Notepad (tab = 4 spacje), pod linuxem wyłącznie z Vim bo tylko na tyle pozwalał interface konsolowy.
W pewnym momencie doszło do kolizji. Z jakiegoś powodu część wcięć przesunęła się w lewo – czyli znikły. Na całe szczęście 90% błędów zostało wykrytych przez interpreter. Od razu zaznaczam że nie przeprowadziłem pełnej analizy problemu, ale coś mi podpowiadało że to wina Tab w Vim. Poniżej przedstawiam w jaki sposób zamieniać wszystkie tabulacje na 4 spacje. Komendy można umieścić w .vimrc (linux) czy też w _vimrc jeśli korzystamy z Windows:
set tabstop=4 set shiftwidth=4 set expandtab
Na sam koniec warto dodać, że mimo iż Vim może być postrzegany jako stary edytor, trudny w użyciu a posługują się nim tylko starzy wyjadacze-programiści z poprzedniej epoki, to ma on wiele funkcji których nie oferuje nawet Notepad++, a programowanie bez odrywania rąk od klawiatury jest o wiele mniej męczące. Polecam cheatsheet: http://www.qitty.net/lnx/vim-cheatsheet.png
Scons – alternatywa dla Make, Qmake i podobnych
sty 29th
Scons jest oprogramowaniem którego zadaniem jest ułatwienie budowania binarnej wersji napisanego kodu. Twórcy zachwalają swoje dzieło jako między platformowe, łatwiejsze w użyciu i szybsze. Bazuje na Pythonie i dlatego postanowiłem się nim trochę zainteresować.
Pierwsze próby zakończyłem sukcesem. Co mi się bardzo spodobało to możliwość wyboru kompilatora. Mając do dyspozycji g++ z MinGW oraz Visual C++ Compiler, można zadecydować który z nich ma zostać użyty.
Najprostszy plik z instrukcją zdudowania programu to 1 linia:
Program('main.cpp')
Na Windows domyślnie zostanie wykorzystany (o ile dostępny) kompilator Microsoftu. Jeśli jednak chcemy użyć g++, wystarczy dopisać jeszcze jedną linię:
env = Environment(tools = ['mingw'], CC = 'gcc', CCFLAGS = '-O2')
env.Program('main.cpp')
Piewsze lody przełamane, kolejne próby będą sprawdzały łatwość dołączania zewnętrzych bibliotek jak boost czy qt.
SOAP w Pythonie
sty 11th
Mimo że sam język jest uważany za potężny z dostępną dużą ilością bibliotek, to nie do koońca jest to prawda. SOAP w Pythonie niestety ale po prostu leży. Są 2 biblioteki umożliwiające tworzenie webserviców i tak naprawdę 2 które umożliwiają korzystanie z już utworzonych. Ja swoje próby rozpocząłem od soaplib, biblioteki która została porzucona przez twórców, ale w wyniku tzw. forków w miarę często pojawiają się nowe wersje. Niestety był to błąd.
Więcej >
HSSPOJ – zadanie które nie dawało mi spokoju
sty 1st
Zadanie z konkursu algorytmicznego dla uczniów szkół średnich. Zwróciłem na nie uwagę, gdyż współczynnik poprawnych rozwiązań wynosił lekko ponad 30%, a skoro to konkurs dla licealistów to powinienem sobie dać radę. I tu pierwszy szok, nic z tego… Wiedza jaką dysponowałem okazała się daleko nie wystarczająca, a próby znalezienia rozwiązania podanego na tacy spełzły na niczym. Co dodatkowo rozbudziło moją ciekawość to fakt że na forach poświęconych programowaniu, nikt nie szuka pomocy.
Zadanie finalnie okazało się rozbudowaną grą Nim, ale bez znajomości jednego twierdzenia teorii gier prawdopodobnie siedziałbym na tym jeszcze dłuuuugo…
Treść zadania dostępna pod adresem http://hs.spoj.pl/problems/HS09GAME/
Więcej >
A może jednak Python?
mar 18th
Do odkurzenia tego artykułu skusił mnie link przekazany przez kolegę: http://www.artima.com/weblogs/viewpost.jsp?thread=252441 . Związek jest dość luźny, pod linkiem jest raczej rozważanie na temat przyszłości języków programowania ich mutacji i wspomniane co nieco o Jython’ie. Poniższy wpis jest odkurzony i lekko przeredagowny.
Python to język bardzo wysokiego poziomu w związku z tym tworzenie aplikacji w nim powinno być szybkie. I może samo tworzenie jest, ale jak już się Pythona dobrze zna. Dostarczona dokumentacja jest średnio czytelna i korzystanie z niej nie było zbyt wygodne. Żeby korzystać z docs’ów Pythona trzeba mieć chyba jakiś dar.
Więcej >