Pythonのお勉強 Part69

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ c733-stRS)
垢版 |
2022/11/24(木) 21:39:44.67ID:A6xfpKBe0
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/

〇前スレ〇
Pythonのお勉強 Part68
https://mevius.5ch.net/test/read.cgi/tech/1663235546/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ?
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/11/28(月) 13:04:31.73ID:QxjFh41D0
>>11
せめて日本語が読めるようになってから手を出せ。あほ
13デフォルトの名無しさん (ワッチョイ bf89-t+XA)
垢版 |
2022/11/28(月) 15:59:10.98ID:2MZJX1kl0
実行して立ち上がったブラウザではTwitterが表示されている
つまりJavaScriptは実行されている
にもかかわらずpython内では実行されていないソースコードが表示される
JavaScriptが実行された後のソースコードを取得するにはどうするといいでしょうか?
2022/11/28(月) 19:04:45.26ID:v7hHcTqw0
webdriverのインスタンスを作るときにjavascriptをenableにしてないとか
ページの生成が終わるのを待たずにhtml読んでしまっているとか
15デフォルトの名無しさん (ワッチョイ bf89-t+XA)
垢版 |
2022/11/28(月) 20:47:02.50ID:2MZJX1kl0
>>14
ありがとうございます。

オプションに「options.add_argument('--enable-javascript')」を追加したり
time.sleep(15)も追加しましたが駄目でした。
16デフォルトの名無しさん (ワッチョイ bf89-t+XA)
垢版 |
2022/11/28(月) 21:06:19.85ID:2MZJX1kl0
JavaScriptが反映されていないのが原因だと思うので
そのあたりをもう少し調べてみます。
2022/11/28(月) 21:07:26.37ID:cGJ8oXTgM
https://self-development.info/selenium%E3%81%A7twitter%E3%82%92%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%80%90python%E3%80%91/

ここ読んだけどtwitter側が対策してるっぽいね
APIを使えって事じゃない
2022/11/28(月) 21:26:56.65ID:6X8/W5dUa
ソース出さないで言ってもわからんぞ
19デフォルトの名無しさん (ワッチョイ d733-Z2Iz)
垢版 |
2022/11/28(月) 22:48:45.25ID:g0wreZ1J0
こういうの見て思うんだけど、スクレイピングの参考書ってAPIへの誘導ってないの?
プログラミングもWebの知識もない人間にスクレイピングだけでやらせようとするのってだいぶ罪深いと思う
それに、Webの勉強するのにスクレイピングやブラウザでアクセスしながらって相当な悪手だろ
普通簡単なWebサイト作りながらとか構築する側の立場で進めた方が効率いいし、それでもボリューム的に片手間で済むようなもんでもないでしょ
2022/11/28(月) 22:54:19.81ID:TOwN4nTg0
そういう参考書を作ってあげて
2022/11/28(月) 22:59:12.17ID:LDNjf6uN0
Webプログラミングと言えば
情報を発信するか集めるか、まあどっちかだしな
2022/11/28(月) 23:02:43.25ID:v7hHcTqw0
>>19
全くもっておっしゃるとおりだと思うけど、静的なサイトだとBeautifulsoupとかで見よう見まねでできちゃったりするから素人さんにもキャッチーなのよね
http通信とは?とかWebサーバーの仕組みとは?から入ると素人は力尽きちゃう
23デフォルトの名無しさん (ワッチョイ 1797-QUc+)
垢版 |
2022/11/29(火) 01:26:48.72ID:wVUySIDy0
>>19
APIはAPIで辛くない?認証不要APIとかだったらいいけど、大体お作法を調べるのに時間かかる。
スクレイピングは、HTML/CSSやったことあるならわかる感じがする。RPAみたいなものかなと。
いや逆にRPAこそGUIの知識いるしAPI整備してもらってやったらいいじゃんと思うんだけど、API整備の予算が付かないんだろうね…
2022/11/29(火) 01:43:32.73ID:fkaofXgI0
スクレイピングって、ウェブブラウザの振る舞いを模倣すればいいのと違うん?
2022/11/29(火) 07:37:52.82ID:NO7HG1hV0
>>24
今どきのブラウザは巨大アプリの筆頭みたいなもんなので簡単にエミュレートできないのさ
なのでjavascriptで自分を書き換えたりするサイトをスクレイピングするにはブラウザそのものを立ち上げて外部からブラウザに今どう表示してんのと聞くほうがいいわけ、それがSeleniumという仕組み
2022/11/29(火) 08:28:45.05ID:rvct1gbBM
カールで取るかAPIでとった方が早いだろ
27デフォルトの名無しさん (ワッチョイ d72c-/LaG)
垢版 |
2022/11/29(火) 10:28:54.87ID:Zdiz5UrS0
アホがいきなり動的生成サイトにwhile無限アタックをしかけるまである
悪いのは無責任な企業系入門サイトと、ライブラリ豊富なpython
2022/11/29(火) 10:35:59.05ID:oFH75lpf0
>>25
おまけにブラウザごとに挙動が大きく変わるから、ややこしい!
2022/11/29(火) 11:42:39.57ID:JTTSm0Nf0
初級者がスクレイピングやるなら、先にネット倫理から勉強してほしいところ
2022/11/29(火) 12:06:36.59ID:oHPPEt2oM
初級者が考えるような事は調べりゃ出てくる
初級者は検索して自己解決に導けないならあきらめた方が良い
2022/11/29(火) 12:12:16.73ID:OkL5Yz/20
Twitterなら、API利用から始めると楽だと思う
2022/11/29(火) 12:12:24.76ID:fkaofXgI0
>>25
単純化すると
ウェブブラウザみたいに、サイト開いてAPI叩いてデータ(JSONが主流になったね)拾って、
これをパースして個別データとして取り込んで、ってことだよね
これってウェブブラウザの振る舞いを模倣していることにならないのかな?
2022/11/29(火) 12:12:37.05ID:Rlb9t/Eq0
たいてい、スクレイピングの本には、図書館へスクレイピングして、
サーバーを落とした香具師が、業務妨害で逮捕された事件も書いてある。
だから必ず、契約してAPI を使うように書いてある

