Σελίδα 1 από 2

Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 05:49
από parafrwn
Το ερώτημα είναι κάπως ξεκάθαρο. Γιατί να ασχοληθεί κανείς με κάποια καθαρά συναρτησιακή γλώσσα (πχ. scheme, lisp, haskell), ακόμη και αν δεν πρόκειται να γράψει εφαρμογές σ'αυτή την γλώσσα;

Αξίζει την επένδυση του χρόνου;
SpoilerShow
Εγώ νομίζω πως ναι, ίσα ίσα για τον τρόπο σκέψης που αναπτύσσεις. Άσε που ειδικά στον χώρο των δεδομένων έχουν αρχίσει να εισέρχονται δυνατά (clojure, scala). Διαβάζω τελευταία το "Little Schemer", με ανοιχτό τον text editor και το terminal, και έχω να πω πως γαμάει το βιβλιαράκι.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 07:34
από enaon
Εγώ δεν ξέρω καμία γλώσσα, και νομίζω οι μηχανές θα φάνε πρώτα αυτους που ξέρουν συναρτησιακές, μετά τους υπόλοιπους, ακόμα και basic. Εσύ ξέρεις είπαμε; :003:

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 07:58
από parafrwn
enaon έγραψε:
17 Μάιος 2018, 07:34
Εγώ δεν ξέρω καμία γλώσσα, και νομίζω οι μηχανές θα φάνε πρώτα αυτους που ξέρουν συναρτησιακές, μετά τους υπόλοιπους, ακόμα και basic. Εσύ ξέρεις είπαμε; :003:
:lol::lol::lol:

Αν ακούει ο διαδικτυακός overlord, η μελλοντική AI που θα διαβάζει όσα έχουν γραφτεί και θα αποφασίζει ποιον να φάει και ποιον όχι: δεν ξέρω τίποτα, απλά πετάω καμιά μαλακία μπας και τσιμπήσε κανά κομενάκι

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 08:03
από enaon
parafrwn έγραψε:
17 Μάιος 2018, 07:58
κομενάκι
έτσι ναι, αλλάζουμε και σε κόνορ αν ειναι το νικ :003:

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:17
από Stalker
Worst case scenario θα γίνεις καλύτερος προγραμματιστής αφού οι functional γλώσσες επιβάλλουν κάποια best practices από κατασκευής, best case θα έχεις το πόδι στην πόρτα αν παίξει κάποιο project με big data ή οικονομικά ή machine learning ή όλα μαζί το οποίο να μπορείς να χρησιμοποιήσεις σαν εφαλτήριο για να αυξήσεις τις αποδοχές σου.

Οπότε αν έχεις ώρα και όρεξη μάθε.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:20
από Yochanan
Πείτε και σε μας βρε παιδγιά τι είναι οι συναρτησιακες γλώσσες; Εχει σχέση με low level/high level (τι ακριβώς είναι κι αυτά;);

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:24
από Dwarven Blacksmith
Δεν ξέρω αλλα εγώ σε κάποια φάση ήθελα να μάθω μια ασυναρτησιακή γλώσσα για να συννενοουμαι με τη μπλουρόουζ.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:25
από Yochanan
Πάπσε σατανά!!!

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:25
από Nameless Ghoul
parafrwn έγραψε:
17 Μάιος 2018, 05:49
Το ερώτημα είναι κάπως ξεκάθαρο. Γιατί να ασχοληθεί κανείς με κάποια καθαρά συναρτησιακή γλώσσα (πχ. scheme, lisp, haskell), ακόμη και αν δεν πρόκειται να γράψει εφαρμογές σ'αυτή την γλώσσα;

Αξίζει την επένδυση του χρόνου;
SpoilerShow
Εγώ νομίζω πως ναι, ίσα ίσα για τον τρόπο σκέψης που αναπτύσσεις. Άσε που ειδικά στον χώρο των δεδομένων έχουν αρχίσει να εισέρχονται δυνατά (clojure, scala). Διαβάζω τελευταία το "Little Schemer", με ανοιχτό τον text editor και το terminal, και έχω να πω πως γαμάει το βιβλιαράκι.
Αν δεν πρόκειται να γράψεις ποτέ σε αυτή τη γλώσσα, ποτέ δεν αξίζει.

