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

Διαφορές C, C++ και C#


xrist0f0r0s

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

Απο τον Erivis δεν πηρα καποια απαντηση για το τι θα πει "θα μάθεις τι θα πει πραγματικός προγραμματισμός"... βασικα πηρα... ειμαι επιθετικος. Απο σενα θα παρω καμια απαντηση για το τι θα πει "απο κατω"; Ή και εσυ θα μου πεις οτι ειμαι επιθετικος και θα επιμενεις στους ανουσιους προσδιορισμους "απω κατω", "πραγματικος προγραμματισμος" κλπ.

Εδώ σου έχει δώσει επιγραμματική απάντηση με αρκετά παραδείγματα του "από κάτω".

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

 

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

 

crossplatform μονο το source και μονο οταν χρησιμοποιει standar libs ή καποιο αλλο api που ειναι crossplatform. Crossplatform ειναι java python .net.

Για τον επαγγελματία είναι cross-platform συγκριτικά με την assembly, και νομίζω το έκανα εξαρχής σαφές από το αρχικό μου ήδη ποστ. Και προφανώς αναφέρομαι μονάχα στο source code. Κι εκτός από το clib που έτσι κι αλλιώς χρησιμοποιείται κατά κόρον και επαγγελματικά, υπάρχουν άπειρες cross-platform βιβλιοθήκες γραμμένες σε native C, τις οποίες μάλιστα χρησιμοποιούν κι άλλες γλώσσες, είτε με bindings ή ακόμα κι εγγενώς (ήδη έχω αναφέρει π.χ. το GTK+). Αλλά αυτά είναι εκτός θέματος έτσι κι αλλιώς.

 

Btw Μονο σε ελληνικα forums βλεπω να προτεινουν C για αρχαριο . Στα μεγαλα site τυπου stackoveflow,codeproject, μεχρι και στο c9 της ms βλεπω μονο java,net,python,pascal και web γλωσσες για αρχαριους

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

 

Κι εκεί η C διδάσκεται σχεδόν απαρέγκλιτα και καθολικά και κατά συντριπτική πλειοψηφία από το 1ο κιόλας έτος. Τελευταία όχι με τόση ένταση όσο παλαιότερα, αλλά δεν λείπει σχεδόν ποτέ.

 

Ενδεικτικά και μόνο...

 

MIT:

1. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-087-practical-programming-in-c-january-iap-2010/

2. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and-c-object-oriented-programming-january-iap-2010/

 

Columbia:

http://www.cs.columbia.edu/~bert/courses/1003/lecture1.pdf

 

Stanford(EPGY):

http://epgy.stanford.edu/courses/cs/

 

Harvard:

1. http://www.extension.harvard.edu/openlearning/csci52

2. http://academicearth.org/courses/introduction-to-computer-science-i

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

Ειπα εγω οτι ειναι ξεπερασμενη; Βασικα βλεπεις να εχω γραψει κατι το αρνητικο για την C;

Οπως ειπες πολυ σωστα! Εξαρταται το αντικειμενο που σε απασχολει.

 

 

 

.....φτιαξεις pool και το τι ειναι το TLB ή αλλα συστηματα διαχηρησεις ....

 

Λειτουργικά Συστήματα 1ης δημοτικού ;ppp ( πλακα )

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

Ω χου ρε Mig.. Δηλαδη ελεος.. Φορας παρωπιδες;

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

Δηλαδη το "απο κατω" για σενα και αλλος αποτι βλεπω ειναι ενας reverse αλγοριθμος (που μπορεις να βρεις tuts σε ολες της γλωσσες..................... 20.000.000 αποτελεσματα απο google)

Εδώ σου έχει δώσει επιγραμματική απάντηση με αρκετά παραδείγματα του "από κάτω".

To memory mgr δεν τον μαθαινεις με C που να χτυπας το κεφαλι σου, για να το μαθεις θα παρεις ενα βιβλιο για συγχρονα λειτουργικα. Τωρα για την αλληλεπιδραση με kernel.. και drivers... τι να πω; πραγματικα τι να πω; Ξερεις εστω και μια γλωσσα που να μην μπορει να το κανει; Για τα trees( τα οποια μπορεις και αυτα να τα φτιαξεις με οποιαδηποτε γλωσσα) πρεπει να ξερεις τρελη θεωρια για να καταλαβεις για ποιο λογο υπαρχουν.

 

Κι εκεί η C διδάσκεται σχεδόν απαρέγκλιτα και καθολικά και κατά συντριπτική πλειοψηφία από το 1ο κιόλας έτος. Τελευταία όχι με τόση ένταση όσο παλαιότερα, αλλά δεν λείπει σχεδόν ποτέ.

 

