<appendix id="unixdev">

<appendixinfo>
  <authorgroup>
    <author
><firstname
>Bernd</firstname
><surname
>Pol</surname
></author>
    <!-- ROLES_OF_TRANSLATORS -->
  </authorgroup>
</appendixinfo>

<title
>&UNIX; arendustegevus</title>

<indexterm zone="unixdev"
><primary
>arendus</primary
></indexterm>
<indexterm zone="unixdev">
  <primary
>&UNIX;</primary>
  <secondary
>arendus</secondary
></indexterm>

<sect1 id="history">
<title
>Mõned märkused ajaloo kohta</title>

<indexterm zone="history"
><primary
>ajalugu</primary
></indexterm>
<indexterm zone="history"
><primary
>skriptikeeled</primary
></indexterm>
<indexterm zone="history">
  <primary
>&UNIX;</primary>
  <secondary
>ajalugu</secondary
></indexterm>
<indexterm zone="history">
  <primary
>&UNIX;</primary>
  <secondary
>toru</secondary
></indexterm>
<indexterm zone="history">
  <primary
>&UNIX;</primary>
  <secondary
>shell</secondary
></indexterm>
<indexterm zone="history">
  <primary
>shell</primary>
  <secondary
>&UNIX;</secondary
></indexterm>

<para
>Algusest peale on &UNIX; maailmas olnud kaks väga erinevat arendusparadigmat. Üks neist on <emphasis
>süsteemi ja rakenduste programmeerimiskeelte</emphasis
> paradigma, mille kohaselt lähtekood tõlgitakse masinkoodiks mingi tõlkeprogrammi abil, milleks on tavaliselt <emphasis
>kompilaator</emphasis
> või <emphasis
>interpretaator</emphasis
>. Selle näiteks on C programmeerimiskeel. &UNIX; oli esimene operatsioonisüsteemi kernel, mis kirjutati sellises kõrgkeeles, mitte aga otseselt masinale orienteeritud assembleris, nagu oli tavaks varem (õigupoolest leiutatigi C keel &UNIX; kerneli ja sellega seotud programmide kirjutamiseks DEC PDP-11 arvutis). </para>
<para
>Teine paradigma on <emphasis
>skriptikeeled</emphasis
>. See arenes koos &UNIX; shelli leiutamisega, mis kujutas endast operatsioonisüsteemi kasutajaliidest &mdash; kuid samal ajal samuti programmeerimise kõrgkeel. Shelliskript luuakse mitme väikese programmi abil, &eg; <command
>grep</command
>, <command
>sed</command
> ja <command
>find</command
>. Iga selline programm on mõeldud väga konkreetseks ülesandeks. Kuid samal ajal saab kõiki selliseid programme siduda üksteisega väga lihtsa mehhanismiga, mida nimetatakse <emphasis
>toruks</emphasis
>. See suunab ühe programmi väljundi teise programmi sisendisse, mis seda siis töötlema asub. Nii tekib väga võimas ja väga paindlik programmeerimise tööriist. </para>
<para
>Ajapikku arenesid mõlemad maailmad. Kui ka C on endiselt kasutusel süsteemi programmeerimiskeelena, siis 1990. aastatel astus tema asemele keerukamate rakenduste loomisel objektorienteeritud ja üldiste laiendustega rikastatud nõbu C++. Programmeerimiskeeli on veel terve hulk, isegi mitmed eakamad on säilitanud oma koha &mdash; &eg; FORTRAN77 ja Ada positsioonid arvudega tegelevates rakendustes pole kuigivõrd nõrgenenud. </para>
</sect1
> <!-- history -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="unixdev-scripting-languages">
<title
>Tänapäevased skriptikeeled</title>
<para
>Skriptikeelte vallas on valitsenud trend shellist, mis kannatab mitmete porditavusprobleemide käes, keelte suunas, mis koondavad kogu sagedamini vajamineva funktsionaalsuse standardteekidesse, suutes samal ajal endiselt vajaduse korral suhelda muu maailmaga torude kaudu. </para>
<para
>Kõigi selliste skriptikeelte ühisjooneks on see, et nad on väga hästi porditavad nii &UNIX; variantide, Microsoft &Windows;, &MacOS; või isegi VMS süsteemi. Samuti on kõigil vabalt levitatavad teostused. </para>

<sect2 id="unixdev-SL-Perl">
<title
>&perl;</title>

