Skeftomilos Φεβρουάριος 25, 2005 #61 Κοινοποίηση Φεβρουάριος 25, 2005 Η γλώσσα στη οποία αναφέρεσαι Unreal είναι μάλλον κάποια από τις καθιερωμένες functional γλώσσες, δηλαδή Lisp, Scheme και Haskell. Παρακάτω είναι ο αλγόριθμος quick-sort σε Haskell: qsort [] = []qsort (pivot:tail) = qsort left ++ [pivot] ++ qsort right where left = [y | y <- tail, y < pivot] right = [y | y <- tail, y >= pivot] Αν δεν έχεις ξαναδεί κώδικα functional γλώσσας, θα πρέπει να σου φαίνεται πολύ παράξενος. Αντίθετα από τις imperative (προστακτικές) γλώσσες στις οποίες έχουμε συνηθίσει και θεωρούμε δεδομένες, εδώ δεν ελέγχεις τον υπολογιστή απευθύνοντας διαταγές (κάνε, τύπωσε, αντέγραψε, σβήσε, κ.λπ.). Το πρόγραμμα αποτελείται από μία high level περιγραφή του τι πρέπει να γίνει, και όχι του πώς. Με λίγα λόγια εμπιστεύεσαι τον compiler ότι μπορεί να ερμηνεύσει σωστά τις προθέσεις σου και να φέρει σε πέρας την εργασία, χωρίς να χρειαστεί η δική σου λεπτομερής καθοδήγηση. Ο όρος functional σημαίνει το εξής: όλο το πρόγραμμα είναι στην πραγματικότητα μία μεγάλη εξίσωση (συνάρτηση, function), και ο compiler αναλαμβάνει να βρει τη λύση της εξίσωσης. Αυτή αποτελεί και το αποτέλεσμα του προγράμματος. Η μεταφορά πρωτοβουλιών και ευθυνών από τον προγραμματιστή στον compiler μπορεί στην αρχή να φαίνεται σαν κάτι αρνητικό, σαν μείωση του ελέγχου πάνω στη λογική της εκτέλεσης. Στην πραγματικότητα συμβαίνει ακριβώς το αντίθετο. Ο προγραμματιστής ελευθερώνεται από τη σκλαβιά της μικροδιαχείρησης και έχει περισσότερο χρόνο να ασχοληθεί με τις ανώτερες λειτουργίες του προγράμματος. Το μειονέκτημα των functional γλωσσών ήταν στην αρχή η πολύ κακή απόδοση των προγραμμάτων, καθώς και ο μεγάλος όγκος σε bytes των εκτελέσιμων αρχείων που έδιναν οι τότε compilers. Αυτό ήταν ένα πρακτικό πρόβλημα υλοποίησης, και δεν είχε σχέση με την ποιότητα των γλωσσών αυτών καθαυτών. Σήμερα τα πράγματα είναι πολύ διαφορετικά, μιάς και έχουν φτιαχτεί εξαιρετικοί compilers για όλες αυτές τις γλώσσες. Βέβαια εξακολουθεί να ισχύει ότι το τέλειο πρόγραμμα σε C είναι ταχύτερο από το τέλειο πρόγραμμα σε Lisp, αλλά στην πράξη ο μέσος Lisp προγραμματιστής θα φτιάξει ταχύτερο και πιο αξιόπιστο πρόγραμμα από το μέσο C προγραμματιστή, και μάλιστα σε κλάσμα του χρόνου που θα χρειαστεί ο δεύτερος. Τεκμηριωμένη απόδειξη για τον παραπάνω ισχυρισμό μπορείτε να βρείτε στο έγγραφο Lisp as an Alternative to Java (PDF, 102K). Όσοι τυχαίνει να είστε fun της Java παρακαλώ μην το διαβάσετε γιατί θα μελαγχολήσετε! Lisp : Η παλαιότερη σε χρήση functional γλώσσα. Ογκώδης και περίπλοκη, ακατάλληλη για αρχάριους. Scheme : Μινιμαλιστική εκδοχή της Lisp, χωρίς να χάνει σε δύναμη. Εύκολη στην εκμάθηση και με φανατικούς οπαδούς σε όλο τον κόσμο. Haskell : Η πιο ισορροπημένη από τις τρεις. Σύγχρονης σχεδίασης, κομψή, έξυπνη, αριστούργημα. Το μέλλον της ανήκει. Προσωπικά δε γνωρίζω καμία από τις παραπάνω γλώσσες. Έχω ωστόσο κατεβάσει compilers και εκπαιδευτικό υλικό, και έχω βάλει σκοπό να μάθω κάποια απ' όλες (ίσως και δύο!). Μάλλον πρέπει να κόψω λίγο το Internet και να στρωθώ στο διάβασμα! Κάπου διάβασα ότι στις ΗΠΑ (όχι στην Αμερική, είναι λάθος ο όρος) πληθαίνουν οι εταιρίες που προσθέτουν τη γνώση μίας τουλάχιστον functional γλώσσας στα τυπικά προσόντα που πρέπει να πληρεί ένας υποψήφιος software developer. Link to comment Share on other sites More sharing options...
unreal Φεβρουάριος 25, 2005 #62 Κοινοποίηση Φεβρουάριος 25, 2005 δεν ενοουσα την Lisp (ετσι τουλαχιστον μου ειπαν) αλλα απ οτι βλεπω το κανει και αυτη αυτο! μήπως εχεις να μου προτείνεις καποιο ξαλο e-book για αυτες τις γ,ωσσες να διαβασω? με ενδιαφέρει! ευχαριστώ Link to comment Share on other sites More sharing options...
dorus Φεβρουάριος 25, 2005 #63 Κοινοποίηση Φεβρουάριος 25, 2005 by the way ευχαριστω για το κατακεραυνωμα για την νοημοσύνη μου κτλ. Αν και εχω φιλαρακια ΑΜΕΑ παντα μαρεσει νακουω pollitically correct τυπους να μου την λενετην εβγαλα παντως την εικονα γιατι δεν εννουσα κατι κακο......για τα παιδια με ειδικες αναγκες.τεσπα. η ΧΑΣΚΕΛ ειναι όντως γλωσσα με μελλονπάντως δεν ειναι δικαιο να συγκρίνουμε μηλα με πορτοκαλια ή C# και JavaScript. απο γλώσσες Script πάντως η JavaScript ειναι απο τισ πιο χρήσιμες . Link to comment Share on other sites More sharing options...
Kanonieris Φεβρουάριος 25, 2005 #64 Κοινοποίηση Φεβρουάριος 25, 2005 Αρχική απάντηση από abarth packo νομιζω ο φιλος μας λεει το πολυ απλο και σωστο κατα την αποψη μου, οτι ΚΑΜΙΑ γλωσσα δεν ειναι ΑΣΟΒΑΡΗ ...(μη σοβαρη, 'χαζη') ... απλα υπαρχουν γλωσσες για να κανεις διαφορα πραγματα, γλωσσες απυθμενες, περιορισμενες, με προσανατολισμο ή χωρις κλπ κλπ... ωστοσο ολες ειναι καλες.... πολυ καλες... αυτος που θα τις αξιοποιησει καταλληλα ομως ειναι αυτος που θα δωσει αξια συγκεκριμενη η οχι .... Πολύ σώστα.Δεν χρειάζεται να κάνουμετα πράγματα τόσο σύνθετα χώρις λόγο. Link to comment Share on other sites More sharing options...
Skeftomilos Φεβρουάριος 26, 2005 #65 Κοινοποίηση Φεβρουάριος 26, 2005 Σχετικά με την εικόνα: δεν ήταν ενοχλητικό το θέμα - κάθε άλλο - αλλά το κείμενο που τη συνόδευε. Αν βγουν τα γράμματα εγώ δεν έχω καμιά απολύτως αντίρρηση να ξαναμπεί η εικόνα στη θέση της. Κοιτάζω στο web για Scheme αλλά δε βρίσκω τίποτα αξιόλογο πέρα από ένα FAQ. Για Haskell υπάρχει ένα αρκετά καλό tutorial: Yet Another Haskell Tutorial (PDF 198 σελ. 632K). Για Lisp κάτι καλό και απλό που βρήκα είναι το LISP Basics (PDF 12 σελ. 121K). Μην ψάξεις για το επίσημο specification, είναι κοντά στις 1,300 σελίδες! Link to comment Share on other sites More sharing options...
feanorian82 Φεβρουάριος 26, 2005 #66 Κοινοποίηση Φεβρουάριος 26, 2005 Για LISP αν θέλεις κοίτα κι εδώ:http://dtps.unipi.gr/index.php?page=downloads&cat=43έχει compiler και ένα αρκετά καλό tutorial. Link to comment Share on other sites More sharing options...
unreal Φεβρουάριος 26, 2005 #67 Κοινοποίηση Φεβρουάριος 26, 2005 ευχαριστώ παιδια. μολις τα κατεβασα. παω να τα δω! να ρωτισω...για τιν PROLOG τι γνωμη εχετε? δνε εχω ιδεα τι παιζει με αυτην την γλωσσα! Link to comment Share on other sites More sharing options...
Skeftomilos Φεβρουάριος 26, 2005 #68 Κοινοποίηση Φεβρουάριος 26, 2005 Χμ, δε χάνεις και τίποτα! Εκτός αν σ'ενδιαφέρει η τεχνητή νοημοσύνη ή η γλωσσολογία. Το όνομα βγαίνει από το Programmation en Logique (Logic Programming). Μία εύπεπτη περιγραφή της λειτουργίας αυτής της ιδιόρρυθμης γλώσσας μπορείς να βρείς στο σχετικό λήμμα της Wikipedia. Ίσως να υπάρχουν και καλύτερες πηγές, αλλά τα άρθρα της Wikipedia προσφέρουν μία καλή γνωριμία με τις διάφορες γλώσσες. Τα περισσότερα που ξέρω για όλες αυτές τις εξωτικές γλώσσες τα έχω διαβάσει εκεί. Lisp, Scheme, Haskell, Όλες οι γλώσσες. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.