Ενδεικτικά και μόνο...

 

MIT:

1. http://ocw.mit.edu/c...nuary-iap-2010/

2. http://ocw.mit.edu/c...nuary-iap-2010/

 

Columbia:

http://www.cs.columb...03/lecture1.pdf

 

Stanford(EPGY):

http://epgy.stanford.edu/courses/cs/

 

Harvard:

1. http://www.extension...learning/csci52

2. http://academicearth...puter-science-i

Το κανω quote ετσι για να υπαρχει.

 

Βασικα δεν ξερω τι να γραψω... Βασικα ειναι υπερβολικα ακυρο shock.png. Οκ... Χμμ... Ας αφησουμε το mit, γενικα στα πανεπιστημια, εκτως το να σου πασαρουν μια γλωσσα, υπαρχει και η θεωρια συν οτι σου λενε να διαβασεις συγκεκριμενα βιβλια που θα σου δωσουν το υποβαθρο για να μπορεις να πιασεις μια τοσο στρεβλη και χαμηλου επιπεδου γλωσσα.

 

Αρα εσυ με το παραπανω quote θεωρεις οτι ο καθενας που ποσταρει "Γεια θελω να μαθω να προγραμματιζω" εχει το ΘΕΩΡΗΤΙΚΟ υποβαθρο που εχει καποιος που ειναι στο MIT/Harvard ή οποιοδηποτε ΑΕΙ.

 

Για να μαθεις τι παιζει απο κατω, δεν θα βασιστεις σε καποια γλωσσα αλλα θα πας και θα διαβασεις για αυτο το "απο κατω". Γιατι το "απο κατω" εχει και αυτο "απο κατω", το θεμα ειναι τι θες να μαθεις και τιποτα αλλο. Δηλαδη τι το πιο λογικο.

 

 

Η C# είναι η java τις microsoft.

 

Καμια σχεση.

 

Από κει και πέρα όμως, αν δούμε ότι στον Πυρήνα του linux για παράδειγμα παρα πολλά μέρη αν όχι όλα είναι γραμμένα σε C κάτι λέει. Δε μπορεί να είναι τυχαίο, να μην είχαν δηλαδή καλύτερη δουλειά να κάνουν οι developers (αν και εδώ ο δόκιμος ορος είναι Engineers).

 

Το κάθε τι έχει το πεδίο του που στοχεύει. Κακά τα ψέματα.

Αν θες να κανεις πχ web development θα πιάσεις κάτι σε PHP

Αλλα μην παραλείπουμε να πούμε ότι ο ίδιος ο apache το module και οι Interpreters τις PHP είναι σε C γραμμένα.

 

Το οτι πολλα πραγματα τα οποια θελους τρελο perfomance ειναι γραμμενα σε C δεν σημαινει οτι ειναι καλη για πρωτη γλωσσα. Τι να κανουμε...

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

Καμια σχεση.

Θες να το αναλύσουμε λίγο αυτό;

Το πως δηλαδή έχει μιμηθεί πλήρως όλη τη βασική ιδέα της java.

Είναι απείρως πιο κοντά στη java παρα στη c++.

 

Μα και 4 γραμμές να γράψεις βλέπεις ότι και η C# ακολουθεί την λογική ότι τα πάντα είναι αναφορές.

Πράγμα που είναι εντελώς αντίθετο από την C++... και πάει λέγοντας.

(Προφανώς δεν είναι ΜΟΝΟ αυτό το στοιχειο που αποδεικνύει την σαφή επιρροή της java. Απλά έφερα ένα παράδειγμα που αμέσως-αμέσως την απομακρύνει πολύ από τη C++.)

 

Από κει και πέρα ναι, το τόνισα, είναι άλλο framework με άλλες βιβλιοθήκες και γενικά άλλος κόσμος.

 

 

Το οτι πολλα πραγματα τα οποια θελους τρελο perfomance ειναι γραμμενα σε C δεν σημαινει οτι ειναι καλη για πρωτη γλωσσα. Τι να κανουμε...

Είναι εκπληκτικό αυτό εδώ σχεδόν σουρεαλιστικό. Μόλις παραπάνω έγραψα και ανέλυσα γιατί κατά την γνώμη μου δεν κάνει για αρχάριο!!! Το διάβασες;;;

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

Ω χου ρε Mig.. Δηλαδη ελεος.. Φορας παρωπιδες;

 

Δηλαδη το "απο κατω" για σενα και αλλος αποτι βλεπω ειναι ενας reverse αλγοριθμος (που μπορεις να βρεις tuts σε ολες της γλωσσες..................... 20.000.000 αποτελεσματα απο google)

