Το σημερινό άρθρο, αφορά τους προγραμματιστές οι οποίοι είτε είναι επαγγελματίες, είτε λόγο αλλαγής προσανατολισμού στον τομέα της πληροφορικής, είτε είναι φοιτητές πληροφορικής, είτε και από περιέργεια χρειάζονται μια διανομή Linux για προγραμματισμό και ανάπτυξη εφαρμογών (PC – Mobile – Web) και έχουν ελάχιστη εμπειρία ή είναι εντελώς αρχάριοι στο Linux.
Όσοι γράφουν κώδικα, είτε επαγγελματικά, είτε ερασιτεχνικά, είτε είναι φοιτητές, το μόνο σίγουρο είναι ότι κάποια στιγμή (έστω και ελάχιστα ίσως) θα χρειαστούν μια διανομή Linux για προγραμματισμό. Αυτό όμως δεν σημαίνει ότι οφείλουν να γνωρίζουν την χρήση του λειτουργικού μιας και όποιο και αν είναι αυτό το λειτουργικό, αποτελεί απλά την πλατφόρμα πάνω στην οποία θα εγκαταστήσουν τα εργαλεία προγραμματισμού.
Επομένως, είναι εξίσου σημαντικό η πλατφόρμα πάνω στην οποία θα ξεκινήσουν την συγγραφή κώδικα
- να προσφέρει τις τελευταίες εκδόσεις των εργαλείων που θα χρησιμοποιήσουν
- να προσφέρει ευκολίες στην εγκατάστασή τους
- και τέλος να μην μπλέκεται το λειτουργικό στα πόδια τους αλλά και στα εργαλεία τους.
Όλες σχεδόν οι διανομές Linux, προσφέρονται για χρήση ως διανομή για προγραμματιστές αλλά στην περίπτωση των χρηστών αυτών, η διανομή συνήθως που επιλέγουν είναι αυτή που χρησιμοποιούν και οι άλλοι στον περίγυρό τους (συνάδελφοι, συμφοιτητές, φίλοι κλπ).
Με βάση τα παραπάνω κριτήρια είναι πολύ πιθανόν, να τους έχουν προτείνει μια διανομή Linux βασισμένη στο Debian ήτοι Ubuntu ή Linux Mint.

Επιλογή διανομής για προγραμματισμό
Το πρώτο πράγμα που πρέπει να φύγει από την μέση, είναι η επιλογή της διανομής Linux που θα χρησιμοποιήσεις για κώδικα οπότε πολύ πιθανόν, αυτή την στιγμή, να χρησιμοποιείς Windows και να θες κάτι που μοιάζει με Windows.
Σταματάς εδώ και διαβάζεις το link που παρέθεσα στην προηγούμενη γραμμή και έπειτα επιστρέφεις εδώ. Μια γρήγορη και καλή αρχή με τον κόσμο του Linux, είναι να ξεκινήσεις με Ubuntu.
Πάμε λοιπόν βήμα βήμα, θεωρώντας ότι ξέρεις 2-3 πράγματα περί εγκατάστασης λειτουργικών (θα τα έχεις κάνει ως φοιτητής… ελπίζω):
- Πας στην επίσημη σελίδα του Ubuntu και κατεβάζεις την τελευταία έκδοση Ubuntu που έχει την ένδειξη LTS στο όνομά του: https://www.ubuntu.com/desktop/developers
- Αφού κατέβει το λειτουργικό το οποίο θα έχει κατάληξη .iso κατεβάζεις στον υπολογιστή σου και το πρόγραμμα Etcher για να γράψεις αυτό το .iso σε ένα USB στικάκι. Οδηγίες : Εύκολη εγγραφή ISO και IMG αρχείων σε USB – SD κάρτες με το Etcher
- Αφού γράψεις το .iso στο USB, κλείνεις τον υπολογιστή σου και τον ξεκινάς από το USB (συνήθως είναι το πλήκτρο F12 Boot Options). Μόλις ξεκινήσει να φορτώνει το USB θα δεις σε λίγο ότι έχεις μπει στο desktop περιβάλλον του Ubuntu.
- Τώρα πρέπει να αποφασίσεις αν θέλεις να κάνεις dual-boot (να κρατήσεις και τα Windows) η να τα διαγράψεις εντελώς. Αυτό θα στο ρωτήσει μόλις κάνεις διπλό κλικ στην εγκατάσταση του Ubuntu. Αν ακολουθήσεις τις οδηγίες που θα σου εμφανίσει σε περίπου 10 λεπτά (ανάλογα με την σύνδεση internet) θα έχεις ολοκληρώσει την εγκατάσταση του Ubuntu. Οδηγίες: Video: Οδηγός εγκατάστασης dualboot Windows/Ubuntu (Ελληνικά)
Μόλις έχεις τελειώσει την εγκατάσταση και είσαι στο desktop περιβάλλον του Ubuntu. Αφού κάνεις εγκατάσταση όλες τις διαθέσιμες ενημερώσεις, ήρθε η ώρα να εγκαταστήσεις τα εργαλεία για την γλώσσα προγραμματισμού στην οποία θα γράψεις κώδικα.
Εγκατάσταση εργαλείων και βιβλιοθηκών για γλώσσες προγραμματισμού
Αν είσαι αρχάριος και δεν ξέρεις με ποια γλώσσα προγραμματισμού να ξεκινήσεις τότε διάβασε τον οδηγό : Τι γλώσσα προγραμματισμού να μάθω; το οποίο είναι ένας μικρός μπούσουλας για να ξεκινήσεις.
Από εδώ και πέρα, θα πρέπει λογικά να ξέρεις με ποια γλώσσα προγραμματισμού θα ασχοληθείς. Αυτό μπορεί να είναι από μια έως όσες θέλεις ή ξέρεις (αν είσαι φοιτητής ή επαγγελματίας).
Ανάλογα και με την περίπτωση, η εγκατάσταση των εργαλείων προγραμματισμού, γίνεται είτε από ένα Κέντρο Λογισμικού (στο Ubuntu ονομάζεται Λογισμικό) είτε από το τερματικό.
Λογισμικό Ubuntu
Στην αριστερή/πλαϊνή μπάρα, όπου υπάρχουν κάποιες συντομεύσεις εφαρμογών, θα βρεις και το Λογισμικό

