X



Ruby 初心者スレッド Part 63
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/04/17(火) 17:46:57.87ID:GYuBFjQi
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 62
https://mevius.5ch.net/test/read.cgi/tech/1511451329/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0781 ◆QZaw55cn4c
垢版 |
2018/08/19(日) 21:12:05.24ID:bW/fB7v7
>>780
CASL なんて覚える気になりません、といって、x86 のいい教科書がありませんね
誰か書いてほしい
0782デフォルトの名無しさん
垢版 |
2018/08/19(日) 22:30:32.56ID:aRJ7Tr37
>>779
つまり:

 俺はRubyよりPythonの方がずっと好きだけど
 (機械学習プログラマーを目指してるんでもなきゃ)
 これから何か始めようって人にRubyを薦めることもあるけど
 自分のお気に入りだからってむやみにPythonを薦める奴の見識は疑うね

ってことですね
Python信者の皆様、お勤めご苦労様です
0783デフォルトの名無しさん
垢版 |
2018/08/19(日) 22:56:05.02ID:xR7/CWZ6
>>782
そりゃひねくれすぎだろ…お前いったい何と戦ってんの?

ただでさえRubyの評判は落ち目なんだから
狂信者が必要以上に貶めるのはやめにしてほしいわ
0784デフォルトの名無しさん
垢版 |
2018/08/19(日) 23:09:03.67ID:wM6XArJ0
>>780-781
2人のイリノイ大学生が使った、LLVM に世界が飛びついたけど、
日本では既に情報処理資格に、仮想アセンブラ CASL2 があった

LLVM/Clang 実践活用 ハンドブック、出村成和、2014

詳説 Cポインタ、2013、オライリー・ジャパン

OSのすべての機能を学びたいなら、ムック本の
Linuxエンジニア養成読本、第3版、2016
0785デフォルトの名無しさん
垢版 |
2018/08/19(日) 23:56:53.17ID:/dQ+RHN7
>>752
プログラミングの基本って、
・変数への代入、関数(メソッド)の使い方
・配列、ハッシュ(連想配列)とかのデータ構造
・値の比較と条件分岐(if文とかswitch文)
・繰り返し処理(do while文とか)
こういうのだけど、これはどの言語にもあるものだから、
一度覚えればほぼそのまま使い回しがきく。
(if文じゃなくてif式、とか若干の違いを言語ごとに覚えるだけ)

あとは「オブジェクト指向」の考え方というか、
概念みたいなのを理解できてれば、
どの言語に移ってもそんなに苦労せず使えるようになる。

で、そういう基本は、C++でもJavaでもRubyでもPythonでもJavaScriptでも、
どれやったって学べるわけだけど、
最近は3DCGのアプリとか、機械学習とかのジャンルで
Pythonが採用されるケースが多いので、
ゼロから始めるなら使い道の多いPython、みたいな意見がどうしても多くなる。
(Rubyは使いやすい言語だけど、Webサイト構築以外での採用例があまりない)

けど、「自分のやりたいこと」がなにかを決めた上で、
「それを最短距離でできる言語はどれか」を
詳しい人に教えてもらって始めるのが一番おすすめ。
(自分のやりたいことがC++でないとできないなら、最初からC++をやるべき)

特にやりたいことがなければ、
本屋で各言語の入門書をいろいろ立ち読みして、
自分が理解できそうな言葉で書いてあるやつを選んで始めれば、と思う。

ちなみにPythonもJavaも、初心者が学ぶ言語としては
悪くない選択肢です。
0786デフォルトの名無しさん
垢版 |
2018/08/20(月) 00:34:57.15ID:6r2cvJMF
>>785
Pythonは3DCGでは最近じゃないから
ほとんどの奴がPythonの存在を知らないときから使われてる
0790デフォルトの名無しさん
垢版 |
2018/08/20(月) 10:03:01.56ID:1nsldRzy
まぁ古参はC、下手したらアセンブラからの経験者で
トレンドに合わせてステップアップしながら言語を覚えただろうから
初心者が何の言語から勉強するべきかなど分かるはずもないんだよな

