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

Πρωτη Γλωσσα


thyra_7

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

@timon

 

 

 

lol :-D

 

How many OO programmers does it take to change a light bulb?

 

 

None. You just tell the bulb to change itself.

 

 

 

BTW αν δεν έχεις δει αυτό δες το τώρα :-D

http://www.youtube.com/watch?v=1JZnj4eNHXE

 

 

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

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

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

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

Ο OP ως τελείως αρχάριος στον προγραμματισμό ζητάει να μάθει μια γλώσσα. Του πρότεινα Python και επίσης να μη χάσει χρόνο με το να ασχοληθεί με C++ για τους λόγους που είπα. Οι περισσότεροι που θεωρούν την Python καλή μόνο για εκμάθηση δεν έχουν ιδέα από Python.

Νομίζω οι περισσότεροι συμφωνήσαμε λίγο-πολύ πως η Python είναι μια καλή επιλογή για όποιον θέλει να ξεκινήσει μόνος του, παραθέσαμε και λόγους. Σχετικά όμως με την 2η πρόταση στην παραπάνω παράθεση, πιστεύω είναι πολύ εύκολο να αντιστρέψει κανείς το επιχείρημα σου και να σε ρωτήσει αν έχεις ασχοληθεί ποτέ σοβαρά με την C++, ιδανικά σε επαγγελματικό περιβάλλον.

 

Το επιχείρημα ότι όλες οι γλώσσες έχουν τη χρήση τους είναι προφανές, αλλιώς δε θα υπήρχαν. Το πραγματικό ερώτημα είναι κατά πόσο αξίζει κάποιος να επενδύσει το χρόνο του σε κάτι σε σχέση με τα αποτελέσματα που αυτό θα του δώσει, συγκριτικά με άλλες λύσεις. Το ότι υπάρχουν game engines σε C++ λέει απλά ότι υπάρχουν game engines σε C++ (σε πολλές από τις οποίες υπάρχουν Python bindings btw). Και τα λειτουργικά συστήματα και οι drivers γράφονται σε C και assembly, πόσοι από εδώ μέσα ασχολούνται με κάτι τέτοιο, και αυτό τι σημαίνει δηλαδή ότι πρέπει να μάθει κάποιος assembly? Με ενδιαφέρει τι μπορώ με μια γλώσσα να χρησιμοποιήσω, όχι σε τι γλώσσα είναι κάτι γραμμένο.

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

 

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

 

Το ότι υπάρχουν game engines σε C++ μπορεί να λέει "απλά" ότι υπάρχουν games engines σε C++, όπως γράφεις παραπάνω. Το ότι όμως η συντριπτική πλειοψηφία των game engines είναι γραμμένα σε C++ όχι μόνο είναι established fact αλλά λέει κιόλας πάρα πολλά περισσότερα. Και ο νοών νοήτω.

 

Τέλος, το επιχείρημα της ταχύτητας μόνο γέλιο μου φέρνει καθώς το 99% των προγραμμάτων τρέχουν αργά γιατί είναι κακογραμμένα και όχι λόγω επιλογής γλώσσας.

 

Ίσως να σου φέρνει γέλιο γιατί ίσως δεν έχεις ασχοληθεί ποτέ σοβαρά με resource critical projects.

 

Ειδικά σε επαγγελματικό περιβάλλον το "resource critical" δεν σημαίνει μόνο γράφω για ενσωματωμένα ή κάνω system programming, σημαίνει επίσης και πως θέλω το προϊόν μου ιδανικά να τρέχει σε όσο το δυνατόν περισσότερες πλατφόρμες και hardware setups, διότι για παράδειγμα στα games στα οποία αναφερθήκαμε αποτελεί παράγοντα ζωτικής σημασίας για την επιτυχία, ακόμα και για την επιβίωση της εταιρίας που το κατασκευάζει. Όσο πιο υψηλά είναι τα hardware requirements του προϊόντος σου, τόσο μειώνεις το target market σου.

 

Ένα άλλο παράδειγμα, πιστεύεις ας πούμε ότι ένας καλογραμμένος compiler γραμμένος σε οποιαδήποτε scripting γλώσσα (λέμε τώρα) θα προκαλέσει γέλιο ή κλάμα στους "πελάτες" σου όταν πάνε να τον χρησιμοποιήσουν. Ή ακόμα χειρότερα όταν έστω και από τύχη τον συγκρίνουν με κάποιον ανταγωνιστικό που θα είναι γραμμένος σε C ή σε C++; Ή ας πούμε πιστεύεις θα γελάσεις πολύ αν συγκρίνεις se everyday use μια db γραμμένη σε καλογραμμένη python με μια μέση να σου πω εγώ υλοποίηση σε C++;

 

