シェルスクリプト総合 その28

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/07/24(火) 11:01:16.36ID:r0TJj2hB
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/
2018/09/01(土) 18:38:06.88ID:+0pKcVMh
誰が提唱した理論だろう?
謎理論?
2018/09/01(土) 18:42:01.49ID:mPcVbgud
シェルスクリプトが大規模に向いてないという理由を
誰も答えてくれないので俺が書いてやる

まず前提としてどんな言語であっても、言語だけでは大規模開発を
するのは無理RubyでもC#でもJavaであってもだ。
少し前まではJavaScriptも大規模開発に向かないと
言われていたはずだ。それが解決したのは何故か?

大規模開発をするのに必要なのは言語じゃない。フレームワークとライブラリだ。
どんな言語でも大規模開発するためにフレームワークとライブラリを使うだろう?
逆にこれらを使わないで大規模開発なんて到底無理だろ?

JavaScriptが大規模開発できるようになったのも、
フレームワークとライブラリが補完されたからだよ。
シェルスクリプトも昔のJavaScriptと同じ状況。

といっても俺はシェルスクリプトで大規模開発をすることには興味がなく、
せいぜい数千行程度の中規模ぐらいまでしかやることはないだろう。
何故かと言うと単にシェルスクリプトに適した内容で
10万行を超えるようなものが思いつかないからだ

だがそれはシェルスクリプトで大規模開発ができないということにはならない。
実際USPとかいうので、無印良品や東急ハンズのシステムが作られている(いた?)だろ
http://www.atmarkit.co.jp/news/200909/07/lltv03.html
https://www.hands-lab.com/tech/entry/62.html
(適してないとは思うが)足りない部分を補えば大規模開発だってできることは証明済みだよ

まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
フレームワークやライブラリが不足しているから。
俺がシェルスクリプトで大規模開発をやらないのは、
シェルスクリプトが適した内容で大規模なものを思いつかないから。
それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
2018/09/01(土) 18:46:31.18ID:IN1XIdeB
休日は議論が捗りますね
573デフォルトの名無しさん
垢版 |
2018/09/01(土) 18:46:41.92ID:/wwW4VSs
コマンドラインインタープリタを自動化したもんを
シェルスクリプトとというの

頭悪いバカのみんな分かった?

頭悪いバカは用途がわかってない、、、
574デフォルトの名無しさん
垢版 |
2018/09/01(土) 18:49:33.52ID:/wwW4VSs
たとえばなこのスレにいるような
コマンド叩ける程度の知能しかないオペレーターみたいなヤツが
シェルスクリプトだったらいっぱい自動でコマンド叩けると
必死に主張してるワケ
2018/09/01(土) 18:55:47.33ID:mPcVbgud
お、今気づいたが、git subtreeってそのオプションの多さに比べて、
コードが少し少ないんじゃないか?と思ったら、

https://github.com/git/git/blob/master/contrib/subtree/git-subtree.sh#L11-L33

OPTS_SPECを定義して、git rev-parse --parseopt つかって
何やらオプションを正規化してるんだな
gitにこんな機能があったとは

とは言え、劇的にコードが減ってるわけじゃないから
これなら http://docopt.org/ の方が優れてるな
2018/09/01(土) 18:59:35.38ID:mPcVbgud
>>574
「コマンドをいっぱい叩ける」というのは量の話。
「適した用途」というのは量(大規模か否か)ではなくて
>>537-538に書いたような、処理の内容の話

いい加減、量にこだわるの止めません?w
577デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:05:44.41ID:/wwW4VSs
シェルスクリプトでじかに文字列の処理なんかしないからな
sedやawkを使っても
頭が致命的に悪いとコレもシェルスクリプトで書いてやりたいとなるわけか

