Δημοσιεύτηκε: 02 Δεκ 2011, 12:39
Θα συμφωνήσω απόλυτα με τα λεγόμενά σου. Τις απόψεις αυτές περί βελτιστοποίησης της αναφέρω εδώ και καιρό. Ένα προσωπικό παράδειγμα. Δούλευα σε ένα κώδικα matlab για αντίστροφα προβλήματα στη γεωθερμία, με level set και πεπερασμενά στοιχεία. Σε κάποιο σημείο είχα μια συνάρτηση που έκανε παρεμβολή μεταξύ δύο πλεγμάτων. Όσο αύξανε το μέγεθος των πλεγμάτων γινόταν εκνευριστικά αργή. Και αυτή θα καλούνταν σε ένα εξωτερικό βρόχο πολλές φορές. Η αρχική υλοποίησή της ήταν σε matlab. Πώς βρήκα ότι αυτή η συνάρτηση έφταιγε και όχι κάποια άλλη; Χρησιμοποίησα το εργαλείο του matlab που χρονομετρεί κάθε συναρτηση, γραμμή κώδικα, κλπ. Αφού όμως είχα την πλήρη έκδοση του κώδικα σε λειτουργία.
Η βελτιστοποίηση που έκανα ήταν να γράψω μόνο αυτή τη συνάρτηση σε C και να τη συνδέσω με MEX στο matlab. Αν είχα ξεκινήσει να γράφω το πρόγραμμα αυτό στη C ακόμη θα έγραφα και δε θα ήμουν ούτε στα μισά, ενώ το project ολοκληρώθηκε επιτυχώς σε 1 χρόνο και 3 μήνες.
Και θα τονίσω κι εγώ ότι:
"Η επιλογή της C ως γλώσσα προγραμματισμού είναι πρόωρη βελτιστοποίηση"
Σχετικά με την εκπαίδευση παιδιών, ρίξε μια ματιά στο pdf του why-the-lucky-stiff για την εκμάθηση της ruby. Η ruby είναι κι αυτή πολύ καλή γλώσσα για εκμάθηση και σοβαρές δουλειές. Για επιστημονική έρευνα της λείπουν ακόμη οι βιβλιοθήκες. Επιπλέον έχει και closures που η python δεν έχει, τα οποία διευκολύνουν σε πολλές καταστάσεις.
Η βελτιστοποίηση που έκανα ήταν να γράψω μόνο αυτή τη συνάρτηση σε C και να τη συνδέσω με MEX στο matlab. Αν είχα ξεκινήσει να γράφω το πρόγραμμα αυτό στη C ακόμη θα έγραφα και δε θα ήμουν ούτε στα μισά, ενώ το project ολοκληρώθηκε επιτυχώς σε 1 χρόνο και 3 μήνες.
Και θα τονίσω κι εγώ ότι:
"Η επιλογή της C ως γλώσσα προγραμματισμού είναι πρόωρη βελτιστοποίηση"
Σχετικά με την εκπαίδευση παιδιών, ρίξε μια ματιά στο pdf του why-the-lucky-stiff για την εκμάθηση της ruby. Η ruby είναι κι αυτή πολύ καλή γλώσσα για εκμάθηση και σοβαρές δουλειές. Για επιστημονική έρευνα της λείπουν ακόμη οι βιβλιοθήκες. Επιπλέον έχει και closures που η python δεν έχει, τα οποία διευκολύνουν σε πολλές καταστάσεις.