Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Γιατί .ΝΕΤ;

Îåêßíçóå áðü ôï ìÝëïò gkontog. Τελευταία δημοσίευση από το μέλος patrick στις 23-10-2004, 21:55. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-10-2004, 12:46 303

    Γιατί .ΝΕΤ;

    Σε αντιδιαστολή με τον συνάδελφο moderator pkanavos – δράττομαι της ευκαιρίας να τον διαβεβαιώσω περί της ειλικρινούς συμπαθείας μου (τη βρίσκω ΧΟΝΤΡΑ να γράφω κάτι τέτοια Smile) – θα κάνω την ερώτηση, «Γιατί .ΝΕΤ;»

     

    Εντάξει, είναι καινούργιο, κάνει εφέ να λες «γράφω σε .ΝΕΤ» (ψέματα, όλοι σε πληκτρολόγιο γράφουμε), λες ξέρω .ΝΕΤ και τσιμπάς παραπάνω λεφτά αν το πουλήσεις καλά, σου δίνει την ευκαιρία να λες κάτι μυστήρια αγγλοσαξωνικά όπως inheritance και polymorphism αλλά τελικά γιατί .ΝΕΤ; Και δεν θέλω τα γνωστά θεωρητικά, θέλω παραδείγματα από την καθημερινή μας πραγματικότητα και την πρώτη γραμμή της μάχης όπου πέφτουν τα bugs σαν το χαλάζι και ο προγραμματιστής αναστενάζει!

     

    Πάμε λοιπόν να πούμε όλοι μία ιστορία σχετικά με το τι κερδίσαμε αποφασίζοντας να περάσουμε σε .ΝΕΤ. Δεν είναι ανάγκη η ιστορία να είναι ιστορία απόλυτης επιτυχίας, ούτε να έχει αίσιο τέλος, απλά να περιγράφει το γιατί, το πως, κατά πόσο έγινε δυνατό να το πετύχουμε και τέλος τι μας άφησε (πχ εκδορές, μώλωπες, θλαστικά κατάγματα κλπ) σαν συμπέρασμα για το .ΝΕΤ.

     

    Και να μην ξεχάσουμε όλοι στο τέλος να απαντήσουμε στις ερωτήσεις:

     

    Αξιζε; Θα το ξανακάνω; Πόσα έδωσα για θεραπεία; Smile

     

  •  18-10-2004, 13:23 304 σε απάντηση της 303

    Re: Γιατί .ΝΕΤ;

    Δυστυχώς ανήκω στην τάξη αυτών που υποφέρουν ακόμα με VB. Τα τελευταία χρόνια χρειάστηκε πολλές φορές να κάνω κάτι που θα το έκανα πολύ ευκολότερα σε .ΝΕΤ χρησιμοποιώντας inheritance ή overloading, χρησιμοποιώντας κόλπα και χακιές. Επίσης, πολλά πράγματα απλά δεν γίνονται σε VB, π.χ. multithreading. Για μένα, τη θεραπεία τη χρείάζομαι τώρα για να συνεχίσω να δουλεύω σε VB6 Tongue Tied. Αντίθετα, μπορώ να κάνω πολύ εύκολα τα ίδια πράγματα στο σπίτι με C# ή VB.NET. Αλλά τελικά δεν μπορώ να τα χρησιμοποιήσω!

    Παραδείγματα:
    - Σε παλιότερη δουλειά φτιάξαμε μια πλατφόρμα Workflow με VB components σε COM+. Για να μπορέσουμε να χρησιμοποιήσουμε object pooling για τις συνδέσεις στη βάση, αναγκαστήκαμε να κάνουμε ένα connection component σε C++. Πολύ διασκέδασα να προσπαθώ να καταλάβω ποιός έσβησε το BSTR και πως να γυρίσω το recordset στους clients. Αν υπήρχε τότε το .NET (ήταν σε beta) το όλο θέμα θα ήταν ανάξιο λόγου. Τελικά έχασα 1 μήνα.
    - Έχω να δείξω κάποια στοιχεία πάνω σε ένα χάρτη. Π.χ. pins, βενζινάδικα, ξενοδοχεία κλπ. Τα περισσότερα αντικείμενα ζωγραφίζονται με τον ίδιο τρόπο εκτός από κάποια που αλλάζουν εμφάνιση ανάλογα με κάποια παράμετρο. Αν είχα inheritance θα μπορούσα να φτιάξω μια κλάση να ζωγραφίζει τα αντικείμενα και για τις ειδικές περιπτώσεις ένα subclass που θα ζωγραφίζει με το νέο τρόπο, καλώντας τις μεθόδους του γενικού αντικειμένου. Για να κάνω το ίδιο σε VB χρειάστηκαν 3 κλάσεις και τσάμπα κώδικας να παραπέμπει τα calls που δεν αλλάζουν στη γενική κλάση. Και το χειρότερο είναι ότι αν χρειαστούν αλλαγές παίρνουν πολύ περισσότερο χρόνο απ' ότι αν είχα χρησιμοποιήσει inheritance.
    - Sorted arrays κανείς? Στη VB πρέπει να κάνω τα sort μόνος μου ενώ στο .NET είναι έτοιμα. Τον τελευταίο καιρό φτιάχνω μία λίστα από μηνύματα που θέλω να δείξω στο χρήστη σε συγκεκριμμένες χρονικές στιγμές. Με VB έφτιαξα ένα collection με τα μηνύματα και ένα χαζό bubblesort βάση του χρόνου όταν προσθέτω ένα νέο μήνυμα. Με .NET θα είχα έτοιμο το SortedList.

    Και οι επιτυχίες (αναγκαστικά με κώδικα στο σπίτι):
    - Password Manager σε .NET. Είχα προσπαθήσει και στο παρελθόν να φτιάξω μια εφαρμογή password manager τόσο σε C++, VB και C#. Ειδικά σε VB, η αποθήκευση μιας λίστας αντικειμένων (π.χ. passwords) και η κρυπτογράφησή τους είναι ολόκληρη ιστορία. Με το .NET όλη η ιστορία πήρε ένα πολύ χαλαρό Σαββατοκύριακο.Cool
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-10-2004, 17:31 305 σε απάντηση της 304

    Re: Γιατί .ΝΕΤ;

    Εγώ προσωπικά θεωρώ ότι η μεγάλη αξία του .NET συνοψίζεται στα εξής σημεία

    1. Μαθαίνοντας .NET έχεις τη δυνατότητα να προγραμματίσεις σε ένα πολύ μεγάλο πλήθος από προϊόντα, το οποίο όλο και διευρύνεται. Η Microsoft μετά την έλευση του .NET, έχει αρχίσει σταδιακά να κάνει expose to API των παλαιών προϊόντων της σε .NET μέσω του COM Automation. Εξάλλου τα καινούργια προϊοντα είναι τα περισσότερα .ΝΕΤ Enabled. Έτσι σε λιγο καιρό θα ξέρεις ένα περιβάλλον και θα μπορείς να προγραμματίζεις ακόμα και σε windows. Στα επόμενα windows το Win32 θα είναι .ΝΕΤ, βλ. WINFX.

    Σήμερα μπορείς να γράψεις .NET σε MS Office, Sharepoint, Biztalk, MCMS 2002, Biztalk και πολλά ακόμα.

    Έτσι αξίζει τον κόπο να επενδύσει και να μάθει κανείς.

    Αν θέλουμε λοιπόν να συνοψίσουμε το μεγάλο στοίχημα του .NET είναι ότι αυξάνει την παραγωγικότητα και σε αυτό το πλαίσιο εντάσσεται το προηγούμενο

  •  23-10-2004, 21:55 358 σε απάντηση της 303

    Re: Γιατί .ΝΕΤ;

    Για μένα προσωπικά, ο σημαντικότερος μη-τεχνικός λόγος για να γράψω σε .NET, είναι το γεγονός ότι κοιτάζω το τελικό αποτέλεσμα της δουλειάς μου και μου αρέσει!  Μου αρέσει σαν λύση ρε παιδί μου.  Παλιά σκεφτόμουν: «Το έχω κάνει όσο καλύτερα μπορώ, με δεδομένους τους περιορισμούς που έχω» (δεν θέλω σχόλια από παλιούς συναδέλφους!).  Τώρα πια, ελάχιστοι είναι οι περιορισμοί (δεν μπορώ να σκεφτώ κανέναν για να δώσω παράδειγμα).  Εμένα, σαν προγραμματιστή, αυτό μου έλειπε τόσα χρόνια.  Δεν είναι μόνο το inheritance και ο πολυμορφισμός.  Είναι όλο το framework, και ο τρόπος που το χρησιμοποιείς.  Είναι ο κορυφαίος τρόπος με τον οποίον χειρίζεσαι τα events.  Είναι η ομορφιά και η τάξη των namespaces.  Είναι το γεγονός ότι τα πάντα είναι objects στα οποία μπορείς να συμπεριφερθείς με τον ίδιο τρόπο.  Δεν θα ξεχάσω ποτέ το γεγονός ότι στην VB δεν μπορούσες να φορτώσεις δυναμικά μία φόρμα, χρησιμοποιώντας το όνομά της (χωρίς να καταφύγεις σε τρόπους «πιάνω το αριστερό μου αυτί με το δεξί μου χέρι, πίσω από το κεφάλι μου»).  Μπορεί ακόμα να μην είναι όλα τέλεια, αλλά τουλάχιστον εμένα με ικανοποιούν.

    Όσο για ένα case study θα σας δώσω ένα πολύ πρόσφατο, από τις μέρες μου στον Αθήνα 2004:

    Είχαν ένα δίκτυο με 43 domain controllers και κάπου 3500 χρήστες, και ήθελαν να σβήσουν τους inactive χρήστες.  Για να τους βρουν, χρειάζονταν το last logon του κάθε χρήστη (ο αλγόριθμος ήταν όποιος δεν έχει κάνει login τις τελευταίες Χ μέρες και ισχύουν και κάποιες άλλες συνθήκες, σβήνεται).  Το last logon, όμως, (όπως μου είπαν) είναι ένα πεδίο που δεν γίνεται replicate στο Active Directory (για λόγους performance), οπότε για να βρεις το last logon ενός χρήστη, έπρεπε να ρωτήσεις έναν έναν όλους τους DCs και να πάρεις το MAX (διότι δεν είναι σίγουρο το που θα κάνει login ο καθένας).  Αυτό που έκαναν λοιπόν (με VBScript μέχρι που πήγα) ήταν να παίρνουν σβάρνα όλους τους servers (έναν έναν) και να παίρνουν την λίστα με τους users μαζί με το last logon και να κρατάνε ένα εσωτερικό table στο οποίο ενημέρωναν την ημερομηνία κλπ κλπ.  Αυτό το πράγμα έκανε 2,5 ώρες να τρέξει.  Για να μην πολυλογώ, το έκανα σε VB.NET (console application), χρησιμοποιώντας classes του framework για να μιλήσω με το AD, και threading, με logging και ιστορίες, σε 1 μέρα.  Χρόνος εκτέλεσης? 15 δεύτερα.

    Έχω και άλλα τέτοια, μικρά, παραδειγματάκια.  Μόλις βρω περισσότερο χρόνο (και αν ενδιαφέρουν) θα τα γράψω και αυτά!


    Patrick
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems