Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/bakkdoor/rubinius into ba…
Browse files Browse the repository at this point in the history
…kkdoor
  • Loading branch information
brixen committed Dec 20, 2010
2 parents b8b8ed1 + 05d042a commit ccaf27e
Show file tree
Hide file tree
Showing 366 changed files with 17,189 additions and 8 deletions.
1 change: 1 addition & 0 deletions web/_layouts/doc.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
languages:
- en
- es
- de
- ja
- ru
---
Expand Down
11 changes: 11 additions & 0 deletions web/_layouts/doc_de.html
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 }}
362 changes: 362 additions & 0 deletions web/_site/doc/de/appendix-a-glossary/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,362 @@
<!DOCTYPE html>
<html>
<head>
<title>Rubinius : Use Ruby&#153;</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. &lt;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 &ldquo;The Ruby Programming Language&rdquo; von Flanagan und
Matsumoto [O&rsquo;Reilly 2008] und &ldquo;Programming Ruby: The Pragmatic
Programmer&rsquo;s Guide&rdquo; 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. &ldquo;Klassenmethoden&rdquo; 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 &ldquo;Meta-Object Protocol&rdquo; oder +MOP+
bezeichnet.</p>
</li>
<li>
<p><em>method lookup oder method resolution</em></p>

<p>Es ist ganz einfach: Nimm das Objekt im &lsquo;class slot&rsquo; 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 | -----------------&gt; | 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 &lsquo;wanker&rsquo; &ndash; 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&rsquo;s Ruby Interpreter oder Matz&rsquo;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 &lt; 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 &lt; 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>
Loading

0 comments on commit ccaf27e

Please sign in to comment.