スレ立てるまでもない質問はここで 147匹目at TECH
スレ立てるまでもない質問はここで 147匹目 - 暇つぶし2ch913:885
17/05/21 11:15:36.77VISjd5sh.net
>>886-
ありがとうございます。
変えちゃいけないというわけではにと聞き疑問が解決しました。
定数変数の感性を引き続き鍛えることにします。

914:デフォルトの名無しさん
17/05/21 12:05:15.69fDsf7qWs.net
>>897
多分普通のアプリなら>>888のやり方のが良いけど、ゲームだったらユーザーが勝手に設定書き換えてチート行為出来ない様にセーブデータとかはバイナリファイルにした方がいい。
フルスクリーンかウィンドウかみたいなゲームそのものの設定は設定ファイルで良いと思うけど。

915:デフォルトの名無しさん
17/05/21 12:09:49.56KYYeGok8.net
>>884
> 確かメモリクリーナーってアプリはメモリ圧迫してOSのメモリ断片化解消機能を意図的に呼び出すアプリなんだけど、そう言う意味じゃ大量にメモリ喰う時点で断片化はOSが解消してくれんじゃね?

ディスクと同じで断片化を解消するにはメモリ内のデータを移動しなきゃいけないが、
ポインタ(メモリ座標の生の値)を使う言語ではデータの移動はできない。
参照を使う言語であれば、可能かもしれないが(ただしOSの仕事ではない)

またディスクは断片化していても、遅くなるだけでファイルを作成することはできるが
メモリの場合は、断片化によってうまれて小さな空き領域に
大きなデータを作ることはできない。

何度もメモリの確保と解放を繰り返す処理を行うと、使えない小さな空き領域が
たくさん作られていくことになる。

916:デフォルトの名無しさん
17/05/21 12:19:30.21fDsf7qWs.net
>>899
>>893
まあなんだ。
断片化して来たら意図的にメモリ大量確保でスワップファイルに吐き出させて再配置させりゃあ良いってわけだな。

917:
17/05/21 12:43:21.75pUWFtSb1.net
でもユーザー空間での断片化はどうしようもないだろう?
ユーザーメモリ空間が有限である以上,断片化を解消する手段はないとおもうよ,32bit 空間ならば断片化でアウトとなる可能性は十分にあるのでは?

918:デフォルトの名無しさん
17/05/21 13:18:10.582TTm6ATP.net
んなのOSがスワップファイルから書き戻す時にどう再配置するかだな。
アプリのアドレスを順に詰めてくのに中身のアドレスも詰めていかない理由もないんだが。。。
こればっかりはな。
そうでなけりゃ自前で再配置するかってーとそんなバッドノウハウの本に出会った事ない。
大量にメモリ喰うアプリがある以上、そう言う本があってもおかしくないんだが。

919:デフォルトの名無しさん
17/05/21 13:19:57.969HtUCvpi.net
>>899
これは俺の頭が腐ってるのか

・OSがOS上で動作するプログラムに提供するメモリと、本当に物理的な物理メモリと、それぞれの中身は必ずしも同一でない、
 だからswapなんてものが存在・機能しうるし、だから上で語られている「メモリクリーナー」は一応機能しうる、と思うのだが
・その言語を使ってプログラマが書くコードについてではなく、実際の動作について、ポインタ使わない言語ってあるのか

920:デフォルトの名無しさん
17/05/21 13:29:44.512TTm6ATP.net
>>903
大丈夫。腐ってない。
>>899がシッタカ押し通そうとして自爆しただけだ。

921:デフォルトの名無しさん
17/05/21 13:35:24.26KYYeGok8.net
>>904
自爆してるのはお前だばーかw

俺はメモリクリーナーの話をしていない
>>903はポインタを間違えただけだろうが
それに気づかないお前ばマヌケだば~かw

922:デフォルトの名無しさん
17/05/21 13:38:40.13KYYeGok8.net
>>903
> これは俺の頭が腐ってるのか
そうそうお前の頭が腐ってる

物理的な配置の話は関係ない。
物理的な配置が変わった所で論理的な配置は同一だ。
それはスワップした所で変わらない

論理的な配置が断片化しているのを
物理的な配置を変えた所で何も改善できない。

923:デフォルトの名無しさん
17/05/21 13:40:19.482TTm6ATP.net
>>905
はあ。。。
あのな?
メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ?
アプリのガワだけ再配置しても中身が断片化してたら遅いままだわな?
おk?