あくまで練習用に、自分のPC 内のウェブサーバーへアクセスして試すべき。
VSCode の拡張機能・Live Server で、簡単にサーバーを起動できる

そこに対して、curl, wget, Selenium Webdriver などで試す

基本的に、ほとんどのサイトは、5ch みたいに先にHTML を送っておいて、
その中で、Ajax(JavaScript)によって内容をサーバーへ取りに行くので、
Selenium で実際のブラウザを使って、wait しないと内容を取れないはず
2022/11/29(火) 12:24:13.36ID:OkL5Yz/20
>>33
落としたことにされた人には、図書館も開発元の三菱情報システムも、謝罪しているけどね
2022/11/29(火) 12:26:22.23ID:Rlb9t/Eq0
山浦 清透

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

これは、PHP だけど、
Udemy の山浦ぐらいの相当プロでも、1:5:42 の所で、
マイナビ求人をスクレイピング攻撃しているだろw

プロでも間違うから、なおさら素人なら、無限ループで攻撃し放題。
業務妨害で逮捕されるだけ

データベースに保存するなら、普通はPHPじゃなくて、Ruby on Rails を使う
2022/11/29(火) 12:29:52.96ID:OkL5Yz/20
ウィキペディアにも経緯が詳しく書かれているから見るといい

https://ja.wikipedia.org/wiki/岡崎市立中央図書館事件
2022/11/29(火) 12:31:54.18ID:HCCm6VNmr
サーバーを落とした香具師!
2022/11/29(火) 12:35:46.90ID:5xrJvc530
このような場合はJPCERT/CCに相談して欲しかった
2022/11/29(火) 12:58:16.32ID:OkL5Yz/20
この障害は岡崎だけでなく、全国の図書館でも発生していたそうだ
朝一でサーバー再起動が業務となっていたところもあるそうだ
悪質なのは、この障害、原因を開発元が承知していたことと、
システム更新(もちろん有料)の口実にされていたこと
ハードの買換をさせられた図書館もある
詐欺事件とされてもおかしくはない
2022/11/29(火) 13:04:50.65ID:azSIQh15M
まぁ我々は困らないし
当事者が気を付ければ済む話
過去の事件ループはもう良いから
それで終わりにしろ
2022/11/29(火) 13:14:40.68ID:eTNa7b4f0
twitterなんて「規約読め」「API利用しろ」で終了だろ
図書館事件は特殊条件踏みすぎててミスリードすぎる
42デフォルトの名無しさん (ワッチョイ d733-Z2Iz)
垢版 |
2022/11/29(火) 13:16:57.04ID:fQLmT73p0
>>32
逆に、人がAPIで提供されるjsonのデータ読めって言われてもきついでしょ
それと同じで人が読みやすいように作られてるWebのUIをソフトウェアにやらせるのは筋違いなんだよ
seleniumにしたって元々はJavaScriptのテストを走らせるために作られていて、誰かが作った仕様のはっきりしないWebサービスのUIを解析するためには作られてないと思うよ
今もそうだかは使ったことないからはっきりとはいえないけど
2022/11/29(火) 13:34:20.35ID:Rlb9t/Eq0
元々、Selenium Webdriver, Capybara などは、

