THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => C / C++ / C# => Topic started by: Diamont_is_coming on August 29, 2021, 22:17:17 pm



Title: C/C++ compiler and toolchain
Post by: Diamont_is_coming on August 29, 2021, 22:17:17 pm
Ακολουθεί blogpost :P
Λοιπόν ας το πάρω απ'την αρχή, πριν από λίγους μήνες τελείωσε το πρώτο μου έτος σε αυτήν την σχολή. Έβγαλα όλο το έτος χρησιμοποιώντας το codeblocks με τον ενσωματωμένο mingw (σε windows 10), ωστόσο τώρα θέλω να πειραματιστώ με πιο advanced προγραμματισμό σε C και C++ κι επίσης θέλω να δοκιμάσω και τα χαρακτηριστικά των καινούργιων προτύπων (C++20 και C2x, μέχρι τα C17, C++17 τα κουτσο-κατάφερα με το τρέχον setup) που σημαίνει ότι χρειάζομαι υποστήριξη για τα καινούργια χαρακτηριστικά των γλωσσών και δεν έχω όρεξη να βλέπω το codeblocks να κρασάρει κάθε φορά που θέλω να κάνω build >:( >:( (πραγματικά κακό software). Γι'αυτό ήρθα εδώ να ρωτήσω τι toolchain χρησιμοποιείτε οι υπόλοιποι για C/C++ (text editors, IDEs, compiler, make system, linker κλπ), και ειδικά τι compiler, για να πάρω ιδέες.


Title: Re: C/C++ compiler and toolchain
Post by: Thunderlord on August 29, 2021, 23:08:07 pm
Απαντάω λίγο πρόχειρα και θα επανέλθω από αύριο πιο πλήρες:

Νομίζω ο,τι καλύτερο είναι το Clion. Με το πανεπιστημιακό έχεις δωρεάν ένα χρόνο Premium και μπορείς να κάνεις ο,τι ανέφερες (από όσο νομίζω). Στα Windows έχει λίγο δουλειά η εγκατάσταση, αλλά αν έχεις linux είναι πολύ εύκολα
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy) 


Title: Re: C/C++ compiler and toolchain
Post by: Ούγκι on August 29, 2021, 23:40:44 pm
Φυσικά σε αυτή την ερώτηση δεν υπάρχει μοναδική σωστή απάντηση και πολλοί επαγγελματίες χρησιμοποιούν αρκετά διαφορετικά εργαλεία και workflow. Μιας και δεν αναφέρεις κάποιο συγκεκριμένο στόχο ή εφαρμογή θα αναφέρω τα βασικές ομάδες που πέφτει το 90% των C/C++ developers.

The linux magician
gcc+vim+gdb+Makefile/CMake
+ έχεις άμεσο έλεγχο μέχρι το χαμηλότερο επίπεδο
+ τα πιο δυνατά εργαλεία (αν μπορείς να τα χρησιμοποιήσεις)
+ η εκμάθηση των εργαλείων είναι μεγάλη διδιακτική εμπειρία
+ ανοιχτό λογισμικό τα πάντα
- θέλει πολύ ψάξιμο και χρόνο εξοικίωσης, ειδικά για να είσαι γρήγορος και παραγωγικός με τα εργαλεία αυτά
- μάλλον δεν κάνεις μπάνιο πολύ συχνά και βρωμάς λίγο

The desktop app development enjoyer
CLion+gcc/clang/visual cpp+CMake
+ ολοκληρωμένο IDE out of the box (static code analysis, code completion, debugger)
+ ότι επιλογές και customization μπορεί να χρειαστείς και παραπάνω
+ υποστήριξη πολλών διαφορετικών compilers, μέθοδο compilation, plugins
+ cross platform
- κάπως βαρύ και αργό

The windows programmerTM
Visual studio+visual cpp+Visual C++ build scripts
+ Ίσως το πιο διάσημο IDE, με πολλές χρήσεις πέρα από C++
+ Πολλά plugins, πολύ καλής ποιότητας static code analysis
+ επίσης πολλές επιλογές και customization
- Το visual studio σε περιορίζει στο να χρησιμοποιείς περιφερειακά της microsoft πιο πολύ.
- Πολύ bloated, αχρησιμοποίητο σε παλιά PC


Title: Re: C/C++ compiler and toolchain
Post by: Judas Priest saved me on August 30, 2021, 00:01:12 am
Προσωπικά δεν έχω να προσφέρω πολλά στην συζήτηση γιατί ασχολούμε πολύ περισσότερο με python από ότι C/C++.

Αυτό όμως που θέλω να πω είναι δεν μπορω να δεχτώ ότι υπάρχουν άτομα που γράφουν σοβαρά σε κάτι που δεν έχει δυνατό debugger.

Χρησιμοποιώ visual studio, αλλά και το CLion μου φαίνεται promising, αν και δε το έχω χρησιμοποιήσει,


Title: Re: C/C++ compiler and toolchain
Post by: kongr45gpen on August 30, 2021, 01:13:43 am
Το CLion είναι εξαιρετικό πρόγραμμα, αλλά for the sake of completeness θα προσθέσω και το Visual Studio Code (https://code.visualstudio.com/) που σε συνδυασμό με το Intellisense δουλεύει επίσης πολύ ωραία με C++ (developing + debugging).

To clear up some misconceptions, το VS Code ενώ είναι συγγενής του Visual Studio, είναι αντιθέτως πολύ πιο ελαφρύ, δωρεάν, ανοιχτού κώδικα, linux-compatible κλπ κλπ. Είναι ένας πολύ χρήσιμος ελαφρύς editor που μπορεί να καλύψει όσους δεν έχουν πρόσβαση σε δωρεάν CLion.

Με το πανεπιστημιακό έχεις δωρεάν ένα χρόνο Premium και μπορείς να κάνεις ο,τι ανέφερες (από όσο νομίζω).
Actually CLion είναι δωρεάν για όσο φοιτάς!


Title: Re: C/C++ compiler and toolchain
Post by: Argirios on August 30, 2021, 02:12:43 am
VScode λόγω της ευκολίας στη χρήση και των extensions


Title: Re: C/C++ compiler and toolchain
Post by: Apostolof on August 30, 2021, 08:50:05 am
Actually CLion είναι δωρεάν για όσο φοιτάς!

Και ανεξάρτητα έτους! Στο 9ο ακόμα το έχω :-X (ίσως για αυτό δεν τελειώνω τη σχολή)

Εγώ είχα βγάλει όλες τις εργασίες της σχολής με την πρώτη επιλογή που λέει ο Ούγκι, gcc+gdb+Makefile+valgrind+kcachegrind+perf+cppcheck +20 άλλα πράγματα για κάθε διαφορετικό μέρος του να γράψεις και να ελέγξεις τον κώδικα σου. Θα σου το πρότεινα μόνο αν θες ταυτόχρονα να ασχοληθείς/μάθεις linux. Κατά τα άλλα ξέρω ότι δείχνει cool, αλλά είναι εξαιρετικά αντιπαραγωγικό, ειδικά όταν είσαι noob.


Title: Re: C/C++ compiler and toolchain
Post by: Katarameno on August 30, 2021, 11:35:34 am
Κανείς σας δε χρησιμοποιεί το C++Builder (ή το RAD Studio) της Embarcadero?

https://www.embarcadero.com/products/cbuilder / https://www.embarcadero.com/products/rad-studio


Title: Re: C/C++ compiler and toolchain
Post by: Ούγκι on August 30, 2021, 12:13:02 pm
To clear up some misconceptions, το VS Code ενώ είναι συγγενής του Visual Studio, είναι αντιθέτως πολύ πιο ελαφρύ, δωρεάν, ανοιχτού κώδικα, linux-compatible κλπ κλπ.
Όντως το VS code είναι σημαντική απώλεια από τη λίστα μου (μάλλον μου διέφυγε λόγω κακής εμπειρίας με VS). Ίσως κατά τη γνώμη μου η καλύτερη επιλογή για πρώτο editor λόγω δυνατοτήτων και ταυτόχρονα open source οπότε δεν ανησυχείς για άδειες μετά τη σχολή σαν το CLion.

Πέρα από το editor, μιας και αναφέρεις για "advanced" πράγματα και ψάξιμο με standards, θα πρότεινα gcc στα linux επειδή τείνει να υποστηρίζει πιο γρήγορα τα διάφορα standards που βγαίνουν. Επίσης ο MSVC βάζει διάφορα platform specific features πέρα από το standard και γενικά δεν ακόλουθα πιστά τα standards.
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy) 


