File: Programming-Languages-NL.sgml

package info (click to toggle)
doc-linux-nl 20050324-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 15,900 kB
  • ctags: 105
  • sloc: xml: 37,932; makefile: 313; perl: 193; sh: 120; ansic: 12; csh: 9
file content (527 lines) | stat: -rw-r--r-- 17,114 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
<!doctype linuxdoc system>
<linuxdoc>
<article>
<titlepag>
<title>Programmeertalen mini-HOWTO
</title>
<author><name>Risto S. Varanka,<newline>
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org</name></author>
<date>22 juli 2000 </date>
<abstract>Een beknopte vergelijking tussen belangrijke programmeertalen
voor Linux en belangrijke library's voor het aanmaken van grafische
gebruikersinterfaces (GUI's) onder Linux.
</abstract>
</titlepag>
<toc>

<sect><heading>Introductie</heading>

<p>Linux is een fascinerend besturingssysteem omdat het iedere gebruiker
laat participeren in de ontwikkeling ervan. De vari&euml;teit aan
beschikbare programmeertalen, kan echter voor beginnende Linux ontwikkelaars
verwarrend zijn. In dit document worden de meest gebruikelijke opties voor
alledaagse ontwikkeling opgesomd en formuleert bovendien van deze talen
de belangrijkste feiten.(``meest gebruikelijk'' en ``belangrijk'' zoals
ik dat waarneem).
</p>

<!-- verwijs naar mogelijk grotere howto -->

<p>Mijn bedoeling is noch de programmeertalen onder de loep te nemen,
noch vast te stellen welke de beste is. Iedere taal is een hulpmiddel
die bij een aantal taken en smaken past. Je kunt gemakkelijk aan meer
(vaak tegenstrijdige) informatie komen, als je eens om je heen vraagt of
je oren open houdt. In de sectie Links in dit document vind je een 
aantal verwijzingen voor een eigen onderzoek.
</p>

<!-- perhaps there should be some freeform discussion in the
Opmerkingen part of the tables -->

<!-- waarom is mijn taal niet opgenomen? leg dat wellicht in detail uit 
-->

<p>Er is een overvloed aan programmeertalen en library's voor Linux
beschikbaar, dus in dit document worden op het moment alleen de meest gebruikelijke
programmeertalen en GUI (Graphical User Interface) toolkits behandeld.
Het is de bedoeling dat dit document tamelijk neutraal is, maar ik heb niet
alle beschikbare programmeertalen opgenomen. Aangezien ik in mijn oordeel
ongetwijfeld op diverse wijzen ben bevooroordeeld, adviseer ik serieuze
ontwikkelaars een kijkje te nemen op die sites die beter zijn in het
catalogiseren van alle programmeertalen en library's. Alleen de Linux
implementaties van de talen en GUI toolkits worden behandeld, er wordt over
mogelijkheden op andere platformen van deze talen niet gediscusseerd of
iets over ge&iuml;mpliceerd.
</p>

<p>Dit document is onlangs aan de LDP toegevoegd, dus er was geen kans
voor veel feedback van de gemeenschap. Het is echter uitgegeven in de
hoop dat het van nut zal zijn voor mensen die ge&iuml;nteresseerd zijn
in programmeren onder Linux en dan met name voor beginners. Een vraagteken
in de tabellen geeft het ontbreken van informatie aan. Als je het in kunt
vullen, neem dan alsjeblieft contact op met de auteur.</p>

<sect1><heading>Laatste versie van het document</heading>

<p>Je kunt de laatste aanpasssingen vinden op <url
url="http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/"
name="http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/"></p>
</sect1>

<sect1><heading>Copyright</heading>

<p>Copyright (c) 2000 Risto Varanka.</p>
</sect1>

<sect1><heading>Licentie</heading>

<p>De volgende licentie voorwaarden gelden voor alle LDP documenten, tenzij
anders uiteengezet in het document. De LDP documenten mogen geheel of
gedeeltelijk worden gereproduceerd en gedistribueerd, via elk fysiek of
elektronisch medium, op voorwaarde dat de vermelding van deze licentie
in de reproductie wordt weergeven. Commerci&euml;le herdistributie is
toegestaan en wordt aangemoedigd. Het wordt gewaardeerd als dit 30
dagen van de voren via mail aan de auteurs wordt gemeld, om de auteurs
in de gelegenheid te stellen bijgewerkte documenten aan te leveren.
</p>

<sect2><heading>Vereisten voor aangepaste werken</heading>

<p>Alle aangepaste documenten, inclusief vertalingen, bloemlezingen,
en gedeeltelijke documenten, moeten voldoen aan de volgende vereisten:
</p>

<p>
<enum>
<item>De aangepaste versie moet als zodanig worden gelabeld.</item>
<item>De persoon die de aanpassingen maakte moet worden ge&iuml;dentificeerd.
</item>
<item>Erkenning van de oorspronkelijke auteur moet behouden blijven.</item>
<item>De lokatie van het oorspronkelijke ongewijzigde document moet zijn
ge&iuml;dentificeerd.</item>
<item>De naam van de oorspronkelijke auteur(s) mag niet worden gebruikt
onderschrijving te beweren of impliceren van het resulterende 
document zonder permissie van de oorspronkelijke auteur(s).</item>
</enum>
</p>

<p>Bovendien is het vereist dat:</p>

<p>
<enum>
<item>Van de aanpassingen (inclusief verwijderingen) een aantekening
wordt gemaakt.</item>
<item>De auteur voor de herdistributie via email van de aanpassing
op de hoogte wordt gebracht, als een e-mailadres in het document is opgenomen.
</item>
</enum>
</p>

<p>Als een speciale uitzondering, mogen bloemlezingen van LDP documenten
een enkele kopie van deze licentievoorwaarden op een opvallende lokatie
opnemen binnen de bloemlezing en andere kopi&euml;en van deze
licentie vervangen door een verwijzing naar een enkele kopie van de
licentie zonder het document als ``aangepast'' aan te merken als doel
van deze sectie.
</p>

<p>Louter een verzameling van LDP documenten met andere documenten of
programma's op dezelfde media zal niet tot gevolg hebben dat deze
licentie op die andere werken van toepassing is.
</p>

<p>Alle vertalingen, afgeleide documenten, of aangepaste documenten
welke enig LDP document verenigd mogen geen beperktere licentievoorwaarden
dan deze hebben, behalve dat je van de distribiteurs mag vereisen dat ze
het resulterende document beschikbaar stellen in het bronformaat.
</p>
</sect2>
</sect1>

<sect1><heading>Disclaimer</heading>

<p>IN DIT DOCUMENT WORDT EEN GROOT EN CONSTANT VERANDEREND DOMEIN BEHANDELD.
DAAROM KAN DE INFORMATIE IN DIT DOCUMENT ONJUIST OF VEROUDERD ZIJN.
AL HET GEBRUIK EN ALLE INFORMATIE HIERIN IS OP EIGEN RISICO. DE AUTEUR GEEFT
GEEN WAARBORG OF GARANTIE, NOCH EXPLICIET NOCH IMPLICIET.
</p>
</sect1>

<sect1><heading>Auteur</heading>

<p>Het insturen van feedback aan de auteur via: <url
url="mailto:risto.varanka@helsinki.fi"
name="risto.varanka@helsinki.fi"> wordt verwelkomd.</p>

<p>De website van de auteur is te vinden op <url
url="http://www.helsinki.fi/~rvaranka/"
name="http://www.helsinki.fi/~rvaranka/">.</p>
</sect1>

<sect1><heading>Krediet</heading>

<p>Ik ben verscheidene mensen dankbaar die opmerkingen gaven over
programmeeronderwerpen.
Deze conversaties zorgden ervoor dat ik een beter inzicht
kreeg in de verschillende talen, en ik hoop dat toekomstige conversaties
het mogelijk zullen maken deze mini-HOWTO in de loop der tijd verder te
ontwikkelen. Ik zou vooral graag de mensen op het IRCNet kanaal #linux:
Morphy, Bluesmurf, Vadim, Zonk^, Rikkus en anderen wiens naam ik ben
vergeten, willen bedanken. Dank gaat ook uit naar
Stig Erik Sandoe voor zijn behulpzame opmerkingen.</p>
</sect1>

<sect1><heading>Links</heading>

<p>Grondige lijsten met Linux development library's en tools:</p>

<p>
<itemize>
<item><url url="http://www.freshmeat.net/appindex/development/"
name="Freshmeat"></item>
<item><url url="http://www.hotfeet.ch/~gemi/LDT/" name="Linux
Development Tools"></item>
<item><url url="http://www.linuxprogramming.com/"
name="linuxprogramming.com"></item>
</itemize>
</p>

<p>De <url
url="http://www.tuxedo.org/~esr/faqs/hacker-howto.html"
name="Hacker FAQ"> van Eric S. Raymond is een andere interessante tekst
voor beginnende Linux ontwikkelaars. Het concentreert zich op een aantal
culturele en psychologische aspecten van open source development.
</p>

<p>Andere <url url="http://www.linuxdoc.org/" name="LDP documenten">
behandelen algemene programmeeronderwerpen waaronder de Reading List
HOWTO en de Linux Programmer's Guide - er zijn er nog meer over
specifieke onderwerpen geschreven.
</p>
</sect1>
</sect>

<sect><heading>Programmeertalen</heading>

<!-- het concept uitleggen? -->

<p>C, Lisp en Perl zijn traditionele hacking programmeertalen in de
GNU/Linux cultuur; Python, PHP, Java en C++ hebben recent nieuwe grond
verworven.
</p>

<sect1><heading>Concepten in de tabel</heading>

<p>
<descrip>
<tag>Taal</tag>
<p>Een gebruikelijke naam van de taal.</p>
</descrip>

<descrip>
<tag>Beginner</tag> 
<p>Geeft aan hoe geschikt de taal is voor mensen
met weinig programmeerervaring. Een taal gemarkeerd met ``ja'' zou
uitvoerbaar moeten zijn als eerste programmeertaal voor een beginner.
</p>
</descrip>

<descrip>
<tag>Performance</tag> 
<p>Hoe snel je applicaties naar alle waarschijnlijkheid
zullen draaien wanneer je ze in productie neemt.
De performance hangt meer af van je algorithmische programmeervaardigheden
dan de feitelijke taal. Als vuistregel zijn C, C++ en Fortran soms noodzakelijk
omdat ze een betere performance bieden dan andere talen - andere keren zijn ze
wellicht ongeschikt voor het gewenste doel.
(Een idee voor het niet wetenschappelijk ``benchmarken'' van de 
programmeertalen zou zijn een eenvoudig sorteeralgoritme te implementeren
in alle programmeertalen en de uitvoertijden ervan te vergelijken.
Hiermee wordt natuurlijk niet de performance van de feitelijke taal gemeten,
aangezien dat concept geen zin heeft, maar slechts de implementatie. 
Natuurlijk geen erg betrouwbare of grondige methode, maar het zou een
voorbeeld kunnen geven van het verschil in uitvoertijden van de verschilende
talen. Kan iemand me hiermee helpen?)
</p></descrip>

<descrip>
<tag>OOP, Object-Oriented Programming vs. andere paradigma's</tag>
<p>Object ge&ouml;ri&euml;nteerd programmeren is een belangrijk paradigma
dat meer aan populariteit wint. In object ge&ouml;ri&euml;nteerd programmeren
zijn gegevensstructuren en algoritmen in eenheden ge&iuml;ntegreerd, vaak
classes genoemd. OOP staat vaak in contrast met procedureel programmeren
(waarin aparte algoritmen en gegevenstructuren worden gebruikt). Het is niet
strict afhankelijk van de taal: je kunt OOP doen in talen die niet als
zodanig worden opgesomd (zoals bijvoorbeeld C), en in de procedurele stijl
programmeren in talen die gecatalogiseerd zijn als OOP.
Ik heb talen als OOP gecatalogiseerd die speciale mogelijkheden hebben of
add-ons om OOP te vergemakkelijken.
Functionele talen (zoals bijvoorbeeld Lisp) zijn een wat andere soort.
- functioneel programmeren is onder andere een superset van OOP.
Logisch programmeren (Prolog), ook declaratief programmeren aan de andere
kant is in vergelijkbare zin niet gerelateerd aan de andere typen
programmering. 
</p>
</descrip>

<descrip>
<tag>RAD, Rapid Application Development</tag> 
<p>Eerder afhankelijk van
de gebruikte tools dan de feitelijke taal. Er is ook een HOWTO over
GUI development voor Linux, alhoewel het verouderd is.
Met een goed grafisch hulpmiddel kun je RAD doen. RAD kan krachtig
zijn wanneer bovendien gebaseerd op hergebruik van de code, dus 
vrije software zou een goed begin kunnen vormen.
</p>
</descrip>

<descrip>
<tag>Voorbeelden</tag> 
<p>Het benoemen van de programmeergebieden waarvoor de taal het
vaakst wordt gebruikt. Andere goede (en slechte) gebruiken bestaan ook, maar
ze zijn minder kenmerkend.
</p>
<!-- leg in een toekomstige versie de categori&euml;n uit -->
</descrip>

<descrip>
<tag>Opmerkingen</tag> 
<p>Extra informatie over de programmeertaal, zoals
mogelijkheden en dialecten.</p>
</descrip>
</p>

<!-- Check case of languages: UPPER or Capital? -->
</sect1>

<sect1><heading>Belangrijke programmeertalen</heading>

<p>
<verb>

Perl
Beginner: Ja - OOP: Ja
Voorbeelden: Scripting, sysadmin, www
Opmerkingen: Krachtig voor het afhandelen van tekst en strings

Python
Beginner: Ja - OOP: Ja 
Voorbeelden: Scripting, applicatie scripting, www
Opmerkingen: 

TCL
Beginner: Ja - OOP: Nee
Voorbeelden: Scripting, sysadmin, applicaties
Opmerkingen: 

PHP
Beginner: Ja - OOP: Ja
Voorbeelden: Www
Opmerkingen: Populair voor webdatabases

Java
Beginner: Ja - OOP: Ja
Voorbeelden: Cross-platform applicaties, www
Opmerkingen: Uitgestrekt naar nieuwe gebieden, bv. e-commerce infrastructuur

Lisp
Beginner: Ja - OOP: Functioneel
Voorbeelden: Emacs modes (voor Elisp), AI
Opmerkingen: Varianten Elisp, Clisp en Scheme

Fortran
Beginner: Nee  - OOP: Nee
Voorbeelden: Wiskundige (wetenschappelijke) applicaties
Opmerkingen: Varianten f77 en f90/95

C
Beginner: Nee  - OOP: Nee
Voorbeelden: Systeemprogrammering, applicaties
Opmerkingen: 

C++
Beginner: Nee  - OOP: Ja
Voorbeelden: Applicaties
Opmerkingen:

</verb>
</p>

<!-- is Prolog really major? 
Prolog
Beginner: Ja? - OOP: Declarative
Voorbeelden: Databases, AI
Opmerkingen: 
-->
</sect1>

<sect1><heading>Shell Programmering</heading>

<p>Ook shells bieden een belangrijke programmeeromgeving. Ik heb ze niet
behandeld omdat ik dit terrein nog niet zo door en door begrijp.
Kennis van shells is voor ieder belangrijk die regelmatig onder Linux
werkt, nog meer zelfs voor systeembeheerders. Er zijn tussen shellprogrammering
en andere soorten scripting overeenkomsten, vaak kun je er dezelfde doelen mee
bereiken, en heb je de optie te kiezen tussen de shell en een aparte
scripttaal. Tussen de meest populaire shells bevinden zich
bash, tcsh, csh, ksh en zsh. Je kunt basisinformatie over je shell krijgen
met de opdracht <em>man</em>, zoals bijvoorbeeld <em>man bash</em>.</p>
</sect1>

<sect1><heading>Andere programmeertalen</heading>

<p>Andere te vermelden talen: AWK, SED, Smalltalk, Eiffel, Ada,
Prolog, assembler, Objective C, Logo, Pascal (p2c converter)</p>
</sect1>

<sect1><heading>Links</heading>

<!-- integrate these in the "table" perhaps -->

<p>
<itemize>
<item><url url="http://www.tunes.org/Review/Languages.html"
name="Een algemene info site"> over programmeertalen, heel veel info
en meningen</item>
<item><url url="http://dev.scriptics.com/" name="TCL"></item>
<item><url url="http://www.perl.org/" name="Perl"></item>
<item><url url="http://www.python.org/" name="Python"></item>
<item><url url="http://www.php.net" name="PHP"></item>
<item><url url="http://www.javasoft.com/" name="Java"></item>
<item><url url="http://clisp.cons.org/~haible/packages-clisp.html"
name="clisp"></item>
</itemize>
</p>
</sect1>
</sect>

<sect><heading>GUI Toolkits</heading>

<p>Het standaard grafische subsysteem voor UNIX en Linux, genaamd X,
heeft zijn eigen library's voor GUI ontwikkeling. Ze leveren een
low-level programmeerinterface voor X, maar neigen ernaar moeilijk
te gebruiken te zijn. Oude eindgebruikers applicaties en andere toolkits
maken er natuurlijk goed gebruik van. Tegenwoordig wordt de Linux GUI scene
gedomineerd door GTK+ en Qt, aangezien twee populaire complete
gebruikersomgevingen, GNOME en KDE, hierop zijn gebaseerd.
</p>

<!-- Explain concept? -->

<sect1><heading>Concepten in de tabel</heading>

<p>
<descrip>
<tag>Library</tag>
<p>Algemene naam of afkorting van de toolkit.</p>
</descrip>

<descrip>
<tag>Beginner</tag>
<p>Of de toolkit geschikt is voor een newbie programmeur.</p>
</descrip>
<descrip>
<tag>Licentie</tag>
<p>De verschillende licenties voor de verschillende GUI toolkits hebben een
praktische betekenis. GTK+, TK en GNUstep licenties maken het mogelijk zowel open
source als closed source applicaties te ontwikkelen zonder te hoeven 
betalen voor een licentie. De Motif licentie moet worden betaald, terwijl
voor de QT licentie alleen hoeft te worden betaald als je closed source
programma's schrijft.
</p>
</descrip>
<!-- refer to freedom as in free speech, check validity -->
<descrip>
<tag>Taal</tag>
<p>De programmeertaal die het meest met de toolkit wordt gebruikt.
</p>
</descrip>

<descrip>
<tag>Bindings</tag>
<p>Andere talen die gebruik kunnen maken van de toolkit.</p>
</descrip>
<descrip>
<tag>Voorbeelden</tag>
<p>Applicaties die gebruik maken van de toolkit.</p>
</descrip>
<descrip>
<tag>Opmerkingen</tag>
<p>Extra informatie over de toolkit.</p>
</descrip>
</p>
</sect1>

<sect1><heading>Belangrijke GUI Toolkits</heading>

<!-- Change to the other format? Would be good since could include
more info on WINGS and the GNUstep project. -->

<p>
<table>
<tabular ca="llllll">Library|Beginner|Licentie|Taal|Bindings
|Voorbeelden|Opmerkingen@

TK|
	Ja|
	Vrij|
	TCL|
	Perl, Python, anderen|
	make xconfig, TKDesk|
	@

GTK+|
	Nee|
	Vrij (LGPL)|
	C|
	Perl, C++, Python, veel anderen|
	GNOME, Gimp|
	Zeer populair@

QT|
	Nee|
	Vrij voor open source|
	C++|
	Python, Perl, C, anderen?|
	KDE|
	Zeer populair@

Motif|
	Nee|
	Niet vrij|
	C/C++|
	Python, anderen?|
	Netscape, Wordperfect|
	<url url="http://www.lesstif.org/" name="Lesstif"> is
	een vrije vervanging@

GNUstep|
	Nee|
	Vrij (LGPL)|
	Objective C|
	Guile, Java?|
	Niet zo bekend, maar zie de 
	<url url="http://www.gnustep.org/resources/apps.html"
	name="applicatie lijst">|
	GNUstep is nog steeds onder ontwikkeling@

</tabular>
</table>
</p>
</sect1>

<sect1><heading>Links</heading>

<p>
<itemize>
<item><url url="http://dev.scriptics.com/" name="TK"></item>
<item><url url="http://www.gtk.org/" name="GTK+"></item>
<item><url url="http://www.troll.no/" name="QT"></item>
<item><url url="http://www.metrolink.com/" name="Motif"></item>
<item><url url="http://www.gnustep.org/" name="GNUstep"></item>
</itemize>
</p>
</sect1>
</sect>
</article>
</linuxdoc>