Saturday, September 23, 2006

αναζητώντας την λογική πίσω από τη VB.NET 2005

Όταν οι απανταχού γης προγραμματιστές Visual Basic έφαγαν την νίλα από την ίδια την Microsoft με την τεράστια αλλαγή από το απλό visual studio στο .ΝΕΤ, εγώ προσωπικά ήλπιζα ότι θα περάσει κάποιος καιρός σταθερότητας έτσι ώστε να μην χρειάζεται να γράφω κώδικα ξεφυλλίζοντας βιβλία της wrox. Πφφ! φρούδες ελπίδες... Πριν από ένα χρόνο αναβάθμισα την έκδοση 2003 του Visual Studio στην σημερινή 2005 όπου κι αρχίζει η ιστορία μου.

Η Visual Basic 2003 .ΝΕΤ είχε έναν πολύ καλό κι ορθολογικό τρόπο για την σύνδεση του εκάστοτε προγράμματος με μία βάση δεδομένων. Τα βήματα ήταν απλά, άνοιγες ένα connection, περνούσες με τον adapter τα δεδομένα σε ένα datatable/dataset και μετά έπαιζες με αυτά localy στη μνήμη. Αν βαριόσουν δε να γράφεις κώδικα, τα υπάρχοντα wizards ήταν υπερπλήρη και κατανοητά. Στο 2005 όμως, κάτι έχω χάσει.

Η Microsoft έχει την κακιά συνήθεια που προέρχεται από τον τομέα των mainstream εφαρμογών της, όταν είναι να κάνει κάτι εύκολο να μπορούν να το χειριστούν μόνο οι ηλίθιοι ή αυτοί που θέλουν να κάνουν βασικά πράγματα. Επί του θέματος, στο 2005 τα components έχουν μπλεχθεί, δεν υπάρχει καν στο toolbox connection/adapter, πολλά έχουν συνδεθεί μεταξύ τους (προφανώς για λόγους "ευκολίας") ενώ το πρόγραμμα πιό πολύ ασχολείται με τα bindings σε άλλα components (i.e textboxes) παρά με το να κάνει generate κώδικα "τσατσοδουλειά" όπως τα sql statements.

Αποτέλεσμα; Το VS2005.NET είναι για κάποιους που ξέρουν ΠΑΠΑΔΕΣ αλλά βαριούνται να γράφουν κώδικα. Όσοι ψάχνουν κάποια γενικότερη λογική πρέπει να υοθετήσουν αυτή της Microsoft για να γράψουν ακόμη και το απλούστερο πρόγραμμα.

7 comments:

Apotheosis said...

Διαφωνώ πάνω κάτω, αλλά όχι με αυτό που λες. Περισσότερο με την φιλοσοφία του προγραματισμού μέσω IDE. Οι καλές εταιρείες που πέρνουν απόφητους, τους βάζουν για το πρώτο εξάμηνο να δουλέβουν ΜΟΝΟ με textpad and compilers and command prompts. Είναι ο μόνος τρόπος να μάθει κάποιος να προγραμματίζει σωστά. Για να μην φανώ υπερόπτης, εγώ ΔΕΝ ξεκίνησα έτσι. Και θεωρώ τα 2-3 πρώτα μου χρονια δουλειάς χαμένα από άποψη του τί έμαθα.

Γνώμη μου, και συμβουλή κάθε φορά που κάνω mentor κάποιον, είναι να μάθεις να προγραμματίζεις (γενικώς, όχι απλά εσύ stormrider) με textpad. Σε 6 μήνες, θα ξέρεις περισσότερα από τους περισσότερους γύρω σου, believe me!

dop said...

Το να προγραμματίζεις σε textpad χωρίς κάποιου είδους βοήθεια είναι μόνον άσκηση για γερά νεύρα.

Από το ωραίο μου περιβάλλον στο eclipse και στο πενιχρό kate, αναγκάζομαι να δουλεύω για τα υπόλοιπα χρόνια σε emacs, το οποίο είναι αρκετά δύσκολο να το συνηθίσεις. Πάντα χρησιμοποιούσα command line για το compiling, αλλά μου άρεσε τα makefiles να μου τα κάνει κάποιος άλλος. Τώρα πρέπει να τα αλλάζω μόνος - και αν βάλεις και το SVN που πρέπει να χρησιμοποιώ, τότε γίνεται χαμός όταν αλλάζει κάτι.

Τα IDEs προσφέρουν παραγωγικότητα, χωρίς να σου γεμίζουν το κεφάλι με περιττές αηδίες του "πως να γράψεις το καλύτερο makefile" ή "πως στο καλό έλεγαν την μέθοδο στο τάδε framework". Μετά από λίγο καιρό τα μαθαίνεις απέξω αυτά, αλλά μέχρι να τα μάθεις τρως χρόνο. Επιπλέον προσφέρουν tabs, auto-completion, εύκολα παραμετροποιήσιμο περιβάλλον και κυρίως εύκολη αυτοματοποίηση, χωρίς να χρειάζεται να μαθαίνεις επιπλέον εντολές του editor.

Από την άλλη, εργαλεία τύπου Delphi και VB, που λέγονται RAD και δεν είναι απλώς IDEs, είναι ότι καλύτερο έχει βγει για εταιρική χρήση (εφαρμογές σε dt) αλλά ότι χειρότερο από άποψης ποιότητας κώδικα και good programming practices.

Προσωπικά απεχθάνομαι την VB καθώς ο κώδικας δεν είναι reusable (hey, δεν τρέχει όλος ο κόσμος MS) και για πολλούς άλλους λόγους.

Stormrider said...

είχα εξαιρετικές εμπειρίες στην C και στην Perl με τον emacs και το command line, αλλά δυστυχώς ο πραγματικός κόσμος (=η εταιρία που δουλεύω που φτιάχνει εμπορικές εφαρμογές) έχει άλλες απαιτήσεις, δηλαδή RAD.

Apotheosis said...

(Sorry for English, Storm, I am in a hurry!)

The point I am trying to make is this (a general point, not directed to anyone in particular): learn in textpad and compiler, THEN be productive with IDEs. Believe me, it makes a whole lot of difference to your skills in the long run.

As for .NET, don't bother with VB.NET, if you want to use .NET use C# (VB.NET was included on the .NET framework as a marketing ploy by microsoft, to allow the millions of VB programmers to have the illusion of familiarity to make the transition. Otherwise, it is a useless language and not really used that much - except from VB programmers with little OO skills).

Regarding IDEs. Eclipse is the best IDE for Java. If by RAD you mean IBM's 'Rational Application Developer' (build by IBM on top of Eclipse and used in conjunction with WebSphere App Server) and not 'Rapid Application Development' (the process), my opinion on the tool is not very high. I am using it daily the last year or so and I am not impressed by the speed at all.

Visual Studio, regardless of the microsoft ties, is a very good IDE. Its main problem, is that it hides a lot from the programmer and if you are not well versed you might have difficulties coding in .NET without it. Take web services for example. Piece of cake to create one with the IDE, very difficult without it.

Myself, I code in both Java and .NET. My preference differs according to project and requirements, I am no evangelist to either company, I just consider them tools. There is no substitute to good analysis and design.

Sorry for the long text!

Stormrider said...

interensting points, thanx to all! :)

vpapanik said...

Όταν κάποιοι φωστήρες της borland μετέτρεψαν το Delphi 7 σε Delphi 2005/6 καθ εικόνα και ομοίωση του VB.NET αποφάσισα πλεον να μην αλλάξω ΠΟΤΕ το Delphi 7. Πολλά κακα μας έχει φέρει η MS...

Ψηφιακά Οχυρωμένος said...

Δε ξέρω για το eclipse, αλλά όσον αφορά τη Java: NetBeans και πάλι Netbeans! Ίσως στο κομμάτι του GUI να είναι λίγο "σπαστικό" με τα aligmnents που κάνει στα components μετά απο δική του πρωτοβουλία, αλλά η ανάπτυξη κώδικα, σε συνδυασμό με τα official και unofficial forums που μπορούν να σου λύσουν από τα πιο απλά μέχρι τα πιο σύνθετα προβλήματα, είναι παιχνιδάκι.