Παρακαλώ διάβασε με προσοχή.
Γενικεύω την ερώτηση σου προσθέτοντας και άλλες γλώσσες προγραμματισμού.
Ξεκινάω από τη C, λόγω της ιστορίας της. Η C πλέον για μένα δεν είναι μία γλώσσα προγραμματισμού γενικής χρήσης. Ούτε τη θεωρώ υψηλού επιπέδου. Αν θέλετε να ασχοληθείτε με τον προγραμματισμό συστημάτων, είτε λειτουργικών είτε ενσωματωμένων, τότε αξίζει να ασχοληθείτε με τη C. Διαφορετικά δεν υπάρχει λόγος (εκτός κι αν δεν έχετε κάτι καλύτερο να κάνετε...). Οι λόγοι για τους οποίους η C είναι ιδανική (και θα συνεχίσει να είναι) για την ανάπτυξη λειτουργικών και ενσωματωμένων συστημάτων, είναι το μικρό μέγεθος της.
Είναι γενικά εύκολο να ενσωματωθεί στο υλικό ένας μεταγλωττιστής και η πρότυπη βιβλιοθήκη της γλώσσας C, κάτι το οποίο φυσικά είναι πολύ θετικό για τους προγραμματιστές, επειδή τους απαλλάσσει από την απαίτηση να γνωρίζουν το σύνολο εντολών του εκάστοτε υλικού που χρησιμοποιείται για την κατασκευή ενός συστήματος.
Συνεχίζω με την C++. Καταρχάς έχω συνειδητοποιήσει ότι η C++ προσεγγίζεται από ένα μεγάλο ποσοστό προγραμματιστών με τελείως λανθασμένο τρόπο. Η C++ δεν πρέπει να θεωρείται υπερσύνολο της C (αν και πρακτικά είναι). Κάθε άλλο. Εφόσον υπάρχει η πρότυπη βιβλιοθήκη της C++, είναι λάθος τεχνική οι προγραμματιστές της C++ να χρησιμοποιούν κώδικα C στις εφαρμογές τους. Αν είναι εφικτό, αυτό θα πρέπει να αποφεύγεται ακόμη και σε ποσοστό 100%. Διαφορετικά, ο κώδικας καταλήγει να είναι σπαγγέτι, και η εφαρμογή μη αποδοτική.
Επίσης, από τη στιγμή που υλοποιήθηκε η βιβλιοθήκη προτύπων (STL), και εμφανίστηκε η έννοια του γενικευμένου προγραμματισμού, ο κλασσικός τρόπος αντικειμενοστραφούς προγραμματισμού πέρασε σε δεύτερη μοίρα. Σε τελική ανάλυση, αυτό που δίνει δύναμη στην C++ και την κάνει να ξεχωρίζει από τις υπόλοιπες γλώσσες, κατά τη γνώμη μου είναι η βιβλιοθήκη προτύπων. Γενικά η C++ είναι κατάλληλη για ανάπτυξη εφαρμογών που απαιτούν μοντελοποίηση της πραγματικότητας, σύνθετους αλγορίθμους, και ταχύτητα. Το κύριο μειονέκτημα της C++ είναι η δυσκολία συγγραφής μεταφέρσιμων εφαρμογών, κάτι το οποίο γίνεται ακόμη πιο πολύπλοκο όταν η εφαρμογή πρέπει να συνοδεύεται από γραφικό περιβάλλον εργασίας.
Σειρά έχει η Java. Γενικά δε σας συνιστώ να μάθετε Java. Ειλικρινά, τη θεωρώ μία αποτυχία. Μη κρίνετε από το πόσο διάσημη είναι. Η πραγματικότητα είναι διαφορετική. Και τεκμηριώνω: Οι σχεδιαστές της Java είχαν στο μυαλό τους να κατασκευάσουν μία αντικειμενοστραφή γλώσσα η οποία θα μπορούσε να είναι μεταφέρσιμη όχι μόνο σε λειτουργικά συστήματα αλλά ακόμη και σε ενσωματωμένα, και επιπλέον δε θα υιοθετούσε τα "μειονεκτήματα" της C++. Το αποτέλεσμα όμως ποιο είναι; Κατά τη γνώμη μου, μία γλώσσα αργή (οπότε και ακατάλληλη για ενσωματωμένα συστήματα, βλέπε κινητά - πραγματικά χρειάζεται να πιεις καφέ μέχρι να ξεκινήσει η εφαρμογή), χαώδης (όσο καλά τεκμηριωμένη και να είναι καταντάει κουραστικό να ψάχνεις συνέχεια), και όχι λιγότερο πολύπλοκη από τη C++ (μάλιστα έφτασε στο σημείο να υιοθετεί χαρακτηριστικά της C++, πχ. επαναλήπτες). Το μόνο συμπαθητικό κομμάτι της Java είναι το Swing, το οποίο όμως υστερεί επίσης σε ταχύτητα.
Μπορεί να θεωρούσα ακόμη τη Java χρήσιμη, αν δεν υπήρχε η Python! Πραγματικά, θεωρώ την Python ιδανική γλώσσα για να ξεκινήσει κάποιος τον προγραμματισμό (και όχι μόνο), για τους εξής λόγους:
- Έχει απλό συντακτικό, χωρίς αυτό όμως να μειώνει τις δυνατότητες της,
- Eίναι αυστηρή στις εσοχές (είναι αλήθεια, αν δεν χρησιμοποιούνται σωστά οι εσοχές, αυτό θεωρείται συντακτικό σφάλμα!), με αποτέλεσμα είτε το θέλει ο προγραμματιστής είτε όχι να υιοθετεί σωστές μεθόδους συγγραφής κώδικα,
- Eίναι αντικειμενοστραφής, δίχως όμως να υποχρεώνει τον προγραμματιστή να ξεκινήσει απευθείας να γράφει κλάσεις,
- Άν και χρησιμοποιεί διερμηνέα, είναι αισθητά πιο γρήγορη από τη Java, οπότε είναι καταλληλότερη για χρήση σε συσκευές όπως κινητά, κτλ.,
- Έχει πάρα πολλές (και πολύ χρήσιμες) βιβλιοθήκες,
- Επιτρέπει στον προγραμματιστή να αναπτύξει μεταφέρσιμες εφαρμογές με γραφικό περιβάλλον, με σχετικά απλό τρόπο.
Συνέχεια έχει η Lisp. Γενικά δεν έχω μεγάλη εμπειρία με τη Lisp, αλλά επέλεξα να τη δοκιμάσω έπειτα από συστάσεις του Paul Graham στο βιβλίο του "Hackers And Painters". Το ότι είναι ισχυρή είναι δεδομένο, αρκεί και μόνο η χρήση του Emacs για να το καταλάβει κάποιος. Τώρα από το συντακτικό δεν μπορώ να πω ότι εντυπωσιάστηκα ιδιαίτερα. Παρόλα αυτά, τη σέβομαι σαν γλώσσα και δεν είναι καθόλου απίθανο να ασχοληθώ συστηματικά μαζί της στο μέλλον.
Ολοκληρώνω με την Prolog. Ομολογώ ότι μου είναι συμπαθής γλώσσα. Πραγματικά είναι απίστευτο το τι μπορεί να πετύχει κανείς χρησιμοποιώντας απλά μία προγραμματιστική τεχνική (την αναδρομή). Το μόνο που δεν έχω ξεκαθαρίσει, είναι το αν χρησιμοποιείται στην πράξη μόνο από άτομα που ασχολούνται με τη μαθηματική λογική, τη συγγραφή πρωτοτύπων, και την έρευνα στον τομέα της τεχνητής νοημοσύνης. Θα ήθελα να τη χρησιμοποιήσω στην πράξη για χρήσιμες και για πιο "ενδιαφέρουσες" εφαρμογές, πχ. για το τμήμα της τεχνητής νοημοσύνης ενός παιχνιδιού, σε συνδυασμό με κάποια άλλη γλώσσα (πχ. την Python).
faif.gr
Αυτόματη ένωση μηνύματος: [time]Κυρ 04 Οκτ 2009 04:59:37 μμ GMT-2[/time]Λόγοι για του οποίους κάποιος θα έκανε χρήση της Python:
1. Software quality
2. Developer productivity
3. Program portability
4. Component Integration
5. Support libraries
6. Enjoyment
Τι θα μπορούσατε να κάνετε με την Python?
1. System Programming
2. Designing GUIs
3. Internet Scripting
4. Component Integration
5. Database Programming
6. Rapid Prototyping
7. Numeric and Scientific Programming
8. Gaming, Images, AI, XML, Robots, and More
Ποιες είναι οι τεχνικές δυνατότητες της Python?
It's Object Oriented, Procedural and Functional
It's Free (free as in freedom)
It's Portable (truly portable)
It's Powerful
It's Mixable
It's Easy to Use
Επίσης:
* excellent for beginners, yet superb for experts
* highly scalable, suitable for large projects as well as small ones
* rapid development
* portable, cross-platform
* embeddable
* easily extensible
* object-oriented
* you can get the job done
* simple yet elegant
* stable and mature
* powerful standard libs
* wealth of 3rd party packages
Αυτόματη ένωση μηνύματος: [time]Κυρ 04 Οκτ 2009 05:04:59 μμ GMT-2[/time]Επίσης μπορείς να ρίξεις και μια ματιά σε αυτά τα κείμενα:
http://www.dmh2000.com/cjpr/http://pythonconquerstheuniverse.wordpress.com/category/java-and-python/Για περισσότερες πληροφορίες μπορούμε να κάνουμε μια πιο εκτενή συζήτηση κατ' ιδίαν περί του ζητήματος.