; TeX output 2003.04.04:1543_2 ~?ՁZݺIqqecss2074Programmeertalenfmini-HOwmWTO cG 1 ecrm1000RistoU S.V*arankqa,V*ertaaldU doGor:qEllenBokhorst,bokkie@nl.linux.org22juli2000&6 ecss1000EenbGeknoptevergelijkingtussenbelangrijkeprogrammeertalenvoGorLinuxenbGelangrijkelibrary'svoGorhetaan-makenU vangraschegebruikersinterfaces(GUI's)onderLinux.(&Lt$ffffecbx1440Inhoudsopgacve]f ecbx10001In>troQductie}81ؼ1.1%LaatsteU versievqanhetdoGcumentx.荍.................................w21.2%Copyright탍.荍..............................................w21.3%Licentie{[.荍...............................................w2%1.3.1EV*ereistenU voGoraangepastewerkendM.荍.............................w21.4%Disclaimer.荍..............................................w31.5%Auteur&.荍................................................w31.6%KredietC.荍...............................................w31.7%Linksl㍍.荍.................................................w32Programmeertalenc?42.1%ConceptenU indetabGel'.荍.......................................w42.2%BelangrijkeU programmeertalen7㍍.荍...................................w52.3%ShellU ProgrammeringǍ.荍........................................w62.4%AndereU programmeertalenL.荍.....................................w62.5%Linksl㍍.荍.................................................w63GUIT oQolkits~{63.1%ConceptenU indetabGel'.荍.......................................w73.2%BelangrijkeU GUIT*oGolkitsэ.荍.....................................w73.3%Linksl㍍.荍.................................................w7(1Inctropductie:LinuxiseenfascinerendbGesturingssysteemomdathetiederegebruikerlaatparticipGerenindeontwikkeling ervqan.XDervariteitaanbGeschikbareprogrammeertalen,%kanechtervoGorbeginnendeLinuxontwikkelaarsverwarrend;mzijn.InditdoGcumentwordendemeestgebruikelijkeoptiesvoGoralledaagseontwikkelingopgesomdenrformuleertbGovendienvqandezetalendebGelangrijkstefeiten.(meestgebruikelijkHenbGelangrijkzoalsikdatU waarneem).ؼMijnEbGedoelingisnochdeprogrammeertalenonderdeloeptenemen,HnochvqasttestellenwelkedebGesteis.Iederegtaaliseenhulpmiddeldiebijeenaantaltakenensmakenpast.HJekuntgemakkelijkaanmeer(vqaak*_2 ~?G1.8In>troQductieY̹2ՁVtegenstrijdige)ginformatiekomen,lalsjeeensomjeheenvraagtofjeorenopGenhoudt.IndesectieLinksin ditU doGcumentvindjeeenaantalverwijzingenvoGoreeneigenonderzoek.ؼEr#iseenovervloGed#aanprogrammeertalenenlibrary'svoorLinuxbeschikbaar,-dusinditdocumentwordenophhetmomentalleendemeestgebruikelijkeprogrammeertalenenGUI](GraphicalUserInterface)toGolkitsbGehandeld.OHetisdebedoelingdatditdocumenttamelijkneutraalis,dmaarikhebnietallebeschikbarepro-grammeertalenϴopgenomen.EAangezienikinmijnoGordeelongetwijfeldopdiversewijzenbGenbevooroordeeld,adviseer-ikserieuzeontwikkelaars-eenkijkjetenemenopdiesitesdiebGeterzijninhetcatalogiserenvqanalleprogrammeertalenenlibrary's.Y(AlleendeLinuximplementatiesvqandetalenenGUItoGolkitswordenbGehandeld,QgerPxwordtovermogelijkhedenopandereplatformenvqandezetalennietgediscusseerdofietsovergempliceerd.DitdoGcumentisonlangsaandeLDPtoegevoegd, duserwasgeenkqansvoGorveelfeedbackvqandegemeen-schap.h HetQisechteruitgegevenindehoGopdathetvqannutzalzijnvoGormensendiegenteresseerdzijningprogrammerenonderLinuxendanmetnamevoGorbeginners.UEenvraagtekenindetabellengeefthetontbrekenU vqaninformatieaan.qAlsjehetinkuntvullen,neemdanalsjeblieftcontactopmetdeauteur.#Í!N ecbx12001.1Laatsteversiev@ anhetdo_cumentMJe1okuntdelaatsteaanpasssingenvindenopHЃ ecti1000http://www.helsinki./rvar}/anka/Computer/Linux/HOWTO/qL ectt10001.2CopyrightMCopyrightU (c)2000RistoV*arankqa.1.3LicentieDecvolgendelicentievoGorwaardengeldenvoGoralleLDPcdocumenten,ghtenzijandersuiteengezetinhetdocu- ment.w{DetLDP]doGcumentenmogengeheelofgedeeltelijkwordengereproGduceerdengedistribueerd,Iviaelkfysiekofelektronischmedium,opvoGorwaardedatdevermeldingvqandezelicentieindereproGductiewordtweergeven.)MCommercileherdistributieistoGegestaanenwordtaangemoedigd.)MHetwordtgewaardeerdalsdit630dagenvqandevorenviamailaandeauteurswordtgemeld,oQoraangepastewerkenMAlle'aangepastedoGcumenten,09inclusiefvertalingen,09bloGemlezingen,en'gedeeltelijkedoGcumenten,09moeten'vol-doGenU aandevolgendevereisten:ؼ 9b1.DeU aangepasteversiemoGetalszodanigwordengelabeld. 9b2.DeU pGersoondiedeaanpassingenmaaktemoetwordengedenticeerd. 9b3.ErkenningU vqandeoGorspronkelijkeauteurmoGetbehoudenblijven. 9b4.DeU lokqatievanhetoGorspronkelijkeU ongewijzigdedocumentmoetzijngedenticeerd. 9b5.DeY|naamvqandeoGorspronkelijkeY|auteur(s)magnietwordengebruiktonderschrijvingtebGewerenof implicerenU vqanhetresulterendedoGcumentzonderpermissievqandeoorspronkelijkeU auteur(s).BovendienU ishetvereistdat:$?_2 ~?G1.8In>troQductieY̹3ՁV 9b1.V*anU deaanpassingen(inclusiefverwijderingen)eenaantekeningwordtgemaakt. 9b2.DeauteurvoGordeherdistributieviaemailvqandeaanpassingopdehoogtewordtgebracht,Nalseen e-mailadresU inhetdoGcumentisopgenomen.ؼAlseenspGecialeuitzondering,mogenbloemlezingenvqanLDPdocumenteneenenkelekopievqandezelicen-tievoGorwaardenopeenopvqallendelokatieopnemenbinnendebloGemlezingenanderekopienvandezelicentievervqangendoGoreenverwijzingnaareenenkelekopievqandelicentiezonderhetdoGcumentalsaangepastaanU temerkenalsdoGelvqandezesectie.ؼLoutereenverzamelingvqanLDPdoGcumentenmetanderedoGcumentenofprogramma'sopdezelfdemediazalU niettotgevolghebbGendatdezelicentieopdieanderewerkenvqantoGepassingis.Allepvertalingen,afgeleidedoGcumenten,ofaangepastedoGcumentenwelkeenigLDPodoGcumentverenigdmogengeenjU wordtverwelkomd.ؼDeVwebsitevqandeauteuristevindenophttp://www.helsinki./rvar}/anka/.1.6KredietMIkRbGenverscheideneRmensendankbaardieopmerkingengavenRoverprogrammeeronderwerpGen.pDezeconver-saties zorgdenervoGordatikeenbeterinzicht kreegindeverschillende talen,8zenikhoopdattoekomstigeconversaties>4hetmogelijkzullenmakendezemini-HOWTO=indeloGopdertijdverderteontwikkelen.,IkzouvoGoralgraagdemensenophetIRCNetkqanaal#linux:K9Morphy*,4Bluesmurf,V*adim,Zonk,RikkusenanderenIwiensnaamikbGenvergeten,willenbedanken.+DankgaatookuitnaarStigErikSandoevoorzijnbGehulpzameU opmerkingen.1.7LinksMGrondigeU lijstenmetLinuxdevelopmentlibrary'sentoGols:ؼ !", cmsy10F;r}/eshmeatU LinuxDevelopmentT;o}/olsU linuxpr}/ogramming.comU 3f_2 ~?G2.8Programmeertalena 4ՁVDeñHackerhF_AQÔvqanEricS.Raymondiseen andereinteressantetekstvoGorbeginnendeLinuxontwikkelaars.:HetconcentreertzichopeenaantalcultureleenU psychologischeaspGectenvqanopensourcedevelopment.ؼAndere|LDPdo}/cumentenbGehandelenalgemeneprogrammeeronderwerpenwaaronder`deReadingListHOWTO`endeLinuxProgrammer'sGuide-erzijnernogmeeroverspGeciekeonderwerpGenU geschreven.(eE2Programmeertalen:C,LispenPerlzijntraditionelehackingprogrammeertalenindeGNU/Linuxcultuur; Python,uPHP*,JavqaenU C++hebbGenrecentnieuwegrondverworven."l2.1Conceptenindetab_el荍T aalCEenU gebruikelijkenaamvqandetaal.;BeginnerGeeftAaanhoGegeschiktdetaalisvoGormensenmetweinigprogrammeerervqaring.kEentaalgemarkeerd metU ja*hzouuitvoGerbaarmoetenzijnalseersteprogrammeertaalvooreenbeginner.P>erformanceHoGesneljeapplicatiesnaarallewaarschijnlijkheidzullendraaienwanneerjezeinproductieneemt. DelpGerformancehangtmeerafvqanjealgorithmischeprogrammeervaardighedendandefeitelijketaal.Als[4vuistregelzijnC,C++enF*ortransomsnoGodzakelijk[4omdatzeeenbGetereperformancebiedendan2anderetalen-anderekerenzijnzewellichtongeschiktvoGorhetgewenstedoGel.f (EenideevoGorhetnietwetenschappGelijkbenchmarken_$vqandeprogrammeertalenzouzijneeneenvoudigsorteeralgoritmete implementereninalleprogrammeertalenendeuitvoGertijdenervqantevergelijken.HiermeewordtnatuurlijknietdepGerformancevqandefeitelijketaalgemeten,=,aangeziendatconceptgeenzinheeft,maarEslechtsdeimplementatie.NatuurlijkgeenergbGetrouwbareofgrondigemethoGde,maarhetzoueenvoGorbeeldkunnengevenvqanhetverschilinuitvoGertijdenvqandeverschilendetalen.x8KaniemandmeU hiermeehelpGen?)OOP ,Object-Orien>tedProgrammingvs. andereparadigma'sCOb0ject@gerinteerdprogrammereniseenbGelangrijkparadigmadatmeeraanpopulariteitwint.4Inob0jectgerinteerdprogrammerenzijngegevensstructurenenalgoritmenineenhedengentegreerd,vqaakcXclassesgenoGemd.)OOPcstaatvaakincontrastmetproGcedureelprogrammeren(waarinapartealgoritmenengegevenstructurenwordengebruikt).%Hetisnietstrictafhankelijkvqandetaal:.jekuntOOP6doGen6intalendienietalszodanigwordenopgesomd(zoalsbijvoGorbeeld6C),enindeproGcedurelestijl4programmerenintalendiegecatalogiseerdzijnalsOOP*.IkhebtalenalsOOP4fgecatalogiseerddie-spGecialemogelijkhedenhebbenofadd-onsomOOPtevergemakkelijken.4F*unctionele-talen(zoalsbijvoGorbeelddLisp)zijneenwatanderesoGort.Z-functioneelprogrammerenisonderandereeensupersetvqane5OOP*.Logischprogrammeren(Prolog),:oGokdeclaratiefprogrammerenaandeanderekantisinvergelijkbareU zinnietgerelateerdaandeanderetypGenprogrammering.RAD,RapidApplicationDev>elopmentCEerdernafhankelijkvqandegebruiktetoGolsdandefeitelijketaal.ErisoGokeenHOWTOnoverGUIdevelopmentvoGorLinux,+alhoGewelhetverouderdis.tMeteengoGedgraschhulpmiddelkunjeRAD@8_2 ~?G2.8Programmeertalena 5ՁVdoGen.RAD!kqan€krachtigzijnwanneerbGovendiengebaseerdophergebruikvqandecoGde,dusvrije softwareU zoueengoGedbeginkunnenvormen.xV oQorbeeldenHHetbGenoemenvqandeprogrammeergebiedenwaarvoGordetaalhetvqaakstwordtgebruikt.1&AnderegoGede(enU slechte)gebruikenbGestaanook,maarzezijnminderkenmerkend.OpmerkingenHExtraU informatieoverU deprogrammeertaal,zoalsmogelijkhedenendialecten."l2.2BelangrijkeprogrammeertalenMPerlBeginner:?Ja-OOP:JaVoorbeelden:?Scripting,sysadmin,wwwOpmerkingen:?KrachtigvoorhetafhandelenvantekstenstringsPythonBeginner:?Ja-OOP:JaVoorbeelden:?Scripting,applicatiescripting,wwwOpmerkingen:TCLBeginner:?Ja-OOP:NeeVoorbeelden:?Scripting,sysadmin,applicatiesOpmerkingen:PHPBeginner:?Ja-OOP:JaVoorbeelden:?WwwOpmerkingen:?PopulairvoorwebdatabasesJavaBeginner:?Ja-OOP:JaVoorbeelden:?Cross-platformapplicaties,wwwOpmerkingen:?Uitgestrektnaarnieuwegebieden,bv.e-commerceinfrastructuurLispBeginner:?Ja-OOP:FunctioneelVoorbeelden:?Emacsmodes(voorElisp),AIOpmerkingen:?VariantenElisp,ClispenSchemeFortranBeginner:?Nee X-OOP:NeeVoorbeelden:?Wiskundige(wetenschappelijke)applicatiesOpmerkingen:?Variantenf77enf90/95CBeginner:?Nee X-OOP:NeePT_2 ~?G3.8GUIT oQolkits|z6ՁVVoorbeelden:?Systeemprogrammering,applicaties Opmerkingen:C++Beginner:?Nee X-OOP:JaVoorbeelden:?ApplicatiesOpmerkingen:#Í2.3ShellProgrammeringMOok&(shellsbiedeneenbGelangrijkeprogrammeeromgeving.aIkhebzenietbehandeldomdatikditterreinnognietƞzodoGorendoorbegrijp.KennisvqanshellsisvooriederbelangrijkdieregelmatigonderLinuxwerkt,nogmeerzelfsvoGorsysteembGeheerders. 'Erzijntussenshellprogrammeringenanderesoortenscriptingovereenkomsten,1vqaak(kunjeerdezelfdedoGelenmeebereiken,1enhebjedeoptietekiezentussendeshelleneenbapartescripttaal.FT*ussendemeestpGopulaireshellsbevindenzichbash,ɳtcsh,csh,kshbenzsh.FJekuntbasisinformatieU overjeshellkrijgenmetdeopGdrachtmanU,zoalsbijvoGorbeeldmanb}/ashU.2.4AndereprogrammeertalenMAndereytevermeldentalen:-AWK,SED,Smalltalk,Eiel,Ada,Prolog,assembler,Ob0jectiveyC,Logo,Pascal(p2cU converter)2.5Links#Een4!algemeneinfositeoverprogrammeertalen,heelU veelinfoenmeningenTCLU PerlU PythonU PHPU JavaU clispU (3GUIG\T(opolkits:HetהstandaardgraschesubsysteemvoGorUNIXrenLinux,1genaamdX,heeftzijneigenlibrary'svoGorGUI ontwikkeling.aZeolevereneenlow-levelprogrammeerinterfacevoGorX,maarneigenernaarmoeilijktege-bruikenɮtezijn.)OudeeindgebruikersapplicatiesenanderetoGolkitsmakenernatuurlijkgoGedgebruikvqan.T*egenwoGordigwordtdeLinuxGUIwscenegedomineerddoGorGTK+enQt,aangezientweepGopulairecompletegebruikersomgevingen,U GNOMEenKDE,hieropzijngebaseerd.V_2 ~?G3.8GUIT oQolkits|z7ՁCPUrLibrary BeginnerHLicentieT*aalBindingsgV*oGorbeelden OpmerkingenTK JaHV*rijTCLPerl,U Python,anderengmakeU xcong,TKDeskGTK+ NeeHV*rijU (LGPL)CPerl,U C++,Python,veelanderengGNOME,U GimpZeerU pGopulairQT NeeHV*rijU voGoropensourceC++Python,U Perl,C,anderen?gKDEZeerU pGopulairMotif NeeHNietU vrijC/C++Python,U anderen?gNetscapGe,U W*ordperfectL}/esstifU iseenvrijevervqangingGNUstep NeeHV*rijU (LGPL)Ob0jectiveU CGuile,U Javqa?gNietU zobGekend,maarziedeapplic}/atielijstGNUstepU isnogsteedsonderontwikkelingӍ3.1Conceptenindetab_elLibraryɍAlgemeneU naamofafkortingvqandetoGolkit.FDBeginnerOfU detoGolkitgeschiktisvoGoreennewbieprogrammeur.Licen>tieDe.verschillendelicentiesvoGordeverschillendeGUI.toGolkitshebbeneenpraktischebetekenis.dGTK+, TKrenGNUsteplicentiesmakenhetmogelijkzowelopGensourcealsclosedsourceapplicatiesteon-twikkelenJzondertehoGevenbetalenvooreenlicentie.DeMotiflicentiemoGetwordenbGetaald,terwijlvoGorU deQTlicentiealleenhoGefttewordenbGetaaldalsjeclosedsourceprogramma'sschrijft.T aalɍDeU programmeertaaldiehetmeestmetdetoGolkitwordtgebruikt.BindingsAndereU talendiegebruikkunnenmakenvqandetoGolkit.V oQorbeeldenApplicatiesU diegebruikmakenvqandetoGolkit.OpmerkingenExtraU informatieoverU detoGolkit.#3.2BelangrijkeGUITo_olkitsX3.3LinksTKU s~GTK+U QTU `_2 ~?G3.8GUIT oQolkits|z8ՁVMotifU GNUstepU j_;_2GqL ectt1000HЃ ecti1000!N ecbx1200]f ecbx1000&Lt$ffffecbx14406 ecss1000Iqqecss2074 1 ecrm1000 !", cmsy10kP