なるほどな
2018/09/01(土) 19:08:19.43ID:jmAsDv6y
なんの話してたんだっけ?
2018/09/01(土) 19:09:38.27ID:mPcVbgud
サマータイムスレにもいた半角使いのキチガイ野郎かな?
みんな、こいつの味方するの?w
2018/09/01(土) 19:10:41.10ID:mPcVbgud
>>578
オプション(引数)解析の話を
ずーっと続けてますよw
2018/09/01(土) 19:17:26.68ID:HKyHRnHf
>>568
その理論について詳しく教えてくれw
2018/09/01(土) 19:20:00.37ID:mPcVbgud
>>581
>>553
2018/09/01(土) 19:22:31.10ID:4jvmXnIZ
ム版来たせいで、ム版名物の半角君も長文君も呼び寄せちゃったか…
2018/09/01(土) 19:25:33.74ID:HKyHRnHf
>>568
理論って何?www
理論って言葉使いたくなっちゃったのかな?www
2018/09/01(土) 19:27:13.01ID:mPcVbgud
>>583
その「長文君」がム板に来る流れを作った張本人という可能性は考えないのかい?w
2018/09/01(土) 19:54:56.43ID:HKyHRnHf
>>568
理論ってどんな理論なんだろう?www
プークスクスwww
2018/09/01(土) 19:55:19.76ID:4jvmXnIZ
嫌われ者の長文君ち〜ッス
2018/09/01(土) 21:04:14.49ID:2NCbxz5b
>>583,587
その二人ともなぜか 俺だけ 優秀と思っている不思議さwだから嫌われ者同士でも互いに嫌ってるのかww
589デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:34:21.93ID:/wwW4VSs
オレが優秀なワケじゃない
オマエが健常者じゃないだけだからな

まずそこを自覚しないといけない

そこを勘違いしたらダメなワケ
オツムに軽度の障害があるとみなせるぐらい知能に問題がある
2018/09/01(土) 22:59:24.12ID:2NCbxz5b
別にそういう個別特定なのはいいのねん
お前には俺(のレス)がそう見えるというのはお前の価値観からそう見えるのはしょうがない
だがしかし、お前の場合はレス個別に対してじゃないのもあるからな。不特定多数のも。自称健常者は敵が多いからなのか??w
2018/09/01(土) 23:12:57.65ID:2NCbxz5b
wwww いや、笑った。すげえなww
低学歴 知恵遅れ 健常者じゃない と、どこのスレでもどのレスでもそういう言葉があるな。すごいなww
ちょっと頭のおかしな人が道中をぶつくさ他人に悪態ついてるのと似てると思うけどなあ。「健常者」なんて普通使わないと思うけど、もしかしたらマジ病気のひと?ww
普通に会話、普通のレスできないの?あったとしたらすまん、あまりにもあういうのばかりで見逃したかもw
592デフォルトの名無しさん
垢版 |
2018/09/01(土) 23:17:02.98ID:/wwW4VSs
オレと会話したいの?

残念なことにな、知恵遅れとまともな人間のあいだでは
会話が成立しない

プロトコルが違う

オレと会話したいなら
まず相応のプロトコルを身につけてからだ
2018/09/01(土) 23:17:24.80ID:mPcVbgud
他スレで長文書いてたw まあ話は進んでないみたいだが
https://medaka.5ch.net/test/read.cgi/php/1474523013/854
https://mevius.5ch.net/test/read.cgi/hp/1533007852/229

今更だがsedって意外と便利に使えるのな。正規表現による範囲指定とか
s///使った単なる置換ぐらいにしか使ってなかった。
書いていたコードが短くなりそうで嬉しいw
2018/09/01(土) 23:18:54.31ID:J8s4Euww
長文はキチガイ
2018/09/01(土) 23:41:04.17ID:Z9gelboG
yesコマンドってPOSIXユーティリティじゃないのか……。
2018/09/01(土) 23:46:09.11ID:2NCbxz5b
>>592
会話のためじゃなかった、なんの為に数々のレスしているの?君は
まあ、自己顕示欲承認欲求からだけだろうなというのは、数々のレスからは垣間見えるけど、そういうことなのね、そういうことでいいのねw
597デフォルトの名無しさん
垢版 |
2018/09/02(日) 00:04:43.96ID:Tb3tt8fk
この板をまともな板にするために
この板でレスしてる

オマエみたいな頭悪い低学歴知恵遅れが幅きかせて
いま、この板は正常に機能してない

低学歴知恵遅れは低学歴知恵遅れの自覚がない
しかも自己評価だけは高い
その分タチがワルイ
まともな人間が近寄らない

そしてその自覚すらない
その自覚がないから更生もしない
つまり更生することもないから排除しかない

つまりオレは
素晴らしく情報価値が高いレスを提供すると同時に
この板から低学歴知恵遅れのクソニート、底辺ITドカタを排除する作業を実施している

