Jump to content



Ποία γλώσσα για αρχή????


ximaira

Recommended Posts

Για αρχή και όχι μόνο Python δαγκωτό! Και ίσως το καλύτερο εγχειρίδιο για να σε βάλει στο κλίμα του προγραμματισμού είναι το εξαιρετικό ThinkPython.com όπου την τελευταία του έκδοση την βρίσκεις πάντα στο http://www.greenteapress.com/thinkpython/thinkpython.pdf

Link to comment
Share on other sites

  • Replies 64
  • Created
  • Last Reply

Όλα έχουν να κάνουν με το τι δουλειά κάνεις ή θα κάνεις, πόσο σημαντικό κομμάτι είναι ο προγραμματισμός (ανεξαρτήτως γλώσσας) σε αυτήν και, φυσικά, πόσο σοβαρά παίρνεις κι ο ίδιος τη δουλειά σου.

Άλλος δηλώνει "web developer" και δεν ξέρει καν HTML π.χ...

Ναι, σοβαρό web developing φυσικά δε μπορεί να κάποιος χωρίς να ξέρει HTML. Μπορεί να κάνει όμως κάλιστα χωρίς C (βασικά το να κάνεις σήμερα web developing σε C/C++ είναι συνώνυμο του μαζοχισμού)

Αυτό στο αφήνω εργασία για το σπίτι. :p

1) Κανεις όλη τη λογική του προγράμματος με pyCUDΑ και αν έχεις κάποιο bottleneck αφού κάνεις profiling κάνεις αντίστοιχα optimize το αντίστοιχο κομμάτι σε C

2) Κάνεις όλο το πρόγραμμα σε C

Ποιό από τα 2 είναι: α) περισσότερο παραγωγικό β) παράγει σημαντικό λιγότερο κώδικα και γ) παράγει πιο readable και maintainable κώδικα; (φυσικά υπάρχουν και οι εξαιρέσεις που ως γνωστόν επιβεβαιώνουν τον κανόνα)

Το αφήνω σαν εργασία για το σπίτι :p

Link to comment
Share on other sites

Καλή αρχή στο διάβασμα. Το είχα κάνει και παλιότερα λινκ για online μαθήματα προγραμματισμού:

http://www.thelab.gr/web-works-programmatismos-dimiourgika/dwrean-mathimata-programmatismou-108032.html

Αν αρχίσεις από το cs101 μπορείς να ασχοληθείς με προγραμματισμό χρησιμοποιώντας Python.

Link to comment
Share on other sites

Ναι, σοβαρό web developing φυσικά δε μπορεί να κάποιος χωρίς να ξέρει HTML. Μπορεί να κάνει όμως κάλιστα χωρίς C (βασικά το να κάνεις σήμερα web developing σε C/C++ είναι συνώνυμο του μαζοχισμού)

Το web το έφερα ως παράδειγμα γιατί υπάρχουν πολλοί που δηλώνουν "web devs" κι απλά κάνουν πασαλείμματα κοιτώντας πώς δεν θα χρειαστεί να ξεστραβωθούν - δεν υπενόησα ότι χρειάζεται C.

Αντίστοιχα υπάρχουν όψιμοι "προγραμματιστές" που κοιτάνε να βρουν την πιο high level, abstract γλώσσα που υπάρχει, να "λερώσουν" όσο γίνεται λιγότερο τα χέρια τους. Και, εννοείται, όταν κάτι πάει στραβά ή χρειαστεί, λόγω "στροφής στην καριέρα", να δουν κάτι πιο low level, τρέχουν και δε φτάνουν.

1) Κανεις όλη τη λογική του προγράμματος με pyCUDΑ και αν έχεις κάποιο bottleneck αφού κάνεις profiling κάνεις αντίστοιχα optimize το αντίστοιχο κομμάτι σε C

2) Κάνεις όλο το πρόγραμμα σε C

Ποιό από τα 2 είναι: α) περισσότερο παραγωγικό β) παράγει σημαντικό λιγότερο κώδικα και γ) παράγει πιο readable και maintainable κώδικα; (φυσικά υπάρχουν και οι εξαιρέσεις που ως γνωστόν επιβεβαιώνουν τον κανόνα)

