Προς το περιεχόμενο

functional programming


tr3quart1sta

Προτεινόμενες αναρτήσεις

  • Απαντ. 85
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

To scikit  που κοίταξα...δεν μπορεί να το δει κανείς ως functional programming..είναι πρόσθετο για διαγράμματα. (σκέφτηκα να το βάλω στο linux αλλά ήθελε πολλές εγκαταστάσεις...και τις αποφεύγω)

 

 

Ναι για αυτό λέω...Αλλά εξήγησε, γιατί δεν έχω και το αλάθητο. Από του χρόνου θα πάω για Πάπας.

 

Αδερφέ μου.. τι αν σου εξηγήσω; Αφού σκεφτόσουν "να το βάλεις στο Linux αλλά ήθελε πολλές εγκαταστάσεις".

 

Χώρια ότι "θα πας για Πάπας", οπότε άσ' το για τότε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν βάζω σε 64 bit ρουτίνες για 32, ας τις είχε αγκαζέ, χτισμένες στατικές βιβλιοθήκες. Αυτή η σαλάτα δε μου αρέσει. Αν γίνω Πάπας θα τη κατάργησω. Να περιμένεις...τέκνο μου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν βάζω σε 64 bit ρουτίνες για 32, ας τις είχε αγκαζέ, χτισμένες στατικές βιβλιοθήκες. Αυτή η σαλάτα δε μου αρέσει. Αν γίνω Πάπας θα τη κατάργησω. Να περιμένεις...τέκνο μου.

ΟΚ. Ό,τι πεις. Απλά, φαντάζομαι ότι κατάλαβες πως δεν ξέρεις καν για τι μιλάς και το επιβεβαιώνεις σε κάθε post.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σοβαρά; Αφού σου ζήτησα να εξηγήσεις την αρχική σου δήλωση...και βρίσκεις προφάσεις.....

Αναφέρθηκες στη ταχύτητα και όχι στο στυλ. Μάλλον εκεί είναι το λάθος μου.. Αργώ για Πάπας...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σοβαρά; Αφού σου ζήτησα να εξηγήσεις την αρχική σου δήλωση...και βρίσκεις προφάσεις.....

Και πέσαμε σε loop...

 

Αδερφέ, μετά από αυτά που έγραψες δεν υπάρχει λόγος να σου εξηγήσω κάτι. Αφού ΕΣΥ είπες:

 

To scikit  που κοίταξα...δεν μπορεί να το δει κανείς ως functional programming..είναι πρόσθετο για διαγράμματα. (σκέφτηκα να το βάλω στο linux αλλά ήθελε πολλές εγκαταστάσεις...και τις αποφεύγω)

 

Άρα, και επειδή είμαι ευγενικός, δεν θα κάτσω να σου αποδείξω τα διάφορα που συνεπάγονται από το γεγονός ότι α) έγραψες το παραπάνω, β) ό,τι έγραψες είναι ικανό να κάνει κάποιον που ξέρει για τι λέω να πετάξει blue screen, και γ) αφού γράψεις ό,τι γράψεις ρωτάς άλλους "τι λάθος έκανα".

 

 

Αυτό και κλείνω με το θέμα...

 

 

Εάν κανείς (άλλος) ξέρει να μου απαντήσει για ανάλογα των frameworks/libs που παρέθεσα σε κάποια αμιγώς functional γλώσσα και ταυτόχρονα να ξέρει διαφορές σε επιδόσεις, θα ήταν καλό. Ευχαριστώ προκαταβολικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

H ιδεολογία πίσω απο το functional programming είναι ο προγραμματισμός με την χρήση functions όπως χρησιμοποιούνται απο μαθηματικά δηλαδή , δίνεις δεδομένα παίρνεις δεδομένα.

 

Αυτο πρακτικά σημαίνει οτι τα δεδομένα μπαινουν μόνο ως function arguments και βγαίνουν ως function return . Οτιδήποτε άλλο δεν επιτρέπεται. Αυτό επίσης σημαίνει, όχι globals, instance and class variables κτλ τα οποία δεν περιλαμβάνονται στα arguments. Έτσι καθε φόρα που δίνεις τα ίδια arguments σε ένα  function παίρνεις ακριβώς το ίδιο return. Εννοίται λοιπόν ότι οποιαδήποτε functions εξαρτάται και σε εξωτερικά δεδομένα δεν είναι function συμφωνα με την ιδεολογία του functional programming αλλά side effect.

 

Οπότε αποφεύγουμε ότι επιρεάζει ή δημιουργεί state.

 

Το πρόβλημα εδώ είναι οτι η πραγματικότητα είναι dysfunctional και σε πάρα πολλές περιπτώσεις εξαρτόμαστε απο το state.

 

Οπως λένε οι προγραμματιστές ένας υπολογιστής χωρίς side effects είναι ένας υπολογιστής που δουλεύει ως σόμπα.

 

Ο python γενικά είναι το μαύρο χάλι οσον αφορά το functional programming, ο λόγος ήταν πολιτικός, το functional programming αν και καθόλο καινούργιο σαν ιδέα είναι πρόσφατη μόδα, πολλοι cpython devs το θέλαν μέσα στην γλώσσα ο δημιουργός της γλώσσας όμως δεν το ήθελε και έτσι προεκυψε ένας συμβιβασμός στυλ μουσακά.

 