わかった?

まともな板にするためにな
ひたすらオレはレスをしている

わかった?
2018/09/02(日) 00:12:57.53ID:elP7igYW
やっぱり移動先はLinux板にしといたほうが
良かったんじゃねーの?w
2018/09/02(日) 00:14:17.23ID:fQwovzZh
>>597
>この板をまともな板にするために
wwwww マジでっ!?
その言っているのは、いろいろ自分にも当てはまるだろうと思うんだけどな

自己顕示欲承認欲求と見なされるのは嫌らしいというのだけはわかったよw
600デフォルトの名無しさん
垢版 |
2018/09/02(日) 00:15:05.38ID:Tb3tt8fk
当然、オマエも排除の対象だ
2018/09/02(日) 00:16:13.74ID:fQwovzZh
「排除」www すげええええっwwww
いや、怖い...w
2018/09/02(日) 00:16:18.96ID:CFWyulsd
>>595
これは yes って返せばいいのか!?
603デフォルトの名無しさん
垢版 |
2018/09/02(日) 00:17:25.68ID:Oiltae2A
俺の目の黒いうちはまともにはさせんから安心しろ
2018/09/02(日) 00:17:46.37ID:8TU9g+nX
お前も駆逐してやる
2018/09/02(日) 00:24:56.83ID:elP7igYW
>>602
yじゃね?
2018/09/02(日) 00:27:05.66ID:elP7igYW
どうでもいいけど、
yesコマンドって

1. なんに使うんだ?
2. なるほど(使いみちを聞いて)
3. いつ使うんだ?(使ったことがない) ← みんなこの状態だよな?w
2018/09/02(日) 00:28:33.57ID:fQwovzZh
>>606
まったくもって、まんまだなw
2018/09/02(日) 00:40:01.27ID:elP7igYW
だいたい、-yオプションとか、-fオプションとか、-qオプションがあるからねぇ

おっとまたオプションの話だw

オプションついでにいうとtarとかpsってなんでハイフンなしで
tar czvf とか ps aux とか書くんだろう?
ちょっと調べたら昔の仕様?らしいけど

今はtar -czvf とか ps -aux とかできるみたいだけどさ。
まあ今はハイフンなしオプションのことを考慮する必要は無いだろうけど
それに対応したライブラリ(getoptsみたいなの)ってあるんだろうか?
609デフォルトの名無しさん
垢版 |
2018/09/02(日) 02:09:13.86ID:4Jf6YH6e
>>608
ないのでは? tar の場合はハイフンなしの Old style のオプション指定されていたら
まずはハイフン付きに置き換えてから解釈しているらしい。
https://qiita.com/junjis0203/items/6bb48184b508045e69da
610デフォルトの名無しさん
垢版 |
2018/09/02(日) 06:17:08.93ID:667Fbrpy
>>609
すごいな。一発で持ってくるとは
でもID:elP7igYWみたいな馬鹿を相手にするなんてもったいない……。
2018/09/02(日) 09:16:59.93ID:elP7igYW
>>609
なるほど。

初期(いつ?)の頃ってコマンドの開発どうだったんだろうね
ハイフンなしのオプションはしばしば用いられていたのか?

どんなコマンドも最初の実装ってのは存在するわけで、
それが今とどう同じなのか違うのか少し気になってきた
2018/09/03(月) 09:07:41.26ID:Phd/3F0T
俺、数百行クラスになったら静的言語にするから、
シェルスクリプトどころかrubyもpythonも使わない。
数百行にもなると書き捨てって規模じゃないし、
静的型検査なしで書くのは面倒くさい。

あとJavaScriptには現代的言語の持つ抽象化機能があらかたあるから、
連想配列も構造体相当品もないシェルスクリプトと同列に並べるのはJavaScriptに失礼。
2018/09/03(月) 09:13:23.99ID:Wp4QdYvu
シェルスクリプトでcのソースを書くのはちょっと面白い。
2018/09/03(月) 09:52:05.06ID:WkDP4f9E
>>613
どういう意味?
メタプログラミングみたいな?
2018/09/03(月) 10:26:05.35ID:cQ/Qcp18
>>612
大変やね。たまには数十クラス程度のものを作っても良いんやで
2018/09/03(月) 11:13:52.71ID:Phd/3F0T
>>615
そういう小規模なプログラムばかり書いてたらもっと動的言語を
使ってたかもしれないなあ。
就職して最初のプロジェクトがいきなり100万行オーバーのCプログラムの
大規模改造とかで、それ以後も数十万行クラスのプログラムばかり
触ってきて、ちょっと規模が大きくなると処理系の検査に頼る
習慣がついてしまった。
2018/09/03(月) 11:21:30.86ID:IWP2OX+N
>>616
うん、仕事でしかプログラミングしてないんだろうな
ってのはすぐにわかったよ。

1から作ったことがあれば、いきなり数百クラスに
なることなんて無いからね

保守的な開発しかしたこと無くて、
小さなシステムの組み合わせで大きなものを作るという発想がない
古臭いものメンテナンスしかしたことないんだろうなと
2018/09/03(月) 13:56:12.52ID:Phd/3F0T
>>617
あれだけの情報で趣味プログラム書いてないってわかるなんてスゴイ⤴⤴
その推理フツーに間違ってるがw

そもそも小さなプログラムだって普通に書いてるし、だからこそシェルスクリプトスレに来てるわけで、
大きなプログラムしか書いてないとするとその時点で矛盾するじゃん。

自己矛盾した推理を前提に話を進めるとか、同僚にいたら困りそうなタイプだなあ。
2018/09/03(月) 14:47:29.83ID:IWP2OX+N
>>618
いや、そもそもお前の発言が矛盾してるんだって。

↓これお前の発言な
> 俺、数百行クラスになったら静的言語にするから、
> シェルスクリプトどころかrubyもpythonも使わない。

数百行クラスになったら静的言語ってことは
数百行クラスになる前はどうしてるんだって話だよ
2018/09/03(月) 19:06:52.08ID:HxI+JP9z
>>619
> 数百行クラスになったら静的言語ってことは
> 数百行クラスになる前はどうしてるんだって話だよ

え、そこに矛盾はまったくないんだけど、マジでホントに分からないの?
明日の19時くらいまで待ってあげるから自分で考えてみた方がいいぜ。

降参すればもっと早く答を教えてあげるけど、こんな当たり前の話、ホントに分からないとするとそれはそれでまずい気がする。
2018/09/03(月) 19:27:06.50ID:HpF+lD7Q
おまいら、自分の書き込みが変に解釈された事の方を問題視しろよ。
相手が客だった場合、どんなに釈明しようが上司はお前が悪いとしか言わんぞ。
2018/09/03(月) 19:33:15.32ID:HxI+JP9z
>>621
え、もしかして君も分からんの?
客ならともかく、プログラマーならこんなの分かって当然だと思ってたけど、そうでもないんかな。

まあ明日の19時過ぎたら答は書くよ。
2018/09/03(月) 20:06:42.29ID:IWP2OX+N
上の方でもプログラマを自称しながら、アマチュアっぽいやつがいたからなぁw
まあ、明日なにか言おうとしてるみたいだから、何も言えなくなるように
大規模アプリを作るときの鉄則を言っておくよ。

まず大規模アプリを作るときに重要なのは細かくモジュールに分けましょうということ
モジュールという言葉の意味は文脈で微妙に異なるけど、きっちり定義したいわけじゃなく
小さなプログラム、小さなファイル、小さなクラス、小さな関数等に分けましょうという話

これをやっておかないと、例えばC言語のHello Worldであっても、
printfの複雑な実装を、一つのファイルに全部書かないといけなくなくなって
数百行なんてあっという間に超えてしまう

>>612は数百行程度で静的言語にするとか言ってるが、
俺に言わせれば、大規模アプリであっても"1モジュール(最小単位の関数)"で
数百行なんてめったになることなんてないだろうと。

まあ、どうせ >>612はプロジェクト全体で数百行と言ったつもりなんだろうが、
お前は単体テストできるようにしてないのかと。それぞれ独立して考えられるように設計しろよ。

小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
Hello Worldでもプロジェクト全体という話ならprintfの実装も含めなきゃいけない。
でもブラックボックスとして扱ってるんだろ? それと同じで自分で作る場合もブラックボックス化させればいいんだよ
つまり小さなモジュールに分けて作れば、静的言語でなくとも大規模アプリは十分作れるわけだ。
もちろんシェルスクリプトであってもね