924:デフォルトの名無しさん
17/05/21 15:00:39.90KYYeGok8.net
>>907
> メモリークリーナーで再配置して動作が一時的とは言え改善するんだろ?

それは再配置したから改善したのではない。
単に「使用頻度の低いメモリを今すぐスワップファイルに押し出す」を実行しただけだ

「メモリをディスクに追い出しています。しばらくお待ちください。」と
今(実行したタイミング)で時間をかければ
後から(足りなくなった時点)で追い出す時間がなくなるってだけの話。

ディスクに追い出す処理を、今やるか後でやるかの違い。

それがメモリクリーナーの仕組み


そして本当に使用頻度の低いメモリであれば効果はあるだろうが
実際のメモリクリーナーは使用頻度を見ていない。
メモリクリーナー以外のプロセスのメモリを追い出しているだけ。

必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が
後から発生するので意味が無いと言われてる。

925:デフォルトの名無しさん
17/05/21 15:07:14.399HtUCvpi.net
>>906
875,878,880と来てたからOS管理の物理メモリ領域を考えてるのかと思っていた
それで>>884はOS管理のメモリ全体の話として「メモリクリーナー」出したんだろうと認識していた
しかしそうすると>>899がわけわからなかったので903を書いたところ、
906はプロセスが見てる仮想アドレスのほうだけ考えろという

しかしそうすると>>875がわからん
現実にOSには返却されなくてもmalloc/free叩いてるプロセスから見たらしっかり解放されてんじゃね?と思うのだが
さらにいえば、それはつまりプログラマ側が考えてメモリ確保/解放しろよという話であり、
(851のケースだと処理をある程度細切れにしたうえで、繰り返し動的に使うメモリ領域のサイズを固定にするとか)
GCのある言語とないcのような言語とを比べる文脈で意味のある内容でもない
という気がするんだが

あとポインタ使わない言語の件もさっぱりわからん

926:デフォルトの名無しさん
17/05/21 15:19:31.56hH55+ewD.net
>>908
語るに落ちたな。


>そして本当に使用頻度の低いメモリであれば効果はあるだろうが
>実際のメモリクリーナーは使用頻度を見ていない。
>メモリクリーナー以外のプロセスのメモリを追い出しているだけ。

>必要なメモリも追い出すから「必要なメモリをディスクから読み取ってます」が
>後から発生するので意味が無いと言われてる。

その通りだ。
使用頻度無視というか、メモリークリーナーが最大使用頻度になる事で他の使用中のアプリまでスワップファイルに追い出すんだよ。
だから、おまいの言う動作が改善してるのはまだ使用頻度低いメモリが書き戻されてないからじゃあない。
全部スワップファイルに行ってるんだからな。
むしろ、お前さんの言ってる書き戻す最中はまだ書き戻ってないHDD上のスワップファイルにアクセスする頻度が多いからクソ遅い


927:。 (使ったことあるなら経験あるだろ?) 全部書き戻ってから快適動作するけど、また時間が経てば断片化する。 一時的って言ってもそれなりに持続性はあるんよ。



928:デフォルトの名無しさん
17/05/21 15:27:24.18hH55+ewD.net
>>909
おいらも分からん。
それじゃGC無い言語がゲームに向いてる説明にもならん。
仮にfreeして直ぐじゃなかったとしても、OSが解放おk出した時点で解放されるのに対してGCな言語は「まだだ!!まだ行ける」って離さない場合があるとかぐらいかね~?

まあ、断片化防ぐのにfreeを遅らせるとかは間違っちゃ。。。ん?
メモリ確保した時点で断片化進んでるじゃんよ。
解放しても同じ場所が開くだけだからタイミング関係ねーわ。

929:デフォルトの名無しさん
17/05/21 15:27:39.549HtUCvpi.net
>>910
横からすまんけど
>また時間が経てば断片化する。
この「断片化」ってOS管轄側のメモリであって、プロセスから見えてる仮想アドレス領域じゃないよな
じゃないと筋が通らないし
で、このOS側のメモリ断片化が、実際の(体感)性能にどんくらい影響与えるのか確認したURLとかもし知ってたら教えてくれんか

930:デフォルトの名無しさん
17/05/21 15:32:53.09KYYeGok8.net
>>910

> 語るに落ちたな。



> その通りだ。

笑うところ?
あってるじゃんwww