Το αφήνω σαν εργασία για το σπίτι :p

Οι (λάθος) ερωτήσεις που θέτεις μου δείχνουν ότι δεν έκανες την εργασία σου.

Σου δίνω και hint: ψάξε τη δομή μία σύγχρονης GPU, ψάξε ακαδημαϊκές δημοσιεύσεις να δεις σε τι γλώσσα δουλεύουν, τι εφαρμογές (προσπαθούν να) επιταχύνουν με τη GPU και σε τι συστήματα τρέχει (πέρα από τη GPU) ο κώδικας για να βγάλουν συγκριτικά speed up times (δηλ. ποιές είναι οι "ανταγωνιστικές" πλατφόρμες // βλ. clusters με openMP/MPI, FPGAs etc. ). Δυστυχώς ή ευτυχώς δεν είναι όλος ο προγραμματιστικός "πλανήτης" high level end-user εφαρμογές.

Link to comment
Share on other sites

Νομίζω ότι όλοι που έχουν ασχοληθεί λίγο με προγραμματισμό καταλαβαίνουν τις διαφορές high-level και low-level γλωσσών προγραμματισμού. Η κάθε γλώσσα έχει το σκοπό της (και όσες δεν έχουν σκοπό πεθαίνουν στην εξελικτική πορεία).

Ένας αρχάριος πρέπει να καταλάβει λίγο την δομή του προγραμματισμού όπως αναφέρατε ήδη και μετά να αρχίσει να ασχολείται λίγο για το πρώτο του πρόγραμμα. Και σε αυτό τον τομέα (hello world) η Python είναι αρκετά εύκολη για αρχή. Παραθέτω για παράδειγμα το hello world σε python και c

C κώδικας


main(){
printf("Hello World");
}
#include<stdio.h>

python κώδικας

print "Hello, World!"

Ο κώδικας της python γεννά σίγουρα λιγότερα ερωτηματικά για έναν αρχάριο.

Από την άλλη προγραμματισμός σε C είναι ποιο κοντά σε αυτά που διαβάζεις σε βιβλία προγραμματισμού (πρέπει να κάνεις και compile που στην Python γίνεται αυτόματα). Σε ένα αρχάριο αυτά τα "μαγικά" compile δεν είναι ότι καλύτερο. Στην αρχή χρειάζεσαι διαύγεια στις διαδικασίες για να μπορέσεις να καταλάβεις τί παίζει.

My 2 cents ;)

Link to comment
Share on other sites

Οι (λάθος) ερωτήσεις που θέτεις μου δείχνουν ότι δεν έκανες την εργασία σου.

Σου δίνω και hint: ψάξε τη δομή μία σύγχρονης GPU, ψάξε ακαδημαϊκές δημοσιεύσεις να δεις σε τι γλώσσα δουλεύουν, τι εφαρμογές (προσπαθούν να) επιταχύνουν με τη GPU και σε τι συστήματα τρέχει (πέρα από τη GPU) ο κώδικας για να βγάλουν συγκριτικά speed up times (δηλ. ποιές είναι οι "ανταγωνιστικές" πλατφόρμες // βλ. clusters με openMP/MPI, FPGAs etc. ). Δυστυχώς ή ευτυχώς δεν είναι όλος ο προγραμματιστικός "πλανήτης" high level end-user εφαρμογές.

Το θέμα δεν είναι σε τί είναι φτιαγμένο κάτι (ας είναι και σε Assembly), αλλά με ποιο API θα το χρησιμοποιήσει κάποιος για να κάνει π.χ. High Perf Computing με GPU (η κάτι άλλο). Οτιδήποτε είναι computationally intensive φυσικά θα είναι γραμμένο σε C. To base layer του pyCUDA είναι γραμμένο σε C++ (για να δώσει και την αντίστοιχη ταχύτητα), αυτό τι σημαίνει ότι θα πρέπει να χρησιμοποιησει κάποιος ντε και καλά C/C++ για να έχει access σε CUDA (defeats the whole purpose).

Clusters με openMP/MPI χρησιμοποιούν C, τα windows είναι γραμμένα σε C/C++, οι drivers είναι γραμμένοι σε C, και ο GCC είναι γραμμένος σε C. Αυτό γιατί να σημαίνει ότι κάποιος (και ιδιαίτερα κάποιος που είναι αρχάριος) να μάθει C;

Με την ίδια λογική και η Python σε C είναι γραμμένη άρα για ποιο λόγο να τη μάθουμε, και να μη μάθουμε C.

Τέλος, όσον αφορά την καραμέλα του performance που έχω κυριολεκτικά βαρεθεί να την ακούω (δεν αναφέρομαι σε σένα), συμφωνώ με τα εξής:

1) "More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason — including blind stupidity." - W.A. Wulf

2) "Premature optimization is the root of all evil" - Donald Knuth

PS. Μπορεί κάποιος να κάνει προγράμματα που κάνουν στην κυριολεξία παπάδες με σωστή αλγοριθμική δομή, σωστά coding practices, και καλό efficiency και να μη μάθει ποτέ στη ζωή του τι είναι pointer (αυτό βέβαια δε σημαίνει ότι δε θα του κάνει καλό να μάθει)

Link to comment
Share on other sites

Ρομαντικός ο φίλος iceblade.

Όταν βέβαια χρειαστεί αν προγραμματίσεις για ετερογενή ενσωματωμένα συστήματα (κάποια εκ των οποίων είναι πολύ περιορισμένων δυνατοτήτων/πόρων - ναι, παίζει και fine tuning σε assembly για να στρώσεις τις κουλαμάρες του compiler) και να συνδυάσεις τεχνογνωσία και απαιτήσεις (με πρώτη και καλύτερη την διαλειτουργικότητα) 5-6 διαφορετικών partners του consortium - κι όλα εντός ασφυκτικών deadlines - η πραγματικότητα σε προσγειώνει.

Link to comment
Share on other sites

Κινούμαι στη βάση της λογικής ότι η C μπορεί να θεωρηθεί ως μια χειροπιαστή γλώσσα της ψευδογλώσσας που μαθαίναμε στο Λύκειο.

Η ψευδογλώσσα του Λυκείου είναι ένας αποτελεσματικός τρόπος, ώστε ο μαθητής να μάθει να σκέπτεται προγραμματιστικά, με διακλαδώσεις, λούπες κλπ. Είναι δε απολύτως βέβαιον, πως ο,τιδήποτε σκαρώσει κάποιος μ' αυτόν τον ψευδοκώδικα, μπορεί να το γράψει σε οποιαδήποτε γλώσσα προγραμματισμού, και αναλόγως πόσο βιαστικός ή τσαπατσούλης είναι, μπορεί να γράψει δυσνόητο (δύσκολα συντηρήσιμο) κώδικα ανεξαρτήτως γλώσσας, και αργά ή γρήγορα, αυτό θα του γίνει μπούμερανγκ. Δηλαδή, αν φτιάξει κάτι τσάτρα -πάτρα και το παρατήσει για κανα εξάμηνο ή δυό - τρία χρόνια, όταν το ξανανοίξει θα νιώθει πως δεν το έχει γράψει αυτός. Τελεία.

Πέραν αυτών, προσωπικά είμαι από αυτούς που υποστηρίζουν πως η C είναι η αρχή και το τέλος, για δύο λόγους. Πρώτον, δεν χρειάζεται να γνωρίζει κάποιος το παραμικρό για οποιαδήποτε άλλη γλώσσα, για να αρχίσει να μαθαίνει C, και δεύτερον, η C έχει τα λιγώτερα αδιέξοδα από κάθε άλλη γλώσσα. Αν σε οποιαδήποτε σχολή, πανεπιστημιακή ή άλλη, το πρόγραμμα σπουδών είναι δομημένο στο στυλ "μάθε κάτι εύκολο στα πρώτα εξάμηνα και μετά πέρνα στη C", το πρόγραμμα είναι απλώς εσφαλμένο, για να μην πω αντιπαιδαγωγικό, διότι η C αφ' ενός μεν δεν είναι δύσκολη, και αφ' ετέρου σε βάζει κατ' ευθείαν στον τρόπο οργάνωσης της σκέψης της μηχανής και όχι του ανθρώπου.