Ruby on Rails の開発で、システムテストで実際のブラウザを自動操作して、
画面の動作を確認するためのツール
44デフォルトの名無しさん (スップ Sd3f-8UFK)
垢版 |
2022/11/29(火) 14:04:13.09ID:AC1KYodjd
Ruby馬鹿がいつもの噓
45デフォルトの名無しさん (ブーイモ MM8f-oElN)
垢版 |
2022/11/29(火) 14:04:43.85ID:sKS8alA2M
API使いたくないからスクレイピングするんだろ
何言ってんだか
2022/11/29(火) 14:28:15.03ID:6F6KBCUn0
>>44
今回はちょっと違う
2022/11/29(火) 15:17:30.94ID:NO7HG1hV0
>>32
おっしゃる範囲では模倣してることになるよ
しかしPythonのライブラリでブラウザの全部の機能を模倣するのは難しいので、Javascriptをゴリゴリ使うようなサイトではブラウザを模倣するんじゃなくてブラウザにレンダリングを外注するのよ
2022/11/29(火) 18:02:03.33ID:lUjN289S0
集合って使う?
2022/11/29(火) 18:10:29.16ID:q/VfFbZ+6
はい
2022/11/29(火) 18:10:39.03ID:JTTSm0Nf0
辞書でキーが値でもある場合とか、リストからユニークなもののみ抽出したいときとか、たまに使う
2022/11/29(火) 19:26:38.65ID:3YOnpcyo0
>>32
サイト開いて、ってなに?
2022/11/29(火) 19:30:41.60ID:GC2yOS5aa
>>48
集合ってセット型のこと言ってるよね?
どんな職種かにもよるけれど
俺の働いてる環境だとfor文と同じ頻度で使う感じかな
集合ってすごく便利でさ
重複削除するのも排他的な処理にも使えるのでめちゃめちゃコスパいいんだよ
2022/11/29(火) 19:34:01.33ID:GC2yOS5aa
>>48
何を言っているかと言うと
for文はイテレータとして機能するんだけど
set型はフィルタリングとして使えるんだ
2022/11/29(火) 19:36:34.48ID:GC2yOS5aa
>>48
更に何を言っているかというと
FizzBuzz問題も一行で解くこともできて便利なんだよって話ね
2022/11/29(火) 19:46:06.06ID:lUjN289S0
重複を削除したい、というタイミングで集合に入れて戻す
とかならそういう関数だとみなせるので必要が生じたら使う、でいい
ではなくて、最初からずっと集合で持ち続けるような用途があるかどうか
56デフォルトの名無しさん (ブーイモ MMfb-QUc+)
垢版 |
2022/11/29(火) 20:21:39.71ID:SFyPOz/XM
>>55
普通にある。
アンケートの選択肢の一覧がわかっていないときに選択肢集合を取り出すのに使ったり、
スケジュールを調整するときに、日程集合aと日程集合bの積集合が空かどうかでスケジュールが被っていないかを確認したりなど、
入れるときから集合にしておいた方がいいケースはいくらでもあるよ。
2022/11/29(火) 20:38:01.11ID:lUjN289S0
重複してたら集合に追加する時にはじかれる訳だけど、
それに関してはケアしなくていいの?
無視されてしまったスケジュールの人が発生しそうだけど

勝手に重複が削除される仕組みはどう考えても危険で、
うまく使える局面が思いつかない
2022/11/29(火) 20:53:34.02ID:VRBW4+C+0
初心者スレ行ったほうがいいんじゃないか?

s1 = {"2022-12-01", "2022-12-02"} // Aさんの希望日
s2 = {"2022-12-02", "2022-12-03"} // Bさんの希望日