931:デフォルトの名無しさん
17/05/21 15:34:03.47hH55+ewD.net
結論としては構造体の中身の配置に気を付けて、隙間のある構造体を避ける。
リストより配列をなるべく利用して連続したメモリ確保を意識して、解放した時マダラ模様ができないように気を使う。
プログラマー側がメモリの断片化に対して出来ることってこのくらいじゃね?

932:
17/05/21 15:34:34.31pUWFtSb1.net
>>909
物理アドレスの断片化はOS/CPU のページングで解消できるが,論理アドレスの断片化はどうしようもない
たしかに,プログラマ側からfreeされた領域を,うまくやりくりして断片化を少なくするのは,ライブラリのmalloc/freeの書きようによるが,
今,すでに断片化してしまった論理アドレス空間を連続化するのは,すでに断片化させてしまった以上ライブラリでは対処できそうにないし,OS側でも当然できない

ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない,そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観)
GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥

933:デフォルトの名無しさん
17/05/21 15:35:31.07hH55+ewD.net
>>913
抜粋したトコだけな。

934:デフォルトの名無しさん
17/05/21 15:40:57.93KYYeGok8.net
>>912
hH55+ewDが言ってるのがOS管轄側のメモリ。

俺はそのOS管轄側のメモリ=物理メモリが断片化するという話はしてない。
物理メモリはいくら断片化しようが何の影響も与えない。

俺が話してるのはプロセスから見えてる仮想アドレス領域
malloc/freeを繰り返すと、その仮想アドレス領域は断片化する。

ただし断片化するから遅くなるという話はしていない。
断片化するから小さい空きメモリができまくるという話をしてる

その小さい空きメモリは、OSからドカンと割り当ててもらった
ある程度のサイズのメモリ領域に埋もれているので、
そのメモリはfreeしてもOSに返されることはない。
ドカンと割り当ててもらったサイズ単位で管理されているから。

mallocしするたびに数十バイトとちまちまとメモリをOSから
もらってるわけじゃないということを分かってないのだろう

935:デフォルトの名無しさん
17/05/21 15:46:04.28KYYeGok8.net
>>915

> ポインタを使わない言語でのGC装備は断片化に対抗できるが,万能ではない,
> そもそもGCは余分な仕事をしているわけだし,私にはマーク&スウィープと比べて劇的によくなるアルゴリズムがあるとは思えない(これは主観)
> GCする他に変数の再配置もやるのか?なんだかメモリ管理だけでビジネスロジックを圧迫しそうな勢いじゃないか‥

君には基本的なソフトウェアの進化っていうのを教えてあげよう

「人間が楽をするために、コンピュータに仕事を押し付ける」だ


コンピュータの仕事が増える? それこそがソフトウェアの正常な進化なんだが

936:デフォルトの名無しさん
17/05/21 15:47:09.75hH55+ewD.net
>>912
んとな。
両方だよ。
OSはOSで複数のアプリをメモリに配置する。
確かページ単位とか言うので複数アプリの使用頻度高い所だけ置いてる。
どっちかつーとOSのは断片化し難い。
してもスワップファイルに追い出すだけだし。
勿体無いスペース出来て多目にスワップファイルに書き込まれるくらい?
アプリがスワップファイルにアクセスする頻度上がって遅くなるだけ。

んで、アプリはアプリでメモリの確保と解放繰り返してたら断片化する。
大量にメモリ使って新しく置く隙間がなくなって、酷い場合はそれ以上確保できなくなる。
異常終了する。
普通そこまでメモリ使わないから意識することないだろうけど。
メモリリークはこのメモリ確保出来なくなって異常終了ってパターン。

937:デフォルトの名無しさん
17/05/21 15:49:29.509HtUCvpi.net
mallocが現実にどんなコードになってるかとか各種GC実装の中身とか
全然知らない俺が書いてるのはおこがましいかもしれないが

>>917
>物理メモリはいくら断片化しようが何の影響も与えない
これ詳しく頼む
それと、一番大事なとこで、>>851のような
大きいデータを読んで大きいデータを生成しては破棄する処理を繰り返し行う場合、
GCのある言語を使うか、GCない言語を使うか、ってところはどう考えてるかスパッと聞きたい

938:
17/05/21 15:50:12.50pUWFtSb1.net
>>918
せいぜい first-fit-strategy を best-fit-strategy にするくらいでイイ線いってるとおもってる
GC の威力は感じているよ,メソッドチェーンな書きようは C++ では考えられない
でも,論理アドレスの断片化は,メモリ空間の拡大で解消するのがベスト,言語系でどうこうするのはどうかな?って感想なんだ‥