Αυτό κατάλαβες δηλαδή εσύ, πως το "από κάτω" είναι ένας reverse αλγόριθμος. Για πες μου λοιπόν σε παρακαλώ συγκεκριμένα για τον reverse αλγόριθμο, πόσα ακριβώς από όλα αυτά τα 20.000.000 αποτελέσματα που βρήκες στο Google και τα tuts σε όλες τις γλώσσες, προϋποθέτουν να γνωρίζεις πως ακριβώς είναι αποθηκευμένο το string στη μνήμη ώστε να μπορέσεις να το αντιστρέψεις; Για δείξε μου με links τις γλώσσες που προϋποθέτουν τέτοια γνώση για την επίλυση του συγκεκριμένου αλγόριθμου, για να καταλάβω κι εγώ ο... γκαγκά που φοράω παρωπίδες ότι γράφω μπουρδολογίες και πετάω παραδείγματα έτσι στην τύχη απλά για να πουλήσω μούρη. Ιδιαίτερα με θα με ενδιέφερε να μου δείξεις για γλώσσες όπως η Python, η Lisp, η Perl, η C#, η Haskel, η Java, η D...

 

Για να μη κουράζεσαι τσάμπα λοιπόν, στην συντριπτική πλειοψηφία των γλωσσών πετάς ένα "reverse( string )" ή κάτι ισοδύναμο και καθαρίζεις... δεν χρειάζεται να ξέρεις τίποτα περισσότερο. Για κάντο μου στη C χωρίς να ξέρεις τα "από κάτω".

 

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

 

Και τελειώνοντας με αυτή την ιστορία, γιατί δεν έχω σκοπό να συνεχίσω να αντιπαραθέτομαι ανούσια για τα αυτονόητα, θεωρώ πως έχω υποστηρίξει με το παραπάνω την άποψή μου γιατί θεωρώ την C πάρα πολύ σημαντικό βοήθημα για οποιονδήποτε σκοπεύει να ασχοληθεί ΣΟΒΑΡΑ με τον προγραμματισμό. Είτε είναι αρχάριος είτε όχι.

 

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

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

...Για τα trees( τα οποια μπορεις και αυτα να τα φτιαξεις με οποιαδηποτε γλωσσα) πρεπει να ξερεις τρελη θεωρια για να καταλαβεις για ποιο λογο υπαρχουν....

Μιας και μίλησες για "κεραμίδες" σε μεταγενέστερο post σου, αυτή η "τρελή θεωρία" που αναφέρεις παραπάνω, στα πανεπιστήμια (αυτά που μας γράφεις ότι το μόνο που τους ενδιαφέρει είναι να κονομάνε) διδάσκεται από το 2ο μόλις έτος... έτσι απλά ενημερωτικά, σε περίπτωση που σου διαφεύγει. Όσο για την χρησιμότητα και την συχνότητα χρησιμοποίησής τους είναι τόσο κοινή σε every-day εφαρμογές και τόσο αποδοτικές σε efficiency (από απλούς editors και games μέχρι βάλε ότι θέλεις για άνω άκρο) που αν εσένα σου έπεσε "κεραμίδα" με το MIT, εμένα μου έπεσε ολόκληρη σκεπή με το "τρελή θεωρία".

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

Ω χου ρε Mig.. Δηλαδη ελεος.. Φορας παρωπιδες;

 

Δηλαδη το "απο κατω" για σενα και αλλος αποτι βλεπω ειναι ενας reverse αλγοριθμος (που μπορεις να βρεις tuts σε ολες της γλωσσες..................... 20.000.000 αποτελεσματα απο google)

 

To memory mgr δεν τον μαθαινεις με C που να χτυπας το κεφαλι σου, για να το μαθεις θα παρεις ενα βιβλιο για συγχρονα λειτουργικα. Τωρα για την αλληλεπιδραση με kernel.. και drivers... τι να πω; πραγματικα τι να πω; Ξερεις εστω και μια γλωσσα που να μην μπορει να το κανει; Για τα trees( τα οποια μπορεις και αυτα να τα φτιαξεις με οποιαδηποτε γλωσσα) πρεπει να ξερεις τρελη θεωρια για να καταλαβεις για ποιο λογο υπαρχουν.

 

Το κανω quote ετσι για να υπαρχει.

 