print(s1 & s2) // -> {"2022-12-02"}
2022/11/29(火) 21:10:31.21ID:dP4707zz0
s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
print(set(s1) & set(s2))

これでも同じなんだよな
&演算が強力だから使いたいだけで、集合で保持しておくメリットが無い
2022/11/29(火) 21:11:54.06ID:NO7HG1hV0
リスト→セットがゼロコスト変換なわけなかろう
2022/11/29(火) 21:14:02.60ID:eLjR8f750
s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
for x in s1:
for y in s2:
if x == y:
print(x)
オラァ!
2022/11/29(火) 21:18:24.33ID:+HrRhDam0
内部でソートされてないと有り難みも半減
2022/11/29(火) 22:34:54.85ID:UIouEa7w0
Listが標準、Setがライブラリ拡張で不利だとしても
ドキュメンテーション重視でSetつかうことあるし
視野がせまいとしか
2022/11/29(火) 23:09:52.10ID:4MUOq3YH0
>>59
それどう見てもリストで保持するメリットの方がないだろ...
2022/11/29(火) 23:36:33.92ID:JTTSm0Nf0
すぐにあれこれ思いつかないけど、予め予約語や予約番号を突っ込んでおいてユーザがそれらを入力したら弾くとか、処理済みのファイル名を覚えておくとか
2022/11/30(水) 06:40:38.93ID:Wig3zpdW0
ブラウザの履歴だな
2022/11/30(水) 06:44:23.82ID:VpVi1ao4a
履歴はURLだけでなくアクセスした日時も覚えておく必要あるからSetだけだと難しい
68デフォルトの名無しさん (ワッチョイ 1797-QUc+)
垢版 |
2022/11/30(水) 13:21:08.67ID:5wV2hx4y0
>>57
それをケアしたいならin演算子を使えばいいだけであって、setの根本的問題ではない。
そして、in演算子はlistとsetならどう考えてもsetのほうが速い。
もちろん、重複を許さないリストのバリデーションなんかにも使えるよね。
69デフォルトの名無しさん (ワッチョイ 1797-QUc+)
垢版 |
2022/11/30(水) 13:29:48.45ID:5wV2hx4y0
リストで持っておけばいいじゃん、必要なときにsetに変換して処理するから、という人は、計算量なんかを考えてみるといいよ
計算量無視するなら62のコードでいいじゃんってことになっちゃうしね。
まあ、Python遅いから計算量を減らすようなコードを書くことに説得力がないというのはそうなんだけど、
結局普段からそういう練習していないと高速化したくてC++に一部実装を変更したときに速いコード書けないから。
もちろん、リストで作っておいてsetに変換する方がいいケースもあるよ。
PandasのDataFrame,Seriesのインデックスのところで演算するのなんかも、集合的な演算で行なっているのだし、慣れておいて損はないと思うが。(実態はboolのSeriesだけど)
2022/11/30(水) 19:56:40.31ID:x00c17Gpa
セットを学ぶ時間と意義はあるってことな
セットは慣れたら便利
速度もメモリにも優しくて安心
セット知らないってなんかダサいw
よってこれはPythonistaの総意です
2022/11/30(水) 22:33:59.64ID:QeHG+uMw0
辞書が上位互換では?
2022/11/30(水) 22:47:34.56ID:rU+WJpIK0
値がいらないときは辞書を使う意味がない
2022/11/30(水) 23:08:38.63ID:v5dUZ8sT0
perlで、値として何でも1を入れて有無だけ判定するような使い方してた
配列でできれば良かったんだけど
2022/11/30(水) 23:12:12.55ID:v5dUZ8sT0
と書いてから気付いた
これsetの有効な用途だな

