Code::Blocks

Ostatnio aktualizowano 19 października 2005 r.

Krótko i nie na temat...
Przeglądając prasę w Empiku natrafiłem na nowy numer Software Dewelopera, a w nim na krótką wzmiankę o młodziutkim jeszcze IDE dla C/C++ nazywającym się Code::Blocks. Z krótkiego opisu wynikało, iż jest ono warte zainteresowania. Chciałbym w tym miejscu podzielić się z wami moimi wrażeniami.

Z czym mamy do czynienia?
Code::Blocks to darmowe IDE (Integrated Development Environment) czyli zintegrowane środowisko programistyczne przeznaczone dla programistów C/C++, zaprojektowane w taki sposób by łatwo było je wzbogacić o dodatkową funkcjonalność (tutaj mam na myśli rozbudowany system wtyczek - pluginów).

Więcej szczegółów...
Code::Blocks to projekt open source, udostępniony na licencji GPL2, jego źródła są dostępne na stronie autorów - gotowe do samodzielnej kompilacji, także za pomocą wspomnianego środowiska. Archiwa z kodem źródłowym zawierają pliki projektu *.gdb (format plików w jakich zapisuje Code::Blocks). Stworzone w GNU C++ jest dostępne na dwóch platformach Linux i Windows z czym wersje dla tych systemów nieznacznie się od siebie różnią, o czym napisze później. Rozszerzenie możliwości aplikacji zapewniają wtyczki, SDK potrzebny do pisania wtyczek jest również dostępny na stronie projektu. Ciekawi was pewnie, jakie kompilatory obsługuje Code::Blocks... Zadziwię was trochę, gdyż w tej chwili można podpiąć aż 5 kompilatorów. Mnie zaskoczyło to bardzo mile, ponieważ jeszcze nie natknąłem się na środowisko które by na to pozwalało:
1) GCC (MingW/Linux GCC)
W tej chwili najlepiej obsługiwany kompilator przez Code::Blocks, dla niego środowisko posiada najwięcej opcji konfiguracyjnych. Jedyny mały problem występuje podczas debugowania projektu, jeżeli w ścieżce do plików, które maja być odpluskwione znajduje się spacja - debugger może nie zadziałać poprawnie. Ze strony projektu można ściągnąć dwie wersje środowiska z kompilatorem MingW lub bez, różnica jest znacząca - paczka z kompilatorem zajmuje bowiem aż 10 MB (dla posiadaczy słabszych łącz może być to przykre). Jednakże można ściągnąć same środowisko a kompilator do instalować później. Code::Blocks wykrywa kompilatory znajdujące się w systemie i pozwala na ich wybór. Obecnie gdy wyszła wersja 1.0 RC1 środowisko wykrywa kompilator, który dołączony jest do DevCPP. 
Kompilatory: Linux GCC - obecnie najnowsza wersja to 4.0.1, Win32 MingW posiada GCC w wersji 3.4.4
2) MSVC++
... czyli Microsoft's Visual C++ Free Toolkit 2003. Część projektów kompiluje się poprawnie, jednak nie ma możliwości debugowania. Najnowszą wersję kompilatora można pobrać stąd.
3) Digital Mars Compiler
Dawniej kompilator firmy Symantec, obecnie projekt freeware. Za jego pomocą możemy kompilować 16 i 32 bitowe programy dla DOS (tak! Digital Mars udostępnia specjalne rozszerzenia pozwalające kompilować 32 bitowe programy dla DOS). Digital Mars występuje w trzech wersjach: kompilującej do C, do C++ i do D. Przyznam szczerze, że nie udało mi się uruchomić przykładowego programu, ale spowodowane było to faktem, że nie poświęciłem DMC zbyt dużo czasu. Cieszy mnie fakt, iż kompilator ten kompiluje do D, bo oznacza to, że będzie z czym eksperymentować. Bieżącą wersje kompilatora można pobrać tutaj.
4) Borland C++ 5.5
Kompilatora firmy Borland chyba nie muszę przedstawiać, jego bieżącą wersję można pobrać stąd. Niestety nie udało mi się popracować z nim za pomocą Code::Blocks, ale z tego co słyszałem były pewne problemy podczas kompilacji przykładowych projektów i nie jest możliwe  także odpluskwianie.
5) Open Watcom
Z wersją BETA6, którą testuję, nie było możliwości uruchomienia tego kompilatora - jest to nowość, którą wprowadziła wersja RC1. Open Watcom

