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

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

Δημοσ.

Νομίζω ότι μπορώ να σας λύσω την διαφωνία χωρίς να επεκταθώ πολύ. Και νομίζω ότι έχετε δίκιο και οι 2 πλευρές.

 

Στην C μπορείς να κάνεις Object Oriented Programming και είναι ολοφάνερο ότι πληρή τα κριτήρια για αυτό. Είναι δηλαδή μια γλώσσα που μπορεί να υποστηρίξει προγραμματισμό με προσανατολισμό στα αντικείμενα.

Αλλά επίσης είναι ολοφάνερο ότι δεν είναι OOP Oriented Language δηλαδή μια γλώσσα που προσανατολίζεται για χρήση με OOP.

Όχι δηλαδή ότι δεν τον υποστηρίζει αλλά δεν είναι προσανατολισμένη για αυτή την δουλειά.

Ελπίζω να καλυπτόμαστε όλοι από αυτό.

  • Like 2
  • Απαντ. 110
  • Δημ.
  • Τελ. απάντηση

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

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

Δημοσ.

Γιατι να με κοιτάξουν περίεργα; Αφού υποστηρίζει το OOP paradigm η C, δεν το υποστηρίζει;

 

Δεν υπαρχει η εννοια της "υποστηριξης" επειδη πολυ απλα το object oriented δεν συνεπαγεται με το συντακτικο.

 

Λες οτι δεν "υποστηριζει" oo η c. Ok. Το FILE τι ειναι;

Δημοσ.

Ένα απλό structure

Πρωτα, σε ολα τα reference αναφερεται ως object επειδη ειναι..

Δευτερον, αν αντι για keyword struct ειχε το keyword class τοτε τι θα ηταν;

Δημοσ.

Πραγματικά μου κάνει εντύπωση παιδιά! Το θεωρούσα αυτονόητο, αλλά προφανώς δεν είναι.

 

Ας το θέσω κάπως αλλιώς: έχετε ας πούμε υπόψη σας κάποια λίστα με OOP paradigm γλώσσες (επίσημα ή μη) που να περιέχει και την C; Έχετε υπόψη σας κάποια άλλη πηγή που να χαρακτηρίζει την C ως OOP paradigm γλώσσα;

 

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

Δημοσ.

Πρωτα, σε ολα τα reference αναφερεται ως object επειδη ειναι..

Δευτερον, αν αντι για keyword struct ειχε το keyword class τοτε τι θα ηταν;

Ένα απλό structure. Δεν έχει καμία μέθοδο. Μπορείς με κόλπα, όπως κάθε structure στην C, να το χρησιμοποιήσεις για OOP.

Η συνήθεια να λένε object το FILE προέρχεται από το ότι το λειτουργικό δημιουργεί ένα file object και σου επιστρέφει ένα descriptor μέσα σε αυτό το structure. Δεν είναι το ίδιο ένα object.

Δημοσ.

δηλαδη το object το "κανει" ... ας πουμε αυτο file.write ενω αν ειναι fwrite(file,..) αυτοματος δεν το χαρακτηριζουμε object;

Δημοσ.

Μην δινεις βαση στο συντακτικο.

...

 

Μα το παρεχόμενο συνατκτικό βρίσκεται σε άμεση συνάρτηση με το τι υποστηρίζει εγγενώς και τι όχι μια γλώσσα.

Δημοσ.

Πραγματικά μου κάνει εντύπωση παιδιά! Το θεωρούσα αυτονόητο, αλλά προφανώς δεν είναι.

 

Ας το θέσω κάπως αλλιώς: έχετε ας πούμε υπόψη σας κάποια λίστα με OOP paradigm γλώσσες (επίσημα ή μη) που να περιέχει και την C; Έχετε υπόψη σας κάποια άλλη πηγή που να χαρακτηρίζει την C ως OOP paradigm γλώσσα;

 

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

 