Έναν browser; Μια CAD εφαρμογή; Μια μαθηματική βιβλιοθήκη; κλπ, κλπ

 

Χώρια που αν ένα μέρος του κώδικα είναι κρίσιμο μπορεί να γίνει optimized με C. Αυτό είναι και το ωραίο με τις scripting γλώσσες, ότι μπορούν έυκολα να αλληλεπιδράσουν με βιβλιοθήκες που είναι γραμμένες σε FORTRAN, C κλπ.

Τώρα μάλιστα, εδώ έχουμε κοινό σημείο επαφής! :)

 

Τα bindings λοιπόν ήταν και παραμένουν (εικάζω θα συνεχίσουν) δημοφιλέστατη και αποτελεσματικότατη πρακτική. Στα νέα projects είναι απαραίτητος συμβιβασμός, μιας και έχουν την δυναμική να κατεβάσουν δραματικά όχι μόνο τον χρόνο παραγωγής αλλά και τον χρόνο συντήρησης.

 

Δεν είναι όμως πάντα το ίδιο χρήσιμα. Σε υπάρχοντα projects, που για παράδειγμα είναι ήδη γραμμένα σε C++ και έχουν ήδη από πίσω τους έτοιμες ή custom βιβλιοθήκες και toolsets, η απόφαση να μετατρέψουν κάποια HL layers σε scripting language κάθε άλλο παρά no-brainer είναι.

 

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

 

Κλείνοντας θέλω να σταθώ στο ότι μέχρι τώρα υποστήριζες πως αν θες να γράψεις native γράψε σε C, αν θες να γράψεις OOP γράψε σε Java/C# αλλά τώρα υποστηρίζεις bindings με την Python κυρίαρχη (δηλαδή γράφε σε Python κι αν θέλεις critical code κάνε binding σε C/C++).

 

Αν έχεις ήδη καλογραμμένο, καλοδοκιμασμένο, καλοσυντηρημένο κι επιτυχημένο codebase για το project σου γραμμένο σε C++, και όποτε δεν σε νοιάζει το critical να το έχεις με scripting, για ποιο ρεαλιστικό λόγο να το γυρίσεις τούμπα (να το γυρίσεις δηλαδή σε Python και όταν θέλεις critical να κάνεις bind σε C++)΄;

 

