Προς το περιεχόμενο

Γλώσσες Προγραμματισμού 2014-2015


DreaMakos

Προτεινόμενες αναρτήσεις

...

Το πρόγραμμα αυτό είναι σούπερ απλοϊκό (με ελεύθερη επιλογή γλώσσας δε θα έπρεπε να πάρει σε κάποιον που ξέρει πάνω από 5 λεπτά). Δοκίμασε να το γράψεις σε C να δεις τι θα γίνει. Ή ας δοκιμάσει κάποιος άλλος και να μας γράψει εδώ όλα τα βήματα που χρειάζεται να κάνει για να φτάσει στο αποτέλεσμα για να συγκρίνουμε.

...

Το παράδειγμα που έδωσες δεν είναι καλό. Μια χαρά βγαίνει σε 10-15 λεπτά και σε C (κι αν χρησιμοποιήσεις και έτοιμες βιβλιοθήκες τότε βγαίνει κι αυτό σε 5 λεπτά).

 

...
typedef struct {
  char *str;
  size_t count;
} Domain;

struct Table {
   Domain *arr;
   size_t len;
} tab;
...
fp = fopen(bla bla);
while ( fgets(fp, line) ) {
	domain = get_domain( line );  /* change to '\0' the 3rd occurrence of '/' in line */
	if ( is_member(&tab, domain, &i) ) {
		tab.arr[i].count++;
	}
	else {
		tab_add( &tab, domain);
	}
}
fclose( fp );

qsort( tab.arr, tab.len, sizeof(*(tab.arr)), cmp_count_descending );
tab_print( tab );

tab_free( tab );
get_domain(), tab_print(), cmp_count_descending() και tab_free() είναι τετριμμένες. Η tab_add() μπορεί να ενσωματώσει και τον if έλεγχο, περίπτωση κατά την οποία δεν χρειάζεται καν η is_member().

 

Για το alloc/realloc του tab.arr μπορεί να χρησιμοποιηθεί έτοιμη βιβλιοθήκη (αν κι αυτό τετριμμένο είναι για οποιονδήποτε c programmer) η οποία βιβλιοθήκη προφανώς θα περιέχει και πολλές άλλες ευκολίες, πιθανότατα foreach, sort κλπ. Μπορείς προφανώς να χρησιμοποιήσεις και περισσότερες της μιας βιβλιοθήκης.

 

Πιο advanced πράγματα είναι αυτά που σου κάνουν τη ζωή δύσκολη στην C. Για πολλά από αυτά υπάρχουν έτοιμες βιβλιοθήκες, για επίσης πολλά άλλα χρειάζεται να γράψεις δικό σου κώδικα.

 

Όλες οι γλώσσες έχουν συν και πλην. Με σωστή καθοδήγηση η C δεν είναι άσχημη αρχή, αλλά υπάρχουν και καλύτερες επιλογές... πιο εύκολες στο να σου δώσουν γρήγορο αποτέλεσμα. Για αυτοδίδακτη εκμάθηση, η C σίγουρα δεν είναι ψηλά στην λίστα των προτιμήσεων (σίγουρα όμως ψηλότερα από την C++).

 

Όσες περισσότερες γλώσσες ξέρει κανείς, τόσο καλύτερα για το πεδίο δράσης του.

 

Για να μην παρεξηγηθούμε με κανέναν, εκφράζω τις προσωπικές μου απόψεις.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 280
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Ναι, λοιπόν:

  1. Τετριμμένα είναι για σένα, αλλά όχι για κάποιον που δεν έχει ήδη ασχοληθεί πολλά χρόνια. Είπα παραπάνω ότι "ένα στα τρία" θέματα είναι "πήγα να κάνω κάτι με πίνακες και σκάει το πρόγραμμα". Το ίδιο φόρουμ διαβάζουμε, ξέρεις τι εννοώ.
  2. Αν βάλεις όλα τα τετριμμένα μαζί πόσο θα βγει; Εξακολουθεί να είναι τετριμμένο; (και πάλι, όχι για σένα προσωπικά -- δεν είσαι εσύ το άτομο για το οποίο μιλάμε)

 

