Mnohí ľudia ohŕňali nosom nad vývojom pod OS GNU/Linux. Ide hlavné o tých, ktorí si zvykli na komfortné prostredia Visual Studia, alebo prostredia produktov spoločnosti Borland. Tento článok vás však presvedčí o tom, že pod Linuxom to ide tiež, a dokonca lacnejšie, rýchlejšie a lepšie.
Úvod
Častokrát počúvame otázky nováčikov v programovaní typu: „Aké IDE (Integrated development environment) si mám vybrať? Je lepšie DevC++, alebo MSVC++?“ Fóra preplnené takýmito otázkami majú na svedomí viac, ako sa zdá.
Po prvé: nováčikovia začínajú programovať v zložitých IDE, ktorým nerozumejú a ktoré pred nimi skrývajú napríklad proces prekladu. Toto má za následok davy programátorov "borcov", ktorí programujú len pokým nepotrebujú niečo nastaviť ručne, prípadne nepotrebujú niečo, čo IDE nespraví za nich (prilinkovanie knižnice je pre nich cudzojazyčný výraz).
Po druhé: Vytvára sa značná komunita „hardcore systemlevel“ ľudí, ktorí neuznávajú nič iné, okrem rôznych „emacs a vim kultov.“ Títo pre zmenu tvrdia, že IDE potrebujú len BFU a oni riadia svet.
Ja tvrdím, že obe skupiny ľudí sa mýlia (veštím flame v diskusii). Mnohí z nás však vedia, že keď človek rozumie tomu, čo IDE robí, tak sa preňho stáva veľmi užitočným pomocníkom, hlavne (no nielen) pri projektoch väčšieho rozsahu. Preto som sa rozhodol pre popis IDE KDevelop, ktoré aktívne používam. Tento článok bude malou recenziou, alebo úvodným zoznámením s prostredím a základnými funkciami programu.
Inštalácia a spustenie
KDevelop sa nachádza v mnohých repozitároch, no odporúčam stiahnuť si aktuálnu verziu z kdevelop.org, kde ho nájdeme vo forme balíčku pre všetky hlavné distribúcie. V prípade, že by sa tam vaša distribúcia nenachádzala, odporúčam kompiláciu zo zdrojových kódov. Pre lepšiu orientáciu ešte uvediem, aby ste sťahovali verziu 3.4.X (Verzia 4, označená aj ako „head“ je port pre KDE4). Spustenie programu by malo fungovať normálne, cez KDE/Gnome menu.
Stručný popis
Takto nejako vyzerá hlavné okno, s rozpracovaným projektom (bočné panely sú otvorené zámerne a dajú sa samozrejme zavrieť pre úsporu miesta):
Samozrejmosťou, na ktorú sme pri takomto type programov zvyknutí, sú predpripravené šablóny projektov, ktoré nám bleskovou rýchlosťou pripravia vývojové prostredie a základný „ahoj svet“ program vybraného typu. Medzi takéto šablóny pre jazyk C a C++ patria okrem mnohých iných aj šablóny pre: konzolový helloworld program, linux kernel module, shared/static library, WxWidgets hello world, Gtk+, Qt, SDL, či Win 32 GUI. Medzi exotickejšie patrí napríklad šablóna pre Game Boy Advanced. Vymenovanie všetkých by bolo na samostatný článok.
Funkciou, ktorú teraz popíšem, je automatické doplňovanie kódu (podobné tomu v bashi, no značne vylepšené). Automatické dopĺňanie kódu funguje pod klávesovou skratkou Ctrl + Space. Stačí, že napíšeme časť mena funkcie/triedy/premennej (ďalej len objekty) a stlačíme Ctrl + Space. Ak je časť názvu objektu, ktorú sme už stihli napísať jednoznačná, tak je jej zvyšok automaticky doplnený. Ak nie je zadaná časť jednoznačná, dostaneme ponuku všetkých vyhovujúcich objektov. V prípade, že nie je zadané nič, zobrazí sa nám výber všetkých dostupných objektov. Ak zadáme napríklad len meno triedy, dostaneme na výber všetkých jej členov. SamozrejmosťoU je filtrovanie objektov, ktoré nie je možné v danom kontexte použiť (napríklad privátne premenné cudzej triedy). Všetko je upravené tak, aby sme počas písania nemuseli siahať na myš, čo hodnotím ako obrovské plus. Aby sa potešili aj oči, tu je príklad:
Ak si na túto funkciu zvyknete, zachvíľu zistíte, že vám ušetrí mnoho času strateného pri hľadaní názvu objektu, či času strateného pri rôznych preklepoch.
Užitočnou funkciou z tohto súdka je určite aj zobrazenie deklarácie funkcie, ktorú "ideme zavolať", čo sa hodí hlavne preto, že si nemusíme pamätať všetky parametre, ktoré funkcia vyžaduje. Najlepšie to asi uvidíte na obrázku:
Ďalšie z mnohých funkcií popíšem podrobnejšie v niektorom z ďalších článkov, tu ich aspoň vymenujem:
- Plnohodnotný debugger s krokovaním v zdrojovom kóde
- Dopĺňanie názvov premenných/funkcií
- Kontrola syntaxe už počas písania
- Zvýrazňovanie syntaxe
- Možnosť zrolovať (uzavrieť) bloky kódu, ktorým sa nevenujete (hodí sa hlavne v dlhých súboroch, kde je to priam spásonosná funkcia)
- Sprievodca pre vytváranie tried
- Správca tried
- Memory leak detector
- Správa projektov (aj zložitejších, skladajúcich sa z viacerých podprojektov)
- Správca prekladu (automake, cmake, qmake), ručné aj automatické linkovanie knižníc k projektu
- Podpora viacerých cieľov kompilácie (compile target: debug, optimized …) s možnosťou nastavenia odlišných nastavení
- Automatické vytváranie API dokumentácie
- Vytváranie source aj binary balíčkov z projektu
- GUI pre CVS, Subversion, Perforce a iné systémy na správu verzií
- Prehliadač dokumentácie (online aj offline, všetká dokumentácia na jednom mieste aj s indexom a vyhľadávaním)
- Vyhľadávanie v zdrojovom kóde projektu (aj v externom zdrojovom kóde) + inteligentné nahradenie názvu triedy/premennej/funkcie v celom projekte
- Class inheritance diagram generator
- Automatické formátovanie zdrojového kódu a možnosť zmeny štýlu formátovania podľa vašej chuti
- Integrovaný grafický editor pre GUI (Gtk aj Qt)
- Podpora komunity, ktorá je ochotná pomôcť ;-)
- Mnoho a mnoho ďalšieho
Funkcie a ich úroveň sa môžu pri rôznych programovacích jazykoch líšiť. U C/C++ je na prvotriednej úrovni a predpokladám, že taká bude aj pri ostatných oficiálne podporovaných jazykoch.
Každý sloh musí mať záver ;-)
Dnešný diel bol skôr skrátenou recenziou na program, no už nabudúce si vytvoríme prvý projekt a popíšeme základné funkcie na správu projektov v praxi. Takisto si popíšeme, ako si vytvoriť projekt tak, aby ste v ňom mohli skúšať príklady zo seriálu "Programujeme v jazyku C", ktorý vychádza paralelne s týmto na portáli linuxos.sk
Vďaka za pozornosť.
Timotej Šiškovič
my 2 cents
S pozdravom Castler
v dalsom dieli by si mohol vysvetlit co znamena ten cudzojazycny pojem(prilinkovanie knižnice) :-) taktiez, ako sa to da cele robit bez IDEcka ;) napr. ked mam program v gedite napisany, co mam robit, aby som ho skompiloval, ako tu mam prilinkovat kniznicu atd ;)
http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html
S programovaním ti však nepomôžem keďže Python som zatiaľ nikdy neštudoval/nepotreboval.
designer
-om. Ak chceš niečo šialené skús eric3, alebo eric4 ;)