939:デフォルトの名無しさん
17/05/21 15:55:23.38KYYeGok8.net
>>920
物理メモリはいくら断片化しようが
CPU(ハードウェア)が備えるメモリ再配置機能によって
常に断片化してないように見せることが可能だから
ハードウェアが備える強力な特殊能力よw

940:
17/05/21 15:58:57.81pUWFtSb1.net
>>920
物理メモリの断片化はCPUの機能であるページングで解消できるよ
でもね,スラッシングを起こすようでは,そもそもそれは物理メモリが足りないんだと思うよ,メモリクリーナーは理屈は分かるがネーミング自体がうそ臭いね‥

大きなデータを使うこととGCとは相関はないと思うよ,GCは余分なことをしている,という感覚は大事だね
C/C++ で延命できる気は最近はしなくなってしまった,すっごくシビアなことをしているのでもないかぎりC/C++にこだわるのはどうかな?

なんにつけ,とにもかくにも,障害の解消には物理メモリを増やすのが一番手っ取り早いと思うね‥

941:デフォルトの名無しさん
17/05/21 16:07:45.17hH55+ewD.net
>>920
単に大きいファイル扱うならバッファ用意(メモリ確保)して、ファイルからバッファ分だけ読んで処理して書き出す。をファイルの中身全部読むまで繰り返す。
全部書き出したらメモリ解放。

C/C++でのメモリ確保と解放はゲームみたいに「このタイミングで止まると困る」ってのじゃ無ければ気にすることはない。

942:デフォルトの名無しさん
17/05/21 16:08:56.88hH55+ewD.net
気にすることはないってのは別にGCな言語でも良いってことね。

943:
17/05/21 16:10:01.48pUWFtSb1.net
ま,そういうことだろうね

944:デフォルトの名無しさん
17/05/21 16:12:35.19KYYeGok8.net
なお、GCがなくてもメモリがスワップアウトすれば止まります

945:デフォルトの名無しさん
17/05/21 16:28:44.269HtUCvpi.net
>>922-923
すまん混乱してきた
まずもってCPU(MMUというかTLBというか?)が物理/仮想のメモリアドレス変換を高速にやってるのは知らんかった
しかし、するとこれはハード的な物理メモリと、OSが見てる物理メモリ(ハードからは仮想)と、OS上の各種プログラムが見てるメモリ(OSからは仮想)と、
3層構造になってるという認識で良いのか?(正しくは知覚してないだけだろうけど、ある意味GC言語だと4層)

んでもう一つ、OS<->OS上のプログラム間ではやはり断片化は問題になったりしないのか?
プロセスごとに空間作って提供してるんだし、swapファイル/領域持ってたりするんだから、OS側も対応表持ってるよねこれ
そうなるとOSが見てるメモリについても断片化すると影響皆無とはならない気がするんだけども

GC有無と大量データ処理は関係なくねとか
ハード成長してんだからプログラマがガリッガリに管理しない方向のほうが良くねとか、については理解できる
個人的にはどうしてもそっちで考えちゃうが

946:デフォルトの名無しさん
17/05/21 16:52:53.58hH55+ewD.net
>>928
>>919も見て欲しいな。。。
OSもプログラムである以上、バグが全く無いわけじゃ無い。


>しかし、するとこれはハード的な物理メモリと、OSが見てる物理メモリ(ハードからは仮想)と、OS上の各種プログラムが見てるメモリ(OSからは仮想)と、
>3層構造になってるという認識で良いのか?(正しくは知覚してないだけだろうけど、ある意味GC言語だと4層)

>んでもう一つ、OS<->OS上のプログラム間ではやはり断片化は問題になったりしないのか?
>プロセスごとに空間作って提供してるんだし、swapファイル/領域持ってたりするんだから、OS側も対応表持ってるよねこれ
>そうなるとOSが見てるメモリについても断片化すると影響皆無とはならない気がするんだけども


32bitOSに4GB積んでも3.5GBしか認識しないとかあったっしょ?
あれは、OSは4GBまでしかメモリ扱えなくて、下位メモリをデバイスドライバとかiGPUのメモリに割り当ててるから、物理メモリにマッピング出来ないんよ。
3層構造って考えで合ってる。

ハードは物理メモリ。
OSは論理メモリ。
アプリは仮想メモリ。

GC言語は4層じゃなくて仮想メモリの解放を自動化してるだけ。
独自にアドレス持ってる訳じゃない。