<indexterm zone="unixdev-SL-Perl"
><primary
>Perl</primary
></indexterm>
<indexterm zone="unixdev-SL-Perl">
  <primary
>skriptikeeled</primary>
  <secondary
>Perl</secondary
></indexterm>

<para
><ulink url="http://www.perl.com"
>&perl;</ulink
> on saanud populaarseks tekstitöötlus- ja süsteemihalduskeelena. Veebi (WWW) algusajal olid &perl;is kirjutatud CGI skriptid väga levinud viis luua andmebaasidest dünaamilisi veebilehekülgi. Tänapäeval on selle üldjuhul asendanud veebiserveri &apache; plugin <command
>mod_perl</command
>. &perl;i tugevate külgede hulka kuulub sisseehitatud tugi regulaaravaldiste igakülgsele kasutamisele ning rikkalik vabalt levitatavate moodulite pagas. </para>
<para
>Rohkem infot jagab veebilehekülg <ulink url="http://cpan.org"
>Comprehensive Perl Archive Network (<acronym
>CPAN</acronym
>)</ulink
>. </para>
</sect2
> <!-- unixdev-SL-Perl -->

<sect2 id="unixdev-SL-Python">
<title
>Python</title>

<indexterm zone="unixdev-SL-Python"
><primary
>Python</primary
></indexterm>
<indexterm zone="unixdev-SL-Python">
  <primary
>skriptikeeled</primary>
  <secondary
>Python</secondary
></indexterm>

<para
><ulink url="http://www.python.org"
>&python;</ulink
> paistab silma elegantse klasside süsteemiga ning paindlikkusega, mis lubab väliseid teeke siduda moel, et need paistavad lausa &python;i enda standardsete klasside ja funktsioonidena. Erinevalt &perl;ist on &python;il väga selge ja kokkuvõtlik põimitud &API;, mistõttu see on lemmikkeel C ja C++ programmidele skriptimisvõimaluste lisamisel. </para>
</sect2
> <!-- unixdev-SL-Python -->

<sect2 id="unixdev-SL-PHP">
<title
>PHP</title>

<indexterm zone="unixdev-SL-PHP"
><primary
>PHP</primary
></indexterm>
<indexterm zone="unixdev-SL-PHP">
  <primary
>skriptikeeled</primary>
  <secondary
>PHP</secondary
></indexterm>

<para
><ulink url="http://www.php.net"
>&php;</ulink
> leiutati vahetult &HTML;-lehekülgedele põimitava keelena, mistõttu selle peamiseks kasutusalaks ongi veebi dünaamilise sisu edastamine. </para>
</sect2
> <!-- unixdev-SL-PHP -->
</sect1
> <!-- unixdev-scripting-languages -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<sect1 id="unixdev-hl-script">
<title
>Kõrgtaseme skriptikeeled</title>

<para
>Kõrgtaseme &UNIX; rakendustel puudub tihtipeale traditsiooniliste märkidele orienteeritud shelliskriptimehhanismide kiirus ja paindlikkus. Eriti kehtib see graafiliste kasutajaliideste (&GUI;) korral, &eg; &kde;. </para>
<para
>Samasuguse mehhanismi pakkumiseks, mis töötaks kõrgtaseme rakenduste tasandil, on tehtud mitu katset, millest äramärkimist väärivad <link linkend="unixdev-corba"
>CORBA</link
> ja &kde; keskkonnas <link linkend="unixdev-dcop"
>&DCOP;</link
>. </para>

<sect2 id="unixdev-corba">
<title
>CORBA protokoll</title>

<indexterm zone="unixdev-corba"
><primary
>CORBA</primary
></indexterm>
<indexterm zone="unixdev-corba">
  <primary
>skriptikeeled</primary>
  <secondary
>CORBA</secondary
></indexterm>
<indexterm zone="unixdev-corba">
  <primary
>kommunikatsioon</primary>
  <secondary
>CORBA</secondary
></indexterm>