Βεβαίως, πάρα πολλοί άνθρωποι ταυτίζουν τη C με μια στριφνή και δύστροπη γυναίκα, αλλά γι' αυτό δεν φταίει η C, αλλά ο τρόπος σκέψης που έχουν ήδη αποκτήσει από κάποια άλλη, προφανώς υψηλού επιπέδου γλώσσα, όπως η BASIC, που είναι μόνο beginner's, μόνον all-purpose και μόνον simple instruction code. Αντιθέτως, η C δεν είναι μόνο για αρχαρίους, αλλά για όλους και για όλα.

Link to comment
Share on other sites

Ρομαντικός ο φίλος iceblade.

Όταν βέβαια χρειαστεί αν προγραμματίσεις για ετερογενή ενσωματωμένα συστήματα (κάποια εκ των οποίων είναι πολύ περιορισμένων δυνατοτήτων/πόρων - ναι, παίζει και fine tuning σε assembly για να στρώσεις τις κουλαμάρες του compiler) και να συνδυάσεις τεχνογνωσία και απαιτήσεις (με πρώτη και καλύτερη την διαλειτουργικότητα) 5-6 διαφορετικών partners του consortium - κι όλα εντός ασφυκτικών deadlines - η πραγματικότητα σε προσγειώνει.

Χεχε. Πολύ σωστά τα λες και πίστεψε δεν είναι στα άμεσα σχέδια μου :D.

Βέβαια ήθελα να ήξερα σε ποια "πραγματικότητα" αναφέρεσαι. Δηλαδή, ποιο είναι το πραγματικό ποσοστό των προγραμματιστών που ανήκουν σε αυτή την κατηγορία, και αν αυτή επαφίεται στο ελάχιστο στον τίτλο του συγκεκριμένου thread :p

Link to comment
Share on other sites

Χεχε. Πολύ σωστά τα λες και πίστεψε δεν είναι στα άμεσα σχέδια μου :D.

Βέβαια ήθελα να ήξερα σε ποια "πραγματικότητα" αναφέρεσαι. Δηλαδή, ποιο είναι το πραγματικό ποσοστό των προγραμματιστών που ανήκουν σε αυτή την κατηγορία, και αν αυτή επαφίεται στο ελάχιστο στον τίτλο του συγκεκριμένου thread :p

Στην πραγματικότητα του προγραμματιστή/"επιστήμονα υπολογιστών"/"hardware-α"/"όπως-θες-πες-τον" που με άλλο ξεκινάει να ασχοληθεί και αλλού βρίσκεται εξ'ανάγκης/γιατί εκεί πήγε η δουλειά/γιατί αυτό το συμβόλαιο έκατσε κ.ο.κ.

Δεν είναι καθόλου σπάνιο αυτό, ειδικά σε επαγγέλματα που άπτονται τις επιστήμης των υπολογιστών, και είναι μεγάλο λάθος να λες "εγώ με αυτό είμαι καλυμμένος - το Τάδε μπορώ να το αγνοήσω ή να το θεωρήσω μαύρο κουτί".

Προφανώς κανείς δεν μπορεί να τα ξέρει όλα κι ο καθένας κάπου εξειδικεύεται αλλά, πίστεψέ με, σε ένα απαιτητικό και ανταγωνιστικό περιβάλλον εργασίας, αυτός που απλά γνωρίζει τα απολύτως απαραίτητα κι αυτός που το έψαξε παραπάνω κι έχει βάθος γνώσεων ξεχωρίζουν πολύ εύκολα μεταξύ τους.

Link to comment
Share on other sites

Μία ειναι η γλώσσα και θα γίνει MUST σε λίγα χρόνια.

Μάθε ALPHA Script / Cloud Script για να γράφεις application που θα "τρέχουν" σε όλες τις συκευές και πλατφόρμες, στο cloud, στο κινητό σου, στο PC, Mac, Linux και σε συστήματα που θα βγουν στο μέλλον.

