くだすれPython(超初心者用) その42【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/18(月) 13:42:55.36ID:+MPRGO7m
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その41【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1549282930/


◆PythonのHome Page
http://www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆Pythonのソースコードをそのまま5ちゃんにコピペすると
  インデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
4デフォルトの名無しさん
垢版 |
2019/03/18(月) 20:20:54.45ID:jiPExRTx
>>3
pyinstallerしおえたらいらないフォルダを消すバッチ作れ
5デフォルトの名無しさん
垢版 |
2019/03/18(月) 21:37:51.04ID:C9BGuQ42
<__main__.sample object at 0x00DF1D30>
selfをprintしたらこれが出てきたのですが、00DFみたいなのはメモリの場所なんですか?
6デフォルトの名無しさん
垢版 |
2019/03/18(月) 21:48:01.96ID:C9BGuQ42
結局selfはどういう用途に使うんですか

class myclass:
def myfunc(self,name):
self.name=name

↑これのself.nameの部分の意味と、使い方がわかりません
7デフォルトの名無しさん
垢版 |
2019/03/18(月) 22:00:55.16ID:tRH350wW
>>1
乙パイソン
2019/03/18(月) 22:06:59.61ID:jiPExRTx
>>6
おまえはいいかげんインデントをちゃんとしろ
前スレへ(・∀・)カエレ!!!
2019/03/18(月) 22:10:00.76ID:jiPExRTx
>>5
       ,-┐
 ,ィ─、ri´^-─- 、 .┌f^f^f^f^f^f^f^f^f^┐
