私の主な言語であるRuby。 私は学校でTurboPascalで始め、大学でCとC ++を学び、 Javaで学位論文を書きました。また、ウェブサイトをすばやく簡単に作成する方法を学びたいので、 PHPをゼロから学びました。 私のためにコードを書くことは娯楽の一形態であり、それ以外はすべてだと思います。 最初は、 PythonとRubyのどちらの言語を学ぶべきかについて考えていました。 間違ったインデントがコードに問題を引き起こすことを望んでいないので、2番目のコードを選択しました。
Rubyを最大限に活用する方法について、導師によって書かれた紹介、ガイド、記事、エッセイがたくさんあります。 この記事はそのようなものではありません。
これは、控えめで不完全な理由のリストであり、Rubyを使用するように促す(またはしない)場合があります。 注意:別のプログラミング言語を仕事やその他の目的で使用する場合は、それを使用したくない場合に文句を言わないでください。 これはまさに私に起こったことですが、私にとってはそれほど重要ではありません。 Rubyは素晴らしくエレガントな言語であり、同様の多くのことと同様に、あなたの心を捉え、魂を打ち砕くことができます。
つまり、警告されます。
Rubyを学ぶ理由
1.トリックなしですべての設備(喜び)を取得します。
Rubyは 、 smalltalkからJavaに、 PerlからPythonに至るまで、他のプログラミング言語から最高のものを借りてきました。 基本的に他の言語で見ることができる基本的な機能は次のとおりです。
- 例外 信じられないかもしれませんが、例外は、あらゆる種類のプログラムを開発するときに最も重要なものの1つです。 PHP4のプログラマーはそれらについて何も知らないので、画面に単純に(エラー)を印刷するか、独自の「スーパーデューパー」クラスを使用してエラーを処理できることを教えてくれます。 幸運なことに、 Rubyにはtry / catch (またはさらに良いbegin / rescue )ブロックと、エラーを正しく処理するための事前定義された拡張可能な例外のセットが付属しています。
- 名前空間: Rubyモジュールは名前空間の使用を容易にします; C ++とJavaの愛好家はこれを好むはずです。
- 組み込みの通常のねじれ: Perlのすべての専門家は、何かを//で囲むことができ、比較の準備ができた正規表現になります(このために演算子=〜を使用します)。
- 演算子のオーバーロード: Rubyでは、 +、-、>などの演算子を定義できます。 あなたのクラスのいずれか。
- パッケージ: " gems "(小石)と呼ばれ、名前を正当化し、さらに機能します。 パッケージは依存関係をサポートし、クロスプラットフォームまたはプラットフォーム依存でもあります。
- インタラクティブコンソール: Pythonコンソールのように、コードをインタラクティブにテストするために使用できます
2.あなたはささいなことを愛します。
ルビーはエレガントです。 なんで? 彼はコードを簡潔にしようとしないので、読みやすさと理解を妨げるでしょう。 あなたを助けることができるいくつかのヒントがあります:
- , if unless . if , unless . , , , , :
order.new unless order.exists
- . , «?» , true false, , «!» , , , ..
- (alias) . exist exists, .
- attr_reader, attr_writer attr_accessor getter/setteer .
- : , , , «$», «@», «@@», ..
- , .
write File.open("/home/h3rald/test.txt")
File.open "/home/h3rald/test.txt"
, , .
3. .
? . «Enter» . Ruby Python, , . , C++, . , ?
4. , .
Java, , .
— «, 14 374346.678 — ?»
— «, , !»
Ruby , , . . , :
"YOU SHOULDN'T ALWAYS USE CAPITALS".lowcase # "you shouldn't always use capitals"
, :
# PHP Code
strtolower("YOU SHOULDN'T ALWAYS USE CAPITALS")
, .
5. .
« return ». , : Ruby , , «return» . .
6. .
, . : , - , . :
- , . — , .
- . — . - . , .
- . , , — .
Ruby , . .
, ? Numeric, :
class Numeric
def feet
self*3.2808399
end
end
, , , , :
5.feet # 16.4041995
Ruby , . !
7. , , .
, C++, , - — . , , «» «» «». , Ruby . - . , . , Ruby, , , .
8. XML — .
XML — , , , . , , () , — . :
regexp: !ruby/regexp /a-zA-Z/
number: 4.
string: a string
XML, ? YAML, ( ) Ruby, , , .
Ruby XML, YAML , XML, ( Rails). , , :
{"string" => "a string", "number" => 4.7, "regexp" => /a-zA-Z/}.to_yaml
to_yaml, Object, , Ruby. YAML , . , ?
9. — , .
Ruby Lisp Perl Proc. Proc — « , . , .». :
def gen_times(factor)
return Proc.new {|n| n*factor }
end
times3 = gen_times(3)
times5 = gen_times(5)
times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60
lambda Proc.new, . , Perl Python ( Lisp). PHP, .
Ruby « Proc», , , each, Array:
[1, 2, 4, 6, 8].each {|c| puts c*2} #=> , 2
, do… end, . Ruby .
10. Rails.
, … Rails -. , PHP, Rails Ruby, , .
. Ruby, , . , , , , — .
— , , (, ) . .