947:デフォルトの名無しさん
17/05/22 15:11:59.91I0Kgi1YL.net
このご時勢でWindowsアプリでメモリ断片化なんて本当に問題になるのか。
組み込みじゃあるまいし理解できん。これを理由にGC推しも理解できん。
性能最優先で最善を尽くしたいならc/c++一択、開発効率優先ならC#でもJAVAでも好きにしろ、で終わる話だろ。

948:デフォルトの名無しさん
17/05/22 16:09:46.853W7nNBo7.net
速度を出すならアセンブリだ!

949:
17/05/22 20:05:48.43Zgh5eQVH.net
>>930
GC 推しなのは,メモリが逼迫する状況ではどっちでも手の打ち様がなく一緒だから

950:デフォルトの名無しさん
17/05/22 21:37:24.116t8os15O.net
>>930

951:デフォルトの名無しさん
17/05/22 21:38:09.236t8os15O.net
GC推しする理由は、開発効率以外にないと思うけど?

952:デフォルトの名無しさん
17/05/22 21:59:03.83g3oHLvAy.net
開発効率って言っても両方使えるなら対して変わらんけどな

953:デフォルトの名無しさん
17/05/22 22:11:51.196t8os15O.net
GCない言語で今使われてるのって
C/C++ぐらいでしょ?

GCの有無とは関係なく、言語とそのライブラリで
開発効率が随分と違うんだが

954:デフォルトの名無しさん
17/05/22 22:13:23.966t8os15O.net
GCの有無とは関係なくじゃなくて
GCの有無以前にと言うべきか

GCの有無でも開発効率は変わるが、
C/C++はそれ以前に言語レベルで開発効率が悪いわけで
対して変わらないという答えになるはずがない

955:デフォルトの名無しさん
17/05/22 22:30:16.02O7KSblrp.net
CやC++にはboehm-gcがあるがそれで開発効率が良くなるかは疑問だ

956:デフォルトの名無しさん
17/05/22 22:36:03.33FIg1n5Bp.net
性能もC/C++とJava等で大して変わらないという答えになるはずがないな

957:デフォルトの名無しさん
17/05/23 01:32:32.30VKoAE6j/.net
swift「わいもgcなんぞたよらんでぇ」

958:デフォルトの名無しさん
17/05/23 02:02:49.10OrYmr6qc.net
>>940
それな。

GCは備えていないがswiftみたいに明示的に解放する
必要はない言語はなんて言えば良いんだろう

959:
17/05/23 12:28:14.96F0rvxaiH.net
>>939
あくまで、論理アドレス断片化等のメモリ管理上の話だったかと

960:デフォルトの名無しさん
17/05/23 13:00:11.063W0XlzKr.net
>>939
気づいたら、C# が C++ の速度を凌駕している!
URLリンク(espresso3389.hatenablog.com)

「C# が C++ の速度を凌駕している」らしいので、C++側を高速化してみた
URLリンク(qiita.com)

書き方次第ではある。

961:デフォルトの名無しさん
17/05/23 13:06:49.023W0XlzKr.net
まあJavaはポインタ無いから、でかいクラスを参照渡し出来ないからC#より高速化の手段少ないんだけどね。
確か引数内でnewするとかの裏技的なことで参照渡してた記事を読んだ気はする。

962:デフォルトの名無しさん
17/05/23 13:08


963::50.05ID:BC+HAMVa.net



964:デフォルトの名無しさん
17/05/23 13:14:05.513W0XlzKr.net
C++どころかCよりも速いC#の記事を昔読んだんで、探してるんだけど見つからんかった。
もうちょい探すけど、最終的にはCがまた逆転してた。
何つーかGCの有無ってより、高速化の手段の有る無しやね。

965:デフォルトの名無しさん
17/05/23 14:12:47.50Y6ikkNJp.net
速度と言語は関係なし。実装しだい。
Cコンパイラどうしでも差がある。

966:デフォルトの名無しさん
17/05/23 14:15:56.51IWbgSxPp.net
まあ、プログラムの速さを気にするやつの99%はヘボいコードしか書けないと言う調査結果が有るよね。

967:デフォルトの名無しさん
17/05/23 14:36:30.36ufwaINxg.net
プログラムの速さを気にしない奴の99.9%はヘボいコードしか書けないけどな

968:デフォルトの名無しさん
17/05/23 15:13:44.94IWbgSxPp.net
まあ、この二つの命題から言える事は99.9%以上のプログラマはヘボいコードしか書けない

969:デフォルトの名無しさん
17/05/23 15:57:02.69Y6ikkNJp.net
C#はネイティブ化してなかったか LLVM使用で
それだとDOTNETとまだ別の速度だろ

970:デフォルトの名無しさん
17/05/23 16:08:46.78UVgxThtR.net
俺は残り0.1%にかけるぜ

971:デフォルトの名無しさん
17/05/23 18:04:57.287NMuNQp8.net
書けると賭けるに掛けたのか

972:デフォルトの名無しさん
17/05/23 18:06:45.80i5pqu4AL.net
つまり謙虚さが大事ってことだな

973:
17/05/23 18:15:06.53F0rvxaiH.net
>>951
いつも思うんだが、VM のメリットとして当時は何を想定していたの?

974:デフォルトの名無しさん
17/05/23 18:53:10.02PJIONmxy.net
横からだが、昔はVBとVC++で別々のライブラリだった。
ライブラリと言うか、VBはVC++で作られたコンポーネント利用するだけだった。

.netはVB、C#、F#、VC++/CLIだっけ?でライブラリを共通に使える。
.net Frameworkのもだし、それぞれの言語で自作したライブラリも。

今はストアにうpしたらストアで各プラットフォーム用にILをコンパイルしてネイティヴにするか、する予定。
もう完成したか追ってないけど、実験的に動かしてたのまでは追ってた。

理屈の上ではJavaのVMでも出来そうだけど、プラットフォームの違いを吸収するのが大変で現実的じゃ無い。
MSは自社プラットフォームに限定する事で現実的な選択をした。

975:デフォルトの名無しさん
17/05/23 19:30:40.25Y2XmHkKh.net
参照とポインタってどう違うんでしょうか?
参照もポインタもオブジェクトを指すのは同じではないでしょうか?
勉強してる内に目が回ってきてしまいました・・

976:デフォルトの名無しさん
17/05/23 19:36:05.86wXnS6T2N.net
>>957
ポインタは計算で変えられる

977:
17/05/23 19:41:04.25F0rvxaiH.net
>>957
ポインタを抽象化したのが参照、ということでお茶を濁しておいていいんじゃないでしょうか…
C++ ではポインタの参照とかできるので、いろいろ記述してみるといいかと

978:デフォルトの名無しさん
17/05/23 20:27:55.52Y2XmHkKh.net
>>958
おーなるほど!
確かにそうですね

>>959
ポインタのポインタのポインタとか、頭の体操以外に実際に使われることはあるのでしょうか?

979:デフォルトの名無しさん
17/05/23 20:29:08.73nu8Noumz.net
>>960
多重配列とか書くと中身はそうなってる

980:デフォルトの名無しさん
17/05/23 20:47:05.49Y2XmHkKh.net
>>961
なるほど、そういうふうになってるんですね
ありがとうございます

981:デフォルトの名無しさん
17/05/23 21:19:47.80/AJUEF8B.net
ubuntuでシェルスクリプト最近良く使うんだけど
テキスト処理が弱いのでawkっていうの勉強してみようと思ってんだけど
どうせawkやるくらいならこれ勉強したほうがいいてのある?
独断と偏見でいいけど理由も�


982:ナきればおしえてください。・



983:
17/05/23 21:32:44.64a7cn3COJ.net
>>963
awk なんか古すぎる,やめとけ,awk->perl->ruby の流れだから ruby がいいのでは?

984:デフォルトの名無しさん
17/05/23 21:47:24.07KpOiakAM.net
>>960
多重に繰り返すのはたまにある。
C++が流行る前は、ポインタを返す関数のポインタの配列のポインタを返す関数なんてのもよくあった

985:デフォルトの名無しさん
17/05/23 21:49:18.70UVgxThtR.net
>>963
perl、python、ruby使えるけどawkで済むときはawkで書くよ
つまり無駄にはならない
ただ複雑なことに当たったら無理にawkに拘らずに他の言語に手を伸ばした方がいいんじゃないかな

同様にsedもよく使う

986:デフォルトの名無しさん
17/05/23 21:53:11.09IEg1DOoE.net
テキスト処理ならsedでいいやろ(原理主義)

987:デフォルトの名無しさん
17/05/23 22:04:05.60uZSBUmLD.net
Perlをバリバリ書ける人は尊敬するわ
サーバーサイドスクリプトと言えばPerlだった時代に覚えようとしたけど頭が全く受けずに挫折したw
RubyやPython、Luaとかは何とかなっているんだけどな