Αν μου επιτρέπεις, πραγματικά τετριμμένο είναι αυτό:

$urls = file('urls.txt');
$domains = array_map(function($url) { return parse_url($url, PHP_URL_HOST); }, $urls);
$occurrences = array_count_values($domains);
arsort($occurrences);
print_r($occurrences);

και αυτό:

var occurrences = File.ReadAllLines("urls.txt")
        .Select(u => (new Uri(u)).Host)
        .GroupBy(g => g)
        .OrderByDescending(g => g.Count());
        
foreach (var occurrence in occurrences)
{
    Console.WriteLine("{0} x {1}", occurrence.Key, occurrence.Count());
}

όπως και τα αντίστοιχα σε π.χ. Ruby, Python, Java, JavaScript.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Αν καταλαβαίνω καλά τι γράφεις...

 

Αυτό συμβαίνει επειδή στη C μπορείς να μη μάθεις παρά μόνο τα σούπερ πολύ απλά και μ' αυτά τα πολύ απλά να κάνεις 5 ελάχιστα πράγματα, που στις περισσότερες άλλες γλώσσες θα χρειαζόταν να μάθεις περισσότερα για να κάνεις το ίδιο.

 

Το πρόβλημα είναι πως η "χαρά" αυτή κρατάει μόνο όταν οι φιλοδοξίες σου φτάνουν μέχρι τα ελάχιστα πράγματα που λέω παραπάνω. Αν χρειαστεί να κάνεις οτιδήποτε έστω και λίγο πιο περίπλοκο πολύ σύντομα φτάνεις να καταριέσαι την ώρα. Μη πας μακριά, ρίξε μια ματιά στο φόρουμ που ένα στα τρία θέματα είναι "πήγα να κάνω κάτι με πίνακες στη C και το πρόγραμμά μου κρασάρει". Αυτό σίγουρα δε συμβαίνει επειδή η C είναι καλή για εκμάθηση προγραμματισμού, συμβαίνει επειδή ξεκίνησε κάποιος να μαθαίνει και μόλις πέρασε τη for και την printf άρχισαν τα όργανα.

 

Το ξέρεις ότι στο πολύ πολύ αρχάριο στάδιο μπορείς να προγραμματίσεις π.χ. σε PHP και το πρόγραμμά σου θα μοιάζει πάρα πολύ με το αντίστοιχο πρόγραμμα σε C? Δοκίμασε να το κάνεις για να μπορείς μετά να κρίνεις ο ίδιος ποιά από τις δύο γλώσσες θα σε διευκόλυνε περισσότερο.

 

Δύο λοιπόν είναι τα points που θέλω να κάνω:

  1. Για να μπορεί κανείς να κρίνει χρειάζεται εμπειρία και πλατειά γνώση. Η λογική που λέγαμε παραπάνω "αυτό ξέρω αυτό μου αρέσει" είναι σεβαστή αλλά δε μπορεί να είναι επιχείρημα σε μια συγκριτική κουβέντα. Φαντάσου π.χ. να έλεγε κάποιος "τα Windows είναι το καλύτερο λειτουργικό γιατί δοκίμασα Linux και μπερδεύτηκα". Το συμπέρασμα, άσχετα αν είναι αλήθεια ή όχι, απλά δεν προκύπτει από τα δεδομένα.
  2. Μη συγχέουμε το "μαθαίνω προγραμματισμό" με το "μαθαίνω να γράφω προγράμματα των 20 γραμμών". Που και το δεύτερο να θέλεις, πάλι η C δεν είναι η καλύτερη επιλογή να ξεκινήσεις.

Και κλείνοντας, ένα χειροπιαστό παράδειγμα για το #2. Πες ότι θες να κάνεις "κάτι χρήσιμο": έχεις ένα αρχείο με URLs, μία σε κάθε γραμμή. Θέλεις να τις διαβάσεις, να πάρεις από κάθε μία το domain name ("www.insomnia.gr") και μετά να τυπώσεις μια λίστα με domain names και πόσες φορές εμφανίζεται το καθένα μέσα στο αρχείο εισόδου, ταξινομημένη κατά φθίνουσα σειρά αριθμού εμφανίσεων.

 