く  / , ,'   ヽ ヽ| ~ ~ ~ ~ ~ ~ ~ ~ ~│
 `<' / ,'レイ+tVvヽ!ヽト 知ってるが  │
  !/ ,' i |' {] , [}|ヽリ  お前の態度が |
  `!_{ iハト、__iフ,ノリ,n   気に入らない |
   // (^~ ̄ ̄∃_ア____n_____|
 _r''‐〈  `´ア/トr──!,.--'
<_>─}、  `」レ
'ヽ、   ,.ヘーァtイ
   Y、.,___/  |.|
    |  i `ー'i´
2019/03/18(月) 22:18:09.43ID:FHDCRg6t
>>4
「exe化」をしたらフォルダが作られるのではなく
「exeを実行」したら毎回フォルダが作られるから困ってます
2019/03/18(月) 22:22:44.48ID:jiPExRTx
>>10
%temp%フォルダ内に?
それとも
exeがおいてあるフォルダに?
2019/03/18(月) 23:12:34.21ID:IuFF1Fl8
最近勉強始めたんだけどWEBに干渉するようなプログラムってまず何を書けばいいんだ?
2019/03/18(月) 23:14:08.18ID:jiPExRTx
>>12
まずなにがしたいんだ?
ブラウザを自動化したいのか
鯖をアタックしたいのか
まともに鯖をいじる作業を自動化したいのか
2019/03/19(火) 00:38:15.55ID:2dsGqa+T
Pythonが2018年も人気ナンバーワン言語に
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
15デフォルトの名無しさん
垢版 |
2019/03/19(火) 00:41:33.52ID:qkjR1zK4
>>6

https://i.imgur.com/t8osvsu.jpg
1610
垢版 |
2019/03/19(火) 00:45:49.37ID:XVrNrTVD
>>11
前者
17デフォルトの名無しさん
垢版 |
2019/03/19(火) 05:36:06.26ID:sliXT30Z
>>15
ですからなんの用途に使うんですか selfというのは場所を表すのですか?
printしてみるとメモリの場所らしきメッセージが出ます
2019/03/19(火) 05:48:25.05ID:45LJYysD
>>17
myfunc は オブジェクトオリエンティド でいうところのメソッド
self.name は オブジェクトオリエンティド でいうところのプロパティ
self.X と書けば X はプロパティを示し、self はクラスのインスタンスを示す
以上に現れるキーワード「オブジェクトオリエンティド」「メソッド」「プロパティ」「クラス」「インスタンス」に心当たりがなければ、まずそれから調べてみてください.
19デフォルトの名無しさん
垢版 |
2019/03/19(火) 05:49:15.22ID:Z5Hgz40o
Pythonと言うよりオブジェクト志向では親クラスのメソッドを呼ぶ時super.xx()みたいにするから、
それ使った時に子クラス(現在のクラス)の同名のメソッドだと明示するためにthis.xx()とかself.xx()とかするね。


あとは >>15 みたいにフィールド(クラス変数)と同名のメソッド引数と分けるためにも使われる。
2019/03/19(火) 07:38:23.72ID:vriWYZh/
>>16
Freezeとかなんとかいうヤツ使ってexe作るのどうよ
21デフォルトの名無しさん
垢版 |
2019/03/19(火) 07:41:01.76ID:Gcgazy3G
>>6
YouTubeでProgramingWoopenのPython入門講座第16~21回の動画を見ろ。
22デフォルトの名無しさん
垢版 |
2019/03/19(火) 08:57:41.33ID:Z5Hgz40o
つーかPythonは動的言語だからself.name = で代入する事で宣言無しでフィールド生成されるんだった。
静的言語ばっかりだとうっかり忘れがち。。。
2019/03/19(火) 09:23:51.33ID:7p2/yAlP
Jupyter notebookで大きなループを一つのセルで回すのって無謀でしょうか?
大きなループを回したい時、便利な環境って何がありますでしょうか?
24デフォルトの名無しさん
垢版 |
2019/03/19(火) 10:12:32.34ID:cL/iV8oU
>>6
スコープとかnamespace は理解してる?
25デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:11:48.70ID:A58YbFZJ
>>17

https://i.imgur.com/YrNeTWU.jpg
https://i.imgur.com/3cPymnb.jpg
2019/03/19(火) 11:15:51.69ID:g1OP6P5B
>>20
cx_freezeも試してみたけど3.7対応していない
27デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:23:55.63ID:wwQ5Yjji
【中国は民族浄化、日本は】 10万円買ったら1万円没収、10月、自民にとっての邪魔者が浄化される
https://rosie.5ch.net/test/read.cgi/liveplus/1552961720/l50
28デフォルトの名無しさん
垢版 |
2019/03/19(火) 11:28:42.76ID:sliXT30Z
>>24
スコープは変数の有効範囲で
名前空間はクラスやモジュール(python.pyみたいなファイル)のことですよね
>>21
見てみました
selfを関数の引数に指定することでクラス内の関数をインスタンスの持ち物に出来るということですね
別にselfでなくともいいみたいですが、なぜそうなるのか意味がわかりません
そういう決まりなんだと言われればそれまでですが
2019/03/19(火) 12:40:41.62ID:I3ez8Qch
……ここまで分からんとすると、文学的な問題じゃあなかろうか
他者が自分自身を自称するときの一人称がselfだ
30デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:51:35.83ID:Z5Hgz40o
>>28

class myclass:
def myfunc(my,str):
my.name = str

my.name = で初めてnameフィールドが作成される。
my無しだとただのローカル変数になり、myfuncを抜けたら消滅する。
(もちろん、フィールドnameは存在しないので、a = myclassしたあとa.nameとしたらエラーになる)
2019/03/19(火) 13:20:43.07ID:SqXQzXb0
pythonってインスタンス作成時にプロパティは作成されないの?
プロパティにアクセスした時に初めてメモリが確保されるの?
32デフォルトの名無しさん
垢版 |
2019/03/19(火) 13:34:21.37ID:Z5Hgz40o
そう言う事。

そして、もう少し調べたら__init__定義したら、メソッド呼出ではself省略できるっぽい。
(それだけでなく、nameの扱い自体もクラスフィールドとインスタンスフィールドという動作の違いも確認できた)

プロパティはフィールドとメソッドを関連ずけて、フィールドっぽい扱いで安全に運用するものなので別物。
私もPython初心者なのに、何であんたより詳しくなってるんだ。。。

class Myclass:
def __init__(my):
pass
def myfunc(my,str):
my.name = str

a = Myclass()
a.myfunc("taro")
b = Myclass()
b.myfunc("jiro")
print(a.name)
print(b.name)
2019/03/19(火) 13:59:12.91ID:SqXQzXb0
>>32
マジか、ありがとう
vbaみたいだぁ・・・
(vbaはもうちょい変で、インスタンス作成時ではなくプロパティにアクセスした時に初めてメモリが確保される)
34デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:04:53.09ID:A58YbFZJ
>>32

https://i.imgur.com/DA6Szdu.jpg
35デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:10:15.96ID:A58YbFZJ
Self 省略してない件

https://i.imgur.com/3LI5sKi.jpg
36デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:26:25.80ID:A58YbFZJ
>>32

_init_ 定義は 何の関係もないな


https://i.imgur.com/dXfQVzo.jpg
37デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:30:00.14ID:A58YbFZJ
myを self に
結果は同じ

https://i.imgur.com/tZxLnMM.jpg
38デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:31:38.83ID:A58YbFZJ
Self 省略したら、このざま

https://i.imgur.com/8jijwQV.jpg
39デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:34:55.30ID:A58YbFZJ
_init_ 復活させても駄目なものは駄目

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘


https://i.imgur.com/Ss7xM4i.jpg
40デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:38:29.26ID:A58YbFZJ
My で揃えても無駄

https://i.imgur.com/r43Dibx.jpg
41デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:42:10.59ID:A58YbFZJ
当然、self でも無駄

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘。
__init__定義しようが、メソッドでself 省略したらエラーですわ。

https://i.imgur.com/EAj5SUq.jpg
42デフォルトの名無しさん
垢版 |
2019/03/19(火) 14:53:47.13ID:Z5Hgz40o
>>41
「呼出では」って書いてるだろ。
定義の方は書かないとダメ。
43デフォルトの名無しさん
垢版 |
2019/03/19(火) 15:15:18.87ID:A58YbFZJ
呼び出しでself 書いたらエラーですが

「__init__定義したら、メソッド呼出ではself省略できるっぽい。」

は大嘘。
むしろ、省略しなければならない。

https://i.imgur.com/VnURXPt.jpg
2019/03/19(火) 15:40:09.68ID:QeSFtlHj
「しなければならない」のに省「略」とはこれいかに
45デフォルトの名無しさん
垢版 |
2019/03/19(火) 15:42:44.11ID:Z5Hgz40o
初心者いじめ楽しい?

>>32 の通り、私も初心者なんですが。
逆に__init__でa.myfunc(a,"taro")がエラーになる理由を教えて欲しいくらいだ。
(別に知らなくても書く上で困らないが)
2019/03/19(火) 16:01:05.13ID:vriWYZh/
>>26

それは失礼した

pyinstallerでonefileおぷしょんつかわないでexe等を生成→配るときは何か別のインストーラ使う
でやるしかないのかー
2019/03/19(火) 16:01:42.71ID:vriWYZh/
>>23
問題は途中でどんだけメモリ食うかだけなんじゃ
48デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:05:16.66ID:26aHKGbn
>>45

君の場合、Python初心者とかの問題じゃなくて、日本語初心者なんだよね…

変な日本語使わなくていいから、コードだけで語ってくれ
49デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:17:56.81ID:Z5Hgz40o
検証不足なだけなのを日本語初心者扱い。。。
50デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:27:12.81ID:XMTv5SE6
>>49
検証なら他所でやってくれ
迷惑でしかない
51デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:34:33.33ID:Z5Hgz40o
それは悪かったけど、訂正を求めるなら他にやりようあったよね。
__init__付けるとa.myfunc(a,"taro")はエラーになるから、省略じゃ無いって指摘すれば「ごめん」で済んだのに。

エラーが出るエラーが出るって病的に繰り返すだけってのもどうかと思うよ?

スレの無駄だからロムるね。
じゃあの。
52デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:48:51.60ID:+2Cq/+iw
覗いてみたら一問一答どころか初心者虐めしてて闇感じた
学校教師かよw
53デフォルトの名無しさん
垢版 |
2019/03/19(火) 16:54:08.63ID:xdTah2Z6
>>32
>私もPython初心者なのに、何であんたより詳しくなってるんだ。。。




鼻膨らませてこんなこと書くから
2019/03/19(火) 17:59:14.56ID:7p2/yAlP
>>47
メモリはそんなに食わないと思いますが、

現在:セル100個くらいに書いている
やりたいこと:現在のセル100個をセル1個に入れて、forで回す

やりたいことが増えてネストが深くなるたびに、毎回この作業が必要になるのかなと
2019/03/19(火) 18:08:45.31ID:vriWYZh/
>>54
まず
Python全般の考え方として
深すぎるネストがあるソースはうんこスパゲティである
「python ネスト 減らす」でggr

いろんなことをやるときは
1作業グループ(自然言語で言う章づけと段落づけに似ている)毎に1つのクラスにまとめれこのへん↓嫁
tps://myenigma.hatenablog.com/entry/2017/10/23/091932
56デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:11:13.54ID:sliXT30Z
pythonって12345みたいなループ表示はできないんですか?
別にリストを作らないとだめなんですか?
57デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:17:41.24ID:sliXT30Z
ごめんぬさい解決です
2019/03/19(火) 18:20:12.22ID:vriWYZh/
>>55
推敲途中で書き込まれてしまった
最後から2行目の語順がカオスになってるが
まあうまいこと察してチャン
59デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:29:04.69ID:sliXT30Z
sample.pyみたいなファイルがモジュールと考えていいのですか?
2019/03/19(火) 18:59:11.58ID:AStHbDSu
>>17
>printしてみるとメモリの場所らしきメッセージが出ます
そうだよ

https://ideone.com/k9fBq9
https://docs.python.org/ja/3.6/library/functions.html#id
2019/03/19(火) 19:01:42.61ID:AStHbDSu
>>59
> sample.pyみたいなファイルがモジュールと考えていいのですか?
そうだよ

"モジュールは Python の定義や文が入ったファイルです。ファイル名はモジュール名に接尾語 .py がついたものになります。"
https://docs.python.org/ja/3.6/tutorial/modules.html
62デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:13:43.69ID:sliXT30Z
メンバ変数に
self.nameみたいにつけるのは、単なるルールってことですか?
メンバ変数作るときのルール?
2019/03/19(火) 19:28:33.28ID:AStHbDSu
>>62
関数からはインスタンスオブジェクト(メソッド、変数)がスコープ外だから、そのままだとアクセスできない
Pythonではクラス内で定義される関数の第一引数にインスタンス自身(self)を渡すことによりアクセスできるようにしている
↓みれ
https://docs.python.org/ja/3.6/tutorial/classes.html#classes
64デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:28:54.41ID:oLwbVC8A
>>62
付けなきゃローカル変数になってメソッド抜けると消える
65デフォルトの名無しさん
垢版 |
2019/03/19(火) 19:40:40.10ID:sliXT30Z
>>63
>>64
ありがとうごじあます
リンク先よみます
66デフォルトの名無しさん
垢版 |
2019/03/19(火) 20:15:28.53ID:sliXT30Z
>>63
インスタンス自身がself引数に渡されるといいますが、
instance変数の部分がインスタンス自身と考えていいんでしょうか
確認方法がわかりませんでした
http://codepad.org/qut7yC7c
67デフォルトの名無しさん
垢版 |
2019/03/19(火) 20:15:40.20ID:sliXT30Z
class Test():
def __init__(self,var):
self.var=var
def func(self):
print(self.var)
instance = Test("aaa")
instance.func()
2019/03/19(火) 20:24:24.48ID:AStHbDSu
>>66
>>60
2019/03/19(火) 20:31:38.14ID:AStHbDSu
>>54
キューでもスタックでもいいから何か適した探索アルゴリズムあるかもしれない
2019/03/19(火) 21:49:37.60ID:A/UmZGKk
指定桁の整数部分で切り捨てるにはどうすればいいですか?
roundの四捨五入じゃなくて、切り捨てです。
n = 456.789
round(n, -1)
>>460
1の位を切り捨てて、450にしたいです。
2019/03/19(火) 22:13:26.97ID:A/UmZGKk
re.subの正規表現で置き換えしたらできたんですが、
切り捨てのようななモジュールはないでしょうか?
72デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:16:01.91ID:oLwbVC8A
>>70
import math
math.floor(n/10)*10
2019/03/19(火) 22:44:30.22ID:KlvkKTYB
Ruby ではクラス直下では、self(this)は、クラスを指す。
一方、initialize 内では、new で呼ばれた各インスタンスを指す

class Cat
p self #=> Cat クラス

def initialize( name, weight )
@name = name
@weight = weight
p self #=> 各インスタンス
end
end

bob = Cat.new( "bob", 5 )
alice = Cat.new( "alice", 4 )

出力
Cat
#<Cat: @name="bob", @weight=5>
#<Cat: @name="alice", @weight=4>

オブジェクト指向をわかっていない人には、Python は無理

まず、Rubyでオブジェクト指向・関数型を学んでから、
Python, JavaScript, Kotlin などをやらないと無理
2019/03/19(火) 22:53:59.42ID:A/UmZGKk
>>72
おぉー、ありがとう
floorが検索に出てきても少数切捨ての話だけで整数の話はなかったのに、
10で割って掛ける。すごい全然思いつかなかった
2019/03/19(火) 23:36:11.27ID:gx/b6f7p
>>73
死ね
2019/03/20(水) 00:13:24.71ID:6ln9W50J
>73
rubyは言語の発想としては悪くないんだけど、今やもう未来がなさすぎる
最近はもうオブジェクト指向を無理にやらんでも良いって流れにもなってきてるしな
7773
垢版 |
2019/03/20(水) 00:49:00.11ID:RdYQnT9u
Pythonの文法を学ぶというのと、
オブジェクト指向・関数型を学ぶというのは、まったく次元が違う話

アルゴリズムなどもそう。
Pythonの文法とは無関係だから、Rubyで学ぶ

だから初心者は、Rubyから始めろって言われるわけ

Ruby以外の言語では、JavaScriptのprototype など、
その言語特有のトリックに惑わされるために、まともに学べない

Pythonでは、アンダーバー(_)で始まる変数名などの、トリックを使っているし、ややこしい

Rubyはオワコンと言われているけど、人気がすごい!
図書館でも、すべての本が貸出中
78デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:51:59.36ID:D6kxNzj1
>>72 int(n//10)*10
2019/03/20(水) 01:43:22.87ID:6ln9W50J
>>77
>初心者は、Rubyから始めろって言われるわけ
昔言われてたな。誰もやってなかった
あれがステマだったと最近気づいた
2019/03/20(水) 02:13:49.59ID:oK7gZRvl
Rubyは最も一般的な方法で定義した関数(関数じゃないw)が値として取り回せない(第一級関数でない)クソ言語wwwww
def add(a, b)
a + b
end
def opTwo(a, b, func)
func(a, b)
end
p opTwo(1, 2, add)
=> Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError)
from t.rb:9
プギャーm9(^Д^ )

ちなみにPython:
def add(a, b):
return a + b

def opTwo(a, b, func):
return func(a, b)

print(opTwo(1, 2, add))
=> 3

ちなみにJavascript:
function add(a, b) {
return a + b;
}
function opTwo(a, b, func) {
return func(a, b);
}
console.log(opTwo(1, 2, add))
=> 3
2019/03/20(水) 02:18:32.13ID:oK7gZRvl
def、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww
2019/03/20(水) 02:19:24.94ID:oK7gZRvl
Ruby 初心者スレッド Part 64
http://mevius.5ch.net/test/read.cgi/tech/1535797516/658
658 デフォルトの名無しさん sage 2018/10/15(月) 10:09:06.69 ID:r7U1tD/N
擬似コードがそのまま動くのはPythonじゃね
関数型言語なら演算子がそのまま第一級関数であることとカリー化を使って data |> select ((>) 0) みたいに書けたりするね
ガチ関数型でなくてもまともなラムダがある言語なら select(x => x > 0) と遥かに見通し良く書ける
Rubyの &:: は極めて驚きが大きく醜悪な機能の一つだね
2019/03/20(水) 02:19:58.52ID:oK7gZRvl
クロージャって何がいいの?
http://mevius.5ch.net/test/read.cgi/tech/1415419907/261
261 デフォルトの名無しさん sage 2014/12/15(月) 23:02:52.91 ID:BuhXHDiL
さらに言えば、Rubyのブロック変数のスコープの扱いが1.9で仕様変更されてるけど、
それについてmatz自身が

> それは、Rubyが最初から関数型言語としてスタートしてないからであって、言語が違うからですよね。

と語っているね


http://www.atmarkit.co.jp/news/200907/24/ruby.html
2019/03/20(水) 02:20:31.17ID:oK7gZRvl
Pythonが2018年も人気ナンバーワン言語に - Rubyは13位へ
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/

>日本生まれのプログラミング言語Rubyの順位は昨年の12位から13位へと一つ順位を落としています。


https://findy-code.io/engineer-lab/github-programming-language-ranking
↑「衰退するかもしれない言語」のRubyのグラフ凄すぎwww
2019/03/20(水) 02:51:31.38ID:oK7gZRvl
大人気言語るっピぃが実践する驚き最大の勝利の大法則!!!
お前らションベンチビんなよ!?

Python:
def double(x):
return x * 2

double(3) #=> 6
同等ラムダ
(lambda x: x * 2)(3) #=> 6

JavaScript:
function double(x) {
return x * 2;
}
double(3); //=> 6
同等ラムダ
(x => x * 2)(3); //=> 6

Rubz(笑)ころん
def double(x)
x * 2
end
double 3
#=> 6
同等?ラムダ?www
(lambda {|x| x * 2}) 3 #=> エラー(笑)
(lambda {|x| x * 2})(3) #=> エラー()
(lambda {|x| x * 2}).call(3) #=> 6
うわぁ〜さすがるっびすごくわかりやすいですぅ〜wwww
8673
垢版 |
2019/03/20(水) 03:00:25.17ID:RdYQnT9u
KENTA / 雑食系エンジニアTV と言う人が、
YouTube で、初心者は、Ruby から勉強するように勧めている

多くの人が、初心者には、Rubyを勧めている

Dir.glob( 'C:/Users/Owner/Documents/test/*.txt' ) do |file|
end

Rubyでは、Windows/Linux の両方で、パス区切りに、/ が使えるから、\ を使わなくてもよい

Python では、\, \\ を使っているから、ややこしくてたまらん!
2019/03/20(水) 03:02:42.97ID:oK7gZRvl
これだね!

Rubyを長く使い続けることを僕がお薦めしない理由を説明します - YouTube
https://www.youtube.com/watch?v=2wfQ3iG08UI
2019/03/20(水) 03:04:18.73ID:oK7gZRvl
日本生まれのクソ言語Ruby『最も嫌われているプログラミング言語』堂々ランクイン!!
https://japan.zdnet.com/article/35109803/

おめでとうクソ言語!🎊
おめでとう日本の恥!!www
https://japan.zdnet.com/storage/2017/11/02/e28392adae17a191547db083133339eb/171106-zdnet-1-01-languages-1-900x675.png
2019/03/20(水) 03:14:48.95ID:oK7gZRvl
Ruby のココがダメ
https://qiita.com/scivola/items/17470c52641d3ffa1650
・メソッド名の別名がありすぎ
・何かにつけて「nil にそんなメソッドねえよ」
・ローカル変数なのかメソッド呼び出しなのか
・ブロックなのかハッシュなのか
遅い
・ドキュメントが不十分
・用語集が無いよ
・Windows ユーザーがいつも置き去り
・既定の文字コード
・フリップフロップ ワケわかめ
2019/03/20(水) 03:20:23.93ID:wCjkLEuI
速度に関してはどんぐりの背比べ
2019/03/20(水) 03:22:38.74ID:oK7gZRvl
「Railsは終わった」と言われる理由
https://qiita.com/klriutsa/items/86ac5e94ec99c0d95b61#5-rubyという柔軟性の高い言語によって開発することができる

> Rubyは以下のような弱点があり、コードに問題のあるRailsプロダクトが多く生まれてしまいました。

・読みにくい
・Rubyしか触っていないエンジニアはある一定レベルで成長が止まる
・美しく書くという文化でしか質を担保する仕組みが無い
・Rubyの将来性
2019/03/20(水) 03:24:19.47ID:oK7gZRvl
1. 読みにくい
Rubyのコードは引数や返り値の定義がないため、実際に読んでみないと何が帰ってくるのかわからないです。
なのでコードリーディングに時間がかかりますし、バグの混入確率も高いです。
2019/03/20(水) 03:25:58.59ID:oK7gZRvl
2. Rubyしか触っていないエンジニアはある一定レベルで成長が止まる

Rubyという言語は型を全く定義しなくても動きますが、型を意識して書かなければ簡単に崩壊してしまいます。
しかし、型を意識する書き方というのはRubyでは学ぶことはできません。(一応学べるかもしれませんが、Rubyの型は他言語に比べて挙動の把握が難しいです)
このパラドックスにより、質の悪いRailsプロジェクトが生まれやすくなっています。
そのためRubyしか触っていないエンジニアは一定のレベルで成長が止まると考えています。

その他、クラスの継承、インターフェース、ビルダーパターン、リアクティブプログラミング、ジェネリクス、ラムダなどのパラダイムはRubyでは学ぶことはできません。
2019/03/20(水) 03:27:13.16ID:oK7gZRvl
3.美しく書くという文化でしか質を担保する仕組みが無い
Rubyは他人が書いたコードを読むのにエネルギーが要る言語だと思います。
型定義がある言語では入力と出力の形式がある程度定まっているので、比較的読みやすいです。
Rubyは返り値がどのような型になるかわからないので、メソッド名が妥当であるか?であったり、美しくわかりやすく書かれているかもしくは、テストを書いているか?が重要になってきます。

熟練者のコードは非常に読みやすいかもしれませんが、そうでない場合、コードリーディングが大変です。
こうしたコールドリーディングを簡単にするために、美しく書く文化やテストを書くという文化があるのですが、
どこまで美しく書くか、どの程度テストを書くかは属人的であるので、質が担保しにくいです。
追い打ちをかけるようにRubyは様々な書き方ができてしまうので、よりコードリーディングが難しくなります。
ダメなプログラミング言語の代名詞としてPHPが挙げられますが、それがRubyに置き換わる時が来るかもしれません
2019/03/20(水) 03:28:06.49ID:oK7gZRvl
4. Rubyの将来性
これは個人的な愚痴に近いのですが、Rubyの開発の方向性と現場で必要なものがだんだんと違ってきているのではないかと最近は感じています。

Ruby3では速く動作することが頻繁に取り上げられますが、実際にそれでいまエンジニアが抱えている問題が解決するのか・・・?と思ってしまいます。

Rubyでチーム開発しやすいように、型宣言などの開発者を支援するような機能もほしいなという声もあるのではないでしょうか。
2019/03/20(水) 03:30:23.84ID:oK7gZRvl
Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察
https://postd.cc/sick-of-ruby-dynamic-typing-side-effects-object-oriented-programming/
2019/03/20(水) 03:37:06.36ID:oK7gZRvl
Rubyが今のPythonの地位にいない理由
http://shinh.skr.jp/m/?date=20160616
さて、本来PHPを学ぶべきだった人たちが、Railsファンになり、Rubyのカンファレンスに行き、エモい発表を聞いて二世三世になったのである。
こういう人達の中には残念ながら、技術的な背景が足りない人もいて、そういう人達が人類がコンピュータサイエンスとして培ってきた歴史とかをある程度把握しないままに、なんだか適当な発言をするのである。例えば「テストファーストはRuby発祥」的な。

そういう人達はどこの世界にもいるものだけど……Rails界隈には許容量を越える量で発生してしまった。で技術がわかるRails関係ない人の感想は残念ながら、「Ruby?あれなんかキモい。
Pythonで十分だし」みたいな感じになってしまったのであった。Hacker Newsから一例をひいてみよう。

https://news.ycombinator.com/item?id=5157886

"To me the biggest annoyance about the Ruby community is the belief that they invented everything"
「Rubyコミュニティの連中はヤツラが全てのことを発明したと信じてやがってムカつく」

"People don't hate ruby, people hate the ruby on rails community" "This" "+1 to this"
「Rubyが嫌いなんじゃなくて、Railsコミュニティが嫌いなんだよ」「それな」「ほんこれ」

いやあ……ひどい言われようである。こんな謎宗教みたいな扱いを受けてれば、ある程度規模の大きい企業、まぁデカいのではマイクロソフトとか、の人が採用しよう、って感じにはならない。
Webアプリフレームワークならともかく、他の分野ではPythonという十分に強い代替があるならなおさら。というわけで、Rubyが今のPython地位を確立できてない理由は「なんかキモそうだから」なのである。

一方で、Railsの勃興とエモい人の流入みたいなのが無ければRubyが今ほど流行ってたかというと……それもあやしいと思う。
この文章の前半部分でムダに書いた通り、Rails以前は知名度ゼロに近かったので、むしろRailsのおかげでRubyは本来集める予定だった以上の注目を集めている、という感もある。
2019/03/20(水) 03:37:20.12ID:6ln9W50J
もうちょっとまとめて
2019/03/20(水) 03:42:42.67ID:oK7gZRvl
Rubyの死?開発者はどの言語を学ぶべきか?
http://www.softantenna.com/wp/software/death-of-ruby/
Rubyの人気が低下している現在、開発者は別のプログラミング言語を習得したほうが良いという趣旨の考察を展開しています。

同記事はRubyの人気低下の証拠として、Indeedによる求人数でRubyの人気が9番目にまで低下しているとのこと、
IEEE Spectrumのプログラミング言語ランキングで、Rubyの順位が2014年の8位から2017年の12位まで低下していること、さらにCoding DojoでRubyコースが終了したことなど、幾つかの事実を挙げています。

またコンピューターサイエンス分野で関心が低いことや、Twitterを始めとした巨大企業がRailsの採用をやめたこと、Stack Overflowで関心が低下していることなども、Ruby人気が低下している具体例としてリストアップしています。

同記事では「Python」と「JavaScript」を学ぶべき言語として推奨しています。

Pythonは、Web開発やデータサイエンス、その他分野でここ数年急激に広まっており、Rubyと似たシンタックスを採用している部分もあるため、Ruby開発者にとっても習得しやすいプログラミング言語であると説明されています。

またJavaScriptは、全世界で最も使用されている言語であり、Node.js、AngularやReactといった強力なフレームワークによって、
バックエンドからフロントエンドまで幅広くカバーした、価値のあるプログラミング言語であるとされています。

IEEE Spectrumの2017年ランキングでもPython言語は1位となっていてこの主張はある程度納得できるところかもしれません。

同様に、JavaScriptの応用範囲の広さも、誰もが認めるところだと思います。
2019/03/20(水) 03:44:38.64ID:oK7gZRvl
RubyはPerlのようになる?
Rubyの今後に関しては、2008年頃から人気が低下したPerlを例にとって、人気は低下していくものの、完全になくなることはないと結論づけられています。
101デフォルトの名無しさん
垢版 |
2019/03/20(水) 09:01:56.76ID:nJGjaI7U
Rubyどうでもいいよ。Pythonの話しようよ。
2019/03/20(水) 09:14:33.76ID:wCjkLEuI
RubyをディスらなければPythonにメリットを見いだせない人なのでしょう
2019/03/20(水) 09:21:48.45ID:KzgtImdp
pythonの人気に嫉妬しながらも摺寄り、騙し、利用して宣伝しなければ生きていけない死にかけクソ言語とそれにハエ信者
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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