シンプルで覚えることが少なく今なお第一線級で活躍している言語なら間違いなくC言語
C言語ほどシンプルで実用性のある言語はない
OSが書かれてる本物の言語ってだけでもモチベーションになる
全ての実用言語の元になってると言えるし、最初にやるには良い言語だ
良くも悪くも

一方で楽しさ優先なら間違いなくC#でポトペタ開発でしょ
めちゃ楽しいが、WPFなどの背景にある仕組みの複雑さに挫折するかも
でも触ってて楽しいだろうなぁ、画面作るだけならマウスだけで出来るし

あぁRubyとかPythonとかは寄り道みたいなものだから最初にしなくてよいよ、ハマるから
動的型のスクリプト言語など色物なのに、最初にやるとか、どうかと
俺は絶対おすすめしないね、プログラミング言語の本流じゃないからね
特にここ10年は静的型が本流ってみんな知ってるだろ、いじわるめが
0791デフォルトの名無しさん
垢版 |
2018/08/20(月) 10:13:16.57ID:1nsldRzy
あと、環境設定がどうとか、約一名盛り上がっているようだが
そういう人にはVisualStudioがおすすめだろう
これだけ完成度の高いソフトが無料で使えるのは凄すぎる
トータルで言えば、初心者におすすめなのは
VisualStudioとC#でポトペタ開発って事になるのかな
でもまあ、C#もバージョンがどんどん上がって今やとても複雑な言語だからなぁ
ソフトウェア業界が10年20年かかって常識にしてきたことを
一気に追体験しようというのはなかなか酷だわな
本当はC言語とWin32APIあたりから始めるのがシンプルで理想なんだが
モチベーションがつづくかな、それさえ気にしなければよい選択なんだが
どちらにせよ、RubyやPythonのような本流主流じゃない言語を最初にやるのは止めたほうが良い
筋が悪い、悪かった、というか悪いお手本みたいな言語だから
0792デフォルトの名無しさん
垢版 |
2018/08/20(月) 10:21:38.59ID:1nsldRzy
手続き型言語でプログラム書くなら、どのみちメモリのことは意識しなければならないし
ポインタが分からないって時点でプログラマには向いてないというか何というか
ただ、結局、安全かどうかなんだよ
その点C言語は安全とは言い難いが
意図せずヌルポするのはヌル安全の機能が無い言語ではどれも同じようなものじゃろ

その観点から言うと、単なるタイポすらコンパイル時にチェックしてくれない
動的型言語は初心者に進めるのは止めたほうがよい
初心者ほどタイポするだろうからな
それが言いたかった
0796デフォルトの名無しさん
垢版 |
2018/08/20(月) 15:18:21.21ID:qTCaqW3V
>>792
> 単なるタイポすらコンパイル時にチェックしてくれない動的型言語

(きっとRubyのdid_you_meanはおろか70年代のLispにすらあったDWIMも知らないんだろうな…)
0798デフォルトの名無しさん
垢版 |
2018/08/20(月) 15:30:49.82ID:1nsldRzy
とにかく、初心者はプログラムを間違えるものなんだよ
一発で動くことは先ずない
それならコンパイルの時点でよりたくさんのエラーを検出してくれた方が学習が捗るだろ?
初心者にRubyなんか薦めるなって事だ
その人を蹴落としたいなら別だが
0801デフォルトの名無しさん
垢版 |
2018/08/20(月) 16:43:09.37ID:GIvuOFoC
>>799
重要なのはプログラム実行前ってことだよ
静的とも言う。

実行した後はいろんな状態があり得るが
実行前というのは状態は一つだ。