Η βασική διαφορά μιας oop γλώσσας σε σχέση με την c είναι ότι φροντίζει να περνάει αυτή τον pointer του οbject στην μέθοδο που καλείτε. Αν το καλοσκεφτείς η μόνη διαφορά του oop με μια απλή γλώσσα είναι ότι συνδέεις structures με methods. Αυτό φτάνει για να έχεις αντικειμενοστραφή προγραμματισμό. Τα data μαζί με τις μεθόδους που το διαχειρίζονται φτιάχνουν ένα αντικείμενο και είναι η διαφορά από το απλό structure. Και σε μια γλώσσα όπως η c++ η μέθοδος καλείτε αυτόματα με τον Pointer του structure και αποκτρύπτεται αυτό από σένα σε αντίθεση με την c που θα το κάνεις manually.

 

δηλαδη το object το "κανει" ... ας πουμε αυτο file.write ενω αν ειναι fwrite(file,..) αυτοματος δεν το χαρακτηριζουμε object;

Δεν είπα αυτό. Εννοώ ότι δεν διαφέρει σε τίποτα από τα κλασσικά structures για να το χρησιμοποιήσεις σαν επιχείρημα ότι είναι OOP γλώσσα.

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

Δημοσ.

δηλαδη το object το "κανει" ... ας πουμε αυτο file.write ενω αν ειναι fwrite(file,..) αυτοματος δεν το χαρακτηριζουμε object;

 

Ένα από τα βασικότερα χαρακτηριστικά του OOP είναι να σε βοηθάει (διευκολύνει, υποστηρίζει) η γλώσσα να οργανώνεις τα πρότζεκτ σου σε κλάσεις, οι οποίες παράγουν objects. Το object και η κλαση δηλαδή παίζουν κυρίαρχο ρόλο και διευκολύνονται από ένα σωρό συνατκτικά, δομικά, και άλλα χαρακτηριστικά στις OOP γλώσσας. Πολλές μάλιστα, όπως π.χ. η Java δεν σε αφήνει να το χτίσεις αλλιώς το πρότζεκ σου και να θέλεις.

 

Στη C τον κεντρικό ρόλο στην οργάνωση τον παίζουν οι συναρτήσεις, για αυτό και χαρακτηρίζεται ως procedural-paradigm γλώσσα (και όχι ως oop-paradigm).

 

Αυτό είναι ένα μόνο παράδειγμα, αλλά πολύ χαρακτηριστικό. Υπάρχουν πολλά ακόμα. Στη C μπορείς και προσομοιώνεις (ακομψα και συχνα με ελλείψεις ή αχρείαστα πολύπλοκα) oop-paradigms κυρίως λόγω της δύναμης των pointers.

 

Άλλο όμως το ένα κι άλλο το άλλο.

  • Like 1
Δημοσ.

Πραγματικά μου κάνει εντύπωση παιδιά! Το θεωρούσα αυτονόητο, αλλά προφανώς δεν είναι.

 

Και απο δω ξεκινάνε όλα... ποιός είδε το αυτονόητο του migf1 και δεν το φοβήθηκε.

 

Κατά τα άλλα βεβαίως συμφωνούμε Retromaniac (με την ίδια ακριβώς έκφραση, "υποστηρίζει", τοποθετήθηκα και γω αρχικά) και ας μη ξεχνάμε αυτό που είπε ο timon νωρίτερα: ότι OOP μπορείς να κάνεις και σε assembly. Νομίζω πως όποιος καταλαβαίνει τι σημαίνει η έκφραση "OOP σε assembly" καταλαβαίνει και ότι το ζήτημα σ' αυτό το thread είναι ζήτημα ορισμού.

Δημοσ.

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

Αν σου ζητήσει κάποιος για μια δουλειά και σου πει έχω αυτό εδώ πχ το διάγραμμα uml με κλάσεις αντικειμένων, σχέσεις μεταξύ τους κλπ κλπ, και θέλω να το υλοποιήσεις σε C τι θα του πεις;

- Όχι η C είναι procedural

ή

- ΟΚ, θα το κάνω αλλάτυπάρχουν δυσκολίες... Μήπως να χρησιμοποιούσαμε μια άλλη γλώσσα;

  • Like 2

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

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

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

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

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

Σύνδεση

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

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

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