Περιηγήσου λίγο, στις διαθέσιμες εφαρμογές και χρησιμοποίησε την αναζήτηση ξεκινώντας απλά να πληκτρολογείς κάποιο όνομα μιας εφαρμογής που σου έρχεται στο μυαλό.
Τερματικό
Στο Windows, πολύ πιθανόν να το έχεις ακούσει ως κονσόλα εντολών ενώ στο MacOS και το Linux ως τερματικό. Η ύπαρξη του τερματικού, ακόμα και στις μέρες μας, θα δεις με την πάροδο του χρόνου ότι σε αρκετές περιπτώσεις είναι ένα χρήσιμο και δυνατό εργαλείο.
Άνοιξε ένα τερματικό κάνοντας κλικ στο μενού «Δραστηριότητες» στην οθόνη, επάνω αριστερά και κάνε αναζήτηση τον όρο terminal
και θα εμφανιστεί το εικονίδιο τερματικού.
Μόλις το ανοίξεις, γράψε το παρακάτω, όπως το βλέπεις και πάτα Enter
:
echo "Γεια σου" $USER
και λογικά θα δεις κάτι παρόμοιο με αυτό:

Εγκατάσταση IDE
Ανάλογα με το τι σκοπεύεις να αναπτύξεις, πολύ πιθανόν να χρειαστείς και κάποιο περιβάλλον IDE.
Σε περίπτωση που θες να αναπτύξεις εφαρμογές για Android συσκευές, τότε θα χρειαστείς το Android Studio. Άνοιξε το Λογισμικό Ubuntu
που είδες πριν και κάνε αναζήτηση τον όρο Android Studio
. Επέλεξε το και κάνε κλικ στο κουμπί εγκατάσταση.

Αν χρειάζεσαι κάποιο IDE για Python, κάνε αναζήτηση τον όρο Pycharm
και επέλεξε το Community Edition για να το κάνεις εγκατάσταση.

Αν χρειάζεσαι κάποιο IDE για Go – Golang, κάνε αναζήτηση τον όρο Go
για να κάνεις εγκατάσταση πρώτα τα πακέτα της Go και έπειτα κάνε αναζήτηση για Visual Studio Code και επέλεξε το για να το κάνεις εγκατάσταση. Σχετικά με την Go διάβασε και το άρθρο «Εισαγωγή στον προγραμματισμό με Golang«

Αν χρειάζεσαι κάποιο IDE για Web, (πχ javascript) κάνε αναζήτηση τον όρο WebPycharm
και επέλεξε το Community Edition για να το κάνεις εγκατάσταση. Ενώ αν χρειάζεσαι κάποιο περιβάλλον για Java, κάνε αναζήτηση τον όρο IDEA community

