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

Προγραμματισμος c(γραφικο περιβαλλον)


LOLgamer

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

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

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

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

Δημοσιευμένες Εικόνες

Εγώ πάντως θεωρώ πιο σημαντικό πως ο defacer για μια ακόμα φορά επινοεί δικές του θεωρίες για να συμμετάσχει αφ' υψηλού σε νήμα που πραγματεύεται θέμα με το οποίο είναι ηλίου φαεινότερο πως δεν έχει την παραμικρή εμπειρία (κατά τη άποψή μου ούτε καν επαφή)... ελπίζω πως it's fine by you.

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

 

Το μόνο που μετράει είναι το μήνυμα και όχι ποιος το έγραψε. Πιθανώς και εγώ να έχω κρίνει κάποιες φορές ένα μήνυμα με βάση ποιος το έγραψε αλλά αν το έκανα ήταν λάθος μου. Πες ότι στο φόρουμ δεν φαίνεται το username στα μηνύματα. Ο defacer έγραψε μια συμβουλή και κάποια τμήματα κώδικα. Η συμβουλή του είναι είτε σωστή είτε όχι. Αν τώρα ο defacer είναι το καλύτερο παιδί και περνάει γριούλες απέναντι ή αν είναι αλαζόνας, φέρεται αφ' υψηλού και δεν ξέρω και εγώ τι, αυτά δεν αλλάζουν το σωστό ή όχι της συμβουλής του. Αυτό που πρέπει να σχολιάζουμε είναι το περιεχόμενο του μηνύματος.

 

Σε ότι αφορά το -Werror, εγώ ξέρω πως όπου κι αν έχω δουλέψει το -Werror (και όποιο αντίστοιχο άλλων compilers) είναι υποχρεωτικό μέχρι αποδείξεως πως είναι περιττό (μια φορά που δεν ήταν, το επέβαλλα εγώ :P)

 

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

 

Αυτό τι επιχείρημα είναι τώρα ? Όταν εσύ κάνεις ή επιβάλλεις κάτι δηλαδή, δεν υπάρχει καμμία περίπτωση αυτό να είναι λάθος (ή εντάξει όχι λάθος αλλά να μην θεωρείται καλή πρακτική από άλλους) ?

 

in GCC 4.6, -Wall now includes the warning -Wunused-but-set-variable, which

triggers a lot and causes build failures when building with -Werror.

 

Εδώ βλέπουμε να αναφέρει μια λίστα πακέτων (σε linux αλλά δεν έχει σημασία) που σταμάτησαν να γίνονται compile λόγω της χρήσης -Werror και αλλαγής της συμπεριφοράς του compiler. Υπήρχε ένα πολύ καλό άρθρο που επιχειρηματολογούσε κατά του Werror και είχε παραδείγματα ακόμη και με σοβαρά project που έτυχε να πέσουν θύμα και να μην γίνονται compile με αποτέλεσμα ταλαιπωρία για (άπειρους) χρήστες αλλά δεν μπόρεσα να το βρω. Φυσικά μια ομάδα που αναπτύσσει ένα κώδικα μπορεί να χρησιμοποιεί το -Werror μόνο σε debug builds ή να κάνει 1002 άλλες τακτικές και να μην επηρεάζεται ο τελικός χρήστης αλλά το θέμα μας ήταν ότι Werror != type safety.

 

Η C είναι πολύ καλή και χρυσή γλώσσα αλλά (καλώς ή κακώς) δεν παρέχει κάποιες μαγκιές που έχουν άλλες γλώσσες. Το να λέμε ότι μια ματσακονιά (Werror) ισοδυναμεί με ολόκληρη την υποδομή (type-safety) που παρέχει μια άλλη γλώσσα είναι, κατ εμέ πάντα, λάθος.

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

...αλλά το θέμα μας ήταν ότι Werror != type safety....

 

Προφανώς έχουμε διαφορετική αντίληψη για το ποιο είναι το θέμα μας. Εγώ θεωρώ πως, μετά την απάντηση του defacer στην ερώτησή μου, το θέμα μας είναι αν το type-safety αποτελεί κάτι σαν ιερό δισκοπότηρο στο GUI programming, καθώς επίσης και το αν επιλέξεις το type-safety ως σημαντική σου προτεραιότητα το κατά πόσο η C ως γλώσσα/compiler σου δίνει ή όχι τη δυνατότητα να γράψεις κώδικα που θα σε ειδοποιεί ή όχι όταν περνάς ότι callback συνάρτηση σου κατέβει στο κεφάλι στους handlers.

 

...

Η C είναι πολύ καλή και χρυσή γλώσσα αλλά (καλώς ή κακώς) δεν παρέχει κάποιες μαγκιές που έχουν άλλες γλώσσες. Το να λέμε ότι μια ματσακονιά (Werror) ισοδυναμεί με ολόκληρη την υποδομή (type-safety) που παρέχει μια άλλη γλώσσα είναι, κατ εμέ πάντα, λάθος.

 

Ενώ κατά την αντίληψή σου εγώ υποστηρίζω το αντίθετο στο νήμα, και μάλιστα επιμένω σε αυτό.

 

Όσο για το -Werror, το θεωρώ αυτονόητο πως το production build γίνεται χωρίς -Werror, χωρίς -g3, χωρίς -pg και με -s (ενίοτε και με -Ox).

 

@MitsakosGR:

 

Thanks για την διευκρίνηση. Οπότε για το συγκεκριμένο που εξέφρασα την απορία μου στον albNik  μιλάμε σε επίπεδο RAD tool και όχι γλώσσας, και άρα it makes more sense για κάποιους σαν κι εμένα που δεν έχουν εμπειρία με GUI σε .net

 

