Καλωσόρισες κι από μένα!
Ο φίλος sokoban4ever έκανε μια εξαιρετικά εύστοχη περίληψη, που ελπίζω να σε βοηθήσει. Να προσθέσω όμως πως αν δεν έχεις ούτε προηγούμενη εμπειρία με τον προγραμματισμό ούτε ακαδημαϊκή καθοδήγηση, τότε η C ενδέχεται να σε δυσκολέψει από ένα σημείο και μετά, διότι από τη φύση της προορίζεται για έμπειρους προγραμματιστές. Η εκμάθησή της με ακαδημαϊκή καθοδήγηση, ιδανικά μάλιστα σε ακαδημαϊκό περιβάλλον, συνιστάται ανεπιφύλακτα για την C. Είναι πολύ δύσκολο να τη μάθεις μόνος σου, ακόμα κι αν έχεις την τύχη να πέσεις σε καλό βιβλίο για βοήθημα στην αρχή (όπως π.χ. το εξαιρετικό από όλες τις απόψεις
C Programming, a Modern Approach, 2nd Edition )
Η Python ίσως είναι καλύτερη επιλογή για 1η γλώσσα, μιας και είναι αφενός πανίσχυρη κι αφετέρου πολύ πιο βατή για ξεκίνημα. Με τη βοήθεια ενός καλού βιβλίου μπορείς να γίνεις παραγωγικός πολύ γρήγορα, ακόμα και χωρίς άλλη καθοδήγηση (δυστυχώς δεν είμαι qualified να σου προτείνω κάποιο). Μια εξίσου καλή επιλογή, πάντα κατά την άποψή μου, είναι η Java. Ιδιαίτερα αν σκοπεύεις να ασχοληθείς επαγγελματικά, μιας και αποτελεί εδώ και αρκετά χρόνια την πιο περιζήτητη επαγγελματικά γλώσσα. Είναι στο επίπεδο της Python σε δυνατότητες & ευχρηστία, αλλά με πιο C oriented σύνταξη & προσέγγιση (και οι... ομοιότητες σταματάνε εκεί
). Η C# είναι επίσης μια πολύ καλή επιλογή, εγκλωβισμένη όμως στο .net framework της Microsoft (το Mono δεν θα το έλεγα λύση, περισσότερο πρόβλημα είναι παρά λύση
).
Η C++ που ξεκίνησες, είναι κι αυτή μια πανίσχυρη γλώσσα, για την οποία όμως ισχύουν περίπου ότι και για την C, αλλά σε υπερθετικό βαθμό, αφού πρόκειται για πραγματικό ωκεανό δυνατοτήτων και χαρακτηριστικών, συνήθως όμως άναρχα υλοποιημένο. Η C++ είναι ιδιαίτερη περίπτωση γλώσσας, γιατί προσπαθεί να παντρέψει 2 ολίγον... τσακωμένους κόσμους: την απόλυτη ελευθερία της C με την απόλυτη προσήλωση στους κανόνες της Java (αν και η C++ προϋπήρξε της Java, αλλά τότε ήταν υλοποιημένη αποκλειστικά στον preprocessor της C). Ακόμα και έμπειροι προγραμματιστές μπορεί να προγραμματίζουν σε C++ και 3 και 4 χρόνια και να συνεχίζουν να ανακαλύπτουν πράγματα που δεν ήξεραν, για τέτοιο πλήθος χαρακτηριστικών μιλάμε. Είσαι ελεύθερος να προγραμματίσεις σε όποιο στυλ θέλεις και να βρεις εγγενή υποστήριξη από τη γλώσσα, μόνο που δεν είμαι καθόλου σίγουρος αν αυτό είναι καλό για κάποιον που δεν έχει πρωτύτερη εμπειρία... αυτό ισχύει και για την Python και για την C#). Πάντως ένα πολύ συνηθισμένο "ολίσθημα" που κάνουν πολλοί προγραμματιστές της C++ είναι να προγραμματίζουν σαν να ήταν C, χάνοντας έτσι τη δυνατότητα (ή έστω καθυστερώντας πολύ να ανακαλύψουν) τις πρόσθετες ευκολίες που παρέχει ως γλώσσα. Και δυστυχώς σε αυτό το "ολίσθημα" προβαίνουν και πολλά βιβλία, tutorials, κλπ. Το κλασικό μότο για την C++ είναι το "
C++ is NOT C" και μάλιστα έχει πάψει εδώ και αρκετά χρόνια να αποτελεί πιστό υπερσύνολο της C (εννοώντας πως βάση των αναθεωρημένων προτύπων στις 2 γλώσσες, κυρίως όμως στη C++, δεν κάνει πλέον compile επιτυχώς & αδιακρίτως οποιονδήποτε κώδικα γραμμένο σε C).
Αν σκοπεύεις να ασχοληθείς επαγγελματικά, αργά ή γρήγορα θα συναντήσεις και τη C, ενδεχομένως και τη C++ H C εκτός από επίσης πανίσχυρη (ελέω δεικτών, αλλά όχι μόνο) είναι ιδανική για να πάρεις πραγματικά γερές βάσεις και να ξέρεις πως και γιατί λειτουργούν τα πράγματα behind the scenes, αλλά χωρίς καθοδήγηση κινδυνεύεις να απογοητευτείς γρήγορα και να τα παρατήσεις. Μια βασική της δυσκολία, όπως εύστοχα παρατήρησε και ο sokoban4ever, είναι η έλλειψη εγγενούς υποστήριξης για αντικειμενοστραφή προγραμματισμό (object oriented programming - OOP) ο οποίος χωρίς να είναι πανάκεια αποτελεί εντούτοις ούτε λίγο ούτε πολύ de-facto στον γενικό προγραμματισμό, εδώ και πολλά χρόνια.
Μπορείς φυσικά και με τη C να προγραμματίσεις με OOP, αλλά κάτι τέτοιο προϋποθέτει να έχεις πρώτα εντρυφήσει στη γλώσσα. Αντίθετα, στη Java για παράδειγμα, είναι το πρώτο πράγμα που μαθαίνεις ως φιλοσοφία προγραμματισμού, ενώ στις π.χ. Python, C#, C++ μπορείς να προγραμματίσεις και με τις 2 φιλοσοφίες (κάτι που για ξεκίνημα δεν το θεωρώ πολύ καλό).
Η δική μου πρόταση είναι να ξεκινήσεις με Java, που είναι ισχυρότατη, δημοφιλέστατη, περιζήτητη αλλά κυρίως στοχευμένη σε OOP. Όταν αποκτήσεις ευχέρεια (μετά δηλαδή από τουλάχιστον ένα 6-μηνο), μπορείς να πας σε C για να εμβαθύνεις. Στην αρχή θα έχεις μεγάλο πρόβλημα με την μη εγγενή υποστήριξη OOP, θα είσαι όμως σε θέση να εκτιμήσεις την δυνατότητα της απόλυτης ελευθερίας του να μπορείς να κάνεις ότι θέλεις, όπου θέλεις και όπως θέλεις.
Μετά από τουλάχιστον άλλο ένα 6μηνο με C, και με την εμπειρία σε Java, θα είσαι έτοιμος να υιοθετήσεις σε χρόνο ρεκόρ σχεδόν οποιαδήποτε άλλη γλώσσα (ακόμα και τις functional, που είναι σχεδόν μια ξεχωριστή κατηγορία από μόνες τους).
Αν μιλάγαμε για ακαδημαϊκό περιβάλλον, κι αν οι στόχοι σου είναι επαγγελματικοί, θα σου τις πρότεινα με ανάποδη σειρά: πρώτα C και μετά Java ή απευθείας C++.
Ελπίζω να μη σε έμπλεξα περισσότερο, καλή συνέχεια εύχομαι με όποια γλώσσα κι αν ξεκινήσεις και θα είναι πολύ καλό αν αντιμετωπίζεις τις γλώσσες ως ότι είναι πραγματικά, δηλαδή απλά εργαλεία, οπότε να κρατάς αν open-mind για όλες