Από την άλλη, κάποιες γλώσσες αξίζει και να τις μάθεις, και να γράψεις. Ζητιούνται πάρα πολύ. Τελευταία της μόδας είναι η clojure (είναι δισέγγονο της lisp), έχει πολύ πέραση ειδικά για data science. Και είναι καλή ιδέα γιατί σε βοηθάει να αναπτύξεις έναν διαφορετικό τρόπο σκέψης που σε ορισμένες εφαρμογές είναι πολύ δυνατός.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:26
από parafrwn
Yochanan έγραψε:
17 Μάιος 2018, 10:20
Πείτε και σε μας βρε παιδγιά τι είναι οι συναρτησιακες γλώσσες; Εχει σχέση με low level/high level (τι ακριβώς είναι κι αυτά;);
In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions[1] or declarations[2] instead of statements. In functional code, the output value of a function depends only on the arguments that are passed to the function, so calling a function f twice with the same value for an argument x produces the same result f(x) each time; this is in contrast to procedures depending on a local or global state, which may produce different results at different times when called with the same arguments but a different program state. Eliminating side effects, i.e., changes in state that do not depend on the function inputs, can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming.
https://en.wikipedia.org/wiki/Functional_programming

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:31
από Yochanan
Eυχαριστώ πολύ για το explain parafrwn! Δεν κατάλαβα τι διαφορά εχει το declaration από το statement. Πώς γίνεται ενα f(x) να δινει διαφορετικο αποτέλεσμα για ίδιο χ??

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:41
από Nameless Ghoul
Yochanan έγραψε:
17 Μάιος 2018, 10:31
Eυχαριστώ πολύ για το explain parafrwn! Δεν κατάλαβα τι διαφορά εχει το declaration από το statement. Πώς γίνεται ενα f(x) να δινει διαφορετικο αποτέλεσμα για ίδιο χ??
Γίνεται όταν ο κώδικας της συνάρτησης διαβάζει και χρησιμοποιεί την τιμή μιας μεταβλητής που έχει οριστεί και μπορεί να αλλαχτεί έξω από τη συνάρτηση, π.χ:

- Global variable
- Class variable (αν η συνάρτηση είναι class member function)

Αυτά στις συναρτησιακές γλώσσες απαγορεύονται, και δεν υποστηρίζονται. Τέτοιου είδους μεταβλητές στην ουσία περιγράφουν την κατάσταση του συστήματος (state variables). Όμως σε μία αυστηρά συναρτησιακή γλώσσα όλες οι συναρτήσεις είναι stateless entities.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:42
από Yochanan
A, that makes sense! Eυχαριστώ πολύ φίλε Ghoul. Tώρα το πιασα. Είσαι ωραίος!

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:44
από Stalker
Μια ποιο tl;dr: εκδοχή:

Οι συναρτήσεις χρησιμοποιούνται σαν μεταβλητές και τα pipelines σαν συναρτήσεις. Το state κρατείται στο ελάχιστο ενώ δεν επιτρέπεται να ξαναδώσεις τιμή σε μια μεταβλητή μετά τον ορισμό της. Όλα αυτά έχουν πολύ ενδιαφέρουσες συνέπειες όπως ότι π.χ. τώρα το πρόγραμμά σου είναι βασικά μια σειρά από transformations, δημιουργώντας ένα πιο ιδιοσυγκρατικό προγραμματιστικό στυλ, που allegedly οδηγεί σε πιο αποτελεσματικό γράψιμο κώδικα αφού πολλά από τα τυπικά bugs αποκλείονται εξ ορισμού (π.χ. δεν έχει νόημα το null) ενώ αν συγυρίσεις τα προαναφερθέντα transformations μπορείς να κάνεις και την λογική του προγράμματος ελέγξιμη σε compile time, όχι μόνο την εγκυρότητα της σύνταξης.

Επίσης η έλλειψη έμφασης στο state ευνοεί τον ανώδυνο παραλληλισμό.

Re: Γιατί να μάθει κάποιος κάποια συναρτησιακή γλώσσα;

Δημοσιεύτηκε: 17 Μάιος 2018, 10:50
από Yochanan
Ευχαριστώ Stalker και καλωσήρθες στο πχώρουμ! Αν και να πω την αμαρτία μου πιο βατό μου φάνηκε το explain του Ghoul - το δικό σου εικάζω απευθύνεται σε ανώτερο γνωστικό επίπεδο από το δικό μου! Ενδιαφέροντα πράματα αυτά σε κάθε περίπτωση.