Βασικα δεν ξερω τι να γραψω... Βασικα ειναι υπερβολικα ακυρο shock.png. Οκ... Χμμ... Ας αφησουμε το mit, γενικα στα πανεπιστημια, εκτως το να σου πασαρουν μια γλωσσα, υπαρχει και η θεωρια συν οτι σου λενε να διαβασεις συγκεκριμενα βιβλια που θα σου δωσουν το υποβαθρο για να μπορεις να πιασεις μια τοσο στρεβλη και χαμηλου επιπεδου γλωσσα.

 

Αρα εσυ με το παραπανω quote θεωρεις οτι ο καθενας που ποσταρει "Γεια θελω να μαθω να προγραμματιζω" εχει το ΘΕΩΡΗΤΙΚΟ υποβαθρο που εχει καποιος που ειναι στο MIT/Harvard ή οποιοδηποτε ΑΕΙ.

 

Για να μαθεις τι παιζει απο κατω, δεν θα βασιστεις σε καποια γλωσσα αλλα θα πας και θα διαβασεις για αυτο το "απο κατω". Γιατι το "απο κατω" εχει και αυτο "απο κατω", το θεμα ειναι τι θες να μαθεις και τιποτα αλλο. Δηλαδη τι το πιο λογικο.

 

 

 

Καμια σχεση.

 

 

 

Το οτι πολλα πραγματα τα οποια θελους τρελο perfomance ειναι γραμμενα σε C δεν σημαινει οτι ειναι καλη για πρωτη γλωσσα. Τι να κανουμε...

 

Η άγνοια σου με εκπλήσσει για άτομο που υποστηρίζει τόσο πολύ τη θέση του και ειρωνεύεται όποιον δε συμφωνεί μαζί του. Memory manager θα γράψει οποιοσδήποτε προγραμματιστής C++ γράφει κρίσιμη σε χρόνο/χώρο εφαρμογή λόγω κατακερματισμού μνήμης, κάτι το οποίο δεν έχει ΚΑΜΙΑ σχέση με τους memory managers των λειτουργικών.

 

Kernels kai drivers..ναι το κάνουν όλες οι γλώσσες σχεδόν, αλλά αναρωτιέμαι γιατί ΟΛΑ τα βιβλία που ασχολούνται με αυτά έχουν παραδείγματα και ασκήσεις σε C. nCeIxo3bxp6FTBpiLUjYMLObk3R4Sjb2XkREsWqnXaHW7pTUpZ-qJnS2qSqR3LQsj7QblLXanrIBeqFjWg=s128-c

 

(Ίσως γιατί το να στήσεις ένα server socket στη C θέλει βαθύτερες γνώσεις από το ServerSocket x = new ServerSocket( portNo ) της Java )

 

Επίσης το να ξεκινήσεις να μαθαίνεις πράγματα από C σε βοηθάει στο να μη γράφεις ηλιθιότητες τύπου:

-ο pointer δεν έχει συγκεκριμένο μέγεθος. <- Συγνώμη που θα σε στεναχωρήσω αλλά σε κάθε συγκεκριμένη αρχιτεκτονική CPU ο pointer είτε είναι void, είτε char, είτε int κτλ. έχει το ίδιο μέγεθος.

-η μνήμη είναι σαν στοίβα <- (!!!) Ασχολίαστο.

-ότι ο raw pointer που του κάνεις allocate μνήμη στη C++ καλεί τον destructor του αντικειμένου που δείχνει όταν βγει out of scope. <- Ο Χριστός και η Παναγία, μετά με κατηγορείς πως ΕΓΩ παραπληροφορώ τον κόσμο. Θες και tutorials τρομάρα σου.

 

ΟΛΑ τα παραπάνω από το blog σου.

 

Όσο για τα B+ δένδρα, αμφιβάλλω αν ξέρεις τι είναι για να λες ότι γράφονται σε όλες τις γλώσσες. Ναι γράφονται αλλά κανένας δε το κάνει σε σοβαρή εφαρμογή για κάποιο συγκεκριμένο λόγο. Διάβασε τι είναι πρώτα και μετά θα καταλάβεις γιατί.

 

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

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

ρε παιδιά, θα πηθηχτώ απο το παράθυρο δηλαδή, τι είναι αυτά που λέτε

"η C# είναι η Java της Microsoft"

 

γιατί τα μπερδεύετε, για άλλη δουλεία προορίζετε η C# και για άλλη η Java

ναι είπαμε, η Java είναι μια δυνατή γλώσσα "σύμφωνα με τους εκπαιδευτικούς και όχι το τι λέει ο καθένας εδώ μέσα"

άλλο καρπούζι , άλλο πεπόνι....

 

#Moukoublen

οκ ρε φίλε, "εισαι" λάτρης της Java, ας πάμε με τα νερά σου...

