Αποστολέας Θέμα: Blocks Procs και Closures.  (Αναγνώστηκε 1744 φορές)

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Blocks Procs και Closures.
« στις: 10 Φεβ 2010, 02:49:01 μμ »
Εδώ και καιρό μεταφράζω ένα εγχειρίδιο για τη γλώσσα Ruby (για προσωπικούς λόγους κυρίως όχι για εμπορικούς). Αν και έχω ολοκληρώσει τη μετάφραση είχα πρόβλημα και δεν έχω μεταφράσει  3-4 λέξεις, γιατί δεν μπορούσα να βρω κάτι που κατά τη γνώμη μου να αντιστοιχεί πλήρως σε αυτό που ήθελα

Οι τρεις από αυτές είναι: Blocks Procs και Closures που ο συγγραφέας τις χρησιμοποιεί ως συνώνυμες. Εγώ τις αντιλαμβάνομαι ως "ομάδες εντολών", παραθέτω την περιγραφή τους:
It's the ability to take a block of code (code in between do and end), wrap it up in an object (called a proc), store it in a variable or pass it to a method, and run the code in the block whenever you feel like

Μία άλλη έννοια είναι η initialize και αναφέρεται στις μεθόδους της γλώσσας. Θα χαρώ να διαβάσω προτάσεις από συναδέλφους.  8)

Laertis

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 1515
  • Sky's the limit
    • ΑΣΚΗΣΕΙΣ-ΘΕΜΑΤΑ ΑΕΠΠ
Απ: Blocks Procs και Closures.
« Απάντηση #1 στις: 10 Φεβ 2010, 03:29:28 μμ »

Οι τρεις από αυτές είναι: Blocks Procs και Closures που ο συγγραφέας τις χρησιμοποιεί ως συνώνυμες. Εγώ τις αντιλαμβάνομαι ως "ομάδες εντολών", παραθέτω την περιγραφή τους:
It's the ability to take a block of code (code in between do and end), wrap it up in an object (called a proc), store it in a variable or pass it to a method, and run the code in the block whenever you feel like

Μία άλλη έννοια είναι η initialize και αναφέρεται στις μεθόδους της γλώσσας. Θα χαρώ να διαβάσω προτάσεις από συναδέλφους.  8)

Αν και δεν έχω ιδέα για τη γλώσσα Ruby, το πρώτο μου θυμίζει υποπρόγραμμα και ειδικά συνάρτηση (function).
Initialize = αρχικοποίηση , φαντάζομαι είναι κάποιος τρόπος αρχικοποίησης (πρωταρχικών τιμών ή defaults όπως λέμε στα Ελληνικά).
Δεν ξέρω αν βοηθώ Ηλία αλλά ειλικρινά με ενδιαφέρει ... Θα το ψάξω και θα επανέλθω  ;)
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1426
  • There are always possibilities...
Απ: Blocks Procs και Closures.
« Απάντηση #2 στις: 10 Φεβ 2010, 03:38:29 μμ »
Για την αρχικοποίηση συμφωνώ με το Γιώργο
Για το closure θα έλεγα κλειστή ή ολοκληρωμένη συνάρτηση. Δεν έχω συναντήσει κάποια ελληνική μετάφραση, είναι δικό μου οπότε μπορεί να μην είναι δόκιμος ο όρος.
Αν βρεις κάτι άλλο postαρε το θα με ενδιέφερε.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3514
  • to Iterate is human to Recurse divine
Απ: Blocks Procs και Closures.
« Απάντηση #3 στις: 10 Φεβ 2010, 03:39:57 μμ »
Είσαι σίγουρος ότι τα blocks, procs και closures είναι ακριβώς το ίδιο?

Νομίζω ότι τα  blocks δεν έχουν όνομα, δηλαδή είναι απλά μπλοκ εντολών μέσα σε {}
ενώ τα procs είναι μπλοκ εντολών με όνομα, απλά στη γλώσσα αυτή τα βλέπεις σαν αντικείμενα, έτσι ώστε να τα περνάς και σαν παραμέτρους και
να έχεις δυναμική συμπεριφορά. Είναι δηλαδή bound σε κάποια μεταβλητή. Αυτά εγώ θα τα έλεγα διαδικασίες (χωρίς ορίσματα)

Τώρα τα closures περιέχουν ένα block η ένα proc μαζί με ένα reference σε κάποιες μεταβλητές, δηλαδή τις παραμέτρους ας πούμε του κώδικα. Απλά δεν έχω καταλάβει ακόμα  πως χρησιμοποιούνται οπότε δεν μπορώ να δώσω ακριβή μετάφραση για τον όρο.