つまりいろんな状態にしなければわからないというのは
問題を発見するまでに果てしなく時間がかかるということ
だからなるべく実行前にわかるようにするのが良い
0802デフォルトの名無しさん
垢版 |
2018/08/20(月) 16:47:09.67ID:fD9Nu4LZ
いやeval getsするだけで可能性は可算無限でしょ
eval gets
p A
# input
A = 'hoge'
とかどうすんのよ
0806デフォルトの名無しさん
垢版 |
2018/08/20(月) 18:09:19.60ID:1nsldRzy
何だったらコンパイル時どころか
最近のエディタだったら書いてる途中でリアルタイムで文法チェックするからな
間違ってたら波線とか出る
そういう状況なので、なるたけ多くのことが静的にわかったほうが良いんだよ
実行時にエラーにするなら馬鹿にでもできる!!って思うし
やってみてダメでしたってな、バカっぽいでしょ
事前に分かるから賢い
0809デフォルトの名無しさん
垢版 |
2018/08/20(月) 18:50:47.34ID:fD9Nu4LZ
このスレって質問者をほっぽりだして変なのがしゃしゃり出てくること度々あるよな
0811デフォルトの名無しさん
垢版 |
2018/08/20(月) 20:37:42.02ID:GIvuOFoC
>>810
いや、自分で書いたコードの話なんだけど?
Smalltalkは自分の書いたコードがすでに動いてないと
そういうエラーはでないでしょ。
0812デフォルトの名無しさん
垢版 |
2018/08/20(月) 20:43:46.47ID:NYBtZzEL
>>811
バカなの?コンパイル時って言ってるやん何度も

ともかくスペルミスくらいなら動的型言語でも静的にチェック可能なの

わっかんないやつだなー
0813 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 20:48:48.89ID:VU5jvdn2
>>812
>スペルミスくらいなら動的型言語でも静的にチェック可能なの
型宣言がないのに、そんなことが可能なのでしょうか?
0814デフォルトの名無しさん
垢版 |
2018/08/20(月) 20:56:45.04ID:GIvuOFoC
ローカル変数だけだったりしてねw

近くの情報は周辺を見ればいいだけだから問題はすぐに分かるんですよ。
遠くの情報、例えばインターフェースが一致しているかどうかが
わからないと使い物になりませんね
人間がやると大変なものこそコンピュータにやらせないと
0815デフォルトの名無しさん
垢版 |
2018/08/20(月) 21:35:34.32ID:1nsldRzy
なんで静的型の後追いみたいなことで苦労してるんだろうね
初めから静的型言語使えばよいだけなのにね
怠惰を求めて勤勉に行き着くってやつなのかね
動的型全体がそうだよね
処理系書いてる連中も、言語使ってる連中も
楽しようとして最終的に苦労する
なにこれコワイ
0816デフォルトの名無しさん
垢版 |
2018/08/20(月) 21:43:42.44ID:NYBtZzEL
>>813
構文木にできれば(ローカルに限らず)未宣言の変数だとか未知のメソッド呼び出しだとか程度なら
簡単に分かる
Lispみたいに構文も単純なら構文ミスも指摘して修正候補を提示することも可能(例:InterlispとかのDWIM)
0817 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 21:52:27.57ID:VU5jvdn2
>>816
>未宣言の変数だとか
動的型付け言語ってそもそも変数宣言はないのでは?
0818デフォルトの名無しさん
垢版 |
2018/08/20(月) 22:15:42.75ID:NYBtZzEL
>>817
変数を宣言させるかとそれに型情報が付くかどうかは別の話だよ
変数宣言をさせたら動的型言語じゃなくなるという法はない
宣言を課さない言語でも初回代入を宣言と見なす場合もある
0819 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 22:20:21.86ID:VU5jvdn2
>>818
>変数宣言をさせたら動的型言語じゃなくなるという法はない

たしかにそのとおりですが、
でも実際問題、変数宣言をしてかつ動的型付けである言語は存在しますか?
0820デフォルトの名無しさん
垢版 |
2018/08/20(月) 22:29:16.58ID:1nsldRzy
そんなの珍しくないよ
JavaScriptとかな
変数宣言には二つの役割があって、一つは型を宣言することだけど
もうひとつスコープを宣言するって役割もある
だから動的型言語でも素直なレキシカルスコープが欲しければ変数宣言があってもよい
一方で変数への最初の代入を変数宣言の代わりにする言語は
だいたいスコープがバグってる
ただの変数への代入か、新たな変数を宣言したのか、区別がつかないからなwww
それでnonlocalだの@だの、ダサいだろ?
ま、そういうわけで、やっぱり変数宣言は有ったほうが良いし
どうせ変数宣言するなら型を書いても良い気がするし
動的型言語が衰退するのは当たり前だったわ
なんせ、ありとあらゆるスジが悪いんだよ
0822 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 22:42:40.49ID:VU5jvdn2
>>821
def f(xyz)
"Hello, #{abc}!"
end

というメソッド定義があって
本当なら変数として xyz のところを間違えて abc と書いてしまった
というシチュエーションでも、エラーがでないでしょう?
0823デフォルトの名無しさん
垢版 |
2018/08/20(月) 22:52:22.44ID:KNimMRpP
>>822
あのさぁ…宣言を課すこととミスを検出できるか(するか)どうかはまた別の話なんだが?

今は「変数宣言をしてかつ動的型付けである言語は存在しうるか?」って話なんじゃないの?
0824 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 22:58:45.39ID:VU5jvdn2
>>823
「宣言を課す」というのは「宣言をしていない変数は変数として認識しない」という意味なのでは?
0827デフォルトの名無しさん
垢版 |
2018/08/20(月) 23:55:25.50ID:PXXr8Lzz
>>824
Rubyはそうしていないというだけで、コンパイル時に
abcが未代入(代入操作で宣言を兼ねるRubyでは未宣言にあたる)である事実や
あるいはメソッドとして未定義である事実をもってxyzとすべき記述のミスでは?との判断を下し
そうであれば修正を促すことは可能だろう?

予め釘を刺しておくけど、ミスの可能性があることとコンパイル可能であることとはまた別の話だからな!
0828デフォルトの名無しさん
垢版 |
2018/08/21(火) 00:12:58.46ID:TQPukUfs
>>824
もしかして
Rubyでは無引数(括弧なし)のメソッド呼び出し記述は同名のローカル変数のアクセス記述を遮蔽してしまう
っていう仕様をしらないとかいうオチ?

もしこのルールがなければ>>822はキミの想定通りエラーのはずだよ
0829デフォルトの名無しさん
垢版 |
2018/08/21(火) 00:21:47.25ID:kxzeRRBS
JavaScript では、var の有無で、皆ハマった。
だから、ES2015(ES6) で、let, const を作って、ブロックスコープも作った

this の挙動もおかしい。
だから、Haxe のthisは、常にインスタンスを指すように変えられた

Python でも、nonlocal とか、頭おかしいw

Ruby では、関数スコープ・ブロックスコープの2つがあるから、バグりにくい

a = 1

def f
puts a # ここで、未定義の変数を参照してエラー
puts a = 2
end

f()
0830 ◆QZaw55cn4c
垢版 |
2018/08/21(火) 00:34:00.24ID:Wpz7rvAB
>>827
>代入操作で宣言を兼ねる
これは危険ですね
なぜなら、変数が未代入かどうか、正確には、変数が未代入「でないか」どうか、をソースコードのセマンティクスから判断するのは困難だと思うのです
0831デフォルトの名無しさん
垢版 |
2018/08/21(火) 01:41:26.90ID:WMlArXdo
>>827
Rubyは、未定義メソッドの呼び出しが可能なんじゃないか?
そのためのフォールバック用メソッドがあったはずだが。
0832デフォルトの名無しさん
垢版 |
2018/08/21(火) 01:47:26.07ID:kxzeRRBS
メタプログラミング Ruby 第2版、2015

で紹介している、Module#define_method(), method_missing() とかだろ?
0835デフォルトの名無しさん
垢版 |
2018/08/21(火) 05:20:08.29ID:dhW5/kUC
>>831
そうそう。だからRubyじゃコンパイル時にわからないんだよ。
例えば以下のように、一行目にexitしてしまえば
その下にいくら変なコードがってもコンパイル時にチェックなんかできない

exit
aaa = 1312
class Hoge
 def hoge
 end
end
h = Hoge.new
h.hage
i = IIII.new


