However, when Java is promoted as the sole programming language, its flaws and limitations become serious.
είπε ο μεγάλος Δανός μηχανικός, Bjarne Stroustrup
To 1995 η Sun παρουσίασε το next big think στο χώρο του προγραμματισμού. Ο James Gosling, δημιουργός της πρωτοποριακής αυτής γλώσσας, είχε μάλλον πολύ χιούμορ.
First things first, και ας πιάσουμε λίγο το όνομα. Java, την οποία μπορείς να προφέρεις Τζάβα (το οποίο είναι το σωστό), ή Γιάβα (αν είσαι Ιαχωβάς developer) ή ακόμη και Τζάμπα (αν είσαι Έλληνας προγραμματιστής). Δεν ξέρω αν ήταν έμπνευση του Gosling, όμως οι σοβαρές γλώσσες προγραμματισμού, έχουν σαν ονόματα γράμματα από το λατινικό αλφάβητο ή εμπνέονται από το ζωικό βασίλειο (και το φυτικό ενίοτε).
0001. Ας σοβαρευτούμε, διότι το παρών άρθρο απευθύνεται σε developers. Η μεγάλη ατραξιόν της Java, ήταν ο Garbage Collector. Μία προσθήκη που αποσκοπούσε στο να κάνει τεμπέληδες τους developers και να μη μάθουν ποτέ πώς να διαχειρίζονται τη μνήμη στον κωδικά τους. Βέβαια δεν έφθανε μόνο αυτό. Ο αγαπητός Σκουπιδιάρης έχει την κακή συνήθεια, να παγώνει ολόκληρο το Java Process μέχρι να μαζέψει τα σκουπίδια μνήμης του, και βέβαια ο κακομοίρης ο developer να περνάει καρδιακό επεισόδιο κάθε φορά που θέλει στον κωδικά του να κάνει χρήση της memory cache.
0010. Όταν κάνεις κάτι λάθος, περιμένεις κάποιο αποτέλεσμα να στο υποδείξει. Όχι όμως με τη Java. Αν ο developer είναι άτυχος (που πάντα είναι, ο νόμος του Μέρφι γαρ) και η library που χρησιμοποιεί δεν επιστρέφει κάτι σε περίπτωση RuntimeException, η ζωή συνεχίζεται. Δεν βαριέσαι, θα είπαν οι Product Managers στην Sun, ένα bug μετά από καιρό μετατρέπετε σε feature.
0011. Το cast στα data types, στη Java πήγε περίπατο. Είναι θέμα πειθαρχίας. Άπαξ και μία μεταβλητή ορίστηκε integer, γιατί να γίνε cast σε long?
0100. Η Java χαρακτηρίζετε σαν object oriented γλώσσα. Επειδή όμως έπρεπε να πρωτοτυπήσουν, φρόντισαν τις κλάσεις που αποτελούνται με μία μόνο μέθοδο, να μην έχουν καμία διαφορά σε συμπεριφορά από μία function. Object oriented, όπου object μπορεί να έχει πολλές ερμηνείες και είμαστε ανοιχτοί σε πολλές απόψεις.
0101. Ο Iterator στη Java είναι ένας άκαρδος πατέρας που διαχωρίζει τα παιδιά του. Όποιος κατάλαβε, κατάλαβε.
0110.
Public class MyClass {
Public void Myclass( ) { }
}
Όχι δεν χρησιμοποιώ κάποιο cheat (τι την περάσαμε τη Java, videogame?), απλά ο compiler δέχεται να μπορεί ο Constructor να δημιουργεί κλάσεις με μία μέθοδο, με κοινό όνομα.
0111. Στη C για να γεμίσω έναν πίνακα, δεν έχω παρά να γράψω {1, 2, ,3, 4, 5}. Ο Java Programmer επειδή, έχει τα ούμπαλα τούμπανο και πρέπει ο κωδικάς του να είναι εκατοντάδες χιλιάδες γραμμές, φρόντισαν οι δημιουργοί της Java, να μην μπορεί να δημιουργεί λίστα με Literals αλλά να τα αναθέτει ένα ένα (και βέβαια να μεγαλώνουν οι γραμμές).
Εν κατακλείδι, το μόνο πράγμα που σχετίζετε με τη Java και το εκτιμώ είναι το Eclipse. Respect! Το Eclipse έσωσε τη Java από αφανισμό. Θυμάμαι τους ταλαίπωρους, Java wannabe freaks, που έκαναν το λάθος να εγκαταστήσουν το περίφημο JBuilder, στις αρχές του τωρινού αιώνα. Το JBuilder (φτιαγμένο σε Java φυσικά), ήταν ένα φοβερό Programming Enviroment, που αν έκανες το μοιραίο λάθος να ανοίξεις παράλληλα το Σημειωματάριο (Notepad για τους ψαγμένους), το PC πέταγε μπλε, κίτρινες και κόκκινες οθόνες, έβγαζε καπνούς και στο σπίτι το βράδυ άκουγες περίεργους θορύβους σαν αυτούς στην ταινία Paranormal Activity… Το Eclipse τα έσωσε όλα και η Java ζει ακόμη… όχι για πολύ βέβαια.
Υ.Γ. Για την πολυπλατφορμικότητα η παρακάτω φράση τα λέει όλα:
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders...
εγω γιατι μπορώ να κάνω αυτο? int[] b = new int[]{5,6,7,8};
ΑπάντησηΔιαγραφήπότε έμαθες εσύ java και έχεις και άποψη κιόλας
Στη Java, το μόνο πρόγραμμα που έχω γράψει στη ζωή μου είναι το Hello World.
ΑπάντησηΔιαγραφήΑυτό δεν σημαίνει όμως ότι δεν την έχω μελετήσει για να γνωρίζω τη σαπίλα που κρύβει αυτή η διχαλωτή γλώσσα προγραμματισμού.
οσο για το 0110. μπορω να κάνω ακριβως το ιδιο και στην C#
ΑπάντησηΔιαγραφήτωρα που το ξαναδιαβάζω: απλά ο compiler δέχεται να μπορεί ο Constructor να δημιουργεί κλάσεις με μία μέθοδο, με κοινό όνομα.
Διαγραφήμάλλον έχεις εκφράσει τελείως λάθος αυτό που θες να πεις...αν τελικά αυτό που εννοείς είναι αυτό που περιγράφεις με τις 2 γραμμές κώδικα ... τότε:
α) μπορω να κάνω ακριβως το ιδιο και στην C#
β) στη java βγάζει warning ο compiler
Μπα δεν νομίζω, όπως το γράφω είναι. Στη C# είναι valid. So what?
Διαγραφήκαι στη java valid είναι, σίγα το warning....
ΔιαγραφήC#: και αυτοί ανώμαλοι είναι???
Τη C# και C++ δεν μπορώ να τις κράξω διότι στα 2 projects που έχω αναλάβει, τις χρησιμοποιώ αμφότερες. Στο μέλλον αν αλλάξουν τα πράγματα, θα έρθει και η ώρα τους.
ΑπάντησηΔιαγραφήδηλαδή αν δεν τις χρησιμοποιούσες θα τις έκραζες??
ΑπάντησηΔιαγραφήανάποδα δεν πάει? όσο τις χρησιμοποιείς τόσο περισσότερο μαθαίνεις τα καλά και τα άσχημα ...