Το πρόβλημα που προσπαθεί να λύσει το functional programming είναι η εύκολη παρακολούθηση της ροης της αλλαγής των δεδομένων. Προσωπικά θεωρώ ότι ειναι ένα πρόβλημα που λύνεται πολυ εύκολα με ένα πολυ δυνατό IDE.

 

Και μιλαω εκ πείρας μιας και χρησιμοποιώ Pharo την πιο καθαροαιμη αντικειμενοστρεφη γλώσσα που υπάρχει τουλάχιστον απο όσο ξέρω και είναι τιγκα στο state και τα side effects. Αλλά δεν είναι θεμα γιατι έχει Inpsectors και debugger που είναι τόσο δυνατοί που κάνουν εύκολο το track of data changes.

 

Επίσης πολλές απο τις αρχές του functional programming μπορουν να εφαρμοστούν σε ένα βαθμό και στον αντικειμενονστρεφή προγραμματισμό .

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το πρόβλημα που προσπαθεί να λύσει το functional programming είναι η εύκολη παρακολούθηση της ροης της αλλαγής των δεδομένων. Προσωπικά θεωρώ ότι ειναι ένα πρόβλημα που λύνεται πολυ εύκολα με ένα πολυ δυνατό IDE.

 

Με αυτό που γράφεις εδώ φαίνεται ότι δεν έχεις καταλάβει τα προβλήματα που λύνει το functional programming vs OOP. Τo IDE δεν έχει καμία απολύτος σχέση.

 

Επίσης, παρότι το ιδανικό θα ήταν να έχεις pure functions (no side effects), προφανώς αυτό δεν γίνεται με τις σημερινές ανάγκες. Παρ'ολα αυτά, functional γλώσσες (όπως η Clojure) σου δίνουν τον τρόπο να μειώσεις το state όσο το δυνατόν γίνεται αλλά και να έχεις κάποιο state να μπορεί προφυλάσεται το ίδιο το πρόγραμμα από πιθανά προβλήματα που δημιουργούντε από το concurrency (βλέπε Clojure STM).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με αυτό που γράφεις εδώ φαίνεται ότι δεν έχεις καταλάβει τα προβλήματα που λύνει το functional programming vs OOP. Τo IDE δεν έχει καμία απολύτος σχέση.

 

Επίσης, παρότι το ιδανικό θα ήταν να έχεις pure functions (no side effects), προφανώς αυτό δεν γίνεται με τις σημερινές ανάγκες. Παρ'ολα αυτά, functional γλώσσες (όπως η Clojure) σου δίνουν τον τρόπο να μειώσεις το state όσο το δυνατόν γίνεται αλλά και να έχεις κάποιο state να μπορεί προφυλάσεται το ίδιο το πρόγραμμα από πιθανά προβλήματα που δημιουργούντε από το concurrency (βλέπε Clojure STM).

 

ευπρόσδεκτος είσαι να μου εξηγήσεις τι δεν έχω καταλάβει ως προς τα προβλήματα που λύνει το functional programming. Ομολογω οτι το χρησιμοποίησα σχετικά λίγο όταν μάθαινα comon lisp. 

 

Ως προς το IDE, το IDE έχει σχέση με τα πάντα, απο το πως γράφεις κωδικα μέχρι να επιρεάζει την σύνταξη της ίδιας της γλώσσας. Δεν υπάρχει τομέας που το IDE δεν μπορει να επέμβει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ευπρόσδεκτος είσαι να μου εξηγήσεις τι δεν έχω καταλάβει ως προς τα προβλήματα που λύνει το functional programming. Ομολογω οτι το χρησιμοποίησα σχετικά λίγο όταν μάθαινα comon lisp. 

 

Ως προς το IDE, το IDE έχει σχέση με τα πάντα, απο το πως γράφεις κωδικα μέχρι να επιρεάζει την σύνταξη της ίδιας της γλώσσας. Δεν υπάρχει τομέας που το IDE δεν μπορει να επέμβει.

 

Θα σου πρότεινα να κοιτάξεις μια πιο μοντέρνα functional γλώσσα όπως η Clojure και αν θες να εμβαθύνεις μπορείς να ξεκινήσεις με αυτά εδω τα βιβλία που θα σου λύσουν σχετικές απορίες και θα σου δείξουν και πως δουλεύει η συγκεκριμένη:

Το κεφάλαιο 6.1 στο Clojure in Αction περιγράφει τα προβλήματα του state και τον τρόπο με τον οποίο μια functional γλώσσα τα λύνει. Θα σε παρότρυνα να ρίξεις μια ματιά, ίσως βρείς γενικότερο ενδιαφέρον μιας και έχεις ασχοληθεί και με Lisp. Η Lisp, παρότι είναι η πρώτη και απο εκεί εμπνευστήκαν οι υπόλοιπες, δεν παύει να είναι μια γλώσσα που φτιάχτηκε πριν 50 χρόνια οπότε δεν είναι και η καλύτερη επιλογή για να λύσεις σημερινά προβλήματα με functional τρόπο.

 

