PDA

Επιστροφή στο Forum : Επιλογή γλώσσας προγραμματισμού για μεγάλο project



Σελίδες : [1] 2

tsigarid
22-09-16, 17:48
Θέλω να ξεκινήσω ένα καινούριο project και πρέπει να διαλέξω γλώσσα προγραμματισμού. Είμαι ανοιχτός στο να μάθω μία που δεν ξέρω, αλλά μόνο αν κερδίζω πολλά, κυρίως σε απόδοση. Αν μπορείτε προτείνετε ιδέες με βάση το ποια ταιριάζει καλύτερα στο project που περιγράφω παρακάτω, και όχι με βάση ποια γλώσσα προτιμάτε γενικά.

Θα πρέπει να έχω αρκετά μαθηματικά και αρκετά metadata. Η κύρια δομή θα είναι μικρά objects με λίγα metadata μέσα τους, των οποίων οι τιμές θα μεταβάλλονται με βάση κάποια μαθηματικά (χημική κινητική, γεωμετρία, και λίγη μηχανική ρευστών). Η ιδέα είναι ότι συγκεκριμένες διεργασίες θα πραγματοποιούνται στη μονάδα του χρόνου, και το κάθε object θα πρέπει να ανανεώνει τον εαυτό του, καθώς και τις αλληλεπιδράσεις με το περιβάλλον του. Αναμένεται να παράγονται πολλές χιλιάδες objects κατά τη διάρκεια μίας προσομοίωσης, μπορεί και εκατοντάδες χιλιάδες, τα οποία θα αυξάνονται με το πέρασμα του χρόνου προσομοίωσης.

Αν βοήθησα καθόλου, πείτε μου τι προτείνετε και γιατί. Η κοινότητα που θα επωφεληθεί με τον κώδικα δουλεύει αρκετά με python (απορρίπτεται λόγω ταχύτητας) και Java (που δεν ξέρω). Λίγοι δουλεύουν με Fortran (που ξέρω πολύ καλά) αλλά με 77 και 90, άρα τα objects δεν υποστηρίζονται σε ικανοποιητικό βαθμό, αν και αυτό δεν με ενδιαφέρει, θα χρησιμοποιήσω 2008 αν το αποφασίσω. Επίσης υπάρχουν λίγοι που δουλεύουν με C++, την οποία ξέρω ελάχιστα, αλλά θα με ενδιέφερε πολύ να εμβαθύνω. Υπάρχει και η julia, αλλά είναι καινούρια και δεν ξέρω αν θα αντέξει στο χρόνο, οπότε είναι ίσως νωρίς να επενδύσω σε κάτι με ορίζοντα δεκαετίας και να πεθάνει η γλώσσα στα μισά. Άλλες γλώσσες;

Ευχαριστώ πολύ!

A.N.T.
22-09-16, 22:08
Αν χρησιμοποιήσεις ευρέως πίνακες και γενικώς μαθηματικά που μπορούν να εκφραστούν διανυσματικά και μητρωικά και δεν υπάρχει περιορισμός ή σνομπισμός στο είδος της γλώσσας, η 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# πρέπει παντού να γράφεις με κλάσεις.

tsigarid
23-09-16, 13:24
Ευχαριστώ πολύ για την αναλυτική απάντηση. Δεν περίμενα η Fortran να είναι η πρώτη γλώσσα που θα προταθεί, αλλά χαίρομαι ιδιαίτερα που έγινε, γιατί πραγματικά θα είμαι παραγωγικός από την πρώτη μέρα. Ανάγκη γραφικών θα υπάρχει, αλλά μόνο σε post-processing level, οπότε οι υπολογισμοί και τα γραφικά μπορούν να διαχειρίζονται από διαφορετικά πακέτα.

ckoul
23-09-16, 15:00
Θα βοηθούσε να προσδιορίσεις λεπτομερέστερα τον βαθμό αντικειμενοστρέφειας* που απαιτεί το πρόβλημα (σε συνάρτηση με την ευκολία υλοποίησης) και αν οι δυνατότητες που παρέχει η Fortran είναι επαρκείς*. Αν ναι, δεν βλέπω τον λόγο να ψάξεις για κάτι άλλο, λαμβάνοντας υπόψη και τον διαχωρισμό core λειτουργικότητας και visualization.

Αν όχι, τότε με την λογική ότι θα μάθεις μια νέα γλώσσα προγραμματισμού γενικού σκοπού άρα το βλέπεις και σαν προσωπική επένδυση θα πρότεινα την Java, υπό την προϋπόθεση ότι τα χιλιάδες objects που θα διαχειρίζεται η εφαρμογή δεν είναι προσθαφαιρούμενα (θα υστερούσε έναντι της C++) αλλά αυξάνονται (όπως λες) με την πάροδο του χρόνου.

Διαφορετικά, πως το λένε οι πιστοί; You can rarely go wrong with C++ :p

* Αυτό προϋποθέτει ότι γνωρίζεις ήδη σε κάποιο βάθος θεμελιώδη θέματα του αντικειμενοστραφούς προγραμματισμού ώστε να μπορείς να κάνεις τις εκτιμήσεις αυτές. Διαφορετικά βρες κάποιον να το/τα συζητήσεις κατ' ιδίαν πολύ λεπτομερέστερα ;)

