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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2019/02/04(月) 21:22:10.08ID:9MrdxUVg
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

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

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

前スレ
くだすれPython(超初心者用) その40
http://mevius.5ch.net/test/read.cgi/tech/1542874174/


◆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/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−

0952デフォルトの名無しさん2019/03/17(日) 18:00:19.80ID:oeP02mQD
>>936
こういう簡単なクラスで考えてみる

class MyClass:
  def __init__(self, name):
    self.name = name

  def getname(self):
    return self.name

コンストラクタで名前を受け取って、自身のnameプロパティにセットする
getnameメソッドでは自身の名前を返す簡単なクラス

このクラスの使い方は以下

a = MyClass("John")
a.getname() // 出力 'John'

ただしこういう風にも書ける

a = MyClass("John")
MyClass.getname(a) // 出力 'John'

Pythonのインスタンスメソッドは単なる関数もしくはスタティックメソッドみたいなものだということがわかる
a.getname() は暗黙的に MyClass.getname(a) に置き換えられてると考えてもいい

0953デフォルトの名無しさん2019/03/17(日) 18:01:31.22ID:oeP02mQD
>>936
さらにselfというものがわかりやすいようにこのクラスを普通の関数と辞書型で再現してみる

def MyClass(name):
  self = {}
  __init__(self, name)
  return self

def __init__(self, name):
  self["name"] = name

def getname(self):
  return self["name"]


a = MyClass("John")
getname(a) // 出力 'John'

これでだいたい再現できる
何が言いたいかというとMyClass()という関数が空のインスタンス(ここでは辞書だが)を作成して__init__に引数として渡している
たぶんPythonのクラスでも暗黙的にMyClass()という関数が生成されて間接的に__init__を呼び出している
つまりself(=MyClassのインスタンス)というのは暗黙的に作られたMyClass()関数内で作られているオブジェクトだと考えればいい
Pythonほとんどやったことないから想像で適当に言ってるだけだけどな

0954デフォルトの名無しさん2019/03/17(日) 19:53:26.49ID:UUXyH29G
>>952
self.name = name
部分はself変数にnameプロパティがついている状態なんですか?
nameのほうが変数名かとおもっていましたが
self.nameとすることでnameプロパティを定義している という感じですかね
なんのためにあるのかわからないですが

0955デフォルトの名無しさん2019/03/17(日) 21:13:22.59ID:pWnkPEfA
>>953
デタラメな回答するの辞めーや

0956デフォルトの名無しさん2019/03/17(日) 21:52:19.70ID:oeP02mQD
>>955
詳しいなら教えてくれ

09578472019/03/17(日) 22:22:14.14ID:QeX4wN+m
self.name = name

Ruby では、@ がインスタンス変数です。
@name = name

インスタンスや、インスタンス変数は、オブジェクト指向の基礎。
クラスはひな形で、実体化するには、個々のインスタンスを作らないといけない

これがわからないのなら、Rubyをみっちり勉強した方がよい。
Python から始めるのは無理

オブジェクト指向・関数型は、Rubyで学んだ方がよい。
Python, JavaScript, Kotlin にも応用できる

0958デフォルトの名無しさん2019/03/17(日) 22:28:34.62ID:Ea7K77ki
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

0959デフォルトの名無しさん2019/03/17(日) 22:29:45.96ID:Ea7K77ki
def、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww

0960デフォルトの名無しさん2019/03/17(日) 22:31:54.89ID:Ea7K77ki
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の &:: は極めて驚きが大きく醜悪な機能の一つだね

0961デフォルトの名無しさん2019/03/17(日) 22:33:19.32ID:Ea7K77ki
クロージャって何がいいの? [転載禁止]©2ch.net
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

0962デフォルトの名無しさん2019/03/17(日) 22:50:20.65ID:vwxCn2J+
必死すぎるw

0963デフォルトの名無しさん2019/03/17(日) 22:58:46.72ID:Ea7K77ki
Rubyを長く使い続けることを僕がお薦めしない理由を説明します - YouTube
https://www.youtube.com/watch?v=2wfQ3iG08UI

0964デフォルトの名無しさん2019/03/17(日) 22:59:12.36ID:Ea7K77ki
「Railsは終わった」と言われる理由
https://qiita.com/klriutsa/items/86ac5e94ec99c0d95b61

