Συζήτηση περί του συναρτησιακού προγραμματισμού

...συζητήσεις περί τεχνολογίας για hardware, software, υπηρεσίες, κλπ (για ubuntu ... στο Γενικά)

Συντονιστές: Geochr, ubuderix

Συζήτηση περί του συναρτησιακού προγραμματισμού

Δημοσίευσηαπό mithanbabag » 03 Φεβ 2015, 07:43

Ανοίγω αυτό το thread, για να γνωρίσουμε και να συζητήσουμε τα περί του συναρτησιακού προγραμματισμού.

Οι περισσότεροι από εσάς που έχετε ασχοληθεί με τον προγραμματισμό, συνήθως δίνετε μία ακολουθία από εντολές οι οποίες θα πρέπει να εκτελεστούνε με μία συγκεκριμένη σειρά. Χρησιμοποιείτε μεταβλητές οι οποίες αποθηκεύουν προσωρινά μια τιμή που πιθανότατα θα αλλάξει κάποια στιγμή. Δημιουργείτε βρόγχους, ώστε να επαναλάβετε ορισμένες εντολές πολλές φορές. Ίσως κατασκευάζετε αντικείμενα, για να δώσετε νέο νόημα στα δεδομένα σας, ακολουθώντας το προγραμματιστικό παράδειγμα του αντικειμενοστρεφούς προγραμματισμού.

Υπάρχουν, όμως, κι άλλες μεθόδοι με τις οποίες μπορεί κανείς να προσεγγίσει ένα υπολογιστικό πρόβλημα. Στον συναρτησιακό προγραμματισμό, λοιπόν, αντί για αντικείμενα στο επίκεντρο βρίσκονται οι μαθηματικές συναρτήσεις. Αυτές οι συναρτήσεις εστιάζουν κυρίως στο "τι" θέλουμε να πετύχουμε και όχι στο "πως" θέλουμε να το πετύχουμε.
mithanbabag
babeTUX
babeTUX
 
Δημοσιεύσεις: 1
Εγγραφή: 03 Φεβ 2015, 07:42
Εκτύπωση

Συζήτηση περί του συναρτησιακού προγραμματισμού

Δημοσίευσηαπό abramis » 03 Φεβ 2015, 08:24

προσωπικά δεν με πολυνοιάζει (προς το παρών) οι συναρτήσεις και προτιμώ να τα βάζω όλα σε μια main και να τελειώνω. για C μιλάω. κι αυτό γτ δεν είναι ο κώδικας μου κομμάτι κάποιου άλλου μεγαλύτερου κώδικα που ναι κοινός, δλδ δεν θα το δει και κανένας. είμαι της άποψης ότι ναι καλές οι συναρτήσεις και καλό το "διαίρει και κυρίευε"¨αλλά όταν τον κώδικα θα το δει και κάποιος άλλος, και θα πρέπει να δουλέψει πάνω σ' αυτόν. υπάρχει η άποψη ότι και για τον ίδιο είναι καλό να γράφεις με κάποιους κανόνες κώδικα κτλπ ώστε μετά από καιρό να μπορείς να βγάλει άκρη τι είχες κάνει ή να ναι πιο εύκολο να χρησιμοποιήσεις ένα αυτόνομο κομμάτι του κώδικα σου σε κάποιο άλλο πρόγραμμα που ενδεχομένως να χρειαστείς μια παρόμοια λειτουργικότητα. όλα φυσικά είναι σχετικά και εξαρτάται και απ' το μέγεθος του κώδικα δλδ δεν είναι ίδιο ένα πρόγραμμα 100 σειρών κώδικα με ένα 10000... όπως και να χει εγώ βρίσκω άσκοπο να ακολουθώ κανόνες όταν αυτοί με κάνουν πιο πολύπλοκη τη δουλειά μου χωρίς να συντρέχει εξωγενής λόγος.
1 Γνώσεις Linux: Μέτρια┃ Προγραμματισμού: Μέτρια ┃ Αγγλικών: Μέτρια
2 Ubuntu 18.04 bionic 4.18.0-16-generic 64bit (el_GR.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Quad CPU Q8300 2.50GHz ‖ RAM 3943 MiB ‖ Gigabyte G31M-S2L
4 Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XTX [Radeon R7 260X/360] [1002:6658] {radeon}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02)
laptop:
Spoiler: show
Ubuntu 18.04 bionic 4.15.0-46-generic 64bit(GNOME gnome),Windows 10, Lenovo B50-80, Intel Celeron 3205U @ 1.50GHz, RAM 7902 MiB, Intel Broadwell-U Graphics [8086:1606] {i915}
Άβαταρ μέλους
abramis
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 746
Εγγραφή: 02 Αύγ 2011, 03:01
Τοποθεσία: Θεσ/νίκη
Launchpad: goldmetal
Εκτύπωση

