SlideShare a Scribd company logo
Δομημένος Προγραμματισμός
Μια μικρή εισαγωγή στο Linux
Τσαγκατάκης Γιάννης
Slack Channel
Εργαλείο για επικοινωνία ομάδων
Άμεση επαφή με τους βοηθούς
Αλληλοβοήθεια αλλά με μέτρο
Web, mobile
Windows, Linux, Mac OS clients
http://2019-c-hmu.slack.com/
Προειδοποίηση
Προειδοποίηση
Με λίγα λόγια
Πρώτο μέρος
Λειτουργικό σύστημα Linux
Ελεύθερο λογισμικό / Ανοικτός
κώδικας
Τρόποι εγκατάστασης και χρήσης
Εύρεση βοήθειας
Δεύτερο μέρος
Γράφοντας C σε Linux
Βασικά εργαλεία
Εισαγωγή στο τερματικό
Εκτός ύλης
Τι είναι το Linux;
Ένα λειτουργικό σύστημα
Είναι ελεύθερο λογισμικό
Νόμιμη δωρεάν χρήση
Πολύ ισχυρό
Τα γρανάζια του Internet
Αυτό που λέμε Cloud
Πίσω απο το Android
Τεχνικά είναι ένας πυρήνας
λειτουργικού
Βασισμένο στο UNIX
Από καφετιέρα μέχρι
υπερυπολογιστή
ΕΛΑΚ
Ανοικτό λογισμικό
Πρόσβαση στον πηγαίο κώδικα
Μοντέλο ανάπτυξης και χρήσης
Αρέσει στις μεγάλες εταιρείες
Ελεύθερο (free) λογισμικό free) λογισμικό
4 βασικές ελευθερίες
Κοινωνικό μοντέλο
Αρέσει στις κοινότητες
Τα δύο μοντέλα είναι
συμπληρωματικά
Οι 4 ελευθερίες του GNU
Ελευθερία να τρέχεις το πρόγραμμα
όπως και όπου εσύ θέλεις
Ελευθερία να μελετάς πως
λειτουργεί το πρόγραμμα και να το
προσαρμόζεις στις ανάγκες σου.
Πρόσβαση στον πηγαίο κώδικα
Ελευθερία να το μοιράζεσαι
αντίγραφα του με άλλους
Ελευθερία να μοιράζεσαι τις
αλλαγές που κάνεις με άλλους
Free as in Freedom, not free as in
beer
Διανομή Linux
Μια συλλογή προγραμμάτων
ένας πυρήνας Linux
μια μέθοδος εγκατάστασης
Υπάρχουν διανομές για κάθε χρήση
και υλικό υπολογιστή
Εμπορικές και κοινοτικές διανομές
Εύκολες ή δύσκολες
Διανομές ειδικού σκοπού
Διανομή Linux
Γραφικά περιβάλλοντα
Gnome
Γραφικά περιβάλλοντα
KDE
Γραφικά περιβάλλοντα
Mate
Γραφικά περιβάλλοντα
Cinnamon
Τρόποι χρήσης και
εγκατάστασης
Με χρήση ενός Live USB
Βλέπεις αν βολεύει και αν τρέχει
Δεν πειράζει καθόλου τον
υπολογιστή
Με κανονική εγκατάσταση
Μαζί η χωρίς τα Windows
Επιλέγεις κατά την εκκίνηση
Με χρήση μιας εικονικής μηχανής
Virtualbox, VMWare
Μέσα απο τα Windows
MSYS2
Windows subsystem for linux
Ποια διανομή να διαλέξω;
Θέμα γούστου
Cinnamon, Mate => Linux Mint
Gnome => Debian, Ubuntu
KDE => Neon
Μακρυά απο
kali, gentoo,καθαρό Arch
Διαφωνείστε ελεύθερα
Βοήθεια
Στις κοινότητες κάθε διανομής
https://linux-user.gr/
Δομημένος Προγραμματισμός
Linux και προγραμματισμός σε C
Τσαγκατάκης Γιάννης
Γιατί Linux
Γιατί είναι ένα UNIX και είναι
γραμμένο κυρίως σε γλώσσα C.
Γιατί υπάρχουν πολλά εργαλεία και
βιβλιοθήκες στο φυσικό τους
περιβάλλον.
Γιατί μπορείς να δεις τα πάντα.
Γιατί δεν θέλει πολύ χώρο στο δίσκο.
Γιατί έχεις διαθέσιμες δεκάδες
άλλες γλώσσες προγραμματισμού
Γιατί έχει καλό περιβάλλον
τερματικού
Γιατί τερματικό
Είναι ένας εναλλακτικός τρόπος
χρήσης του υπολογιστή
Έτσι έχεις δυο εργαλεία να διαλέξεις
τον γραφικό GUI και το τερματικό
GUI
Ο προγραμματισμός δεν μπορεί να
γίνει μόνο με γραφικό τρόπο πάντα.
Το Mac OS (free) λογισμικό που είναι UNIX) έχει το
XCode, τα Windows έχουν το
Windows Subsystem for Linux
Don’t Panic
Κειμενογράφος η IDE
Το βασικό εργαλείο κάθε
προγραμματιστή.
Διάλεξε ένα και μάθε το καλά. Μάθε
να το δουλεύεις με το πληκτρολόγιο.
Μερικές επιλογές
vim, emacs, xed, gedit
Sublime Text, Atom, Visual Studio
Code
Codeblocks, anjuta, gnome builder,
kdevelop
QtDevelop, CLion
Βασικές λειτουργίες
Διόρθωση κώδικα
Χρωματισμός κώδικα
Αυτόματη μορφοποίηση
Κώδικά χωρίς καλή μορφοποίηση δεν είναι
κώδικας.
Ευκολία πλοήγησης μέσα στον κώδικα.
Ευκολία αλλαγών (free) λογισμικό refactoring)
Building System
Σύνδεση με εκσφαλματωτή (free) λογισμικό debugger)
Σύνδεση με σύστημα διαχείρισης
εκδόσεων κώδικα (free) λογισμικό git)
Σύνδεση με άλλα εργαλεία
Τεκμηρίωση συναρτήσεων
Επιλογή 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, ...
Βασική χρήση
gcc hello.c
./a.out
g++ hello.c
gcc -o hello hello.c
./hello
gcc -Wall -Wextra -Werror hello.c
gcc -o hello -Wall -g hello.c
gcc -o hello -Wall -O2 hello.c
gcc -o hello -Wall -g hello.c -lm
gcc -c hello.c
gcc -o hello hello.o
make hello
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
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)

