Προγραμματισμός με Python.

...περί ασύγχρονων μαθημάτων

Re: Προγραμματισμός με Python.

Δημοσίευσηαπό lucinos » 05 Δεκ 2011, 12:34

Η δική μου άποψη για την σειρά που είναι καλύτερα να ακολουθήσει κάποιος που είναι ανίδεος από προγραμματισμό είναι η ακόλουθη:

πρώτα καλό είναι κάποιος να μάθει κάποια βασικά πράγματα για την bash. Όχι να εμβαθύνει· μόνο τα βασικά. Η προσέγγιση που εγώ βλέπω προσφορότερη την έχω δείξει προσωπικά σε αυτό το φόρουμ.

μετά κατά την γνώμη μου είναι καλή ιδέα να δει πρώτα μια διερμηνευόμενη γλώσσα. Προσωπικά προτείνω Python, κάποιοι άλλοι προτείνουν Ruby. Ξανά δεν είναι απαραίτητη η εμβάθυνση, περισσότερο να μπει κάποιος εύκολα στο κλήμα τού προγραμματισμού. Η δική μου προσέγγιση είναι πιο κοντά στο http://inventwithpython.com/

Μέχρι εδώ είναι ένα είδος εισαγωγής στον προγραμματισμό όπου μπαίνεις πρώτα στα ρηχά.

Μετά καλό είναι να πάει κατευθείαν σε αυτό που τον ενδιαφέρει περισσότερο, πχ αν ενδιαφέρεται για C να μάθει C, αν ενδιαφέρεται για java να μάθει java, αν ενδιαφέρεται να μάθει περισσότερη Python να μάθει περισσότερη Python κοκ αλλά αν ακόμα δεν έχει κατεύθυνση θα πρότεινα κάτι που φαίνεται δεν το προτείνει πολύς κόσμος: Fortran, (πάλι δεν μιλάω να αποκτήσει βαθιά γνώση)

Μετά την Fortran, Lisp, μετά C, και μετά D.
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: Προγραμματισμός με Python.

Δημοσίευσηαπό migf1 » 05 Δεκ 2011, 13:33

Καλωσόρισες κι από μένα!

Ο φίλος sokoban4ever έκανε μια εξαιρετικά εύστοχη περίληψη, που ελπίζω να σε βοηθήσει. Να προσθέσω όμως πως αν δεν έχεις ούτε προηγούμενη εμπειρία με τον προγραμματισμό ούτε ακαδημαϊκή καθοδήγηση, τότε η C ενδέχεται να σε δυσκολέψει από ένα σημείο και μετά, διότι από τη φύση της προορίζεται για έμπειρους προγραμματιστές. Η εκμάθησή της με ακαδημαϊκή καθοδήγηση, ιδανικά μάλιστα σε ακαδημαϊκό περιβάλλον, συνιστάται ανεπιφύλακτα για την C. Είναι πολύ δύσκολο να τη μάθεις μόνος σου, ακόμα κι αν έχεις την τύχη να πέσεις σε καλό βιβλίο για βοήθημα στην αρχή (όπως π.χ. το εξαιρετικό από όλες τις απόψεις C Programming, a Modern Approach, 2nd Edition )

Η Python ίσως είναι καλύτερη επιλογή για 1η γλώσσα, μιας και είναι αφενός πανίσχυρη κι αφετέρου πολύ πιο βατή για ξεκίνημα. Με τη βοήθεια ενός καλού βιβλίου μπορείς να γίνεις παραγωγικός πολύ γρήγορα, ακόμα και χωρίς άλλη καθοδήγηση (δυστυχώς δεν είμαι qualified να σου προτείνω κάποιο). Μια εξίσου καλή επιλογή, πάντα κατά την άποψή μου, είναι η Java. Ιδιαίτερα αν σκοπεύεις να ασχοληθείς επαγγελματικά, μιας και αποτελεί εδώ και αρκετά χρόνια την πιο περιζήτητη επαγγελματικά γλώσσα. Είναι στο επίπεδο της Python σε δυνατότητες & ευχρηστία, αλλά με πιο C oriented σύνταξη & προσέγγιση (και οι... ομοιότητες σταματάνε εκεί :lol:). Η C# είναι επίσης μια πολύ καλή επιλογή, εγκλωβισμένη όμως στο .net framework της Microsoft (το Mono δεν θα το έλεγα λύση, περισσότερο πρόβλημα είναι παρά λύση :lol:).

Η 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 για όλες :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Προγραμματισμός με Python.

Δημοσίευσηαπό karamaniotis » 05 Δεκ 2011, 17:40

Σιγουρα με βοηθησεσ και με το παραπανω...εχω κατα νου να ξεσκονησω καποια tutorials τησ c και παραλληλα να μαθαινω python.Πιστευω πωσ τα tutorials θα με βοηθησουν αρκετα.Ευχαριστω για την απαντηση..
karamaniotis
babeTUX
babeTUX
 
Δημοσιεύσεις: 4
Εγγραφή: 05 Δεκ 2011, 01:49
Εκτύπωση

Προηγούμενη

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Γενική Συζήτηση Μαθημάτων - Προτάσεις