You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
göre, Ruby dünya çapında en çok kullanılan 10. dil haline gelmiştir.
40
-
Ruby’nin bu hızlı büyümesinde [Ruby on Rails][ror] framework’ünün
41
-
hatırı sayılır etkisi bulunmaktadır.
37
+
Ruby, dünya çapında programlama dillerinin büyümesini ve popülaritesini ölçen dizinlerin ([TIOBE dizini][tiobe] gibi) çoğunda ilk 10 içinde yer almıştır.
38
+
Büyümenin çoğu, Ruby ile yazılmış yazılımların popülaritesiyle ilgilidir, özellikle [Ruby on Rails][ror] web çatısıyla.
42
39
43
-
Ruby aynı zamanda [tamamen özgür]({{ site.license.url }}) bir dildir. Ruby size
44
-
yalnızca sorumluluk anlamında bir özgürlük değil, aynı zamanda kullanma,
45
-
kopyalama, düzenleme ve dağıtma özgürlüğü de sunar.
40
+
Ruby aynı zamanda [tamamen özgür]({{ site.license.url }}) bir dildir.
41
+
Bu özgürlük sadece maddi anlamda değildir; kullanma, kopyalama, değiştirme, ve dağıtma konusunda da özgürsünüz.
46
42
47
-
### Herşey Bir Nesnedir
43
+
### Her şeyi bir Nesne Olarak Görmek
48
44
49
45
Matz yeni bir dil yaratmadan önce ideal sözdizimini bulmak için diğer
50
46
programlama dillerini incelemiş ve araştırmasının sonunda “Perl’den daha
51
47
güçlü ama Python’dan daha nesneye yönelik bir betik
52
-
dili<sup>[2](#fn2)</sup>” istediğini söylemiştir.
48
+
dili istediğini<sup>[2](#fn2)</sup>” söylemiştir.
53
49
54
-
Ruby’de herşey bir nesnedir. Gördüğünüz en ufak bilgi parçası ve kod
55
-
kendi özelliklerine ve olaylarına sahiptir. Özellikleri isimle çağırma
56
-
*örnek değişkenler*, olaylar da *metotlar* olarak isimlendirilir.
57
-
Ruby’nin yüzde yüz saf nesneye yönelik bir dil olduğunun en iyi ispatı
58
-
bir kod parçası ile bir sayıya olay vererek yapılır:
50
+
Ruby’de herşey bir nesnedir. Gördüğünüz en ufak bilgi parçası ve kod kendi özelliklerine ve olaylarına sahiptir.
51
+
Nesne yönelimli programlama, özellikleri *örnek değişkenleri* ismiyle anar, olaylar ise *metodlar* olarak bilinir.
52
+
Ruby’nin yüzde yüz saf nesneye yönelik bir dil olduğunun en iyi ispatı bir kod parçası ile bir sayıya olay vererek yapılır:
59
53
60
54
{% highlight ruby %}
61
-
5.times { print "Ruby'yi *seviyoruz*-- harika bir dil!" }
Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir. Ruby tüm
65
-
tiplerine metotlar ve örnek değişkenler verme geleneğini Smalltalk’tan
66
-
miras almıştır.
58
+
Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir.
59
+
Ruby tüm tiplerine metod ve örnek değişkenleri verme geleneğini Smalltalk’tan miras almıştır.
60
+
Bu, Ruby kullanımını kolaylaştırır, çünkü nesnelere uygulanan kurallar Ruby'nin tümüne uygulanır.
67
61
68
-
### Ruby Esnektir
62
+
### Ruby'nin Esnekliği
69
63
70
-
Ruby kullanıcılara istediği kısımları değiştirebilme imkanı sunduğu için
71
-
esnek bir dildir. İsteğe bağlı olarak Ruby’nin esaslı kısımları bile
72
-
kaldırılabilir, yeniden tanımlanabilir ya da yeni kısımlar eklenebilir.
73
-
Ruby programcıyı kısıtlamamayı amaçlamaktadır.
64
+
Ruby, kullanıcılara istediği kısımları değiştirebilme imkanı sunduğu için esnek bir dil olarak görülür.
65
+
İsteğe bağlı olarak Ruby’nin esas kısımları bile kaldırılabilir, yeniden tanımlanabilir ya da bunlara yeni kısımlar eklenebilir.
66
+
Ruby, programcıyı kısıtlamamayı amaçlar.
74
67
75
68
Örneğin toplama işleminin artı (`+`) operatörü ile yapıldığını
76
-
biliyoruz. Ama eğer okunabilirlik amacıyla `topla` gibi bir kelime
69
+
biliyoruz. Ama eğer okunabilirlik amacıyla `plus` gibi bir kelime
77
70
kullanmak istiyorsanız Ruby’nin gömülü `Numeric` sınıfına yeni bir metod
78
71
ekleyebilirsiniz.
79
72
80
73
{% highlight ruby %}
81
74
class Numeric
82
-
def topla(x)
75
+
def plus(x)
83
76
self.+(x)
84
77
end
85
78
end
86
79
87
-
y = 5.topla 6
80
+
y = 5.plus 6
88
81
# y'nin değeri 11 oldu.
89
82
{% endhighlight %}
90
83
91
-
Ruby’nin operatörleri sözdizimsel olarak esnektir, yeniden tanımlamanıza
92
-
olanak sağlar.
84
+
Ruby’nin operatörleri metodlar için sözdizimsel kolaylıklardır.
85
+
Bunları da yeniden tanımlayabilirsiniz.
93
86
94
-
### Bloklar, Tam Anlamıyla Etkileyici Bir Özellik
87
+
### Bloklar, Tam Anlamıyla Etkileyici bir Özellik
95
88
96
89
Ruby’nin esnek bir dil olarak anılmasının en önemli sebeplerinden biri
97
90
de bloklardır. Bir kapamayı (closure) herhangi bir metoda ataçlayabilir
@@ -112,21 +105,20 @@ search_engines =
112
105
{% endhighlight %}
113
106
114
107
Yukarıdaki kodda bir blok `do ... end` yapıları içerisinde tanımlanıyor.
115
-
`map` metodu bloğa bir kelime listesi ile çalıştığını bildiriyor.
116
-
Ruby’de bunun gibi bir çok metod programcıya kendi bloklarını yazıp,
117
-
metodu istediği gibi şekillendirmesine izin vermektedir.
108
+
`map` metodu, bloğu sağlanan kelime listesine uygular.
109
+
Ruby’de bunun gibi bir çok metod programcıya kendi bloklarını yazıp, bu metodun ne yapması gerektiğini belirtme izni vermektedir.
118
110
119
111
### Ruby ve Mixin’ler
120
112
121
-
Pek çok nesneye yönelik dilin aksine, Ruby özellikle yalnızca tekil
113
+
Pek çok nesneye yönelik dilin aksine, Ruby **özellikle** yalnızca tekil
122
114
mirası destekler. Çünkü Ruby modül konseptini (Objective-C’de
123
-
Kategoriler) kullanır ve modüller metodların bir koleksiyonundan
115
+
Kategoriler) kullanır. Modüller metodların bir koleksiyonundan
124
116
ibarettir.
125
117
126
118
Sınıflar bir modülü kendisine dahil ederse, onun tüm metodlarını da
127
119
almış olur. Örneğin `each` metodunu gerçekleştiren her sınıf
128
120
`Enumerable` modülünü de kendisine dahil edebilir, böylece döngülerde
129
-
`each` ile beraber kullanabileceği bir dizi metoda sahip olur.
121
+
`each`'i kullanan bir dizi metoda sahip olur.
130
122
131
123
{% highlight ruby %}
132
124
class MyArray
@@ -135,19 +127,19 @@ end
135
127
{% endhighlight %}
136
128
137
129
Genelde Ruby’ciler bu yolu bazen çok karmaşıklaşan ve kısıtlayıcı olan
138
-
çoklu mirastan daha temiz ve sağlam bir yöntem olarak görürler.
130
+
çoklu mirastan daha temiz bir yöntem olarak görürler.
139
131
140
132
### Ruby’nin Görselliği
141
133
142
134
Her ne kadar Ruby sınırlı sayıda noktalama işareti ve İngilizce anahtar
143
135
kelimeler kullansa da, bazı noktalama işaretleri Ruby’yi dekore etmek
144
136
için kullanılır. Ruby’de değişken tanımlamaları yoktur. Değişkenlerin
145
-
faaliyet alanlarını belirlemek için basit noktalama işaretleri
137
+
faaliyet alanlarını belirlemek için basit isimlendirme gelenekleri
146
138
kullanılır.
147
139
148
140
*`var` yerel bir değişken olabilir
149
-
*`@var` bir örnek değişkendir.
150
-
*`$var` bir global değişkendir.
141
+
*`@var` bir örnek değişkenidir.
142
+
*`$var` bir evrensel değişkendir.
151
143
152
144
Bu işaretlendirmeler sayesinde programcı her değişkenin rolünü kolayca
153
145
görebilmektedir. Aynı zamanda her örnek değişken için `self.` kullanma
@@ -158,15 +150,15 @@ külfetini ortadan kaldırmıştır.
158
150
Ruby çok çeşitli özelliklere sahiptir, aşağıda bir kaçından
159
151
bahsedilmiştir:
160
152
161
-
* Ruby, hataları işlemek için kolaylaştırmak amacıyla Java veya Python
153
+
* Ruby, hataları işlemeyi kolaylaştırmak amacıyla Java veya Python
162
154
gibi istisna işleme özelliklerine sahiptir.
163
155
164
-
* Ruby tüm nesneleri için gerçek bir mark&sweep çöp toplayıcısı
156
+
* Ruby tüm nesneleri için gerçek bir mark&sweep çöp toplayıcısı
165
157
sunar. Eklenti kütüphanelerinde referans sayaçlarına gerek yok,
166
-
Matz’ın dediği gibi: “Bu sizin sağlığınız için iyidir”.
158
+
Matz’ın dediği gibi: “Bu sizin sağlığınız için iyidir.”
167
159
168
-
* C’den Ruby çağıran şık API’si sayesinde Ruby’de C eklentileri yazmak
169
-
Perl ya da Python’dan daha kolaydır. Bu API aynı zamanda yazılımlara
160
+
* C’den Ruby çağıran şık API’ı sayesinde Ruby’de C eklentileri yazmak
161
+
Perl ya da Python’kinden daha kolaydır. Bu API aynı zamanda yazılımlara
170
162
betik dili olarak Ruby’yi gömmek için gereken çağrıları da içerir.
171
163
Ayrıca SWIG arayüzü de alternatif olarak sunulmaktadır.
172
164
@@ -181,13 +173,32 @@ bahsedilmiştir:
181
173
olsa dahi, UNIX’in bir çok çeşidi, macOS,
182
174
Windows, DOS, BeOS, OS/2, vb. üzerinde çalışmaktadır.
183
175
176
+
### Ruby'nin Diğer Gerçeklemeleri
177
+
178
+
Ruby, bir dil olarak, birkaç farklı gerçeklemeye sahiptir.
179
+
Bu sayfa, toplulukta sıklıkla **MRI** (“Matz’s Ruby Interpreter”) ya da **CRuby** (C'de yazıldığından dolayı) olarak bilinen başvuru gerçeklemesini tartışmaktadır, ancak başkaları da vardır.
180
+
Bunlar belirli durumlarda kullanışlıdır, diğer dil ya da ortamlara fazladan bütünleşim sağlarlar, ya da MRI'ın sahip olmadığı özel özelliklere sahiptirler.
181
+
182
+
İşte bunların bir listesi:
183
+
184
+
*[JRuby][jruby], JVM'in (Java Virtual Machine) üstünde çalışan Ruby'dir, JVM'in eniyileyen JIT derleyicisi, çöp toplayıcısı, eşzamanlı thread'leri, araç ekosistemi, ve muazzam sayıdaki kütüphanelerinden faydalanır.
185
+
*[Rubinius][rubinius], ‘Ruby'da yazılmış Ruby'dir’.
186
+
LLVM'in üstüne inşa edilmiştir ve ayrıca diğer dillerin üstüne inşa edebilecekleri şık bir sanal makine de sunar.
187
+
*[TruffleRuby][truffleruby], GraalVM'in üstünde çalışan yüksek performanslı bir Ruby gerçeklemesidir.
188
+
*[mruby][mruby], bir uygulamaya bağlanıp gömülebilen hafif bir Ruby gerçeklemesidir.
189
+
Geliştirilmesine Ruby'nin yaratıcısı Yukihiro “Matz” Matsumoto tarafından önderlik edilmektedir.
190
+
*[IronRuby][ironruby], “.NET Web Çatısı'yla sıkı sıkıya bağlı” bir gerçeklemedir.
191
+
*[MagLev][maglev], “bütünleşik nesne sürekliliği ve dağıtılmış paylaşılan önbellekli hızlı, kararlı bir Ruby gerçeklemesidir”.
192
+
*[Cardinal][cardinal], [Parrot][parrot] Sanal Makinesi için bir Ruby derleyicisidir” (Perl 6).
193
+
194
+
Daha tam bir liste için, [Müthiş Ruby'ler][awesome-rubies]e bakın.
0 commit comments