Τo IDE είναι απλά ένα εργαλείο για να σε βοηθήσει να κάνεις την δουλειά σου πιο εύκολα, δεν αλλάζει τον τρόπο που δουλεύει μια γλώσσα. Aυτό που σίγουρα λείπει από τις μοντέρνες functional γλώσσες είναι καλοί debuggers. Παίζεις κυρίως με print αλλά σε γενικές γραμμές λόγο της φύσης του προγράμματος (μικρές functions) βρίσκεις το πρόβλημα γρήγορα. Παρ'ολα αυτά σίγουρα θα βοηθούσε.

 

 

OK όλα αυτά... functional language based libraries/framework for machine learning and/or pattern recognition?

 

Για machine learning, δυστυχώς καμία σοβαρή επιλογή από όσο γνωρίζω. Η python και η LUA είναι οι πιο popular σε αυτό το θέμα από όσο ξέρω και λίγο η Java επίσης. Η Clojure παίζει πάνω απο JVM που σημαίνει ότι ένα java library μπορείς να το κάνεις import αλλά προφανώς δεν θα ειναι functional implementation, το machine learning κομμάτι τουλάχιστον. Το υπόλοιπο πρόγραμμα σου θα είναι αλλά η ουσία όχι.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Θα σου πρότεινα να κοιτάξεις μια πιο μοντέρνα functional γλώσσα όπως η Clojure και αν θες να εμβαθύνεις μπορείς να ξεκινήσεις με αυτά εδω τα βιβλία που θα σου λύσουν σχετικές απορίες και θα σου δείξουν και πως δουλεύει η συγκεκριμένη:

Το κεφάλαιο 6.1 στο Clojure in Αction περιγράφει τα προβλήματα του state και τον τρόπο με τον οποίο μια functional γλώσσα τα λύνει. Θα σε παρότρυνα να ρίξεις μια ματιά, ίσως βρείς γενικότερο ενδιαφέρον μιας και έχεις ασχοληθεί και με Lisp. Η Lisp, παρότι είναι από τι πρώτες και απο εκεί εμπνευστήκαν οι υπόλοιπες, δεν παύει να είναι μια γλώσσα που φτιάχτηκε πριν 50 χρόνια οπότε δεν είναι και η καλύτερη επιλογή για να λύσεις σημερινά προβλήματα με functional τρόπο.

 

 

Χλωμό να σκάσω λεφτά για βιβλίο για να πάρω μια απάντηση σε κάτι που ήδη γνωρίζω

 

 

Τo IDE είναι απλά ένα εργαλείο για να σε βοηθήσει να κάνεις την δουλειά σου πιο εύκολα, δεν αλλάζει τον τρόπο που δουλεύει μια γλώσσα. Aυτό που σίγουρα λείπει από τις μοντέρνες functional γλώσσες είναι καλοί debuggers. Παίζεις κυρίως με print αλλά σε γενικές γραμμές λόγο της φύσης του προγράμματος (μικρές functions) βρίσκεις το πρόβλημα γρήγορα. Παρ'ολα αυτά σίγουρα θα βοηθούσε.

 

Τα πάντα μπορεί να κάνει ένα IDE. Το IDE που δουλεύω εγώ , Pharo, όχι μόνο μπορεί να αλλάξει την σύνταξη της γλώσσας αλλά ακόμα και πιο Low level μπορει να πάει και να αλλάξει και το VM σε επίπεδο γλώσσα μηχανής. Το ανάλογο είναι και η Lisp μεσω emacs slime το οπόιο χρησιμοποιεί και η Clojure.

 

Η Lisp δεν είναι γλώσσα προγραμματισμού , είναι οικογένεια γλωσσών προγραμματισμου στην οποία ανήκει και η Clojure. Και η Clojure δεν είναι καν η πιο μοντέρνα Lisp, Lisps ξεπροβάλλουν σαν τα μανιτάρια επειδη έχει τόσο απλή σύνταξη .

 

Επίσης η Clojure δεν είναι μόνο functional programming , έχει πολλά άλλα μεσα της όπως concurency, data immutability και πολλά άλλα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@kilon, οκ εσύ ξέρεις. Ελπίζω κάποιος άλλος να ενδιαφερθεί και να μπει στον χορό του functional programming γιατί είναι πάρα πολύ ενδιαφέρον.

 

@groot, no problem

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@kilon, οκ εσύ ξέρεις. Ελπίζω κάποιος άλλος να ενδιαφερθεί και να μπει στον χορό του functional programming γιατί είναι πάρα πολύ ενδιαφέρον.

 

@groot, no problem

 

τα πάντα ειναι ενδιαφέρον όταν ασχολήσε και ψάχνεις. Με την Clojure έχω ασχοληθεί ελάχιστα, είναι ωραία γλώσσα αλλά με ξενέρωσε που δεν είναι συμβατή με τις βιβλιοθήκες της Java ώστε να τις χρησιμοποιείς outside the box. Βέβαια όχι ότι ειμαι φαν της Java.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...