言い換えると、動的言語ではファイル単位でしかコードを見てないので
少なくともファイル外にある情報はわからない
検出できるのは文法エラーぐらいだよ
残念なことにね。それが現実。
0836デフォルトの名無しさん
垢版 |
2018/08/21(火) 07:09:45.22ID:9qt5lkVf
だからさぁRubyが駄目ってとこを動的型言語の限界だと一般化しないでくれ
話がまったく噛み合わない
0837デフォルトの名無しさん
垢版 |
2018/08/21(火) 07:32:38.20ID:9qt5lkVf
>>831
だからミスの可能性がある(そしてその指摘や修正の提案が可能である)ことと
コンパイル可能な(つまり状況が整えば実行可能になる)コードであることとは
また別の話だって釘を刺してるだろうに…
0839デフォルトの名無しさん
垢版 |
2018/08/21(火) 07:40:39.17ID:9qt5lkVf
>>830
Ruby限定の欠陥の話がしたいのか動的型言語一般の限界の話をしたいのかをまず表明してくれ
>>813からの流れは動的型言語一般の話ってわけじゃなかったのか?
0840デフォルトの名無しさん
垢版 |
2018/08/21(火) 08:20:58.17ID:dhW5/kUC
まああれだ、Smalltakerさんがちゃんとコードで説明してくれればいい

ここでオンラインでSmalltalkを実行できる
https://www.tutorialspoint.com/execute_smalltalk_online.php

ここに
Transcript show: 'Hello, world!'.

Transcript show: 4 sqrt printString.

と書くと、「Hello, world!2.0」と表示される

ここに
Transcript show: 'Hello, world!'.

Transcript show: 4 sqrtaaa printString.
と書くと、「Hello, world!」と表示されてから
エラーが表示される。

コンパイル時にチェックが行われるというのなら4という数字に
sqrtaaaというメソッドはないから実行時前にエラーを検出できるはずだ

そうならないので、未定義メソッドの検出はできない。
反論はコードでどうぞ
0842デフォルトの名無しさん
垢版 |
2018/08/21(火) 12:52:50.65ID:eDZ5kOgA
>>840
Smalltalkの“confirm, correct, or cancel”を試したいならこれはIDEを前提とした機構なので
GNU SmalltalkのようにUNIXとの連携を重視したCUI前提の変わり種のSmalltalkには実装されておらず使えません
またPharoのように今風のシンタックスハイライトのついでに色で警告する方式がデフォになった処理系でも抑制されています
“confirm, correct, or cancel”が動く様子やその仕組みを検証したいのであればVisualWorksかSqueakあたりがよいでしょうね

SqueakならSqueakJSというWebブラウザで動作する処理系があり、これならすぐに動かせるのでお薦めです
今回のような古くからの機構に興味があるのなら DEMOS の Mini で起動できる Mini Squeak 2.2 あたりが軽くてよいのではないでしょうか
(ワークスペース変数導入後、変数名のミススペルチェックはワークスペースでは機能しないためこの点でも今回の検証には古い方がよいでしょう)
https://squeak.js.org/

起動後まずデスクトップクリック→open...→transcriptでトランスクリプトウインドウを呼び出しておき、それから
どこでもよいので(Welcome to Mini Squeak 2.2 の適当な場所でも、open...→workspaceで新しいワークスペースを開いてもOK)

Transcript cr; show: 'Hello, world!'.
Transcript cr; show: 4 sqrt printString

とタイプして入力後、2行ともドラッグして選択してから右クリック(あるいは左手のスクロールバーとの境界にポインタを合わせて左クリック)
→do it (d) で>>840のコード(cr; は出力を見やすくするために入れました^^;)が動かせます
sqrtaaaに変えて再びdo itすれば、Hello, world!と表示される*前*に“confirm, correct, or cancel”と促されるはずです


関連してLispのDWIM(これも実行前の静的時チェック)はInterlispのマニュアル第15章で取り上げられていますので参考まで
https://archive.org/stream/bitsavers_xeroxinternceManualOct1983_52302609?ui=embed#page/n389

>>796
> 70年代のLispにすらあったDWIM

同書にもあるとおりDWIMは1960年代からです
“DWIM, the Do-What-I-Mean error correction facility, was introduced into this system in 1968 by Warren Teitelman”
0843デフォルトの名無しさん
垢版 |
2018/08/21(火) 12:54:39.77ID:qWx5Zods
>>809
どこにでもいる
0845デフォルトの名無しさん
垢版 |
2018/08/21(火) 13:05:22.31ID:qWx5Zods
「間違ってRubyを始めてしまった人へ贈るPython入門」
もいいな
0846デフォルトの名無しさん
垢版 |
2018/08/21(火) 18:59:29.56ID:WMlArXdo
Pythonは、試してみたい気持ちもあるものの、よろしくないところもいくらか知ってるので、微妙なんだよなー。

そういえば、ボスが引退するそうだが、なにか変わんのかねえ。
0847 ◆QZaw55cn4c
垢版 |
2018/08/21(火) 19:15:33.64ID:Wpz7rvAB
>>839
個人的には ruby を改良しようといろいろ画策しています、宣言付き ruby とか
動的型付け言語にて変数宣言を導入すればずいぶんと使い勝手も変わるだろうと想像しています
そういう視点でおねがいします
0849デフォルトの名無しさん
垢版 |
2018/08/21(火) 20:58:28.00ID:zx3sEUVJ
>>847
Rubyは変数宣言を省略したことが原因の仕様がらみのトラブルが少なくない
そんな犠牲をはらっても(型も含め)宣言を書かせないことがMatzの優先事項の上位にあるわけ
キミの「改良」案は何を今更だしそもそもMatzや取り巻きが耳を貸す可能性はゼロだろうね
0852デフォルトの名無しさん
垢版 |
2018/08/22(水) 00:20:47.79ID:h82tfzI1
結局、言語を改良していくと、Haxe になる

マルチ言語・マルチプラットフォーム、
this の挙動を変えて、型推論・パターンマッチ・引数付き列挙

Ruby は、JS, Python などど違って、関数スコープ・ブロックスコープがあって、
関数スコープは強固だから、変数を内側へ通さない

だから変数宣言が無くても、バグらない