είναι η καλύτερη

μπορείς να κάνεις πολλά περισσότερα

σε λίγο η C/C#/C++ δεν θα υπάρχουν (ποιος ο λογος?)

είναι πολύ εύκολη

 

βασικά ρε παιδιά, μήπως να το κάνουμε ποιο εύκολο?

να κατεβάσουμε το παντελόνι και να μας γα***, γιατί αυτό μερικοί θέλετε να περάσετε... οτι η Java ΓΑ****

 

το κάθε τι, θέλει και το εργαλείο του... και το μέλλον τις Java είναι για εφαρμογές WEB, και όχι Windows-Linus-Mac εφαρμογές...

 

... άσε έχω νεύρα τώρα...

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

Η C# μαζί με το .NET ήταν ουσιαστικά η απάντηση της Microsoft σε τρεις βασικούς ανταγωνιστές της, καταρχήν την JAVA, ύστερα την CG/ET C++ Builder/Delphi VCL και τέλος τις γλώσσες 4G (βλ. Visual FoxPro, Clipper, DBASE κλπ). Γράφοντας λογισμικό και στις δυο γλώσσες (JAVA, C#) υπάρχουν εμφανέστατες ομοιότητες μεταξύ τους ενώ γράφοντας λογισμικό σε C++ Builder ο οποίος βασίζει το RAD περιβάλλον ανάπτυξης λογισμικού του στην βιβλιοθήκη VCL βλέπω ότι το .NET είναι σαφέστατα επηρεασμένο από την VCL (ορισμένες φορές 1:1) η οποία ξεκίνησε την καριέρα της στην θρυλική Borland Delphi. Αλλωστε ο πατέρας του .NET υπήρξε ο πατέρας της Delphi VCL πριν μεταβεί στην Microsoft για να ξεκινήσει την κατασκευή της C# & .NET (βέβαια η ίδια η VCL ενδεχομένως προέρχεται από το Apple Objective-Pascal framework του Apple Lisa στις αρχές των ‘80s –το οποίο με την σειρά του ήταν πιθανότατα επηρεασμένο από την Smalltalk, αλλά πάμε πολύ πίσω τώρα). Η δε Microsoft βρέθηκε στην ανάγκη να παρουσίαση μια ανάλογη της JAVA γλώσσα προγραμματισμού όταν έχασε (προς το τέλος των ‘90s) το δικαίωμα να επιφέρει διάφορες αλλαγές στο συντακτικό της γλώσσας από την SUN, τότε ιδιοκτήτρια της JAVA (βλ. δικαστική διαμάχη SUN v.s. MS). Τέλος η ισχυρή data centric φύση του .NET αποτελεί την προσπάθεια της Microsoft να απεμπλακεί από τις 4G γλώσσες προγραμματισμού, μεταξύ των οποίων και της Visual Fox Pro που εμπορευόταν μέχρι πριν λίγα χρόνια προς χάριν ισχυροποίησης της θέσης της στις σχεσιακές βάσης δεδομένων (βλ. SQL Server), όπου τα κέρδη (υποστήριξης, licensing κλπ) είναι σαφώς μεγαλύτερα από ότι των απλών ISV.

 

Συνεπώς ο χαρακτηρισμός ότι η C# είναι η JAVA της MS (όπως εγώ θα συμπλήρωνα ότι αποτελεί επίσης την VCL της MS) κατά την γνώμη μου είναι αρκετά πετυχημένος και προσεγγίζει την αλήθεια. Από εκεί και πέρα, προσωπικά μεταξύ JAVA και C# προτιμώ το δεύτερο πείραμα (C#) παρά το πρώτο καθώς θεωρώ ότι έχοντας την ευχέρεια του δεύτερου παίκτη η MS κατάφερε να παρουσιάσει ένα τρόπο τινά πιο ολοκληρωμένο προϊόν.

 

Για το μέλλον των γλωσσών δεν μπορώ να πω και πολλά πράματα, μόνο μια παρατήρηση, τόσο η Java (λόγο Android και παλαιότερα λόγο J2ME) όσο και η C# (λόγο Windows Phone) έχουν εισχωρήσει με αξιώσεις στην ανάπτυξης λογισμικού για smart-phones και Tablets που είναι σήμερα η πλέον δυναμική αγορά, με την C & C++ να δρουν (μετά τον επίσημο θάνατο του Symbian) παρασκηνιακά ως επιλογές όταν χρειάζεται ιδιαίτερα αυξημένη ταχύτητα υπολογισμών. Και την Apple Objective-C (και δια μέσου αυτής η παραδοσιακή C) να ακολουθεί τον δικό της εξίσου επιτυχημένο (ελέω iPhone) δρόμο.

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

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

 

