2. Slack Channel
Εργαλείο για επικοινωνία ομάδων
Άμεση επαφή με τους βοηθούς
Αλληλοβοήθεια αλλά με μέτρο
Web, mobile
Windows, Linux, Mac OS clients
http://2019-c-hmu.slack.com/
5. Με λίγα λόγια
Πρώτο μέρος
Λειτουργικό σύστημα Linux
Ελεύθερο λογισμικό / Ανοικτός
κώδικας
Τρόποι εγκατάστασης και χρήσης
Εύρεση βοήθειας
Δεύτερο μέρος
Γράφοντας C σε Linux
Βασικά εργαλεία
Εισαγωγή στο τερματικό
Εκτός ύλης
6. Τι είναι το Linux;
Ένα λειτουργικό σύστημα
Είναι ελεύθερο λογισμικό
Νόμιμη δωρεάν χρήση
Πολύ ισχυρό
Τα γρανάζια του Internet
Αυτό που λέμε Cloud
Πίσω απο το Android
Τεχνικά είναι ένας πυρήνας
λειτουργικού
Βασισμένο στο UNIX
Από καφετιέρα μέχρι
υπερυπολογιστή
7. ΕΛΑΚ
Ανοικτό λογισμικό
Πρόσβαση στον πηγαίο κώδικα
Μοντέλο ανάπτυξης και χρήσης
Αρέσει στις μεγάλες εταιρείες
Ελεύθερο (free) λογισμικό free) λογισμικό
4 βασικές ελευθερίες
Κοινωνικό μοντέλο
Αρέσει στις κοινότητες
Τα δύο μοντέλα είναι
συμπληρωματικά
8. Οι 4 ελευθερίες του GNU
Ελευθερία να τρέχεις το πρόγραμμα
όπως και όπου εσύ θέλεις
Ελευθερία να μελετάς πως
λειτουργεί το πρόγραμμα και να το
προσαρμόζεις στις ανάγκες σου.
Πρόσβαση στον πηγαίο κώδικα
Ελευθερία να το μοιράζεσαι
αντίγραφα του με άλλους
Ελευθερία να μοιράζεσαι τις
αλλαγές που κάνεις με άλλους
Free as in Freedom, not free as in
beer
9. Διανομή Linux
Μια συλλογή προγραμμάτων
ένας πυρήνας Linux
μια μέθοδος εγκατάστασης
Υπάρχουν διανομές για κάθε χρήση
και υλικό υπολογιστή
Εμπορικές και κοινοτικές διανομές
Εύκολες ή δύσκολες
Διανομές ειδικού σκοπού
15. Τρόποι χρήσης και
εγκατάστασης
Με χρήση ενός Live USB
Βλέπεις αν βολεύει και αν τρέχει
Δεν πειράζει καθόλου τον
υπολογιστή
Με κανονική εγκατάσταση
Μαζί η χωρίς τα Windows
Επιλέγεις κατά την εκκίνηση
Με χρήση μιας εικονικής μηχανής
Virtualbox, VMWare
Μέσα απο τα Windows
MSYS2
Windows subsystem for linux
16. Ποια διανομή να διαλέξω;
Θέμα γούστου
Cinnamon, Mate => Linux Mint
Gnome => Debian, Ubuntu
KDE => Neon
Μακρυά απο
kali, gentoo,καθαρό Arch
Διαφωνείστε ελεύθερα
19. Γιατί Linux
Γιατί είναι ένα UNIX και είναι
γραμμένο κυρίως σε γλώσσα C.
Γιατί υπάρχουν πολλά εργαλεία και
βιβλιοθήκες στο φυσικό τους
περιβάλλον.
Γιατί μπορείς να δεις τα πάντα.
Γιατί δεν θέλει πολύ χώρο στο δίσκο.
Γιατί έχεις διαθέσιμες δεκάδες
άλλες γλώσσες προγραμματισμού
Γιατί έχει καλό περιβάλλον
τερματικού
20. Γιατί τερματικό
Είναι ένας εναλλακτικός τρόπος
χρήσης του υπολογιστή
Έτσι έχεις δυο εργαλεία να διαλέξεις
τον γραφικό GUI και το τερματικό
GUI
Ο προγραμματισμός δεν μπορεί να
γίνει μόνο με γραφικό τρόπο πάντα.
Το Mac OS (free) λογισμικό που είναι UNIX) έχει το
XCode, τα Windows έχουν το
Windows Subsystem for Linux
Don’t Panic
21. Κειμενογράφος η IDE
Το βασικό εργαλείο κάθε
προγραμματιστή.
Διάλεξε ένα και μάθε το καλά. Μάθε
να το δουλεύεις με το πληκτρολόγιο.
Μερικές επιλογές
vim, emacs, xed, gedit
Sublime Text, Atom, Visual Studio
Code
Codeblocks, anjuta, gnome builder,
kdevelop
QtDevelop, CLion
22. Βασικές λειτουργίες
Διόρθωση κώδικα
Χρωματισμός κώδικα
Αυτόματη μορφοποίηση
Κώδικά χωρίς καλή μορφοποίηση δεν είναι
κώδικας.
Ευκολία πλοήγησης μέσα στον κώδικα.
Ευκολία αλλαγών (free) λογισμικό refactoring)
Building System
Σύνδεση με εκσφαλματωτή (free) λογισμικό debugger)
Σύνδεση με σύστημα διαχείρισης
εκδόσεων κώδικα (free) λογισμικό git)
Σύνδεση με άλλα εργαλεία
Τεκμηρίωση συναρτήσεων
23. Επιλογή Compiler
gcc ο κλασσικός
clang η νέα δύναμη
GNU COMPILER CORE
AST transformation machine
C GoFortranObj. CC++ D
Backed for many processors
arm, i386, ia64, risc, avr, m68k, rs68000, vax, ...
25. Makefile
Οδηγίες για το χτίσιμο ενός έργου
make app
# Specify compiler
CC=gcc
# Specify linker
LINK=gcc
.PHONY : all
all : app
# Link the object files into a binary
app : main.o
$(free) λογισμικό LINK) -o app main.o -lm
# Compile the source files into object files
main.o : main.cpp
$(free) λογισμικό CC) -c main.cpp -o main.o
# Clean target
.PHONY : clean
clean :
rm main.o app
26. CMake
Φτιάχνει ένα Makefile
επίσης άλλα Build system
Windows Make
CodeBlocks
Ninja
Ο καινούργιος τρόπος
mkdir build && cd build
cmake ... && make
cmake_minimum_required(free) λογισμικό VERSION 2.8.9)
project (free) λογισμικό hello)
add_executable(free) λογισμικό hello hello.c)