Title: Re: C/C++ compiler and toolchain
Post by: Diamont_is_coming on September 01, 2021, 16:22:46 pm
Η αλήθεια είναι πως το "advanced C/C++" ήταν κάπως γενικό. Σκέφτομαι να ασχοληθώ με qt και με μερικά low level πράγματα (ίσως κανένα toy os, κανέναν χαζό interpreter), γενικά projects για να μπουν στο βιογραφικό. Μάλλον προς το παρόν απλά θα κατεβάσω msys2 για την τελευταία έκδοση του mingw64, clion και cmake και ελπίζω ότι στο μέλλον η libc/libcxx του llvm θα γίνει διαθέσιμη για windows για να μεταφέρθω σε clang+llvm. Αναρωτιέμαι όμως αν το qtcreator είναι καλύτερο ide για αυτήν την χρήση. Ευχαριστώ πολύ πάντως για τις προτάσεις.


Title: Re: C/C++ compiler and toolchain
Post by: Xplicit on September 01, 2021, 17:16:25 pm
Στην εταιρεία όπου εργάζομαι και γράφουμε C++ με OpenMPI και OpenMP, δουλεύουμε VScode με αρκετά plugins, gcc και cmake. Η εφαρμογή μας είναι portable σε windows και Linux. Το σύστημα μου είναι Linux και όσες φορές χρειάζεται να κάνω πιο Windows πράγματα όπως δημιουργία DLLs κλπ βγάζω σπυριά. Επίσης για χρόνια ο msvc είχε πολύ κακή φήμη. Θα έχει βελτιωθεί φαντάζομαι.

Ο gcc νομίζω είναι απο τους πρώτους που υποστηρίζουν μοντέρνα c++ χαρακτηριστικά. Πάντως ο 10 που είναι ο τελευταίος από όσο θυμάμαι δεν υποστηρίζει διάφορα πράγματα απο c++ 17 ενω έχει βγεί η 20.


Title: Re: C/C++ compiler and toolchain
Post by: Diamont_is_coming on September 01, 2021, 17:56:41 pm
Στην εταιρεία όπου εργάζομαι και γράφουμε C++ με OpenMPI και OpenMP, δουλεύουμε VScode με αρκετά plugins, gcc και cmake. Η εφαρμογή μας είναι portable σε windows και Linux. Το σύστημα μου είναι Linux και όσες φορές χρειάζεται να κάνω πιο Windows πράγματα όπως δημιουργία DLLs κλπ βγάζω σπυριά. Επίσης για χρόνια ο msvc είχε πολύ κακή φήμη. Θα έχει βελτιωθεί φαντάζομαι.

Ο gcc νομίζω είναι απο τους πρώτους που υποστηρίζουν μοντέρνα c++ χαρακτηριστικά. Πάντως ο 10 που είναι ο τελευταίος από όσο θυμάμαι δεν υποστηρίζει διάφορα πράγματα απο c++ 17 ενω έχει βγεί η 20.

Ωστόσο, σύμφωνα με το *cppreference, ο msvc έχει την πιο ολοκληρωμένη υποστήριξη για C++20, και από όσο διαβάζω σε forums είναι ο μόνος compiler που προσφέρει μία σχετικά ολοκληρωμένη υλοποίηση για χρήση modules αντί για headers.
* Το link:  https://en.cppreference.com/w/cpp/compiler_support  (https://en.cppreference.com/w/cpp/compiler_support)

Όμως θα συμφωνήσω ότι η ομάδα του gcc (παρότι πολύ μικρή σε αντίθεση με τις apple, google, ibm, intel, amd, nvidia και άλλες που δουλεύουν στο llvm) είναι πολύ γρήγορη στην προσθήκη νέων χαρακτηριστικών, και προσφέρει την καλύτερη υποστήριξη για τα επερχόμενα C++2b και C2x πρότυπα.