όλα τα παραπάνω πάντα με επιφύλαξη
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1426
  • There are always possibilities...
Απ: Blocks Procs και Closures.
« Απάντηση #4 στις: 10 Φεβ 2010, 03:44:08 μμ »
Τώρα τα closures περιέχουν ένα block η ένα proc μαζί με ένα reference σε κάποιες μεταβλητές, δηλαδή τις παραμέτρους ας πούμε του κώδικα. Απλά δεν έχω καταλάβει ακόμα  πως χρησιμοποιούνται οπότε δεν μπορώ να δώσω ακριβή μετάφραση για τον όρο.
Τα closures χρησιμοποιούνται για να μπορείς να χρησιμοποιείς τις συναρτήσεις ως αντικείμενα, δηλαδή να περνάς συνάρτηση ως παράμετρο σε άλλες συναρτήσεις ή να επιστρέφεις συνάρτηση από συνάρτηση κτλ. Είναι συναρτησιακό  ;D
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

Laertis

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 1515
  • Sky's the limit
    • ΑΣΚΗΣΕΙΣ-ΘΕΜΑΤΑ ΑΕΠΠ
Απ: Blocks Procs και Closures.
« Απάντηση #5 στις: 10 Φεβ 2010, 03:56:00 μμ »
Το έψαξα ........
Αντιγράφω και μεταφέρω απο
http://ruby.activeventure.com/usersguide/rg/objinitialization.html

The initialize method

Whenever Ruby creates a new object, it looks for a method named initialize and executes it. So one simple thing we can do is use an initialize method to put default values into all the instance variables, so the inspect method will have something to say.

...... και απο τον ίδιο τον δημιουργό της Ruby

http://www.artima.com/intv/closures.html

Yukihiro Matsumoto: Blocks are basically nameless functions. You may be familiar with the lambda from other languages like Lisp or Python. Basically, you can pass a nameless function to another function, and then that function can invoke the passed-in nameless function.

Yukihiro Matsumoto: For example, we can create a closure out of a block. A closure is a nameless function the way it is done in Lisp. You can pass around a nameless function object, the closure, to another method to customize the behavior of the method.

Συνάδελφοι pgrontas και evry .... ΑΞΙΟΙ  ;)

Ας βρούμε τις κατάλληλες ελληνικές λέξεις τώρα  :)
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Blocks Procs και Closures.
« Απάντηση #6 στις: 10 Φεβ 2010, 04:09:07 μμ »
Τα closures, εκτός από την έννοια των ανωνύμων συναρτήσεων συμπεριλαμβάνουν και τις ελεύθερες μεταβλητές οι οποίες αποτελούν το εξωτερικό περιβάλλον της συνάρτησης.

Δηλαδή στον παρακάτω κώδικα javascript :

Κώδικας: Javascript
  1. var createClosure = function(param) {
  2.    var local = createObject(param);
  3.    return function() {
  4.      //κάνε κάτι με το αντικείμενο local
  5.    }
  6. }
  7.  
  8. var closure = createClosure(param1);
  9.  

Στην ουσία δημιουργούμε μία τοπική μεταβλητή local η οποία είναι διαθέσιμη μόνο στην συνάρτηση που επιστρέφεται από την createClosure. Απ' ότι καταλαβαίνω εγώ δημιουργούμε κάτι "κλειστό" για αυτό και το όνομα.
« Τελευταία τροποποίηση: 10 Φεβ 2010, 09:03:03 μμ από sstergou »
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Blocks Procs και Closures.
« Απάντηση #7 στις: 10 Φεβ 2010, 04:26:45 μμ »
Πρώτα από όλα έχω ενθουσιαστέι με τη συμμετοχή σας, ευχαριστώ.  Το θέμα είναι να βρω την κατάλληλη λέξη στα ελληνικά ώστε όταν ανεβάσω τη μετάφραση σε κανένα σάητ ή φόρουμ να μην μπερδεύεται όποιος το διαβάσει.

Ψάχνοντας βρήκα οτι με τη λέξη Procs εννοεί συντομογραφία της procedure που έχουμε και στην pascal, αλλά είναι κάτι πιο πολύπλοκο. Νομίζω πως ο συνάδελφος  pgrontas το περιέγραψε απόλυτα, αλλά στις ελληνικές μεταφράσεις για αυτή τη δομή ποια λέξη χρησιμοποιείται; Γιατί δεν είναι ακριβώς συνάρτηση ή διαδικασία. Στην ουσία συνδυάζει μεθόδους και συναρτήσεις.

Για το initialize, η πρώτη λέξη που σκέφτηκα ήταν αρχικοποίηση, όμως αρχικοποίηση εννοούμε μια προεπιλεγμένη τιμή κατά κάποιο τρόπο. Ίσως κάτι σύνθετο δηλαδή "αρχικοποίηση αντικειμένου" Δεν ξέρω έχω θολώσει λιγάκι  :(

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Blocks Procs και Closures.
« Απάντηση #8 στις: 10 Φεβ 2010, 04:32:50 μμ »
Πρώτα από όλα έχω ενθουσιαστέι με τη συμμετοχή σας, ευχαριστώ.  Το θέμα είναι να βρω την κατάλληλη λέξη στα ελληνικά ώστε όταν ανεβάσω τη μετάφραση σε κανένα σάητ ή φόρουμ να μην μπερδεύεται όποιος το διαβάσει.

Ψάχνοντας βρήκα οτι με τη λέξη Procs εννοεί συντομογραφία της procedure που έχουμε και στην pascal, αλλά είναι κάτι πιο πολύπλοκο. Νομίζω πως ο συνάδελφος  pgrontas το περιέγραψε απόλυτα, αλλά στις ελληνικές μεταφράσεις για αυτή τη δομή ποια λέξη χρησιμοποιείται; Γιατί δεν είναι ακριβώς συνάρτηση ή διαδικασία. Στην ουσία συνδυάζει μεθόδους και συναρτήσεις.

Για το initialize, η πρώτη λέξη που σκέφτηκα ήταν αρχικοποίηση, όμως αρχικοποίηση εννοούμε μια προεπιλεγμένη τιμή κατά κάποιο τρόπο. Ίσως κάτι σύνθετο δηλαδή "αρχικοποίηση αντικειμένου" Δεν ξέρω έχω θολώσει λιγάκι  :(.

 Ο συγγραφέας το αποκαλεί συνήθως initialize method. Οπότε το σκέφτομαι ως μέθοδο αρχικοποίησης του αντικειμένου τάδε.

Το συγκεκριμένο εγχειρίδιο είναι από τα πιο δημοφιλή για τη Ruby, αλλά διαβάζοντας το κατάλαβα πως ο συγγραφέας δεν έχει σπουδές πληρφοροικής, απλά εργάζεται επαγγελματικά εδώ και χρόνια και αντί της "επίσημης" ορολογίας, χρησιμοποιεί κυρίως την "ορολογία αργκό" που χρησιμοποιούν μεταξύ τους οι επαγγελματίες. Βέβαια δεν μπορείς να κατηγορήσεις έναν άνθρωπο που δημοσίευσε δωρεάν ένα εγχειρίδιο 60 σελίδων και έχει δώσει επίσης χωρίς κέρδος δικαίωμα μετάφρασης σε πολλές άλλες γλώσσες, σε όποιον του το ζητήσει.
« Τελευταία τροποποίηση: 10 Φεβ 2010, 04:57:38 μμ από sstergou »

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1426
  • There are always possibilities...
Απ: Blocks Procs και Closures.
« Απάντηση #9 στις: 10 Φεβ 2010, 05:01:13 μμ »
Το σκέφτηκα λίγο περισσότερο το όνομα του closure: Μου αρέσει ως όνομα το εγκλεισμός. Τι λέτε;
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Blocks Procs και Closures.
« Απάντηση #10 στις: 10 Φεβ 2010, 05:06:52 μμ »
Σωστός! Εμένα μου αρέσει.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

iliasthes

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 790
Απ: Blocks Procs και Closures.
« Απάντηση #11 στις: 10 Φεβ 2010, 07:31:30 μμ »
Δεκτή η πρόταση, κατοχυρώθηκε closure=εγκλεισμός :) 5 σελίδες μείνανε από τις 70. Μόλις τελειώσουν θα ανεβάσω το εγχειρίδιο να δείτε σε τι συμβάλλατε  8)

Laertis

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 1515
  • Sky's the limit
    • ΑΣΚΗΣΕΙΣ-ΘΕΜΑΤΑ ΑΕΠΠ
Απ: Blocks Procs και Closures.
« Απάντηση #12 στις: 10 Φεβ 2010, 08:35:52 μμ »
Μπράβο Παναγιώτη, μου αρέσει κι εμένα ο εγκλεισμός !!!
Όσο για το initialize method συμφωνώ με αυτό που λες Ηλία "μέθοδο αρχικοποίησης του αντικειμένου τάδε".
Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola