業務でRuby(Rails)を使うことになり、
これまでPHPやJAVA、C#、JavaScriptをよく使ってきたのですがチュートリアルから
勉強しているのですが苦戦しております。
以下のようなところで「なんでやねん!」と思いました。
・メソッド名に「!」や「?」と言った演算子の記号が付くところ
・nullではなくnilなところ
・メソッドでreturnがないところ
・privateメソッドが継承クラスからも呼ばれるところ
・「:」が前に付いたり、後ろに付いたり、2つ付いたりやたら出てくるところ
その他の言語間ではそれほど、違いを理解するのに苦労はしなかったのですが
Rubyはとっつきづらい感じがあります。
同じようなご経験がある方や、Rubyのプロの方に習得への近道をご教授いただけると
嬉しいです。(オススメの本や、サイトなど)
↓現在以下のサイトを参考に勉強しております。
https://railstutorial.jp/
https://railsguides.jp/
どうぞよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
言語仕様に疑問を持っても意味がありませんので、受け入れましょう。
自分はC、C++、Perl、JavaScript、Java、PHP、Rubyの順で経験して来ましたが、
Rubyは分かりやすいし最高だと感じました。
結局、言語に対する感性は人それぞれなので合う合わないというのはあります。
しかし、業務でやる以上好き嫌いを言っている場合ではありません。
Ruby自体の理解が十分でないように思うので、railsチュートリアルはまだ早いです。
特に業務でやるのであれば、ruby自体を使いこなすべきと思います。
まずは、普通のRubyの本を買って勉強したほうが時間効率が良いですよ。
最近の本は知りませんが、自分が勉強した時は「たのしいRuby」という本を読みました。
投稿2017/05/23 01:28
総合スコア4025
0
RubyはLISP系言語でないのにもかかわらずLISPの影響を受けている珍しい言語です。
・nil という名前
・シンボルというinternされた文字列が存在する (≒コンパイルされた文字列)
・mapなどいくつかの標準メソッド名(collect等はSmalltalk由来)
・あんまりreturnを書かない(?)
など。
なので、LISPを知っていると違和感ないのですが、Rubyを学ぶためにLISPを学ぶのは不要です。
投稿2017/05/23 04:49
総合スコア84538
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
基本的にrubyは省略(空気読み)言語です。
人間が考えなくても、コンピュータが判断してわかるものは
いちいち、人間が表記しなくてもいい、の信念
より直感的にわかりやすい言語。
のために、言語設計者や言語開発者が血反吐をはく言語です。
まあ、一種の宗教ですよね、各ライブラリもかくあるべきと作られております。
なので、他の言語の常識、ほんとはなくていいんだけど
プログラムがめんど臭くなるから書いといて、っと言ったもの消えている
なので、面食らいます。
従って、ほとんどのRuby入門という書籍は、他の言語からのrubyの入門書ですw
一応、Ruby入門等を読んで欲しいのですが
かくツッコミにお答えします。
- メソッド名に「!」や「?」と言った演算子の記号が付くところ
これはルールではなくゆるい規約と言いますか、!がつくmethodは自身を変更する(破壊的)
?がつくmethodは戻り値がbooleanというのを端的に表しています。
動的型付け言語なので、すごくシンプルで便利なので、強制ではないですが、みんな使っています。
- nullではなくnilなところ
rubyは全てがclassという----(褒め言葉)言語なのでもちろんnil(null)もclassです
methodが使えます。これによって、色々な処理が簡単に書け便利です。nil.nil?みたいな。なので、nullとは違うことを
明示するためにnilと和えて名前を変えてあります?
- メソッドでreturnがないところ
もちろんreturnを明記しても構いません。ただ、returnをするとmethodがそこで終わるので
最後に評価された値が戻り値でいいよねって話です。
- privateメソッドが継承クラスからも呼ばれるところ
これの説明はちょっと難しいのですが、例えばopenclassという概念があって。
同じClass名のclassを作るだけで、簡単にclassを上書きできます。
このときprivate methodを引き継がなかったら、全然楽じゃないのでこうなってます。
- 「:」が前に付いたり、後ろに付いたり、2つ付いたりやたら出てくるところ
これはハッシュとシンボルの省略表記が重なったものです。
まずRubyは
100.times{Class.new("string")}
のようにすると文字列"String"代入の度を100回生成します。
なのでシンボルを使い
100.times{Class.new(:string)}
とやります、またrubyはsetter,getterも省略されていて
100.times{Class.new(:name => :string)}
hash形式とsymbolを使って値にアクセスできます。
さらにこれが100.times{Class.new(name: :string)}
と省略できるので:が並ぶんです。
こんなもんですかね、一度Rubyの楽さに慣れてしまうと戻れない感じがあります。
投稿2017/05/23 01:54
編集2017/05/23 02:00総合スコア2241
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 02:13
2017/05/23 02:24
2017/05/23 02:54
2017/05/23 03:51
2017/05/23 06:20
0
Ruby は正直、癖のある言語系だと思います。
特に Java や C# のような強い静的型付けをする言語に触ってきた人からすると、動的型付けで変数宣言もいらないというのは、危なっかしいとすら思えます。
逆に Perl や JavaScript を多く触ってきた人からすれば、あまり苦にはならないのでしょうけれども、今度はフルオブジェクト指向であるという部分がある意味邪魔をしてきます。
そういう意味で頭を切り替えたうえで、Ruby 特有の作法を覚えるしかないかな、という感じです。
投稿2017/05/23 01:48
総合スコア13703
0
記号や単語の違いなどは、「習うより慣れろ」でそのうち覚えていくかと思いますが、より速く慣れる方法としてシンタックスハイライトがあります。エディタで適切な設定をすれば、文法要素ごとに色が区切れるので、「どこまでが1トークンとして認識されるか」がはっきりすると思います。
Rubyのprivate
、protected
はかなり他言語と違った動きをしますが、private
で覚えるべきルールはたった2つ、「オブジェクト名なし(暗黙のself
に対して呼び出す)、もしくは__send__
経由でしか呼べない」ということです。protected
はライブラリ作成でもやらない限り、自分で書くことはほぼないと思いますので、あまり気にしなくて構いません(参考)。
それより何より、Rubyを特徴づける大きな要素は、メタプログラミングの柔軟さです。たとえば、Railsのモデルは以下のようになっていますが、
ruby
1class Item < ActiveRecord::Base 2end
これだけで、items
というテーブルを読み取って、必要な読み書き用のメソッドを生やしたモデルクラスが出来上がってしまいます。「コードでメソッドやクラスを定義する」ことすらできてしまうぐらいの柔軟性、それがRubyのポイントです。
投稿2017/05/23 01:31
総合スコア145183
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 02:19