More Related Content

PPTX
Ergasia(power gia point 2007) LINUX
PPT
To Linux Kai Ta Χαρακτηριστικα Του
PDF
DH2 EN1 new.pdf
DOCX
Η γλώσσα προγραμματισμού C.
PDF
00 - Τι είναι Linux
PDF
Filoi Logismikou Anoiktou Kwdika
 
PPTX
κεφ2 λογισμικό
PPTX
Presentation 2
Ergasia(power gia point 2007) LINUX
To Linux Kai Ta Χαρακτηριστικα Του
DH2 EN1 new.pdf
Η γλώσσα προγραμματισμού C.
00 - Τι είναι Linux
Filoi Logismikou Anoiktou Kwdika
 
κεφ2 λογισμικό
Presentation 2

Similar to Linux and C (20)

PPTX
Software Libre Society - GNU/Linux Installfest Presentation - 2/2
PDF
Ubuntu (Εκπαιδευτικός Οδηγός)
PPTX
PPT
Dennis_Ritchie
PPTX
PPTX
PDF
Αφίσα για το Ελεύθερο Λογισμικό
PPTX
ελεύθερο λογισμικό
PPT
Linux Vs Windows
PPTX
PPTX
PDF
C_24112023.pdf
DOCX
Η γλώσσα προγραμματισμού C++.
PPT
ελεύθερο λογισμικό 1
PPTX
Unix Basic Commands (Βασιkές εντολές του UNIX)
PDF
Unix Basic commands (Βασικές εντολές του λειτουργικού συστήματος unix)
PDF
Ιστορική Αναδρομή στα Λειτουργικά Συστήματα – ο πυρήνας, ο φλοιός.
PDF
Το Ελεύθερο Λογισμικό στην Εκπαίδευση
PDF
Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα στην Εκπαιδευση
PPTX
Εφαρμογές Πληροφορικής - Κεφάλαιο 2: Λογισμικό
Software Libre Society - GNU/Linux Installfest Presentation - 2/2
Ubuntu (Εκπαιδευτικός Οδηγός)
Dennis_Ritchie
Αφίσα για το Ελεύθερο Λογισμικό
ελεύθερο λογισμικό
Linux Vs Windows
C_24112023.pdf
Η γλώσσα προγραμματισμού C++.
ελεύθερο λογισμικό 1
Unix Basic Commands (Βασιkές εντολές του UNIX)
Unix Basic commands (Βασικές εντολές του λειτουργικού συστήματος unix)
Ιστορική Αναδρομή στα Λειτουργικά Συστήματα – ο πυρήνας, ο φλοιός.
Το Ελεύθερο Λογισμικό στην Εκπαίδευση
Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα στην Εκπαιδευση
Εφαρμογές Πληροφορικής - Κεφάλαιο 2: Λογισμικό
Ad

More from jtsagata (17)

PDF
Advanced Notes on Pointers
PDF
C locales
PDF
GPGPU Computation
PDF
Eισαγωγή στο TDD
PDF
Παιγνίδια με Πίνακες και Δείκτες
PDF
Git intro
PDF
Greek utf8
PDF
Function pointers in C
PDF
Why computers can' compute
PDF
Τι είναι υπολογισμός
PDF
IEEE 754 Floating point
PDF
Η Τέχνη του TeX/LaTeX
ODP
Unikernels
ODP
FPGA on the Cloud
PDF
Evolutionary keyboard Layout
ODP
Omilia
ODP
Το εργαλείο
Advanced Notes on Pointers
C locales
GPGPU Computation
Eισαγωγή στο TDD
Παιγνίδια με Πίνακες και Δείκτες
Git intro
Greek utf8
Function pointers in C
Why computers can' compute
Τι είναι υπολογισμός
IEEE 754 Floating point
Η Τέχνη του TeX/LaTeX
Unikernels
FPGA on the Cloud
Evolutionary keyboard Layout
Omilia
Το εργαλείο
Ad

Linux and C

  • 1. Δομημένος Προγραμματισμός Μια μικρή εισαγωγή στο Linux Τσαγκατάκης Γιάννης
  • 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 Διαφωνείστε ελεύθερα
  • 17. Βοήθεια Στις κοινότητες κάθε διανομής https://linux-user.gr/
  • 18. Δομημένος Προγραμματισμός Linux και προγραμματισμός σε C Τσαγκατάκης Γιάννης
  • 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, ...
  • 24. Βασική χρήση gcc hello.c ./a.out g++ hello.c gcc -o hello hello.c ./hello gcc -Wall -Wextra -Werror hello.c gcc -o hello -Wall -g hello.c gcc -o hello -Wall -O2 hello.c gcc -o hello -Wall -g hello.c -lm gcc -c hello.c gcc -o hello hello.o make hello
  • 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)