Title: Re: C/C++ compiler and toolchain
Post by: Ούγκι on September 01, 2021, 20:49:18 pm
Η αλήθεια είναι πως το "advanced C/C++" ήταν κάπως γενικό. Σκέφτομαι να ασχοληθώ με qt και με μερικά low level πράγματα (ίσως κανένα toy os, κανέναν χαζό interpreter), γενικά projects για να μπουν στο βιογραφικό. Μάλλον προς το παρόν απλά θα κατεβάσω msys2 για την τελευταία έκδοση του mingw64, clion και cmake και ελπίζω ότι στο μέλλον η libc/libcxx του llvm θα γίνει διαθέσιμη για windows για να μεταφέρθω σε clang+llvm. Αναρωτιέμαι όμως αν το qtcreator είναι καλύτερο ide για αυτήν την χρήση. Ευχαριστώ πολύ πάντως για τις προτάσεις.

Αναφέρεις δύο αρκετά διαφορετικά προγραμματιστικά στυλ : / (δε το λέω για κακό, ωραίο που πειραματίζεσαι και έχεις όρεξη, απλά είναι λίγο πιο δύσκολο σε εμάς που σου προτείνουμε)

Για το Qt τότε φαντάζομαι το Qt Creator + Qt studio, το οποίο ως IDE της Qt (χωρίς να το έχω χρησιμοποιήσει) είναι πάρα πολύ παραγωγικό, και έχει αρκετά χρόνια ωριμότητας.

Για low level πράγματα, χρησιμοποίησε linux, μην το σκέφτεσαι καν, τα εργαλεία δεν συγκρίνονται. Τα windows είναι μαύρο κουτί, δεν υπάρχει επαφή του προγραμματιστή με τον πηρύνα/λειτουργικό πέρα από το API του.

Επίσης δεν υπάρχει λόγος να ανησυχείς για τα νέα C++ standards, αυτά έτσι κι αλλιώς θα αρχίσουν να χρησιμοποιούνται σε 6 χρόνια. Οι περισσότεροι C++11 χρησιμοποιούν τώρα, πρόσφατα βλέπεις project σιγά σιγά να μεταφέρονται σε c++14. Μέχρι τότε ποιος ξέρει τι μπορεί να έχει γίνει, μπορεί η C++ να είναι απαρχαιωμένη και να χρησιμοποιούμε όλοι rust  :P

Οπότε τελικά προτείνω VS code, Qt creator+linux. Μπορείς να κάνεις ότι ανέφερες από τα ενδιαφέροντα σου (και γενικά τα πάντα) σε ένα εξελιγμένο και επαγγελματικό προγραμματιστικό περιβάλλον.


Title: Re: C/C++ compiler and toolchain
Post by: MrRobot on September 02, 2021, 11:21:13 am
Επίσης δεν υπάρχει λόγος να ανησυχείς για τα νέα C++ standards, αυτά έτσι κι αλλιώς θα αρχίσουν να χρησιμοποιούνται σε 6 χρόνια. Οι περισσότεροι C++11 χρησιμοποιούν τώρα, πρόσφατα βλέπεις project σιγά σιγά να μεταφέρονται σε c++14.

Αυτό ισχύει πολύ. Για εμένα το ποιο σημαντικό είναι να μαθεις να χρησιμοποιείς τα features της 11 (που από όσο θυμάμαι δεν τα μαθαίνεις καν στη σχολή  ^ytold^ ). Προφανώς τα νεότερα standards προσφέρουν χρήσιμα εργαλεία αλλά κάνουν χρόνια εφαρμοστούν στην παραγωγή. Μου είχε φανεί πολύ περίεργο όταν ήρθα στην εταιρεία που εργάζομαι το γεγονός ότι χρησιμοποιούν C++11 και όχι την 14 ή την 17. Εν τέλει έμαθα ότι για να γίνει αλλαγή στον compiler και στο standard που χρησιμοποιείται πρέπει να είναι για κάποια χρόνια stable ώστε να μην προκύψει κάποιο θέμα λόγω αυτού. Έτσι πως το βλέπω θα πάμε στην 17 το 2024.