0965デフォルトの名無しさん2019/03/17(日) 23:07:59.19ID:Ea7K77ki
GitHub、2018年の人気プログラミング言語を概観できる「The State of the Octoverse」を発表
https://www.softantenna.com/wp/software/the-state-of-the-octoverse-2018/

日本人が作ったプログラミング言語がランクイン!
誇らしい!!

0966デフォルトの名無しさん2019/03/17(日) 23:13:16.15ID:Ea7K77ki
GitHubのRails離れと、迫りくるMicrosoft
https://yakst.com/ja/posts/5290

0967デフォルトの名無しさん2019/03/17(日) 23:20:10.39ID:Ea7K77ki
世界最大のソフトウェア開発プラットフォームで最も人気なプログラミング言語は何なのか?
https://gigazine.net/news/20181116-top-programming-languages-2018/

さあ何なのか!?日本の埃、Rubyかな?

0968デフォルトの名無しさん2019/03/17(日) 23:23:45.80ID:Ea7K77ki
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

0969デフォルトの名無しさん2019/03/17(日) 23:24:59.24ID:Ea7K77ki

0970デフォルトの名無しさん2019/03/17(日) 23:39:56.92ID:vwxCn2J+
この調子で1000まで埋めてくれwww

09719562019/03/18(月) 00:32:48.76ID:QSJWNz5N
なんとなくわかったわ
__new__でインスタンス生成して__init__で初期化されてるのはいいとして
それらの関数がどこから呼ばれるかが分からなかったけど
type.__call__(cls, *args, **kwarg)から呼ばれてるんだな

class MyClass:
  def __new__(cls, name):
    return object.__new__(cls)

  def __init__(self, name):
    self.name = name

  def getname(self):
    return self.name

a = MyClass("Mike") # これは
a = type.__call__(MyClass, "Mike") # これの糖衣構文と

type.__call__はざっくり以下のような実装らしい

class type:
def __call__(cls, *args, **kwarg):
obj = cls.__new__(cls, *args, **kwargs)
obj.__init__(*args, **kwargs)
return obj

一番元になるオブジェクトを生成するであろうobject.__new__()がどういう風に実装されてるのかは分からなかった
Cで実装されてるらしい

0972デフォルトの名無しさん2019/03/18(月) 00:34:09.24ID:GvvOJgHh
破産者マップに出てるぞお前さん

0973デフォルトの名無しさん2019/03/18(月) 01:21:38.93ID:HYm9qYKJ
Rubyに興味も失ってたが、調べたらRuby3から頑張るっぽいね。
JITは今現在はオンにしてもRails遅くなるっぽい。
型検査はツールの提供と精度向上の方針。

“Rubyは死んだ”のか?
まつもとゆきひろ氏が語る「プログラミング言語サバイバル」とRubyの未来 - Part1
https://logmi.jp/tech/articles/320752

かと思えば、こんな深刻な記事も。

想定してなかったくらい大規模な開発に使われて、つぎはぎ継ぎ接ぎで開発して行ったら行き詰まったって話になるのかな?
Pythonも、同類になる可能性はあるが時期が早く来たのはRubyだったと。

Rubyは滅びゆく言語なのか?
https://qiita.com/baban/items/a5a9819a4020f92e27e2

0974デフォルトの名無しさん2019/03/18(月) 01:32:41.95ID:TDQy6vox
Redmonk言語ランキングがKotlinとSwiftの急上昇を明らかにした
https://www.infoq.com/jp/news/2018/05/RedmonkLanguageRankingsQ118

> Rubyは5位から8位に下がりはしたが、他のトップ10言語はほとんど同じ順位にとどまっている。

独り負けwwww

0975デフォルトの名無しさん2019/03/18(月) 01:33:16.80ID:TDQy6vox
日本生まれのクソ言語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

0976デフォルトの名無しさん2019/03/18(月) 01:56:22.04ID:TDQy6vox

0977デフォルトの名無しさん2019/03/18(月) 02:01:08.34ID:TDQy6vox
Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察
https://postd.cc/sick-of-ruby-dynamic-typing-side-effects-object-oriented-programming/

0978デフォルトの名無しさん2019/03/18(月) 07:48:49.96ID:C9BGuQ42
self.name = name
みたいな変数は
self変数にnameプロパティを定義しているということなんですか?
init内に書かれる事が多いですが、プロパティはどのような使われ方をするのでしょうか

0979デフォルトの名無しさん2019/03/18(月) 11:21:28.47ID:vyVf53oQ
Pythonでアニメーションムビーって作れますか?
教えてエロい人

0980デフォルトの名無しさん2019/03/18(月) 11:42:29.94ID:GvvOJgHh
出来るよ
このポリゴンアニメもPython で組まれている

https://youtu.be/lU-stMiFESQ

0981デフォルトの名無しさん2019/03/18(月) 13:43:14.45ID:+MPRGO7m
くだすれPython(超初心者用) その42【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1552884175/

0982デフォルトの名無しさん2019/03/18(月) 13:50:09.52ID:HYm9qYKJ

0983デフォルトの名無しさん2019/03/18(月) 14:39:32.03ID:3zrU7iIi
Pythonなら音声合成も機械学習でできるよ!

0984デフォルトの名無しさん2019/03/18(月) 14:59:40.24ID:vyVf53oQ
>>980
ありがとうエロい人
よろしければおすすめのライブラリ教えてください

0985デフォルトの名無しさん2019/03/18(月) 16:32:01.12ID:8JXxWTh8
Pythonなら毛糸洗いに自信が持てるよ!

0986デフォルトの名無しさん2019/03/18(月) 17:23:25.93ID:LuaAQ2Ag
>>985
それはボールドだろ

0987デフォルトの名無しさん2019/03/18(月) 17:23:44.99ID:LuaAQ2Ag
お、IDがlua永久にアゲだ

0988デフォルトの名無しさん2019/03/18(月) 17:33:08.14ID:1Gq1ACAN
Python(Jupyter)で、複数の行をループさせることって出来ますか?
やりたいことはIn[5]〜In[8]を10回繰り返す、みたいな感じです

0989デフォルトの名無しさん2019/03/18(月) 20:07:37.57ID:C9BGuQ42
selfわかんないよぉ(´;ω;`)

0990デフォルトの名無しさん2019/03/18(月) 20:25:52.07ID:3zrU7iIi
>>989

class className():
def methodName(self):
print("Hello World!")

instance = className()
instance.methodName()

0991デフォルトの名無しさん2019/03/18(月) 20:30:41.38ID:jiPExRTx
>>988
forループとかwhileループをさがしてるのか?

0992デフォルトの名無しさん2019/03/18(月) 20:34:08.67ID:C9BGuQ42
self.name=nameみたいなやつは、変数名はnameなのですが、selfなのですか?

0993デフォルトの名無しさん2019/03/18(月) 20:36:17.92ID:C9BGuQ42
>>990
ですからこれ、selfはなんの役割をしているのですか?

0994デフォルトの名無しさん2019/03/18(月) 20:41:13.50ID:jiPExRTx
>>992
そうだな

>>993
この()の中のselfについては深く考えたことないなー
クラス化した場合は 必ず1ツ目の引数self ってのは なんかもう
条件の後とかに「:」つけるのと一緒な感覚だなー

0995デフォルトの名無しさん2019/03/18(月) 21:09:20.45ID:GvvOJgHh
>>993


class className():
def methodName(zelf):
print("Hello World!")

instance = className()
instance.methodName()


でも動くぞ

0996デフォルトの名無しさん2019/03/18(月) 21:17:48.43ID:GvvOJgHh
よって、

self =zelf


(証明おわり)

0997デフォルトの名無しさん2019/03/18(月) 21:36:51.06ID:C9BGuQ42
↑ありがつ

0998デフォルトの名無しさん2019/03/18(月) 23:31:38.66ID:+MPRGO7m
>>989
考えるな感じるんだ

09998472019/03/18(月) 23:42:48.23ID:e1XJ4IHa
self, this は、そのインスタンスを指す。
オブジェクト指向の基本だろ

それもわからない人には、Python は無理!
勉強の順番を変えてください!

Ruby でみっちり、オブジェクト指向・関数型を学んでください!
その後に、Python, JavaScript, Kotlin に応用してください!

1000デフォルトの名無しさん2019/03/18(月) 23:44:39.51ID:+omKGkAV
これ、スコープとかnamespaceをわかっとらん

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 42日 2時間 22分 29秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。