Πω πω χριστιανε μου... Δυο πραγματα θελω να πω

1) αυτο που κανω quote (δεν καταλαβαινω, γιατι τετιο ελιτισμο... Παλι καλα που δεν μου ποσταρες καμια περιεργη pointer function σα κατι αλλους....)

2) Με c δεν θα μαθεις πως δουλευουν οι socket, ή ο event based προγραμματισμος ή οτιδιποτε. Αλλα αν παρεις κανα βιβλιο για αυτα, σιγουρα θα μαθεις. Γιατι διαφωνειτε σε αυτο; Τι το περιεργο σε αυτο;

 

Συνεπώς ο χαρακτηρισμός ότι η C# είναι η JAVA της MS (όπως εγώ θα συμπλήρωνα ότι αποτελεί επίσης την VCL της MS) κατά την γνώμη μου είναι αρκετά πετυχημένος και προσεγγίζει την αλήθεια. Από εκεί και πέρα, προσωπικά μεταξύ JAVA και C# προτιμώ το δεύτερο πείραμα (C#) παρά το πρώτο καθώς θεωρώ ότι έχοντας την ευχέρεια του δεύτερου παίκτη η MS κατάφερε να παρουσιάσει ένα τρόπο τινά πιο ολοκληρωμένο προϊόν.

 

Σαν γλωσσες παντος δεν εχουν καμια σχεση (αν εξερεσεις οτι και οι δυο ειναι c like και ειναι OO). Πχ event handling ειναι αρκετα διαφορετικο ή απο strong types η java δεν εχει byte, και αλλα πραγματα που ειμαι σιγουρος οτι τα ξερεις rolleyes.gif

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