988:デフォルトの名無しさん
17/05/23 22:05:46.28IEg1DOoE.net
Perlは表記がキモすぎるから無理

989:デフォルトの名無しさん
17/05/23 22:46:29.59/AJUEF8B.net
rubyとかperlとかよくきくし、用途もおおそう(なんとなく)だからそっち検討しようかな

URLリンク(donow.jp)
ここよんだんだけどawkよりはRubyがいろいろできそうなのででRubyやってみるかなぁ
プログラムは趣味だけどはばが広がりそう。

990:デフォルトの名無しさん
17/05/23 22:52:00.94OxXI/az9.net
perlはワンライナーメインの本があれば是非読みたいんだけどな

991:デフォルトの名無しさん
17/05/23 23:29:47.16ZEoEO5ey.net
第1段階は、シェルスクリプト、awk, sed
これらの欠点は、データに型がない。
データを、テキストで受け渡すため、型チェックできないから、バグが多い

第2段階は、PowerShell
型がある。
データをオブジェクトとして扱うから、より安全

第3段階は、Ruby
オブジェクト指向。
なおかつ、chef, vagrant のように、設定ファイルもRubyで書ける。
つまり設定ファイルに、データ + 処理、を書ける。
Androidでのビルド手順を書く、Groovy とほぼ同じ

「たのしいRuby 第5版、2016」が定番の本。
この本を3回読んでから「みんなのPython 第4版、2017」を読むと、
2つの言語を楽に学べる。
これら2冊は、表裏一体だから

992:デフォルトの名無しさん
17/05/23 23:46:38.52uZSBUmLD.net
>>970
そういうのは大抵主観モリモリだが・・・RubyとPerlの学習難易度が同じって流石にそれはなくないか
実は両方とも触ったことがないんじゃないかと疑いたくなるレベル
自分の印象だと習得の難易度はRubyとPythonが同じくらいでPerlは1~2段難しい感じ

Python
・多くの用途で使用されている。組み込み用途でもよく使われる
・プログラマの違いによるコードの差が生じにくい
・ドキュメントの整備にも力を入れている(自分は見やすいと思えない)
Ruby
・コード効率が良い。便利メソッドてんこ盛りの標準組み込みクラスライブラリのおかげで短いコードで書ける
・ドキュメントの整備は結構適当。深く掘り下げたような所は絶望的になくソースとにらめっこ(ただしよく使う所に関しては最低限のドキュメントはある)

あとこれは今風の言語に共通する点だと思うけどオブジェクト指向的な書き方をして本領を�


993:ュ揮できるかと もちろん手続き指向的な書き方でも使えるけど古い言語と比べた時のメリットは減るかも >>972 一番最後。宗教戦争は勃発しないの?w



994:デフォルトの名無しさん
17/05/24 00:06:32.45RPJTgULc.net
漏れが考えた、言語を学ぶ順番

Ruby
Python
(PowerShell)

以後、2タイプに分かれる
JavaScript

(Groovy、Rubyとほぼ同じ)
Java
Kotlin = Scala + Groovy

995:デフォルトの名無しさん
17/05/24 00:09:52.39ik+M68Io.net
オレも考えた、言語を学ぶ順番

BASIC
Visual BASIC
Java Script
Excel VBA
Java
Visual C#

996:デフォルトの名無しさん
17/05/24 00:13:15.66NmLbt9VS.net
私も考えた、言語を学ぶ順番

lisp
Brainfuck
ひまわり

997:デフォルトの名無しさん
17/05/24 00:29:53.66m6dKMNyJ.net
他の言語も使うつもりがあるならRubyは知らない方が良い気がしなくもない
なんで××が出来なんだよ!×沢山状態になるのは必至。と言うか自分がその状態
配列一つとってもメソッドの数が違いすぎるからな

他の言語で書かざるを得ない時は処理の中枢を棚上げしてその辺の穴埋めからになっちゃう

998:デフォルトの名無しさん
17/05/24 00:31:19.833SFEOf1O.net
じゃあ俺は
Haskell
C
Rust

999:デフォルトの名無しさん
17/05/24 00:32:41.8361XHuyoM.net
Cから入るのが間違いない

1000:デフォルトの名無しさん
17/05/24 00:39:45.81STDpCvAk.net
なるほどC, Nim, Limboですね