Ο κανόνας είναι το 1ο και όχι το 2ο. Όταν κι εάν αλλάξουν τα δεδομένα (ανάγκες, απαιτήσεις) ενδέχεται να αντιστραφεί, αλλά προσωπικά δεν το βλέπω συμβαίνει σύντομα. Μπορεί και να σφάλω. Προφανώς είμαι ενήμερος πως υπάρχει ήδη η τάση αυτή, κυρίως όμως στο app programming και μάλιστα κυρίως στα higher-levels της εκάστοτε εφαρμογής (για παράδειγμα το Blender δίνει στον τελικό χρήστη python-api για python scripting, αλλά όλα το υπόλοιπο είναι γραμμένο σε C/C++... αν δεν ήταν θα το είχε φάει η μαρμάγκα (μιλώντας πάντα με τα έως τώρα δεδομένα).

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

@migf1

Συμφωνώ σχεδόν σε όλα τα σημεία από το post σου. Το ότι υπάρχει σήμερα πολύ κώδικας σε C++ κάνει πολλούς να το χρησιμοποιούν σαν επιχείρημα ότι η C++ είναι καλή γλώσσα. IMO ο λόγος είναι ότι ο (sneaky bastard) Stroustrup έδωσε στη C++ ίδια σύνταξη με τη C, οπότε όσοι ήδη ξέραν C, δλδ η πλειοψηφία των προγραμματιστών τότε, (νόμισαν) ότι είδαν φως και μπήκαν. Αν η C++ (IMO) δεν είχε ίδια σύνταξη με C, τώρα δε θα την ήξερε ούτε η μάνα της. Επίσης το appeal to popularity Πάλι δεν είναι έγκυρο επιχείρημα, γιατί αν κρίνουμε από τον Tiobe index (όχι ότι απαραίτητα το πιστεύω φυσικά) η C++ βρίσκεται σε ελεύθερη πτώση ενώ η C μεσουρανεί.

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

@migf1

Συμφωνώ σχεδόν σε όλα τα σημεία από το post σου. Το ότι υπάρχει σήμερα πολύ κώδικας σε C++ κάνει πολλούς να το χρησιμοποιούν σαν επιχείρημα ότι η C++ είναι καλή γλώσσα. IMO ο λόγος είναι ότι ο (sneaky bastard) Stroustrup έδωσε στη C++ ίδια σύνταξη με τη C, οπότε όσοι ήδη ξέραν C, δλδ η πλειοψηφία των προγραμματιστών τότε, (νόμισαν) ότι είδαν φως και μπήκαν. Αν η C++ (IMO) δεν είχε ίδια σύνταξη με C, τώρα δε θα την ήξερε ούτε η μάνα της. Επίσης το appeal to popularity Πάλι δεν είναι έγκυρο επιχείρημα, γιατί αν κρίνουμε από τον Tiobe index (όχι ότι απαραίτητα το πιστεύω φυσικά) η C++ βρίσκεται σε ελεύθερη πτώση ενώ η C μεσουρανεί.

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

 

Προσωπικά την αντιπαθώ την C++ (έχω περισσότερο C mentality και κυρίως C εξειδίκευση), όταν χρειάστηκε όμως όχι μόνο την χρησιμοποίησα αλλά την πρότεινα κιόλας. Οι προσωπικές μας προτιμήσεις είναι και υπαρκτές και θεμιτές, αλλά αν τις αφήνουμε να επηρεάζουν τη δουλειά μας τότε μάλλον μας ζημιώνουν παρά μας ωφελούν.

 

Όλες οι γλώσσες έχουν + και - και όλες τουλάχιστον οι δημοφιλείς είναι χρήσιμες.

 

Ακριβώς τα ίδια υποστηρίζω και όταν αντιμετωπίζω C bashers (που είναι ουκ ολίγοι). Γενικώς το language bashing δεν το θεωρώ ούτε δείγμα ωριμότητας ούτε γνώσης/εμπειρίας. Συνήθως είναι δείγμα για τα ακριβώς αντίθετα :P

 

ΥΓ. Σχετικά με το TIOBE, η C++ βρίσκεται μονίμως στο top-3, top-4 εδώ και δεκαετίες. Αυτό το θεωρώ πολύ πιο σημαντικό κριτήριο από οποιοδήποτε πρόσκαιρο σκαμπανέβασμα ;)

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

IMO ο λόγος είναι ότι ο (sneaky bastard) Stroustrup έδωσε στη C++ ίδια σύνταξη με τη C, οπότε όσοι ήδη ξέραν C, δλδ η πλειοψηφία των προγραμματιστών τότε, (νόμισαν) ότι είδαν φως και μπήκαν.

 

Τόσο sneaky που ο ίδιος ονόμαζε τη γλώσσα στην οποία δούλευε αρχικά "new C" και μετά "C with classes". Μιλάμε για τελείως υπόγειες ενέργειες.

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

 

 

Τόσο sneaky που ο ίδιος ονόμαζε τη γλώσσα στην οποία δούλευε αρχικά "new C" και μετά "C with classes". Μιλάμε για τελειώς υπόγειες ενέργειες.

Legend has it πως ο Richie και ο Stroustup ήταν και παρέμειναν φίλοι μέχρι και τον πρόσφατο θάνατο του πρώτου. Δούλευαν μάλιστα, από ότι έχω διαβάσει, 3 πόρτες απόσταση ο ένας από τον άλλον, και έκαναν παρέα ανταλλάζοντας απόψεις.

 

Αυτή η κόντρα μεταξύ των 2 γλωσσών είναι δημιούργημα των εκατέρωθεν fanboys, σύμφωνα με τον θρύλο ;)

 

 

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

Τόσο sneaky που ο ίδιος ονόμαζε τη γλώσσα στην οποία δούλευε αρχικά "new C" και μετά "C with classes". Μιλάμε για τελείως υπόγειες ενέργειες.

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

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

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

 

Εσύ δηλαδή αν έφτιαχνες ένα καινούριο εργαλείο για κλάδεμα δε θα προσπαθούσες να το κάνεις όσο παρόμοιο στη χρήση μπορείς με τα υπάρχοντα κλαδευτήρια;

 