Συζήτηση περί του συναρτησιακού προγραμματισμού

Δημοσίευσηαπό Ilias95 » 03 Φεβ 2015, 22:53

@abramis
Άλλο ο συναρτησιακός προγραμματισμός και άλλο οι συναρτήσεις στις οποίες αναφέρεσαι εσύ.
Το functional programming είναι programming paradigm και δεν έχει σχέση με τον procedural προγραμματισμό ή τον object-oriented.

Spoiler: show
Επίσης οι συναρτήσεις δεν είναι μόνο για την οργάνωση του κώδικα, αλλά -κυρίως- για την αποφυγή επαναλήψεων.
Πες ότι θες στο μικρό σου πρόγραμμα των 10 γραμμών να βρεις τον ελάχιστο ακέραιο πέντε διαφορετικών πινάκων.
Τι θα κάνεις; Θα γράψεις τον ίδιο κώδικα 5 φορές;


Τι σχέση έχουν όμως αυτές οι αναρτήσεις στο συγκεκριμένο topic; :P
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Συζήτηση περί του συναρτησιακού προγραμματισμού

Δημοσίευσηαπό abramis » 04 Φεβ 2015, 03:14

Ilias95 έγραψε:Τι σχέση έχουν όμως αυτές οι αναρτήσεις στο συγκεκριμένο topic; :P

χαχαχα ξέρω γω, δεν είδα τίτλο και την προηγούμενη σελίδα, το τελευταίο ποστ είδα και γραψα κι εγώ :P
1 Γνώσεις Linux: Μέτρια┃ Προγραμματισμού: Μέτρια ┃ Αγγλικών: Μέτρια
2 Ubuntu 18.04 bionic 4.18.0-16-generic 64bit (el_GR.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Quad CPU Q8300 2.50GHz ‖ RAM 3943 MiB ‖ Gigabyte G31M-S2L
4 Advanced Micro Devices, Inc. [AMD/ATI] Bonaire XTX [Radeon R7 260X/360] [1002:6658] {radeon}
5 enp3s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02)
laptop:
Spoiler: show
Ubuntu 18.04 bionic 4.15.0-46-generic 64bit(GNOME gnome),Windows 10, Lenovo B50-80, Intel Celeron 3205U @ 1.50GHz, RAM 7902 MiB, Intel Broadwell-U Graphics [8086:1606] {i915}
Άβαταρ μέλους
abramis
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 746
Εγγραφή: 02 Αύγ 2011, 03:01
Τοποθεσία: Θεσ/νίκη
Launchpad: goldmetal
Εκτύπωση

Συζήτηση περί του συναρτησιακού προγραμματισμού

Δημοσίευσηαπό ubuderix » 04 Φεβ 2015, 11:31

Το θέμα μεταφέρθηκε στην κατάλληλη/σε καταλληλότερη ενότητα



!

Μήνυμα ενημέρωσης προς τον/την mithanbabag

Σε παρακαλούμε να διαβάσεις τις οδηγίες προς νεοεισερχόμενους προσεκτικά. Είναι σημαντική η προσάρτηση της υπογραφής με τα χαρακτηριστικά του υπολογιστή σου hardware id (πχ [10ec:8168]), έτσι ώστε να δίνονται συγκεκριμένες πληροφορίες όταν πρόκειται για επίλυση ενός προβλήματός σου. Οι αλλαγές μπορούν να γίνουν από τον πίνακα ελέγχου αλλά και με το αυτόματο script που θα το βρεις παρακάτω.
Αυτόματο script υπογραφής
1 Γνώσεις Linux: Προσπαθώ ┃ Προγραμματισμού: Καθόλου ┃ Αγγλικών: Μέτρια
2 Ubuntu 12.04 precise 3.7.0-030700-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.5.0-25-generic, Ubuntu 3.5.0-24-generic
3 Intel Pentium CPU G630 @ 2.70GHz ‖ RAM 3678 MiB ‖ ASRock H61M-S
4 Intel 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0102] {i915}
5 wlan0: 0846:4260 NetGear WG111v3 54 Mbps Wireless [realtek RTL8187B] ⋮ eth0: Atheros Inc. AR8152 v2.0 Fast Ethernet [1969:2062] (rev c1)
http://imagebin.ubuntu-gr.org/files/1372175733.png
Άβαταρ μέλους
ubuderix
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 1666
Εγγραφή: 11 Μάιος 2008, 12:07
Τοποθεσία: Πειραιάς
Launchpad: ubuderix
IRC: ubuderix
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Περί Τεχνολογίας