kostikas:
@Kelman νομίζω πως μας παρεξήγησες.
Σίγουρα η τέχνη καο το ταλέντο χρειάζονται όμως σήμερα οι λύσεις που δίνονται είναι σπάταλες, χαοτικές ...
Προσωπικά ανοίκω στην εποχή του DOS, έχω γράψει χιλιάδες γραμμές κώδικά σε Pascal και C, τώρα προσπαθώ να ξαναμπώ στο παιχνίδι και συναντώ ένα κάρο δυσκολίες.
Παλαιότερα αν μάθαινες τον συντακτικό μιας γλώσσας και είχε γνώσεις με pointers kai data structures trees, lists ... είσουν έτοιμος να τα βάλεις με το θηρίο, σήμερα εκτός κι αν κάτι μου έχει ξεφύγει τα πράγματα δεν είναι έτσι απλά.
Δε νομίζω να παρεξήγησα κάτι, το σχόλιό μου δεν ήταν σχετικά με την πολυπλοκότητα των σημερινών προγραμματιστικών τεχνολογιών, αυτό είναι άλλη κουβέντα κατά την οποία - αν την ξεκινήσουμε - και πάλι δεν θα με βρεις σύμφωνο αλλά ας το αφήσουμε προς το παρόν.
Το σχόλιό μου ήταν σχετικά με τις έτοιμες υλοποιήσεις και εξακολουθώ να πιστεύω ότι είναι legitimate αυτό που είπα. Στην εποχή του DOS, όταν έπρεπε να κάνεις implement τον αλγόριθμο ταξινόμησης ενός array θα έπρεπε να διαβάσεις τη θεωρία, να βρεις τον καταλληλότερο αλγόριθμο και να γράψεις τον κώδικα. Τώρα, γράφεις απλά array.sort() και το να γράψεις τον δικό σου αλγόριθμο ταξινόμησης είναι κάτι που το σκέφτεσαι μόνο όταν θες κάτι πολύ εξειδικευμένο, όπως πχ έναν αλγόριθμο κατάλληλο για τα περίεργα data που μπορεί να έχεις ή όταν θες το απόλυτο performance. Ωστόσο, ακόμα κι αν δεν υπήρχε το array.sort(), σήμερα είναι πολύ εύκολο να βρεις copy/paste κώδικα ταξινόμησης λόγω του internet και των search engines, πράγμα που δεν υπήρχε στην εποχή του DOS (οι ξαγμένοι τότε χρησιμοποιούσαν modems και BBS).
Όπως είπα (ενδεχομένως να μην κατάλαβες αυτό το κομμάτι), αυτό που δεν είναι εύκολο είναι να γράψεις μια εφαρμογή που να έχει χαρακτηριστικά όπως τα παρακάτω:
- Επεκτασιμότητα: Να μπόρει να καλύψει μελλοντικές απαιτήσεις χωρίς να χρειάζεται να κάνεις edit και redeploy όλη την εφαρμογή. Χονδρικά, να γράφεις τη νέα λειτουργικότητα σε ένα module, να το παίρνει η εφαρμογή και να αποκτά τη νέα λειτουργικότητα
- Ευκολία στη συντήρηση: Να γράφεις τον κώδικά σου με τέτοιον τρόπο ώστε μια αλλαγή/διόρθωση σε ένα τμήμα του προγράμματος να μην επηρεάζει την υπόλοιπη εφαρμογή. Να μπορείς να τεστάρεις μέσω κώδικα και αυτοματοποιημένα ότι οι αλλαγές όντως κάνουν αυτό που πρέπει και δεν έχουν παρενέργειες (αυτό που λέμε unit testing)
- Δυνατότητα κλιμάκωσης: Να μπορεί να φιλοξενήσει μεγαλύτερο φόρτο χωρίς να χρειάζεται να γράψεις κώδικα εκ νέου. Σήμερα δουλεύει με 10 χρήστες και για 100 προϊόντα, αύριο θα πρέπει να δουλεύει με 100 χρήστες και 100.000 προϊόντα
Και αυτά είναι *μερικά* από απαιτούμενα χαρακτηριστικά μιας σύγχρονης εφαρμογής. Πιστεύω ότι καθώς θα εμπλέκεσαι όλο και περισσότερο, θα εκτιμήσεις το γεγονός ότι μπορείς εύκολα να βρεις trivial κώδικα κι έτσι θα μπορείς να επικεντρωθείς στα πιο σημαντικά.
Vir prudens non contra ventum mingit