1001:デフォルトの名無しさん
17/05/24 00:59:32.66sP70AvS3.net
Cから入ってあちこち彷徨った挙句にCに戻ってくるんだろ

1002:デフォルトの名無しさん
17/05/24 01:00:43.93L9mU+g8W.net
Cのコードを生成すればいいという結論に至った人を何人か知っている

1003:デフォルトの名無しさん
17/05/24 01:04:16.20sP70AvS3.net
ぶっちゃけバッチとあとWebならphpでも構わないが

phpはもはやWebに情報が多すぎて本が売れないからなあ(棒)

1004:デフォルトの名無しさん
17/05/24 01:38:06.703SFEOf1O.net
PHPとJavaScriptのオンラインマニュアルの完成度は異常

1005:デフォルトの名無しさん
17/05/24 01:53:24.63/WrwABBj.net
javascriptが良い
ブラウザもバックエンドも使い捨てスクリプトも
Windowsならofficeの自動化も

これひとつで全部いける

1006:デフォルトの名無しさん
17/05/24 02:47:19.78SSLM/4UF.net
>>970
なんでもできるのを求めてるならCがいいよ

1007:デフォルトの名無しさん
17/05/24 07:39:10.59V1DJyb8e.net
>>972
素人プログラマで、最近PowerShellを勉強し始めたけど、第2段階のプログラミング言語とするには
ちょっと難しいところがあると思った。

データをオブジェクトとして扱うのは、柔軟にいろいろできて良いんだけど、
エラーになったり想定外の挙動になった時に、初心者が自己解決できないケースがけっこうありそう。
(というか自分が何度かハマった)
PowerShell初心者向けに、オブジェクトとはなんたるかを一から説明してる資料も少なそうだし、
PythonとかC#のほうがむしろ挙動が分かりやすいと思うので、それらを先にやったほうが楽だと思う。

1008:デフォルトの名無しさん
17/05/24 08:29:16.56RPJTgULc.net
だから、勉強する順番では、
>>974
に書いたように、

Ruby
Python
(PowerShell)

日本には「たのしいRuby 第5版、2016」があるから、外人よりも圧倒的に有利

外人は訳のわからない、MITのPythonの本とかで、スタートするから、さっぱり出来ない

1009:デフォルトの名無しさん
17/05/24 08:31:30.31NmLbt9VS.net
何やるかによるけど、日本人の場合はエクセル+vbaでいいんじゃね?と思う
9割ぐらいはこれを使うことになるだろう

1010:デフォルトの名無しさん
17/05/24 08:46:03.70/WrwABBj.net
ruby推しの狂信者が必死だけど



1011:んなガラパ言語はオヌヌメしない



1012:デフォルトの名無しさん
17/05/24 11:46:21.63NmDuToTQ.net
Rubyの価値はRuby on Rails
これに尽きるといっていい
それ以外はない
だがまつもと氏は尊敬してる

1013:デフォルトの名無しさん
17/05/24 12:16:35.30u63tuZ9/.net
俺はphp java javascript python rustの順
cはなんとなーくわかる

1014:デフォルトの名無しさん
17/05/24 12:40:30.13l3I5XkNn.net
> 9割はエクセル+vba

もっと社会を見たほうが良い
会社じゃなくて社会な

1015:デフォルトの名無しさん
17/05/24 12:41:09.53/WrwABBj.net
松本って、トヨタケーラムからruby盗んだんでしょ
それともちゃんと権利譲渡受けてんの?

1016:デフォルトの名無しさん
17/05/24 13:31:10.10dFpq1SmP.net
>>994
kwsk

1017:デフォルトの名無しさん
17/05/24 13:36:23.38ktSIKEk8.net
>>994
ヒント
トヨタケームラ在籍:1994~1997年
Ruby: 1993年2月24日生まれ

1018:デフォルトの名無しさん
17/05/24 13:37:08.50ktSIKEk8.net
ケーラム

1019:デフォルトの名無しさん
17/05/24 13:42:21.10dFpq1SmP.net
>>996
在籍期間の前なら問題無いのでは?

1020:デフォルトの名無しさん
17/05/24 13:43:55.32a8yGtQef.net
999

1021:デフォルトの名無しさん
17/05/24 13:44:38.42a8yGtQef.net
1000

1022:1001
Over 1000Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 59日 18時間 43分 17秒

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


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

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

▼ プレミアム会員登録はこちら ▼
URLリンク(premium.2ch.net)

▼ 浪人ログインはこちら ▼
URLリンク(login.2ch.net)

1024:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch