- 1 名前:デフォルトの名無しさん [2018/04/17(火) 17:46:57.87 ID:GYuBFjQi.net]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお Ruby on RailsについてはWEBプログラミング板で 前スレ Ruby 初心者スレッド Part 62 https://mevius.5ch.net/test/read.cgi/tech/1511451329/ るりまサーチ (リファレンス検索) rurema.clear-code.com/ Rubyist Magazine - るびま jp.rubyist.net/magazine/ 逆引きRuby www.namaraii.com/rubytips/
- 792 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 12:01:03.16 ID:AHbKk0RR.net]
- >>742
プログラミング言語は道具だ。道具を使って何をしたいか(目的)が重要なのではないのかな 逆に目的が決まれば適したプログラミング言語も自然と絞られてくる なんとなくならメジャーなのをやっておけとしか・・・
- 793 名前:745 mailto:sage [2018/08/19(日) 12:04:48.91 ID:wM6XArJ0.net]
- 例えば、C++ のロベールを読むよりも、
「たのしいRuby」「みんなのPython」「スッキリjava」の3冊を3回読む方が、 はるかに速く読めるし、得るものも大きい。 50時間もあれば、全部読める 一方、C++ で50時間使っても、ほとんど何も作れない。 やってみればわかるけど、時間の無駄 C/C++ などポインタがある言語は、すぐにバグるから、すごく時間を損する
- 794 名前:745 mailto:sage [2018/08/19(日) 12:52:39.81 ID:wM6XArJ0.net]
- https://rubyinstaller.org/
Ruby Installer を使うなら、2.4 系を使う。 2.5 系は、まだ新しいから使わないように irb は日本語でバグるから、使わないように。 使うなら、WSL でLinux(Ubuntu)側で、irb を使う VSCode もインストールして、Rubyの拡張機能も入れてみれば?
- 795 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 13:14:24.10 ID:CsoxUTBy.net]
- 環境変数がわからないのはともかく自分で調べて理解できないレベルなら諦めろ
- 796 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 13:31:40.72 ID:CkJFwlQB.net]
- これが参考になると思う
https://pbs.twimg.com/media/DjCWzQYU4AAng_H.jpg
- 797 名前:デフォルトの名無しさん [2018/08/19(日) 13:35:43.71 ID:plhuPGbS.net]
- web上では見たことあるけど
出版物上で観るのは初めて感
- 798 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:15:20.06 ID:qqMgBYp8.net]
- なんやこれw
- 799 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:21:25.19 ID:OBahve6K.net]
- プログラミング経験0ならこっちから始め
- 800 名前:スほうが良くないか?
https://www.nhk.or.jp/school/programming/start/index.html [] - [ここ壊れてます]
- 801 名前:745 mailto:sage [2018/08/19(日) 14:30:49.79 ID:wM6XArJ0.net]
- 言語の初心者用の本は、PCの初心者用の本じゃない!
言語の本はあくまで、その言語を知らないだけで、 環境変数とか、絶対・相対パスとか、cd, ls などの基本コマンド、 PowerShell の使い方などは、知っている事が前提 こういうOS の知識を、教えている本はない。 それを書けば、言語を説明するページが減るから、書かない つまり言語の本は、PCの初心者を対象としていない! 既に、OS の知識はあって、その言語だけを知らない人向け
- 802 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 14:42:48.43 ID:OBahve6K.net]
- そういう人のためにはお膳立ての澄んだIDEが一番良いんでない?
https://forest.watch.impress.co.jp/docs/news/1133620.html
- 803 名前:745 mailto:sage [2018/08/19(日) 14:46:26.87 ID:wM6XArJ0.net]
- 762 みたいな本を書いている奴は、勉強を何もわかっていない。
なぜ生徒が、プログラミングを嫌うか 言語には、勉強する順番がある。 小学生にいきなり、大学教育をしても無駄。 小中高大学と、個人の成長には、勉強する順番が重要。 知識を下から、積み重ねていかないといけない 1. 動的・軽量言語 Ruby, Python, JavaScript 2. 静的言語 Java, Kotlin, C# 3. ポインターのある言語 C, C++ 今の大学教育では、C から教えているから、皆プログラミングはしょーもないってやめる。 これは、Rubyの女神・女優の池澤あやかが言ってる
- 804 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:14:41.19 ID:CsoxUTBy.net]
- >>768
教養時代に必修科か準必修科目でRubyやったぞ 薬学とか農学部進学予定の奴までやってたのはかわいそうだったけど
- 805 名前:デフォルトの名無しさん [2018/08/19(日) 15:33:42.02 ID:aRJ7Tr37.net]
- >>753
つまり、Python信者は他言語スレまで出張してPython推しするほど必死だと
- 806 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 15:39:09.36 ID:EuNb7t2q.net]
- >>769
今日日、農学志望の人はRubyくらい使う機会があるかもね。 集計統計とか農業IoTとかで。
- 807 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:00:26.64 ID:wM6XArJ0.net]
- ラズパイでは、Python も良いけど
ウェブ系では、Ruby が強い。 Rails から、Vue.js, React も使える
- 808 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:15:56.38 ID:+KX+Ofsb.net]
- ルビィストとか世界中が失笑してるから
- 809 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:29:07.49 ID:CsoxUTBy.net]
- >>773
失笑って言葉の意味まちがってるぞハゲ
- 810 名前:デフォルトの名無しさん [2018/08/19(日) 16:35:26.45 ID:plhuPGbS.net]
- プッ
- 811 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:46:14.03 ID:j789RV8B.net]
- >>770
言語なんか複数使えて適宜使い分けられて当然でしょ
- 812 名前:デフォルトの名無しさん [2018/08/19(日) 17:01:32.24 ID:aRJ7Tr37.net]
- >>743
つまりPython推しのためであれば、他言語スレでの荒らし行為も正当化されると いやあPython信者って怖いですね
- 813 名前:777 [2018/08/19(日) 17:02:42.12 ID:aRJ7Tr37.net]
- アンカミスを訂正:
X:>>743 O:>>776
- 814 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 20:07:29.27 ID:xR7/CWZ6.net]
- 俺はPythonよりRubyの方がずっと好きだけど
(Railsプログラマーを目指してるんでもなきゃ) これから何か始めようって人には断然Pythonを薦めるし 自分のお気に入りだからってむやみにRubyを薦める奴の見識は疑うね
- 815 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 20:49:04.45 ID:OBahve6K.net]
- CASL II/COMET IIでアセンブラの基本を学んでいるとポインタで死ぬことはなくなる。
序でに基本情報の試験にそのまま使える。 https://www.jitec.ipa.go.jp/1_20casl2/casl2dl_001.html
- 816 名前: mailto:sage [2018/08/19(日) 21:12:05.24 ID:bW/fB7v7.net]
- >>780
CASL なんて覚える気になりません、といって、x
- 817 名前:86 のいい教科書がありませんね
誰か書いてほしい [] - [ここ壊れてます]
- 818 名前:デフォルトの名無しさん [2018/08/19(日) 22:30:32.56 ID:aRJ7Tr37.net]
- >>779
つまり: 俺はRubyよりPythonの方がずっと好きだけど (機械学習プログラマーを目指してるんでもなきゃ) これから何か始めようって人にRubyを薦めることもあるけど 自分のお気に入りだからってむやみにPythonを薦める奴の見識は疑うね ってことですね Python信者の皆様、お勤めご苦労様です
- 819 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 22:56:05.02 ID:xR7/CWZ6.net]
- >>782
そりゃひねくれすぎだろ…お前いったい何と戦ってんの? ただでさえRubyの評判は落ち目なんだから 狂信者が必要以上に貶めるのはやめにしてほしいわ
- 820 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 23:09:03.67 ID:wM6XArJ0.net]
- >>780-781
2人のイリノイ大学生が使った、LLVM に世界が飛びついたけど、 日本では既に情報処理資格に、仮想アセンブラ CASL2 があった LLVM/Clang 実践活用 ハンドブック、出村成和、2014 詳説 Cポインタ、2013、オライリー・ジャパン OSのすべての機能を学びたいなら、ムック本の Linuxエンジニア養成読本、第3版、2016
- 821 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 23:56:53.17 ID:/dQ+RHN7.net]
- >>752
プログラミングの基本って、 ・変数への代入、関数(メソッド)の使い方 ・配列、ハッシュ(連想配列)とかのデータ構造 ・値の比較と条件分岐(if文とかswitch文) ・繰り返し処理(do while文とか) こういうのだけど、これはどの言語にもあるものだから、 一度覚えればほぼそのまま使い回しがきく。 (if文じゃなくてif式、とか若干の違いを言語ごとに覚えるだけ) あとは「オブジェクト指向」の考え方というか、 概念みたいなのを理解できてれば、 どの言語に移ってもそんなに苦労せず使えるようになる。 で、そういう基本は、C++でもJavaでもRubyでもPythonでもJavaScriptでも、 どれやったって学べるわけだけど、 最近は3DCGのアプリとか、機械学習とかのジャンルで Pythonが採用されるケースが多いので、 ゼロから始めるなら使い道の多いPython、みたいな意見がどうしても多くなる。 (Rubyは使いやすい言語だけど、Webサイト構築以外での採用例があまりない) けど、「自分のやりたいこと」がなにかを決めた上で、 「それを最短距離でできる言語はどれか」を 詳しい人に教えてもらって始めるのが一番おすすめ。 (自分のやりたいことがC++でないとできないなら、最初からC++をやるべき) 特にやりたいことがなければ、 本屋で各言語の入門書をいろいろ立ち読みして、 自分が理解できそうな言葉で書いてあるやつを選んで始めれば、と思う。 ちなみにPythonもJavaも、初心者が学ぶ言語としては 悪くない選択肢です。
- 822 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 00:34:57.15 ID:6r2cvJMF.net]
- >>785
Pythonは3DCGでは最近じゃないから ほとんどの奴がPythonの存在を知らないときから使われてる
- 823 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 01:03:33.27 ID:OYF5TU4U.net]
- ツール組み込みのPythonは未だに2だったりするんじゃないの?
- 824 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 01:43:39.45 ID:ul3gEuNL.net]
- 組み込みだとLua、mruby、JavaScriptあたりも使われている
- 825 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 06:59:19.60 ID:1lIz0FhB.net]
- しれっとmrubyを混ぜるな
mrubyなんか誰も使ってない
- 826 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 10:03:01.56 ID:1nsldRzy.net]
- まぁ古参はC、下手したらアセンブラからの経験者で
トレンドに合わせてステップアップしながら言語を覚えただろうから 初心者が何の言語から勉強するべきかなど分かるはずもないんだよな シンプルで覚えることが
- 827 名前:ュなく今なお第一線級で活躍している言語なら間違いなくC言語
C言語ほどシンプルで実用性のある言語はない OSが書かれてる本物の言語ってだけでもモチベーションになる 全ての実用言語の元になってると言えるし、最初にやるには良い言語だ 良くも悪くも 一方で楽しさ優先なら間違いなくC#でポトペタ開発でしょ めちゃ楽しいが、WPFなどの背景にある仕組みの複雑さに挫折するかも でも触ってて楽しいだろうなぁ、画面作るだけならマウスだけで出来るし あぁRubyとかPythonとかは寄り道みたいなものだから最初にしなくてよいよ、ハマるから 動的型のスクリプト言語など色物なのに、最初にやるとか、どうかと 俺は絶対おすすめしないね、プログラミング言語の本流じゃないからね 特にここ10年は静的型が本流ってみんな知ってるだろ、いじわるめが [] - [ここ壊れてます]
- 828 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 10:13:16.57 ID:1nsldRzy.net]
- あと、環境設定がどうとか、約一名盛り上がっているようだが
そういう人にはVisualStudioがおすすめだろう これだけ完成度の高いソフトが無料で使えるのは凄すぎる トータルで言えば、初心者におすすめなのは VisualStudioとC#でポトペタ開発って事になるのかな でもまあ、C#もバージョンがどんどん上がって今やとても複雑な言語だからなぁ ソフトウェア業界が10年20年かかって常識にしてきたことを 一気に追体験しようというのはなかなか酷だわな 本当はC言語とWin32APIあたりから始めるのがシンプルで理想なんだが モチベーションがつづくかな、それさえ気にしなければよい選択なんだが どちらにせよ、RubyやPythonのような本流主流じゃない言語を最初にやるのは止めたほうが良い 筋が悪い、悪かった、というか悪いお手本みたいな言語だから
- 829 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 10:21:38.59 ID:1nsldRzy.net]
- 手続き型言語でプログラム書くなら、どのみちメモリのことは意識しなければならないし
ポインタが分からないって時点でプログラマには向いてないというか何というか ただ、結局、安全かどうかなんだよ その点C言語は安全とは言い難いが 意図せずヌルポするのはヌル安全の機能が無い言語ではどれも同じようなものじゃろ その観点から言うと、単なるタイポすらコンパイル時にチェックしてくれない 動的型言語は初心者に進めるのは止めたほうがよい 初心者ほどタイポするだろうからな それが言いたかった
- 830 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 10:42:27.70 ID:Xyz1Vf46.net]
- 今北産業
- 831 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 11:29:47.95 ID:fD9Nu4LZ.net]
- 長い上に気持ち悪い
やっぱ長文はNGに限る
- 832 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 14:25:35.47 ID:zY8py34F.net]
- 自分語りするおっさん登場
- 833 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 15:18:21.21 ID:qTCaqW3V.net]
- >>792
> 単なるタイポすらコンパイル時にチェックしてくれない動的型言語 (きっとRubyのdid_you_meanはおろか70年代のLispにすらあったDWIMも知らないんだろうな…)
- 834 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 15:23:07.09 ID:GIvuOFoC.net]
- >>796
そのdid_you_meanはコンパイル時(プログラム実行前)に チェックしてくれるのかい?w
- 835 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 15:30:49.82 ID:1nsldRzy.net]
- とにかく、初心者はプログラムを間違えるものなんだよ
一発で動くことは先ずない それならコンパイルの時点でよりたくさんのエラーを検出してくれた方が学習が捗るだろ? 初心者にRubyなんか薦めるなって事だ その人を蹴落としたいなら別だが
- 836 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 16:35:54.31 ID:fD9Nu4LZ.net]
- REPLにコンバイルもくそもねえだろ
- 837 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 16:37:08.70 ID:cqDBbZn3.net]
- まず多少なりとも動いてくれたほうが楽しいので学習が捗りました(経験談
- 838 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 16:43:09.37 ID:GIvuOFoC.net]
- >>799
重要なのはプログラム実行前ってこと
- 839 名前:セよ
静的とも言う。 実行した後はいろんな状態があり得るが 実行前というのは状態は一つだ。 つまりいろんな状態にしなければわからないというのは 問題を発見するまでに果てしなく時間がかかるということ だからなるべく実行前にわかるようにするのが良い [] - [ここ壊れてます]
- 840 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 16:47:09.67 ID:fD9Nu4LZ.net]
- いやeval getsするだけで可能性は可算無限でしょ
eval gets p A # input A = 'hoge' とかどうすんのよ
- 841 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 17:27:42.07 ID:dpL1lU0R.net]
- >>797
動的型言語かどうかは関係ない Smalltalkの“confirm, correct, or cancel”はコンパイル時チェック
- 842 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 17:45:25.99 ID:GIvuOFoC.net]
- >>803
Smalltalkのコンパイルっていつやるの?
- 843 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 17:46:25.89 ID:GIvuOFoC.net]
- プログラム実行前って言ってるのに理解してなさそうw
- 844 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:09:19.60 ID:1nsldRzy.net]
- 何だったらコンパイル時どころか
最近のエディタだったら書いてる途中でリアルタイムで文法チェックするからな 間違ってたら波線とか出る そういう状況なので、なるたけ多くのことが静的にわかったほうが良いんだよ 実行時にエラーにするなら馬鹿にでもできる!!って思うし やってみてダメでしたってな、バカっぽいでしょ 事前に分かるから賢い
- 845 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:38:05.12 ID:NYBtZzEL.net]
- >>804
メソッドを書き終わった後(accept、つまりコンパイル指示を出したとき)だよwwww
- 846 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:44:32.10 ID:GIvuOFoC.net]
- >>807
その時にSmalltalkは動いているのかどうかって話だ 動いてるだろ
- 847 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 18:50:47.34 ID:fD9Nu4LZ.net]
- このスレって質問者をほっぽりだして変なのがしゃしゃり出てくること度々あるよな
- 848 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 19:32:53.62 ID:NYBtZzEL.net]
- >>808
IDEでJavaソースコンパイルするときjavacもIDEも動いてないっての?wwww
- 849 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:37:42.02 ID:GIvuOFoC.net]
- >>810
いや、自分で書いたコードの話なんだけど? Smalltalkは自分の書いたコードがすでに動いてないと そういうエラーはでないでしょ。
- 850 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:43:46.47 ID:NYBtZzEL.net]
- >>811
バカなの?コンパイル時って言ってるやん何度も ともかくスペルミスくらいなら動的型言語でも静的にチェック可能なの わっかんないやつだなー
- 851 名前: mailto:sage [2018/08/20(月) 20:48:48.89 ID:VU5jvdn2.net]
- >>812
>スペルミスくらいなら動的型言語でも静的にチェック可能なの 型宣言がないのに、そんなことが可能なのでしょうか?
- 852 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:56:45.04 ID:GIvuOFoC.net]
- ローカル変数だけだったりしてねw
近くの情報は周辺を見ればいいだけだから問題はすぐに分かるんですよ。 遠くの情報、例えばインターフェースが一致しているかどうかが わからないと使い物になりませんね 人間がやると大変なものこそコンピュータにやらせないと
- 853 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 21:35:34.32 ID:1nsldRzy.net]
- なんで静的型の後追いみたいなことで苦労してるんだろうね
初めから静的型言語使えばよいだけなのにね 怠惰を求めて勤勉に行き着くってやつなのかね 動的型全体がそうだよね 処理系書いてる連中も、言語使ってる連中も 楽しようとして最終的に苦労する なにこれコワイ
- 854 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 21:43:42.44 ID:NYBtZzEL.net]
- >>813
構文木にできれば(ローカルに限らず)未宣言の変数だとか未知のメソッド呼び出しだとか程度なら 簡単に分かる Lispみたいに構文も単純なら構文ミスも指摘して修正候補を提示することも可能(例:InterlispとかのDWIM)
- 855 名前: mailto:sage [2018/08/20(月) 21:52:27.57 ID:VU5jvdn2.net]
- >>816
>未宣言の変数だとか 動的型付け言語ってそもそも変数宣言はないのでは?
- 856 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 22:15:42.75 ID:NYBtZzEL.net]
- >>817
変数を宣言させるかとそれに型情報が付くかどうかは別の話だよ 変数宣言をさせたら動的型言語じゃなくなるという法はない 宣言を課さない言語でも初回代入を宣言と見なす場合もある
- 857 名前: mailto:sage [2018/08/20(月) 22:20:21.86 ID:VU5jvdn2.net]
- >>818
>変数宣言をさせたら動的型言語じゃなくなるという法はない たしかにそのとおりですが、 でも実際問題、変数宣言をしてかつ動的型付けである言語は存在しますか?
- 858 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 22:29:16.58 ID:1nsldRzy.net]
- そんなの珍しくないよ
JavaScriptとかな 変数宣言には二つの役割があって、一つは型を宣言することだけど もうひとつスコープを宣言するって役割もある だから動的型言語でも素直なレキシカルスコープが欲しければ変数宣言があってもよい 一方で変数への最初の代入を変数宣言の代わりにする言語は だいたいスコープがバグってる ただの変数への代入か、新たな変数を宣言したのか、区別がつかないからなwww それでnonlocalだの@だの、ダサいだろ? ま、そういうわけで、やっぱり変数宣言は有ったほうが良いし どうせ変数宣言するなら型を書いても良い気がするし 動的型言語が衰退するのは当たり前だったわ なんせ、ありとあらゆるスジが悪いんだよ
- 859 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 22:30:09.56 ID:K5IFIEIw.net]
- >>819
Rubyのメソッドの仮引数やブロック変数は宣言でないと?
- 860 名前: mailto:sage [2018/08/20(月) 22:42:40.49 ID:VU5jvdn2.net]
- >>821
def f(xyz) "Hello, #{abc}!" end というメソッド定義があって 本当なら変数として xyz のところを間違えて abc と書いてしまった というシチュエーションでも、エラーがでないでしょう?
- 861 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 22:52:22.44 ID:KNimMRpP.net]
- >>822
あのさぁ…宣言を課すこととミスを検出できるか(するか)どうかはまた別の話なんだが? 今は「変数宣言をしてかつ動的型付けである言語は存在しうるか?」って話なんじゃないの?
- 862 名前: mailto:sage [2018/08/20(月) 22:58:45.39 ID:VU5jvdn2.net]
- >>823
「宣言を課す」というのは「宣言をしていない変数は変数として認識しない」という意味なのでは?
- 863 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 23:22:30.48 ID:At189hOD.net]
- ◆QZaw55cn4cは会話が成り立たないからスルーしろ
- 864 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 23:23:22.96 ID:At189hOD.net]
- ついでに長文ガイジもNGつっこんどけ
- 865 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 23:55:25.50 ID:PXXr8Lzz.net]
- >>824
Rubyはそうしていないというだけで、コンパイル時に abcが未代入(代入操作で宣言を兼ねるRubyでは未宣言にあたる)である事実や あるいはメソッドとして未定義である事実をもってxyzとすべき記述のミスでは?との判断を下し そうであれば修正を促すことは可能だろう? 予め釘を刺しておくけど、ミスの可能性があることとコンパイル可能であることとはまた別の話だからな!
- 866 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:12:58.46 ID:TQPukUfs.net]
- >>824
もしかして Rubyでは無引数(括弧なし)のメソッド呼び出し記述は同名のローカル変数のアクセス記述を遮蔽してしまう っていう仕様をしらないとかいうオチ? もしこのルールがなければ>>822はキミの想定通りエラーのはずだよ
- 867 名前:デフォルトの名無しさん [2018/08/21(火) 00:21:47.25 ID:kxzeRRBS.net]
- 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()
- 868 名前: mailto:sage [2018/08/21(火) 00:34:00.24 ID:Wpz7rvAB.net]
- >>827
>代入操作で宣言を兼ねる これは危険ですね なぜなら、変数が
- 869 名前:未代入かどうか、正確には、変数が未代入「でないか」どうか、をソースコードのセマンティクスから判断するのは困難だと思うのです []
- [ここ壊れてます]
- 870 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:41:26.90 ID:WMlArXdo.net]
- >>827
Rubyは、未定義メソッドの呼び出しが可能なんじゃないか? そのためのフォールバック用メソッドがあったはずだが。
- 871 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 01:47:26.07 ID:kxzeRRBS.net]
- メタプログラミング Ruby 第2版、2015
で紹介している、Module#define_method(), method_missing() とかだろ?
- 872 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 04:51:25.59 ID:kxzeRRBS.net]
- picture_url = "https://pbs.twimg.com/media/DlCjEV6V4AUM9Kl.jpg:orig#jpg"
uri = URI.parse picture_url file_name = File.basename(uri.path) # ファイル名 file_extname = File.extname(file_name) # 拡張子 後ろに「:orig#jpg」が付いていても、ファイル名が正確に抜き出せる! DlCjEV6V4AUM9Kl.jpg
- 873 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 05:11:45.98 ID:dhW5/kUC.net]
- >>833
バグじゃんそれ
- 874 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 05:20:08.29 ID:dhW5/kUC.net]
- >>831
そうそう。だからRubyじゃコンパイル時にわからないんだよ。 例えば以下のように、一行目にexitしてしまえば その下にいくら変なコードがってもコンパイル時にチェックなんかできない exit aaa = 1312 class Hoge def hoge end end h = Hoge.new h.hage i = IIII.new 言い換えると、動的言語ではファイル単位でしかコードを見てないので 少なくともファイル外にある情報はわからない 検出できるのは文法エラーぐらいだよ 残念なことにね。それが現実。
- 875 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:09:45.22 ID:9qt5lkVf.net]
- だからさぁRubyが駄目ってとこを動的型言語の限界だと一般化しないでくれ
話がまったく噛み合わない
- 876 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:32:38.20 ID:9qt5lkVf.net]
- >>831
だからミスの可能性がある(そしてその指摘や修正の提案が可能である)ことと コンパイル可能な(つまり状況が整えば実行可能になる)コードであることとは また別の話だって釘を刺してるだろうに…
- 877 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:35:37.03 ID:Y1HyydAv.net]
- ケンカはやめて
- 878 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 07:40:39.17 ID:9qt5lkVf.net]
- >>830
Ruby限定の欠陥の話がしたいのか動的型言語一般の限界の話をしたいのかをまず表明してくれ >>813からの流れは動的型言語一般の話ってわけじゃなかったのか?
- 879 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 08:20:58.17 ID:dhW5/kUC.net]
- まああれだ、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というメソッドはないから実行時前にエラーを検出できるはずだ そうならないので、未定義メソッドの検出はできない。 反論はコードでどうぞ
- 880 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:22:18.03 ID:tnY8+vhG.net]
- ここにMatz呼べば全て解決じゃん
どうせ見てると思うぞ
- 881 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:52:50.65 ID:eDZ5kOgA.net]
- >>840
Smalltalkの“confirm, correct, or cancel”を試したいならこれはIDEを前提とした機構なので GNU SmalltalkのようにUNIXとの連携を重視したCUI前提の変わり種のSmalltalkには実装されて
- 882 名前:ィらず使えません
また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” [] - [ここ壊れてます]
- 883 名前:デフォルトの名無しさん [2018/08/21(火) 12:54:39.77 ID:qWx5Zods.net]
- >>809
どこにでもいる
- 884 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:59:22.19 ID:OZUNGsZn.net]
- 「いまさらRuby」
「Rubyで学ぶ機械学習」 あたりを誰か書いてよ
- 885 名前:デフォルトの名無しさん [2018/08/21(火) 13:05:22.31 ID:qWx5Zods.net]
- 「間違ってRubyを始めてしまった人へ贈るPython入門」
もいいな
- 886 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 18:59:29.56 ID:WMlArXdo.net]
- Pythonは、試してみたい気持ちもあるものの、よろしくないところもいくらか知ってるので、微妙なんだよなー。
そういえば、ボスが引退するそうだが、なにか変わんのかねえ。
- 887 名前: mailto:sage [2018/08/21(火) 19:15:33.64 ID:Wpz7rvAB.net]
- >>839
個人的には ruby を改良しようといろいろ画策しています、宣言付き ruby とか 動的型付け言語にて変数宣言を導入すればずいぶんと使い勝手も変わるだろうと想像しています そういう視点でおねがいします
- 888 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 19:17:47.11 ID:2YpoFUMY.net]
- 画策wwwwww
それでプルリクでもしてこいよwwwwwww
- 889 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 20:58:28.00 ID:zx3sEUVJ.net]
- >>847
Rubyは変数宣言を省略したことが原因の仕様がらみのトラブルが少なくない そんな犠牲をはらっても(型も含め)宣言を書かせないことがMatzの優先事項の上位にあるわけ キミの「改良」案は何を今更だしそもそもMatzや取り巻きが耳を貸す可能性はゼロだろうね
- 890 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 21:02:49.75 ID:PnXfa+5/
]
- [ここ壊れてます]
- 891 名前:.net mailto: 例えばどんなトラブル? []
- [ここ壊れてます]
- 892 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 22:37:38.64 ID:WMlArXdo.net]
- >>850
スコープ
|

|