Ένα πρόχειρο googling μάλιστα με αφορμή το μήνυμά σου μου έβγαλε αυτό: http://www.dotnetperls.com/initializecomponent που τονίζει το ίδιο που είπες κι εσύ.

 

@Dx:

 

Νομίζω πως το GTK+ gtk_new_dialog_with_buttons() είναι κάτι ενδιάμεσο μεταξύ των Win32 API MessageBox() και ShowDialog().

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

Ελπίζω να συνειδητοποιούμε όλοι ότι

  1. Οποιοσδήποτε compiler θέλει να λέγεται C compiler υποχρεούται να υλοποιεί επακριβώς αυτά που λέει το standard.
  2. Το standard λέει ότι αλλαγή τύπων ανάμεσα σε pointers to functions γίνεται ελεύθερα.
  3. Ο συνδυασμός των options που ενεργοποιούν το warning (on by default) και του warnings as errors (Werror) έχει σαν αποτέλεσμα να απορρίπτεται από τον compiler ένα τουλάχιστον πρόγραμμα το οποίο σύμφωνα με το standard είναι legal και well-defined (π.χ. το παράδειγμα με το fooPtr που έδωσα).
  4. Άρα όταν έχεις ενεργοποιημένα αυτά τα options προγραμματίζεις σε μια γλώσσα που μοιάζει πολύ με τη C αλλά δεν είναι η C (μιας και ο compiler μόλις αποδείξαμε πως δεν είναι conforming C compiler).

Φυσικά και εννοείται πως αυτό ακριβώς θα κάνει ο οποιοσδήποτε σοβαρός επαγγελματίας αν δε συντρέχουν άλλοι ιδιαίτεροι λόγοι, αλλά άλλο αυτό και άλλο το να μιλάμε για C και αφού πούμε ο,τι έχουμε να πούμε να έρθει κάποιος εξυπνάκιας να πει "bazinga! εγώ μιλούσα για κάτι-σαν-C άσχετα που μέχρι τώρα δεν το είχα ξεκαθαρίσει".

 

Αυτά βέβαια σε θεωρητικό επίπεδο, ενώ σε πρακτικό επίπεδο το γεγονός παραμένει ότι λόγω της χρήσης της G_CALLBACK το type safety έχει πάει ήδη περίπατο (μπείτε στην κολυμβήρθα του void* και όλες οι αμαρτίες της ως τώρα ζωής σας θα συγχωρεθούν) και όλα τ' άλλα είναι να 'χαμε να λέγαμε.

 

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

 

PS: migf1, το όποιο ωραίο, αδιάφορο ή άσχημο ύφος που έχω ή πιστεύεις ότι έχω αισθάνεσαι πως σε δικαιολογεί ή/και σε δικαιώνει όταν ανοίγεις το στόμα σου να μου απευθύνεις το λόγο και βγαίνει οχετός;

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

Ελπίζω να συνειδητοποιούμε όλοι ότι

  • Οποιοσδήποτε compiler θέλει να λέγεται C compiler υποχρεούται να υλοποιεί επακριβώς αυτά που λέει το standard.
  • Το standard λέει ότι αλλαγή τύπων ανάμεσα σε pointers to functions γίνεται ελεύθερα.
  • Ο συνδυασμός των options που ενεργοποιούν το warning (on by default) και του warnings as errors (Werror) έχει σαν αποτέλεσμα να απορρίπτεται από τον compiler ένα τουλάχιστον πρόγραμμα το οποίο σύμφωνα με το standard είναι legal και well-defined (π.χ. το παράδειγμα με το fooPtr που έδωσα).
  • Άρα όταν έχεις ενεργοποιημένα αυτά τα options προγραμματίζεις σε μια γλώσσα που μοιάζει πολύ με τη C αλλά δεν είναι η C (μιας και ο compiler μόλις αποδείξαμε πως δεν είναι conforming C compiler).
Φυσικά και εννοείται πως αυτό ακριβώς θα κάνει ο οποιοσδήποτε σοβαρός επαγγελματίας αν δε συντρέχουν άλλοι ιδιαίτεροι λόγοι, αλλά άλλο αυτό και άλλο το να μιλάμε για C και αφού πούμε ο,τι έχουμε να πούμε να έρθει κάποιος εξυπνάκιας να πει "bazinga! εγώ μιλούσα για κάτι-σαν-C άσχετα που μέχρι τώρα δεν το είχα ξεκαθαρίσει".

 

 

 

"υποχρεούται επακριβώς" :lol:

"έχει σαν αποτέλεσμα να απορρίπτεται από τον compiler ένα τουλάχιστον πρόγραμμα" :lol:

"μοιάζει πολύ με τη C αλλά δεν είναι η C" :lol:

"μόλις αποδείξαμε πως δεν είναι conforming C compiler" :lol:

"κάτι σαν C" :lol:

 

Άστο ρε επιστήμονα, άστο να πάει στην ευχή το τιμημένο... καλά είσαι εκεί με τα βιβλία, με τις σημειώσεις... κι άσε μας εμάς in the real world να δουλεύουμε με "κάτι σαν C" όπου σταθούμε κι όπου βρεθούμε :lol: :lol: πω πω, ακόμα γελάω... να 'σαι καλά ρε φίλαράκι, μου έφτιαξες το βράδυ απόψε :lol:

 

"αλλά η απάντηση επι της ουσίας παραμένει αγνοούμενη" :lol: :lol:

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

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

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

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

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

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

Σύνδεση

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

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

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