<para
><ulink url="http://www.omg.org/gettingstarted/corbafaq.htm"
>CORBA</ulink
> (<emphasis
>Common Object Request Broker Architecture</emphasis
> ehk üldine objektipäringu maakleri arhitektuur) kujutab endast katset panna arvuti rakendused üheskoos tööle üle võrgu. Selle töötas välja eraviisiline, tootjatest sõltumatu <ulink url="http://www.omg.org"
>OMG</ulink
> (Object Management Group) standardikomitee. </para>
<para
>CORBA-põhised programmid kasutavad kommunikatsiooniks IIOP protokolli. Seda aluseks võtvad teostused on saadaval paljudele operatsioonisüsteemidele, programmeerimiskeeltele ja võrkudele, mis muudab nad väga hästi porditavaks. </para>
<para
>CORBA peamine miinus on päris suur aeglus. See võib olla talutav võrgus, kuid kujutab endast tõelist takistust rakendustevahelises suhtlemises võrguvälises keskkonnas, näiteks üksikarvutis töötava &kde; puhul. </para>

</sect2
> <!-- unixdev-corba -->

<sect2 id="unixdev-dcop">
<title
>&DCOP;-liides</title>

<indexterm zone="unixdev-dcop"
><primary
>DCOP</primary
></indexterm>
<indexterm zone="unixdev-dcop">
  <primary
>skriptikeeled</primary>
  <secondary
>DCOP</secondary
></indexterm>
<indexterm zone="unixdev-dcop">
  <primary
>kommunikatsioon</primary>
  <secondary
>DCOP</secondary
></indexterm>

<para
>Teist arengusuunda &UNIX; laadis skriptimise vallas kujutab <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html"
><emphasis
>DCOP</emphasis
></ulink
> protokoll, mis loodi CORBA piirangutest ülesaamiseks &kde; rakenduste vahelise eduka suhtlemise tagamiseks. </para>
<para
>&DCOP; tähendab <emphasis
>Desktop Communication Protocol</emphasis
> ehk töölaua kommunikatsiooniprotokoll ning on teostatud lihtsa IPC/RPC mehhanismina, mis toimib üle soklite. Sisuliselt pakub see umbes samasuguseid võimalusi nagu &UNIX; traditsiooniline torude mehhanism. </para>
<para
>Traditsioonilised shelliskriptid tuginesid üsna vähestele programmidele, mis töötasid rangelt tekstipõhiselt. &DCOP; võimaldab ka keerukatel graafilistel programmidel üksteisega suhteliselt samamoodi suhelda. See lubab &eg; ühel &kde; programmil saata teateid teisele &kde; programmile või saada andmeid oma vajaduste rahuldamiseks. </para>
<para
>Mõistagi ei ole ka see puudustest päris vaba. &DCOP;-i kasutamiseks peab programm sisaldama spetsiaalset &DCOP;-liidest. Mõnikord töötab ka &DCOP; suhtlemine aeglaselt (ehkki palju kiiremini kui CORBA). Kuid igatahes annab see suure osa &UNIX; skriptikeelte võimsusest ja paindlikkusest kõrgtaseme programmidele, mille aluseks on graafiline kasutajaliides. </para>
<para
>Rohkem infot annavad dokument <ulink url="http://developer.kde.org/documentation/library/kdeqt/dcop.html"
>DCOP: Desktop COmmunications Protocol</ulink
> ja &kde; dcop-teegi &API; dokumentatsioon <ulink url="developer.kde.org/documentation/library/cvs-api/dcop/html/index.html"
>The &DCOP; Desktop Communication Protocol library</ulink
>. </para>
</sect2
> <!--  unixdev-dcop -->

</sect1
> <!--  unixdev-hl-script -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="unixdev-buildsystems">
<title
>Ehitussüsteemid</title>

<para
>Kui kõrvale jätta väga lihtsad juhtumid, sisaldab programmeerimisprojekt tavaliselt terve rea lähtekoodi ehitusplokke, mis hooldamise hõlbustamiseks on jagatud failidesse. Kõige selle töölepanemiseks tuleb kogu lähtekood tõlkida masinkeelde kujul, mis lubab operatsioonisüsteemil programmi laadida ja käivitada. </para>
<para
>Selleks on vajalikud järgmised põhitööriistad <itemizedlist>
  <listitem
><para
><emphasis
>tekstiredaktor</emphasis
> lähtekoodifailide kirjutamiseks, </para
></listitem>
  <listitem
><para
>tõlkeprogramm, tavaliselt <emphasis
>kompilaator</emphasis
>, mis tõlgib lähtekoodi objektifailideks, </para
></listitem>
  <listitem
><para
><emphasis
>teegikorraldaja</emphasis
>, mis kogub objektifailid teekidesse, et neid oleks hõlpus uuesti kasutada ilma neid uuesti kompileerimata, </para
></listitem>
  <listitem
><para
><emphasis
>linkur</emphasis
>, mis seob mitu objektifaili ja teeki üheks käivitatavaks failiks, </para
></listitem>
  <listitem
><para
><emphasis
>ehitussüsteem</emphasis
>, mis lubab kogu kraami hallata &mdash; ja mõistagi </para
></listitem>
  <listitem
><para
><emphasis
>silur</emphasis
>, mis leiab üles (loodetavasti) kõik programmis esinevad vead, ning võib-olla veel mõned diagnostikatööriistad, et kõik võimalikult sujuvalt töötaks. </para
></listitem>
</itemizedlist>
</para>

<para
>Kui sul on suur projekt, mis koosneb sadadest lähtekoodifailidest, võib kompileerimine olla üsna vaevarikas protsess. Kindlasti ei soovi sa kõiki faile uuesti kompileerida iga kord, kui oled ainult mõnda neist muutnud. Selle asemel on palju mõttekam uuesti kompileerida ainult muudatustega failid. Kuid sageli pole väga lihtne aru saada, millised failid just vajavad ümberkompileerimist. </para>
<para
>Kui &eg; muudad funktsiooni prototüüpi päisefailis, pead kompileerima kõik failid, mis kaasavad antud päisefaili. Kui sinu projektis on neid palju, võib sul kergesti mõnigi vahele jääda, kui teed seda käsitsi. Siin tuleb appi automatiseerimine. </para>

<sect2 id="unixdev-buildsystems-make">
<title
>Ehitusprotsess</title>

<indexterm zone="unixdev-buildsystems-make">
  <primary
>make</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>Makefile</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>reegel</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>ümberkompileerimine</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>sihtmärk</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>sõltuvused</primary
></indexterm>
<indexterm zone="unixdev-buildsystems-make">
  <primary
>käsud</primary
></indexterm>

<para
>Tööriist, mis hoolitseb ümberkompileerimise eest, kannab nime <command
>make</command
>. See hoiab silma peal kogu tööl, kasutades selleks <emphasis
>reegleid</emphasis
>, mis kirjeldavad, mida võtta ette, kui mingi osa infost (tavaliselt lähtekoodi- või objektkoodifail) on muutunud. Kõik konkreetse projekti reeglid on salvestatud niinimetatud <filename
>Makefile</filename
>'i, mida <command
>make</command
> töötleb iga kord, kui soovid oma tööd uuendada. </para>
<para
>Iga reegel koosneb mitmest ehitusplokist, nimelt <itemizedlist>
  <listitem
><para
><emphasis
>sihtmärk</emphasis
>, &ie; ehitatav fail </para
></listitem>
  <listitem
><para
>valik <emphasis
>sõltuvusi</emphasis
> ehk nende failide nimed, millest sihtmärk sõltub (&eg; lähtekoodifaili nimi, kus siis sihtmärgiks saab ehitatava objektifaili nimi) ja </para
></listitem>
  <listitem
><para
><emphasis
>käsud</emphasis
>, mis tuleb käivitada sihtmärgi <quote
>ehitamiseks</quote
> (&ie; kompileerimiseks või linkimiseks teiste objektifailidega käivitatava programmifaili ehitamiseks). </para
></listitem>
</itemizedlist>
</para>
<para
>Põhimõtteliselt loeb käsk <command
>make</command
> üksteise järel kõik reeglid, kontrollib iga faili antud sihtmärgi sõltuvuste nimekirja ja ehitab sihtmärgi uuesti, kui mõni neist failidest on muutunud, kasutades selleks reeglis toodud käske. </para>
<para
>Ehitamisprotsessi juhtimiseks on mitmeid lisavõimalusi, mistõttu <filename
>Makefile</filename
> võib muutuda päris keeruliseks. Siinkohal ei jagu ruumi ega aega seda pikemalt tutvustada. Kuid me soovitame sul endal käsu <command
>make</command
> süntaks omandada. Isegi kui sa tavaliselt ei kasuta seda vahetult, tuleb ehitussüsteemi mõistmine kindlasti kasuks. Täpsemat infot annab <ulink url="info://make/Top"
><quote
>GNU Make Manual</quote
></ulink
>. </para>
<para
>&kdevelop;i spetsiifikast kõneleb lähemalt peatükk <link linkend="project-management"
>Ehitamine ja projektihaldus</link
>. </para>
<para
>Uurida tasuks ka mitmeid õppematerjale, mille kohta vaata <link linkend="automake-references"
>viiteid</link
> ehitamise ja projektihalduse peatükis. </para>
</sect2
> <!-- unixdev-buildsystems-make -->