ES2015(ES6)でも、ブロックスコープが採用された。
変数宣言も、以前からのvar に加えて、const, let も作られた
0853デフォルトの名無しさん
垢版 |
2018/08/22(水) 05:07:26.61ID:O2PM/1qE
>>852
なんで関数スコープとかいう小さい話してるんだ?
小さいものであれば、少し頑張れば対応可能なのは
わかってるんだよ。もっと広い範囲、オブジェクト間の通信とか
プロジェクト全体のレベルでバグが発生するから型がいるんだよ
0857デフォルトの名無しさん
垢版 |
2018/08/23(木) 12:08:41.61ID:29gBK1aD
言い出しっぺの法則
0860デフォルトの名無しさん
垢版 |
2018/08/26(日) 10:37:18.06ID:0HcSjLFv
教えてください!
[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?
当方3ステップ本を学習中、仕事でRubyを使えるようになりたいと思っています。
よろしくお願いします!!
0861デフォルトの名無しさん
垢版 |
2018/08/26(日) 12:09:12.86ID:mLZLsxB6
>>860
仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ
Rails DSLは別言語なレベルにまでカスタマイズされてるから、最初に素のRubyをやるとかえって混乱するのでお勧めできない
あとはLinux使ったWebサイト運用構築のインフラ本を一冊と、AWSの本一冊かな
WebやるわけじゃないんならPythonで勝ち馬に乗ろう
0862デフォルトの名無しさん
垢版 |
2018/08/26(日) 12:46:28.68ID:w0D5YFHr
この順番で読む。
Rails は、無料のRails チュートリアルをやってもよい。
Rails の前に、Sinatra をいじくりまわすのも良い

たのしいRuby 第5版、2016

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

改訂2版 パーフェクトRuby、Rubyサポーターズ、2017


改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
実践Ruby on Rails 4: 現場のプロから学ぶ本格Webプログラミング、黒田努、2014

パーフェクト Ruby on Rails、2014
動作環境、Rails 4.0.5, 4.1.1
0863デフォルトの名無しさん
垢版 |
2018/08/26(日) 13:00:08.38ID:2ZbuD4Bs
>>859
いらなくなったとき
0864デフォルトの名無しさん
垢版 |
2018/08/26(日) 18:33:30.03ID:kjnpmDtT
>>860
>[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?

どちらもオススメだけど、難易度であれば [プロ] よりも [パーフェ] のほうが高い
[パーフェ] は幅広く高度な話題を扱うプロ必読の本だけど、
説明もプロ向けで簡潔だから初心者では読んでも意味不明な魔術書と感じるかもしれない
それに対して、[プロ] は話題を厳選して丁寧に分かり易く解説している印象を持った

だから初心者へのオススメコースであれば以下の順序になる:
・たのしいRuby
・プロを目指す人のためのRuby入門
・パーフェクトRuby
0865デフォルトの名無しさん
垢版 |
2018/08/26(日) 18:47:00.00ID:kjnpmDtT
>>861
>仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ

質問者は「Webをやりたい」と希望しているわけでもないのに
ナゼかRailsを勧める話が噛み合わない返答、日本語が不自由な人ですか?


>Rails DSLは別言語なレベルにまでカスタマイズされてるから、
>最初に素のRubyをやるとかえって混乱するのでお勧めできない

つまり:
  Pythonは手続き型プログラミングに特化して設計された言語だから、
  >>861のようなPythonプログラマには、手続き型にオブジェクト指向と関数型が融合された
  素のRubyをやると混乱した苦い経験が過去にあったのでお勧めできない、
という解釈できますね


>WebやるわけじゃないんならPythonで勝ち

つまり:
  トレンディーにセンシティブなナウいヤングメンにはPythonがお勧め
ということですね、たいへんわかりやすいです
0866デフォルトの名無しさん
垢版 |
2018/08/26(日) 19:39:05.79ID:clMe+MHZ
>>864
プロを目指す人のためのRuby入門は本当に入門用、yieldやProcの解説までで終わり。
パーフェクトRubyはメタプログラミングとかGemの作り方とか実践的なことまで書いてある。
0872デフォルトの名無しさん
垢版 |
2018/08/26(日) 21:48:43.66ID:SaWTBVer
>>871
TypeScriptはJavaScriptに引っ張られる部分がどうしてもあるからね
さすがに似たようなもんではないと思う
JavaScriptの一大メリットである環境整備のしやすさもTypeScriptにはないし

初学者ならRubyは学びやすいと思うしいいと思うよ
たのしい本とかしっかりした書籍もあるしね
0873デフォルトの名無しさん
垢版 |
2018/08/26(日) 23:11:11.23ID:2xrJOS4Z
趣味でやるならRubyは書くの楽しいしお勧めできる
手に職付けるつもりなら全くオススメしないけど
0874デフォルトの名無しさん
垢版 |
2018/08/26(日) 23:26:48.25ID:w0D5YFHr
「プロを目指す人のためのRuby入門」の著者・伊藤淳一は、YouTube の動画がよい。
無料のRails チュートリアルをやった人は、彼の動画を見るのもよい

Junichi Ito

Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://youtu.be/ycOeM2umXkY

プロになる人は「Effective Ruby」は読んでおけ。
どの言語でも「Effective 何々」というのは、プロの必須本
0875デフォルトの名無しさん
垢版 |
2018/08/27(月) 00:26:10.32ID:r5tUtp1V
Rubyはそのコード効率の良さからちゃちゃっと書けるのがメリット
試作や使用頻度の低いツールの作成に重宝する
0876デフォルトの名無しさん
垢版 |
2018/08/27(月) 08:02:06.98ID:QAQ5xX6o
試作(笑)
そういやsassも最初はrubyで作られていたが、
遅いって言うんで、C言語で再実装されて
今じゃそっちが主流になったな
0878デフォルトの名無しさん
垢版 |
2018/08/27(月) 12:19:20.56ID:Fz9xVlti
遅くなりましたが、返信頂きありがとうございます!3ステップ本でも苦戦しているので、これをいったん終わらせてから[プロを目指す]をやろうと思います
>>861
>>864
0879デフォルトの名無しさん
垢版 |
2018/08/27(月) 12:21:01.46ID:Fz9xVlti
>>874
動画があるのは知りませんでした!
[efective]も読もうと思います!ありがとうございます!
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況