Το γεγονός ότι υπάρχουν περίπου 50 εκατομμύρια γλώσσες προγραμματισμού με C-style syntax είναι λόγω του ότι είναι καλή ιδέα να μειώνεις τη δυσκολία εκμάθησης του οποιοδήποτε καινούριου πράγματος ή λόγω του ότι οι sneaky bastards δημιουργοί τους ήθελαν να σε εθίσουν χωρίς να το καταλάβεις;

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

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

 

Εσύ δηλαδή αν έφτιαχνες ένα καινούριο εργαλείο για κλάδεμα δε θα προσπαθούσες να το κάνεις όσο παρόμοιο στη χρήση μπορείς με τα υπάρχοντα κλαδευτήρια;

 

Το γεγονός ότι υπάρχουν περίπου 50 εκατομμύρια γλώσσες προγραμματισμού με C-style syntax είναι λόγω του ότι είναι καλή ιδέα να μειώνεις τη δυσκολία εκμάθησης του οποιοδήποτε καινούριου πράγματος ή λόγω του ότι οι sneaky bastards δημιουργοί τους ήθελαν να σε εθίσουν χωρίς να το καταλάβεις;

Άλλο το "C-style syntax" και άλλο το ότι κράτησε ίδια και απαράλλαχτη τη σύνταξη της C (πολλά C προγράμματα κάνουν απευθείας ή με λίγες αλλαγές compile με τον compiler της C++), παρότι σε πολλά στοιχεία της χωράει βελτίωση και πολλά δεν "κολλάνε" σε μια OO γλώσσα.

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

Το πρόβλημα με τη C++ (ΙΜΟ) είναι όπως είπα ότι προσπαθεί να τα κάνει όλα ταυτόχρονα, να πιάσει όλα τα επίπεδα από low σε high level και καταλήγει να μην κάνει τίποτα σωστά.

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

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

 

Για το πρώτο έχω να σχολιάσω ότι δεν μιλάμε ούτε για ορθή λειτουργία (αφού η c++ είναι Turing-complete σε θεωρητικό επίπεδο εξορισμού δουλεύει το ίδιο σωστά με οποιαδήποτε άλλη γλώσσα προγραμματισμού) ούτε για συμβατότητα, την οποία φαίνεσαι να μπερδεύεις με την ομοιότητα (για την οποία όντως μιλάμε). Ούτε η C++ είναι συμβατή με τη C ούτε το αντίθετο.

 

Για το δεύτερο αν θέλεις να εξηγήσεις λίγο τι εννοείς; Κάποιο παράδειγμα όπου κάτι "δεν γίνεται σωστά"; Γιατί είναι λίγο γενική η έκφραση και μπορώ να φανταστώ τόσες ερμηνείες που το νόημά της δεν είναι προφανές.

 

Και βέβαια μη ξεχνάς ότι η c++ φανερά κάνει σωστά τουλάχιστον αυτό το πράγμα το οποίο για πολλούς ανθρώπους είναι το μοναδικό που έχει σημασία: gets the job done. Διαφορετικά δε θα τη χρησιμοποιούσε κανείς.

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

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

 

Για το πρώτο έχω να σχολιάσω ότι δεν μιλάμε ούτε για ορθή λειτουργία (αφού η c++ είναι Turing-complete σε θεωρητικό επίπεδο εξορισμού δουλεύει το ίδιο σωστά με οποιαδήποτε άλλη γλώσσα προγραμματισμού) ούτε για συμβατότητα, την οποία φαίνεσαι να μπερδεύεις με την ομοιότητα (για την οποία όντως μιλάμε). Ούτε η C++ είναι συμβατή με τη C ούτε το αντίθετο.

 

Για το δεύτερο αν θέλεις να εξηγήσεις λίγο τι εννοείς; Κάποιο παράδειγμα όπου κάτι "δεν γίνεται σωστά"; Γιατί είναι λίγο γενική η έκφραση και μπορώ να φανταστώ τόσες ερμηνείες που το νόημά της δεν είναι προφανές.

 

Και βέβαια μη ξεχνάς ότι η c++ φανερά κάνει σωστά τουλάχιστον αυτό το πράγμα το οποίο για πολλούς ανθρώπους είναι το μοναδικό που έχει σημασία: gets the job done. Διαφορετικά δε θα τη χρησιμοποιούσε κανείς.