</sect1
> <!-- unixdev-buildsystems -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="unixdev-guidevelopment">
<title
>&GUI; arendus</title>

<indexterm zone="unixdev-guidevelopment">
  <primary
>GUI</primary
></indexterm>
<indexterm zone="unixdev-guidevelopment">
  <primary
>graafiline kasutajaliides</primary
></indexterm>
<indexterm zone="unixdev-guidevelopment">
  <primary
>kasutajaliides</primary>
  <secondary
>GUI</secondary
></indexterm>

<para
>Rakenduste arendajatele seab lisakoorma vajadus pakkuda mitte ainult programmi teeke ja head loogikat, vaid ka hõlpsasti kasutatava ja kohandatava kasutajaliidese, mis oleks korraga nii kasutaja huve arvestav kui ka funktsionaalne. Enamik arendajatest ei ole &GUI; väljatöötamise teemal peaaegu mingit väljaõpet saanud, mistõttu kasutajaliidesed on sageli mitte just kõige ilusamad ja paremad. </para>
<para
>Aastatega on siiski tekkinud teatud üldlevinud kujunduspõhimõtted. Väga soovitatav on neid vähemalt põhijoontes järgida, sest nii omandab sinu rakenduse kasutajaliides sellise välimuse, mida kasutajad ei pea võõristama, vaid mis tundub neile algusest peale omane. </para>
<para
>&kde; &GUI; arendamise jaoks on olemas ka stiilijuhend. Selle leiab &kde; arendajate veebileheküljelt: <ulink url="http://developer.kde.org/documentation/standards/kde/style/basics/index.html"
>&kde; User Interface Guidelines</ulink
>. </para>
<para
>Lühitutvustuse &GUI; üldiste kujunduspõhimõtete kohta leiab <ulink url="http://axp16.iie.org.mx/Monitor/v01n03/ar_ihc2.htm"
>siit</ulink
>. </para>

</sect1
> <!-- unixdev-guidevelopment -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="unixdev-ide">
<title
>Kontseptsioonide ja tööriistade lõimimine &ndash; IDE</title>

<indexterm zone="unixdev-ide">
  <primary
>IDE</primary
></indexterm>
<indexterm zone="unixdev-ide">
  <primary
>integreeritud arenduskeskkond</primary
></indexterm>
<indexterm zone="unixdev-ide">
  <primary
>arendus</primary>
  <secondary
>IDE</secondary
></indexterm>
<indexterm zone="unixdev-ide">
  <primary
>keskkond</primary>
  <secondary
>IDE</secondary
></indexterm>

<para
>Omad tööriistad on olemas peaaegu iga programmeerimise sammu jaoks &mdash; planeerimine, redigeerimine, failihaldus ja kompileerimine, silumine, dokumentatsioon ja nii edasi. Kui aga projekt suuremaks muutub, võib nende eraldi kasutamine olla üpris tülikas. </para>
<para
>Programmi kujundamisel, kompileerimisel ja silumisel tuleb teha hulk üsna rutiinset tööd. Paljugi vaeva on võimalik säästa malle ja skripte kasutades. Veelgi parem on aga kõik vajalikud tööriistad koondada ühtekokku ühise &GUI; raamesse. </para>
<para
>Näiteks &mdash; kas poleks mugav, kui silur saaks vajaliku lähtekoodifaili avada redaktoris ja oskaks viia kursori otse kohta, kust leiti viga? </para>
<para
>Selliste vajaduste rahuldamiseks ongi mõeldud <emphasis
>integreeritud arenduskeskkond</emphasis
> (&IDE;). &IDE; lõimib ühte keskkonda kõik mallid, tööriistad ja skriptid, mida enamasti arendamise käigus vaja läheb. </para>
<para
>&kde; jaoks on selline &IDE; &kdevelop;. See pakub tervet hulka tööriistu, mis hõlbustavad programmide arendamist ja hooldamist, võimaldades töötada ka mitmetes programmeerimiskeeltes ning erinevaid platvorme arvestades. </para>