一度処理した対象は二度と処理しないように処理済みの一覧を作りたい
それを管理する為にsetはうってつけ
2022/11/30(水) 23:36:43.30ID:QeHG+uMw0
だからそれは辞書でもできるでしょ?
2022/11/30(水) 23:59:38.73ID:v5dUZ8sT0
辞書でも可能だけどいかにも頭悪いので辞書でやるべきではない
2022/12/01(木) 00:09:20.39ID:NDzBgIvm0
集合演算できるのか、いいなあ
2022/12/01(木) 00:40:40.07ID:j5V8nih+0
過剰なものを使いたくない気持ちを持っていたほうがいい
2022/12/01(木) 00:59:18.11ID:YFm4Yapz0
合理的でないとコードの意図が伝わりにくくなるやん
門外不出の書き捨てならどうでもいいけど
2022/12/01(木) 08:03:00.66ID:c3eQdr+KM
なに使おうがココ見てる奴は誰も困らんので
各々好きなように活用すればいい
2022/12/01(木) 17:07:42.57ID:NDzBgIvm0
モチベーションのためにpythonで
awsのサーバーレスいじってる
別に何かを作るつもりはないけど
あー、こうやってユーザーの入力を受け取るのね、
とかデータベースへの書き込みをいじってる
2022/12/01(木) 22:19:38.72ID:QPJQThlG0
>>72
順番を保存したい時は辞書を使う
2022/12/01(木) 23:40:07.68ID:sismMzCH0
OrderedDict使おう
2022/12/03(土) 15:38:28.64
pandasで思ったのですが

import pandas as pd
df=pd.DataFrame({"A":range(0,10,1),"B":range(10,20,1),"C":range(20,30,1)})
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
print(df)

これってA+BとA+Cで計算量はO(2n)になっちゃいます?よね
だったら

df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
 df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
 df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]

こうすればO(n)だと思うのです?がこういう風に書かないのは視認性を優先しているからでしょうか?
2022/12/03(土) 16:01:43.70ID:HS9T9UMm0
そもそも O(2n) なんて書かないぞ
86デフォルトの名無しさん (ワッチョイ 4697-KDKu)
垢版 |
2022/12/03(土) 16:38:55.55ID:YuLtkiXA0
>>84
どっちもO(n)だし実際に実行してみると後者の方が遅いと思うよ
2022/12/03(土) 17:03:14.55ID:hui5F7Ye0
実測してみればいいのに
2022/12/03(土) 17:15:26.84ID:xZYRIIQ3
>>86
なるほどそうなんですね
前者だと、len(df)の回数だけループしてdf[""]に結果が代入される、をdf[""]=の行だけ繰り返すようなイメージで
例えばlen(df)が10万あったとしたら、10万ループ後にまた10万ループ…、みたいなことかと思ってました