Μοιράζονται όπως σωστά παρατηρείς κοινή σύνταξη από C (η C# μου φαίνεται πιο πλήρης ως προς αυτό), ένα εξίσου απλοποιημένο μοντέλο OOP αμφότερες (με διάφορα κόλπα, Interfaces η Java, Delegates η C# κ.α.), επίσης συμπληρώνω η διαχείριση I/O ομοιάζει μεταξύ των δυο αρκετά όπως επίσης και ο τρόπος που διαχειρίζονται νήματα και exceptions. Σε θέματα τύπων υπάρχουν ορισμένες διαφορές (ενοχλητικές αν κάνεις port κώδικα –πχ. ανυπαρξία unsigned σε Java) ενώ σε θέματα Δομών Δεδομένων είναι παρόμοιες (δεν χάνεσαι). Σε θέματα γραφικών λειτουργούν επίσης με παρόμοιο τρόπο. Επίσης έχουν αρκετές ομοιότητες στην γενική φιλοσοφία διαχείρισης του UI τους και επιμέρους όμως διαφορές στο Event-Driven μοντέλο τους, με την C# να ακολουθεί όπως προείπα το μοντέλο της VCL το οποίο είναι για εμένα πιο εύκολο ενώ η Java ακολουθεί τον συνδυασμό των Interface/Listener δίχως να σημαίνει όμως ότι δεν μπορείς να την κάνεις να δουλέψει «πιο οικεία» (αλά VCL).

 

Γενικά, η άποψη μου (μετά port κώδικα μεταξύ των δυο Java <-> C#) είναι πως ένας προγραμματιστής Java ή C++ Builder μπορεί πολύ άνετα να μεταβεί σε C# και (λιγουλάκι πιο δύσκολα) από C# σε Java κατά τα άλλα είναι το *ίδιο γεύμα με διαφορετικά καρυκεύματα στην σάλτσα :D

 

Βέβαια από εκεί και πέρα, κάθε διαφορετική γνώμη σεβαστή.

 

* Το "πολιτισμικό σοκ" μεταξύ ενός Java & C# προγραμματιστή είναι σαφώς μικρότερο από εκείνο ενός που γράφει αποκλειστικά σε C ή C++.

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

#Moukoublen

οκ ρε φίλε, "εισαι" λάτρης της Java, ας πάμε με τα νερά σου...

είναι η καλύτερη

μπορείς να κάνεις πολλά περισσότερα

σε λίγο η C/C#/C++ δεν θα υπάρχουν (ποιος ο λογος?)

είναι πολύ εύκολη

 

βασικά ρε παιδιά, μήπως να το κάνουμε ποιο εύκολο?

να κατεβάσουμε το παντελόνι και να μας γα***, γιατί αυτό μερικοί θέλετε να περάσετε... οτι η Java ΓΑ****

 

Διάβασε το ακριβώς (και αρκετά εμπεριστατωμένο) από κάτω post από το δικό σου, του Directx.

 

Κανένα φανατισμό και καμια λατρεία δεν έχω σε αντίθεση με σένα.

 

Άλλωστε εργάζομαι στο .net 4 και στη C#.

 

Απλός μου αρέσει να λέω τα πράγματα ως έχουν.

 

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

Κατά συνέπεια πες με όπως θες. Λάτρη, της java, της mava, της sava, ο,τι σε ικανοποιεί τέλος πάντων.

 

Δεν είπα ότι είναι χειρότερη η c# απ την java.

Η κάθε μια έχει τις δυνατότητες της και τη δικη της ιστορία (με την java εδώ να έχει αρκετά μεγαλύτερη ιστορία)

 

Επίσης λόγω της φύσης της java (free) έχουν αναπτυχθεί πολύ περισσότερες δημιουργικές κοινότητες γύρω της.

Με άμεσα και σαφή αποτελέσματα ως προς την εξέλιξη της και τις βιβλιοθήκες της.

 

Από κει και πέρα για να μην μιλάμε με αέρα αυτά που ανέφερε ο direcx είναι και η πραγματικότητα και δίνω έμφαση εδώ

 

Η δε Microsoft βρέθηκε στην ανάγκη να παρουσίαση μια ανάλογη της JAVA γλώσσα προγραμματισμού όταν έχασε (προς το τέλος των ‘90s) το δικαίωμα να επιφέρει διάφορες αλλαγές στο συντακτικό της γλώσσας από την SUN, τότε ιδιοκτήτρια της JAVA (βλ. δικαστική διαμάχη SUN v.s. MS).

(Βλ. Visual Studio 6 που παρέχει ide για java)

 

Δεν καταλαβαίνω την ένταση... πραγματικά...

 

 

 

το κάθε τι, θέλει και το εργαλείο του... και το μέλλον τις Java είναι για εφαρμογές WEB, και όχι Windows-Linus-Mac εφαρμογές...

¨Έγινε.

Sorry αλλα όταν βλέπω κάποιον έτσι εύκολα και άνετα να μιλάει με τόση σιγουργιά για το μέλλον πραγμάτων τόσο μεγάλων (όπως η java, ή το .net ή τα λειτουργικά κτλ) μου φαίνεται εξαιρετικά αστείο. Sorry και πάλι.

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

...

2) Με c δεν θα μαθεις πως δουλευουν οι socket, ή ο event based προγραμματισμος ή οτιδιποτε. Αλλα αν παρεις κανα βιβλιο για αυτα, σιγουρα θα μαθεις. Γιατι διαφωνειτε σε αυτο; Τι το περιεργο σε αυτο;

...

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

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

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

 

Οκ δυο ιδια προγραμματα (αντικειμενο desktop app), εκατσα και τα εγραψα ετσι για να δω το βαθος

 

1 πρωτο ειναι γραμμενο σε c/winapi το αλλος σε c#/net (διαλεξα net μονο και μονο επειδη ειναι HL)

 

malakies21312312.JPG

 

 

 

main.c

>

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

#pragma warning(push)
#pragma warning(disable : 4996)


#include <Windows.h>
#include <Windowsx.h>



#define MAKE_PAD_KEY(num) (0xff00 + num)
#define IS_PAD_NUM(val) (val & 0xff00)
#define GET_PAD_NUM(val) (val & 0x00ff)
#define IDC_OUTPUT     0x00f1
#define IDC_PAD_ADD  0x00f2
#define IDC_PAD_NUM(num) MAKE_PAD_KEY(num)



LPCSTR	szClsName = "calcCls";
LPCSTR  szWindowTitle = "Calc";

LRESULT WINAPI WndProc(HWND hWnd,UINT msg, WPARAM wParam, LPARAM lParam);

INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE hInstPrev, LPSTR argc, INT nShow)
{
WNDCLASS	wc;
MSG			msg;
HWND		hWnd;

ZeroMemory(&wc, sizeof (wc) );

wc.hInstance		= hInst;
wc.lpszClassName	= szClsName;
wc.style			= (CS_VREDRAW | CS_HREDRAW);
wc.hIcon			= LoadIcon(NULL,IDI_APPLICATION );
wc.hCursor			= LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground	= (HBRUSH)COLOR_WINDOW;
wc.lpfnWndProc		= WndProc;

if(INVALID_ATOM == RegisterClass(&wc))
	return 1;
hWnd = CreateWindowEx(
	0,
	szClsName,
	szWindowTitle,
	WS_OVERLAPPEDWINDOW,
	0,0,200,300,
	NULL,
	NULL,
	hInst,
	NULL);
if(!hWnd)
	return 2;
ShowWindow(hWnd,nShow);

while( GetMessage(&msg,NULL,0u,0u))
{
	TranslateMessage(&msg);
	DispatchMessage(&msg);
}
return 0;

}
LRESULT WINAPI WndProc(HWND hWnd,UINT msg, WPARAM wParam, LPARAM lParam)
{
int i,j,k,tmp;
char buf[64];
static int lastNum = 0;
switch(msg)
{
case WM_CREATE:
	{
		k = 9;
		for(i = 0; i < 3; i++)
		{
			for(j = 3; j > 0; j--)
			{
				
				itoa(k,buf,10);
				CreateWindowEx(0,"BUTTON",buf,WS_CHILD | WS_VISIBLE, j * 50 - 35,i * 50 + 75 ,45,45,hWnd,(HMENU)IDC_PAD_NUM(k),NULL,NULL);
					k--;
			}
		}
		CreateWindowEx(0,"BUTTON","Add",WS_CHILD | WS_VISIBLE, 15 ,150 + 75, 3 * 48, 45,hWnd,(HMENU)IDC_PAD_ADD,NULL,NULL);
		CreateWindowEx(0,"EDIT","",WS_CHILD | WS_VISIBLE | ES_READONLY | ES_RIGHT,15,15,48 * 3,45,hWnd,(HMENU)IDC_OUTPUT,NULL,NULL);
	}break;
case WM_COMMAND:
	{
		if(IS_PAD_NUM(LOWORD(wParam)) && HIWORD(wParam) == BN_CLICKED)
		{
		
			tmp = GetWindowTextLength(GetDlgItem(hWnd,IDC_OUTPUT));
			GetWindowText((HWND)lParam,buf,64);
			
			Edit_SetSel(GetDlgItem(hWnd,IDC_OUTPUT),tmp,tmp);
			Edit_ReplaceSel(GetDlgItem(hWnd,IDC_OUTPUT),buf);
		}
		else if( LOWORD(wParam) == IDC_PAD_ADD)
		{
			if(lastNum )
			{
				GetWindowText(GetDlgItem(hWnd,IDC_OUTPUT),buf,64);
				tmp = atoi(buf);
				lastNum += tmp;
				itoa(lastNum,buf,10);
				SetWindowText(GetDlgItem(hWnd,IDC_OUTPUT),buf);
			}
			else
			{
				GetWindowText(GetDlgItem(hWnd,IDC_OUTPUT),buf,64);
				lastNum = atoi (buf);
				SetWindowText(GetDlgItem(hWnd,IDC_OUTPUT),"");
			}

		}
	}break;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}

#pragma warning (pop)

 

 

 

main.cs

>using System;
using System.Windows;
using System.Windows.Forms;
using System.Drawing;

namespace clac_cs_one_file
{

   public class Program : Form
   {
       [sTAThread]
       public static void Main(string[] argc)
       {
           Application.EnableVisualStyles();
           Application.Run(new Program());
       }


       Button[] pad;
       Button add;
       TextBox output;
       int last;
       public Program()
       {
           last = 0;
           Height = 300;
           Width = 200;
           pad = new Button[9];
           output = new TextBox
           {
               Location = new Point(15, 15),
               Height = 45,
               Width = 148,
               ReadOnly = true,
               RightToLeft = RightToLeft.Yes
           };
           int k = 8;
           for (int i = 0; i < 3; i++)
           {
               for (int j = 3; j > 0; j--)
               {
                   pad[k] = new Button
                   {
                       Text = (k + 1).ToString(),
                       Location = new Point(j * 50 - 30, i * 50 + 75),
                       Size = new Size(45, 45),
                       Name = (k + 1).ToString()
                   };
                   pad[k--].Click += new EventHandler(Program_Click);

               }
           }
           add = new Button { Text = "Add", Location = new Point(15, 150 + 75), Size = new Size(3 * 48, 35) };
           add.Click += new EventHandler(add_Click);
           Controls.AddRange(pad);
           Controls.Add(output);
           Controls.Add(add);
       }

       void add_Click(object sender, EventArgs e)
       {
           if (last == 0)
           {
               last = int.Parse(output.Text);
               output.Text = "";
           }
           else
           {
               output.Text =
                   (last + int.Parse(output.Text)).ToString();
           }
       }

       void Program_Click(object sender, EventArgs e)
       {
           output.AppendText((sender as Button).Name);

       }

   }
}

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

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...