Programista ma do dyspozycji możliwość bezpośredniej kompilacji, bądź za pomocą makefile-ów. Osoby przyzwyczajone do DevCPP i jego predefiniowanych szablonów aplikacji zadowoli identyczna opcja w Code::Blocks. Mamy też możliwość tworzenia własnych szablonów do późniejszego wykorzystania, podobieństwo nie kończy się na szablonach, pomocne okażą się znajome skróty klawiaturowe (F9 - Kompiluj, F8 - Debuguj, Ctrl-F10 - Uruchom itd.). Kolejną ważną zaletą jest możliwość importowania projektów zarówno z DevCPP jak i MSVC++ (tu mała uwaga - na razie nie ma wsparcia dla kodu Asemblera i wewnątrz projektowych zależności w przypadku MSVC++). Podczas importowania projektu istnieje możliwość wyboru kompilatora, którego będziemy używać do kompilacji. Wersja BETA, na razie, podaje wszystkie kompilatory, które może obsługiwać a nie tylko te, które są rzeczywiście dostępne w systemie.

Interface czyli samo gęste...
Code::Blocks został napisany z myślą o nieograniczonej możliwości rozszerzania funkcjonalności, za pomocą wtyczek, a samo środowisko, po standardowej instalacji, posiada już kilka przygotowanych wtyczek:
1) Podświetlanie składni - daje ogromną możliwość dostosowania i rozszerzania jej o kolejne słowa kluczowe. Obecnie, wspierane składnie to: C/C++, pliki zasobów Windows, HTML, XML, XSL, skrypty Luai GameMonkey oraz Hitachi H8 ASM. Sam o mało się nie zgubiłem w mnogości ustawień kolorowania składni. Spodobała mi się opcja ustawienia formatowania programu, czyli jak mają wyglądać: if, while, swatch-e. Ja na przykład lubię pisać tak:

if( warunek ){
//kod;
}else{
//kod;
}

Code::Blocks pomaga mi w utrzymaniu takiego stylu.
2) Uzupełnianie tzw.: Code completion, środowisko podpowiada nam metody jakich możemy użyć;
3) Zakładki (tylko w wersji na Linux) lub Okna (w Windows i Linux) - to jest ta mała różnica o której wspomniałem na początku tekstu;
4) Podgląd klas, funkcji, struktur i dyrektyw preprocesora użytych w projekcie;
5) Inteligentne wcięcia - sam spotkałem się z tym dopiero w MSVisual Stduio.Net i uważam taką opcję za bardzo przydatną - pozwala ona "zamykać" kod należący do danej klasy i funkcji, aby nie zajmował miejsca na ekranie;
6) Lista otwartych plików - pozwala na zaawansowaną obsługę zewnętrznych narzędzi;
7) System zarządzania planowaniem rozwoju projektu (to-do list).
więcej>>

Widzieć znaczy uwierzyć...
Na stronie projektu znajdziecie kilka zrzutów z ekranu działającego środowiska tutaj, a poniżej moje.

Opcje importu projektów Ustawienia kolorowania Opcje kompilatora Uruchomiony projekt

Kilka słów na zakończenie...
Pracuję w Code::Blocks już dwa miesiące i uważam, że był to dobry wybór jeżeli chodzi o środowisko pracy. Projekt stale się rozwija, wiec kolejne poprawki i wtyczki powstają bardzo szybko. Uważam, że program ten ma dużą przyszłość i stanie sie popularny wśród programistów. Zachęcam do spróbowania.

Przydatne linki...
http://www.codeblocks.org/ - strona główna projektu
http://www.codeblocks.org/testimonials.shtml - opinie innych użytkowników o Code::Blocks
http://www.codeblocks.org/screenshots.shtml - zrzuty z ekranu
http://www.codeblocks.org/whatsnew.shtml - nowości w bieżącej wersji
http://wiki.codeblocks.org/index.php/Main_Page - strona wiki projektu
http://www.codeblocks.org/about.shtml - wzmianka o autorach
http://forums.codeblocks.org/ - forum Code::Blocks

http://sourceforge.net/donate/index.php?group_id=126998 - wsparcie finansowe dla projektu

http://www.opensource.org/licenses/gpl-license.php - licencja GPL
http://www.gnu.org/licenses/gpl.html

Wiedza tylko wtedy jest wiedzą, kiedy zdobyta została wysiłkiem własnej myśli, a nie wyłącznie dzięki pamięci.

Poprawny XHTML 1.0! Poprawny styl CSS!hacker emblem open source emblem