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

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


xrist0f0r0s

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

Κατι τετοιο C++, C/C++

 

 

Βασικά, απ' όσο το έχω ψάξει αυτό είναι ένα θέμα που μου την δίνει. Κάθε φορά που ψάχνω στον ιστό κάτι

για τη C τα περισσότερα αποτελέσματα θα μου βγάλουν για την C/C++. Στην πραγματικότητα αυτό είναι καθαρή C++,

τα αποτελέσματα αναφέρονται στην C++. Κανένα ίχνος C. Η C++ δεν είναι C, ούτε και το αντίστροφο ισχύει. Η C++

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

μπερδεύουμε έτσι C/C++. Αυτό αναφέρεται αποκλειστικά στον C++ compiler του Visual Studio ο οποίος έχει την

δυνατότητα να κάνει compile και κώδικα σε C.

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

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

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

Στην πραγματικότητα αυτό είναι καθαρή C++, τα αποτελέσματα αναφέρονται στην C++. Κανένα ίχνος C.

Οχι, ειναι C... (δες και το παραδειγμα μου παραπανω)

 

Στην πραγματικότητα όμως δεν είναι συνετό τις μπερδεύουμε έτσι C/C++.

Ειναι μοδα πλεον... :mrgreen:

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

Οχι, ειναι C... (δες και το παραδειγμα μου παραπανω)

 

Ναι το είδα το παράδειγμά σου. Αυτό είναι θέμα του compiler της Microsoft.

Τι γίνεται όμως αν χρησιμοποιήσεις compiler της GNU; π.χ. τον g++( compiler της C++);

Αν ψάξεις στο internet θα δεις ότι δε σου επιτρέπεται να μεταφράσεις πηγαίο κώδικα C μέσω g++.

Υπάρχει διαφορά. :)

 

 

Απλώς όταν έλεγα ότι η C/C++ είναι καθαρή C++ αναφερόμουν στα αποτελέσματα

του ιστού. Όταν υποτίθεται ψάχνω για C και μου βγάζει πολλά αποτελέσματα C/C++

που αναφέρονται στην C++. Αν πατήσεις στο google: C/C++ "wikipedia" δε θα σου

βγάλει κάποια γλώσσα που να λέγεται έτσι εκτός από αυτό: Comeu C/C++.

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

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

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

 

 

 

Δηλαδη αν ασχοληθεις με C θα μαεις για ποιο λογο θα πρεπει να φτιαξεις pool και το τι ειναι το TLB ή αλλα συστηματα διαχηρησεις physical memory.

Kernels,drivers etc.. ολα αυτα εχουν C ABI, πολλες γλωσσες υποστηριζουν C ABI.

 

Ok καταλαβα την αποψη σου. Driver programmer ειναι πραγματικος προγραμματισμος. Το εχω ακουσει πολλες φορες...

 

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

Όχι δε πιστεύω ότι ο προγραμματισμός συστήματος και driver είναι ο πραγματικός προγραμματισμός. Προσωπικά με το game development ασχολούμαι. Αυτό που πιστεύω είναι ότι ο κάθε προγραμματιστής πρέπει να δει πως γίνονται κάποια πράγματα με οποιοδήποτε είδος προγραμματισμού και να ασχολείται. Γι'αυτό με σχήμα λόγου είπα ότι άμα θέλει να ασχοληθεί επαγγελματικά καλό θα ήταν να αρχίσει με C για ν'αποκτήσει υπόβαθρο που δε θα αποκτούσε αλλιώς.

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

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

Όχι δε πιστεύω ότι ο προγραμματισμός συστήματος και driver είναι ο πραγματικός προγραμματισμός. Προσωπικά με το game development ασχολούμαι. Αυτό που πιστεύω είναι ότι ο κάθε προγραμματιστής πρέπει να δει πως γίνονται κάποια πράγματα με οποιοδήποτε είδος προγραμματισμού και να ασχολείται. Γι'αυτό με σχήμα λόγου είπα ότι άμα θέλει να ασχοληθεί επαγγελματικά καλό θα ήταν να αρχίσει με C για ν'αποκτήσει υπόβαθρο που δε θα αποκτούσε αλλιώς.

Δεν ειμαι επιθετικος... απλα εχω βαρεθει να διαβαζω για το τη γαματη γλωσσα ειναι η c.. και αν δε ξερεις c δε ξερεις να προγραμματιζεις κλπ κλπ.

Αν θελει καποιος να μαθει πχ πως δουλευει το memory mgr να παει να παρει ενα βιβλιο για συγχρονα λειτουργικα. Με τη γλωσσα C τι θα μαθεις; Αφου στο κατω κατω ολα αυτα που λετε οτι γραφονται σε C, ειναι γραμμενα σε asm/C.. Μεχρι και η memcpy σε πολλες βιβλιοθηκες της cstdlib ειναι γραμμενη σε asm.

 

 

BTW Δεν το συνεχιζω, γιατι οπου να'ναι θα σκασουν μυτη οι e-penis και θα μου αρχισουν για drivers/compilers/OSes θα μου ποσταρουν και καμια περιεργη pointer function για να... ξερω γω...

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

BTW Δεν το συνεχιζω, γιατι οπου να'ναι θα σκασουν μυτη οι e-penis και θα μου αρχισουν για drivers/compilers/OSes θα μου ποσταρουν και καμια περιεργη pointer function για να... ξερω γω...

ΧΑΧΑΧΑ!!! :-D :mrgreen: :rolleyes: :lol:

>static struct elevator_type elevator_clook = {
.ops = {
	.elevator_merge_req_fn		= clook_merged_requests,
	.elevator_dispatch_fn		= clook_dispatch,
	.elevator_add_req_fn		= clook_add_request,
	.elevator_queue_empty_fn	= clook_queue_empty,
	.elevator_former_req_fn		= clook_former_request,
	.elevator_latter_req_fn		= clook_latter_request,
	.elevator_init_fn		= clook_init_queue,
	.elevator_exit_fn		= clook_exit_queue,
},
.elevator_name = "clook",
.elevator_owner = THIS_MODULE,
};

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

Δημοσ. (επεξεργασμένο)

και αν δε ξερεις c δε ξερεις να προγραμματιζεις κλπ κλπ.

απλός εκεί είναι η έναρξη φίλε, εντάξει τώρα υπάρχουν πολλοί που το παρακάνουν...

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

βασικά εγώ θα πρότεινα την C μόνο και μόνο για να μάθουν την "θεωρία", πως και τι.

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

Ναι ομως το // (για τα σχολια) ειναι C++, νομιζω, αλλα ο gcc το κανει κανονικα compile...

 

Σωστά! Αν θες όμως να σου βγάζει ο compiler warnings ώστε να γράφεις καθαρή C προσθέτεις στα flags στο command line και το -pedantic κατά το compile.

 

Π.χ.: Αν βάλεις αυτού του τύπου σχόλια // θα σου γκρινιάξει ότι δεν είναι C.

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

+1 σε ότι έχει γράψει ο Erevis μέχρι τώρα!

 

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

 

Και προφανώς όταν ο χρόνος παραγωγής είναι σημαντικότερος από την διαχείριση πόρων (όπως είναι το trend της τελευταίας περίπου 10ετίας) τα χρησιμοποιείς έτοιμα ολοένα και περισσότερο. Και στη C υπάρχουν πολλά έτοιμα, αλλά δεν υπάγονται στο στάνταρ της γλώσσας. Εκεί το στάνταρ είναι λίγο-πολύ: φτιάξε τα πρώτα μόνος σου και μετά χρησιμοποίησε τα από εκεί και πέρα και μελλοντικά.

 

Προσυπογράφω κι εγώ λοιπόν πως για κάποιον που σκοπεύει να ασχοληθεί επαγγελματικά με τον προγραμματισμό η C αποτελεί ιδανικό ξεκίνημα, γιατί δίνει στοχευμένα τις πιο στέρεες cross-platform βάσεις που θα μπορούσε να αποκτήσει, μιας και η assembly είναι machine dependent.

 

ΥΓ. Για γρήγορα και παραγωγικά αποτελέσματα, εκτός της C# κοιτάξτε και την python.

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

 

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

 

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

 

Προσυπογράφω κι εγώ λοιπόν πως για κάποιον που σκοπεύει να ασχοληθεί επαγγελματικά με τον προγραμματισμό η C αποτελεί ιδανικό ξεκίνημα, γιατί δίνει στοχευμένα τις πιο στέρεες cross-platform βάσεις που θα μπορούσε να αποκτήσει, μιας και η assembly είναι machine dependent.

 

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

 

 

 

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

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

Με κάθε σεβασμό προς τους συμforumites,

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

 

 

Από κει και πέρα όχι, δε θα τη πρότεινα σε αρχάριο.

Ένας άνθρωπος που δεν είναι εξοικειωμένος με τον προγραμματισμό, με την ακολουθιακή λογική, την αλγοριθμική γενικότερα, το τι θα πει debug, compile time error, runtime error... να έχει να φροντίσει και για όλες τις συντακτικές ιδιαιτερότητες τις C... μου φαίνεται πέφτει λίγο βαρύ.

 

Ιδανική γλώσσα για ξεκίνημα (κατ εμέ πάντα) η python (άντε και καμια pascal με το ζόρι).

Και αφού εκεί πάρει κανεις τις γνώσεις των βασικών τότε να προχωρήσει σε κάποια πιο low-level γλώσσα όπως η C.

 

Από κει και πέρα... το τι γίνεται στην αγορά ας μην το συζητήσουμε γιατί δε μπορεί κανεις να βγάλει γενικό συμπέρασμα.

 

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

 

Και για να μείνω εντός του θέματος αν και με καλύψανε παρα πάνω.

 

 

Η C++ είναι επέκταση τις C και εισάγει την αντικειμενοστραφή σχεδίαση μεταξύ άλλων.

 

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

Χωρίς να σημαίνει ότι δεν έχει εξαιρετικά στοιχεια και η C# παρολαυτά είναι 100% επηρεασμένη από τι java και σε αυτά τα χνάρια πάτησε εντελώς (έχει και μερικά δικά της στοιχεια βεβαια).

 

Γενικά είναι ένα κακό μπέρδεμα που γίνεται και βάζουν μερική στο ίδιο τσουβάλι την C# με C\C++.

 

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

 

Αυτά.

 

Υ.Γ.

Καλο είναι γενικά να αποφεύγουμε τους φανατισμούς και τις εντάσεις.

 

Σίγουρα με τη C για να κάτσεις να φτιάξεις μια εμπορική εφαρμογή που κύρια στοχεύει στις φόρμες και στο db transaction, θα σου πάρει paaara πολύ καιρό και δεν υπάρχει και σαφής λόγος.

 

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

 

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

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

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

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

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

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

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

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

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

Σύνδεση

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

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