Το πρόγραμμα αυτό είναι σούπερ απλοϊκό (με ελεύθερη επιλογή γλώσσας δε θα έπρεπε να πάρει σε κάποιον που ξέρει πάνω από 5 λεπτά). Δοκίμασε να το γράψεις σε C να δεις τι θα γίνει. Ή ας δοκιμάσει κάποιος άλλος και να μας γράψει εδώ όλα τα βήματα που χρειάζεται να κάνει για να φτάσει στο αποτέλεσμα για να συγκρίνουμε.

 

Όσον αφορά την εκμάθηση, η C είναι πολύ καλή για να εμβαθύνεις σε παραπρογραμματιστικές έννοιες (π.χ. pointers -- καλοί χρυσοί έχουν τις χάρες όλες, αλλά μπορείς να στήσεις ολόκληρο το facebook χωρίς να ξέρεις τι είναι pointer). Αν δεν είναι αυτός ο σκοπός σου μιλάμε για μαζοχισμό.

 

Φιλε defacer την καλησπερα μου και χρονια πολλα με υγεια πανω απ ολα.Πραγματι εχεις ενα μεγαλο δικιο στο οτι για να κρινω τα μειονεκτηματα/πλεονεκτηματα διαφορων γλωσσων πρεπει να κατεχω καποιο επιπεδο οποτε θα ξαναεπανελθω σε κανενα 2 χρονακια που θα εχω ανεβει μερικα σκαλοπατακια ακομα :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, λοιπόν:

  • Τετριμμένα είναι για σένα, αλλά όχι για κάποιον που δεν έχει ήδη ασχοληθεί πολλά χρόνια. Είπα παραπάνω ότι "ένα στα τρία" θέματα είναι "πήγα να κάνω κάτι με πίνακες και σκάει το πρόγραμμα". Το ίδιο φόρουμ διαβάζουμε, ξέρεις τι εννοώ.
  • Αν βάλεις όλα τα τετριμμένα μαζί πόσο θα βγει; Εξακολουθεί να είναι τετριμμένο; (και πάλι, όχι για σένα προσωπικά -- δεν είσαι εσύ το άτομο για το οποίο μιλάμε)
Αν μου επιτρέπεις, πραγματικά τετριμμένο είναι αυτό:

$urls = file('urls.txt');
$domains = array_map(function($url) { return parse_url($url, PHP_URL_HOST); }, $urls);
$occurrences = array_count_values($domains);
arsort($occurrences);
print_r($occurrences);

 

Αν χρησιμοποιήσω κι εγώ έτοιμες βιβλιοθήκες, ο κώδικας σε C θα βγει πολύ λιγότερος από αυτόν που έδωσα. Πολύ παραπλήσιος με αυτόν που δίνεις σε php. Το πρόβλημα στη C είναι όπως έγραψα εξαρχής πως σε αντίθεση με τις άλλες γλώσσες, το στάνταρ δεν κάνει enforce καμία high-level βιβλιοθήκη, με αποτέλεσμα να υπάρχουν/χρησιμοποιούνται πολλές και διάφορες που κάνουν το ίδιο πράγμα, αλλά με διαφορετικό τρόπο, σύνταξη, api, κλπ.

 

Btw, το τετριμμένο του "πραγματικά τετριμμένου" που όρισες για τον php κώδικα που έδωσες, εμπεριέχει εξοικείωση με συγκεκριμένες high-level συναρτήσεις της php... το αυτό και για τον C# κώδικα που έδωσες... ότι δηλαδή προϋποθέτει και η εξοικείωση με μια έτοιμη high-level βιβλιοθήκη στη C (έχω ήδη αναφέρει ποια είναι η βασική διαφορά).

 

Λιγότερες γραμμές κώδικα ΔΕΝ σημαίνει πιο τετριμμένος κώδικάς.

 

EDIT:

 

Φίλε bazinga,

 

δεν είσαι μόνος σου στο θέμα του OOP. Όχι μόνο με το OOP ειδικά, αλλά γενικότερα με τη μετάβαση από την φιλοσοφία ενός οπουδήποτε programming paradigm στη φιλοσοφία άλλου programming paradigm.

 