Πάρε μάτι...

ALPHA Script – Public Wiki - This wiki is acting like a web consortium for ALPHA Script standarization

[ActionScript] ALPHA Script - Example - Pastebin.com

Σε έφτιαξα? :-)

Link to comment
Share on other sites

[MENTION=22886]CherryB[/MENTION] εσύ δλδ λες να μην ασχοληθώ καθόλου με python και C;;;;;;

[MENTION=4568]Inglor[/MENTION] ξεκίνησα να βλέπω τα μαθήματα στο MIT και να κάνω μάθημα στην τάξη για το computer scince στο udacity.... :flag:.........ΑΠΙΣΤΕΥΤΑ ΠΡΑΓΜΑΤΑ...........:flag:

Link to comment
Share on other sites

Όχι βρε συ, να μάθεις C γιατί σαν γλώσσα συστημάτων και σαν πολύ χρήσιμη και θα σου κάνει καλό γιατί θα σε βάλει στη λογική.

Απλά η ALPHA Script είναι ένα framework και μετα-γλώσσα που στην εποχή μας θα φανεί πιο άμεσα χρήσιμη και θα σου δώσει τη δυνατότητα αυτό που γράφεις να το αξιοποιήσεις κυριολεκτικά σε ότι ψηφιακό και σε όλες τις τεχνολογίες και συσκευές σε σχέση με τη C και άλλες κλασσικές γλώσσες προγραμματισμού. Αυτό συμβαίνει γιατί ότι γράφεις το γράφεις μια φορά και δε χρειάζεται να το ξαναγράψεις για να τρέξει π.χ το application στο iPhone, στο android και στο PC.

Επιπλέον υφιστάμενες τεχνολογίες και προγράμματα μέσα από το ALPHA Script μπορούν να μετατραπούν σε μεταφέρσιμα προγράμματα και έτσι μια εφαρμογή γραμμένη σε VB6 μπορεί για παράδειγμα άμεσα να τρέξει σαν web page ή στο Mac...

Γουστάρεις? :nuke:

Link to comment
Share on other sites

Όχι βρε συ, να μάθεις C γιατί σαν γλώσσα συστημάτων και σαν πολύ χρήσιμη και θα σου κάνει καλό γιατί θα σε βάλει στη λογική.

Απλά η ALPHA Script είναι ένα framework και μετα-γλώσσα που στην εποχή μας θα φανεί πιο άμεσα χρήσιμη και θα σου δώσει τη δυνατότητα αυτό που γράφεις να το αξιοποιήσεις κυριολεκτικά σε ότι ψηφιακό και σε όλες τις τεχνολογίες και συσκευές σε σχέση με τη C και άλλες κλασσικές γλώσσες προγραμματισμού. Αυτό συμβαίνει γιατί ότι γράφεις το γράφεις μια φορά και δε χρειάζεται να το ξαναγράψεις για να τρέξει π.χ το application στο iPhone, στο android και στο PC.

Επιπλέον υφιστάμενες τεχνολογίες και προγράμματα μέσα από το ALPHA Script μπορούν να μετατραπούν σε μεταφέρσιμα προγράμματα και έτσι μια εφαρμογή γραμμένη σε VB6 μπορεί για παράδειγμα άμεσα να τρέξει σαν web page ή στο Mac...

Γουστάρεις? :nuke:

Ναι κι αν αύριο μεθαύριο του ζητηθεί να αναπτύξει μια εφαρμογή γραφείου για μια εταιρεία,πχ ένα σύστημα μισθοδοσίας, θα τρέχει και δεν θα φτάνει.

Είναι σίγουρα ιδιαίτερη η γνώση μεταγλώσσας στην εποχή μας, αλλά αν δεν έχει κατακτηθεί η βάση(γνώση κάποιας-ων βασικής-ων γλωσσών προγραμματισμού), δεν μπορεί να πάει παραπέρα.

Link to comment
Share on other sites