<sect2 id="unixdev-ide-kdevelop">
<title
>&kdevelop; &kdevrelease; põhiomadused</title>

<indexterm zone="unixdev-ide-kdevelop">
  <primary
>&kdevelop;</primary>
  <secondary
>omadused</secondary
></indexterm>
<indexterm zone="unixdev-ide-kdevelop">
  <primary
>omadused</primary
></indexterm>

<!-- ### copied from web page, needs to be updated -->

<itemizedlist>
  <listitem>
  <para
>Haldab kõiki <emphasis
>arendustööriistu</emphasis
>, mida on vaja C++ programmeerimiseks (kompilaator, linkur, silur, ehitussüsteem).</para>
  </listitem>
  <listitem>
  <para
>Pakub välja <emphasis
>&appwizard;</emphasis
>, millega saab luua terviklikke, kohe kasutamiseks valmis mallrakendusi.</para>
  </listitem>
  <listitem>
  <para
>Võimaldab kasutajal valida <emphasis
>põimitud redaktore</emphasis
>, mille aluseks on &kde; programmeerija redaktor &kwrite;, Trolltechi <application
>QEditor</application
> või midagi muud.</para>
  </listitem>
  <listitem>
  <para
>Pakub välja <emphasis
>klasside generaatori</emphasis
> uute klasside loomiseks ja lisamiseks töösolevasse projekti.</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Failihaldus</emphasis
> lähtekoodifailide, päisefailide, dokumentatsiooni &etc; tarbeks, mida soovid kaasata projekti.</para>
  </listitem>
  <listitem>
  <para
>Abistamine <emphasis
>rakenduse käsiraamatu</emphasis
> loomisel, mis on kirja pandud &kde; tööriistadega.</para>
  </listitem>
  <listitem>
  <para
>Automaatne &HTML;-põhine <emphasis
>&API; dokumentatsioon</emphasis
> projekti klasside jaoks ristviidetega kasutatud teekidele.</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Internatsionaliseerimise tugi</emphasis
>, mis lubab tõlkijatel lisada vähese vaevaga projekti oma sihtkeele (sealhulgas &kbabel;i toetus).</para>
  </listitem>
  <listitem>
  <para
>Tugi projektide haldamiseks mõne <emphasis
>versioonikontrollisüsteemiga</emphasis
> (&eg; &CVS;), milleks on mõeldud enamikku vajadusi rahuldav kasutajaliides.</para>
  </listitem>
  <listitem>
  <para
>Integreeritud <emphasis
>siluriliides</emphasis
>.</para>
  </listitem>
  <listitem>
  <para
>Integreeritud <emphasis
>shellikonsooli</emphasis
> emulaator.</para>
  </listitem>
  <listitem>
  <para
>Lähtekoodi <emphasis
>süntaksi esiletõstmine</emphasis
>.</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Automaatse koodilõpetuse</emphasis
> võimalus klassi muutujate, klassi meetodite, funktsiooni argumentide ja palju muu korral.</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Mallid erinevate projektide loomiseks</emphasis
> &juhtimiskeskus;e moodulid, &kicker;i (paneeli) apletid, KIO-moodulid, &konqueror;i pluginad ja töölauastiilid).</para>
  </listitem>
  <listitem>
  <para
>Neli <emphasis
>liikumisvaadet</emphasis
> hõlpsaks lülitumiseks lähtekoodifailide, päisefailide, klasside ja dokumentatsiooni vahel, mis kõrvaldab vajaduse kasutada välist failihaldurit.</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Krosskompileerimise tugi</emphasis
> ühes võimalusega määrata erinevaid kompilaatoreid, kompilaatorite lippe, sihtmärgi arhitektuuri &etc;</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Qt/Embedded projektide</emphasis
> tugi (näiteks Zaurus ja iPAQ).</para>
  </listitem>
  <listitem>
  <para
><emphasis
>Mis tahes programmi kaasamise</emphasis
> võimalus, mida vajad arendamiseks, seda menüüsse <guimenuitem
>Tööriistad</guimenuitem
> lisades.</para>
  </listitem>
</itemizedlist>

</sect2
> <!-- unixdev-ide-kdevelop -->

</sect1
> <!-- unixdev-ide -->

</appendix
> <!-- unixdev -->