Είναι πολύ συνηθισμένο "πρόβλημα" και απόλυτα φυσιολογικό. Για όλους μας, έμπειρους και μη.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν χρησιμοποιήσω κι εγώ έτοιμες βιβλιοθήκες, ο κώδικας σε C θα βγει πολύ λιγότερος από αυτόν που έδωσα. Πολύ παραπλήσιος με αυτόν που δίνεις σε php. Το πρόβλημα στη C είναι όπως έγραψα εξαρχής πως σε αντίθεση με τις άλλες γλώσσες, το στάνταρ δεν κάνει enforce καμία high-level βιβλιοθήκη, με αποτέλεσμα να υπάρχουν/χρησιμοποιούνται πολλές και διάφορες που κάνουν το ίδιο πράγμα, αλλά με διαφορετικό τρόπο, σύνταξη, api, κλπ.

 

Συγγνώμη αλλά δε χρησιμοποίησα καμία έτοιμη τρίτη βιβλιοθήκη, μόνο πράγματα που έρχονται στάνταρ μαζί με τη γλώσσα. Γιατί αν τα απαγορεύσουμε αυτά τότε παρακαλώ και στη C χωρίς qsort και χωρίς printf (να βάλουμε το νέοπα να γράψει μια variadic μόνος του να γουστάρουμε). Αντίστοιχα στη C++ χωρίς std::vector. Καταλαβαίνεις πόσο γελοίο ακούγεται.

 

Το ότι η standard library της C είναι πολύ μινιμαλιστική έχει πλεονεκτήματα (portability και άγιος ο θεός) που στην εκμάθηση δε μας απασχολούν καθόλου, και μειονεκτήματα που στην εκμάθηση πονάνε πολύ. Γενικά η C δεν είναι καθόλου expressive γλώσσα: πρέπει για να κάνεις αυτό που θέλεις να καθορίσεις με αηδιαστική λεπτομέρεια κάθε ένα μικρό βηματάκι που χρειάζεται. Άλλες γλώσσες λύνουν αυτό το πρόβλημα με τη standard library και σε αφήνουν να εστιάσεις στο ζουμί της υπόθεσης.

 

Για τα περι "τετριμμένου", νομίζω έκανα το point που αναφέρω παραπάνω: το τι μπορεί να θεωρούμε τετριμμένο εγώ και εσύ δε σημαίνει τίποτα απολύτως.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@defacer:

 

Μα δεν σου είπα να τα απαγορεύσεις. Το αντίθετο! Πολύ καλά κάνεις και τα χρησιμοποιείς. Αυτό που σου είπα είναι πως το συγκεκριμένο παράδειγμα δεν ήταν καλό για να δείξεις τα μειονεκτήματα της C (ήταν δηλαδή πολύ εύκολο και σε C, ακόμα και χωρίς χρήση έτοιμων βιβλιοθηκών).

 

@παπι:

 

Αν "γενικού σκοπού" εννοείς generics, έχει και η C το κάτι τις της (macros, void, pointers) αλλά προφανώς σε πολύ πιο raw μορφή. Οι high-level βιβλιοθήκες μπορούν να χρησιμοποιούν και generics (και internally και exposed στον user).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Φίλε bazinga,

 

δεν είσαι μόνος σου στο θέμα του OOP. Όχι μόνο με το OOP ειδικά, αλλά γενικότερα με τη μετάβαση από την φιλοσοφία ενός οπουδήποτε programming paradigm στη φιλοσοφία άλλου programming paradigm.

 

Είναι πολύ συνηθισμένο "πρόβλημα" και απόλυτα φυσιολογικό. Για όλους μας, έμπειρους και μη.

 

Σ ευχαριστω φιλε migf1 και χρονια πολλα :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@defacer:

 

Μα δεν σου είπα να τα απαγορεύσεις. Το αντίθετο! Πολύ καλά κάνεις και τα χρησιμοποιείς. Αυτό που σου είπα είναι πως το συγκεκριμένο παράδειγμα δεν ήταν καλό για να δείξεις τα μειονεκτήματα της C (ήταν δηλαδή πολύ εύκολο και σε C, ακόμα και χωρίς χρήση έτοιμων βιβλιοθηκών).

 

Νομίζω πως αυτό θα μπορεί να το κρίνει κάποιος που είναι σε πιο αρχάριο επίπεδο, αφού δει πρώτα όλο τον κώδικα που χρειάζεται να γράψεις και τον οποίο περάσαμε στο ντούκου παραπάνω διότι αλλιώς αντί για 20 γραμμές που έδωσες θα ήταν 120. Και το νούμερο με επιφύλαξη, γιατί ίσως 120 να μη φτάνουν ούτε για να γραφτεί σωστά η get_domain.  :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω πως αυτό θα μπορεί να το κρίνει κάποιος που είναι σε πιο αρχάριο επίπεδο, αφού δει πρώτα όλο τον κώδικα που χρειάζεται να γράψεις και τον οποίο περάσαμε στο ντούκου παραπάνω διότι αλλιώς αντί για 20 γραμμές που έδωσες θα ήταν 120. Και το νούμερο με επιφύλαξη, γιατί ίσως 120 να μη φτάνουν ούτε για να γραφτεί σωστά η get_domain.  :P

Τι το δύσκολο έχει η get_domain();

char *get_domain( char *str )
{
  if ( !str ) {
    return NULL;
  }

  int  i = 0;
  char *cp = str;
  while ( *cp && i < 3 ) {
    if ( *cp == '\' ) {
      i++;
    }
    cp++;
  }

  if ( 3 != i ) {
    return NULL;
  }

  *cp = '\0';
  return str;
}
Anyway, το point μου είναι πως και ο κώδικας που έδωσες τόσο σε php όσο και σε c# δεν τον γράφει αρχάριος. Προφανώς στη C πρέπει να έχει διαβάσει περισσότερα από ότι σε php, c#, κλπ.

 

Βασικά, στη C αν δεν εξοικειωθεί με pointers δεν έχει ιδιαίτερη τύχη.

 

Ευχαριστώ φίλε bazinga, επίσης!

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοίτα τώρα έχουμε ξεφύγει χωρίς λόγο, αλλά αυτό που έδωσες τι υποτίθεται ότι κάνει; Η get_domain είναι αυτή που θα της δώσεις κάτι που εν δυνάμει είναι αυτό:
 
scheme://username:password@domain:port/path?query_string#fragment_id
 
και θα σου επιστρέψει "domain". Για λεπτομέρειες, RFC 3986.

 

Τον κώδικα που έδωσα π.χ. σε PHP δεν καταλαβαίνω γιατί να μη τον γράψει κάποιος σχετικά αρχάριος. Αλλά ακόμα κι έτσι, ας αλλάξει την array_map με αυτό:

$domains = [];
foreach ($urls as $url) {
    $domains[] = parse_url(...);
}

Δε νομίζω ότι χειροτέρεψε ιδιαίτερα, και τα υπόλοιπα είναι καθαρά θέμα "βρες τη function" για το οποίο το μόνο που χρειάζεται είναι να πας στο manual και να ξέρεις να διαβάζεις, ή απλά να ρωτήσεις. Είναι τέτοιου είδους η ερώτηση που απαντάται πλήρως σε μία γραμμή.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοίτα τώρα έχουμε ξεφύγει χωρίς λόγο, αλλά αυτό που έδωσες τι υποτίθεται ότι κάνει; Η get_domain είναι αυτή που θα της δώσεις κάτι που εν δυνάμει είναι αυτό:

 

scheme://username:password@domain:port/path?query_string#fragment_id

 

και θα σου επιστρέψει "domain". Για λεπτομέρειες, RFC 3986.

Σε αυτή την περίπτωση χρησιμοποιείς έτοιμο url parser. Άλλο κατάλαβα πως ζητούσες στο αρχικό σου ποστ.

Πως από π.χ. http://blabla.com/blab/bla