Αν χρειάζεσαι κάποιο περιβάλλον γενικού σκοπού που υποστηρίζει μια πληθώρα από γλώσσες προγραμματισμού, δες τα Sublime, Visual Studio Code, Atom κλπ.
Όπως κατάλαβες μπορείς να κάνεις το ίδιο, για μια πληθώρα από IDEs ανάλογα με τις ανάγκες σου:
- arduino: The Arduino Software Distribution
- clion: CLion integrated C/C++ IDE
- datagrip: DataGrip SQL and databases IDE
- dbeaver: Free universal database manager and SQL client
- eclipse: Eclipse Java IDE
- eclipse-cpp: Eclipse C/C++ IDE
- eclipse-javascript: Eclipse IDE for JavaScript and Web Developers
- eclipse-jee: Eclipse JEE IDE
- eclipse-php: Eclipse PHP IDE
- goland: The Drive to Develop
- lighttable: LightTable code editor
- netbeans: Netbeans IDE
- phpstorm: PHP and web development IDE
- rider: The JetBrains cross-platform .NET IDE
- rubymine: Ruby on Rails IDE
- spring-tools-suite: Spring Tools Suite IDE
- και άλλα πολλά….
Γλώσσες προγραμματισμού-Εγκατάσταση
Όποια γλώσσα προγραμματισμού και αν σε ενδιαφέρει, θα την βρεις διαθέσιμη για εγκατάσταση στο Ubuntu. Αν δεν σε κάλυψαν τα προηγούμενα IDE, σχετικά με την γλώσσα προγραμματισμού με την οποία σκοπεύεις να ασχοληθείς, μπορείς να επισκεφτείς την επίσημη ιστοσελίδα της γλώσσας που σε ενδιαφέρει και να δεις ποια είναι τα προτεινόμενα από αυτούς περιβάλλοντα συγγραφής κώδικα.
Εκεί συνήθως, θα δεις και λεπτομέρειες σχετικά με το πως μπορείς να εγκαταστήσεις τα απαραίτητα εργαλεία ανοίγοντας απλά ένα τερματικό
και κάνοντας αντιγραφή επικόλληση τις εντολές που σου δίνουν.
Τέλος, μπορείς να ρίξεις και μια ματιά στην σελίδα https://snapcraft.io/search?category=developers, να βρεις αυτό που ψάχνεις και έπειτα να κάνεις κλικ στο κουμπί Install για να ανοίξει αυτόματα το Λογισμικό
για εγκατάσταση ή να κάνεις αντιγραφή-επικόλληση την εντολή που σου δίνει για να το κάνεις εγκατάσταση από το τερματικό