guardianhelm
26-09-16, 15:37
Δες και αυτό αν θες: How To Make Python Run As Fast As Julia (https://www.ibm.com/developerworks/community/blogs/jfp/entry/Python_Meets_Julia_Micro_Performance?lang=en)

tsigarid
27-09-16, 15:14
Δες και αυτό αν θες: How To Make Python Run As Fast As Julia (https://www.ibm.com/developerworks/community/blogs/jfp/entry/Python_Meets_Julia_Micro_Performance?lang=en)

Αυτό το άρθρο ενισχύει την άποψή μου (της οποίας η συζήτηση δεν ανήκει εδώ) ότι η python είναι μία κουτσουρεμένη γλώσσα που για να κάνεις οτιδήποτε εκτός από κάποια εξωφρενικά βασικά πράγματα χρειάζεσαι addons, είτε αυτά λέγονται numpy είτε cython είτε οτιδήποτε.

guardianhelm
28-09-16, 20:25
Αυτό το άρθρο ενισχύει την άποψή μου (της οποίας η συζήτηση δεν ανήκει εδώ) ότι η python είναι μία κουτσουρεμένη γλώσσα που για να κάνεις οτιδήποτε εκτός από κάποια εξωφρενικά βασικά πράγματα χρειάζεσαι addons, είτε αυτά λέγονται numpy είτε cython είτε οτιδήποτε.

Χαχα γιατί, στη 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 μου φαίνεται τουλάχιστον μαζοχιστικό :p

Ice-Blade
29-09-16, 20:48
Αυτό το άρθρο ενισχύει την άποψή μου (της οποίας η συζήτηση δεν ανήκει εδώ) ότι η python είναι μία κουτσουρεμένη γλώσσα που για να κάνεις οτιδήποτε εκτός από κάποια εξωφρενικά βασικά πράγματα χρειάζεσαι addons, είτε αυτά λέγονται numpy είτε cython είτε οτιδήποτε.

https://cdn.meme.am/instances/500x/63455575.jpg

turboirc
14-10-16, 20:35
Fortran?! Why not matlab?

tsigarid
14-10-16, 21:23
Η Matlab είναι proprietary. Δεν μπορείς να απαιτήσεις από όλους τους χρήστες να έχουν άδεια.

turboirc
14-10-16, 22:01
Σε γενικές γραμμές σε όλους τους μαθητές μου αρχίζω με C++ θεωρώντας πρώτον ότι είναι η δυσκολότερη (και άρα, Κατανοώντας αυτή μαθαίνεις οτιδήποτε άλλο πολύ εύκολα) Και δεύτερον και σημαντικότερο ότι τα εργαλεία που έχουμε στα Windows είναι τέλεια (μην κάνεις το λάθος να ασχοληθείς σε nix, είναι τελείως no match ειδικά στο debugging που πρακτικά στα Windows σκίσει τη γάτα).

Για τη φορτραν δεν θα το έλεγα, είναι αρχαία και δεν έχεις εργαλεία. Το μόνο υπέρ είναι ότι έχει μεγάλη πανεπιστημιακή βιβλιοθήκη Αλλά ότι και να θες σήμερα υπάρχει στη C++ μαζί με ένα τεράστιο όγκο βιβλιοθηκών από εξαιρετικά καταρτισμένους μηχανικούς.

tsigarid
14-10-16, 22:31
Και τι έγινε που είναι αρχαία; Έχει εξελιχτεί πολύ από την εποχή της F77 και πλέον δεν υστερεί σε τίποτα. Για μαθηματικά, εξακολουθεί να είναι στην κορυφή, και με τεράστια βάση χρηστών. Όσο για τα εργαλεία, εξαρτάται τι θες. Όλες οι σημαντικές βιβλιοθήκες έχουν fortran binaries και debuggers υπάρχουν άφθονοι.

Όσο για προγραμματισμό σε windows, λέω να το αφήσω να πέσει, γιατί θα βγούμε πολύ offtopic.

turboirc
14-10-16, 22:36
Εγώ είπα τη γνώμη μου ως επαγγελματίας... Από εκεί και πέρα κάνεις ότι θες.

tsigarid
14-10-16, 23:00
Αυτό ακριβώς ζήτησα, γνώμες, και σε ευχαριστώ. Και εγώ επαγγελματικά προγραμματισμό κάνω, συνάδελφε :)

A.N.T.
15-10-16, 02:40
"H Fortran είναι αρχαία και δεν έχεις εργαλεία".
Και το ακούσαμε αυτό από επαγγελματία.
Προφανώς έχεις μείνει 40 χρόνια πίσω, η fortran πάντως όχι. Ζει και βασιλεύει.
Και έχει πανίσχυρους compilers και περιβάλλοντα όπως το parallel studio της Intel που ανανεώνονται κάθε χρόνο.

Μην εκφέρεις άποψη για κάτι που δεν ξέρεις, εκτίθεσαι.

Ice-Blade
15-10-16, 05:14
"H Fortran είναι αρχαία και δεν έχεις εργαλεία".
Και το ακούσαμε αυτό από επαγγελματία.
Προφανώς έχεις μείνει 40 χρόνια πίσω, η fortran πάντως όχι. Ζει και βασιλεύει.
Και έχει πανίσχυρους compilers και περιβάλλοντα όπως το parallel studio της Intel που ανανεώνονται κάθε χρόνο.

Μην εκφέρεις άποψη για κάτι που δεν ξέρεις, εκτίθεσαι.

175591

dkarko
15-10-16, 06:09
Για numerical κώδικα σαφεστατα linux. Μια χαρα πληθώρα debugging tools υπαρχουν απο δωρεάν εως πανάκριβα :p.
C++ για την δομή και μετα για τον καθε κερνελ ότι σε βολεύει (c c++ fortran) μιας και ολα κολλάνε πανεύκολα μεταξύ τους, απλά προσοχή με την c++ στα βαριά computations.
Εκτος και αν θελεις να κάνεις γρήγορα το development, για μεγαλο project θα σου συνιστουσα να μεινεις μακρυά απο python/julia, εκτός ίσως αν χρησιμοποιησεις την python απλα σαν top lever glue στο οποιο βολεύει πολύ.
Ισως κάποιο κομμάτι της δομής, πιο higher level να μπορεις να το κάνεις σε cython για να διευκολυνεις και την ομαδα σου αφου ειναι pythonαδες. Εν τέλει αν η δομή ειναι απλή μπορεις να την κανεις και ολη με cython και να κρατησεις τα διαφορα numerical κομμάτια σε C C++ cuda opencl ktl.

guardianhelm
15-10-16, 10:56
Για numerical κώδικα σαφεστατα linux. Μια χαρα πληθώρα debugging tools υπαρχουν απο δωρεάν εως πανάκριβα :p.
C++ για την δομή και μετα για τον καθε κερνελ ότι σε βολεύει (c c++ fortran) μιας και ολα κολλάνε πανεύκολα μεταξύ τους, απλά προσοχή με την c++ στα βαριά computations.
Εκτος και αν θελεις να κάνεις γρήγορα το development, για μεγαλο project θα σου συνιστουσα να μεινεις μακρυά απο python/julia, εκτός ίσως αν χρησιμοποιησεις την python απλα σαν top lever glue στο οποιο βολεύει πολύ.
Ισως κάποιο κομμάτι της δομής, πιο higher level να μπορεις να το κάνεις σε cython για να διευκολυνεις και την ομαδα σου αφου ειναι pythonαδες. Εν τέλει αν η δομή ειναι απλή μπορεις να την κανεις και ολη με cython και να κρατησεις τα διαφορα numerical κομμάτια σε C C++ cuda opencl ktl.

:oneup:

tsigarid
15-10-16, 17:16
https://cdn.meme.am/instances/500x/63455575.jpg


175591

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

A.N.T.
15-10-16, 18:47
Η απαίτηση τα αντικείμενα να ανανεώνουν τον εαυτό τους και να αλληλεπιδρούν με το περιβάλλον τους
μου θυμίζει έντονα τα Finite State Machines (aka FSMs), που αποτελούν βασικές τεχνικές ΑΙ,
μακράν γνωστές στο game programming.

Κάποιες παρόμοιες ιδέες νομίζω ότι έχει και η αποστολή μηνυμάτων με χρήση delegates που παρέχει η C# -
αλλά εκεί δεν έχω μελετήσει καλά τι γίνεται.

Ice-Blade
15-10-16, 21:12
Εκ μέρους των συμφορουμιτών μου και από εμένα προσωπικά, σε ευχαριστούμε για τα εποικοδομητικά και κυρίως τεκμηριωμένα σου σχόλια.
Εσύ και ο ANT -> The blind leading the blind. Εσύ ρωτάς τη γνώμη των άλλων αλλά έχεις άποψη και για τα πάντα. Ο Α.Ν.Τ έχει μείνει 20 χρόνια πίσω, θεωρεί τη Fortran κορυφαία επιλογή το 2016 και θεωρεί κ τον εαυτό του ειδήμονα στο θέμα. Δε σας αξίζει κάτι παραπάνω από memes (και αυτά πολύ σας πέφτουν).

A.N.T.
15-10-16, 23:04
@Ice-Blade

Εγώ έγραψα μιαν απάντηση και δικαιολόγησα γιατί μπορεί να χρησιμοποιηθεί επιτυχώς η fortran σε αυτό που ζητάει ο t.s.
Κάποιοι άλλοι με διαφορετική άποψη ομοίως.
Eσύ απλώς ειρωνεύεσαι χωρίς κανένα επιχείρημα.

Λοιπόν αποδεδειγμένα o τυφλός και άσχετος είσαι εσύ.
Και δεν είναι βρισιά αυτό, είναι η πραγματικότητα αφού προφανέστατα νομίζεις λανθασμένα ότι η fortran είναι νεκρή και ξεχασμένη
και ότι έχει μείνει σε αυτό που ήταν την δεκαετία του '70 και του '80 - ενώ τίποτε από αυτά δεν συμβαίνει.
Και αντί να έχεις την εντιμότητα να ζητήσεις συγνώμη ή τουλάχιστον να επιχειρηματολογήσεις,
καταφέρεσαι εναντίον μας με προσωπικούς χαρακτηρισμούς.

Πήγαινε τώρα να πουλήσεις μούρη σε κάποιον πραγματικά άσχετο για να νιώσεις καλύτερα.
Σου αφήνω την τελευταία λέξη για να τονώσεις τον εγωισμό σου, εγώ δεν έχω τέτοια ψυχολογική ανάγκη....

tsigarid
15-10-16, 23:52
Εσύ και ο ANT -> The blind leading the blind. Εσύ ρωτάς τη γνώμη των άλλων αλλά έχεις άποψη και για τα πάντα. Ο Α.Ν.Τ έχει μείνει 20 χρόνια πίσω, θεωρεί τη Fortran κορυφαία επιλογή το 2016 και θεωρεί κ τον εαυτό του ειδήμονα στο θέμα. Δε σας αξίζει κάτι παραπάνω από memes (και αυτά πολύ σας πέφτουν).

Το ότι μετά από χρόνια στη δουλειά είμαι έτοιμος να ζητήσω και να ακούσω συμβουλές δεν σου λέει τίποτα ε; Δυστυχώς δεν είμαι από αυτούς που τα ξέρουν όλα, απορώ πως τολμάω να κυκλοφορήσω στο δρόμο.

Όσο για τα σχόλιά σου, ενήλικες είμαστε οι περισσότεροι, μπορούμε να κρίνουμε.

turboirc
16-10-16, 23:11
@Ice-Blade

Εγώ έγραψα μιαν απάντηση και δικαιολόγησα γιατί μπορεί να χρησιμοποιηθεί επιτυχώς η fortran σε αυτό που ζητάει ο t.s.
Κάποιοι άλλοι με διαφορετική άποψη ομοίως.
Eσύ απλώς ειρωνεύεσαι χωρίς κανένα επιχείρημα.

Λοιπόν αποδεδειγμένα o τυφλός και άσχετος είσαι εσύ.
Και δεν είναι βρισιά αυτό, είναι η πραγματικότητα αφού προφανέστατα νομίζεις λανθασμένα ότι η fortran είναι νεκρή και ξεχασμένη
και ότι έχει μείνει σε αυτό που ήταν την δεκαετία του '70 και του '80 - ενώ τίποτε από αυτά δεν συμβαίνει.
Και αντί να έχεις την εντιμότητα να ζητήσεις συγνώμη ή τουλάχιστον να επιχειρηματολογήσεις,
καταφέρεσαι εναντίον μας με προσωπικούς χαρακτηρισμούς.

Πήγαινε τώρα να πουλήσεις μούρη σε κάποιον πραγματικά άσχετο για να νιώσεις καλύτερα.
Σου αφήνω την τελευταία λέξη για να τονώσεις τον εγωισμό σου, εγώ δεν έχω τέτοια ψυχολογική ανάγκη....

Εγω που πιστευω οτι η φορτραν ειναι νεκρη, εχω μονο ενα τροπο να δικαιολογησω τη γνωμη μου. Προκαλω οποιον θελει να φτιαξει οποιοδηποτε προτζεκτ θελει σε φορτραν και εγω σε κατι αλλο...και κερδιζει ο πρωτος.

Διοτι σιχαινομαι την θεωρητικολογια. Ειδικα οταν αυτη περιβαλλεται απο επιστημονικο μανδυα.

tsigarid
17-10-16, 14:19
Εγω που πιστευω οτι η φορτραν ειναι νεκρη, εχω μονο ενα τροπο να δικαιολογησω τη γνωμη μου. Προκαλω οποιον θελει να φτιαξει οποιοδηποτε προτζεκτ θελει σε φορτραν και εγω σε κατι αλλο...και κερδιζει ο πρωτος.

Διοτι σιχαινομαι την θεωρητικολογια. Ειδικα οταν αυτη περιβαλλεται απο επιστημονικο μανδυα.

Πρόγνωση καιρού και κλίματος. Σε τι γλώσσα θα έγραφες το μοντέλο και γιατί;

turboirc
17-10-16, 14:23
Πρόγνωση καιρού και κλίματος. Σε τι γλώσσα θα έγραφες το μοντέλο και γιατί;

Αναλογα το προβλημα που εχω να λυσω.

tsigarid
17-10-16, 14:30
Αναλογα το προβλημα που εχω να λυσω.

Θες να φτιάξεις ένα μοντέλο που θα βοηθήσει τους μετεωρολόγους να προβλέψουν τον καιρό, ή τους κλιματολόγους να προβλέψουν το κλίμα. Κάτι σαν αυτό που βλέπεις στις ειδήσεις για τον καιρό αύριο, και αυτό που ακούς επίσης στις ειδήσεις για άνοδο θερμοκρασίας, στάθμη θάλασσας, κλπ. Πρόβλημα φυσικής και χημείας είναι, με ατελείωτες διαφορικές εξισώσεις.

turboirc
17-10-16, 14:39
Θες να φτιάξεις ένα μοντέλο που θα βοηθήσει τους μετεωρολόγους να προβλέψουν τον καιρό, ή τους κλιματολόγους να προβλέψουν το κλίμα. Κάτι σαν αυτό που βλέπεις στις ειδήσεις για τον καιρό αύριο, και αυτό που ακούς επίσης στις ειδήσεις για άνοδο θερμοκρασίας, στάθμη θάλασσας, κλπ. Πρόβλημα φυσικής και χημείας είναι, με ατελείωτες διαφορικές εξισώσεις.

Ζητας κατι εξειδικευμενο που δεν εχω τις γνωσεις να εκτιμησω τι θελω. Μπορω να ανταγωνιστω καποιον μονο με ισους ορους. Σε αυτο το ειδικο προβλημα μπορουν να δωσουν απαντηση πρωτα οι ειδικοι για την μεθοδολογια και μετα οι προγραμματιστες για την υλοποιηση.

Η αρχικη σου ερωτηση ηταν πιο γενικη. Αν ειναι να μιλαμε πιο εξειδικευμενα τοτε ρωταω και εγω κατι για τη μουσικη που δεν μπορει να το ξερει παρα μονο ειδικος και δεν θα ειχε νοημα να ρωτησω εδω μεσα.

Αν ομως πρεπει να εκτιμησω τοτε θα επιλεξω matlab.

Και στην τελικη ενα τετοιο προβλημα ειναι μαλλον αλυτο διοτι αλαλουμ γινεται με τις προγνωσεις. Αρα γιατι καποιος να ασχοληθει σε κατι που μονο ως διδακτορικη ερευνα εχει νοημα;

A.N.T.
17-10-16, 14:48
Structural Mechanics, Fluid Mechanics :
Πεπερασμένα στοιχεία, Συνοριακά στοιχεία, Πεπερασμένοι όγκοι.
Hλεκτρομαγνητισμός:
Mέθοδος ροπών, Μέθοδος FDTD, Γεωμετρική θεωρία περίθλασης (GTD).

Δοκίμασε ότι θέλεις για τα παραπάνω, θα χάσεις κατά κράτος.
Η fortran είναι η πιο κατάλληλη διότι μπορείς να χειριστείς πίνακες, διανύσματα, quaternions, bivectors, τανυστές πολύ εύκολα.
Το interface της fortran για πίνακες είναι ασυναγώνιστο και την ευχρηστία του δεν τη φτάνει καμιά ιδιοκατασκευή στις C/C++/C#.
Π.χ. η βιβλιοθήκη πινάκων της boost παρόλο που είναι πιο γενική και παρέχει χειρισμό τμημάτων πινάκων (slices) είναι δύσχρηστη.
Αν χρειαστούν δομές δεδομένων (λίστες, δέντρα, hash tables κλπ) δεν υπάρχει κάτι έτοιμο αλλά μπορούν να κατασκευαστούν εύκολα
διότι παρέχεται ότι χρειάζεται (δείκτες, allocatable arrays κ.α.)
Επίσης, η ενδογενής υποστήριξη που έχει για distributed memory παραλληλία είναι αξιοσημείωτη (coarrays).
H διασύνδεση της fortran με τη C είναι πολύ βελτιωμένη στις τελευταίες εκδόσεις και δίνει τη δυνατότητα μίξης των δύο με ότι αυτό
συνεπάγεται (π.χ. χρήση κάποιας βιβλιοθήκης υπολογιστικής γεωμετρίας όπως η CGAL).


Για εμπορικό λογισμικό μεγάλης κλίμακας που πρέπει να στηθεί με άλλο τρόπο και να έχει διασύνδεση με το λειτουργικό καθώς και άλλες λειτουργίες (γραφικά, interface, μεγάλη αντικειμενοστραφή σχεδίαση κλπ), πρέπει να χρησιμοποιηθεί άλλη προσέγγιση.
Αλλά για το αριθμητικό μέρος και γενικά το scientific computing η fortran είναι η καλύτερη όλων.

tsigarid
17-10-16, 14:49
Ζητας κατι εξειδικευμενο που δεν εχω τις γνωσεις να εκτιμησω τι θελω. Σε αυτο το ειδικο προβλημα μπορουν να δωσουν απαντηση πρωτα οι ειδικοι για την μεθοδολογια και μετα οι προγραμματιστες για την υλοποιηση.

Ζήτησες ένα οποιοδήποτε πρόβλημα για να κάνεις πιο γρήγορα. Συγκεκριμένα είπες "Προκαλω οποιον θελει να φτιαξει οποιοδηποτε προτζεκτ θελει σε φορτραν και εγω σε κατι αλλο...και κερδιζει ο πρωτος". Φαίνεται ότι δεν εννοούσες τη λέξη "οποιοδήποτε". Ασφαλώς και δεν θα γράψεις ένα Android App σε Fortran.


Η αρχικη σου ερωτηση ηταν πιο γενικη. Αν ειναι να μιλαμε πιο εξειδικευμενα τοτε ρωταω και εγω κατι για τη μουσικη που δεν μπορει να το ξερει παρα μονο ειδικος και δεν θα ειχε νοημα να ρωτησω εδω μεσα.

Ποια είναι η γενική μου ερώτηση; Δεν έγραψα τι θα είναι ακριβώς (είναι proprietary και δεν μπορώ να πω) αλλά έγραψα ποιες είναι οι υπολογιστικές απαιτήσεις πολύ ξεκάθαρα. Το ίδιο έκανα και στην πρόκλησή σου, είναι ένα project με πάρα πολλά μαθηματικά. Θα διάλεγες C++ ή Java για παράδειγμα; Ή (ακόμα χειρότερα) python;


Αν ομως πρεπει να εκτιμησω τοτε θα επιλεξω matlab.

Καλή επιλογή. Το πρόβλημα είναι το κόστος, και η απαίτηση από όλους όσοι ασχολούνται με το project να έχουν άδεια. Δεν αξίζει, όποιος γράφει σε matlab/idl/etc. ακριβά πράματα το κάνει για τον εαυτό του και σπάνια με στόχο να μοιραστεί κώδικα.


Και στην τελικη ενα τετοιο προβλημα ειναι μαλλον αλυτο διοτι αλαλουμ γινεται με τις προγνωσεις. Αρα γιατι καποιος να ασχοληθει σε κατι που μονο ως διδακτορικη ερευνα εχει νοημα;

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

turboirc
17-10-16, 14:58
Ζήτησες ένα οποιοδήποτε πρόβλημα για να κάνεις πιο γρήγορα. Συγκεκριμένα είπες "Προκαλω οποιον θελει να φτιαξει οποιοδηποτε προτζεκτ θελει σε φορτραν και εγω σε κατι αλλο...και κερδιζει ο πρωτος". Φαίνεται ότι δεν εννοούσες τη λέξη "οποιοδήποτε". Ασφαλώς και δεν θα γράψεις ένα Android App σε Fortran.



Δεν ειπα οτι εγω θα κανω το ιδιο προτζεκτ με αυτο που θα επιλεξει ο αλλος.



Ποια είναι η γενική μου ερώτηση; Δεν έγραψα τι θα είναι ακριβώς (είναι proprietary και δεν μπορώ να πω) αλλά έγραψα ποιες είναι οι υπολογιστικές απαιτήσεις πολύ ξεκάθαρα. Το ίδιο έκανα και στην πρόκλησή σου, είναι ένα project με πάρα πολλά μαθηματικά. Θα διάλεγες C++ ή Java για παράδειγμα; Ή (ακόμα χειρότερα) python;




Καλή επιλογή. Το πρόβλημα είναι το κόστος, και η απαίτηση από όλους όσοι ασχολούνται με το project να έχουν άδεια. Δεν αξίζει, όποιος γράφει σε matlab/idl/etc. ακριβά πράματα το κάνει για τον εαυτό του και σπάνια με στόχο να μοιραστεί κώδικα.


Proprietary σημαινει λεφτα. Αρα ειναι θεμα το ποσα επενδυεις. Αν το κερδος σου δεν υπερκαλυψει την επενδυση
στο Matlab,τοτε προφανως δεν το επιλεγεις.



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

Γιατι να μην κριθω; Στον τομεα μου κρινομαι εκ του αποτελεσματος.
Αν φτιαξω κατι που εχει προσφερει στην επιστημονικη κοινοτητα, αξιζει.

Βεβαιως και θα κριθω. Αρα και θα κρινω.
Και οταν ειμαι ασχετος με το αντικειμενο δεν εχω τιποτα αλλο να κρινω παρα μονο το αποτελεσμα.
Στο συγκεκριμενο θεμα δεν εχω καμια γνωση(εκτος ισως μαθηματικων) οποτε κρινω την εφαρμογη.
Και δεχομαι με τον ιδιο τροπο κριτικη σε οτι φτιαχνω.

tsigarid
17-10-16, 15:00
Δεν ειπα οτι εγω θα κανω το ιδιο προτζεκτ με αυτο που θα επιλεξει ο αλλος.

Ωραίος :oneup:

Με κάλυψες πλήρως.

MitsakosGR
17-10-16, 16:08
Η Matlab είναι καλή για prototyping όταν όμως χρειάζεσαι ταχύτητα εκτέλεσης κατ'εξακολούθηση πρέπει να κατέβεις σε πολύ πιο χαμηλό (προγραμματιστικά) επίπεδο για να την πετύχεις!

Συνήθως σε τέτοιου είδους προβλήματα χρησιμοποιούν matlab ώστε να φτιάξουν το μοντέλο και να δουν ότι δουλεύει και στη συνέχεια το μεταφέρουν σε ταχύτερες γλώσσες-συστήματα για την συνεχή εκτέλεσή τους! Το πιο χαμηλό επίπεδο είναι συνήθως αυτό που ξέρει καλύτερα ο καθένας αλλά η FORTRAN σε μαθηματικά προβλήματα τέτοιου μεγέθους υπερτερεί λόγω της ευκολίας σύνταξης και πράξεων πινάκων, ειδικά αν χρησιμοποιήσεις κάποιον high-end compiler (πχ Intel® Fortran Compiler (https://software.intel.com/en-us/fortran-compilers/details)) ή GPU (Cuda Fortran (http://www.pgroup.com/resources/cudafortran.htm)).


Υ.Γ. Δεν μπορώ να καταλάβω την εμμονή ορισμένων να χαρακτηρίζουν γλώσσες ως "νεκρές"... Νεκρές θα είναι όταν σταματήσουν να χρησιμοποιούνται... Δεν νομίζω εταιρείς όπως η Intel και η nVidia να επενδύουν χρήματα πάνω σε "νεκρές" γλώσσες! Ναι, η fortran δεν είναι η πιο εύκολη-εξελιγμένη για καθημερινά προγράμματα αλλά στην υλοποίηση μαθηματικών προβλημάτων είναι από τα καλύτερα που μπορείς να διαλέξεις! Δεν θα καθίσεις να φτιάξεις και το GUI σε fortran, αλλά δεν σε χαλάει να εκμεταλλεύεσαι την ταχύτητά της όπου χρειάζεται!!!

A.N.T.
17-10-16, 16:21
Ορίστε κι ένας λογικός άνθρωπος !

Μερικοί μιλούν σα να ζητείται να γραφεί στη fortran ένας επεξεργαστής κειμένου ή ένας tcp server.
Kαι πουλάνε και μούρη ως ειδήμονες....

turboirc
17-10-16, 17:27
Η Matlab είναι καλή για prototyping όταν όμως χρειάζεσαι ταχύτητα εκτέλεσης κατ'εξακολούθηση πρέπει να κατέβεις σε πολύ πιο χαμηλό (προγραμματιστικά) επίπεδο για να την πετύχεις!

Συνήθως σε τέτοιου είδους προβλήματα χρησιμοποιούν matlab ώστε να φτιάξουν το μοντέλο και να δουν ότι δουλεύει και στη συνέχεια το μεταφέρουν σε ταχύτερες γλώσσες-συστήματα για την συνεχή εκτέλεσή τους! Το πιο χαμηλό επίπεδο είναι συνήθως αυτό που ξέρει καλύτερα ο καθένας αλλά η FORTRAN σε μαθηματικά προβλήματα τέτοιου μεγέθους υπερτερεί λόγω της ευκολίας σύνταξης και πράξεων πινάκων, ειδικά αν χρησιμοποιήσεις κάποιον high-end compiler (πχ Intel® Fortran Compiler (https://software.intel.com/en-us/fortran-compilers/details)) ή GPU (Cuda Fortran (http://www.pgroup.com/resources/cudafortran.htm)).


Υ.Γ. Δεν μπορώ να καταλάβω την εμμονή ορισμένων να χαρακτηρίζουν γλώσσες ως "νεκρές"... Νεκρές θα είναι όταν σταματήσουν να χρησιμοποιούνται... Δεν νομίζω εταιρείς όπως η Intel και η nVidia να επενδύουν χρήματα πάνω σε "νεκρές" γλώσσες! Ναι, η fortran δεν είναι η πιο εύκολη-εξελιγμένη για καθημερινά προγράμματα αλλά στην υλοποίηση μαθηματικών προβλημάτων είναι από τα καλύτερα που μπορείς να διαλέξεις! Δεν θα καθίσεις να φτιάξεις και το GUI σε fortran, αλλά δεν σε χαλάει να εκμεταλλεύεσαι την ταχύτητά της όπου χρειάζεται!!!

ΟΚ πασο με θαψατε ολοι. Καλη επιτυχια στο προτζεκτ.

zaranero
19-10-16, 05:03
Ειμαι εντελως ερασιτεχνης αλλα ας πω και εγω γνωμη μιας και δεν εχω τι να κανω τωρα.

Κανε και το ιδιο ποστ ισως στο stackoverflow να παρεις μια γενικοτερη εικονα.

Εαν υπαρχουν καποιες στανταρντ μετρησεις για αυτο που θες και υπαρχουν αμφιβολιες ας πουμε για τις τρεις επικρατεστερες , επελεξε τον ευκολο δρομο :P , οποιος ειναι αυτος για εσενα.

Βασικα , δεν νομιζω να μπορει να δοθει πληρη απαντηση χωρις βελτιστη τεκμηριωση του προβληματος. Για παραδειγμα θα τρεχει σε απλους καθημερινους υπολογιστες , θα εχει πολλες απαιτησεις σε μνημη

τα αντικειμενα θα συνεχιζουν να υπαρχουν και θα αυξανονται ή θα καταστρεφονται κ.α (το τελευταιο μου ηρθε γιατι χρησιμοποιω το unity για απλες εφαρμογουλες αυτη την εποχη :P).

Με καλη τεκμηριωση, αν καποιοι ασχοληθουν να την διαβασουν , ισως παρεις αρκετες χρησιμες πληροφοριες απο τα καταλληλα ατομα.

guardianhelm
19-10-16, 22:43
Δεν θέλω να εκτροχιάσω κι άλλο το νήμα, αλλά επειδή είναι κρίμα να παιδευτείς άσκοπα, δες τον λόγο που ορισμένοι "επιμένουμε" να μην απορρίψεις την python (https://twitter.com/F_Vaggi/status/788299595021418496).

Επιπλέον, ως προς το θέμα της ταχύτητας, η cuda που αναφέρθηκε είναι μεγάλη υπόθεση πλέον και υπάρχουν bindings για python που σου επιτρέπουν να κάνεις μαθηματικούς υπολογισμούς πολύ γρήγορα χωρίς κόπο (https://developer.nvidia.com/how-to-cuda-python). Υπάρχουν και επι πληρωμή hpc πακέτα, πχ εδώ (https://docs.continuum.io/accelerate/). Tα cufft και cublas είναι σίγουρα διαθέσιμα δωρεάν, για τα υπόλοιπα δεν είμαι σίγουρος. Υπάρχουν αντίστοιχες βιβλιοθήκες και σε άλλες γλώσσες, πχ C/C++ και Lua, αλλά οι μεν C/C++ είναι αρκετά πιο verbose και δυσνόητες, ενώ η Lua είναι απλά περίεργη γλώσσα.

tsigarid
20-10-16, 11:43
Δεν λέω ότι δεν υπάρχουν τρόποι η python να είναι εξαιρετικά γρήγορη. Το πρόβλημα είναι ότι υπάρχουν πολύ περισσότεροι τρόποι να είναι εξαιρετικά αργή. Στη java, με την περιορισμένη γνώση μου, πιστεύω ότι αυτό δεν γίνεται εύκολα. Στη fortran αν δεν χρησιμοποιείς loops με τη λάθος σειρά indices δεν θα το πάθεις ποτέ, και στη C/C++ αν δεν κάνεις βλακεία με τους pointers (το οποίο δεν είναι και τόσο απλό όσο ακούγεται) επίσης δεν θα το πάθεις ποτέ.

DVader
20-10-16, 12:34
Δεν λέω ότι δεν υπάρχουν τρόποι η python να είναι εξαιρετικά γρήγορη. Το πρόβλημα είναι ότι υπάρχουν πολύ περισσότεροι τρόποι να είναι εξαιρετικά αργή. Στη java, με την περιορισμένη γνώση μου, πιστεύω ότι αυτό δεν γίνεται εύκολα. Στη fortran αν δεν χρησιμοποιείς loops με τη λάθος σειρά indices δεν θα το πάθεις ποτέ, και στη C/C++ αν δεν κάνεις βλακεία με τους pointers (το οποίο δεν είναι και τόσο απλό όσο ακούγεται) επίσης δεν θα το πάθεις ποτέ.

Κοίτα εγώ είμαι καθαρά πλέον προγραμματιστής .NET Γράφω τόσο VB/C#/C++ Και στις 3 που ανέφερα τις ξέρω σε βάθος...
Οι βιβλιοθήκες που έχω αναπτύξει για μένα είναι γραμμένες σε C#/C++ ανάλογα το αντικείμενο !
Ένας από τους λόγους που ασχολήθηκα με το .NET είναι:
1. η ταχύτητα με τον οποία κάνει πράγματα στην εκτέλεση ....και ειδικά σε δύσκολες δουλειές...
2. Η ταχύτητα με την οποία γράφεις κώδικα
3. Συνδυάζεις σε ένα project πολλές γλώσσες χωρίς ιδιαίτερα θέματα....
4. Εργαλεία debug αψογα...Γενικά το IDE είναι τέλειο ...

Ανεξάρτητα με το .NET όμως η C++ από μόνη της είναι ταχύτητα γλώσσα... Δύσκολη μεν αλλά αλλά αν ξέρεις C++ για μένα δεν ξέρεις καλό προγραμματισμό... σαν λογική πάντα ... Στο .ΝΕΤ δουλεύω C# με VB interfaces... γιατί μου είναι λιγότερο σπαστική ....

Ότι θέλεις διαλέγεις ... Για μένα είσαι σε C++ για το αντικείμενο που θέλεις ...

MitsakosGR
20-10-16, 12:58
Δύσκολη μεν αλλά αλλά αν ξέρεις C++ για μένα δεν ξέρεις καλό προγραμματισμό...

Γιατί δεν ξέρεις προγραμματισμό αν ξέρεις C++;
Ίσα ίσα που μαθαίνεις όλα τα βασικά του πώς δουλεύουν οι υπολογιστές ώστε να μπορείς να καταλάβεις άμεσα τις μετέπειτα γλώσσες!

Onyx_
20-10-16, 13:24
Δύσκολη μεν αλλά αλλά αν δεν ξέρεις C++ για μένα δεν ξέρεις καλό προγραμματισμό.

Fixed that for ya

ckoul
20-10-16, 13:27
Δεν λέω ότι δεν υπάρχουν τρόποι η python να είναι εξαιρετικά γρήγορη. Το πρόβλημα είναι ότι υπάρχουν πολύ περισσότεροι τρόποι να είναι εξαιρετικά αργή. Στη java, με την περιορισμένη γνώση μου, πιστεύω ότι αυτό δεν γίνεται εύκολα. Στη fortran αν δεν χρησιμοποιείς loops με τη λάθος σειρά indices δεν θα το πάθεις ποτέ, και στη C/C++ αν δεν κάνεις βλακεία με τους pointers (το οποίο δεν είναι και τόσο απλό όσο ακούγεται) επίσης δεν θα το πάθεις ποτέ.
Έχεις μία εμπάθεια με την Python πάντως.. Προτάθηκε νωρίτερα η λύση της Python με χρήση της NumPy και για σένα ήταν μια ακόμα επιβεβαίωση ότι η Python είναι μια κουτσουρεμένη γλώσσα (την περίληψη αναφέρω).

Η NumPy απ' ότι ξέρω είναι μια πλήρης μαθηματική/επιστημονική βιβλιοθήκη (has been described as a free and more powerful equivalent to the Matlab numeric programming system) η οποία, ακριβώς επειδή η Python δεν είναι όσο γρήγορη απαιτείται σε αυτήν την περίπτωση λόγω του ότι δεν παράγει εκτελέσιμο κώδικα, παρέχεται ως compiled and optimized external libray εφάμιλλη εφαρμογών που έχουν γραφεί σε Fortran/C++. Δεν προσπαθεί δηλαδή η Python να γίνει κάτι που δεν είναι και θα την κατηγορήσουμε κι από πάνω γι αυτό; Θα γίνω λίγο υπερβολικός, αλλά να κατηγορήσουμε και τις C/C++ που δεν υποστηρίζουν εγγενώς RDBMS.

Κανείς δεν είπε ότι πρέπει μία γλώσσα να είναι η ταχύτερη δυνατή/καταλληλότερη σε όλες τις περιπτώσεις. Ίσα-ίσα που όταν προσφέρεται αυξημένη ευκολία εις βάρος της ταχύτητας εκεί που αυτό ουδεμία επίπτωση έχει αλλά και την μέγιστη αποτελεσματικότητα εκεί όπου απαιτείται, δεν ξέρω, αλλά εμένα μου ακούγεται «ιδανικό»!

Δεν μπορούμε να εκτιμήσουμε εμείς με βάση τις ανάγκες σου αν σε συμφέρει να χρησιμοποιήσεις Fortran ή Python+NumPy αλλά σίγουρα τα «αναθέματα» σε συγκεκριμένες προτάσεις/λύσεις, ιδίως σε περιβάλλοντα στα οποία δεν υπάρχει εκτεταμένη εμπειρία, δεν είναι οφέλιμα.

DVader
20-10-16, 15:37
Γιατί δεν ξέρεις προγραμματισμό αν ξέρεις C++;
Ίσα ίσα που μαθαίνεις όλα τα βασικά του πώς δουλεύουν οι υπολογιστές ώστε να μπορείς να καταλάβεις άμεσα τις μετέπειτα γλώσσες!

Αμαν ρε σύ ! Ενα typo έκανα... :rofl:

- - - Updated - - -


Fixed that for ya

:oneup: Thanx....

Mosfet
22-10-16, 15:04
Ποια είναι η γενική μου ερώτηση; Δεν έγραψα τι θα είναι ακριβώς (είναι proprietary και δεν μπορώ να πω) αλλά έγραψα ποιες είναι οι υπολογιστικές απαιτήσεις πολύ ξεκάθαρα. Το ίδιο έκανα και στην πρόκλησή σου, είναι ένα project με πάρα πολλά μαθηματικά. Θα διάλεγες C++ ή Java για παράδειγμα; Ή (ακόμα χειρότερα) python;

Όταν το high-perfomance είναι αναγκαίο σε πολύπλοκους υπολογισμούς\βαριά-μαθηματικά, τότε θα έλεγα η επιλογή C\C++, είναι μονόδρομος. Ούτε java, ούτε python, ούτε γενικά τίποτε άλλο.

Το ότι υπάρχει ακόμα η fortran, για να support-άρονται legacy εφαρμογές (που γράφτηκαν λ.χ. πριν από 20-30 χρόνια), δεν σημαίνει ότι είναι κατάλληλη, για να ξεκινήσει κανείς ένα φρέσκο project σε αυτή.

tsigarid
22-10-16, 15:19
Το ότι υπάρχει ακόμα η fortran, για να support-άρονται legacy εφαρμογές (που γράφτηκαν λ.χ. πριν από 20-30 χρόνια), δεν σημαίνει ότι είναι κατάλληλη, για να ξεκινήσει κανείς ένα φρέσκο project σε αυτή.

Αυτό είναι ένα εξαιρετικό σημείο. Θα με ενδιέφερε να μάθω γιατί το πιστεύεις αυτό. Τι δεν κάνει καλά η fortran για βαριά μαθηματικά που κάνει πολύ καλύτερα η C/C++;

A.N.T.
22-10-16, 17:20
Να σου πω εγώ γιατί το πιστεύει, είναι προφανές :

Διότι σε ότι αφορά τη fortran είναι παντελώς ανίδεος της εξέλιξης, της υποστήριξης και των δυνατότητων της.

Και μόνον το ότι γράφει ότι "σε πολύπλοκους υπολογισμούς\βαριά-μαθηματικά, τότε θα έλεγα η επιλογή C\C++, είναι μονόδρομος"
φανερώνει την άγνοιά του.
Η καταλληλότητα και υπεροχή της fortran vs C/C++ για τέτοιους υπολογισμούς είναι προφανής αν κάποιος π.χ. κάνει ένα ξεφύλλισμα στους αντίστoiχους τόμους του Numerical Recipes. Oι ρουτίνες σε f90 είναι μικρότερες από τις αντιστοιχες σε C/C++, πιο περιεκτικά γραμμένες, με γραφή συναφέστερη στις φορμαλιστικές μαθηματικές εκφράσεις και ευκολότερο να χρησιμοποιηθούν αυτόνομα.
Μιλάμε για 20+ χρόνια πριν (η fortran ήδη είχε εκσυγχρονιστεί περίπου το '91 αφήνοντας πίσω της την απαρχαιωμένη f77) αλλά και σήμερα το ίδιο συμβαίνει.


Οι προγραμματιστές-απόφοιτοι πληροφορικής δεν έχουν κουλτούρα αριθμητικής ανάλυσης και δεν μπορούν να εκτιμήσουν την
ευχρηστία της εκεί. Η προγραμματιστική κουλτούρα τους έγκειται κυρίως σε δομές δεδομένων, system programming, Web, Databsases και άλλα τέτοια θέματα για τα οποία η fortran εξ αντικειμένου δεν είναι κατάλληλη.
Όπως αυτοί που δεν έχουν κλίση στα θεωρητικά θέματα των μαθηματικών και φυσικής αδυνατούν να δουν την υπεροχή (ενίοτε συντριπτική) του Mathematica έναντι του Μatlab.

Mosfet
22-10-16, 17:37
Αυτό είναι ένα εξαιρετικό σημείο. Θα με ενδιέφερε να μάθω γιατί το πιστεύεις αυτό. Τι δεν κάνει καλά η fortran για βαριά μαθηματικά που κάνει πολύ καλύτερα η C/C++;

Σαν γλώσσες (σαν συντακτικό δηλαδή), δεν μπορώ να πω ότι υπάρχει κάτι, που μπορεί να κάνει η μία και δεν μπορεί να κάνει η άλλη.

Ωστόσο, με δεδομένο ότι οι μεταγλωττιστές C/C++ εξελίσσονται συνέχεια, πολύς κόσμος πιστεύει (ανάμεσα σε αυτούς και εγώ), ότι παράγουν εξαιρετικά βελτιστοποιημένο κώδικα μηχανής.

Δεν είναι τυχαίο, ότι εφαρμογές όπως το Adobe Photoshop & Premier (που ακόμα και ένας αδαής, αντιλαμβάνεται τι υπολογισμοί γίνονται πίσω), είναι γραμμένες σε C++.

A.N.T.
22-10-16, 17:45
To εμπορικό λογισμικό γράφεται εν πολλοίς σε C/C++ όχι πρωταρχικά για λόγους επιδόσεων αλλά επειδή εκεί υπάρχει καλύτερη διασύνδεση με το λειτουργικό, υποστήριξη γραφικών, κατασκευή interface, βιβλιοθήκες για διάφορα παρελκόμενα θέματα κλπ.

Δεν είναι το ίδιο με κάποιο ερευνητικό project που τέτοιες απαιτήσεις γενικά δεν υπάρχουν.

Eξάλλου, από θεωρητική σκοπιά, το συντακτικό είναι αδιάφορο καθώς όλες οι κοινές γλώσσες είναι τύπου Turing και άρα ισοδύναμες μεταξύ τους (θεωρητικά).
Πρακτικά υπάρχουν πάρα πολλές διαφορές και ότι κάνει η μία ΔΕΝ μπορεί πάντα να το κάνει η άλλη - ή το κάνει λίγο έως πολύ δύσχρηστα.
Το ότι η C/C++ δεν έχει συνακτικό για να χειρίζεται ενδογενώς αριθμητικούς πίνακες - και άρα δυσκολεύει αφάνταστα τη ζωή των πραγραμματιστών σε αριθμητική ανάλυση - είναι μία.
Το οτι η fortran δεν έχει templates - τα οποία πρέπει να "προσομοιωθούν" με άκομψα τεχνάσματα - είναι άλλη μία.

tsigarid
22-10-16, 18:28
Σαν γλώσσες (σαν συντακτικό δηλαδή), δεν μπορώ να πω ότι υπάρχει κάτι, που μπορεί να κάνει η μία και δεν μπορεί να κάνει η άλλη.

Ωστόσο, με δεδομένο ότι οι μεταγλωττιστές C/C++ εξελίσσονται συνέχεια, πολύς κόσμος πιστεύει (ανάμεσα σε αυτούς και εγώ), ότι παράγουν εξαιρετικά βελτιστοποιημένο κώδικα μηχανής.

Δεν είναι τυχαίο, ότι εφαρμογές όπως το Adobe Photoshop & Premier (που ακόμα και ένας αδαής, αντιλαμβάνεται τι υπολογισμοί γίνονται πίσω), είναι γραμμένες σε C++.

O A.N.T. μιλάει συγκεκριμένα, εσύ όχι. Το ότι η adobe δεν διάλεξε fortran είναι γιατί ήθελε γραφικό περιβάλλον, μεταξύ πολλών άλλων. Το ότι οι compilers της C/C++ εξελίσσονται τι σημαίνει; Έχεις δει τι γίνεται στους compilers της fortran; Προφανώς όχι.

Ας το αφήσουμε εδώ όμως, το να ανοίξουμε ένα flame δεν βοηθάει. Η ουσία είναι ότι όταν ξεκίνησα την ερώτηση ήλπιζα να βρω μάθω κάτι για καινούριες γλώσσες που δεν έχω ασχοληθεί, αλλά αυτό δεν έγινε, πράγμα το οποίο μου λέει ότι για το είδος δουλειάς που ρώτησα τελικά οι υποψήφιες γλώσσες είναι ελάχιστες, και τις ήξερα ήδη. Θα συνεχίσω λοιπόν με τον τρόπο που έχω ήδη αρχίσει: python για proof-of-concept δουλειές, που η επιδόσεις δεν παίζουν ρόλο και ο γρήγορος ad hoc προγραμματισμός είναι σημαντικός, και fortran για την ουσία του project. Σας ευχαριστώ όλους για τις απαντήσεις σας, και θα χαρώ να συμμετάσχω σε περαιτέρω εποικοδομητικές συζητήσεις πάνω στο θέμα!

Με τα σχόλια που εμφανίστηκαν ότι είμαι εμπαθής ενάντια της python επειδή (δήθεν) δεν έχω εκτεταμένη εμπειρία, δεν αξίζει να ασχοληθώ καν.

Mosfet
22-10-16, 18:31
Να σου πω εγώ γιατί το πιστεύει, είναι προφανές :

Διότι σε ότι αφορά τη fortran είναι παντελώς ανίδεος της εξέλιξης, της υποστήριξης και των δυνατότητων της.

Εσύ λοιπόν που δεν είσαι ανίδεος, γιατί δεν μας διαφωτίζεις, με την state-of-the-art εξέλιξη της fortran; :whistle:


Και μόνον το ότι γράφει ότι "σε πολύπλοκους υπολογισμούς\βαριά-μαθηματικά, τότε θα έλεγα η επιλογή C\C++, είναι μονόδρομος"
φανερώνει την άγνοιά του.

Δώσε μας λοιπόν ξανά τα φώτα σου, μέγιστε γνώστη!


Η καταλληλότητα και υπεροχή της fortran vs C/C++ για τέτοιους υπολογισμούς είναι προφανής αν κάποιος π.χ. κάνει ένα ξεφύλλισμα στους αντίστoiχους τόμους του Numerical Recipes. Oι ρουτίνες σε f90 είναι μικρότερες από τις αντιστοιχες σε C/C++, πιο περιεκτικά γραμμένες, με γραφή συναφέστερη στις φορμαλιστικές μαθηματικές εκφράσεις και ευκολότερο να χρησιμοποιηθούν αυτόνομα.
Μιλάμε για 20+ χρόνια πριν (η fortran ήδη είχε εκσυγχρονιστεί περίπου το '93 αφήνοντας πίσω της την απαρχαιωμένη f77) αλλά και σήμερα το ίδιο συμβαίνει.

LOL, φοβερό επιχείρημα, ότι οι κάποιες numerical ρουτίνες στην f90, είναι μικρότερες από τις αντίστοιχες της C/C++. :rofl:
Βέβαια, υπάρχει και η έννοια του language expressivity (JFGI :p). Να το κάνω 50αράκια;

Γράφω ένα πρόγραμμα σε perl, σε 100 γραμμές κώδικα. Γράφω το ίδιο πρόγραμμα σε C++, σε 200 γραμμές κώδικα.
Μάντεψε, πιο τρέχει πιο γρήγορα;


Οι προγραμματιστές-απόφοιτοι πληροφορικής δεν έχουν κουλτούρα αριθμητικής ανάλυσης και δεν μπορούν να εκτιμήσουν την
ευχρηστία της εκεί. Η προγραμματιστική κουλτούρα τους έγκειται κυρίως σε δομές δεδομένων, system programming, Web, Databsases και άλλα τέτοια θέματα για τα οποία η fortran εξ αντικειμένου δεν είναι κατάλληλη.

Δεν έχεις αντιληφθεί, ότι το scientific programming δεν είναι μόνο το numerical programming. Εν ολίγοις, βλέπεις το δέντρο και χάνεις το δάσος...


Όπως αυτοί που δεν έχουν κλίση στα θεωρητικά θέματα των μαθηματικών και φυσικής αδυνατούν να δουν την υπεροχή (ενίοτε συντριπτική) του Mathematica έναντι του Μatlab.

Ξανά LOL. Τώρα γίνεται σύγκριση μεταξύ ενός πακέτου που κάνει symbolic calculations μέ ένα που κάνει numerical calculations. Whatever... :rolleyes:


To εμπορικό λογισμικό γράφεται εν πολλοίς σε C/C++ όχι πρωταρχικά για λόγους επιδόσεων αλλά επειδή εκεί υπάρχει καλύτερη διασύνδεση με το λειτουργικό, υποστήριξη γραφικών, κατασκευή interface, βιβλιοθήκες για διάφορα παρελκόμενα θέματα κλπ.

Δηλαδή εφαρμόζει ο άλλος ένα φίλτρο στο photoshop και ενώ αυτό θα μπορούσε να τρέξει θεωρητικά σε 5 δευτερόλεπτα (αν υποθέταμε ότι είχε γραφτεί σε fortran), τώρα λ.χ. του παίρνει 10 δευτερόλεπτα (καθώς είναι γραμμένο σε C++), γιατί όπως ισχυρίζεσαι, το performance δεν είναι είναι το πρωταρχικό μέλημα στο εμπορικό λογισμικό.

Σοβαρολογούμε τώρα; :facepalm:

@ ADSLgr.com All rights reserved.