Θέλω να ξεκινήσω ένα καινούριο project και πρέπει να διαλέξω γλώσσα προγραμματισμού. Είμαι ανοιχτός στο να μάθω μία που δεν ξέρω, αλλά μόνο αν κερδίζω πολλά, κυρίως σε απόδοση. Αν μπορείτε προτείνετε ιδέες με βάση το ποια ταιριάζει καλύτερα στο project που περιγράφω παρακάτω, και όχι με βάση ποια γλώσσα προτιμάτε γενικά.
Θα πρέπει να έχω αρκετά μαθηματικά και αρκετά metadata. Η κύρια δομή θα είναι μικρά objects με λίγα metadata μέσα τους, των οποίων οι τιμές θα μεταβάλλονται με βάση κάποια μαθηματικά (χημική κινητική, γεωμετρία, και λίγη μηχανική ρευστών). Η ιδέα είναι ότι συγκεκριμένες διεργασίες θα πραγματοποιούνται στη μονάδα του χρόνου, και το κάθε object θα πρέπει να ανανεώνει τον εαυτό του, καθώς και τις αλληλεπιδράσεις με το περιβάλλον του. Αναμένεται να παράγονται πολλές χιλιάδες objects κατά τη διάρκεια μίας προσομοίωσης, μπορεί και εκατοντάδες χιλιάδες, τα οποία θα αυξάνονται με το πέρασμα του χρόνου προσομοίωσης.
Αν βοήθησα καθόλου, πείτε μου τι προτείνετε και γιατί. Η κοινότητα που θα επωφεληθεί με τον κώδικα δουλεύει αρκετά με python (απορρίπτεται λόγω ταχύτητας) και Java (που δεν ξέρω). Λίγοι δουλεύουν με Fortran (που ξέρω πολύ καλά) αλλά με 77 και 90, άρα τα objects δεν υποστηρίζονται σε ικανοποιητικό βαθμό, αν και αυτό δεν με ενδιαφέρει, θα χρησιμοποιήσω 2008 αν το αποφασίσω. Επίσης υπάρχουν λίγοι που δουλεύουν με C++, την οποία ξέρω ελάχιστα, αλλά θα με ενδιέφερε πολύ να εμβαθύνω. Υπάρχει και η julia, αλλά είναι καινούρια και δεν ξέρω αν θα αντέξει στο χρόνο, οπότε είναι ίσως νωρίς να επενδύσω σε κάτι με ορίζοντα δεκαετίας και να πεθάνει η γλώσσα στα μισά. Άλλες γλώσσες;
Ευχαριστώ πολύ!
Εμφάνιση 1-15 από 62
-
22-09-16, 17:48 Επιλογή γλώσσας προγραμματισμού για μεγάλο project #1
-
22-09-16, 22:08 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #2
Αν χρησιμοποιήσεις ευρέως πίνακες και γενικώς μαθηματικά που μπορούν να εκφραστούν διανυσματικά και μητρωικά και δεν υπάρχει περιορισμός ή σνομπισμός στο είδος της γλώσσας, η Fortran είναι η καλύτερη. Επιπλέον, θα είσαι άμεσα παραγωγικός.
Η πλήρης αντικειμενοστρέφεια που μπορεί να επιτευχθεί με άλλες γλώσσες όπως C++, C#, Java, συνήθως προσφέρει ελάχιστα στο scientific computing διότι εισάγει επιπλέον πολυπλοκότητα δίχως ουσιαστικό όφελος. Είναι πολύ πιθανόν ότι η αντικειμενοστρέφεια που παρέχει η fortran (η οποία είναι πλέον πολύ υψηλή αλλά όχι όσο στις C++/Java/C#) μπορεί να καλύψει τις ανάγκες σου. Ίσως μπορείς ακόμη και να χρησιμοποιήσεις μόνον κάποια νέα δομή χωρίς να χρειάζονται όλες οι παραδοσιακές λειτουργίες που έχει ένα αντικείμενο (constructors, κληρονομικότητα κλπ).
Η C++ είναι αρκετά πολύπλοκη στη σύνταξη ακόμη και σε απλά πράγματα και ακόμα κι αν χρησιμοποιήσεις βιβλιοθήκες. Θα σκέπτεσαι διαρκώς περισσότερο τη σύνταξη παρά το καθεαυτό πρόβλημα.
Αλλά είναι καλύτερη επιλογή αν θέλεις να προσθέσεις κάποιο interface (π.χ. Qt) ή να βάλεις γραφικά. Π.χ. το openGL μπορεί να εσωματωθεί ευκολότερα στη C/C++ παρά στη fortran.
Για scientific visualization, η απόλυτη λύση, το VTK είναι C++.
Γενικώς, κατ' εμένα, η καλύτερη επιλογή είναι η fortran, που παραμερίζεται όμως αν υπάρχουν παράπλευρες απαιτήσεις όπως οι προαναφερθείσες (εκτεταμένο interface, πολλά γραφικά, βιβλιοθήκες ειδικού σκοπού που δεν υπάρχουν σε fortran, διασύνδεση με το λειτουργικό ή άλλο λογισμικό κλπ.) ή αν για κάποιον λόγο πρέπει σώνει και καλά το πρόγραμμα να γραφεί με κατεξοχήν αντικειμενοστρεφή προσέγγιση.
Eναλλακτικά, μπορείς να δοκιμάσεις τη C# η οποία έχει πολλές ευκολίες (περισσότερες από τη Java). Ωστόσο, στη C# θα πρέπει να αφήσεις τον κλασσικό διαδικαστικό τρόπο γραφής ή να τον προσομοιώσεις δια της πλαγίας οδού δηλώνοντας τις συναρτήσεις public static. Στη C++, δεν υπάρχει αυτό, μπορείς να γράψεις διαδικαστικά και να χρησιμοποιήσεις αντικείμενα μόνον όπου θελήσεις. Στις java/C# πρέπει παντού να γράφεις με κλάσεις.Τελευταία επεξεργασία από το μέλος A.N.T. : 22-09-16 στις 22:26.
-
23-09-16, 13:24 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #3
Ευχαριστώ πολύ για την αναλυτική απάντηση. Δεν περίμενα η Fortran να είναι η πρώτη γλώσσα που θα προταθεί, αλλά χαίρομαι ιδιαίτερα που έγινε, γιατί πραγματικά θα είμαι παραγωγικός από την πρώτη μέρα. Ανάγκη γραφικών θα υπάρχει, αλλά μόνο σε post-processing level, οπότε οι υπολογισμοί και τα γραφικά μπορούν να διαχειρίζονται από διαφορετικά πακέτα.
-
23-09-16, 15:00 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #4
Θα βοηθούσε να προσδιορίσεις λεπτομερέστερα τον βαθμό αντικειμενοστρέφειας* που απαιτεί το πρόβλημα (σε συνάρτηση με την ευκολία υλοποίησης) και αν οι δυνατότητες που παρέχει η Fortran είναι επαρκείς*. Αν ναι, δεν βλέπω τον λόγο να ψάξεις για κάτι άλλο, λαμβάνοντας υπόψη και τον διαχωρισμό core λειτουργικότητας και visualization.
Αν όχι, τότε με την λογική ότι θα μάθεις μια νέα γλώσσα προγραμματισμού γενικού σκοπού άρα το βλέπεις και σαν προσωπική επένδυση θα πρότεινα την Java, υπό την προϋπόθεση ότι τα χιλιάδες objects που θα διαχειρίζεται η εφαρμογή δεν είναι προσθαφαιρούμενα (θα υστερούσε έναντι της C++) αλλά αυξάνονται (όπως λες) με την πάροδο του χρόνου.
Διαφορετικά, πως το λένε οι πιστοί; You can rarely go wrong with C++
* Αυτό προϋποθέτει ότι γνωρίζεις ήδη σε κάποιο βάθος θεμελιώδη θέματα του αντικειμενοστραφούς προγραμματισμού ώστε να μπορείς να κάνεις τις εκτιμήσεις αυτές. Διαφορετικά βρες κάποιον να το/τα συζητήσεις κατ' ιδίαν πολύ λεπτομερέστερα
-
26-09-16, 15:37 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #5
Δες και αυτό αν θες: How To Make Python Run As Fast As Julia
-
27-09-16, 15:14 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #6
-
28-09-16, 20:25 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #7
Χαχα γιατί, στη C γράφεις τα πάντα μόνος σου; Βιβλιοθήκη είναι το numpy, σαν να λέμε boost.
Το point είναι ότι στα περισσότερα use cases, σύμφωνα και με το άρθρο, η python είναι εξίσου γρήγορη με τη julia εφόσον ξέρεις πώς να τη χρησιμοποιείς.
Και με τη cython μπορείς να φτιάξεις extensions για έτοιμα, μικρά modules γραμμένα σε C ή fortran και να τα καλέσεις από python όπου και στήνεις το σύστημά σου, χρησιμοποιώντας όμως τις κατάλληλες βιβλιοθήκες.
Δεν χρειάζεται να το συζητήσουμε περαιτέρω εδώ αν δεν θες. Παρ'όλα αυτά, για το δικό σου πρόβλημα νομίζω πως μια συνδυαστική λύση θα ήταν καλύτερη από το να χρησιμοποιήσεις μόνο fortran, όπως προτάθηκε, γιατί τα επίπεδα του prototyping που μπορείς να πετύχεις στο οικοσύστημα της python (και γενικότερα σε scripting γλώσσες) δεν μπορείς ούτε να τα ονειρευτείς με πιο low-level γλώσσες (τον χρόνο που χάνεις γράφοντας τα extensions, τον κερδίζεις με το παραπάνω συνολικά στο development). Ταυτόχρονα, αν βασιστείς σε μικρές και γρήγορες ρουτίνες γραμμένες σε c/fortran είναι πιθανό να μην παρατηρήσεις αισθητή διαφορά στην ταχύτητα (με μια επιφύλαξη αυτό, αλλά, όπως και να έχει, στη θέση σου θα το εξέταζα σαν ενδεχόμενο).
Κάθε γλώσσα έχει τα καλά της και τα κακά της, αλλά πλέον το να γράψεις "μεγάλο project" εξ ολοκλήρου σε C ή fortran μου φαίνεται τουλάχιστον μαζοχιστικό
-
29-09-16, 20:48 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #8
-
14-10-16, 20:35 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #9
Fortran?! Why not matlab?
-
14-10-16, 21:23 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #10
Η Matlab είναι proprietary. Δεν μπορείς να απαιτήσεις από όλους τους χρήστες να έχουν άδεια.
-
14-10-16, 22:01 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #11
Σε γενικές γραμμές σε όλους τους μαθητές μου αρχίζω με C++ θεωρώντας πρώτον ότι είναι η δυσκολότερη (και άρα, Κατανοώντας αυτή μαθαίνεις οτιδήποτε άλλο πολύ εύκολα) Και δεύτερον και σημαντικότερο ότι τα εργαλεία που έχουμε στα Windows είναι τέλεια (μην κάνεις το λάθος να ασχοληθείς σε nix, είναι τελείως no match ειδικά στο debugging που πρακτικά στα Windows σκίσει τη γάτα).
Για τη φορτραν δεν θα το έλεγα, είναι αρχαία και δεν έχεις εργαλεία. Το μόνο υπέρ είναι ότι έχει μεγάλη πανεπιστημιακή βιβλιοθήκη Αλλά ότι και να θες σήμερα υπάρχει στη C++ μαζί με ένα τεράστιο όγκο βιβλιοθηκών από εξαιρετικά καταρτισμένους μηχανικούς.Τελευταία επεξεργασία από το μέλος turboirc : 14-10-16 στις 22:07.
-
14-10-16, 22:31 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #12
Και τι έγινε που είναι αρχαία; Έχει εξελιχτεί πολύ από την εποχή της F77 και πλέον δεν υστερεί σε τίποτα. Για μαθηματικά, εξακολουθεί να είναι στην κορυφή, και με τεράστια βάση χρηστών. Όσο για τα εργαλεία, εξαρτάται τι θες. Όλες οι σημαντικές βιβλιοθήκες έχουν fortran binaries και debuggers υπάρχουν άφθονοι.
Όσο για προγραμματισμό σε windows, λέω να το αφήσω να πέσει, γιατί θα βγούμε πολύ offtopic.
-
14-10-16, 22:36 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #13
Εγώ είπα τη γνώμη μου ως επαγγελματίας... Από εκεί και πέρα κάνεις ότι θες.
-
14-10-16, 23:00 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #14
Αυτό ακριβώς ζήτησα, γνώμες, και σε ευχαριστώ. Και εγώ επαγγελματικά προγραμματισμό κάνω, συνάδελφε
-
15-10-16, 02:40 Απάντηση: Επιλογή γλώσσας προγραμματισμού για μεγάλο project #15
"H Fortran είναι αρχαία και δεν έχεις εργαλεία".
Και το ακούσαμε αυτό από επαγγελματία.
Προφανώς έχεις μείνει 40 χρόνια πίσω, η fortran πάντως όχι. Ζει και βασιλεύει.
Και έχει πανίσχυρους compilers και περιβάλλοντα όπως το parallel studio της Intel που ανανεώνονται κάθε χρόνο.
Μην εκφέρεις άποψη για κάτι που δεν ξέρεις, εκτίθεσαι.
Παρόμοια Θέματα
-
Επιλογή οπτικής ίνας για networking
Από jonhh στο φόρουμ NetworkingΜηνύματα: 3Τελευταίο Μήνυμα: 08-09-16, 16:57 -
Επιλογη CPU COOLER για Ι7 870
Από manolios στο φόρουμ Κουτιά, τροφοδοτικά και ψύξηΜηνύματα: 27Τελευταίο Μήνυμα: 19-05-16, 12:51 -
Επιλογη καρτας γραφικων για 4Κ video και 240fps
Από Nikos_Mpl στο φόρουμ Κάρτες ήχου, γραφικών, ηχεία και οθόνεςΜηνύματα: 25Τελευταίο Μήνυμα: 19-04-16, 16:11 -
Σειρά Μαθημάτων Γλώσσας Προγραμματισμού Python & Ρομποτικής
Από greeklug στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 0Τελευταίο Μήνυμα: 24-02-16, 19:32 -
Επιλογη καρτας γραφικων για video rendering
Από nikoslykos στο φόρουμ Κάρτες ήχου, γραφικών, ηχεία και οθόνεςΜηνύματα: 2Τελευταίο Μήνυμα: 15-02-16, 09:36
Bookmarks