defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 I have a sudden sense of deja-vu. Παιδιά αν ξαναδιαβάσετε τα post 16-24 (2η σελίδα) νομίζω πως ήδη σε κείνο το σημείο έχουμε καταλήξει στο ίδιο συμπέρασμα. #16: Φυσικά και υποστηρίζει, απλά όχι με τον τρόπο που έχουμε συνηθίσει. Τα έχουμε ξαναπεί: ο πρώτος C++ compiler έκανε "compile" σε C, επομένως είναι προφανές πως μπορείς να κάνεις OOP στη C. Απλά δε θα είναι όμορφο. Οπότε είναι προφανές πως η γλώσσα δεν υποστηρίζει OOP. To "υποστηρίζω" και ως λέξη και ως ερμηνεία είναι διαφορετική π.χ. τόσο από το "υλοποιώ" όσο και από το "μπορώ". #17 Ειχα ρωτησει προπερυσι (οταν ημουν 1ο ετος) εναν καθηγητη μου, εαν η C "υποστιριζει" OOP και μου απαντησε επιλεξη:- Οι περισσοτεροι θα σου πουν οχι, με την αποψη οτι ναι με μπορυμε να θεωρησουμε την κλαση ως struct και τη μεθοδο ως funtcion pointer, αλλα το προβλημα ειναι με την κληρονομικοτητα. Εγω ομως θα σου πω ναι και η για να με πιστεψεις διαβασε αυτο. #19 Τίποτα από όλα αυτά όμως δεν συνεπάγεται πως η C υποστηρίζει εγγενώς OOP... όταν λέμε υποστηρίζει εννοούμε να παρέχει διευκολύνσεις για το συγκεκριμένο programming paradigm. #20 Για την ιστορία... και σε assembly μπορείς να κάνεις OOP. #23 Εγώ δεν έχω καταλάβει ακόμα, υπάρχει κάποιος γνωστός ή άγνωστος, σημαντικός ή όχι, που να υποστηρίζει πως η γλώσσα C υποστηρίζει OOP; (πόσο μάλλον η assembly)... Και βέβαια #24 @migf1: Φαντάζομαι πως το πρόβλημα εδώ είναι θέμα ορισμού. @migf1: Στο #25 είχες την ευκαιρία να πεις "όντως παιδιά, εδώ το θέμα μας είναι ότι δίνουμε άλλη έννοια στη λέξη υποστηρίζω, δε συμφωνώ μ' αυτόν τον ορισμό, με το μπορείς είμαι OK, peace brothers". Κανένας δε θα έφερνε αντίρρηση. Αντί γι' αυτό επέλεξες να απαξιώσεις (ειρωνικά και χωρίς καμία σοβαρότητα) τις ντεμέκ "αντίθετες" απόψεις, και ας μην επεκταθώ καλύτερα στο πώς συνέχισε η φάση όταν απάντησα in kind. Υπάρχει κάποιος λόγος που έπρεπε να γίνουν όλα αυτά και να γεμίσουμε άλλες 2 σελίδες; Θα μ' ενδιέφερε πολύ να τον μάθω. Για την ιστορία, με το δικό μου σκεπτικό η C "υποστηρίζει" OO γιατί είναι πολύ εύκολο να υλοποιήσεις abstract data types (σε αντίθεση με την assembly, για την οποία δε θα χρησιμοποιούσα την ίδια λέξη). Αλλά δεν έκανε κανείς τον κόπο να ρωτήσει. Shoot first, ask questions later?
migf1 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 @defacer: Η ερμηνεία του "support" είναι αυτονόητη σε όποιον έχει έστω και ξόφαλτση επαφή με το αντικείμενο. Όπως είναι και το minimum base για να χαρακτηριστεί μια γλώσσα οτι υποστηρίζει (ή δεν) OOP-paradigm. Το αν δεν έχεις επαφή με το αντικείμενο, το αν ο εγωϊσμός σου φτάνει στο σημείο να χαρακτηρίζεις την C ως OOP-paradigm supporting γλώσσα, το να μπουρδολογείς σε θεμελιώδη concepts του cs ορμώμενος από ένα "may" από την Wikipedia, ή ότι άλλο θέμα έχεις, ούτε με αφορά, ούτε είναι αρμοδιότητά μου να σου τα μάθω. Άσε λοιπόν τα περί ευκαιριών που είχα ή που δεν είχα στο νήμα και άνοιξε κάνα βιβλίο. Σίγουρα δεν θα βγεις χαμένος. Και btw, φύλα τα "άξια κι ανάξια σχολιασμού" για νεοεισερχόμενους που σε παίρνει. ΥΓ. Μπορείς επίσης να εισηγηθείς να αλλάξει η ερμηνεία του "support" όπως είναι καθιερωμένη και τεκμηριωμένη, μιας και βλέπω πως επιμένεις στα δικά σου. Δεν ξέρω σε ποια επιτροπή πρέπει να απευθυνθείς, αλλά άμα το ψάξεις κάποια θα βρεις, δεν μπορεί.
defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Δεν ξέρω αν προσπαθείς συνειδητά να είσαι κακός τύπος ή αν απλά έχεις ταλέντο. Είχες την πρώτη άσχημη λέξη, θέλεις να έχεις και την τελευταία. Χάρισμά σου. Εγώ απλά θα ξαναπώ αυτό που είπα νωρίτερα: αφού το αυτονόητο σε χαλάει, μην το πίνεις. Και όσο για εγωισμούς και άλλα τέτοια φαιδρά, μην κρίνεις εξ ιδίων τα αλλότρια. Σ' αφήνω παρέα με τον εαυτό σου, με τον οποίο μάλλον θα τα πας καλύτερα: Αυτό ακριβώς (το bold) σημαίνουν οι φράσεις "δεν υποστηρίζει εγγενώς oop"... "δεν υποστηρίζει το oop paradigm" κλπ. Το ξέρουν και οι πέτρες (μόνο ο defacer φαίνεται όχι μόνο να μη το ξέρει, αλλά να θέλει να μας το επιβάλλει κιόλας).
migf1 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Δεν ξέρω αν προσπαθείς συνειδητά να είσαι κακός τύπος ή αν απλά έχεις ταλέντο... Απλά έχω ταλέντο, το οποίο μου το γιγαντώνουν αλαζονικοί μπουρδολόγοι. Αν ενδιαφέρεσαι να μάθεις 5 πράγματα για ένα αντικείμενο για το οποίο έχεις προφανέστατη άγνοια, εκμεταλλεύσου όσα σου έχω υποδείξει στο συγκεκριμένο νήμα. Μπορείς φυσικά να συνεχίσεις να ζεις στην γυάλα της μπουρδολογίας στο συγκεκριμένο. Αν έχεις καμιά άλλη απορία και ειναι άξια σχολιασμού, ίσως και να σε βοηθήσω να βελτιωθείς, αλλά μην το δέσεις και κόμπο. Όπως μπορείς να διαπιστώσεις, μου είναι και μένα πανεύκολο να γίνω αλαζονικότερος των αλαζονικότερων.
defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Όπως μπορείς να διαπιστώσεις, μου είναι και μένα πανεύκολο να γίνω αλαζονικότερος των αλαζονικότερων. Δεν χρειαζόταν να μπεις σε κόπο, το ξέρουμε ήδη. Τουλάχιστον δε μπορεί να πει κανείς οτι δεν προσπάθησα.
migf1 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Βεβαίως και προσπάθησες, μας έχεις παραθέσει άλλωστε ένα σωρο τεκμηριώσεις, πηγές, και συγγράμματα που χαρακτηρίζουν την C ως oop-paradigm γλώσσα. Καλά για το τι είναι oop και τι όχι δεν το συζητάω, μας έχεις κάνει ολόκληρη διατριβή, όπως και για το τι σημαίνει "support". Έγκυρα, αποδεκτά και εφαρμοσμένα πράγματα, όχι παίξε γέλασε. Απευθείας δανεισμένα από τους κορυφαίους του computer-science και τους leaders της αγοράς. Και όπως πάντα ακριβολογείς και είσαι right-to-the-point. Δεν ξεφέυγειις ούτε χιλιοστό από την ουσία, εύγε! Και πάνω από όλα αντικειμενικός, συνεπής και μετριοπαθής.
defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Αν κάποια στιγμή ξεκολλήσεις από το endless loop στο οποίο μπήκες, το "προσπάθησα" πήγαινε στο "προσπάθησα να συνεννοηθώ μαζί σου". Προς το παρόν δε φαίνεται να είσαι σε φάση που να μπορείς να το καταλάβεις.
migf1 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 ... Για την ιστορία, με το δικό μου σκεπτικό η C "υποστηρίζει" OO γιατί είναι πολύ εύκολο να υλοποιήσεις abstract data types (σε αντίθεση με την assembly, για την οποία δε θα χρησιμοποιούσα την ίδια λέξη). Αλλά δεν έκανε κανείς τον κόπο να ρωτήσει. Shoot first, ask questions later? Το "δικό σου σκεπτικό" για το "support" είναι απλά μια μπουρδολογία και τίποτα περισσότερο. Σε ξανα-προτρέπω να ανοίξεις κάνα βιβλίο (πιθανότατα κάποια από τα 101 series). Μήπως έχεις "δικό σου σκεπτικό" και για το τι σημαίνει ας πούμε "μεταβλητή", να μας το αναλύσεις; 1
defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 @παπί χόρτασες; Γιατί αν θέλεις περισσότερο θα ζητήσω αύξηση! 1
migf1 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 @παπί χόρτασες; Γιατί αν θέλεις περισσότερο θα ζητήσω αύξηση! Τι έγινε defacer, ζητάμε ενισχύσεις; Μήπως σε χαλάει όταν σου απευθύνονται στο ύφος που απευθύνεσαι στους πάντες (δηλαδή αλοζονικά, ξερολίστικα, προκλητικά, ειρωνικά και αφ' ύψηλού). Ή μήπως σε χαλαέι το ότι συν τοις άλλοις έχεις χάσει τελείως την μπάλα, οπότε για να μη φανεί πως δεν ξέρεις "αμύνεσαι" με υπεκφυγές, αστειάκια, και μεταθέσεις ευθυνών; Που πήγαν εκείνα τα ωραία διδάγματα που κάνεις σε όλους, για το πως μπορούν να εμεταλλευτούν αγόγγυστα την απλόχερη ευκαιρία που τους προσφέρεις να μάθουν από τα ποστ σου; Ή τα περί του ανοιχτού μυαλού σου σε μάθηση για πράγματα που δεν ξέρεις; Δεν ισχύουν ολα αυτά τα περισπούδαστα λόγια σου όταν το αντικείμενο είσαι εσύ;
Star_Light Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Δεν υπάρχει αρκετα φιλε ΤΙμον που με εχεις ιγκνορ οσο παραμενει το θεμα οτι κάποια μελη εδω μεσα μιλάνε αποτομα και περιεργα οταν καποιος θα ζητησει βοηθεια. Ειχα επισημανει απο το καλοκαιρι πως αυτο καποια στιγμη θα δημιουργησει γενικευμενο προβλημα. Μπαινεις μεσα βλεπεις κατι στο οποιο μπορεις να βοηθησεις? Αν θελεις το απαντας και τελος. Δεν εισαι καθηγητης ουτε εσυ ουτε ο αλλος να λες τον κοσμο ο οποιος προσπαθει οτι ειναι ασχετος... και οτι δεν ξερει ... και αν το πεις να εισαι σε θεση να δωσεις δικα σου προτζεκτ ωστε να το δεχτει ο αλλος (και αν το δεχτει). Οπως φαινεται η νοοτροπια αυτη που εισηγαγα το καλοκαιρι δεν ειναι χαζη οπως ειχε πει ο ημιθεος αλλα θα μπορουσε να προστατεψει το κλιμα και να μην δημιουργουνται προβληματα. Η συζητηση θα ειναι στοχευμενη μονο στα της πληροφορικης και να μην υπαρχει ο παραμικρος προσωπικος σχολιασμος που θα ειναι προσβλητικος. Αλλιως να μην απανταει καθολου ο αλλος. Μπαινεις μεσα να βοηθησεις... δεν μπαινεις να πεις τον κοσμο ασχετο. Και αυτο δεν ισχυει μονο εδω ισχυει παντου. Θα σου δημιουργησει και σε αλλες δουλειες σου αυτο θεμα να το ξερεις και εσυ και οσοι το κανουν. Δεν μετρανε μονο οι γνωσεις της πληροφορικης μετραει και η γενικοτερη συμπεριφορα... και ελεος επιτελους με αυτο το "ξερω οτι δεν ξερω..." τι το λετε? να σας λυπηθει ο κοσμος και να πει "μα τι καλα παιδια.... " χαχαχαχχα μας λενε και καλα οτι ειναι κακομοιρηδες. Κανεις δεν θελει να δουλευει με κακομοιριδες. P.S Προτεινω οι συντονιστες να λάβουν υποψιν τους εναν τετοιο κανονα... να απαγορευονται οι προσωπικοι σχολιασμοι που δεν ειναι σχετικοι με τον κωδικα του αλλου , και το προσωπικο του επιπεδο στην πληροφορικη. Οποιος δεν θελει απλα δεν απανταει. Πιστευω θα βελτιωθει αρκετα καλυτερα ετσι το φορουμ και θα ελαχιστοποιηθουν οι προσωπικες κοντρες και διαφωνιες. 1
ChRis6 Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Λυσεις γραμμενες σε OOP περιβαλλον στρεφονται γυρω απο την πληροφορια.Αντιθετα λυσεις με διαδικασιες στρεφοται γυρω απο την εννοια του "αλγοριθμου".Εγω ετσι τα εχω στο μυαλο μου. Θα συμφωνησω με τον migf1.Το οτι μπορεις με τα χιλια ζορια να φτιαξεις μια custom λειτουργια OOP σε C( πετσοκομενη θαρρω),δεν σημαινει οτι η C υποστηριζει αντικειμενοστρεφη προγραμματισμο.Το οτι βαζεις function pointers σε ενα struct, δεν σημαινει οτι εχεις "αντικειμενο".Πως τα παει η C με κληρονομηκοτητα και πολυμορφισμο ; To dynamic binding παει περιπατο ; Δηλαδη αν τα θεμελια του αντικειμενοστρεφη προγραμματισμου "μενουν στην ακρη",γιατι να ισχυριζομαστε οτι η C προσφερει OOP μετα κοπων και βασανων ; Μονο αυτο μου ερχεται στο μυαλο σαν απαντηση: 1
defacer Δημοσ. 4 Οκτωβρίου 2012 Δημοσ. 4 Οκτωβρίου 2012 Πως τα παει η C με κληρονομηκοτητα και πολυμορφισμο ; To dynamic binding παει περιπατο ; Δηλαδη αν τα θεμελια του αντικειμενοστρεφη προγραμματισμου "μενουν στην ακρη",γιατι να ισχυριζομαστε οτι η C προσφερει OOP μετα κοπων και βασανων ; Σε μία πρόταση: γιατί το σκεφτόμαστε φιλοσοφικά και όχι πρακτικά. Εξηγούμαι. Αν για σένα κληρονομικότητα, πολυμορφισμός και virtual functions είναι απαραίτητα για να πεις ότι "το πρόγραμμά αυτό είναι OO" τότε όχι, η C δεν προσφέρει OO. Υπάρχουν όμως και αυτοί που πιστεύουν ότι οι γλώσσες που προσφέρουν abstract data types (όπως η C, το έχω αναφέρει νωρίτερα), και οι οποίες συχνά ονομάζονται "object-based" languages, εμπίπτουν κάτω από την ομπρέλα του όρου "ΟΟ". Αυτό φαίνεται ακόμα και από το link που έδωσε σε κάποια φάση ο migf1 σαν επιχείρημα... για το αντίθετο (δες το τελευταίο bullet). Βεβαίως και μόνο το γεγονός ότι υπάρχει η έκφραση "object-based" δείχνει πως μιλάμε για κάτι με κάποιο τρόπο διαφορετικό από το "object-oriented", κάνοντας έτσι αντίλογο στο παραπάνω. Κανείς ποτέ δεν είπε πως η C είναι μια γλώσσα που προσφέρεται για OOP. Όμως κάποιοι απο μας πιστεύουν πως OOP είναι κατά βάση το σκεπτικό της δόμησης ενός προγράμματος και όχι το γεγονός ότι η γλώσσα σου προσφέρει τα μέσα για να αποτυπώσεις το σκεπτικό αυτό με σύντομο και βολικό τρόπο. Επομένως παρόλο που η C σίγουρα δεν είναι OOP oriented όπως πολύ εύστοχα είπε ο Retromaniac νωρίτερα, το αν γίνεται να κάνεις OOP με "λογικό" κόστος δε νομίζω πως είναι κάτι που έχει μόνο μία απάντηση. Θα ξαναναφέρω ένα snippet απο πριν στην επικαιρότητα. Πές ότι έχεις ένα πρόγραμμα που κάνεις μια δουλειά με stack. C#: > class Stack { public void Push(object o); public object Pop(); public object Peek(); } C: > struct Stack {} void Stack_Push(struct Stack* s, void* p); void* Stack_Pop(struct Stack* s); void* Stack_Peek(struct Stack* s); Δεν δίνω implementation γιατί δεν μας ενδιαφέρει (abstract data types). Και πές ότι στο πρόγραμμα αυτό δεν χρειάζεσαι κανένα άλλο OOP feature γιατί είναι πολύ απλό βρε αδερφέ, απλά κάνεις push και pop σε ένα loop (πες π.χ. ότι είναι κομπιουτεράκι που δέχεται είσοδο σε postfix notation). Τα ερωτήματα που θέλω να θέσω (με σκοπό να προβληματίσω) είναι: Το πρώτο πρόγραμμα είναι δείγμα OO; Το δεύτερο πρόγραμμα είναι δείγμα OO; Αν η απάντηση στα 1 και 2 είναι διαφορετική, πώς δικαιολογείται η διαφορά; Αν η απάντηση στο 2 είναι "ναι", δε θα ήταν σωστό να πούμε ότι μπορείς (τουλάχιστον μέχρι ένα σημείο) να γράψεις OO στη C χωρίς να σου βγει ο πάτος; Αν όχι, γιατί; 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα