Δημοσιεύτηκε: 26 Ιουν 2011, 14:52
Όπως αναφέρω και στο αρχικό μου μήνυμα σε αυτό το νήμα, δεν υπάρχει καμία γλώσσα κατάλληλη για όλες τις δουλειές. Οι γλώσσες είναι απλώς εργαλεία. Συνεπάγεται λοιπόν πως το να λέμε ότι το μέλλον είναι αυτή η γλώσσα ή η τάδε γλώσσα, ή αυτός ο τρόπος υλοποίησης ή ο άλλος τρόπος υλοποίησης είναι άτοπο!
Είναι τόσο μεγάλος & ποικιλόμορφος ο ευρύτερος τομέας της πληροφορικής, που στην πράξη μπορεί να θεωρηθεί ακόμα κι ανεξάντλητος. Ανεξάντλητος μπορεί να θεωρηθεί και ο (υπο)τομές των Ενσωματωμένων Συστημάτων που πιάσαμε σε αυτό το thread, αφού εκτείνεται από ηλεκτρικές σκούπες (που λέει ο λόγος) μέχρι διαστημόπλοια (που δεν λέει ο λόγος, ισχύει).
Όσο υπάρχουν ανάγκες για επιδόσεις και εξοικονόμηση πόρων, γλώσσες όπως η C και C++ θα ζουν και θα βασιλεύουν. Και ειδικά η C το κάνει ήδη εδώ και 4 δεκαετίες! Από κοντά και η C++.
Ομοίως, όσο υπάρχουν ανάγκες για Rapid Application Development, interpreters και scripting languages επίσης θα ζουν και θα βασιλεύουν. Και ειδικά η Java το κάνει επίσης επί πολλές δεκαετίες.
Ακόμα, όσο υπάρχουν ανάγκες για πολύ εξειδικευμένες εφαρμογές (κάτι που συνήθως συμβαίνει σε ερευνητικό επίπεδο, αλλά όχι μόνο) γλώσσες όπως [π.χ. η Fortran και η Lisp θα ζουν και θα βασιλεύουν (καλά για τη Lisp δεν κόβω και το κεφάλι μου :p).
You get my point.
Άρα η κάθε γλώσσα έχει τα υπέρ και τα κατά της, συνήθως δημιουργείται (ή αναθεωρείται) για συγκεκριμένους σκοπούς, οπότε για τους σκοπούς αυτούς βρίσκεται επί πάρα πολύ καιρό ανάμεσα στις πρώτες επιλογές (π.χ. η PHP στον τομέα του server scripting).
Άρα, φυσικά και χρησιμοποιούνται interpreted languages στα Ενσωματωμένα Συστήματα, προφανώς όμως σε όσα η ταχύτητα παραγωγής έχει μεγαλύτερη σημασία από την ταχύτητα εκτέλεσης και την εξοικονόμηση πόρων. Από αυτό όμως μέχρι να λέμε πως το μέλλον στα Ενσωματωμένα Συστήματα είναι η μαζική χρήση της Python υπάρχει ΤΕΡΑΣΤΙΑ απόσταση!
Όπως μεγάλη απόσταση υπάρχει στο να χαρακτηρίζεις γενικώς κι αορίστως ως "premature optimization" τη χρήση της C αντί για την Python. Για παράδειγμα. υπάρχει ποτέ περίπτωση σοβαρός άνθρωπος να γράψει device driver σε Python ή σε Java; Που ακριβώς είναι το "premature optimization" σε αυτή την περίπτωση;
Ο φίλος evlogen έθεσε το πράγμα στη σωστή διάσταση με την τοποθέτησή του. Εννοώ πως συμφωνώ απόλυτα με την μέχρι τώρα τοποθέτησή του!
In real life λοιπόν, το παρόν και το μέλλον δεν είναι καμία γλώσσα! Ήταν, είναι και θα είναι (εικάζω) τα bindings. Να χρησιμοποιείς δηλαδή μέσα στο ίδιο project περισσότερες της μιας γλώσσας, στα σημεία που η καθεμιά τους είναι καλύτερη ή πιο κατάλληλη για τις εκάστοτε ανάγκες του project.
Για παράδειγμα, στα Windows 7 ο πυρήνας είναι γραμμένος σε C, τα lower layers σε C++ και τα higher layers σε .NET (C#).
Είναι τόσο μεγάλος & ποικιλόμορφος ο ευρύτερος τομέας της πληροφορικής, που στην πράξη μπορεί να θεωρηθεί ακόμα κι ανεξάντλητος. Ανεξάντλητος μπορεί να θεωρηθεί και ο (υπο)τομές των Ενσωματωμένων Συστημάτων που πιάσαμε σε αυτό το thread, αφού εκτείνεται από ηλεκτρικές σκούπες (που λέει ο λόγος) μέχρι διαστημόπλοια (που δεν λέει ο λόγος, ισχύει).
Όσο υπάρχουν ανάγκες για επιδόσεις και εξοικονόμηση πόρων, γλώσσες όπως η C και C++ θα ζουν και θα βασιλεύουν. Και ειδικά η C το κάνει ήδη εδώ και 4 δεκαετίες! Από κοντά και η C++.
Ομοίως, όσο υπάρχουν ανάγκες για Rapid Application Development, interpreters και scripting languages επίσης θα ζουν και θα βασιλεύουν. Και ειδικά η Java το κάνει επίσης επί πολλές δεκαετίες.
Ακόμα, όσο υπάρχουν ανάγκες για πολύ εξειδικευμένες εφαρμογές (κάτι που συνήθως συμβαίνει σε ερευνητικό επίπεδο, αλλά όχι μόνο) γλώσσες όπως [π.χ. η Fortran και η Lisp θα ζουν και θα βασιλεύουν (καλά για τη Lisp δεν κόβω και το κεφάλι μου :p).
You get my point.
Άρα η κάθε γλώσσα έχει τα υπέρ και τα κατά της, συνήθως δημιουργείται (ή αναθεωρείται) για συγκεκριμένους σκοπούς, οπότε για τους σκοπούς αυτούς βρίσκεται επί πάρα πολύ καιρό ανάμεσα στις πρώτες επιλογές (π.χ. η PHP στον τομέα του server scripting).
Άρα, φυσικά και χρησιμοποιούνται interpreted languages στα Ενσωματωμένα Συστήματα, προφανώς όμως σε όσα η ταχύτητα παραγωγής έχει μεγαλύτερη σημασία από την ταχύτητα εκτέλεσης και την εξοικονόμηση πόρων. Από αυτό όμως μέχρι να λέμε πως το μέλλον στα Ενσωματωμένα Συστήματα είναι η μαζική χρήση της Python υπάρχει ΤΕΡΑΣΤΙΑ απόσταση!
Όπως μεγάλη απόσταση υπάρχει στο να χαρακτηρίζεις γενικώς κι αορίστως ως "premature optimization" τη χρήση της C αντί για την Python. Για παράδειγμα. υπάρχει ποτέ περίπτωση σοβαρός άνθρωπος να γράψει device driver σε Python ή σε Java; Που ακριβώς είναι το "premature optimization" σε αυτή την περίπτωση;
Ο φίλος evlogen έθεσε το πράγμα στη σωστή διάσταση με την τοποθέτησή του. Εννοώ πως συμφωνώ απόλυτα με την μέχρι τώρα τοποθέτησή του!
In real life λοιπόν, το παρόν και το μέλλον δεν είναι καμία γλώσσα! Ήταν, είναι και θα είναι (εικάζω) τα bindings. Να χρησιμοποιείς δηλαδή μέσα στο ίδιο project περισσότερες της μιας γλώσσας, στα σημεία που η καθεμιά τους είναι καλύτερη ή πιο κατάλληλη για τις εκάστοτε ανάγκες του project.
Για παράδειγμα, στα Windows 7 ο πυρήνας είναι γραμμένος σε C, τα lower layers σε C++ και τα higher layers σε .NET (C#).