Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Μήνυμα ξεκίνησε από: iliasthes στις 10 Φεβ 2010, 02:49:01 ΜΜ

Τίτλος: Blocks Procs και Closures.
Αποστολή από: iliasthes στις 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)
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: Laertis στις 10 Φεβ 2010, 03:29:28 ΜΜ
Παράθεση από: iliasthes στις 10 Φεβ 2010, 02:49:01 ΜΜ

Οι τρεις από αυτές είναι: 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 όπως λέμε στα Ελληνικά).
Δεν ξέρω αν βοηθώ Ηλία αλλά ειλικρινά με ενδιαφέρει ... Θα το ψάξω και θα επανέλθω  ;)
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: pgrontas στις 10 Φεβ 2010, 03:38:29 ΜΜ
Για την αρχικοποίηση συμφωνώ με το Γιώργο
Για το closure θα έλεγα κλειστή ή ολοκληρωμένη συνάρτηση. Δεν έχω συναντήσει κάποια ελληνική μετάφραση, είναι δικό μου οπότε μπορεί να μην είναι δόκιμος ο όρος.
Αν βρεις κάτι άλλο postαρε το θα με ενδιέφερε.
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: evry στις 10 Φεβ 2010, 03:39:57 ΜΜ
Είσαι σίγουρος ότι τα blocks, procs και closures είναι ακριβώς το ίδιο?

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

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

όλα τα παραπάνω πάντα με επιφύλαξη
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: pgrontas στις 10 Φεβ 2010, 03:44:08 ΜΜ
Παράθεση από: evry στις 10 Φεβ 2010, 03:39:57 ΜΜ
Τώρα τα closures περιέχουν ένα block η ένα proc μαζί με ένα reference σε κάποιες μεταβλητές, δηλαδή τις παραμέτρους ας πούμε του κώδικα. Απλά δεν έχω καταλάβει ακόμα  πως χρησιμοποιούνται οπότε δεν μπορώ να δώσω ακριβή μετάφραση για τον όρο.
Τα closures χρησιμοποιούνται για να μπορείς να χρησιμοποιείς τις συναρτήσεις ως αντικείμενα, δηλαδή να περνάς συνάρτηση ως παράμετρο σε άλλες συναρτήσεις ή να επιστρέφεις συνάρτηση από συνάρτηση κτλ. Είναι συναρτησιακό  ;D
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: Laertis στις 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 .... ΑΞΙΟΙ  ;)

Ας βρούμε τις κατάλληλες ελληνικές λέξεις τώρα  :)
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: sstergou στις 10 Φεβ 2010, 04:09:07 ΜΜ
Τα closures, εκτός από την έννοια των ανωνύμων συναρτήσεων συμπεριλαμβάνουν και τις ελεύθερες μεταβλητές οι οποίες αποτελούν το εξωτερικό περιβάλλον της συνάρτησης.

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

Κώδικας (javascript) [Επιλογή]
var createClosure = function(param) {
   var local = createObject(param);
   return function() {
     //κάνε κάτι με το αντικείμενο local
   }
}

var closure = createClosure(param1);


Στην ουσία δημιουργούμε μία τοπική μεταβλητή local η οποία είναι διαθέσιμη μόνο στην συνάρτηση που επιστρέφεται από την createClosure. Απ' ότι καταλαβαίνω εγώ δημιουργούμε κάτι "κλειστό" για αυτό και το όνομα.
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: iliasthes στις 10 Φεβ 2010, 04:26:45 ΜΜ
Πρώτα από όλα έχω ενθουσιαστέι με τη συμμετοχή σας, ευχαριστώ.  Το θέμα είναι να βρω την κατάλληλη λέξη στα ελληνικά ώστε όταν ανεβάσω τη μετάφραση σε κανένα σάητ ή φόρουμ να μην μπερδεύεται όποιος το διαβάσει.

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

Για το initialize, η πρώτη λέξη που σκέφτηκα ήταν αρχικοποίηση, όμως αρχικοποίηση εννοούμε μια προεπιλεγμένη τιμή κατά κάποιο τρόπο. Ίσως κάτι σύνθετο δηλαδή "αρχικοποίηση αντικειμένου" Δεν ξέρω έχω θολώσει λιγάκι  :(
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: iliasthes στις 10 Φεβ 2010, 04:32:50 ΜΜ
Παράθεση από: iliasthes στις 10 Φεβ 2010, 04:26:45 ΜΜ
Πρώτα από όλα έχω ενθουσιαστέι με τη συμμετοχή σας, ευχαριστώ.  Το θέμα είναι να βρω την κατάλληλη λέξη στα ελληνικά ώστε όταν ανεβάσω τη μετάφραση σε κανένα σάητ ή φόρουμ να μην μπερδεύεται όποιος το διαβάσει.

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

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

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

Το συγκεκριμένο εγχειρίδιο είναι από τα πιο δημοφιλή για τη Ruby, αλλά διαβάζοντας το κατάλαβα πως ο συγγραφέας δεν έχει σπουδές πληρφοροικής, απλά εργάζεται επαγγελματικά εδώ και χρόνια και αντί της "επίσημης" ορολογίας, χρησιμοποιεί κυρίως την "ορολογία αργκό" που χρησιμοποιούν μεταξύ τους οι επαγγελματίες. Βέβαια δεν μπορείς να κατηγορήσεις έναν άνθρωπο που δημοσίευσε δωρεάν ένα εγχειρίδιο 60 σελίδων και έχει δώσει επίσης χωρίς κέρδος δικαίωμα μετάφρασης σε πολλές άλλες γλώσσες, σε όποιον του το ζητήσει.
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: pgrontas στις 10 Φεβ 2010, 05:01:13 ΜΜ
Το σκέφτηκα λίγο περισσότερο το όνομα του closure: Μου αρέσει ως όνομα το εγκλεισμός. Τι λέτε;
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: sstergou στις 10 Φεβ 2010, 05:06:52 ΜΜ
Σωστός! Εμένα μου αρέσει.
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: iliasthes στις 10 Φεβ 2010, 07:31:30 ΜΜ
Δεκτή η πρόταση, κατοχυρώθηκε closure=εγκλεισμός :) 5 σελίδες μείνανε από τις 70. Μόλις τελειώσουν θα ανεβάσω το εγχειρίδιο να δείτε σε τι συμβάλλατε  8)
Τίτλος: Απ: Blocks Procs και Closures.
Αποστολή από: Laertis στις 10 Φεβ 2010, 08:35:52 ΜΜ
Μπράβο Παναγιώτη, μου αρέσει κι εμένα ο εγκλεισμός !!!
Όσο για το initialize method συμφωνώ με αυτό που λες Ηλία "μέθοδο αρχικοποίησης του αντικειμένου τάδε".