Δημοσιεύτηκε: 28 Νοέμ 2011, 13:37
από migf1
Δεν είμαι καθόλου σίγουρος πως μπορούμε να προ-οιωνίσουμε με ασφάλεια το μέλλον (ειδικά το μεσο-μακροπρόθεσμο), μπορούμε όμως να βγάλουμε σχετικά ασφαλή συμπεράσματα για το άμεσο μέλλον, εξετάζοντας το παρόν και το παρελθόν.

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

Με λίγα λόγια, όπου υπάρχει ανάγκη για speed-critical ή/και limited-resources εφαρμογές οι natively compiled γλώσσες θα είναι πολύ πιο χρήσιμες από τις scripting/interpreted/ just-in-time compiled (virtual machine, .net cls, κλπ).

Όπως και το ανάποδο, όπου το κόστος παραγωγής υπερσκελίζει σε σημασία το resources-efficiency, οι scripting/interpreted/just-in-time compiled γλώσσες θα είναι πολύ πιο χρήσιμες από τις natively compiled.

Να γράψεις π.χ. τον πυρήνα ενός λειτουργικού συστήματος σε γλώσσες όπως οι σημερινές python & java θα παραμείνει σε γενικές γραμμές χαμηλά στη λίστα επιλογών υλοποίησης. Όπως και το να παράσχεις ένα user-development framework σε γλώσσες όπως ο σημερινές C και C++ θα παραμείνει σε γενικές γραμμές χαμηλά στη λίστα επιλογών υλοποίησης.

Πάρε για παράδειγμα το android, ο πυρήνας του (που είναι Unix) είναι γραμμένος σε C/C++ αλλά το developer framework παρέχεται σε Java. Ως android developer μπορείς να γράψεις αν θέλεις android εφαρμογές σε C/C++ (το οποίο μάλιστα ονομάζεται native code στη συγκεκριμένη πλατφόρμα) αλλά ο κύριος όγκος εφαρμογών γράφεται σε Java (και κατά την άποψή μου, πολύ καλά κάνει στη συγκεκριμένη περίπτωση).

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

Για όσους δεν γνωρίζουν τι είναι τα bindings, είναι η δυνατότητα να γράφεις επιμέρους τμήματα ενός πρότζεκτ σε διαφορετικές γλώσσες. Για παράδειγμα, ο πυρήνας των Windows είναι γραμμένος σε C/C++ ενώ στα υψηλότερα layers χρησιμοποιείται C#. Όπως επίσης μπορείς για παράδειγμα να υλοποιήσεις το μεγαλύτερο μέρος ενός πρότζεκτ ας πούμε σε Python αλλά τα speed-critical μέρη του να τα γράψεις σε C.

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