Coding Fight 1: Java vs C# (Part 2)

Kindly go to setting page and check the option "Place them manually"

Σε προηγούμενο post, παρουσιάσαμε τα βασικά στοιχεία γύρω από τις γλώσσες προγραμματισμού Java και C#. Για να δούμε ποια γλώσσα είναι πιο κατάλληλη για ένα συγκεκριμένο project, θα εξετάσουμε τις ομοιότητες και τις διαφορές της Java με τη C# ως “εκπρόσωπο” της .ΝΕΤ πλατφόρμας.

Java vs C#: Ομοιότητες

Image Source: C# vs. Java - Chinmay Parekh
Image Source: C# vs. Java – Chinmay Parekh

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

  • Αντικειμενοστραφείς γλώσσες (Object-oriented languages): Και η Java και η C# είναι αντικειμενοστραφείς γλώσσες. Αυτό σημαίνει ότι μπορείς να χρησιμοποιήσεις πλήρως κλάσεις, κληρονομικότητα και πολυμορφισμό στο project.
  • Διερμηνευτής (Interpreted) vs Μεταγλωττιστής (Compiled): Η Java και η C# είναι γλώσσες οι οποίες μεταγλωτίζονται σε “byte code”. Αυτό σημαίνει ότι παράγουν εκτελέσιμο αρχείο, το οποίο θα γίνει compile just-in-time (JIT) σε γλώσσα μηχανής, δηλαδή την γλώσσα που μιλάει ο επεξεργαστής ενός υπολογιστικού συστήματος, από το αντίστοιχο virtual machine της κάθε γλώσσας.
  • Ευελιξία: Μπορείς να χρησιμοποιήσεις τα δικά σου τμήματα κώδικα σε μελλοντικά projects, ή να κατεβάσεις «plugins» από άλλους προγραμματιστές ώστε να προχωρήσει γρηγορότερα η ανάπτυξή του. Ωστόσο, πρέπει να διασφαλιστεί πως αυτά τα τμήματα είναι ενημερωμένα σε αντίστοιχη έκδοση από τον εξωτερικό προγραμματιστή.
  • Μεγάλο εύρος τελικών εφαρμογών: Και οι δύο γλώσσες μπορούν να χρησιμοποιηθούν σε web, desktop και mobile εφαρμογές. Για mobile εφαρμογές, η Java είναι κυρίως για προγραμματισμό σε Android και η C# για Windows.
  • Σύνταξη (Syntax): Επειδή και η Java και η C# έχουν προέλθει από τη C και τη C++, έχουν παρόμοιο συντακτικό, το οποίο είναι πολύ κοντά στον τρόπο με τον οποίο σχεδιάζεται και συντάσσεται ένα project σε C++. Όμως, αντίθετα από τη C++, η Java και η C# ελέγχουν δείκτες πινάκων και κάνουν αρχικοποίηση μεταβλητών για να αποφευχθούν σφάλματα εν ώρα εκτέλεσης (runtime errors).

Java vs C#: Διαφορές

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

  • Τελικές Εφαρμογές: Και οι δύο γλώσσες τρέχουν σε Linux και Windows (πρόσφατες ενημερώσεις της C# επιτρέπουν να τρέχει και σε Linux). Ωστόσο είναι ένας γενικός κανόνας ότι οι Java προγραμματιστές προτιμούν πλατφόρμες Linux ενώ οι C# προγραμματιστές τις Windows.
  • LINQ: Το LINQ επιτρέπει στους C# προγραμματιστές να εκφράσουν ερωτήματα απευθείας μέσα στον κώδικα αντί να γράφουν YAQL (Yet Another Query Language). Η Java δεν έχει αντίστοιχο LINQ.
  • Switch και strings: Εκ φύσεως η C# επιτρέπει να χρησιμοποιήσεις ένα switch statement (είδος επιλογής μηχανισμού ελέγχου που χρησιμοποιείται για να επιτρέψει την τιμή μιας μεταβλητής να αλλάξει τη ροή ελέγχου στην εκτέλεση ενός προγράμματος μέσω ενός κλαδιού πολλαπλών κατευθύνσεων) σε string μεταβλητή (είδος μεταβλητής που περιλαμβάνει γράμματα, αριθμούς και άλλους χαρακτήρες). Η Java 7 ήταν η πρώτη που διέθετε αυτή τη λογική, οπότε παλαιότερες εκδόσεις της Java δε δουλεύουν με το τρέχον συντακτικό των switch statements.
  • Generics: Η C# υποστηρίζει generic δεδομένα εκ φύσεως (δεδομένα που έχουν γραφτεί ώστε ο τύπος τους να οριστεί αργότερα και αρχικοποιούνται όταν χρειαστεί για συγκεκριμένους τύπους που παρέχονται ως παράμετροι). Η Java προσπάθησε να τα προσθέσει ως «hack», αλλά δεν υποστηρίζονται πλήρως και είναι αρκετά πρώιμα σε σχέση με τη χρήση της C#.

Ποια γλώσσα να επιλέξεις;

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

Η Java μπορεί να χρησιμοποιηθεί σε web projects, αλλά η C# έχει «αναλάβει» πλέον τις web υπηρεσίες και APIs, ειδικά για υπηρεσίες Windows. Η Java χρησιμοποιείται κυρίως για Linux περιβάλλοντα, αν και τρέχει και σε Windows.

Για desktop εφαρμογές (είτε για προσωπικούς υπολογιστές είτε servers), οποιαδήποτε από τις δύο γλώσσες είναι επαρκής. Οι περισσότεροι προγραμματιστές Windows προτιμούν C# γιατί είναι μια γλώσσα που συμπεριλαμβάνεται εκ φύσεως στα Windows. Οι βιβλιοθήκες της C# διευκολύνουν την επεξεργασία μέσα στο λειτουργικό σύστημα, οπότε προτιμάται σε σχέση με τη Java. Εάν αποφασίσεις να κάνεις μία εφαρμογή που θα είναι διαθέσιμη παράλληλα σε διαφορετικά λειτουργικά συστήματα, η Java μπορεί να είναι καλύτερη επιλογή.

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

Πηγή: http://www.business2community.com/brandviews/upwork/java-vs-net-determining-right-software-platform-project-01747228#2qWW9iWQHkRXc8zr.97

Εάν θέλεις να γίνεις προγραμματιστής, ένα από τα πιο καλοπληρωμένα επαγγέλματα παγκοσμίως, δήλωσε εδώ το ενδιαφέρον σου για τις επόμενες δράσεις του Alliance For Digital Employability (AFDEmp). 

Αφετηρία του AFDEmp αποτέλεσε το 1ο Coding Bootcamp με Εγγυημένη Απασχόληση στην Ελλάδα: μέσω ταχύρρυθμης εκπαίδευσης 14 εβδομάδων, 30 υποψήφιοι εκτός εργασίας και χωρίς υπόβαθρο στην πληροφορική προσλήφθηκαν ως προγραμματιστές από κορυφαίες εταιρίες. Μάθε περισσότερα εδώ.