forked from foss-academic-alliance/OpenBook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
1039 lines (1027 loc) · 142 KB
/
index.html
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
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>OpenBook</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.77.1" /></head><body><link xmlns="" rel="shortcut icon" href="images/icons/favicon.ico" type="image/x-icon" /><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="idm139934110325152"></a>OpenBook</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Κοινότητες ΕΛ/ΛΑΚ: ΟΠΑ, ΕΜΠ, ΕΚΠΑ, ΤΕΙΜΕΣ</span></h3><code class="email"><<a class="email" href="mailto:faa@foss.aueb.gr">faa@foss.aueb.gr</a>></code></div></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="3"><strong>Revision History</strong></th></tr><tr><td align="left">Revision Version 1</td><td align="left">06-01-2012</td><td align="left">Κ</td></tr></table></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="#_εισαγωγή">1. Εισαγωγή</a></span></dt><dd><dl><dt><span class="section"><a href="#_project_openbook">1.1. Project OpenBook</a></span></dt><dt><span class="section"><a href="#_ελεύθερο_λογισμικό_και_linux">1.2. Ελεύθερο Λογισμικό και Linux</a></span></dt></dl></dd><dt><span class="section"><a href="#_κοινότητες">2. Κοινότητες</a></span></dt><dt><span class="section"><a href="#_μέρος_α_γενική_χρήση_linux">3. Μέρος Α - Γενική Χρήση linux</a></span></dt><dd><dl><dt><span class="section"><a href="#_διανομές">3.1. Διανομές</a></span></dt><dt><span class="section"><a href="#_σουίτα_γραφείου">3.2. Σουίτα γραφείου</a></span></dt><dt><span class="section"><a href="#_editors">3.3. Editors</a></span></dt><dt><span class="section"><a href="#_browsing">3.4. Browsing</a></span></dt><dt><span class="section"><a href="#_mail_clients">3.5. Mail Clients</a></span></dt></dl></dd><dt><span class="section"><a href="#_μέρος_β_εξειδικευμένες_εφαρμογές">4. Μέρος Β - Εξειδικευμένες Εφαρμογές</a></span></dt><dd><dl><dt><span class="section"><a href="#Lia">4.1. Γλώσσα Μηχανής (Assembly) - Lia</a></span></dt><dt><span class="section"><a href="#Mysql">4.2. Βάσεις Δεδομένων - MySQL</a></span></dt><dt><span class="section"><a href="#Scilab">4.3. Μαθηματικά Εργαλεία - Scilab</a></span></dt><dt><span class="section"><a href="#Octave">4.4. Μαθηματικά Εργαλεία - Octave</a></span></dt><dt><span class="section"><a href="#Umbrello">4.5. Γλώσσες Μοντελοποίησης - Umbrello</a></span></dt><dt><span class="section"><a href="#PapyrusUML">4.6. Γλώσσες Μοντελοποίησης - PapyrusUML</a></span></dt><dt><span class="section"><a href="#Nmap">4.7. Aσφάλεια και Διαχείριση - Nmap</a></span></dt><dt><span class="section"><a href="#Bluefish">4.8. Προγραμματισμός - Bluefish</a></span></dt><dt><span class="section"><a href="#Source">4.9. Compiling από Source</a></span></dt></dl></dd><dt><span class="section"><a href="#_μέρος_γ_γλώσσες_προγραμματισμού">5. Μέρος Γ - Γλώσσες Προγραμματισμού</a></span></dt><dd><dl><dt><span class="section"><a href="#C">5.1. C</a></span></dt><dt><span class="section"><a href="#Cpp">5.2. C++</a></span></dt><dt><span class="section"><a href="#CSH">5.3. C Shell</a></span></dt><dt><span class="section"><a href="#Fortran">5.4. Fortran</a></span></dt><dt><span class="section"><a href="#HTML">5.5. HTML</a></span></dt><dt><span class="section"><a href="#MIPS32">5.6. MIPS32 ASSEMBLY</a></span></dt><dt><span class="section"><a href="#Java">5.7. Java</a></span></dt><dt><span class="section"><a href="#Pascal">5.8. Pascal</a></span></dt><dt><span class="section"><a href="#PHP">5.9. PHP</a></span></dt><dt><span class="section"><a href="#VHDL">5.10. VHDL</a></span></dt></dl></dd><dt><span class="section"><a href="#_μέρος_δ_συσχέτιση_μαθημάτων">6. Μέρος Δ - Συσχέτιση Μαθημάτων</a></span></dt><dd><dl><dt><span class="section"><a href="#_τμήμα_πληροφορικής_ο_π_α">6.1. Τμήμα Πληροφορικής Ο.Π.Α.</a></span></dt><dt><span class="section"><a href="#_τμήμα_τηλεποικινωνιακών_συστηματων_και_δυκτίων_τει_μεσσολογίου_παραρτημα_ναυπάκτου">6.2. Τμήμα Τηλεποικινωνιακών Συστηματων και Δυκτίων ΤΕΙ Μεσσολογίου Παραρτημα Ναυπάκτου</a></span></dt><dt><span class="section"><a href="#_ε_μ_π">6.3. Ε.Μ.Π.</a></span></dt><dt><span class="section"><a href="#_ε_κ_π_α">6.4. Ε.Κ.Π.Α.</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_εισαγωγή"></a>1. Εισαγωγή</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_project_openbook"></a>1.1. Project OpenBook</h3></div></div></div><p>Στα πλαίσια της προώθησης του Ελεύθερου Λογισμικού και του έργου των ακαδημαϊκών
κοινοτήτων στις σχολές δημιουργήθηκε η ιδέα του OpenBook. Πρόκειται για ένα
συνεργατικό βιβλίο σε ηλεκτρονική μορφή που αναπτύσσεται από κοινού και
κατανεμημένα με τη συμμετοχή μελών από όλες τις κοινότητες. Στόχο του έχει να
αποτελέσει ένα βοήθημα για τους σπουδαστές των σχολών πληροφορικής, ώστε να
ολοκληρώσουν τις υποχρεώσεις τους χρησιμοποιώντας αποκλειστικά ελεύθερο
λογισμικό. Τα κείμενα και οι οδηγοί έχουν γραφτεί από φοιτητές που έχουν
ολοκληρώσει με επιτυχία τα συγκεκριμένα μαθήματα χρησιμοποιώντας το ελεύθερο
λογισμικό που παρουσιάζουν στις σελίδες αυτού του βιβλίου.</p><p>Καθώς οι ανάγκες των σχολών είναι κοινές σε κάποια μαθήματα, τα κεφάλαια συχνά
καλύπτουν τις ανάγκες και την ύλη περισσότερων του ενός μαθήματος. Σε κάθε
κεφάλαιο σημειώνονται τα μαθήματα και οι σχολές στα οποία αντιστοιχεί. Επίσης,
σε μερικά σημεία δεν υπάρχει κατάλληλο ελεύθερο λογισμικό ή δεν είναι γνωστή η
ύπαρξή του στους συγγραφείς. Οπότε το λογισμικό που παρουσιάζεται δεν διανέμεται
υπό 100% ελεύθερη άδεια αλλά από άλλες, λιγότερο συμβατές με την ιδέα του
Ελεύθερου Λογισμικού. Σε αυτές τις (ομολογουμένως λίγες) περιπτώσεις παρακαλούμε
για την κατανόηση των αναγνωστών.</p><p>Το βιβλίο διατίθεται ελεύθερα σε κάθε ενδιαφερόμενο και για κάθε χρήση. Κάθε
βοήθεια, υπόδειξη ή συμμετοχή είναι ευπρόσδεκτη. Για στοιχεία επικοινωνίας οι
ενδιαφερόμενοι μπορούν να αναφέρονται στην ενότητα σχετικά με τις Κοινότητες.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ελεύθερο_λογισμικό_και_linux"></a>1.2. Ελεύθερο Λογισμικό και Linux</h3></div></div></div><div class="informalfigure"><div class="mediaobject" align="left"><img src="images/Intro-freeSoftwareAndLinux-GnuLinux.png" align="left" alt="images/Intro-freeSoftwareAndLinux-GnuLinux.png" /></div></div><p>Το ελεύθερο λογισμικό εδώ και πάνω από μία δεκαετία υπηρετεί εκατομμύρια
χρήστες και επιχειρήσεις σε ολόκληρο τον κόσμο. Οι εφαρμογές του δεν
εξαντλούνται στο διαδίκτυο αλλά επεκτείνονται στην εκπαίδευση, την έρευνα ακόμα
και τις διαστημικές αποστολές της NASA. Συχνά χωρίς να το αντιλαμβανόμαστε
χρησιμοποιούμε καθημερινά δεκάδες προγράμματα ελεύθερου λογισμικού. Όμως τι
είναι ακριβώς το ελεύθερο λογισμικό και γιατί έχει τόση σημασία; Πώς βοηθάει την
εξέλιξη της πληροφορικής και της τεχνολογίας γενικότερα; Και γιατί ένας απλός
χρήστης υπολογιστών, πόσο μάλλον ένας μελλοντικός μηχανικός πληροφορικής ή
αναλυτής/προγραμματιστής, πρέπει να ενδιαφερθεί για αυτό;</p><p>Το ελεύθερο λογισμικό δίνει τη δυνατότητα σε όλους να γνωρίζουν επακριβώς τον
πηγαίο κώδικα του προγράμματος. Μάλιστα, ο καθένας έχει την επιπλέον ελευθερία
να τον χρησιμοποιήσει αυτούσιο στα δικά του προγράμματα ή απλώς να πάρει ιδέες.
Η γνώση δηλαδή παύει να αποτελεί προνόμιο μιας κλειστής ελίτ, αλλά διαχέεται
ανεμπόδιστα σε οποιονδήποτε ενδιαφερόμενο! Έτσι η τεχνολογία μπορεί να
υπηρετήσει τις πραγματικές ανάγκες της κοινωνίας, αφού η γνώση που πηγάζει από
αυτό αποτελεί ιδιοκτησία όλης της ανθρωπότητας!</p><p>Ως επιστήμονες πληροφορικοί μας αφορά άμεσα το ελεύθερο λογισμικό. Από αυτό
έχουμε να αντλήσουμε γνώση πάνω στην επιστήμη μας. Ταυτόχρονα, ανήκουμε σε
αυτούς που μπορούν να κατανοήσουν τον πηγαίο κώδικα και με τη σειρά μας να
βάλουμε το δικό μας λιθαράκι στο παγκόσμιο κίνημα του ελεύθερου λογισμικού. Είτε
με τις φρέσκες ιδέες μας, είτε με τις ιδιαίτερες τεχνικές που πιθανώς κατέχουν
κάποιοι από εμάς, αλλά και με οποιοδήποτε άλλο τρόπο. Το σίγουρο είναι ότι θα
ωφεληθούμε τουλάχιστον εμείς οι ίδιοι. Τόσο με την προσωπική μας βελτίωση και
απόκτηση εμπειρίας μέσω της ενασχόλησης με αυτό, όσο και από τη συνολικότερη
τεχνολογική πρόοδο που επιφέρει η ελεύθερη διάδοση της τεχνογνωσίας.</p><p>Η σημασία του ελεύθερου λογισμικού έχει γίνει αντιληπτή από πολλούς φορείς.
Κυβερνήσεις, οργανισμοί, διεθνείς επιχειρήσεις και ιδρύματα χρηματοδοτούν και
συμμετέχουν ενεργά στην ανάπτυξη του ελεύθερου λογισμικού. Η Γερμανία, η Γαλλία,
οι ΗΠΑ, η HP, η IBM, η Google, η NASA, το Mozilla Foundation, το Πανεπιστήμιο
του Berkley και το FSF είναι ένα ελάχιστο δείγμα των επώνυμων υποστηρικτών και
χρηματοδοτών του ελεύθερου λογισμικού. Είναι χαρακτηριστικό ότι ένα μεγάλο μέρος
της παγκόσμιας οικονομίας οφείλει την ανάπτυξή του αλλά και την ίδια του την
ύπαρξη στο ελεύθερο λογισμικό.</p><p>Αν και ο περισσότερος κόσμος γνωρίζει τον Linus Torvalds, δημιουργό του linux
kernel, η γένεση του ελεύθερου λογισμικού προέκυψε από αλλού. To 1985 με
πρωτοβουλία του Richard Stallman ιδρύεται το Free Software Foundation (FSF). Το
FSF θέσπισε 4 ελευθερίες κάτω από τη περίφημη άδεια χρήσης General Public
License (GPL).</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Ελευθερία στη χρήση του προγράμματος
</li><li class="listitem">
Ελευθερία στη μελέτη του προγράμματος αλλά και την τροποποίησή του
</li><li class="listitem">
Ελευθερία στην αναδιανομή
</li><li class="listitem">
Ελευθερία στην αναδιανομή του τροποποιημένου προγράμματος
</li></ul></div><div class="informalfigure"><div class="mediaobject" align="left"><img src="images/Intro-freeSoftwareAndLinux-Gpl-v3-logo.png" align="left" alt="images/Intro-freeSoftwareAndLinux-Gpl-v3-logo.png" /></div></div><p>Η δυναμική που απορρέει από την άδεια GPL είναι, μεταξύ άλλων, ότι η οποιαδήποτε
αλλαγή ή συμπλήρωση γίνεται στον πηγαίο κώδικα, τότε αυτή αυτόματα τίθεται στη
διάθεση όλης της ανθρωπότητας, όπως περιγράφεται στο τέταρτο σημείο!</p><p>Από το 1985 μέχρι σήμερα και με τα μοντέλο ανάπτυξης της GPL, αλλά και πολλών
άλλων ελεύθερων αδειών, έχουν δημιουργηθεί αμέτρητα προγράμματα. Πολλά από αυτά
οποία έχουν διακριθεί και θεωρούνται σήμερα διεθνή industry standards. Ο Mozilla
Firefox, ο Chromium Browser, ο πυρήνας linux και ο VLC media player είναι μερικά
μόνο από τα παραδείγματα ελεύθερου λογισμικού. Λιγότερα γνωστά στο ευρύ κοινό,
παρότι όλοι τα χρησιμοποιούμε καθημερινά, είναι το σύστημα BIND, ο Apache Web
server, η Java (Java Runtime Environment), ο dhcpd, ο pppd και άλλα.</p><p>Στο ελεύθερο λογισμικό στηρίζονται μεγάλες επιχειρήσεις, διεθνείς οργανισμοί και
κατασκευαστές προϊόντων πληροφορικής και τεχνολογίας. Δικτυακοί σκληροί δίσκοι,
DVD players, τηλεοράσεις και πολλά άλλα προϊόντα χρησιμοποιούν ελεύθερο
λογισμικό. Αν αυτό δεν υπήρχε η τεχνολογία σήμερα όχι μόνο θα ήταν πολύ πιο
ακριβή αλλά θα ήταν και πολύ λιγότερο εξελιγμένη.</p><p>Από την πλευρά του χρήστη, το ελεύθερο λογισμικό έχει μεγάλη αξία και τον αφορά
άμεσα. Χρησιμοποιώντας το ο χρήστης είναι σίγουρος ότι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Δεν περιέχονται “κρυφές” λειτουργίες εν αγνοία του
</li><li class="listitem">
Η ποιότητα των προγραμμάτων είναι πολύ υψηλή καθώς τα μάτια των έμπειρων
προγραμματιστών που βλέπουν τον κώδικα δεν εξαντλούνται στους, συχνά
ελάχιστους, υπαλλήλους που απασχολεί η εταιρία που αναπτύσσει αντίστοιχο
κλειστό λογισμικό.
</li><li class="listitem">
Το κόστος χρήσης του υπολογιστή τηρείται χαμηλά, αφού διατίθεται δωρεάν.
</li><li class="listitem">
Το μηδενικό κόστος απόκτησης δίνει τη δυνατότητα να έχουμε πάντα την
τελευταία έκδοση των εφαρμογών που χρησιμοποιούμε.
</li><li class="listitem">
Τα όποια κενά ασφαλείας υπάρχουν εντοπίζονται εύκολα και διορθώνονται άμεσα.
Χαρακτηριστικό παράδειγμα είναι ότι το 2006 έγινε γνωστό ότι ο Internet
Explorer της Microsoft, ένα κατεξοχήν κλειστό πρόγραμμα, είχε ένα σημαντικό
κενό ασφαλείας το οποίο η Microsoft δεν είχε φτιάξει για… 284 ημέρες!! Την
ίδια περίοδο, το ίδρυμα Mozilla κατάφερνε σε ολόκληρη τη χρονιά να διορθώνει
όλα τα κενά ασφαλείας του Firefox το πολύ μέσα σε 9 ημέρες!
</li></ul></div><p>Είναι χαρακτηριστικό ότι η τεχνογνωσία που κρύβεται στα κλειστά
προγράμματα-κλειδιά της διεθνούς βιομηχανίας της πληροφορικής παραμένει μυστικό
ακόμα και για τους ακαδημαϊκούς. Η τεχνογνωσία που αποκομίζει τελικά μία εταιρία
ολοένα και διογκώνεται, αφήνοντας την υπόλοιπη ανθρωπότητα στο ρόλο του απλού
“τελικού χρήστη”. Αυτό μακροπρόθεσμα αποτελεί κίνδυνο για την ίδια την κοινωνία.</p><p>Το ελεύθερο λογισμικό είναι η πρόταση για ένα μέλλον όπου η γνώση είναι κτήμα
όλων. Η πληροφορική επηρεάζει ολοένα και περισσότερο τις ζωές μας και αυτό το
κάνει ακόμα σημαντικότερο. Πόσο μάλλον για τους αυριανούς μηχανικούς
πληροφορικής!</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_κοινότητες"></a>2. Κοινότητες</h2></div></div></div><div class="informalfigure"><div class="mediaobject" align="right"><img src="images/Intro-communities-tux_student.png" align="right" alt="comminities" /></div></div><p>Οι ακαδημαϊκές κοινότητες που συνεργάστηκαν στο παρόν project είναι οι παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="ulink" href="http://foss.ntua.gr/" target="_top">Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ</a>
</li><li class="listitem">
<a class="ulink" href="https://foss.uoa.gr/" target="_top">Κοινότητα Ελεύθερου και Ανοιχτού Λογισμικού Πανεπιστημίου Αθηνών</a>
</li><li class="listitem">
<a class="ulink" href="http://foss.aueb.gr/" target="_top">Κοινότητα ΕΛ/ΛΑΚ Οικονομικού Πανεπιστημίου Αθηνών</a>
</li><li class="listitem">
<a class="ulink" href="http://www.foss.tesyd.teimes.gr" target="_top">Κοινότητα ΕΛ/ΛΑΚ ΤΕΙ Μεσολογγίου</a>
</li></ul></div><p>Στα site τους μπορείτε να αναζητήσετε περισσότερες πληροφορίες καθώς και να
λάβετε τεχνική υποστήριξη ή βοήθεια. Προτείνουμε να αναφερθείτε στην κοινότητα
της σχολής στην οποία ανήκετε.</p><p>Αν θέλετε να επικοινωνήσετε με την ομάδα συγγραφής του OpenBook, ή τη γενικότερη
συνεργατική προσπάθεια των κοινοτήτων, χρησιμοποιήστε τη παρακάτω ηλεκτρονική
διεύθυνση: <<a class="ulink" href="mailto:faa@foss.aueb.gr" target="_top">faa@foss.aueb.gr</a>></p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_μέρος_α_γενική_χρήση_linux"></a>3. Μέρος Α - Γενική Χρήση linux</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_διανομές"></a>3.1. Διανομές</h3></div></div></div><div class="informalfigure"><div class="mediaobject" align="left"><img src="images/PartA-Distributions-DistroGallery.png" align="left" alt="Distro gallery" /></div></div><p>Το βασικότερο στοιχείο ενός λειτουργικού συστήματος είναι ο <span class="strong"><strong>πυρήνας</strong></span>. Αυτός
παρέχει όλες τις βασικές λειτουργίες, όπως η διεπαφή μεταξύ των συσκευών του
υπολογιστή και των προγραμμάτων. <span class="emphasis"><em>Ο πυρήνας όμως από μόνος του δεν συνιστά ένα
ολοκληρωμένο λειτουργικό σύστημα</em></span>. Ένα ολοκληρωμένο λειτουργικό σύστημα πρέπει να
διαθέτει μία πληθώρα προγραμμάτων, εφαρμογών, γραφικού και μη γραφικού
περιβάλλοντος, βιβλιοθηκών και λοιπών εργαλείων.</p><p>Μία <span class="strong"><strong>διανομή</strong></span>, εκτός του πυρήνα linux, περιλαμβάνει και μία συλλογή από τα
παραπάνω στοιχεία, καθώς επίσης και ένα πρόγραμμα εγκατάστασής της στον δίσκο
και εργαλεία διαχείρισης των προγραμμάτων. Όλα τα παραπάνω στοιχεία
(προγράμματα, εφαρμογές, κλπ) περιέχονται σε <span class="emphasis"><em>πακέτα</em></span> που διαχειρίζεται η
Διαχείριση Πακέτων Λογισμικού (Package Management System) της εκάστοτε διανομής.</p><p>Υπάρχουν πολλές διανομές του Linux γιατί υπάρχουν διαφορετικοί άνθρωποι και
διαφορετικές ανάγκες. Απευθύνονται σε desktop συστήματα ή σε εξυπηρετητές, σε
αρχάριους ή έμπειρους χρήστες, έχουν διαφορετικό προεπιλεγμένο περιβάλλον,
περιλαμβάνουν διαφορετικά προγράμματα στη βασική εγκατάσταση και παρέχουν
διαφορετικό τρόπο εγκατάστασης προγραμμάτων - διαχείρισης πακέτων (για
παράδειγμα από πηγαίο κώδικα ή έτοιμα binary πακέτα). Τα γνωστότερα συστήματα
διαχείρισης πακέτων είναι τα dpkg (Debian) και RPM (RedHat). Επιπλέον, κάθε
διανομή διαθέτει τα δικά της <span class="emphasis"><em>αποθετήρια</em></span>, τις δικές της δηλαδή πηγές πακέτων από
όπου κατεβάζει τα πακέτα ο package manager. Έτσι, ένα πρόγραμμα είναι διαθέσιμο
σε μία διανομή μέσω του package manager αν και μόνο αν υπάρχει το αντίστοιχο
πακέτο στα αποθετήριά της. Αν όχι, η εγκατάσταση του προγράμματος πρέπει να
γίνει χειροκίνητα, συνήθως με μεταγλώττιση από τον πηγαίο κώδικα. Ευτυχώς, όλες
οι μεγάλες διανομές έχουν μία τεράστια γκάμα εφαρμογών στα αποθετήριά τους, τα
οποία περιλαμβάνουν όλες τις γνωστές εφαρμογές που χρειάζεται ο μέσος χρήστης.</p><div class="informalfigure"><div class="mediaobject" align="left"><img src="images/PartA-Distributions-StayLibre.png" align="left" alt="Stay Libre" /></div></div><p>Ένα ακόμα στοιχείο που χαρακτηρίζει μία διανομή είναι ο βαθμός στον οποίο είναι
πιστή στην ιδέα του ελεύθερου λογισμικού. Πολλές διανομές για να παρέχουν όσο το
δυνατόν καλύτερη εμπειρία στον χρήστη περιλαμβάνουν μέσα τους κλειστά
προγράμματα και drivers (όπως Adobe Flash player, mp3 decoder, firmwares
συσκευών), κάτι που δεν συνάδει με την ιδέα του ελεύθερου λογισμικού. Άλλες
είναι περισσότερο πιστές στην ιδέα αλλά απαιτούν από τον χρήστη να προσπαθήσει
ελαφρώς παραπάνω κατά την αρχική εγκατάσταση. Οι αυστηρές κριτικές που κατά
καιρούς ασκούνται στις διανομές που δεν ακολουθούν πιστά την ιδέα του ελεύθερου
λογισμικού έχουν βοηθήσει αρκετές από αυτές να απομακρυνθούν ελάχιστα μόνο από
αυτή. Για τους ιδεολόγους, η παράμετρος αυτή αποτελεί κριτήριο επιλογής.</p><p>Οι κυριότερες και γνωστότερες διανομές που κυκλοφορούν αυτή τη στιγμή
αναφέρονται παρακάτω. Ωστόσο, υπάρχουν εκατοντάδες άλλες διανομές που καλύπτουν
με το παραπάνω ακόμα και τις πιο ιδιαίτερες ανάγκες.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Ubuntu (Debian based)
</li><li class="listitem">
Fedora (RPM based)
</li><li class="listitem">
openSUSE (RPM based)
</li><li class="listitem">
Debian
</li><li class="listitem">
Mandriva (RPM based)
</li><li class="listitem">
Linux Mint (Debian based)
</li><li class="listitem">
PCLinuxOS (Debian based)
</li><li class="listitem">
ArchLinux (δικό του σύστημα διαχείρισης πακέτων)
</li><li class="listitem">
Slackware (δικό του σύστημα διαχείρισης πακέτων)
</li><li class="listitem">
Gentoo (δικό του σύστημα διαχείρισης πακέτων)
</li><li class="listitem">
CentOS (RPM based)
</li></ul></div><p>Η επιλογή της διανομής είναι καθοριστικής σημασίας για τον τρόπο διαχείρισης του
συστήματος και τα διαθέσιμα πακέτα μέσω των αποθετηρίων. Ωστόσο, οποιοδήποτε
πρόγραμμα μπορεί να τρέξει σε οποιαδήποτε διανομή αρκεί να καλύπτονται οι
εξαρτήσεις, να υπάρχουν δηλαδή οι απαιτούμενες βιβλιοθήκες. Δεν πρόκειται δηλαδή
για διαφορετικά λειτουργικά συστήματα.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_σουίτα_γραφείου"></a>3.2. Σουίτα γραφείου</h3></div></div></div><p>Μία από τις πιο βασικές λειτουργίες των προσωπικών ηλεκτρονικών υπολογιστών
ήταν και είναι η δημιουργία και επεξεργασία κειμένων. Τόσο ο πιο αρχάριος
χρήστης έως και ο πιο έμπειρος προγραμματιστής θα χρειαστεί κάποια στιγμή
να συντάξουν κάποιο κείμενο, λογιστικό φύλλο ή να δημιουργήσουν μία
πολυμεσική παρουσίαση.</p><p>Γι'αυτό το λόγο έχει αναπτυχθεί ελεύθερο λογισμικό ή λογισμικό ανοιχτού
κώδικα που παρέχει τις παραπάνω λειτουργίες στους χρήστες του.</p><p>Συγκεκριμένα έχουμε τις εξής ολοκληρωμένες σουίτες γραφείου:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Calligra Suite
</li><li class="listitem">
KOffice
</li><li class="listitem">
LibreOffice
</li></ul></div><p>Εκτός αυτών υπάρχουν και επι μέρους εφαρμογές
που κάνουν ένα μέρος των παραπάνω όπως π.χ. το AbiWord το
οποίο είναι μόνο επεξεργαστής κειμένου.</p><p>Από τα 3 παραπάνω θα ασχοληθούμε με το <a class="ulink" href="http://www.libreoffice.org/" target="_top">LibreOffice</a>
το οποίο είναι το
πιο διαδεδομένο και συμπεριλαμβάνεται σε πολλές διανομές Linux. Το LibreOffice
είναι απόγονος του <span class="strong"><strong>OpenOffice</strong></span> και διανέμεται υπό την άδεια GNU LGPLv3.</p><p>Οι εφαρμογές που μας παρέχει είναι οι εξής:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Writer : Επεξεργαστής κειμένου. Υποστηρίζει το δικό του μορφότυπο αλλά
μπορεί να χειριστεί και μορφότυπα άλλων εμπορικών εφαρμογών.
</li><li class="listitem">
Calc : Λογιστικά Φύλλα. Αντίστοιχα με το Writer έχει το δικό του μορφότυπο
αλλά μπορεί να χειριστεί και μορφότυπα άλλων εμπορικών εφαρμογών. Παρέχει
πληθώρα μεθόδων και ικανότητες σχεδιασμού γραφημάτων.
</li><li class="listitem">
Impress : Δημιουργία παρουσιάσεων. Παρέχει δυνατότητα δημιουργίας
τρισδιάστατων εφέ και μπορεί να εξάγει αρχεία SWF (Flash).
</li><li class="listitem">
Base : Βάση δεδομένων. Πολύ χρήσιμη για χρήση δεδομένων σε διαφορετικό
περιεχόμενο π.χ. δημιουργία φορμών κτλ. Επίσης μπορεί να χρησιμοποιηθεί
για το χειρισμό άλλων γνωστών βάσεων δεδομένων όπως της MySQL.
</li><li class="listitem">
Draw : Επεξεργαστής γραφικών και διαγραμμάτων.
</li><li class="listitem">
Math : Μία εφαρμογή για τη δημιουργία και επεξεργασία μαθηματικών τύπων.
Οι τύποι μπορούν να εισαχθούν σε άλλες εφαρμογές του LibreOffice.
</li></ul></div><p>Όλες οι παραπάνω εφαρμογές μπορούν να εξάγουν κατευθείαν αρχεία PDF.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_editors"></a>3.3. Editors</h3></div></div></div><p>Editor ή αλλιώς συντάκτης κειμένου είναι μία εφαρμογή με την οποία μπορούμε
να συντάξουμε ή να τροποποιήσουμε ένα κείμενο που δεν περιέχει μορφοποίηση.
Όταν λέμε μορφοποίηση εννοούμε π.χ. πλάγια, έντονη, υπογραμμισμένη γραφή,
χρήση συγκεκριμένης γραμματοσειράς και μεγέθους της κ.τ.λ.</p><p>Με μια πρώτη ματιά λοιπόν ο συντάκτης κειμένου φαίνεται να είναι μία
εφαρμογή παρόμοια ενός επεξεργαστή κειμένου όπως του Writer του Libre Office
που αναφέραμε προηγουμένως αλλά με πολύ πιο περιορισμένες δυνατότητες.</p><p>Παρόλα αυτά είναι ιδιαίτερα χρήσιμος γιατί με αυτόν μπορούμε να επεξεργαστούμε
αρχεία ρυθμίσεων του υπολογιστή μας (Linux configuration files) ή να συντάξουμε
προγράμματα που αργότερα θα μεταγλωττίσουμε και θα εκτελέσουμε.</p><p>Για την ακρίβεια το μεγαλύτερο μέρος του OpenBook έχει συνταχθεί με έναν
απλό συντάκτη κειμένου και έπειτα έχει μετατραπεί με το <span class="strong"><strong>asciidoc</strong></span> σε
ιστοσελίδα και pdf.</p><p>Οι συντάκτες κειμένου χωρίζονται σε 2 κατηγορίες. Αυτούς που δεν έχουν
γραφικό περιβάλλον(graphical user interface - gui) και σε αυτούς που έχουν.</p><p>Μερικοί της πρώτης κατηγορίας (command line interface - cli)
είναι οι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
ed
</li><li class="listitem">
nano
</li><li class="listitem">
vim
</li><li class="listitem">
emacs
</li></ul></div><p>Μερικοί της δεύτερης κατηγορίας (gui) είναι οι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
gvim
</li><li class="listitem">
gedit
</li><li class="listitem">
kate
</li><li class="listitem">
geany
</li><li class="listitem">
emacs
</li></ul></div><p>Το πλεονέκτημα των συντακτών κειμένου γραμμής εντολών(cli) είναι ότι
δεν χρειάζεται γραφικό περιβάλλον για να λειτουργήσουν. Επίσης για τον
παραπάνω λόγο έχουν λιγότερες απαιτήσεις πόρων από αυτούς της δεύτερης
κατηγορίας.</p><p>Από την άλλη πλευρά όλοι έχουν ένα γραφικό περιβάλλον στον προσωπικό τους
υπολογιστή και οι απαιτήσεις που έχουν οι συντάκτες της δεύτερης κατηγορίας
είναι συνήθως αμελητέες για τους σύγχρονους υπολογιστές. Ακόμα, το γεγονός
ότι οι περισσότεροι χρήστες είναι ήδη εξοικειωμένοι με παραθυρικά γραφικά
περιβάλλοντα τους κάνει πιο εύκολους στη χρήση.</p><p>Τελικά, αν δεν υπάρχουν περιορισμοί από το σύστημα(απουσία ή όχι γραφικού
περιβάλλοντος) είναι καθαρά θέμα <span class="emphasis"><em>προσωπικής επιλογής</em></span>. Κάποιοι συντάκτες
μπορεί να παρέχουν πρόσθετες λειτουργίες, ή, να είναι εύκολα επεκτάσιμοι
με χρήση plugins, αλλά, στο τέλος η επιλογή είναι καθαρά στη προτίμηση του
χρήστη.</p><p>Οι περισσότερες διανομές Linux περιλαμβάνουν τόσο έναν συντάκτη γραμμής
εντολών, όσο και έναν γραφικού περιβάλλοντος, από την βασική εγκατάσταση,
που πιθανότατα καλύπτει τις περισσότερες ανάγκες του χρήστη.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_browsing"></a>3.4. Browsing</h3></div></div></div><p>Ένας <span class="strong"><strong>Web browser</strong></span> (<span class="emphasis"><em>φυλλομετρητής ιστοσελίδων, πλοηγός Web, πρόγραμμα
περιήγησης Web ή περιηγητής Ιστού</em></span>) είναι ένα λογισμικό που επιτρέπει στον
χρήστη του να προβάλλει, και να αλληλεπιδρά με, κείμενα, εικόνες, βίντεο,
μουσική, παιχνίδια και άλλες πληροφορίες συνήθως αναρτημένες σε μια ιστοσελίδα
ενός ιστότοπου στον Παγκόσμιο Ιστό ή σε ένα τοπικό δίκτυο. Το κείμενο και οι
εικόνες σε μια ιστοσελίδα μπορεί να περιέχουν υπερσυνδέσμους προς άλλες
ιστοσελίδες του ίδιου ή διαφορετικού ιστότοπου. Ο Web browser επιτρέπει στον
χρήστη την γρήγορη και εύκολη πρόσβαση σε πληροφορίες που βρίσκονται σε
διάφορες ιστοσελίδες και ιστότοπους εναλλάσσοντας τις ιστοσελίδες μέσω των
υπερσυνδέσμων. Οι φυλλομετρητές χρησιμοποιούν τη γλώσσα μορφοποίησης HTML για
την προβολή των ιστοσελίδων, για αυτό η εμφάνιση μιας ιστοσελίδας μπορεί να
διαφέρει ανάλογα με τον browser.</p><p>Mερικοί από τους πιο γνωστούς browsers είναι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Mozilla Firefox
</li><li class="listitem">
Chromium
</li><li class="listitem">
Konqueror
</li><li class="listitem">
Epiphany
</li><li class="listitem">
Lynx
</li></ul></div><p>Αναλυτικότερα:</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_mozilla_firefox"></a>Mozilla Firefox</h4></div></div></div><p>Ο <a class="ulink" href="http://www.mozilla.org/el/firefox/new/" target="_top">Firefox</a> (καθώς και το port
του για το Debian o <a class="ulink" href="http://wiki.debian.org/Iceweasel" target="_top">Ιceweasel</a>)
είναι ένας ελεύθερος και ανοικτού κώδικα φυλλομετρητής (browser) του παγκόσμιου
ιστού. Προήλθε από το Application Suite της Mozilla και η ανάπτυξή του
εξακολουθεί να γίνεται κατά μεγάλο ποσοστό από την Mozilla Corporation, ενώ
συνεισφέρουν και μεμονωμένοι χρήστες σε μικρότερο βαθμό. Ο Firefox κατείχε το
25% της καταγεγραμμένης χρήσης φυλλομετρητών Ιστού για τον Νοέμβριο του 2009,
κατατάσσοντας τον στην δεύτερη θέση των πιο δημοφιλών φυλλομετρητών παγκοσμίως,
μετά τον Internet Explorer.</p><p>Για την απεικόνιση των ιστοσελίδων, ο Firefox χρησιμοποιεί την μηχανή διάταξης
Gecko, η οποία εφαρμόζει τα περισσότερα από τα σημερινά πρότυπα του Παγκόσμιου
Ιστού αλλά και επιπλέον πρότυπα που θα ισχύουν στον μέλλον.</p><p>Στις λειτουργίες του Firefox περιλαμβάνονται φραγή αυτόκλητα αναδυόμενων
παραθύρων(popup windows), περιήγηση με καρτέλες, ορθογραφικός έλεγχος,
επιμέρους εύρεση, ενεργοί σελιδοδείκτες, διαχείριση των μεταφορτώσεων,
ιδιωτική περιήγηση και ένα ενσωματωμένο πεδίο αναζήτησης με δυνατότητα
επιλογής της επιθυμητής μηχανής αναζήτησης. Περαιτέρω λειτουργίες
ενεργοποιούνται μέσω πρόσθετων που αναπτύχθηκαν από τρίτους (<a class="ulink" href="https://addons.mozilla.org/el/firefox/" target="_top">addons</a>).
Τα πιο δημοφιλή από τα πρόσθετα είναι το NoScript που απενεργοποιεί την
JavaScript, ο ενσωματωμένος στην γραμμή κατάστασης media player
FoxyTunes, το Adblock Plus που κάνει φραγή διαφημίσεων, το StumbleUpon, το
DownThemAll και η γραμμή εργαλείων Web Developer.</p><p>Ο Firefox λειτουργεί σε αρκετές εκδόσεις των Microsoft Windows, στο Mac OS X,
στο GNU/Linux, και σε πολλά λειτουργικά συστήματα που προήλθαν από το Unix.
Ο πηγαίος κώδικας του Firefox είναι ελεύθερο λογισμικό και διακινείται
ελεύθερα υπό την τριπλή αδειοδότηση GNU GPL/GNU LGPL/MPL.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_chromium"></a>Chromium</h4></div></div></div><p>O <a class="ulink" href="http://www.chromium.org/" target="_top">Chromium</a> είναι ο φυλλομετρητής ανοιχτού κώδικα από
τον οποίον παίρνει τον πηγαίο του κώδικα ο Google Chrome. Οι κυριότερες
προσθήκες στον δεύτερο είναι: το σήμα της Google, μηχανισμοί αυτόματης
ενημέρωσης, παρακολούθηση χρήσης και ενσωματωμένος αναγνώστης pdf και flash
player της Adobe. Ο Chromium χρησιμοποιεί την μηχανή διάταξης WebKit.</p><p>Το Chromium Project παίρνει το όνομα του απο το στοιχείο χρώμιο, απο το οποίο
φτιάχνεται το αντίστοιχο μέταλλο. Ένας απο τους κύριους στόχους του project
είναι ο Chrome να είναι ένας περιηγητής παραθύρων με καρτέλες ή μια διέξοδο
προς το διαδίκτυο, αντί να είναι μια απλή εφαρμογή περιήγησης. Έχει σχεδιαστεί
ειδικά για να έχει ένα μινιμαλιστικό περιβάλλον αλληλεπίδρασης με τον χρήστη
ώστε, όπως δηλώνουν οι προγραμματιστές του, "η χρήση του να είναι εύκολη,
διαισθητική και γρήγορη".</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_konqueror"></a>Konqueror</h4></div></div></div><p>O <a class="ulink" href="http://konqueror.kde.org/" target="_top">Konqueror</a> είναι ένας περιηγητής ιστού και
περιηγητής αρχείων που προσφέρει δυνατότητες ανάγνωσης αρχείων στον τοπικό
δίσκο, σε απομακρυσμένους δίσκους (μέσω ftp) και αρχείων σε <span class="emphasis"><em>εικόνα</em></span> δίσκου
(disk image). Είναι θεμελιώδες κομμάτι του περιβάλλοντος εργασίας KDE. O
Konqueror αναπτύσσεται από εθελοντές και τρέχει στα περισσότερα λειτουργικά
συστήματα τύπου Unix καθώς και σε Windows. Υπάγεται στην άδεια λογισμικού
GNU General Public License version 2.</p><p>Το όνομα "Konqueror" είναι μια αναφορά στους δύο κύριους ανταγωνιστές την
στιγμή της δημιουργίας της πρώτης έκδοσης του. "Πρώτα έρχεται ο Navigator,
μετά ο Explorer, και μετά ο Konqueror". Επίσης ακολουθεί την σύμβαση
ονοματολογίας του KDE: τα ονόματα των περισσότερων KDE προγραμμάτων ξεκινάνε
με το γράμμα Κ. Υποστηρίζει τα πρωτόκολλα επικοινωνίας: FTP, SFTP, SSH,
SAMBA, HTTP, IMAP, ISO και VNC.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_epiphany"></a>Epiphany</h4></div></div></div><p><a class="ulink" href="http://projects.gnome.org/epiphany/" target="_top">Epiphany</a> είναι ο περιηγητής ιστού του
περιβάλλοντος εργασίας Gnome. Κυρίως στόχος του είναι να είναι απλός στην
χρήση. Κατάγεται απο τον περιηγητή Galeon και δημιουργήθηκε έπειτα απο
διαφωνίες μεταξύ των προγραμματιστών σχετικά με την αυξανόμενη πολυπλοκότητα
του Galeon.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_lynx"></a>Lynx</h4></div></div></div><p><a class="ulink" href="http://lynx.isc.org/" target="_top">Lynx</a> είναι ένας απλός περιηγητής ιστού φτιαγμένος για
χρήση σε τερματικά χαρακτήρων. Η τωρινή έκδοση υποστηρίζει το πρωτόκολλο SSL
καθώς και αρκετά χαρακτηριστικά της HTML αλλά όχι Javascript. Ο Lynx
εξ'ορισμού δεν μπορεί να προβάλλει κομμάτια ιστοσελίδων που δεν είναι κείμενο
(όπως εικόνες ή βίντεο) αλλά μπορεί να εκτελέσει εξωτερικά προγράμματα για
να τα χειριστούν όπως εναν image viewer ή video player αντίστοιχα. Είναι
ιδιαίτερα χρήσιμος για διάβασμα τεκμηρίωσης ή κατέβασμα αρχείων όταν είναι
διαθέσιμο μόνο ενα τερματικό χαρακτήρων και δεν υπάρχει γραφικό περιβάλλον.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_mail_clients"></a>3.5. Mail Clients</h3></div></div></div><p>Email Client ή email reader ή όπως παλεότερα ονομαζόταν mail user agent(MUA) είναι ενα πρόγραμμα
το οποίο χρησημοποιήτε για να έχουμε πρόσβαση και να διαχειριζόμαστε τα email ενός χρήστη.
Ο ορος χρησιμοποιήτε σε οποιοδηποτε συστημα το οποιο μπορει να έχει πρόσβαση στα email του χρήστη
ασχετος αν ειναι καποιος σε ενα τερματικο η καποιος server αναμετάδοσης.
Επιπροσθέτος web εφαρμογές οι οποίες μας παρεχουν διαχείριση, σύνταξη και αλλες λειτουργείες
είναι και αυτές email clients αλλα συνήθως αναφερόμαστε σε αυτες σαν webmail.</p><p>Μερικοί emaill clients είναι οι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Mozilla’s Thunderbird
</li><li class="listitem">
KMail απο την Kontact suite
</li><li class="listitem">
Evolution
</li></ul></div><p>Μερικοί webmail είναι οι:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Gmail
</li><li class="listitem">
Yahoo! Mail
</li><li class="listitem">
mail.com
</li><li class="listitem">
Hotmail
</li><li class="listitem"><p class="simpara">
Lycos mail
</p><pre class="literallayout">Από τα παραπανο θα ασχολιθούμε με το Thunderbird όπου είναι αρκετά διαδεδομένος email client.</pre><pre class="literallayout">Ο Thunderbird ειναι γραμμένος σε C++ και διανέμεται με άδεια χρήσης MPL.</pre></li></ul></div><p>Ο Thunderbird, είναι ένας απλός και εύκολος στη χρήση email client και ροής πληροφοριών (RSS).
Αν και στη βασική του έκδοση δεν διαθέτει ημερολόγιο, με την εγκατάσταση του Mozilla Lightning,
ενός πρόσθετου λογισμικού, παρέχεται η δυνατότητα χρήσης ημερολογίου και διαχειριστή πληροφοριών.</p><p>Μερικά από τα βασικά χαρακτηριστικά του Thunderbird είναι:
- Βοηθός εισαγωγής
- Οδηγός λογαριασμού
- Ευρετήριο διευθύνσεων με ένα κλικ
- Υπενθύμιση επισυναπτόμενων
- Διαχείριση δραστηριότητας
- Εργαλειοθήκη γρήγορης αναζήτησης
- Καρτέλες
- Αρχειοθέτηση μηνυμάτων
- Ενοποιημένοι φάκελοι
- Διαχειριστής πρόσθετων</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_μέρος_β_εξειδικευμένες_εφαρμογές"></a>4. Μέρος Β - Εξειδικευμένες Εφαρμογές</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Lia"></a>4.1. Γλώσσα Μηχανής (Assembly) - Lia</h3></div></div></div><p>Το <a class="ulink" href="https://github.com/cyberpython/Lia" target="_top">Lia</a> είναι ένας απλός προσομοιωτής
υπολογιστή (όπως αυτός ορίζεται στο
βιβλίο "Computer Science - A Modern Introduction", δεύτερη έκδοση των
Les Goldschlager και Andrew Lister, Prentice Hall) και συντάκτης γλώσσας
μηχανής γραμμένος σε Java.</p><p>Το Lia διατίθεται υπό την άδεια MIT.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Mysql"></a>4.2. Βάσεις Δεδομένων - MySQL</h3></div></div></div><p>Η MySQL είναι ενα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων που μετρά
περισσότερες από 11 εκατομμύρια εγκαταστάσεις. Έλαβε το όνομά της από την κόρη
του Μόντυ Βιντένιους, τη My. Το πρόγραμμα τρέχει έναν εξυπηρετητή (server)
παρέχοντας πρόσβαση πολλών χρηστών σε ένα σύνολο βάσεων δεδομένων.</p><p>Ο κώδικας του εγχειρήματος είναι διαθέσιμος μέσω της GNU General Public License,
καθώς και μέσω ορισμένων ιδιόκτητων συμφωνιών. Ανήκει και χρηματοδοτείται από
μία και μοναδική κερδοσκοπική εταιρία, τη σουηδική MySQL AB, η οποία σήμερα
ανήκει στην Oracle. Mερικές γνωστές εφαρμογές που αξιοποιούν την Mysql είναι: το
TYPO3, το Joomla, το Wordpress, η MyBB, η phpBB, το Drupal καθώς και ως μέρος
της υποδομής των Wikipedia, Google, filckr, Nokia.com, Youtube, Facebook και
Twitter.</p><p>Χρησιμοποιείται συνήθως ως κεντρικό συστατικό του πακέτου λογισμικού LAMP
(ακρώνυμο για το Linux, Apache, MySQL, Perl/PHP/Python. Είναι γραμμένη σε <code class="literal">C</code>
και <code class="literal">C++</code> ενώ υπάρχει πληθώρα βιβλιοθηκών που επιτρέπει την χρήση της MySQL σε
προγράμματα άλλων γλωσσών.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_χρήση"></a>Χρήση</h4></div></div></div><p>Αφού εγκατασταθεί η MySQL μέσω του package manager της διανομής του χρήστη,
είτε ξεχωριστά είτε ως μέρος του πακέτου λογισμικού LAMP, πρέπει να εκκινηθεί
ο MySQL server για να μπορέσει να χρησιμοποιηθεί.</p><p>Σε Debian διανομές και παράγωγες του (π.χ. Ubuntu) ο server ξεκινάει με</p><pre class="programlisting"># /etc/init.d/mysql start</pre><p>Αφού ξεκινήσει ο MySQL server συνδέεστε σε αυτόν απο κονσόλα με</p><pre class="programlisting"># mysql -u root</pre><p>και αν συνδέεστε για πρώτη φορά πιθανότατα θα σας ζητήσει να δώσετε ενα
νέο password για τον root χρήστη. Οι υπόλοιπες ρυθμίσεις για την MySQL
βρίσκονται συνήθως στο <code class="literal">/etc/mysql/my.cnf</code> .</p><p>Υπάρχουν επίσης διαθέσιμα και εργαλεία με γραφικό περιβάλλον για την διαχείριση
της βάσης δεδομένων. Μερικά απο τα πιο γνωστά είναι τα <span class="emphasis"><em>MySQL Workbench</em></span>,
<span class="emphasis"><em>phpMyAdmin</em></span> και <span class="emphasis"><em>HeidiSQL</em></span>.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Scilab"></a>4.3. Μαθηματικά Εργαλεία - Scilab</h3></div></div></div><p>Το <a class="ulink" href="http://www.scilab.org/" target="_top">Scilab</a> είναι μία εφαρμογή αριθμητικών υπολογισμών,
αλλά και μία υψηλού επιπέδου γλώσσα προγραμματισμού προσανατολισμένη σε
αριθμητικούς υπολογισμούς.</p><p>Μπορεί να χρησιμοποιηθεί για ανάλυση σήματος, στατιστική ανάλυση, ανάλυση
εικόνας, προσομοιώσεις ρευστοδυναμικής κλπ.</p><p>Ο κώδικας του <span class="strong"><strong>Matlab</strong></span> μοιάζει σε συντακτικό και μπορεί να μετατραπεί σε
αυτόν του Scilab.</p><p>Το Scilab διανέμεται υπό την <a class="ulink" href="http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" target="_top">CeCILL</a> άδεια
που είναι συμβατή με τη GPL.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><p>Εκτελέστε το Scilab, και χρησιμοποιείστε τον επεξεργαστή κειμένου για να
δημιουργήσετε ένα αρχείο πηγαίου κώδικα που μοιάζει με αυτό:</p><pre class="programlisting">//
// Print a fixed message to the screen.
//
function hello
mprintf('Hello, world \n');
endfunction</pre><p>Αφού γράψουμε το κώδικα μας, τον αποθηκεύουμε με κατάληξη <span class="strong"><strong>.sci</strong></span>. Έπειτα μέσα
από το διερμηνέα εντολών του Scilab τρέχουμε:</p><pre class="programlisting">--> getf hello.sci // το φορτώνουμε στη μνήμη
--> hello // το εκτελούμε</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_εναλλακτικές"></a>Εναλλακτικές</h4></div></div></div><p>Παρόμοια λειτουργικότητα παρέχουν και τα πακέτα λογισμικού <a class="ulink" href="http://www.sagemath.org/" target="_top">Sage</a>
και <a class="ulink" href="http://www.gnu.org/software/octave/license.html" target="_top">Octave</a> που
διατίθενται υπό την άδεια GPL.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Octave"></a>4.4. Μαθηματικά Εργαλεία - Octave</h3></div></div></div><p>Το <a class="ulink" href="http://www.gnu.org/software/octave/" target="_top">GNU Octave</a> είναι μία γλώσσα υψηλού επιπέδου ειδικού σκοπού με στόχο
την επίλυση αριθμητικών υπολογισμών. Παρέχει δυνατότητες για αριθμητική επίλυση γραμμικών και μη-γραμμικών προβλημάτων,καθώς και για την επίλυση άλλων αριθμητικών πειραμάτων.
Επιπλέον παρέχει εκτεταμένες δυνατότητες γραφικών για την απεικόνιση των δεδομένων και τον χειρισμό τους.
Το Octave χρησιμοποιείται συνήθως μέσα από μια διαδραστική διεπαφή γραμμής εντολών, αλλά μπορεί επίσης να χρησιμοποιηθεί για να γράψει μη-διαδραστικά προγράμματα. Το Οctave είναι παρόμοιο με το <span class="strong"><strong>Matlab</strong></span>.</p><p>Μπορεί να χρησιμοποιηθεί για ανάλυση σήματος, στατιστική ανάλυση, ανάλυση
εικόνας, κλπ.</p><p>Το Octave διανέμεται υπό την <a class="ulink" href="http://www.gnu.org/software/octave/license.html" target="_top">GPL</a></p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_2"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><p>Χρησιμοποιείστε τον επεξεργαστή κειμένου για να
δημιουργήσετε ένα αρχείο πηγαίου κώδικα που μοιάζει με αυτό:</p><pre class="programlisting">#
# Print a fixed message to the screen.
#
printf('Hello, world \n');</pre><p>Αφού γράψουμε το κώδικα μας, τον αποθηκεύουμε με κατάληξη <span class="strong"><strong>.m</strong></span>. Έπειτα μέσα
από την γραμμή εντολών του Octave τρέχουμε:</p><pre class="programlisting">--> hello // το εκτελούμε</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_γραφικό_περιβάλλον_octave"></a>Γραφικό περιβάλλον Octave</h4></div></div></div><p>To Octave δεν περιέχει στην μέχρι τώρα έκδοση 3.x κάποιο γραφικό περιβάλλον για την συγγραφή προγραμμάτων.
Παρόλα αυτά υπάρχουν πρόγραμματα τα οποία παρέχουν αυτήν την δυνατότητα, ένα από αυτά είναι το QtOctave
το οποίο διανέμεται δωρεάν(GPL) και μπορούμε να το βρούμε από τους διαχειριστές πακέτων των διανομών Linux και
στα Windows υπάρχει σε αυτόν τον <a class="ulink" href="https://sites.google.com/site/davidecittaro/software" target="_top">σύνδεσμο</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_εναλλακτικές_2"></a>Εναλλακτικές</h4></div></div></div><p>Παρόμοια λειτουργικότητα παρέχουν και τα πακέτα λογισμικού <a class="ulink" href="http://www.sagemath.org/" target="_top">Sage</a>
και <a class="ulink" href="http://www.scilab.org/" target="_top">Scilab</a> που διατίθενται υπό CeCILL άδεια που είναι συμβατή με τη GPL.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Umbrello"></a>4.5. Γλώσσες Μοντελοποίησης - Umbrello</h3></div></div></div><p>Το Umbrello είναι ένα ανοικτό εργαλείο για την δημιουργία σχεδιαγραμμάτων
στην UML <span class="strong"><strong>Unified Modeling Language</strong></span> και είναι ευρέως διαδεδομένο στις Unix-like πλατφόρμες.
Είναι μέρος του KDE SC4 αλλα δουλεύει εξίσου καλά και σε άλλα γραφικά περιβάλλοντα.</p><p>Το Umbrello διαχειρίζεται όλους τους τύπους διαγραμμάτων της UML.
Μπορεί να κανει reverse engineering σε κώδικα που ειναι γραμμένος σε C++, Pascal/Delphi, Python, Java καθώς
και να εισάγει XMI αρχεία δημιουργημένα από extension σε PHP ή Perl και να τα εξάγει σε διάφορες άλλες
γλώσσες προγραμματισμού. Επίσης δίνει την δυνατότητα να διαμοιράσετε τα περιεχόμενα των μοντέλων σας
εξάγοντας τα σε DocBook και XHTML. Αυτό βοηθά τα μέλη της ομάδας που δεν μπορούν να έχουν άμεση πρόσβαση
στο Umbrello ή σε περιπτώσεις όπου το περιεχόμενο μοντέλο θα πρέπει να δημοσιεύεται σε μια ιστοσελίδα.</p><p>Υποστηριζόμενες γλώσσες προγραματισμού προς εξαγωγή:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
ActionScript
</li><li class="listitem">
Ada
</li><li class="listitem">
C
</li><li class="listitem">
C++
</li><li class="listitem">
D
</li><li class="listitem">
IDL
</li><li class="listitem">
Java
</li><li class="listitem">
JavaScript
</li><li class="listitem">
Pascal
</li><li class="listitem">
Perl
</li><li class="listitem">
PHP
</li><li class="listitem">
Python
</li><li class="listitem">
Ruby
</li><li class="listitem">
SQL
</li><li class="listitem">
Tcl
</li><li class="listitem">
XML Schema
</li></ul></div><p>Το Umbrello διατίθεται υπό την άδεια GPL.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="PapyrusUML"></a>4.6. Γλώσσες Μοντελοποίησης - PapyrusUML</h3></div></div></div><p>Το <a class="ulink" href="http://www.papyrusuml.org" target="_top">Papyrus</a> είναι μια γραφική εφαρμογή βασισμένη στο Eclipse
και μπορεί να τρέξει μόνη της ή σαν plugin στο Eclipse για την δημιουργία σχεδιαγραμμάτων
για την γλώσσα UML <span class="strong"><strong>Unified Modeling Language</strong></span> αλλά παρέχει και υποστήριξη
για Domain Specific Languages και SysML.</p><p>Το Papyrus σαν Standalone μπορεί να βρεθεί για Linux/gtk-x86
<a class="ulink" href="http://www.papyrusuml.org/home/liblocal/docs/Papyrus/1.12/papyrus-1.12.0/RCPs/Papyrus-1.12.3-linux32.x86.tar.bz2" target="_top">Papyrus</a></p><p>Από το 2008 το Papyrus μεταφέρθηκε σαν επιπρόσθετο κομμάτι στην πλατφόρμα Eclipse.</p><p>Σαν update σε κάποιο ήδη εγγατεστημένο Eclipse:
* Η πιο βασική διαδικασία για την εγγατάσταση του Papyrus είναι η εγκατάσταση του Eclipse Modeling Package στην πλατφόρμα σας
* Μέσα απο το Help→Install Modeling Component επιλεγετε το Papyrus
* Ακολουθήστε τα βήματα της εγκατάστασης και μόλις τελειώσει κάντε ένα restart, το Eclipse και είναι έτοιμο</p><p>Το Papyrus διατίθεται υπό την άδεια Eclipse Public License.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Nmap"></a>4.7. Aσφάλεια και Διαχείριση - Nmap</h3></div></div></div><p>Το Nmap είναι ένα ανοικτό εργαλείο
για την εξερεύνηση του δικτύου και τον έλεγχο της ασφάλειας.
Λειτουργεί ως σαρωτής ασφαλείας και χρησιμοποιείται για να ανακαλύψει
κεντρικούς υπολογιστές και τις υπηρεσίες σε ένα δίκτυο υπολογιστών,
δημιουργώντας έτσι ένα "χάρτη" του δικτύου.
Η λειτουργία του παρέχει στο χρήστη µια αναλυτική εικόνα, του προς ελέγχου δικτύου
φανερώνοντας πιθανά προβλήματα και ελλείψεις ασφάλειας.</p><p>Βασικές Εντόλες</p><pre class="screen">$ nmap -sT <Host ή IP> # βρίσκει τις ανοικτές TCP ports.
$ nmap -sU <Host ή IP> # βρίσκει τις ανοικτές UDP ports.
$ nmap -sP <Host ή IP> # βλέπει αν ο υπολογιστής ειναι ανοικτός.
$ nmap -sO <Host ή IP> # βρίσκει πια πρωτόκολλα υποστηρίζονται στο μηχάνημα
$ nmap -O <Host ή IP> # βλέπει το λειτουργικό σύστημα στο μηχάνημα</pre><p>Περισσότερα παραδείγματα υπάρχουν στον ιστότοπο: <a class="ulink" href="http://www.http://nmap.org/bennieston-tutorial/" target="_top">Nmap Tutorial</a></p><p>Η έξοδος από το Nmap είναι μια λίστα από σαρωμένους στόχους, με συμπληρωματικές πληροφορίες
και κάθε μια εξαρτάται από τις επιλογές που χρησιμοποιήθηκαν.
Μεταξύ των βασικών πληροφοριών είναι ο σημαντικός πινάκας των ports (interesting ports table).
Αυτός ο πίνακας παραθέτει τον αριθμό θύρας και το πρωτόκολλο, το όνομα υπηρεσίας, και την κατάσταση.
Ο πίνακας της θύρας μπορεί επίσης να περιλαμβάνει λεπτομέριες έκδοσης του λογισμικού όταν έχει ζητηθεί.</p><p>Το Nmap διατίθεται υπό την άδεια GPL.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Bluefish"></a>4.8. Προγραμματισμός - Bluefish</h3></div></div></div><p>Το Bluefish είναι ενας αναβαθμησμένος κειμενογράφος με μεγάλη ποικιλία απο εργαλεία
για προγραμματισμό και για την κατασκευή δυναμικών ιστοσελίδων.
Το Bluefish υποστιρίζει μεταξύ άλλων γλώσσες όπως:</p><pre class="screen">- HTML,XHTML,CSS,XML
- PHP,C,C++,JavaScript,Google GO,SQL,Perl
- JSP,Python,Ruby,shell</pre><p>Είναι φτιαγμένο σε C/GTK+ και μπορεί να χρησημοποιηθεί διαμέσου του GNOME ή σαν ξεχωριστή εφαρμογή.
Καλύπτει αρκετα καλα το κομμάτι απο απλούς editors έως ενα πλήρες IDE.
Είναι lightweight εφαρμογή και αρκετά εύκολη στην εκμάθησή του.</p><p>Μπορεί να αποκτιθεί μεσω του package manager της διανομής του χρήστη ή απο
την ιστοσελίδα <a class="ulink" href="http://bluefish.openoffice.nl" target="_top">Bluefish</a></p><p>Το Bluefish διανέμετε με άδεια free software GPL.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Source"></a>4.9. Compiling από Source</h3></div></div></div><p>TODO</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_μέρος_γ_γλώσσες_προγραμματισμού"></a>5. Μέρος Γ - Γλώσσες Προγραμματισμού</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="C"></a>5.1. C</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία"></a>Βασικά στοιχεία</h4></div></div></div><p>Η C είναι μια διαδικαστική γλώσσα προγραμματισμού γενικής χρήσης. Χαρακτηρίζεται
για τη ταχύτητα της, καθώς και το γεγονός ότι είναι διαθέσιμη στα περισσότερα
σημερινά λειτουργικά συστήματα. Η C είναι μια γλώσσα υψηλού επιπέδου, αν και
θεωρείται από πολλούς mid-level γλώσσα προγραμματισμού και συχνά αποκαλείται
"high-level assembly" (υψηλού επιπέδου συμβολική γλώσσα).</p><p>Κατά την ανάπτυξή της, έχουν γίνει προσπάθειες
<a class="ulink" href="http://www.open-std.org/JTC1/SC22/WG14/www/standards" target="_top">τυποποίησής</a> της, με τo
πρότυπο ANSI (<a class="ulink" href="http://c-faq.com/ansi/index.html" target="_top">ANSI C</a> και αργότερα
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg14/" target="_top">ISO C</a>). Η τελευταία του έκδοση είναι το
C99. Πoλλοί compilers ακόμα δεν υποστηρίζουν πλήρως (ή πλήρως σωστά) πολλά
χαρακτηριστικά που περιγράφονται στο πρότυπο αυτό. Για το λόγο αυτό συνήθως
ζητείται συμβατότητα με το πρότυπο C89/C90. Υπό-κατασκευή βρίσκεται και το
νεότερο πρότυπο C1X.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την C σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
Compiler για τη μετάφραση του κώδικα
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_μεταγλώττιση_και_εκτέλεση_compilers_and_execution"></a>Μεταγλώττιση και Εκτέλεση (compilers and execution)</h4></div></div></div><p>Για τη μετάφραση και μεταγλώττιση του κώδικά μας θα χρειαστούμε κάποιον
compiler. Ο πιο ευρέως γνωστός είναι ο <a class="ulink" href="http://gcc.gnu.org/" target="_top">GCC</a> (μέρος
του <a class="ulink" href="http://www.gnu.org/" target="_top">GNU project</a>).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_3"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}</pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.c</strong></span>. Για να
μεταγλωττίσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ gcc -o hello hello.c # μετάφραση και μεταγλώττιση του κώδικα.
# παράγει το εκτελέσιμο αρχείο "hello"
$ ./hello # εκτέλεση του αρχείου
> Hello, World!</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Cpp"></a>5.2. C++</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_2"></a>Βασικά στοιχεία</h4></div></div></div><p>Η <code class="literal">C++</code> είναι μια γλώσσα προγραμματισμού γενικής χρήσης, υψηλού
επιπέδου, αν και θεωρείται από πολλούς μέσου επιπέδου (mid-level)
καθώς συνδυάζει στοιχεία από γλώσσες υψηλού και χαμηλού επιπέδου.</p><p>Η γλώσσα αναπτύχθηκε ως βελτίωση της ήδη υπάρχουσας γλώσσας προγραμματισμού
C, και αρχικά ονομάστηκε <span class="emphasis"><em>C with Classes</em></span> (C με κλάσεις).</p><p>Η γλώσσα ορίστηκε παγκοσμίως, το 1998, με το πρότυπο ISO/IEC 14882:1998.
Το πρότυπο τροποποιήθηκε το 2003 από το τεχνικό επιμελητήριο, ISO/IEC 14882:2003.
Η τρέχουσα έκδοση αυτού του προτύπου είναι αυτή του Σεπτεμβρίου του 2011,
η ISO/IEC 14882:2011 (άτυπα γνωστή και ως <code class="literal">C++11</code>).</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την C σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
Compiler για τη μετάφραση του κώδικα
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_μεταγλώττιση_και_εκτέλεση_compilers_and_execution_2"></a>Μεταγλώττιση και Εκτέλεση (compilers and execution)</h4></div></div></div><p>Για τη μετάφραση και μεταγλώττιση του κώδικά μας θα χρειαστούμε κάποιον
compiler. Ο πιο ευρέως γνωστός είναι ο <a class="ulink" href="http://gcc.gnu.org/" target="_top">GCC</a> (μέρος
του <a class="ulink" href="http://www.gnu.org/" target="_top">GNU project</a>).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_4"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!";
return 0;
}</pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.cpp</strong></span>. Για να
μεταγλωττίσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ g++ -o hello hello.cpp # μετάφραση και μεταγλώττιση του κώδικα.
# παράγει το εκτελέσιμο αρχείο "hello"
$ ./hello # εκτέλεση του αρχείου
> Hello, World!</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_περιβάλλοντα_εργασίας_ide"></a>Περιβάλλοντα Εργασίας - IDE</h4></div></div></div><p>Για αυτούς που θέλουν να χρησιμοποιήσουν κάποιο IDE υπάρχουν αρκετά
αξιόλογα για τη <code class="literal">C++</code>. Μερικά γνωστά είναι το <a class="ulink" href="http://www.codeblocks.org/" target="_top">Code::Blocks</a>,
το <a class="ulink" href="http://www.codelite.org/" target="_top">Codelite</a> και το <a class="ulink" href="http://www.bloodshed.net/dev/" target="_top">Bloodshed <code class="literal">Dev-C++</code></a>.</p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="Dev-cpp"></a>Bloodshed <code class="literal">Dev-C++</code></h5></div></div></div><p>Το περιβάλλον εργασίας Bloodshed <code class="literal">Dev-C++</code> είναι απλό στη χρήση και προσφέρει
αρκετές λειτουργίες όπως αυτόματη συμπλήρωση, υποστήριξη CVS, λειτουργία
αποσφαλμάτωσης κλπ.</p><p>Το Bloodshed <code class="literal">Dev-C++</code> διανέμεται υπό την άδεια GPLv3 και διατίθεται μόνο
για Windows.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="CodeBlocks"></a>Code::Blocks</h5></div></div></div><p>Μία άλλη πολύ καλή επιλογή είναι το Codeblocks. Το Codeblocks περιλαμβάνει
μία πληθώρα χαρακτηριστικών που συνεισφέρουν στη γρήγορη, εύκολη και αποδοτική
συγγραφή κώδικα. Υποστηρίζει πληθώρα διαφορετικών μεταγλωττιστών και κάνει
χρήση του GNU GDB για αποσφαλμάτωση του κώδικα.</p><p>To Codeblocks είναι γραμμένο σε <code class="literal">C++</code> και είναι επεκτάσιμο μέσω plugins.
Λειτουργεί σε Linux, Mac και Windows και διανέμεται υπό την άδεια GPLv3.</p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="CSH"></a>5.3. C Shell</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_3"></a>Βασικά στοιχεία</h4></div></div></div><p>Το C shell (csh ή πιο πρόσφατα <a class="ulink" href="http://www.tcsh.org/Welcome" target="_top">tcsh</a>) είναι ένα
κέλυφος (shell) Unix, δηλαδή ένας διερμηνευτής γραμμής εντολών για συστήματα
τύπου Unix.</p><p>Το C shell εκτελεί εντολές συνήθως από ένα παράθυρο κειμένου αλλά μπορεί
και να εκτελέσει εντολές αποθηκευμένες σε ένα αρχείο.</p><p>Η έκδοση csh που χρησιμοποιούν οι περισσότεροι σύγχρονοι υπολογιστές είναι
το tcsh, μία βελτιωμένη έκδοση του csh. Το tcsh είναι συμβατό με το csh.</p><p>Ο στόχος του csh έναντι άλλων κελυφών Unix είναι ότι σχεδιάστηκε με σκοπό
να μοιάζει στη γλώσσα προγραμματισμού C και να είναι καλύτερο για διαδραστική
χρήση.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με το C shell σε μια
διανομή Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Το tcsh για διερμηνεία των εντολών
</li><li class="listitem">
Επεξεργαστής κειμένου αν θέλουμε να δημιουργήσουμε αρχεία εντολών
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_διερμηνεία_γραμμής_εντολών"></a>Διερμηνεία Γραμμής Εντολών</h4></div></div></div><pre class="programlisting">% echo Hello, World!
> Hello, World!</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_5"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">#!/usr/bin/env tcsh
echo Hello, World!</pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.csh</strong></span> ή <span class="strong"><strong>.tcsh</strong></span>.
Για να εκτελέσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ tcsh hello.csh # εκτέλεση του αρχείου
> Hello, World!</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Fortran"></a>5.4. Fortran</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_4"></a>Βασικά στοιχεία</h4></div></div></div><p>Η FORTRAN (FORmulae TRANslator) είναι μία από τις πρώτες γλώσσες προγραμματισμού
υψηλού επιπέδου. Αρχικά η FORTRAN προοριζόταν για επίλυση μαθηματικών
προβλημάτων και χρησιμοποιήθηκε σε επιστημονικές αλλά και εμπορικές εφαρμογές.</p><p>Το όνομα της FORTRAN γράφεται παραδοσιακά με κεφαλαία από τότε που η χρήση
πεζών γραμμάτων για την αναπαράσταση λέξεων κλειδιών δεν χρησιμοποιούταν.
Πλέον επίσημα αναφερόμαστε τη γλώσσα ως Fortran (από τη Fortran 90 και μετά).
Αυτή η σύμβαση αντικατοπτρίζεται στην αναφορά με κεφαλαία της FORTRAN στα ANSI X3.9-1966
(FORTRAN 66) και ANSI X3.9-1978 (FORTRAN 77) πρότυπα και έπειτα ως
Fortran στα ANSI X3.198-1992 (Fortran 90), ISO/IEC 1539-1:1997 (Fortran 95)
και ISO/IEC 1539-1:2004 (Fortran 2003) πρότυπα.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την Fortran σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
Compiler για τη μετάφραση του κώδικα
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_mεταγλώττιση_και_εκτέλεση_compilers_and_execution"></a>Mεταγλώττιση και Εκτέλεση (compilers and execution)</h4></div></div></div><p>Για τη μετάφραση και μεταγλώττιση του κώδικά μας θα χρειαστούμε κάποιον
compiler. Θα χρησιμοποιήσουμε το <a class="ulink" href="http://gcc.gnu.org/wiki/GFortran" target="_top">GFortran</a> (μέρος
του <a class="ulink" href="http://www.gnu.org/" target="_top">GNU project</a>).</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_6"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">program hello
print *, "Hello, World!"
end program hello</pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.f</strong></span> (ή
<span class="strong"><strong>.FOR</strong></span>, <span class="strong"><strong>.for</strong></span>, <span class="strong"><strong>.f77</strong></span>, <span class="strong"><strong>.f90</strong></span>, <span class="strong"><strong>.f95</strong></span>). Για να
μεταγλωττίσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ gfortran -o hello hello.f # μετάφραση και μεταγλώττιση του κώδικα.
# παράγει το εκτελέσιμο αρχείο "hello"
$ ./hello # εκτέλεση του αρχείου
> Hello, World!</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="HTML"></a>5.5. HTML</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_5"></a>Βασικά στοιχεία</h4></div></div></div><p>Η HTML (HyperText Markup Language - Γλώσσα Σήμανσης Υπερκειμένου) είναι
η κυρίαρχη <span class="strong"><strong>γλώσσα σήμανσης</strong></span> για τη δημιουργία ιστοσελίδων και τα στοιχεία
της είναι τα βασικά δομικά στοιχεία αυτών.</p><p>Οι WebBrowsers διαβάζουν τα αρχεία HTML και αποτυπώνουν την ερμηνεία τους.
Δηλαδή ένας WebBrowser δε θα δείξει το κώδικα HTML της σελίδας αλλά θα
δείξει αυτό που αυτός περιγράφει, δηλαδή μορφοποιημένο κείμενο και πολυμεσικό
περιεχόμενο όπως εικόνες, βίντεο κλπ.</p><p>Για να συντάξει κάποιος ένα αρχείο HTML σε μια διανομή Linux χρειάζεται
τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
WebBrowser
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p><p>Για WebBrowser μπορούμε να χρησιμοποιήσουμε οποιονδήποτε μοντέρνο WebBrowser
που υποστηρίζει τα πιο σύγχρονα πρότυπα (HTML5, CSS3) όπως Firefox, Chromium κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_7"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting"><html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html></pre><p>Αφού γράψουμε το κώδικά μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.html</strong></span>.
Για να δούμε πώς φαίνεται το ανοίγουμε με κάποιον WebBrowser.</p><p>Από γραμμή εντολών μπορούμε να το ανοίξουμε έτσι:</p><pre class="programlisting">$ $BROWSER hello.html # άνοιγμα της σελίδας με τον προεπιλεγμένο browser μας</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="MIPS32"></a>5.6. MIPS32 ASSEMBLY</h3></div></div></div><p>Η αρχιτεκτονική επεξεργαστών MIPS (Microprocessor without Interlocked Pipeline
Stages) είναι μία αρχιτεκτονική υπολογιστή περιορισμένου συνόλου εντολών (RISK;
Reduced instruction set computing).</p><p>Η αρχιτεκτονική MIPS έχει χρησιμοποιηθεί στη πράξη σε ενσωματωμένα συστήματα
(embedded systems) όπως δρομολογητές, πύλες ή κονσόλες βίντεο παιχνιδιών όπως το
Sony Playstation 2.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_assembly"></a>Assembly</h4></div></div></div><p>Η συμβολική γλώσσα (assembly language) είναι μία γλώσσα χαμηλού επιπέδου,
δηλαδή πολύ κοντά στη γλώσσα μηχανής και στο υλικό του υπολογιστή.</p><p>Κάθε αρχιτεκτονική επεξεργαστών έχει τη δική της συμβολική γλώσσα. Η
αρχιτεκτονική MIPS32 χρησιμοποιεί ακέραιους ενταμιευτές (registers)
μεγέθους 32bits.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με τη συμβολική γλώσσα
MIPS32 σε μια διανομή Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
Τον προσομοιωτή spim
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="SPIM"></a>SPIM</h4></div></div></div><p>Το <a class="ulink" href="http://spimsimulator.sourceforge.net/" target="_top">spim</a> είναι ένας προσομοιωτής
που εκτελεί προγράμματα MIPS32. Διαβάζει και εκτελεί προγράμματα συμβολικής
γλώσσας για τον επεξεργαστή MIPS. Επίσης παρέχει έναν απλό αποσφαλματωτή
(debugger). Το spim διατίθεται υπό την άδεια BSD.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_8"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting"> .text
.globl main
main:
li $v0, 4
la $a0, msg
syscall
li $v0,10
syscall
.data
msg: .asciiz "Hello, World!"</pre><p>Αφού γράψουμε το κώδικά μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.s</strong></span> ή <span class="strong"><strong>.asm</strong></span>.
Για να εκτελέσουμε το κώδικά μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ spim # ξεκινάει το spim
> (spim) load "hello.asm" # φορτώνει το αρχείο αρχείο "hello"
> (spim) run # εκτέλεση του αρχείου
> Hello, World!
> (spim) exit # τερματισμός του spim</pre><p>Επίσης υπάρχει διαθέσιμη και η γραφική διεπαφή για το linux με το όνομα xspim,
ενώ για Windows με το όνομα PCSpim.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java"></a>5.7. Java</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_6"></a>Βασικά στοιχεία</h4></div></div></div><p>Η <a class="ulink" href="http://www.oracle.com/us/technologies/java/index.html" target="_top">Java</a> είναι μία
αντικειμενοστραφής γλώσσα προγραμματισμού υψηλού επιπέδου.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την Java σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου (editor)
</li><li class="listitem">
Compiler για την μετάφραση του κώδικα σε κώδικα byte (bytecode)
</li><li class="listitem">
Java Virtual Machine (Εικονική Μηχανή) για την
εκτέλεση των προγραμμάτων που δημιουργούμε
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_μεταγλώττιση_και_εκτέλεση_compilers_and_execution_3"></a>Μεταγλώττιση και Εκτέλεση (compilers and execution)</h4></div></div></div><p>Για να τρέξουμε προγράμματα γραμμένα σε Java χρειαζόμαστε το
<a class="ulink" href="http://www.java.com/en/download/manual.jsp" target="_top">Java Runtime
Enviroment (JRE)</a>.</p><p>Για να μεταγλωττίσουμε προγράμματα γραμμένα σε Java
χρειαζόμαστε το
<a class="ulink" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_top">Java
Development Kit (JDK)</a>.</p><p>Και για τα 2 παραπάνω μπορούμε να χρησιμοποιήσουμε το
<a class="ulink" href="http://openjdk.java.net/" target="_top">OpenJDK</a>
που διατίθεται υπό <a class="ulink" href="http://openjdk.java.net/legal/gplv2+ce.html" target="_top">GPLv2
with Classpath Exception</a>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_9"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}</pre><p>Μπορούμε να γράψουμε προγράμματα σε Java εύκολα με τον αγαπημένο μας
editor όπως π.χ. το gedit ή geany ή vim.</p><p>Αφού γράψουμε το κώδικα Java τα εργαλεία του OpenJDK μας επιτρέπουν να
μεταγλωττίσουμε και να τρέξουμε τα προγράμματα μας. Τα βήματα είναι
τα εξής:</p><pre class="programlisting">$ javac Hello.java # Μεταγλώττιση του κώδικα Hello.java σε bytecode
# και παραγωγή αρχείου Hello.class
$ java Hello # Εκτέλεση του κώδικα byte Hello.class
> Hello, world!</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_περιβάλλοντα_εργασίας_ide_2"></a>Περιβάλλοντα Εργασίας - IDE</h4></div></div></div><p>Για αυτούς που θέλουν να χρησιμοποιήσουν κάποιο IDE υπάρχουν αρκετά
αξιόλογα για τη Java. Τα δύο πιο ευρέως γνωστά είναι το
<a class="ulink" href="http://netbeans.org/" target="_top">NetBeans</a> και το <a class="ulink" href="http://www.eclipse.org/" target="_top">Eclipse</a>.
Μια επίσης ενδιαφέρουσα επιλογή είναι το <a class="ulink" href="http://www.bluej.org" target="_top">BlueJ</a>.</p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="Netbeans"></a>NetBeans</h5></div></div></div><p>Το NetBeans περιέχει πάρα πολλά εργαλεία ενσωματωμένα που στοχεύουν να
διευκολύνουν το προγραμματιστή και να αυξήσουν την αποδοτικότητά του.</p><p>Μερικά από τα <a class="ulink" href="http://netbeans.org/features/index.html" target="_top">χαρακτηριστικά του NetBeans</a>
είναι αυτόματη συμπλήρωση κώδικα, άμεση διόρθωση και επισήμανση συντακτικών λαθών,
refactoring κ.α.</p><p>Το NetBeans διατίθεται υπό <a class="ulink" href="http://netbeans.org/about/legal/license.html" target="_top">CDDL
και GPLv2 with Classpath Exception</a>.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_eclipse"></a>Eclipse</h5></div></div></div><p>Μία εναλλακτική επιλογή είναι το Eclipse. Το Eclipse μοιάζει πολύ στο NetBeans
από πλευράς χαρακτηριστικών. Η μεγαλύτερη διαφορά έγκειται στην αρχιτεκτονική
ανάπτυξης των δύο αυτών project. Το Eclipse έχει δομηθεί έτσι ώστε να προσφέρει
ένα πολύ επεκτάσιμο σύστημα προσθέτων (plugins). Έχει ένα σταθερό πυρήνα, και
προσφέρει όλες τις υπηρεσίες του μέσω προσθέτων. Κατά αυτό το τρόπο, το Eclipse
δε περιορίζεται στην ανάπτυξη προγραμμάτων μόνο σε Java, αλλά μπορεί να χρησιμοποιηθεί
και για την ανάπτυξη προγραμμάτων σε άλλες γλώσσες προγραμματισμού όπως C, <code class="literal">C++</code>, Ada, Perl,
PHP, Python, Ruby, κ.α.</p><p>Το Eclipse διατίθεται υπό την
<a class="ulink" href="http://www.eclipse.org/legal/epl-v10.html" target="_top">Eclipse Public License</a>.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_bluej"></a>BlueJ</h5></div></div></div><p>Το περιβάλλον εργασίας BlueJ έχει αναπτυχθεί για διδακτικούς σκοπούς, με στόχο
να στηρίξει και να διδάξει αντικειμενοστραφείς μεθόδους ανάπτυξης λογισμικού.</p><p>Το BlueJ προσφέρει γραφικές απεικονίσεις της δομής των προγραμμάτων υπο-κατασκευή,
διαδραστικές διεπαφές πάνω στα διαγράμματα για τη παραγωγή αντικειμένων, τάξεων,
μεθόδων και κώδικα.</p><p>Το BlueJ διατίθεται υπό την άδεια χρήσης GPLv2.</p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Pascal"></a>5.8. Pascal</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_7"></a>Βασικά στοιχεία</h4></div></div></div><p>Η <a class="ulink" href="http://pascal-central.com/ppl/index.html" target="_top">Pascal</a> είναι μία δομημένη γλώσσα
προγραμματισμού με ιδιαίτερο χαρακτηριστικό τη δυνατότητα ορισμού από τον
προγραμματιστή δικών του δομών δεδομένων.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την Pascal σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου (editor)
</li><li class="listitem">
Compiler
</li><li class="listitem">
Debugger
</li><li class="listitem">
Κονσόλα (terminal) για την εκτέλεση των προγραμμάτων που δημιουργούμε
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_μεταγλώτιση_και_εκτέλεση_compilers_and_execution"></a>Μεταγλώτιση και Εκτέλεση (compilers and execution)</h4></div></div></div><p>Για τη μεταγλώτιση θα χρησιμοποιήσουμε τον <a class="ulink" href="http://www.gnu-pascal.de/gpc/" target="_top">GNU
Pascal Compiler</a> ή αλλιώς gpc. Η γενική χρήση του gpc είναι η εξής:</p><pre class="programlisting">$ gpc [options] file</pre><pre class="programlisting">program HelloWorld(output);
begin
writeln('Hello, World!')
end</pre><p>Έστω ότι έχουμε δημιουργήσει το αρχείο με κώδικα Pascal που έχει όνομα hello.pas
. Για να το μεταγλωττίσουμε εκτελούμε:</p><pre class="programlisting">$ gpc hello.pas</pre><p>Η παραπάνω εντολή, αν δεν υπάρχουν λάθη στον κώδικα του hello.pas, θα
δημιουργήσει ένα εκτελέσιμο αρχείο με όνομα a.out . Αν θέλουμε να ορίσουμε εμείς
το όνομα του εκτελέσιμου αρχείου θα πρέπει να χρησιμοποιήσουμε τον διακόπτη -o
ακολουθούμενο από το επιθυμητό όνομα. Επίσης, χρήσιμος διακόπτης είναι ο -Wall ο
οποίος ορίζει ότι θέλουμε να εμφανίζονται όλα τα μηνύματα του gpc κατά τη
μεταγλώτιση, όπως προειδοποιήσεις (warnings). Οπότε, μία πιο σωστή χρήση του gpc
στο παράδειγμά μας θα ήταν:</p><pre class="programlisting">$ gpc -Wall -o hello hello.pas
$ ./hello
> Hello, World!</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_αποσφαλμάτωση_debugging"></a>Αποσφαλμάτωση (debugging)</h4></div></div></div><p>Για την αποσφαλμάτωση των προγραμμάτων μας προτείνουμε τον GNU Debugger ή αλλιώς
τον gdb. Για να τον χρησιμοποιήσουμε, η μεταγλώτιση του προγράμματός μας θα
πρέπει να γίνει με τη χρήση του διακόπτη -g, δηλαδή:</p><pre class="programlisting">$ gpc -g -Wall -o hello hello.pas</pre><p>Στη συνέχεια, εκτελούμε τον gdb δίνοντας ως όρισμα το εκτελέσιμο που
δημιουργήσαμε με την παραπάνω εντολή:</p><pre class="programlisting">$ gdb hello</pre><p>Η χρήση του gdb ξεφεύγει από το σκοπό του παρόντος κειμένου, καθώς αποτελεί
μέρος της διδακτέας ύλης του μαθήματος. Το πλήρες manual του gdb είναι διαθέσιμο
<a class="ulink" href="http://www.gnu.org/software/gdb/documentation/" target="_top">εδώ</a>.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="PHP"></a>5.9. PHP</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_8"></a>Βασικά στοιχεία</h4></div></div></div><p>Η PHP είναι μία γλώσσα γενικού σκοπού για να εκτελείται από μεριάς εξυπηρετητή
(server-side). Αρχικά σχεδιάστηκε για την ανάπτυξη διαδικτυακών εφαρμογών
παράγοντας δυναμικές ιστοσελίδες.</p><p>Η PHP διανέμεται υπό την άδεια <a class="ulink" href="http://php.net/license/index.php" target="_top">PHP</a>.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την PHP σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου
</li><li class="listitem">
Interpreter για τη διερμηνεία του κώδικα
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_εκτέλεση_execution"></a>Εκτέλεση (execution)</h4></div></div></div><p>Για την εκτέλεση του κώδικά μας θα χρειαστούμε την <a class="ulink" href="http://www.php.net/" target="_top">PHP</a> την
οποία και εγκαθιστούμε μέσω του package manager μας. Μετά την εγκατάσταση
κάνουμε restart τον WebServer μας άν σκοπεύουμε να εκτελούμε τα php αρχεία
μέσω ενός browser.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_10"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting"><?php
echo "Hello, World!";
?></pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.php</strong></span>.
Για να εκτελέσουμε το κώδικα μας το ανοίγουμε με κάποιον WebBrowser.</p><p>Για παράδειγμα από γραμμή εντολών μπορούμε να το ανοίξουμε δίνοντας:</p><pre class="programlisting">$ $BROWSER hello.html # άνοιγμα της σελίδας με τον προεπιλεγμένο browser μας</pre><div class="warning" style="margin-left: 0; margin-right: 10%;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/icons/warning.png" /></td><th align="left"></th></tr><tr><td align="left" valign="top"><p>Για να ανοίξουμε τη σελίδα με WebBrowser πρέπει να κάνουμε χρήση
ενός εξυπηρετητή διαδικτύου (WebServer) όπως του <a class="ulink" href="http://www.apache.org/" target="_top">Apache</a>.</p></td></tr></table></div><p>Εναλλακτικά μπορούμε να εκτελέσουμε αρχεία php από τη γραμμή εντολών για να μας
τυπώσει την παραγώμενη html εκεί. Έτσι το παραπάνω πρόγραμμα γίνεται:</p><pre class="programlisting">#!/usr/bin/env php
<?php
echo "Hello, World!";
?></pre><p>και για να εκτελέσουμε τον κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting">$ php hello.php # εκτέλεση του αρχείου
> Hello, World!</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="VHDL"></a>5.10. VHDL</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_βασικά_στοιχεία_9"></a>Βασικά στοιχεία</h4></div></div></div><p>Η VHDL (VHSIC hardware description language) είναι μία γλώσσα περιγραφής
υλικού που χρησιμοποιείται για σχεδίαση ψηφιακών συστημάτων όπως ολοκληρωμένα
κυκλώματα κλπ.</p><p>Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την VHDL σε μια διανομή
Linux είναι τα παρακάτω:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επεξεργαστής κειμένου (editor)
</li><li class="listitem">
Έναν προσομοιωτή για VHDL
</li><li class="listitem">
Προαιρετικά ένα πρόγραμμα που να απεικονίζει γραφικά τα σήματα
</li></ul></div><p>Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ
vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal,
kterm, xterm, κλπ.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_προσομοίωση_simulation"></a>Προσομοίωση (Simulation)</h4></div></div></div><p>Για τη προσομοίωση θα χρειαστούμε έναν προσομοιωτή VHDL. Μία επιλογή
ανοιχτού κώδικα είναι ο <a class="ulink" href="http://ghdl.free.fr/" target="_top">GHDL</a>.</p><p>Ο GHDL είναι βασισμένος στο GCC και λειτουργεί σε Linux, Mac και Windows.
Διατίθεται υπό την άδεια GPL.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_γραφική_απεικόνιση_σημάτων"></a>Γραφική Απεικόνιση Σημάτων</h4></div></div></div><p>Για να ελέγξουμε το σχέδιο που έχουμε φτιάξει σε VHDL, πολλές φορές είναι
χρήσιμη μία γραφική απεικόνιση των σημάτων μας.</p><p>Για τη γραφική απεικόνιση των σημάτων μπορούμε να χρησιμοποιήσουμε ένα
πρόγραμμα που απεικονίζει γραφικά κυματομορφές. Μία επιλογή που είναι το
<a class="ulink" href="http://gtkwave.sourceforge.net/" target="_top">GTKWave</a> που μπορεί να συνδυαστεί εύκολα
με το GHDL.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_συγγραφή_προγραμμάτων_11"></a>Συγγραφή Προγραμμάτων</h4></div></div></div><pre class="programlisting">-- Hello world program.
use std.textio.all; -- Imports the standard textio package.
-- Defines a design entity, without any ports.
entity hello_world is
end hello_world;
architecture behaviour of hello_world is
begin
process
variable l : line;
begin
write (l, String'("Hello world!"));
writeline (output, l);
wait;
end process;
end behaviour;</pre><p>Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη <span class="strong"><strong>.vhdl</strong></span>. Για να
μεταγλωττίσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:</p><pre class="programlisting"> $ ghdl -a hello.vhdl # παράγει αρχείο που περιγράφει την αρχιτεκτονική
$ ghdl -e hello_world # παράγει το εκτελέσιμο αρχείο
$ ghdl -r hello_world # εκτέλεση του αρχείου
> Hello world!
# Εναλλακτικά για γραφική απεικόνιση των σημάτων
$ ghdl -r hello_world --vcd=hello_world.vcd
$ gtkwave hello_world.vcd</pre></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_μέρος_δ_συσχέτιση_μαθημάτων"></a>6. Μέρος Δ - Συσχέτιση Μαθημάτων</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_τμήμα_πληροφορικής_ο_π_α"></a>6.1. Τμήμα Πληροφορικής Ο.Π.Α.</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p class="simpara">
Α' Εξάμηνο
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού πληροφορικής
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Εισαγωγή στην Επιστήμη των Υπολογιστών
</li><li class="listitem">
Εισαγωγή στον Προγραμματισμό Υπολογιστών
</li></ul></div></li><li class="listitem"><p class="simpara">
Μαθήματα κορμού μαθηματικών
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Διακριτά Μαθηματικά
</li><li class="listitem">
Μαθηματικός Λογισμός
</li></ul></div></li><li class="listitem"><p class="simpara">
Μαθήματα οικονομικών
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Εισαγωγή στην Οικονομική Επιστήμη
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Β' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού πληροφορικής
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Προγραμματισμός Υπολογιστών με JAVA
</li><li class="listitem">
Σχεδίαση Ψηφιακών Συστημάτων
</li></ul></div></li><li class="listitem"><p class="simpara">
Μαθήματα κορμού μαθηματικών
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Γραμμική Άλγεβρα και Εφαρμογές
</li><li class="listitem">
Υπολογιστικά Μαθηματικά
</li></ul></div></li><li class="listitem"><p class="simpara">
Μαθήματα οικονομικών
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Λογιστική
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Γ' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού πληροφορικής
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Δομές Δεδομένων
</li><li class="listitem">
Οργάνωση Συστημάτων Υπολογιστών
</li><li class="listitem">
Προγραμματισμός Υπολογιστών με C++
</li></ul></div></li><li class="listitem"><p class="simpara">
Μαθήματα κορμού μαθηματικών
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Πιθανότητες
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Δ' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού πληροφορικής
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Αλγόριθμοι
</li><li class="listitem">
Αυτόματα και Πολυπλοκότητα
</li><li class="listitem">
Βάσεις Δεδομένων
</li><li class="listitem">
Λειτουργικά Συστήματα
</li></ul></div></li></ul></div></li></ul></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_emphasis_αναλυτικά_emphasis"></a><span class="emphasis"><em>Αναλυτικά</em></span></h4></div></div></div><p><span class="emphasis"><em>Σημείωση: Δείτε τη τελευταία γραμμή κάθε παραγράφου για
τις τεχνολογίες που χρησιμοποιούνται.</em></span></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_α_εξάμηνο"></a>Α' Εξάμηνο</h4></div></div></div><p><span class="navy">Εισαγωγή στην Επιστήμη των Υπολογιστών</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Συνοπτική περιγραφή στα θέματα που ενδιαφέρουν την Επιστήμη των Υπολογιστών.
</li><li class="listitem">
Περιλαμβάνει την αλγοριθμική λύση προβλημάτων, τον προγραμματισμό υπολογιστών,
την επεξεργασία δεδομένων και τη λειτουργία συστημάτων και δικτύων υπολογιστών
σε θεωρητικές βάσεις.
</li><li class="listitem">
Εισαγωγή στην <a class="link" href="#HTML" title="5.5. HTML">HTML</a>
</li></ul></div><p><span class="emphasis"><em>Για την εισαγωγή στις έννοιες του προγραμματισμού σε συμβολική γλώσσα μπορείτε
να χρησιμοποιήσετε το <a class="link" href="#Lia" title="4.1. Γλώσσα Μηχανής (Assembly) - Lia">Lia</a>.</em></span></p><p><a id="aueb-cs-intro"></a><span class="navy">Εισαγωγή στον Προγραμματισμό Υπολογιστών</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Εισαγωγικό μάθημα στον προγραμματισμό. Γνωριμία με θεμελιώδεις έννοιες τύπων
δεδομένων και εκτέλεσης αλγορίθμων, δομές ελέγχου ροής προγράμματος, πράξεις,
χρήση και δημιουργία συναρτήσεων και βασικό χειρισμό αρχείων.
</li><li class="listitem">
Εισαγωγή στην <a class="link" href="#Java" title="5.7. Java">Java</a>
</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_β_εξάμηνο"></a>Β' Εξάμηνο</h4></div></div></div><p><span class="navy">Προγραμματισμός Υπολογιστών με Java</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Αντικείμενο του μαθήματος είναι η διδασκαλία του αντικειμενοστραφούς
προγραμματισμού σε βάθος, και προχωρημένων τεχνικών προγραμματισμού και
υλοποίησης αλγορίθμων ενώ περιλαμβάνει και το σχεδιασμό γραφικών διεπαφών.
</li><li class="listitem">
Αποτελεί τη συνέχεια του μαθήματος <a class="link" href="#aueb-cs-intro">Εισαγωγή στον Προγραμματισμό Υπολογιστών</a>.
</li><li class="listitem">
Το μάθημα περιλαμβάνει προγραμματισμό σε <a class="link" href="#Java" title="5.7. Java">Java</a> και εκμάθηση του <a class="link" href="#Netbeans" title="NetBeans">Netbeans</a>
</li></ul></div><p><span class="navy">Σχεδίαση Ψηφιακών Συστημάτων</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Αρχές δυαδικής αριθμητικής. Άλγεβρα Boole και λογικές πύλες. Μέθοδοι
απλοποίησης συναρτήσεων και κυκλωμάτων με πίνακες Karnaugh.
</li><li class="listitem">
Σχεδίαση συνδυαστικών κυκλωμάτων. Δισταθή παλμοκυκλώματα (flip flops).
Σχεδίαση σύγχρονων ακολουθιακών κυκλωμάτων.
</li><li class="listitem">
Υλοποίηση μονάδων ελέγχου μικροεπεξεργαστών (ALUs).
</li></ul></div><p><span class="emphasis"><em>Χρησιμοποιείται το πακέτο CAD Quartus II της Altera χρησιμοποιώντας την γλώσσα <a class="link" href="#VHDL" title="5.10. VHDL">VHDL</a>.</em></span></p><p><span class="navy">Υπολογιστικά Μαθηματικά</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Αριθμοί και συστήματα κινητής υποδιαστολής, σφάλματα και μετάδοση σφαλμάτων
στους υπολογισμούς.
</li><li class="listitem">
Αριθμητική επίλυση εξισώσεων. Τύποι αριθμητικής παραγώγισης. Σφάλματα
αποκοπής. Αριθμητική ολοκλήρωση. Αριθμητική επίλυση γραμμικών συστημάτων.
</li><li class="listitem">
Νόρμες και δείκτης κατάστασης πίνακα. Ευστάθεια και τάξη μεθόδων.
</li></ul></div><p><span class="emphasis"><em>Στα εργαστήρια διδάσκεται προγραμματισμός σε <a class="link" href="#Fortran" title="5.4. Fortran">Fortran</a> και <a class="link" href="#Scilab" title="4.3. Μαθηματικά Εργαλεία - Scilab">SciLab</a>.</em></span></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_γ_εξάμηνο"></a>Γ' Εξάμηνο</h4></div></div></div><p><span class="navy">Δομές Δεδομένων</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Παρουσιάζονται οι βασικές δομές δεδομένων και η χρήση τους στην ανάπτυξη
προγραμμάτων.
</li><li class="listitem">
Εξοικείωση με την έννοια της δόμησης δεδομένων και το ρόλο των δομών δεδομένων
στην υλοποίηση αλγορίθμων.
</li></ul></div><p><span class="emphasis"><em>Για την υλοποίηση των δομών δεδομένων χρησιμοποιείται η γλώσσα προγραμματισμού <a class="link" href="#Java" title="5.7. Java">Java</a>.</em></span></p><p><span class="navy">Οργάνωση Συστημάτων Υπολογιστών</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Δομή και λειτουργία του υλισμικού υπολογιστών. Οργάνωση και δομή κύριας
μνήμης, αποθήκευση και παράσταση δεδομένων.
</li><li class="listitem">
Αριθμητική υπολογιστών. Σωλήνωση και παράλληλοι υπολογιστές.
</li><li class="listitem">
Λειτουργία και έλεγχος των περιφερειακών συσκευών. Μαγνητικές και οπτικές
συσκευές. Δευτερεύουσα μνήμη και ιεραρχία μνήμης. Παγίδες, διακοπές και
συστήματα ελέγχου εισόδου/εξόδου.
</li><li class="listitem">
Προγραμματισμός σε επίπεδο γλώσσας μηχανής και συμβολικής γλώσσας.
</li></ul></div><p><span class="emphasis"><em>Χρησιμοποιείται η γλώσσα υπολογιστών <a class="link" href="#MIPS32" title="5.6. MIPS32 ASSEMBLY">MIPS32</a> και ο εξομοιωτής <a class="link" href="#SPIM" title="SPIM">SPIM</a>.</em></span></p><p><span class="navy">Προγραμματισμός Υπολογιστών με <code class="literal">C++</code></span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Εισαγωγή στο προγραμματισμό με <code class="literal">C++</code>. Διαδικαστικός προγραμματισμός, αντικειμενοστραφής
προγραμματισμός. Λέξεις κλειδιά της γλώσσας. Δείκτες και θέσεις μνήμης.
</li><li class="listitem">
Τάξεις, κατασκευαστές, καταστροφείς. Pass by value, pass by reference. Ελευθέρωση μνήμης.
</li></ul></div><p><span class="emphasis"><em>Το περιβάλλον εργασίας είναι το <a class="link" href="#Dev-cpp" title="Bloodshed Dev-C++">BloodShed <code class="literal">DevC++</code></a>.</em></span></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_δ_εξάμηνο"></a>Δ' Εξάμηνο</h4></div></div></div><p><span class="navy">Αλγόριθμοι</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Bασικές αρχές αλγορίθμων. Διαίρει και βασίλευε. Αναδρομή. Ταξινόμηση. Γράφοι και γραφήματα.
</li><li class="listitem">
Αποστάσεις, αναζήτηση σε βάθος ή πλάτος. Συντομότερες διαδρομές. Δυναμικός προγραμματισμός.
</li><li class="listitem">
Βάρη ακμών. Γραμμικός προγραμματισμός. NP-πληρότητα. Εφαρμογές παράστασης γράφων σε Java.
</li></ul></div><p><span class="navy">Αυτόματα και Πολυπλοκότητα</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Πεπερασμένα αυτόματα, Αυτόματα στοίβας, Μηχανές Turing, Επιλύσιμα προβλήματα,
</li><li class="listitem">
Μη επιλύσιμα προβλήματα (κλάσεις P, NP, NP-complete προβλήματα).
</li></ul></div><p><span class="navy">Βάσεις Δεδομένων</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Διαγράμματα Οντοτήτων-Συσχετίσεων. Αρχές Σχεδιασμού. Σχεσιακά Μοντέλα.
Εισαγωγή στην MS-SQL και MS-SQL-Server. Σχεσιακή Aλγεβρα.
</li><li class="listitem">
Ανάπτυξη εφαρμογών Ιστού οδηγούμενων από Βάσεις Δεδομένων.
</li><li class="listitem">
Constraints και Triggers. Transactions. Indexing. Τεχνικές εξουσιοδότησης.
Μη σχεσιακές γλώσσες επερωτήσεων.
</li></ul></div><p><span class="emphasis"><em>Χρησιμοποιείται: MS-SQL 2008, MS-SQL-Server 2008, xPath, xQuery.</em></span></p><p><span class="navy">Λειτουργικά Συστήματα</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Επικοινωνία Διεργασιών (IPC, pipes). Παραλληλία (Concurency). Αμοιβαίος
αποκλεισμός, σηματοφορείς, race conditions, συγχρονισμός διεργασιών.
Deadlocks, detection and recovery.
</li><li class="listitem">
Οργάνωση πυρήνα. Μονολιθικά και Αποκεντρωτικά συστήματα.
Χρονοπρογραμματισμός CPU. Διακοπές και παγίδες.
</li><li class="listitem">
Επικοινωνία με περιφεριακές συσκευές, τερματικά, εκτυπωτές,
μνήμη, σκληροί δίσκοι (IO Management).
</li><li class="listitem">
Διαχείρηση μνήμης, σελιδοποίηση, τεμαχισμός, πολιτικές.
Εφαρμογές σε UNIX συστήματα. Βασικά προγράμματα και εντολές.
</li></ul></div><p><span class="emphasis"><em>Εισαγωγή σε <a class="link" href="#CSH" title="5.3. C Shell">shell-scripting</a>. Εισαγωγή στη <a class="link" href="#C" title="5.1. C">C</a>.</em></span></p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_τμήμα_τηλεποικινωνιακών_συστηματων_και_δυκτίων_τει_μεσσολογίου_παραρτημα_ναυπάκτου"></a>6.2. Τμήμα Τηλεποικινωνιακών Συστηματων και Δυκτίων ΤΕΙ Μεσσολογίου Παραρτημα Ναυπάκτου</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p class="simpara">
Α' Εξάμηνο
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Βασικές αρχές γλωσσών προγραμματισμού - Γλώσσα C
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Β' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Αλγόριθμοι και δομές δεδομένων
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Γ' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Λειτουργικά Συστήματα
</li><li class="listitem">
Αντικειμενοστραφής προγραμματισμός Java
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Δ' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
Βάσεις Δεδομένων
</li><li class="listitem">
Γλώσσες Ανάλυσης και Σχεδιασμού Τηλεπικοινωνιακών συστημάτων
</li><li class="listitem">
Δίκτυα Ι
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
Ε' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
ΑΝΑΛΥΣΗ, ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
</li><li class="listitem">
ΔΙΚΤΥΑ ΙΙ
</li><li class="listitem">
ΜΕΤΑΔΟΣΗ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑ ΦΩΝΗΣ
</li><li class="listitem">
ΣΧΕΔΙΑΣΗ ΠΡΩΤΟΚΟΛΛΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ
</li></ul></div></li></ul></div></li><li class="listitem"><p class="simpara">
ΣΤ' Εξάμηνο:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p class="simpara">
Μαθήματα κορμού
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; "><li class="listitem">
ΑΣΥΡΜΑΤΕΣ ΔΟΡΥΦΟΡΙΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ
</li><li class="listitem">
ΑΣΦΑΛΕΙΑ ΚΑΙ ΑΞΙΟΠΙΣΤΙΑ ΔΙΚΤΥΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
</li><li class="listitem">
ΔΙΚΤΥΑ ΚΙΝΗΤΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ
</li><li class="listitem">
ΟΠΤΙΚΑ ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ
</li></ul></div></li></ul></div></li></ul></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_emphasis_αναλυτικά_emphasis_2"></a><span class="emphasis"><em>Αναλυτικά</em></span></h4></div></div></div><p><span class="emphasis"><em>Σημείωση: Δείτε τη τελευταία γραμμή κάθε παραγράφου για
τις τεχνολογίες που χρησιμοποιούνται.</em></span></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_α_εξάμηνο_2"></a>Α' Εξάμηνο</h4></div></div></div><p><span class="navy">ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Βασικές αρχές προγραμματισμού σε γλώσσες τέταρτης γενιάς, Βασικές αρχές των αλγορίθμων,
</li><li class="listitem">
Η δομή της γλώσσας C, Δομή Προγράμματος στην C,
</li><li class="listitem">
Δηλώσεις Μεταβλητών, Βρόγχοι, Πίνακες, Συναρτήσεις, Δομές, Δείκτες Ακολουθίες Χαρακτήρων.
</li><li class="listitem">
Περιλαμβάνει την αλγοριθμική λύση προβλημάτων, τον προγραμματισμό υπολογιστών,
την επεξεργασία δεδομένων.
</li><li class="listitem">
Εισαγωγή στην <a class="link" href="#C" title="5.1. C">C</a>
</li></ul></div><p><span class="emphasis"><em>Για την εισαγωγή στις έννοιες του προγραμματισμού στην γλώσσα C μπορείτε
να χρησιμοποιήσετε το <a class="link" href="#Dev-cpp" title="Bloodshed Dev-C++">BloodShed <code class="literal">DevC++</code></a>.</em></span></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_β_εξάμηνο_2"></a>Β' Εξάμηνο</h4></div></div></div><p><span class="navy">ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ</span></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Εισαγωγή στις ασυμπτωτικές εκτιμήσεις, επιδόσεις χειρότερης και μέσης περιπτώσεως