Επισκέπτης Δημοσ. 15 Μαρτίου 2019 Δημοσ. 15 Μαρτίου 2019 Γιατί να γράφουμε συνέχεια include στην C όταν μπορούμε να έχουμε μόνο ένα; Από την άλλη μεριά, είναι σωστό να έχουμε μόνο ένα; Εσείς τι γνώμη έχετε;
c4tt3l Δημοσ. 15 Μαρτίου 2019 Δημοσ. 15 Μαρτίου 2019 Αν θες ντε και καλά από μόνος σου να φορτώνεις όλες τις βιβλιοθήκες με ένα include μπορείς να φτιάξεις ένα header αρχείο που θα έχει μέσα όλα τα include που υπάρχουν στον compiler σου. Για την c++ από ό,τι θυμάμαι υπάρχει ένα include που κάνει ένα σύνολο από "βασικές" βιβλιοθήκες να περνιέται με την πρώτη αλλά μου διαφεύγει τώρα ποιο είναι. Το κύριο πρόβλημα που πιστεύω πως θα υπάρξει στο να έχουμε μόνο ένα είναι ότι κάποιες βιβλιοθήκες έχουν στάνταρ ονόματα μεταβλητών, συναρτήσεων κ.α. που αν είσαι τέρμα γκαντέμης θα έχεις τουλάχιστον μία συνάρτηση ή μεταβλητή με όνομα που είναι predefined σε μια βιβλιοθήκη που μόλις έκανες include. Μόνο και μόνο για αυτό πιστεύω ότι η χρήση καθολικού include είναι κακή ιδέα και μπορεί να φανεί φοβερά τεμπέλικη σαν προσέγγιση.
παπι Δημοσ. 15 Μαρτίου 2019 Δημοσ. 15 Μαρτίου 2019 29 λεπτά πριν, c4tt3l είπε Για την c++ από ό,τι θυμάμαι υπάρχει ένα include που κάνει ένα σύνολο από "βασικές" βιβλιοθήκες να περνιέται με την πρώτη αλλά μου διαφεύγει τώρα ποιο είναι. stdafx.h αλλα δεν εχει σημασια το ονομα. Ειναι διαδικασια που ονομαζεται precompiled headers και πρεπει να υπαρχει υποστηριξη απο τον compiler, αλλιως δεν εχει νοημα. Επεισης ειναι μια λυση για ενα προβλημα που αμφιβαλω αν εχει αντιμετωπισει ο ts.
Επισκέπτης Δημοσ. 15 Μαρτίου 2019 Δημοσ. 15 Μαρτίου 2019 Σας ευχαριστώ για τις απαντήσεις σας! 11 ώρες πριν, c4tt3l είπε Αν θες ντε και καλά από μόνος σου να φορτώνεις όλες τις βιβλιοθήκες με ένα include μπορείς να φτιάξεις ένα header αρχείο που θα έχει μέσα όλα τα include που υπάρχουν στον compiler σου. Στα πλαίσια του χόμπυ, δεν μου χρειάζονται όλα έτσι κι αλλιώς. 11 ώρες πριν, c4tt3l είπε Το κύριο πρόβλημα που πιστεύω πως θα υπάρξει στο να έχουμε μόνο ένα είναι ότι κάποιες βιβλιοθήκες έχουν στάνταρ ονόματα μεταβλητών, συναρτήσεων κ.α. που αν είσαι τέρμα γκαντέμης θα έχεις τουλάχιστον μία συνάρτηση ή μεταβλητή με όνομα που είναι predefined σε μια βιβλιοθήκη που μόλις έκανες include. Μόνο και μόνο για αυτό πιστεύω ότι η χρήση καθολικού include είναι κακή ιδέα Διόρθωσε με αν έχω καταλάβει λάθος. Τα ονόματα των περιεχόμενων μεταβλητών σε συναρτήσεις είναι «τοπικά ονόματα», κι έτσι δεν έρχονται σε διένεξη με τις μεταβλητές άλλων συναρτήσεων, έστω και αν έχουν ακριβώς τα ίδια ονόματα. Οι υπόλοιπες μεταβλητές που υπάρχουν χύμα, μέσα στις βιβλιοθήκες αυτές, είναι γραμμένες με κεφαλαία... «εγώ», γράφω με πεζά κατά την συνήθη προγραμματιστική τακτική, αν και μερικές φορές το παραβιάζω. Το να λες λοιπόν ότι τα ονόματα της βιβλιοθήκης θα έρθουν σε διένεξη από γκαντεμιά, είναι σαν να λες ότι η γλώσσα προγραμματισμού C σχεδιάστηκε τυχαία και λειτουργεί κατά τύχη. 11 ώρες πριν, c4tt3l είπε και μπορεί να φανεί φοβερά τεμπέλικη σαν προσέγγιση. Τεμπέλικη ναι, όταν θα γράψουμε μια εντολή για όλα, αλλά μήπως αυτό δεν είναι μια από τις πολλές διευκολύνσεις του προγραμματισμού.; Έπειτα πόσο τεμπέλικη είναι η υλοποίηση, όταν μέσω αυτής μπαίνουμε σε μια διαδικασία αναζήτησης, επιλογής, και τελικά αυτής της ίδιας της μάθησης.; 11 ώρες πριν, παπι είπε stdafx.h αλλα δεν εχει σημασια το ονομα. Ειναι διαδικασια που ονομαζεται precompiled headers και πρεπει να υπαρχει υποστηριξη απο τον compiler, αλλιως δεν εχει νοημα. Επεισης ειναι μια λυση για ενα προβλημα που αμφιβαλω αν εχει αντιμετωπισει ο ts. Είναι αλήθεια ότι δεν έχω χρειαστεί ποτέ όλα τα include που υπάρχουν, απλώς το είχα σαν απορία από καιρό. Πρόσφατα το υλοποίησα με τη βοήθεια αρχείου .txt (μόνο τα βασικά που χρησιμοποιώ, όχι όλα), και περίμενα να βρω λίγο χρόνο για να το συζητήσουμε εδώ.
c4tt3l Δημοσ. 15 Μαρτίου 2019 Δημοσ. 15 Μαρτίου 2019 46 λεπτά πριν, tony_dim_2018 είπε Τα ονόματα των περιεχόμενων μεταβλητών σε συναρτήσεις είναι «τοπικά ονόματα», κι έτσι δεν έρχονται σε διένεξη με τις μεταβλητές άλλων συναρτήσεων, έστω και αν έχουν ακριβώς τα ίδια ονόματα. Οι υπόλοιπες μεταβλητές που υπάρχουν χύμα, μέσα στις βιβλιοθήκες αυτές, είναι γραμμένες με κεφαλαία... «εγώ», γράφω με πεζά κατά την συνήθη προγραμματιστική τακτική, αν και μερικές φορές το παραβιάζω. Το να λες λοιπόν ότι τα ονόματα της βιβλιοθήκης θα έρθουν σε διένεξη από γκαντεμιά, είναι σαν να λες ότι η γλώσσα προγραμματισμού C σχεδιάστηκε τυχαία και λειτουργεί κατά τύχη. Μα δεν λέω για τις μεταβλητές μέσα στις συναρτήσεις που έχουν κάποιες βιβλιοθήκες. Αυτές είναι local όπως ξέρουν και οι πέτρες. Εγώ λέω για συγκεκριμένα ονόματα μεταβλητών και σταθερών που κάποιες βιβλιοθήκες έχουν με συμβατικά ονόματα, ακόμα και όλο μικρά. Αλλά αυτό πες πως είναι πολύ τραβηγμένο. Το θέμα είναι π.χ. αν έχεις βάλει μέσα την βιβλιοθήκη για OpenMP για κάποιο λόγο και κάπου έχεις γράψει κάπου μια μεταβλητή ή μια συνάρτηση με όνομα parallel, shared, scheduled κλπ. Ένας θεός ξέρει τι θα ανασύρει ο compiler από τη σούπα που έφτιαξες. Θα μου πεις "τι OpenMP και κολοκύθια, εγώ θα βάλω τα βασικά τα γνωστά τα κύρια σαν βιβλιοθήκες". Έλα όμως που οι βιβλιοθήκες έχουν ένα μάτσο πράγματα που ίσως δεν θα χρειαστείς ή δεν θα έχεις εξοικείωση μαζί τους και όταν σου τα σκάσουν θα είναι αργά γιατί θα παλεύεις να βρεις γιατί ο compiler λέει για διπλότυπο όνομα και στο stack overflow θα σου πετάνε καντήλια οι neckbeards.
solarpower Δημοσ. 16 Μαρτίου 2019 Δημοσ. 16 Μαρτίου 2019 (επεξεργασμένο) Ανά αρχείο η C έχει "καθολικές", που τις βλέπουν οι συναρτήσεις στο αρχείο, αλλά όχι άλλες συναρτήσεις σε άλλα αρχεία, όταν ορίζονται ως στατικές. Αν τώρα το include μπει σε ένα αρχείο τότε ό,τι έχει θα φαίνεται σε αυτό το αρχείο, δηλαδή ότι έχει σε ονόματα "καθολικά" σε αυτό. δες και εδώ: https://docs.microsoft.com/en-us/cpp/c-language/c-identifiers?view=vs-2017 για τα ονόματα. Η ANSI C δεν υπολογίζει από το έβδομο και μετά χαρακτήρα, που σημαίνει ότι δυο ονόματα διαφορετικά με ίδιους τους έξι πρώτους χαρακτήρες, σε binary, για εξωτερικά ονόματα, θα είναι ίδιοι για τον compiler. Εσωτερικά ονόματα, εντός συνάρτησης υπολογίζονται μέχρι τους 31 χαρακτήρες. δες και το scope: https://docs.microsoft.com/en-us/cpp/c-language/scope-and-visibility?view=vs-2017 Επεξ/σία 16 Μαρτίου 2019 από solarpower
the other one Δημοσ. 21 Μαρτίου 2019 Δημοσ. 21 Μαρτίου 2019 Αυτό που λες γίνεται αλλα μην το κάνεις είναι bad practice και πηγή για bugs. Αν βαριέσαι τόσο να τα βάζεις μπορείς να βάλεις κάνα IDE να στα ξερνάει αυτόματα για σένα, δεν είμαι σίγουρος για τη C αλλά για τα javoειδή αυτά είναι ψωμοτύρι πχ. 1
Επισκέπτης Δημοσ. 21 Μαρτίου 2019 Δημοσ. 21 Μαρτίου 2019 37 λεπτά πριν, the other one είπε Αυτό που λες γίνεται αλλα μην το κάνεις είναι bad practice και πηγή για bugs. Αν βαριέσαι τόσο να τα βάζεις μπορείς να βάλεις κάνα IDE να στα ξερνάει αυτόματα για σένα, δεν είμαι σίγουρος για τη C αλλά για τα javoειδή αυτά είναι ψωμοτύρι πχ. Σ' ευχαριστώ! Το είχα ως απορία. Βαρεμάρα και χόμπυ δεν πάνε μαζί...😀
Επισκέπτης Δημοσ. 22 Μαρτίου 2019 Δημοσ. 22 Μαρτίου 2019 (επεξεργασμένο) Αμα κάνεις προγραμματισμό για χόμπυ έχεις μεγάλες πιθανότητες να γίνεις διευθυντικό στέλεχος σε ΙΤ μεγάλης εταιρίας πάντως.. να ξέρεις.. γιατί είναι κάτι άτομα εκεί μέσα απο κολλέγια και ελληνο -αμερικανικές / γερμανικές/ γαλλικές ενώσεις που είχαν γνωστό και παίρνουν 2-3 χιλιάρικα και για να δικαιολογήσουν το μισθουλάκο τους πετάγονται στους προγραμματιστές για να μεταφέρουν ιδέες τους.. φουτουριστικές και ενθουσιώδεις... Επεξ/σία 22 Μαρτίου 2019 από Επισκέπτης
Bspus Δημοσ. 22 Μαρτίου 2019 Δημοσ. 22 Μαρτίου 2019 Στις 15/3/2019 στις 2:35 ΠΜ, c4tt3l είπε Το κύριο πρόβλημα που πιστεύω πως θα υπάρξει στο να έχουμε μόνο ένα είναι ότι κάποιες βιβλιοθήκες έχουν στάνταρ ονόματα μεταβλητών, συναρτήσεων κ.α. που αν είσαι τέρμα γκαντέμης θα έχεις τουλάχιστον μία συνάρτηση ή μεταβλητή με όνομα που είναι predefined σε μια βιβλιοθήκη που μόλις έκανες include. Μόνο και μόνο για αυτό πιστεύω ότι η χρήση καθολικού include είναι κακή ιδέα και μπορεί να φανεί φοβερά τεμπέλικη σαν προσέγγιση. Ισως γι αυτο θεωρειται καλη πρακτικη, ασχετα με την πιθανοτητα για conflict να χρησιμοποιεις στις μεταβλητες σου μια ονοματολογια που ειναι σιγουρο οτι αποφευγει τετοια προβληματα. Πχ εχεις εναν ακεραιο για ηλικια, αντι να τον πεις age τον λες var_int_age θα βοηθαει και αργοτερα σε αναζητησεις στο source code
Επισκέπτης Δημοσ. 22 Μαρτίου 2019 Δημοσ. 22 Μαρτίου 2019 (επεξεργασμένο) 10 ώρες πριν, ioannis000 είπε Αμα κάνεις προγραμματισμό για χόμπυ έχεις μεγάλες πιθανότητες να γίνεις διευθυντικό στέλεχος σε ΙΤ μεγάλης εταιρίας πάντως.. να ξέρεις.. γιατί είναι κάτι άτομα εκεί μέσα απο κολλέγια και ελληνο -αμερικανικές / γερμανικές/ γαλλικές ενώσεις που είχαν γνωστό και παίρνουν 2-3 χιλιάρικα και για να δικαιολογήσουν το μισθουλάκο τους πετάγονται στους προγραμματιστές για να μεταφέρουν ιδέες τους.. φουτουριστικές και ενθουσιώδεις... Η παραγωγή ιδεών, προϋποθέτει και τους κατάλληλους αποδέκτες. Διαφορετικά ο «παραγωγός», πέφτει σε κατάσταση βαρεμάρας, είτε αποφασίζει κάποια στιγμή να δράσει μόνος. Έτσι, ο ίδιος δεν βαριέται ποτέ, κι αφήνει άλλους στην ησυχία τους. Επεξ/σία 22 Μαρτίου 2019 από Επισκέπτης
παπι Δημοσ. 22 Μαρτίου 2019 Δημοσ. 22 Μαρτίου 2019 4 ώρες πριν, Bspus είπε Ισως γι αυτο θεωρειται καλη πρακτικη, ασχετα με την πιθανοτητα για conflict να χρησιμοποιεις στις μεταβλητες σου μια ονοματολογια που ειναι σιγουρο οτι αποφευγει τετοια προβληματα. Πχ εχεις εναν ακεραιο για ηλικια, αντι να τον πεις age τον λες var_int_age θα βοηθαει και αργοτερα σε αναζητησεις στο source code Η καλυτερη πρακτικη ειναι το namespace. Σε C μπορεις να το υλοποιησεις με prefix το apiname βλεπε sqlite που τα παντα ειναι sqlite_* 1
Επισκέπτης Δημοσ. 23 Μαρτίου 2019 Δημοσ. 23 Μαρτίου 2019 Στις 22/3/2019 στις 12:47 ΠΜ, ioannis000 είπε ιδέες Μια σχετική ερώτηση εδώ https://www.insomnia.gr/forums/topic/704158-κατοχύρωση-ιδεών-πατεντών-κλπ/
PC_MAGAS Δημοσ. 23 Μαρτίου 2019 Δημοσ. 23 Μαρτίου 2019 Δεν ενδεικνύεστε το να βάζεις όλες τις βιβλιοθήκες που θες και αυτό γιατί: Η τελική μεταγλωτισμένη εφαρμογή θα έχει μεγάλο μέγεθος. Ενδεχομένος κάποια βιβλιοθήκη να έχει κάποιο κενό ασφαλείας το οποίο μπορεί να εκμεταλλευθεί κάποιος. Γι αυτό ποιο συνετό είναι να έχεις το κατάλληλο μέγεθος βιβλιοθηκών με τις ενέργειες που θες.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα