forked from rubinius/rubinius
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of https://github.com/bakkdoor/rubinius into ba…
…kkdoor
- Loading branch information
Showing
366 changed files
with
17,189 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,7 @@ | |
languages: | ||
- en | ||
- es | ||
- de | ||
- ja | ||
- ru | ||
--- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
layout: doc | ||
base_dir: /doc/de/ | ||
lang: de | ||
lang_label: Sprachen | ||
previous_label: Vorherige | ||
next_label: Nächste | ||
up_label: Aufwärts | ||
toc_text: Inhaltsverzeichnis | ||
--- | ||
{{ content }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,362 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Rubinius : Use Ruby™</title> | ||
<meta content='text/html;charset=utf-8' http-equiv='content-type'> | ||
<meta content='en' http-equiv='content-language'> | ||
<meta content='Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.' name='description'> | ||
<meta content='Less Than Three. <3. http://less.thanthree.com' name='author'> | ||
<link href='/' rel='home'> | ||
|
||
<link href='/' rel='start'> | ||
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script><![endif]--> | ||
<script src="/javascripts/jquery-1.3.2.js" type="text/javascript"></script> | ||
<script src="/javascripts/paging_keys.js" type="text/javascript"></script> | ||
<script src="/javascripts/jquery.twitter.js" type="text/javascript"></script> | ||
<script src="/javascripts/application.js" type="text/javascript"></script> | ||
<style>article, aside, dialog, figure, footer, header, hgroup, menu, nav, section { display: block; }</style> | ||
|
||
<link href="/stylesheets/blueprint/screen.css" media="screen" rel="stylesheet" type="text/css" /> | ||
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" /> | ||
<link href="/stylesheets/blueprint/print.css" media="print" rel="stylesheet" type="text/css" /> | ||
<!--[if IE]><link href="/stylesheets/blueprint/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]--> | ||
<!--[if IE]><link href="/stylesheets/ie.css" media="screen" rel="stylesheet" type="text/css" /><![endif]--> | ||
</head> | ||
<body> | ||
<div class='container'> | ||
<div class='span-21 doc_menu'> | ||
<header> | ||
<nav> | ||
<ul> | ||
<li><a href="/">Home</a></li> | ||
<li><a id="blog" href="/blog/">Blog</a></li> | ||
<li><a id="documentation" href="/doc/en/">Documentation</a></li> | ||
<li><a href="/projects/">Projects</a></li> | ||
<li><a href="/roadmap/">Roadmap</a></li> | ||
<li><a href="/releases/">Releases</a></li> | ||
</ul> | ||
</nav> | ||
|
||
</header> | ||
</div> | ||
<div class='span-3 last'> | ||
<div id='version'> | ||
<a href="/releases/1.2.0">1.2.0</a> | ||
</div> | ||
</div> | ||
|
||
</div> | ||
|
||
|
||
<div class="container languages"> | ||
<nav> | ||
<span class="label">Sprachen:</span> | ||
<ul> | ||
|
||
<li><a href="/doc/en/" | ||
|
||
>en</a></li> | ||
|
||
<li><a href="/doc/es/" | ||
|
||
>es</a></li> | ||
|
||
<li><a href="/doc/de/" | ||
|
||
class="current" | ||
|
||
>de</a></li> | ||
|
||
<li><a href="/doc/ja/" | ||
|
||
>ja</a></li> | ||
|
||
<li><a href="/doc/ru/" | ||
|
||
>ru</a></li> | ||
|
||
</ul> | ||
</nav> | ||
</div> | ||
|
||
|
||
<div class="container doc_page_nav"> | ||
|
||
|
||
<span class="label">Vorherige:</span> | ||
<a href="/doc/de/how-to/translate-documentation">Anleitung - Übersetzen von Dokumentation</a> | ||
|
||
|
||
<span class="label">Aufwärts:</span> | ||
<a href="/doc/de/">Inhaltsverzeichnis</a> | ||
|
||
|
||
<span class="label">Nächste:</span> | ||
<a href="/doc/de/appendix-b-reading-list">Anhang B - Literaturverzeichnis</a> | ||
|
||
|
||
</div> | ||
|
||
|
||
<div class="container documentation"> | ||
<h2>Anhang A - Glossar</h2> | ||
|
||
|
||
|
||
|
||
<div class="review"> | ||
<p>This topic has missing or partial documentation. Please help us improve | ||
it.</p> | ||
|
||
<p>See <a href="/doc/de/how-to/write-documentation"> | ||
How-To - Write Documentation</a></p> | ||
</div> | ||
|
||
|
||
|
||
<p>Eine Auflistung von Begriffsdefinitionen und Phrasen die in der | ||
Programmiersprache Ruby und dieser Implementierung verwendet | ||
werden. Siehe auch “The Ruby Programming Language” von Flanagan und | ||
Matsumoto [O’Reilly 2008] und “Programming Ruby: The Pragmatic | ||
Programmer’s Guide” 2. oder 3. Auflage von Thomas et al [The Pragmatic Programmers | ||
2005-2008]</p> | ||
|
||
<ul> | ||
<li> | ||
<p><em>metaclass (Metaklasse)</em></p> | ||
|
||
<p>Auch +singleton+ class oder +eigenclass+ genannt. Jedes Objekt in | ||
Ruby kann eine singleton Klasse haben, wobei diese nur nach Bedarf | ||
erzeugt werden. Die Metaklasse enthält die Methoden- und | ||
Konstantentabellen welche jeweils nur zu einer bestimmten | ||
Objektinstanz gehören. | ||
Zum Beispiel existiert die unten definierte Methode +hello+ nur in | ||
der Metaklasse von +obj+.</p> | ||
|
||
<pre><code>obj = Object.new | ||
def obj.hello | ||
puts 'hi' | ||
end | ||
</code></pre> | ||
|
||
<p>Da alle Klassen in Ruby ebenfalls Objekte sind, können diese auch | ||
Metaklassen besitzen. “Klassenmethoden” sind somit lediglich | ||
Methoden, die in der Metaklasse einer Klasse definiert (d.h. in der | ||
Methodentabelle der Metaklasse eingetragen) sind. Die Methode +honk+ | ||
existiert in der Metaklasse der Klasse +Car+.</p> | ||
|
||
<pre><code>class Car | ||
def self.honk | ||
end | ||
end | ||
</code></pre> | ||
|
||
<p>In Rubinius sind Metaklassen Instanzen der Klasse +MetaClass+. Die | ||
Metaklasse eines Objektes kann durch den Aufruf der +metaclass+ | ||
Methode erhalten werden. Insgesamt wird die Anordnung der dabei | ||
beteiligten Konzepte als “Meta-Object Protocol” oder +MOP+ | ||
bezeichnet.</p> | ||
</li> | ||
<li> | ||
<p><em>method lookup oder method resolution</em></p> | ||
|
||
<p>Es ist ganz einfach: Nimm das Objekt im ‘class slot’ des Objekts | ||
(welches nicht immer dem Rückgabewert von Object#class sein muss; | ||
wenn das Objekt eines hat, ist es die Metaklasse) und beginne die | ||
Suche.</p> | ||
|
||
<p>Der Suchvorgang geht die Superklassen-Kette aufwärts bis die | ||
Superklasse nil ist.</p> | ||
|
||
<p>In dem Fall beginne den Vorgang von vorn, nur suche diesmal nach | ||
method_missing. Schlägt die Suche nach method_missing fehl, wirf | ||
einen Fehler (Exception).</p> | ||
|
||
<pre><code> +-------------+ | ||
| nil | | ||
+-------------+ | ||
^ | ||
| superclass | ||
| | ||
+-------------+ | ||
| Object | | ||
+-------------+ | ||
^ | ||
| superclass | ||
| | ||
+-------------+ | ||
| Module | | ||
+-------------+ | ||
^ | ||
| superclass | ||
| | ||
+-------------+ | ||
| Class | | ||
+-------------+ | ||
^ | ||
| superclass | ||
| | ||
+-------------+ | ||
| MetaClass | | ||
| (Object) | | ||
+-------------+ | ||
^ | ||
| superclass | ||
| | ||
+-------------+ +-------------+ | ||
| F | -----------------> | MetaClass | | ||
+-------------+ metaclass | (F) | | ||
+-------------+ | ||
|
||
|
||
class Class | ||
def wanker | ||
puts 'you are' | ||
end | ||
end | ||
|
||
class F | ||
def self.bloke | ||
wanker | ||
end | ||
end | ||
</code></pre> | ||
|
||
<ol> | ||
<li> | ||
<p>Finde Methode ‘wanker’ – Durchsuche Methodentabellen in:</p> | ||
|
||
<ol> | ||
<li>MetaClass(F)</li> | ||
<li>MetaClass(Object)</li> | ||
<li>Class</li> | ||
</ol> | ||
</li> | ||
</ol> | ||
|
||
<p>Gefunden.</p> | ||
</li> | ||
<li> | ||
<p><em>method_table (Methodentabelle)</em></p> | ||
|
||
<p>Eine Datenstruktur die in jeder Klasse (und jedem Modul) vorhanden | ||
ist und die definierten Methoden der Klasse enthält.</p> | ||
|
||
<p>In Rubinius ist die Methodentabelle eine Instanz der Klasse | ||
LookupTable.</p> | ||
</li> | ||
<li> | ||
<p><em>MatzRuby</em></p> | ||
|
||
<p>Siehe MRI</p> | ||
</li> | ||
<li> | ||
<p><em>MRI</em></p> | ||
|
||
<p>Matz’s Ruby Interpreter oder Matz’s Ruby Implementation. Eine | ||
Abkürzung mit der die offizielle Implementierung von Ruby gemeint | ||
ist. Siehe <a href="http://ruby-lang.org">http://ruby-lang.org</a>.</p> | ||
</li> | ||
<li> | ||
<p><em>private send (Privater Nachrichtenversand / Methodenaufruf)</em></p> | ||
|
||
<p>Ein Methodenaufruf bei dem ein expliziter lexikalischer Empfänger | ||
(receiver) fehlt. Der Empfänger des Aufrufs ist +self+. | ||
Ein Beispiel:</p> | ||
|
||
<pre><code>class A | ||
private | ||
def you_are_mine | ||
end | ||
end | ||
|
||
class B < A | ||
def sunshine | ||
you_are_mine | ||
end | ||
end | ||
|
||
class C | ||
def dear | ||
today = B.new | ||
today.you_are_mine | ||
end | ||
end | ||
</code></pre> | ||
|
||
<p>Der Aufruf von +you_are_mine+ in der Methode +sunshine+ ist ein | ||
private Methodenaufruf (private send). Der Aufruf von | ||
+today.you_are_mine+ wird nicht gelingen, da private Methoden nicht | ||
einen expliziten Empfänger haben können. In diesem Fall ist +today+ | ||
der explizite Empfänger.</p> | ||
</li> | ||
<li> | ||
<p><em>superclass (Superklasse)</em></p> | ||
|
||
<p>Die Klasse von der eine bestimmte Klasse direkt erbt. Die Object | ||
Klasse ist die Superklasse aller Klassen die nicht explizit von | ||
einer anderen Klasse erben.</p> | ||
|
||
<pre><code>class A | ||
end | ||
|
||
class B < A | ||
end | ||
</code></pre> | ||
|
||
<p>Klasse A erbt von Object. Mit anderen Worten: A.superclass == Object. | ||
Klasse B erbt explizit von Klasse A. Also: B.superclass == A.</p> | ||
</li> | ||
</ul> | ||
|
||
|
||
</div> | ||
|
||
<div class="container doc_page_nav"> | ||
|
||
|
||
<span class="label">Vorherige:</span> | ||
<a href="/doc/de/how-to/translate-documentation">Anleitung - Übersetzen von Dokumentation</a> | ||
|
||
|
||
<span class="label">Aufwärts:</span> | ||
<a href="/doc/de/">Inhaltsverzeichnis</a> | ||
|
||
|
||
<span class="label">Nächste:</span> | ||
<a href="/doc/de/appendix-b-reading-list">Anhang B - Literaturverzeichnis</a> | ||
|
||
|
||
</div> | ||
|
||
|
||
<footer> | ||
<div class='container'> | ||
<nav> | ||
<ul> | ||
<li><a href="http://twitter.com/rubinius">Follow Rubinius on Twitter</a></li> | ||
<li><a href="http://github.com/evanphx/rubinius">Fork Rubinius on github</a></li> | ||
<li><a href="http://engineyard.com">An Engine Yard project</a></li> | ||
|
||
<li id='credit'> | ||
Site design by | ||
<a href="http://less.thanthree.com">Less Than Three</a> | ||
</li> | ||
</ul> | ||
</nav> | ||
</div> | ||
</footer> | ||
<script type="text/javascript"> | ||
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); | ||
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); | ||
</script> | ||
|
||
<script type="text/javascript"> | ||
try { | ||
var pageTracker = _gat._getTracker("UA-12328521-1"); | ||
pageTracker._trackPageview(); | ||
} catch(err) {}</script> | ||
|
||
</body> | ||
|
||
</html> |
Oops, something went wrong.