もし「シェルスクリプトは上から下へ流れるように作るのが普通なんだ。
関数なんて作ってはいけない、複数のファイルに分けたりしてはいけない、複数のスクリプトに分けるのも禁止
だから大きなものは作れないんだ!それが世界の常識なんだ!!」という理屈であれば、
それは頭が固いお前の思い込みが、大きな物を作れない根本原因だろ。ってこと

結局プログラマを自称しているようだが、小さく分けるという設計ができない
アマチュアレベルの人間なんだろうって話だ
624デフォルトの名無しさん
垢版 |
2018/09/03(月) 20:11:02.86ID:lS5Tq6xt
渾身の長文わろたw
2018/09/03(月) 20:13:45.46ID:IWP2OX+N
まあいつものことだなw
626612
垢版 |
2018/09/03(月) 20:30:39.38ID:HxI+JP9z
やっぱり例の人だったかw
しかも長文の割に
(a) >>612が別に矛盾したこと言ってないと分かった
のか、それとも
(b) 相変わらず>>612が矛盾してると思ってる
のかを書いてないように俺には思えるというwww

>>623 よ、お馬鹿な俺に、君の意見が(a)なのか(b)なのか教えてくれ。
2018/09/03(月) 20:40:49.84ID:IWP2OX+N
>>626
いや、別にお前にレスしてないしw
大規模アプリを作るときの鉄則を言っただけだし

明日の19時過ぎたら、なんか答え書くんだろ?
それを書いてくれればいいよ。
俺の文章読んで恥ずかしくないならね


まあ一つ言うとしたら、技術力の差ってやっぱりあるよな
他の人が動的言語できているという事実があるというのに
俺はできないんだ!ってよく恥ずかしげもなく言えるよなーと
628デフォルトの名無しさん
垢版 |
2018/09/03(月) 20:43:08.65ID:lS5Tq6xt
大規模アプリを作るときの鉄則www
なんやろ?www
2018/09/03(月) 20:43:49.57ID:IWP2OX+N
そうだ、ヒントをやろうw

俺、(1関数で)数百行クラスになったら設計が悪い思って作り直すから、
数百行クラスになることはない
2018/09/03(月) 20:45:19.54ID:RephN+2M
なんか一つ一つが長文でここ最近ずっとだらっと最下部までスクロールして閉じるを繰り返してるわ
631612
垢版 |
2018/09/03(月) 21:00:52.21ID:HxI+JP9z
これはアレですね。
(a)と答えると自分の間違いを認めることになって耐えられないし、
(b)と答えると明日の19時以降に赤っ恥を書くことになるしで、
(a)とも(b)とも答えられないってヤツですねw

分かりやすい。
自分の間違いを認めると死んぢゃう病に罹患中って奴だw
632デフォルトの名無しさん
垢版 |
2018/09/03(月) 21:09:15.31ID:E2St7m4+
個々の簡単な完結した機能の簡単なシェルにしといたほうが
単体試験仕様書の設計も簡単
結合試験仕様書の設計も簡単
総合試験仕様書の設計も簡単

知恵遅れが作ると試験による検証すらできないシステムができあがる
2018/09/03(月) 21:12:48.08ID:IWP2OX+N
>>631
ん? 俺は間違ってないんだから、必然的に(b)ということになるな。
はい、明日の19時待ってますよw
2018/09/03(月) 21:13:14.86ID:IWP2OX+N
>>632

>>2を読め
>・シェルスクリプトのことをシェルってゆうな
2018/09/03(月) 21:14:05.20ID:ttVcJTrG
TypeScript・Haxe の違い

大規模開発なら圧倒的に、Haxe
636デフォルトの名無しさん
垢版 |
2018/09/03(月) 21:17:55.11ID:lS5Tq6xt
>>634
おまえ大規模アプリを作っとるんやろ?そうゆう初心者くさい事ゆうなよwwww
ちょっとだけ失望したわw
2018/09/03(月) 21:27:46.12ID:zLYH5Np3
すげーなこのスレ。
とうとうrubyガイジも呼び寄せたぞ。
オールスターじゃん
2018/09/03(月) 21:28:01.12ID:IWP2OX+N
作業していて気づいたんだが >>537-538
どういう場合にシェルスクリプトが適しているかの話

少し毛色が違うが、コールバックの仕組みを取り入れるなら
必然的にシェルスクリプトで書かなければいけなくなるな

つまり
1. 簡単なことをやるためにシェルスクリプトを使う
2. だけど中身で一部複雑な処理があるので、そこだけ別コマンドを使う
3. その別コマンドから、シェルスクリプトに定義したコールバック関数を呼び出す

というようなことをやろうと思ったが、2の「別コマンド」がシェルスクリプト以外(正確には別プロセス)だと
シェルスクリプトに定義したコールバック関数を呼び出せない

つまりPerlで書くならば以下のような感じで、正規表現置換をsedコマンドで
実行してしまったら、(スクリプトの内部関数である)foo関数を呼び出すことができない

sub foo { uc($_[0]) }
$text = 'abcdefg';
$text =~ s/([a-c])/foo($1)/eg;
print $text;
2018/09/03(月) 21:28:41.85ID:RephN+2M
さすがの総合スレ
2018/09/03(月) 21:33:19.27ID:IWP2OX+N
どうでもいいが(俺にとってはどうでも良くないが)
sedとawkとgrepとexprで使える正規表現のパターンが違うのって地味に嫌だなw
もし1から仕様を決められるなら、全部統一されるんだろうな。
HTML5みたいに一度足並み揃えた仕様にリセットされてほしい
2018/09/03(月) 21:51:24.51ID:IWP2OX+N
sedの非互換性も辛い・・・というかGNUが便利すぎなんだろうな
2018/09/03(月) 22:05:03.93ID:5Vmu1cpr
>>641
最近知ったのだが、GNU awk に ARGIND という組み込み変数が
あってエラい助かった
643デフォルトの名無しさん
垢版 |
2018/09/03(月) 23:01:37.14ID:E2St7m4+
もうコタエは書いたからな
次の患者さんどうぞ
2018/09/03(月) 23:24:25.75ID:O250GQ8L
誰がどう見ても患者はお前だろ。精神の
2018/09/03(月) 23:39:11.39ID:YrDXnGw5
>>643も精神のという意味だろう。この読めなさはw
646デフォルトの名無しさん
垢版 |
2018/09/03(月) 23:57:12.64ID:E2St7m4+
キミラは重篤な患者さんだからな
しょうがない
2018/09/03(月) 23:59:36.46ID:IWP2OX+N
sedで「command i expects \ followed by text」というエラーが出たが
なんか-iの話ばっかり見つかって、期待する答えがなかなか見つからないwww

GNUだと
echo text | sed 'i===' って書くだけで簡単に
===
text
と表示されるんだが、

BSDだと上記エラーがでて、しばらくどうすりゃいいの?状態だったw
持ってた sed & awk ポケットリファレンス 眺めても書いてあることがさっぱりでさ

正しく(POSIX)ではこう書かないといけないんだな。改行がいるとかw
echo text | sed 'i\
===
'

これを1行で書くために、改行を変数に入れるべくこんな変なことをしないといけなかったりw
LF=$(printf '\012_')

LF=${LF%_}


sedって置換機能以外の、本来stream editorとしてバリバリ使いこなそうと思ったら難しいな
ホールドスペース使いこなせる気がしない。何ができるのかも想像できないしw
648デフォルトの名無しさん
垢版 |
2018/09/04(火) 00:05:33.37ID:gZnu4stV
ココは隔離病棟の集中治療室
2018/09/04(火) 01:03:24.22ID:zS1fHlcp
自覚はあるんだな
2018/09/04(火) 06:08:51.64ID:fH4o5qCk
ホールドスペースをバリバリ使ってた。使いこなしてたかはともかく…
20 年以上も前のことだから、もうできない。
2018/09/04(火) 08:53:12.61ID:jvRjWg/I
ホールドスペースやブランチを使いたくなったらsedやめて他の言語使えって、Macで女子高生が話してた。
2018/09/04(火) 08:53:37.92ID:ROt4XEkp
sedがなんで分かりづらいかの理由がわかった
b(とt)の解説が悪いんだよ。

たいてい、b・・・無条件ジャンプのように書いてあるから
これだけでどうやってフロー制御すりゃいいんだよ?ってなる

正確にはこれ、条件分岐なんだな。ニュアンス的にはこんな感じ
/条件/b :label

bの前はアドレスってことだが、正規表現でもアドレス指定できるから
これを条件とすれば、条件分岐となる。

だけどアドレス(条件)はすべてのコマンドで使えるものだからなのか
そのコマンドの説明のところで省いてしまうから、解説だけを読んでも
ジャンプはあるが条件付きジャンプがねーじゃねーかってなるわけだ

条件文があるならあとは簡単だ。普通の手続き型のコードだわ
2018/09/04(火) 09:49:28.21ID:+CEwKGA5
"Commands which accept address ranges" って書いてあるやん…
2018/09/04(火) 10:20:13.70ID:ROt4XEkp
>>653
アドレスの範囲を受け付けますって遠く離れた所に書いても
それが条件として使えるとは気づきにくいって話
2018/09/04(火) 11:30:26.75ID:+CEwKGA5
>>654
数行上に書いてあるで
2018/09/04(火) 12:17:38.09ID:ROt4XEkp
>>655
何度も同じことを言わせないでくれ
2018/09/04(火) 13:15:59.22ID:+CEwKGA5
実際には3行上だった
2018/09/04(火) 18:17:39.81ID:i2l0SoWn
>>652
そこは、素人お断りですw よく読みましょう。
This is just a brief synopsis of sed commands to serve as a reminder to those who already know sed
659612
垢版 |
2018/09/04(火) 19:19:21.04ID:GKTPwsNb
19時過ぎたから答を書く。

言っておくがチョー当たり前のつまらん話だよ。

・短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
・拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。あまり長くなると書き直しも面倒になるから、早めに手を打つ。
・長くなりそうだと初めから分かっている場合は、もちろん最初から静的型付き言語で書く

ってだけだよ。

静的型付き言語使いにはわりとよくある開発形態のはずだが、なんで>>612が矛盾してるなんて結論に至るのか。
2018/09/04(火) 19:33:33.93ID:FEVdkErP
とりあえずここまでレス飛ばしてきたんでまとめを頼む
661612
垢版 |
2018/09/04(火) 19:43:12.33ID:GKTPwsNb
>>660
俺が>>612
「数百行くらいのプログラムになると、俺の場合は静的型検査がないと面倒くさいので、静的型付き言語で書く」
と書いたら、いつもの人が例のごとく謎の難癖をつけてきたってだけの話。

別に「全員がそうすべき」って書いたわけじゃなくて
あくまで「俺にとっては面倒くさい」って書いただけなのに、どうも許せないみたいだな。
難癖は全然反論になってないので読む必要はない。
2018/09/04(火) 19:43:56.78ID:FEVdkErP
把握
663612
垢版 |
2018/09/04(火) 19:53:45.96ID:GKTPwsNb
あ、>>612の「数百行クラス」ってのを
「(オブジェクト指向言語の)1つのクラスのコードサイズが数百行」と誤解されたようではあるな。
これは俺の表現も誤解を招くものではあった。
単に「1プログラムのコードサイズが数百行くらい」って意味で書いてたんだけどね。

まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
2018/09/04(火) 21:01:45.22ID:wTvbP50/
>>612
興味本位で聞くんだが、数百行って具体的にはどの範囲をイメージしてる?〜500程度?
あと静的型付けって何使ってる?
665612
垢版 |
2018/09/04(火) 21:24:00.90ID:GKTPwsNb
>>664
500行を越えるぐらいからかな。
常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
これは規模的に結構辛い。orz

言語は最近はCrystalを試してる。
まだ書き慣れたって段階には達してないけど。
2018/09/04(火) 21:57:53.47ID:wTvbP50/
>>665
俺は数百行って聞くと2、300をイメージするから、どのぐらいか気になった
crystalとは・・・俺は1.0も出てないものは使えんなあ

うちは処理結果が揮発で良いなら基本bash/pythonを使ってる
2018/09/04(火) 22:13:29.28ID:ROt4XEkp
>>659
やっぱり矛盾してるじゃんw

1. 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
2. 短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
3. 拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。

では、長くならない場合は?
シェルスクリプトやrubyもpythonを使うんだろw
2018/09/04(火) 22:15:09.44ID:ROt4XEkp
>>665
> 常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。

小さく分けようぜw
ファイルを分けたり、関数にすりゃ、
たった3000行なんて十分メンテ可能だろ
2018/09/04(火) 22:15:31.25ID:dB7ca3M3
やはりワッチョイいるな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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