Αν χρειαστώ βοήθεια για προγραμματισμό σε Linux;
Το μόνο σίγουρο είναι ότι κάποια στιγμή θα έχεις κάποια απορία, η θα δυσκολευτείς κάπου. Μπορείς να γίνεις μέλος στις παρακάτω κοινότητες και να ζητήσεις βοήθεια:
- Ελληνική κοινότητα Ubuntu : Forum — Facebook Group — Telegram — Σελίδα Υποστήριξης
- Κοινότητα Προγραμματιστών : Προγραμματιστών και Designer — Python — WordPress
Επίλογος
Φυσικά, σε ένα άρθρο μόνο είναι σχεδόν αδύνατο να καλύψουμε όλες τις παραμέτρους που μπορούν να κάνουν της ζωή ενός προγραμματιστή εύκολη. Σε γενικές γραμμές, ελπίζω να έδωσα μια ιδέα για το πως μπορεί ένας προγραμματιστής (αρχάριος, pro, ή φοιτητής) που χρειάζεται μια διανομή Linux για να δουλέψει, να ξεκινήσει γρήγορα και αποτελεσματικά, χωρίς φασαρία και φανφάρες.
Πολύ όμορφο άρθρο :-)
Nασε καλά φίλε μου
Με όλες τις διανομές μπορείς να προγραμματίσεις αλλά δεν υπάρχει διανομή για προγραμματιστές, που θα έχει επιλογές web design, android κτλ και θα κάνει εγκατάσταση atom, npm, node, android studio, πρόσφατες εκδόσεις και ΡΥΘΜΙΣΜΕΝΕΣ, πχ με το qtcreator δεν γίνονται εγκατάσταση τα πακέτα για qml, το eclipse θέλει ρύθμιση για κάθε γλώσσα προγραμματισμού και ξανά ρύθμιση για να τρέξεις το πρόγραμμα, το Atom θέλει πολλά plugin για zen coding(Emmet), autocomplete και live server.
Τελικά λίγα ide και editor λειτουργούν μόλις τα εγκαταστήσεις, πχ code blocks για c/c++, brackets με live preview για html/CSS/JavaScript (αν και θέλει plugins).
Οπότε υπάρχει κενό στο χώρο «διανομή για προγραμματιστές», κάποιοι θα πρέπει να βρουν το καλύτερο ide-editor για κάθε γλώσσα, να προσθέσουν plugin, ρυθμίσεις, libraries, αρχεία dev και να φτιάξουν πακέτα.
Μπράβο salih, πολύ καλό το άρθρο. Όσοι ενδιαφέρονται για περισσότερες πληροφορίες θα το ψάξουν κ σίγουρα θα βρούνε πάρα πολλές πληροφορίες. Το ίντερνετ βρίθει από σχετικές με συγγραφή κώδικα ιστοσελίδες κ tutorials, την επιλογή ide. Τα εργαλεία που υπάρχουν για linux είναι πραγματικά απίστευτα.
Ακριβώς ! Εδώ προσπάθησα να παρουσιάσω μια ανώδυνη αρχή για να ξεκινήσει κάποιος άμεσα. Έπειτα αν το ενδιαφέρει θα ψαχτει όπως λες για περισσότερα !
Τρία τυχαία παραδείγματα διανομών και ούτε ένα με rpm, ρατσισμός :p
Σοβαρά τώρα, μπράβο για την δουλειά που κάνετε, καλή δύναμη!
ΧΑΧΑΧΑΧΑΧΑΧΑ !
Nασε καλά φίλε μου! Ευχαριστούμε
Απλο αρθρο καλα γραμμενο αλλα μου φαινεται σαν διαφημηση για το Ubuntu και οχι ακριβως οτι λεει ο τιτλος.
Οι αλλες διανομες; Μπαινουν τιμωρια; Γιατι; Τι εκαναν;
Και καλα το Debian δεν τηρει το κριτηριο του «latest and greatest» γιατι ειναι σταθερο με λιγο παλιοτερα πακετα.
Αλλα το Fedora? το RHEL? Το SUSE? ειναι απιθανο να κανει καποιος ευκολα προγραμματισμο με αυτες τις διανομες;
Συγνωμη για τις αντιρρησεις μου αλλα βγαζει λιγο ματι.
Dimitrios Anogiatis Το άρθρο προορίζεται για τον Windows Dev που ίσως κάποια στιγμή να χρειαστεί για κάποιο διάστημα Linux οπότε είναι πολύ πιο πιθανό να χρησιμοποιηθεί Ubuntu από οποιαδήποτε άλλη διανομή.
Τι άρθρο εστιάζει στο πρακτικό κομμάτι και αποφεύγει να ζαλησει τον χρήστη Windows με πράγματα που δεν τον αφορούν επί του παρόντος (διανομές).
Τέλος είναι μόνο 1 άρθρο από τα 700+ άρθρα. Αν το. κερδίσω το. χρήστη και πει » όπα εδώ με βοήθησε αυτο κάτσε να δω και τα άλλα άρθρα» τότε θα δει ότι ο κόσμος του Linux (η φράση δεν χρησιμοποιήθηκε τυχαία στο άρθρο) δεν είναι απλά μια διανομή.
Η ενσταση που εχω ειναι οτι ναι μεν ο Windows Dev βλεπει οτι ο κοσμος του Linux με κανει να νιωθω ευπροσδεκτο και εχει ευκολες λυσεις και θελει να με βοηθησει, αλλα προσωπικα δεν βλεπω εκπροσωπηση. Ο Windows Developer θα δει μονο το Ubuntu και θα πει.. δεν χρειαζομαιν να ψαξω, βρηκα την εναλλακτικη μου για τα Windows χωρις να ταλαιπωρηθω… υπεροχα εδω θα κατσω. Δεν χρειαζομαι να ξοδεψω χρονο να ψαχνομαι για το τι χρειαζομαι ειναι ολα εδω.
Για τον Windows developer ολα ειναι μια χαρα. Αλλα τι μαθαινει απο τον κοσμο του GNU/Linux? Ubuntu και ξερο ψωμι. Αλλα οπως το γνωστο «Ελλαδα δεν ειναι μονο η Αθηνα» «GNU/Linux δεν ειναι μονο το Ubuntu».
Δημήτρη εκτιμάς ότι ένας νέος θα προσαρμοστεί πιο εύκολα σε άλλες διανομές; Το Ubuntu προσπάθησε να γεφυρώσει το χάσμα μεταξύ windows και Linux. Για αυτό και μόνο κερδίζει έδαφος ως η πιο φιλική για τον windows developer.
Βασιλη, θα διαφωνησω λιγακι σε αυτο το σημειο. Για μενα που ναι μεν κανω και προγραμματισμο αλλα και εχω δει πολλες διανομες, το Ubuntu δεν προσφερει κατι το πολυ διαφορετικο απο οτι ας πουμε το SUSE ή το Fedora. Σε σημεια ισως που πολλοι χρηστες εχουν θεματακια οπως οι drivers και το ευκολο mounting εξωτερικων μεσων αποθηκευσης, ναι εκει θα το δωσω το σημειο της ευχρηστιας στο Ubuntu.
Παρολα αυτα μηλαμε για προγραμματιστες οχι για απλους χρηστες. Τουλαχιστον για μενα (και δεν πιστευω οτι ειμαι τοσο εκτος πραγματικοτητας) ενας προγραμματιστης που εχει κανει προγραμματισμο σε Windows ξερει οτι σε καποια φαση για να μεταπηδησει σε GNU/Linux θα πρεπει να μαθει καποια καινουργια πραγματα.
Και για να καταλαβει ολο το καινουργιο workflow λογικα θα πρεπει να επενδησει καποιο κομματι του χρονου του (εντως ή εκτως δουλειας) για να το κατανοησει και να το παραμετροποιησει στα δικα του μετρα.
Το Ubuntu εχει αυτη την στηγμη σε σημεια καλητερο workflow απο το Debian ή το Archlinux ή ακομα και το CentOS πχ. Αλλα το κανει κρυβοντας πολλα απο τα πραγματα που στην ουσια ενας προγραμματιστης θα πρεπει να ξερει. Στην ουσια μια iphone-οποιηση του λειτουργικου βολευει τους χρηστες/προγραμματιστες που θελουν απλα να αλλαξουν περιβαλλον χωρις να ξοδευψουν χρονο να το μαθουν. Ακουραστα… αβιαστα. Αλλα δεν μαθαινεις τιποτα απο το καινουργιο συστημα ετσι
Και δεν μηλαω για καποιον προγραμματιστη που δουλευει σε απλο HTML / CSS / JS / PHP stack. Εκει το μονο που χρειαζεσαι ειναι ενας Editor (εστω δυο) και προχωραει η ζωη χωρις κολληματα.
Συν του οτι τα περισσοτερα blogs και sites που αναφερονται στο GNU/Linux αναφερονται μονο στο Ubuntu γιατι θεωρουν οτι ειναι το ποιο ευχρηστο για τους αυτους που ξεκινουν την περιηγηση τους στον καινουργιο αυτο κοσμο. Ειναι μεν το διαφημηζομενο πρωτο βημα σε αυτον τον μεγαλυτερο κοσμο απο τα Windows αλλα αν το πρωτο βημα ειναι το πιο ευκολο… γιατι ο χρηστης/προγραμματιστης να παει αλλου;
Και εδω ξεκινανε οι βασικες μου ερωτησεις.
– Οταν εχεις εναν καινουργιο χρηστη και τον ξεκινας με το Ubuntu… πως περιμενεις να τον κανεις να νιωσει οτι οι υπολοιπες διανομες ειναι σχετικα βατες και χρησιμες;
– Πως θα μπορεσουμε να πεισουμε τους καινουργιους χρηστες οποιουδηποτε επιπεδου χρησης, οτι το τερματικο δεν ειναι και τοσο τραγικα δυσκολο οσο τους φαινετε οταν οτι διαφημιζουμε εχει σχεση να κανει με το “ευκολο” Ubuntu και το γραφικο του περιβαλλον;
– Οι υπολοιπες διανομες πρεπει δηλαδη για να γινουν καλες επιλογες για τους καινουργιους χρηστες να iphone-οποιηθουνε;
– Πως σαν κατοικοι και γνωστες του καινουργιου κοσμου της Πληροφορικης, εμεις μπορουμε να μηλαμε για πολυφωνια… οταν το μονο που διαφημηζουμε ειναι το… Ubuntu; Πως τις βοηθαμε οταν τις περιθωριοποιουμε σαν δυσχρηστες;
– Γιατι μετα ο προγραμματιστης να φτιαξει και να μοιραστει κωδικα με τις αλλες διανομες οταν θα στηρηξει το συστημα του στο ποιο διασημο GNU/Linux distro και ετσι θα εχει την μεγαλυτερη προβολη και τους περισσοτερους χρηστες του συστηματος του;
Sorry για την λογοδιαρρεια αλλα το θεμα αυτο το επεξεργαζομαι στο μυαλο μου εδω και κατι μηνες και ισως καπου να ψηλοξεφυγα.