実測してみました(合っているかどうかわかりませんが
かなり遅くなりましたね

import pandas as pd
import time
df=pd.DataFrame({"A":range(0,10000,1),"B":range(10000,20000,1),"C":range(20000,30000,1)})
start=time.time()
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
end=time.time()
print(end-start)

start=time.time()
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
 df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
 df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
end=time.time()
print(end-start)

#0.0027747154235839844
#5.960754871368408
89デフォルトの名無しさん (ワッチョイ 4697-KDKu)
垢版 |
2022/12/03(土) 17:44:15.36ID:YuLtkiXA0
>>88
C/C++言語で似たような処理をうまく実装すれば、基本的にはどっちの書き方でもそんなに違わないのだけどね。
結局は行数×2の足し算をしなければいけないのは、どうループを回そうが同じ
(厳密にはCPUのキャッシュに載る書き方をするかどうかとかで性能は違うかもだけど)

Pandasの場合、DataFrameは、実は列ごとのデータであるSeriesをくっつけてるだけで、
列と列を足して新しいSeriesを作るような演算は、Series同士の演算ということで専用のCのコードが走ってロスが少ない。
一方1行ごとにPythonのforループで値を取り出して出すと、Pythonの遅いループのせいで遅くなる。
NumPyでもPandasでも、ブロードキャストせず値を一個一個取り出すような処理はめちゃくちゃ遅くなるからどうしようもない場合以外避けるべき。
2022/12/03(土) 17:51:36.28ID:hui5F7Ye0
外部モジュール使わない場合でも、
本当にループを書くより、同等の処理が一行で書ける系の書き方の方が速い
2022/12/03(土) 18:32:31.91ID:H3EtATlxa
>>84
富豪になれ
2022/12/03(土) 18:35:20.84ID:H3EtATlxa
iでループするとiというPyObjectにいちいちアクセスするから無駄が増える
2022/12/03(土) 20:52:15.48ID:AKVIlfb6M
計算よりもコードの解釈10000回に掛かる時間が長いのよ
2022/12/03(土) 21:05:08.47ID:hui5F7Ye0
実はこっそりコンパイルしてるだろと思っても本当にインタプリタなんだよな
変数名とか間違ってても到達しなければエラーにならない
2022/12/03(土) 21:18:53.10ID:pO2d8Q/6a
今時JITもない純粋なインタプリタだしな
どう考えても速くはならない
2022/12/03(土) 22:10:50.47ID:aUunlJ3Sd
>>84
O記法に使われるのは極限の値だからO(n)もO(2n)も大差がない一次関数的オーダーとみなされる
2022/12/03(土) 23:18:09.05ID:AKVIlfb6M
スクリプトなのを逆手に取ったトリッキーな事も出来るけどね
変数名を辞書のキーに使ってウィジェットを管理することでeval関数で自動同期できたりとか
2022/12/03(土) 23:25:00.89ID:hui5F7Ye0
perlはコンパイルしてから動くのに、evalで動的なことできるんだよな
あいつが一番気持ち悪い
2022/12/04(日) 00:54:32.96ID:E/Vw0mdO0
>>84
後者も毎回2行の処理があるから2nだよね
2022/12/04(日) 10:22:35.31ID:2Pwe8xJ8a
Oが下がってもループそのものをpythonで描いてる限り速くならんって話だろ
101デフォルトの名無しさん (ワッチョイ 972c-JkWk)
垢版 |
2022/12/04(日) 10:53:22.33ID:AtzUGoNp0
>>97
もうちょっと詳しく聞きたい
2022/12/04(日) 11:16:52.00ID:1/Hu21BBd
ChatGPTがやばい

たとえばネットで公開されてるプログラムのソースコードを渡したらめちゃくちゃ詳細に教えてくれる
自分はpython初心者だけど、理解できるレベルに噛み砕いて説明してもらえる

ここまですごいと「プログラム勉強する意味とは?」と不安になってくる
本当に「AIにやらせりゃいい」の時代が来る
これから人類は、仕事の価値が安すぎてロボットやAIにやらせないような、隙間の部分を仕事にしていくしかないかも

金銭的な資産がない状態から、技術を通して一定の財産を築いていくことは難しくなっていって
資産がある人間は苦労もせずさらに財産を増やせる、という社会構造だけが残ってしまうのでは
2022/12/04(日) 12:10:29.10ID:vdoNuXff0
ひらめいた
2022/12/04(日) 13:23:26.47ID:0ZfK2JLIM
>>101
自分はtkinterをクラス化して使ってるんだけど
ウィジェットを管理するクラスと、1つの変数に対応した複数のウィジェット持つフレームクラス(ラベル、インプット、ボタン)の2種類があって
管理クラスにウィジェットのタイプと変数名を渡せば、ウインドウ内に配置して、変数との同期を自動でやってくれるって感じにしてる
管理クラスは辞書で変数名をキーに、フレームオブジェクトを値として持っていて
updateを呼び出すとevalとexecをループで回して同期を行う感じ
色を変えたり、タイトルを変えたりするときは変数名をハンドル代わりにしてアクセスする
変数には共有のモジュール変数を使う必要があるけどね
2022/12/04(日) 14:29:21.47ID:XaoAEs7Da
>>98
それrubyもpythonもphpも同じだぞ
2022/12/04(日) 14:40:23.35ID:CjwdkMkG0
rubyは知らんけど、phpはどう考えてもコンパイルしとらんだろ
2022/12/04(日) 14:45:10.78ID:XaoAEs7Da
コンパイルというのが機械語という意味なら
むしろPHPはJITなので1番してる
Rubyは最近YJITというのが入ってデフォルトでオフだが
オンにするとJITが走る
pythonはJITはしてないがVMの中間言語にコンパイルして実行している
perlもJITなしのVM中間言語にコンパイル
2022/12/04(日) 14:46:34.14ID:XaoAEs7Da
つまりどの言語も何かしらの中間言語にコンパイルはしている
その後JITするかは処理系の実装次第
これはV8やJSCでも同じ
2022/12/04(日) 14:48:27.42ID:CjwdkMkG0
そら、ソースファイルを実行できんし
全ての言語がプロセッサが実行できる形式に変換はしとるわ
言ってるのはそういうことではない
2022/12/04(日) 15:10:34.41ID:LiTniMSdM
お前らのバカさかげんには
開いた口が塞がらない笑笑

コンパイラ作ったことないのか?
なにがJITだバカw
2022/12/04(日) 15:44:47.04ID:OHPAilb60
JITはJIT(just in time)コンパイラの略なんだが...
2022/12/04(日) 15:50:06.61ID:qWdYVkpM0
BASICの時代から中間言語使ってるしな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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