Sry, λάθος λέξη χρησιμοποίησα, αντικατέστησε το ορθότητα με το "λειτουργικότητα". Δηλαδή πχ το typedef τι ρόλο βαράει εκτός από το να μπερδεύει τον αναγνώστη στο τι τύπος είναι τι. Για χάρη της συμβατότητας διαιωνίζει ένα σφάλμα.

Πάλι μη μου βάζεις σαν επιχείρημα το appeal to popularity. Και η Visual Basic χρησιμποιείται από πολύ κόσμο τι σημαίνει αυτό; Επίσης "gets the job done"? Σίγουρα δύο κόντρα πλακέ με 1cm καρφιά μπορείς να τα καρφώσεις με βαριοπούλα "it gets the job done"

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

Το typedef, μιας και το επέλεξες, βαράει πολλούς ρόλους.

 

1. Διευκολύνει τον προγραμματιστή να μην παιδεύεται με μεγάλα type names:

 

>// .h
typedef map<int, vector<set<string> > > mapType;
// .cpp
mapType theMap;

2. Επιτρέπει "code reuse" στα type names, με όλα τα γνωστά πλεονεκτήματα του don't repeat yourself:

 

>// .h
typedef map<int, vector<set<string> > > mapType;
// .cpp
mapType incoming;
// ...100 lines later...
mapType outgoing;

3. Επιτρέπει το decoupling κώδικα που χρησιμοποιεί μια class από τα συγκεκριμένα types που χρησιμοποιεί το implementation της class:

 

>
map<int, string> theMap;
map<int, string>::const_iterator i = theMap.begin();

Δε χρειάζεται να ξέρεις τι ακριβώς type είναι το const_iterator, επομένως ο implementor του map μπορεί να το αλλάξει και ο κώδικας να κάνει recompile χωρίς πρόβλημα.

 

4. Παίζει το ρόλο του type μιας μεταβλητής όταν κάνεις template metaprogramming, επιτρέποντάς σου να ορίσεις ένα όνομα το οποίο δεν ξέρουμε απαραίτητα σε τι αντιστοιχεί πρωτού γίνουν όλα τα template instantiations κατά το compilation:

 

>
template<int> struct Dummy;
template<> struct Dummy<1> {
   typedef char numeric;
};
template<> struct Dummy<2> {
   typedef unsigned char numeric;
};

Όπως είπα νωρίτερα, δε λέει να κρίνεις εκ των έξω. Η φιλοσοφία της C++ είναι σε πολλές περιπτώσεις όταν έχουμε περάσει σε advanced σενάρια οτι δε χρειάζεται να ξέρεις τι type μεταχειρίζεσαι -- ίσα ίσα το γεγονός ότι δεν ξέρεις επιτρέπει στον κώδικα να είναι πιο ευέλικτος (ακριβώς όπως δε χρειάζεται να ξέρεις τι πεδία αλλάζει μέσα του ένα class όταν καλείς setSomething(42), γιατί το μόνο που έχει σημασία είναι ότι η getSomething() θα επιστρέψει 42). Το γεγονός ότι εσύ δεν έχεις πιάσει το ζεν της προσέγγισης αυτής δεν είναι πρόβλημα της γλώσσας.

 

Τέλος, σε παρακαλώ μη μου προσάπτεις τεχνικές νηπιαγωγείου όπως το appeal to popularity βάζοντάς μου λόγια στο στόμα. Αυτό που είπα είναι ότι κανείς δε χρησιμοποιεί ένα εργαλείο που δεν του κάνει τη δουλειά. Συγκεκριμένα δέν είπα ότι επειδή το χρησιμοποιούν πολλοί είναι το καλύτερο εργαλείο ever, δεν έχει τίποτα στραβό επάνω του κλπ κλπ.

 

Όσον αφορά τη VB6, αν νομίζεις ότι το "gets the job done" δεν είναι με τεράστια διαφορά το χαρακτηριστικό που την έκανε δημοφιλή αρχικά και τώρα την κάνει να αρνείται να πεθάνει τότε χωρίς παρεξήγηση χρειάζεσαι reality check. Επίσης η PHP με την οποία έχω πολύ στενή σχέση είναι σκέτη αηδία σα γλώσσα και το μόνο πραγματικά αξιόλογο χαρακτηριστικό της είναι ότι gets the job done. Κατα πώς φαίνεται αυτό είναι αρκετό για να την κάνει μακράν τη δημοφιλέστερη γλώσσα για server-side web programming.

 

 

 