η Python είναι δυνατή και πανεύκολη αλλά δε διαθέτει κάποιο ολοκληρωμένο IDE και είναι dynamic γλώσσα. Αν θες να φτιάξεις κάποια στιγμή μια σοβαρή εφαρμογή και να έχεις άπλετη υποστήριξη σε forums, API, examples κτλ. ξεκίνα είτε JAVA είτε C#. Και οι δυο είναι παρόμοιες αλλά η C# έχει πολύ μέλλον μπροστά της (και υποστηρίζεται full από την Microsoft) και το Visual Studio είναι το πιο ολοκληρωμένο IDE σήμερα. Μίλησα στο παρελθόν με δύο επαγγελματίες προγραμματιστές που έχουν δουλέψει όλες τις γλώσσες σχεδόν για προτάσεις και οι δύο μου είπαν την C#. Δεν είναι τυχαίο νομίζω.

H C χρησιμοποιείται μόνο σε micro-controllers και συναφή σήμερα οπότε δε νομίζω ότι θα σου χρησιμεύσει ιδιαίτερα.

Link to comment
Share on other sites

η Python είναι δυνατή και πανεύκολη αλλά δε διαθέτει κάποιο ολοκληρωμένο IDE και είναι dynamic γλώσσα. Αν θες να φτιάξεις κάποια στιγμή μια σοβαρή εφαρμογή και να έχεις άπλετη υποστήριξη σε forums, API, examples κτλ. ξεκίνα είτε JAVA είτε C#. Και οι δυο είναι παρόμοιες αλλά η C# έχει πολύ μέλλον μπροστά της (και υποστηρίζεται full από την Microsoft) και το Visual Studio είναι το πιο ολοκληρωμένο IDE σήμερα. Μίλησα στο παρελθόν με δύο επαγγελματίες προγραμματιστές που έχουν δουλέψει όλες τις γλώσσες σχεδόν για προτάσεις και οι δύο μου είπαν την C#. Δεν είναι τυχαίο νομίζω.

H C χρησιμοποιείται μόνο σε micro-controllers και συναφή σήμερα οπότε δε νομίζω ότι θα σου χρησιμεύσει ιδιαίτερα.

Η java όμως σε καλύπτει και σε web εφαρμογές(+ajax) και κυρίως σε android.Τι κάνει την C# τόσο αποδεκτή;

(ουσιαστικά περιμένω να μου παραθέσεις ένα δυο στιβαρά επιχειρήματα για να ξεκινήσω κι εγώ με C# :jester: )

Link to comment
Share on other sites

η Python είναι δυνατή και πανεύκολη αλλά δε διαθέτει κάποιο ολοκληρωμένο IDE και είναι dynamic γλώσσα.

Εκτός του ότι Pydev + Eclipse = oλοκληρωμένο, άπαιχτο + free,

υπάρχει και αυτό για Visual Studio

Αν θες να φτιάξεις κάποια στιγμή μια σοβαρή εφαρμογή και να έχεις άπλετη υποστήριξη σε forums, API, examples κτλ. ξεκίνα είτε JAVA είτε C#. Και οι δυο είναι παρόμοιες αλλά η C# έχει πολύ μέλλον μπροστά της (και υποστηρίζεται full από την Microsoft) και το Visual Studio είναι το πιο ολοκληρωμένο IDE σήμερα. Μίλησα στο παρελθόν με δύο επαγγελματίες προγραμματιστές που έχουν δουλέψει όλες τις γλώσσες σχεδόν για προτάσεις και οι δύο μου είπαν την C#. Δεν είναι τυχαίο νομίζω.

H C χρησιμοποιείται μόνο σε micro-controllers και συναφή σήμερα οπότε δε νομίζω ότι θα σου χρησιμεύσει ιδιαίτερα.

Με Ironpython, έχεις μπροστά σου όλο το .NET, με Jython όλη τη Java και με την κλασσική CPython το άπαιχτο standard library μαζί με άπειρες διαθέσιμες βιβλιοθήκες και bindings για ότι μπορεί να φανταστεί κανείς. Ποια άλλη γλώσσα έχει τόσα πράγματα διαθέσιμα;

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.