να επιστρέψεις: http://blabla.com

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η φιλοσοφία της συζήτησης έτσι όπως έχει εξελιχθεί συμπτύσσεται στην φράση "batteries included" (πχ. υπάρχει έτοιμος URI parser κλπ).. στην C "batteries not included" οπότε πας και τις αγοράζεις μόνος σου, φροντίζεις να βρεις και το σωστό τύπο και τέλος, απλά πράματα. :)

 

Τώρα αν δεν υπάρχουν, ε.. ή άλλαξε παιχνίδι που να τις συμπεριλαμβάνει ή γίνε μηχανικός και φτιάξτες μόνος σου.

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η φιλοσοφία της συζήτησης έτσι όπως έχει εξελιχθεί συμπτύσσεται στην φράση "batteries included" (πχ. υπάρχει έτοιμος URI parser κλπ).. στην C "batteries not included" οπότε πας και τις αγοράζεις μόνος σου, φροντίζεις να βρεις και το σωστό τύπο και τέλος, απλά πράματα. :)

 

Τώρα αν δεν υπάρχουν, ε.. ή άλλαξε παιχνίδι που να τις συμπεριλαμβάνει ή γίνε μηχανικός και φτιάξτες μόνος σου.

Δεν ειναι το uri parser... Στη c κακα τα ψεματα, οταν πας να γραψεις κατι που θελει διαχειριση δεδομενω, απλα λες "ω ρε πουστη μου". Δεν εχει τιποτα, μονο μια qsort και αυτη δουλευει μονο σε πινακες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ειναι το uri parser... Στη c κακα τα ψεματα, οταν πας να γραψεις κατι που θελει διαχειριση δεδομενω, απλα λες "ω ρε πουστη μου". Δεν εχει τιποτα, μονο μια qsort και αυτη δουλευει μονο σε πινακες.

Έχει και bsearch() :lol:

 

Πέρα από την πλάκα, είναι αυτό που έγραψα εξαρχής και που πολύ εύστοχα χαρακτήρισε με μια φράση "batteries (not) included" ο DirectX.

 

Η επιλογή είναι συνειδητή, γιατί δίνει άλλου είδους πλεονεκτήματα.

 

Για μένα το μεγάλο ζόρι που πρέπει να τραβήξει κάποιος που μαθαίνει C είναι να εξοικειωθεί με structs, pointers και macros, και όχι το "batteries (not) included".

 

Κι αυτό διότι για όλα τα major sectors (π.χ. databases, graphics, networking, games, scientific, κλπ) παρέχεται τουλάχιστον μια 3rd party έτοιμη high-level βιβλιοθήκη για C (συνήθως υπάρχουν δεκάδες ανά sector).

 

Αλλά όσο high-level και να είναι μια βιβλιοθήκη, αν δεν είσαι ήδη άνετος με struct, macros και pointers, αργά ή γρήγορα θα τα βρεις παλούκια όσο προχωράς πιο βαθειά, ακόμα και με τις βιβλιοθήκες.

 

Κάτι αντίστοιχο συμβαίνει και στις "batteries included" γλώσσες, αλλά με διαφορετικά building tools. Π.χ. στη Java, όσες high-level συναρτήσεις και να έχει "included" αν δεν είσαι ήδη άνετος με τα OOP details, αργά ή γρήγορα θα τα βρεις παλούκια όσο προχωράς πιο βαθειά.

 

Το καλό με τη Java (php, c#, κλπ) είναι πως οι high-level βιβλιοθήκες είναι στανταρισμένες (ενσωματωμένες στη γλώσσα) αλλά κι εκεί δεν είναι όλα ρόδινα. Π.χ. ανά τακτά χρονικά διαστήματα, ολόκληρες βιβλιοθήκες που έχεις μάθει χαρακτηρίζονται ως depreciated, προς χάριν άλλων νεότερων.

 

Γενικώς, δεν υπάρχει νόημα στο να προσπαθούμε να βγάλουμε μια δημοφιλή γλώσσα καλύτερη ή χειρότερη από κάποια άλλη δημοφιλή γλώσσα. Υπάρχουν λόγοι που παραμένουν δημοφιλείς όσες γλώσσες παραμένουν δημοφιλείς. Έχει να κάνει με το τι θέλεις να κάνεις κάθε φορά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...