By the way, τώρα επιχειρηματολογώ. ^_^

 

 

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

@defacer

Εσύ λες "Διευκολύνει τον προγραμματιστή να μην παιδεύεται με μεγάλα type names:" κ "code reuse", εγώ λέω αυτό είναι ένα από τα χαρακτηριστικά που κάνει τον κώδικα εξαιρετικά obscure στο σημείο που να διαβάζεις ένα μεγάλο πρόγραμμα και να μην καταλαβαίνεις τι είναι κάθε τύπος που βλέπεις. Γλώσσες σαν τη Java γιατί νομίζεις ότι δεν το έχουν περιλάβει; Επίσης για να καταλάβω, το παράδειγμα με το templates στο οποίο το numeric αναφέρεται σε διαφορετικό τύπο "που δεν ξέρουμε απαραίτητα σε τι αντιστοιχεί" στα 2 templates το γράφεις για καλό; Για να ξέρω δηλαδή.

Αν νομίζεις ότι θέλω "reality check" και δεν κατάλαβες την απλή αναλογία με τη VB στο επιχείρημα της "δημοφιλούς" C++ (το οποίο τόσες φορές ανέφερες) τότε μάλλον βρήκαμε το όριο στην επικοινωνία μας :D . Καλή συνέχεια!

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

Αγαπητέ iceblade:

 

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

 

Δε σου φταίει η C++ αν διαβάζοντας ένα μεγάλο πρόγραμμα δεν καταλαβαίνεις τι βλέπεις, όπως και δε φταίνε δυο grandmaster που παίζουν σκάκι αν κοιτώντας το παιχνίδι τους δεν καταλαβαίνεις τι βλέπεις. Αν υπάρχει κάπου "φταίξιμο", ψάξε λίγο καλύτερα να βρεις που είναι.

 

Γλώσσες "σαν τη Java" το έχουν περιλάβει, στο βαθμό που το χρειάζονται (μιας και εκτός από την πρώτη χρήση όλες οι υπόλοιπες έχουν να κάνουν με templates που ούτε η Java ούτε άλλες παρόμοιες γλώσσες έχουν). Συγκεκριμένα η Java δεν το έχει συμπεριλάβει επειδή έκαναν μαλακία. Δεν είναι να πεις ότι ο κόσμος δεν το θέλει. Και ορίστε οι υπέροχες λύσεις στις οποίες είσαι αναγκασμένος να καταφύγεις επειδή η Java δεν παρέχει αυτή τη δυνατότητα.

 

Το παράδειγμα με τα templates δε θα χάσω το χρόνο μου να το εξηγήσω γιατί δεν πρόκειται να το καταλάβεις. Εδώ εμένα μου πήρε μια βδομάδα και αρκετές αναγνώσεις να χωνέψω το κεφάλαιο με τα typelists από το βιβλίο του Alexandrescu. Αν πραγματικά έχεις διάθεση, ιδού η ρόδος.

 

Καλή συνέχεια και σε σένα.

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

Δε σου φταίει η C++ αν διαβάζοντας ένα μεγάλο πρόγραμμα δεν καταλαβαίνεις τι βλέπεις, όπως και δε φταίνε δυο grandmaster που παίζουν σκάκι αν κοιτώντας το παιχνίδι τους δεν καταλαβαίνεις τι βλέπεις. Αν υπάρχει κάπου "φταίξιμο", ψάξε λίγο καλύτερα να βρεις που είναι.

 

Το παράδειγμα με τα templates δε θα χάσω το χρόνο μου να το εξηγήσω γιατί δεν πρόκειται να το καταλάβεις. Εδώ εμένα (*Ώπα ρε μεγάλε) μου πήρε μια βδομάδα και αρκετές αναγνώσεις να χωνέψω το κεφάλαιο με τα typelists από το βιβλίο του Alexandrescu. Αν πραγματικά έχεις διάθεση, ιδού η ρόδος.

 

Καλή συνέχεια και σε σένα.

Χαίρομαι που το μόνο επιχείρημα που σου απέμεινε είναι το Ad hominem (το οποίο ποτέ δε χρησιμοποίησα), γιατί αυτό σηματοδοτεί το τέλος της συζήτησης. Ευχαριστώ για το link (ίσως μια μέρα και εμείς οι κοινοί θνητοί καταλάβουμε).

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

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

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

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

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

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

Σύνδεση

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

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

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