シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ: シェルスクリプト総合 その27(https://mevius.5ch.net/test/read.cgi/unix/1525337663/)
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/07/24(火) 11:01:16.36ID:r0TJj2hB623デフォルトの名無しさん
2018/09/03(月) 20:06:42.29ID:IWP2OX+N 上の方でもプログラマを自称しながら、アマチュアっぽいやつがいたからなぁw
まあ、明日なにか言おうとしてるみたいだから、何も言えなくなるように
大規模アプリを作るときの鉄則を言っておくよ。
まず大規模アプリを作るときに重要なのは細かくモジュールに分けましょうということ
モジュールという言葉の意味は文脈で微妙に異なるけど、きっちり定義したいわけじゃなく
小さなプログラム、小さなファイル、小さなクラス、小さな関数等に分けましょうという話
これをやっておかないと、例えばC言語のHello Worldであっても、
printfの複雑な実装を、一つのファイルに全部書かないといけなくなくなって
数百行なんてあっという間に超えてしまう
>>612は数百行程度で静的言語にするとか言ってるが、
俺に言わせれば、大規模アプリであっても"1モジュール(最小単位の関数)"で
数百行なんてめったになることなんてないだろうと。
まあ、どうせ >>612はプロジェクト全体で数百行と言ったつもりなんだろうが、
お前は単体テストできるようにしてないのかと。それぞれ独立して考えられるように設計しろよ。
小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
Hello Worldでもプロジェクト全体という話ならprintfの実装も含めなきゃいけない。
でもブラックボックスとして扱ってるんだろ? それと同じで自分で作る場合もブラックボックス化させればいいんだよ
つまり小さなモジュールに分けて作れば、静的言語でなくとも大規模アプリは十分作れるわけだ。
もちろんシェルスクリプトであってもね
もし「シェルスクリプトは上から下へ流れるように作るのが普通なんだ。
関数なんて作ってはいけない、複数のファイルに分けたりしてはいけない、複数のスクリプトに分けるのも禁止
だから大きなものは作れないんだ!それが世界の常識なんだ!!」という理屈であれば、
それは頭が固いお前の思い込みが、大きな物を作れない根本原因だろ。ってこと
結局プログラマを自称しているようだが、小さく分けるという設計ができない
アマチュアレベルの人間なんだろうって話だ
まあ、明日なにか言おうとしてるみたいだから、何も言えなくなるように
大規模アプリを作るときの鉄則を言っておくよ。
まず大規模アプリを作るときに重要なのは細かくモジュールに分けましょうということ
モジュールという言葉の意味は文脈で微妙に異なるけど、きっちり定義したいわけじゃなく
小さなプログラム、小さなファイル、小さなクラス、小さな関数等に分けましょうという話
これをやっておかないと、例えばC言語のHello Worldであっても、
printfの複雑な実装を、一つのファイルに全部書かないといけなくなくなって
数百行なんてあっという間に超えてしまう
>>612は数百行程度で静的言語にするとか言ってるが、
俺に言わせれば、大規模アプリであっても"1モジュール(最小単位の関数)"で
数百行なんてめったになることなんてないだろうと。
まあ、どうせ >>612はプロジェクト全体で数百行と言ったつもりなんだろうが、
お前は単体テストできるようにしてないのかと。それぞれ独立して考えられるように設計しろよ。
小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
Hello Worldでもプロジェクト全体という話ならprintfの実装も含めなきゃいけない。
でもブラックボックスとして扱ってるんだろ? それと同じで自分で作る場合もブラックボックス化させればいいんだよ
つまり小さなモジュールに分けて作れば、静的言語でなくとも大規模アプリは十分作れるわけだ。
もちろんシェルスクリプトであってもね
もし「シェルスクリプトは上から下へ流れるように作るのが普通なんだ。
関数なんて作ってはいけない、複数のファイルに分けたりしてはいけない、複数のスクリプトに分けるのも禁止
だから大きなものは作れないんだ!それが世界の常識なんだ!!」という理屈であれば、
それは頭が固いお前の思い込みが、大きな物を作れない根本原因だろ。ってこと
結局プログラマを自称しているようだが、小さく分けるという設計ができない
アマチュアレベルの人間なんだろうって話だ
624デフォルトの名無しさん
2018/09/03(月) 20:11:02.86ID:lS5Tq6xt 渾身の長文わろたw
625デフォルトの名無しさん
2018/09/03(月) 20:13:45.46ID:IWP2OX+N まあいつものことだなw
626612
2018/09/03(月) 20:30:39.38ID:HxI+JP9z627デフォルトの名無しさん
2018/09/03(月) 20:40:49.84ID:IWP2OX+N >>626
いや、別にお前にレスしてないしw
大規模アプリを作るときの鉄則を言っただけだし
明日の19時過ぎたら、なんか答え書くんだろ?
それを書いてくれればいいよ。
俺の文章読んで恥ずかしくないならね
まあ一つ言うとしたら、技術力の差ってやっぱりあるよな
他の人が動的言語できているという事実があるというのに
俺はできないんだ!ってよく恥ずかしげもなく言えるよなーと
いや、別にお前にレスしてないしw
大規模アプリを作るときの鉄則を言っただけだし
明日の19時過ぎたら、なんか答え書くんだろ?
それを書いてくれればいいよ。
俺の文章読んで恥ずかしくないならね
まあ一つ言うとしたら、技術力の差ってやっぱりあるよな
他の人が動的言語できているという事実があるというのに
俺はできないんだ!ってよく恥ずかしげもなく言えるよなーと
628デフォルトの名無しさん
2018/09/03(月) 20:43:08.65ID:lS5Tq6xt 大規模アプリを作るときの鉄則www
なんやろ?www
なんやろ?www
629デフォルトの名無しさん
2018/09/03(月) 20:43:49.57ID:IWP2OX+N そうだ、ヒントをやろうw
俺、(1関数で)数百行クラスになったら設計が悪い思って作り直すから、
数百行クラスになることはない
俺、(1関数で)数百行クラスになったら設計が悪い思って作り直すから、
数百行クラスになることはない
630デフォルトの名無しさん
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
(a)と答えると自分の間違いを認めることになって耐えられないし、
(b)と答えると明日の19時以降に赤っ恥を書くことになるしで、
(a)とも(b)とも答えられないってヤツですねw
分かりやすい。
自分の間違いを認めると死んぢゃう病に罹患中って奴だw
632デフォルトの名無しさん
2018/09/03(月) 21:09:15.31ID:E2St7m4+ 個々の簡単な完結した機能の簡単なシェルにしといたほうが
単体試験仕様書の設計も簡単
結合試験仕様書の設計も簡単
総合試験仕様書の設計も簡単
知恵遅れが作ると試験による検証すらできないシステムができあがる
単体試験仕様書の設計も簡単
結合試験仕様書の設計も簡単
総合試験仕様書の設計も簡単
知恵遅れが作ると試験による検証すらできないシステムができあがる
633デフォルトの名無しさん
2018/09/03(月) 21:12:48.08ID:IWP2OX+N634デフォルトの名無しさん
2018/09/03(月) 21:13:14.86ID:IWP2OX+N635デフォルトの名無しさん
2018/09/03(月) 21:14:05.20ID:ttVcJTrG TypeScript・Haxe の違い
大規模開発なら圧倒的に、Haxe
大規模開発なら圧倒的に、Haxe
636デフォルトの名無しさん
2018/09/03(月) 21:17:55.11ID:lS5Tq6xt637デフォルトの名無しさん
2018/09/03(月) 21:27:46.12ID:zLYH5Np3 すげーなこのスレ。
とうとうrubyガイジも呼び寄せたぞ。
オールスターじゃん
とうとうrubyガイジも呼び寄せたぞ。
オールスターじゃん
638デフォルトの名無しさん
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;
どういう場合にシェルスクリプトが適しているかの話
少し毛色が違うが、コールバックの仕組みを取り入れるなら
必然的にシェルスクリプトで書かなければいけなくなるな
つまり
1. 簡単なことをやるためにシェルスクリプトを使う
2. だけど中身で一部複雑な処理があるので、そこだけ別コマンドを使う
3. その別コマンドから、シェルスクリプトに定義したコールバック関数を呼び出す
というようなことをやろうと思ったが、2の「別コマンド」がシェルスクリプト以外(正確には別プロセス)だと
シェルスクリプトに定義したコールバック関数を呼び出せない
つまりPerlで書くならば以下のような感じで、正規表現置換をsedコマンドで
実行してしまったら、(スクリプトの内部関数である)foo関数を呼び出すことができない
sub foo { uc($_[0]) }
$text = 'abcdefg';
$text =~ s/([a-c])/foo($1)/eg;
print $text;
639デフォルトの名無しさん
2018/09/03(月) 21:28:41.85ID:RephN+2M さすがの総合スレ
640デフォルトの名無しさん
2018/09/03(月) 21:33:19.27ID:IWP2OX+N どうでもいいが(俺にとってはどうでも良くないが)
sedとawkとgrepとexprで使える正規表現のパターンが違うのって地味に嫌だなw
もし1から仕様を決められるなら、全部統一されるんだろうな。
HTML5みたいに一度足並み揃えた仕様にリセットされてほしい
sedとawkとgrepとexprで使える正規表現のパターンが違うのって地味に嫌だなw
もし1から仕様を決められるなら、全部統一されるんだろうな。
HTML5みたいに一度足並み揃えた仕様にリセットされてほしい
641デフォルトの名無しさん
2018/09/03(月) 21:51:24.51ID:IWP2OX+N sedの非互換性も辛い・・・というかGNUが便利すぎなんだろうな
642デフォルトの名無しさん
2018/09/03(月) 22:05:03.93ID:5Vmu1cpr643デフォルトの名無しさん
2018/09/03(月) 23:01:37.14ID:E2St7m4+ もうコタエは書いたからな
次の患者さんどうぞ
次の患者さんどうぞ
644デフォルトの名無しさん
2018/09/03(月) 23:24:25.75ID:O250GQ8L 誰がどう見ても患者はお前だろ。精神の
645デフォルトの名無しさん
2018/09/03(月) 23:39:11.39ID:YrDXnGw5 >>643も精神のという意味だろう。この読めなさはw
646デフォルトの名無しさん
2018/09/03(月) 23:57:12.64ID:E2St7m4+ キミラは重篤な患者さんだからな
しょうがない
しょうがない
647デフォルトの名無しさん
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
なんか-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 ココは隔離病棟の集中治療室
649デフォルトの名無しさん
2018/09/04(火) 01:03:24.22ID:zS1fHlcp 自覚はあるんだな
650デフォルトの名無しさん
2018/09/04(火) 06:08:51.64ID:fH4o5qCk ホールドスペースをバリバリ使ってた。使いこなしてたかはともかく…
20 年以上も前のことだから、もうできない。
20 年以上も前のことだから、もうできない。
651デフォルトの名無しさん
2018/09/04(火) 08:53:12.61ID:jvRjWg/I ホールドスペースやブランチを使いたくなったらsedやめて他の言語使えって、Macで女子高生が話してた。
652デフォルトの名無しさん
2018/09/04(火) 08:53:37.92ID:ROt4XEkp sedがなんで分かりづらいかの理由がわかった
b(とt)の解説が悪いんだよ。
たいてい、b・・・無条件ジャンプのように書いてあるから
これだけでどうやってフロー制御すりゃいいんだよ?ってなる
正確にはこれ、条件分岐なんだな。ニュアンス的にはこんな感じ
/条件/b :label
bの前はアドレスってことだが、正規表現でもアドレス指定できるから
これを条件とすれば、条件分岐となる。
だけどアドレス(条件)はすべてのコマンドで使えるものだからなのか
そのコマンドの説明のところで省いてしまうから、解説だけを読んでも
ジャンプはあるが条件付きジャンプがねーじゃねーかってなるわけだ
条件文があるならあとは簡単だ。普通の手続き型のコードだわ
b(とt)の解説が悪いんだよ。
たいてい、b・・・無条件ジャンプのように書いてあるから
これだけでどうやってフロー制御すりゃいいんだよ?ってなる
正確にはこれ、条件分岐なんだな。ニュアンス的にはこんな感じ
/条件/b :label
bの前はアドレスってことだが、正規表現でもアドレス指定できるから
これを条件とすれば、条件分岐となる。
だけどアドレス(条件)はすべてのコマンドで使えるものだからなのか
そのコマンドの説明のところで省いてしまうから、解説だけを読んでも
ジャンプはあるが条件付きジャンプがねーじゃねーかってなるわけだ
条件文があるならあとは簡単だ。普通の手続き型のコードだわ
653デフォルトの名無しさん
2018/09/04(火) 09:49:28.21ID:+CEwKGA5 "Commands which accept address ranges" って書いてあるやん…
654デフォルトの名無しさん
2018/09/04(火) 10:20:13.70ID:ROt4XEkp655デフォルトの名無しさん
2018/09/04(火) 11:30:26.75ID:+CEwKGA5 >>654
数行上に書いてあるで
数行上に書いてあるで
656デフォルトの名無しさん
2018/09/04(火) 12:17:38.09ID:ROt4XEkp >>655
何度も同じことを言わせないでくれ
何度も同じことを言わせないでくれ
657デフォルトの名無しさん
2018/09/04(火) 13:15:59.22ID:+CEwKGA5 実際には3行上だった
658デフォルトの名無しさん
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
そこは、素人お断りです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が矛盾してるなんて結論に至るのか。
言っておくがチョー当たり前のつまらん話だよ。
・短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
・拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。あまり長くなると書き直しも面倒になるから、早めに手を打つ。
・長くなりそうだと初めから分かっている場合は、もちろん最初から静的型付き言語で書く
ってだけだよ。
静的型付き言語使いにはわりとよくある開発形態のはずだが、なんで>>612が矛盾してるなんて結論に至るのか。
660デフォルトの名無しさん
2018/09/04(火) 19:33:33.93ID:FEVdkErP とりあえずここまでレス飛ばしてきたんでまとめを頼む
661612
2018/09/04(火) 19:43:12.33ID:GKTPwsNb662デフォルトの名無しさん
2018/09/04(火) 19:43:56.78ID:FEVdkErP 把握
663612
2018/09/04(火) 19:53:45.96ID:GKTPwsNb あ、>>612の「数百行クラス」ってのを
「(オブジェクト指向言語の)1つのクラスのコードサイズが数百行」と誤解されたようではあるな。
これは俺の表現も誤解を招くものではあった。
単に「1プログラムのコードサイズが数百行くらい」って意味で書いてたんだけどね。
まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
「(オブジェクト指向言語の)1つのクラスのコードサイズが数百行」と誤解されたようではあるな。
これは俺の表現も誤解を招くものではあった。
単に「1プログラムのコードサイズが数百行くらい」って意味で書いてたんだけどね。
まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
664デフォルトの名無しさん
2018/09/04(火) 21:01:45.22ID:wTvbP50/665612
2018/09/04(火) 21:24:00.90ID:GKTPwsNb >>664
500行を越えるぐらいからかな。
常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
これは規模的に結構辛い。orz
言語は最近はCrystalを試してる。
まだ書き慣れたって段階には達してないけど。
500行を越えるぐらいからかな。
常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
これは規模的に結構辛い。orz
言語は最近はCrystalを試してる。
まだ書き慣れたって段階には達してないけど。
666デフォルトの名無しさん
2018/09/04(火) 21:57:53.47ID:wTvbP50/ >>665
俺は数百行って聞くと2、300をイメージするから、どのぐらいか気になった
crystalとは・・・俺は1.0も出てないものは使えんなあ
うちは処理結果が揮発で良いなら基本bash/pythonを使ってる
俺は数百行って聞くと2、300をイメージするから、どのぐらいか気になった
crystalとは・・・俺は1.0も出てないものは使えんなあ
うちは処理結果が揮発で良いなら基本bash/pythonを使ってる
667デフォルトの名無しさん
2018/09/04(火) 22:13:29.28ID:ROt4XEkp >>659
やっぱり矛盾してるじゃんw
1. 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
2. 短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
3. 拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。
では、長くならない場合は?
シェルスクリプトやrubyもpythonを使うんだろw
やっぱり矛盾してるじゃんw
1. 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
2. 短いプログラムは、シェルスクリプトやruby/pythonなど動的型付き言語で書くことが多い
3. 拡張していくうちに、これ以上長くなったら静的型付き言語で書いた方が楽そうだと思ったら、まるまる静的型付き言語で書き直す。
では、長くならない場合は?
シェルスクリプトやrubyもpythonを使うんだろw
668デフォルトの名無しさん
2018/09/04(火) 22:15:09.44ID:ROt4XEkp >>665
> 常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
小さく分けようぜw
ファイルを分けたり、関数にすりゃ、
たった3000行なんて十分メンテ可能だろ
> 常にその原則を守ってるわけでもなくて、不特定ユーザーに配布するスクリプトではBourne shellで3000行ぐらいのをメンテしてたりもする。
小さく分けようぜw
ファイルを分けたり、関数にすりゃ、
たった3000行なんて十分メンテ可能だろ
669デフォルトの名無しさん
2018/09/04(火) 22:15:31.25ID:dB7ca3M3 やはりワッチョイいるな
670デフォルトの名無しさん
2018/09/04(火) 22:18:59.76ID:ROt4XEkp >>663
> まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
自分でrubyやpythonも使わないって言ったんだろw
自分でオブジェクト指向の言語だしといて何いってんだよ
結局最初に予測したとおり、大きな(それほど大きくもないがw)
プログラムを作るときの、小さなモジュールで作るってことを知らないだけじゃん
> まさかシェルスクリプトスレでオブジェクト指向のクラスのことだと解釈されるとは思わなかった。
自分でrubyやpythonも使わないって言ったんだろw
自分でオブジェクト指向の言語だしといて何いってんだよ
結局最初に予測したとおり、大きな(それほど大きくもないがw)
プログラムを作るときの、小さなモジュールで作るってことを知らないだけじゃん
671612
2018/09/04(火) 22:45:12.74ID:GKTPwsNb >>667
> では、長くならない場合は?
> シェルスクリプトやrubyもpythonを使うんだろw
勿論そうだよ。
> やっぱり矛盾してるじゃんw
> 1. 俺、静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「シェルスクリプトどころかrubyもpythonも使わない」ってのが「数百行クラスになったら」に限定された記述だってことに気づかないあたりが君の鈍いところ。
初見で気づかないのはまあ元の文が多義的に解釈できるから仕方ないとしても、
この期に及んで気づいてないのは致命的かな。
> では、長くならない場合は?
> シェルスクリプトやrubyもpythonを使うんだろw
勿論そうだよ。
> やっぱり矛盾してるじゃんw
> 1. 俺、静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「シェルスクリプトどころかrubyもpythonも使わない」ってのが「数百行クラスになったら」に限定された記述だってことに気づかないあたりが君の鈍いところ。
初見で気づかないのはまあ元の文が多義的に解釈できるから仕方ないとしても、
この期に及んで気づいてないのは致命的かな。
672612
2018/09/04(火) 22:52:14.96ID:GKTPwsNb673デフォルトの名無しさん
2018/09/04(火) 23:01:52.48ID:ROt4XEkp >>672
(全てのプログラムは)長くなるからシェルスクリプトどころかrubyもpythonも使わない
って言っただろ?
長くならないプログラムがあって
「その場合はシェルスクリプトやrubyもpythonを使ってる」というのなら、
明らかな矛盾。使わないと言っておきながら使ってると言ってる。
>>671
負担が大きいから何だって言うんだ?
負担の大小ではなく、管理可能かどうかだろ
現実見てみろ。動的言語でも全体で何万行もあるシステムは作れている
お前が作れないのは単にお前の能力不足でしかない
その事に気づいたようで、動的言語では作れないんだというニュアンスから
負担が大きいに言い換えたようだが、バレバレだw
最初(>>623)に言っておいたとおり、プロジェクト全体の行数を考えるのは意味がない
> 小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
小さいモジュールのあつまりで作ればいいだけの話
小さいモジュールの集まりで作るから、
> 小さなプログラム、小さなファイル、小さなクラス、小さな関数等
は長くならない
(全てのプログラムは)長くなるからシェルスクリプトどころかrubyもpythonも使わない
って言っただろ?
長くならないプログラムがあって
「その場合はシェルスクリプトやrubyもpythonを使ってる」というのなら、
明らかな矛盾。使わないと言っておきながら使ってると言ってる。
>>671
負担が大きいから何だって言うんだ?
負担の大小ではなく、管理可能かどうかだろ
現実見てみろ。動的言語でも全体で何万行もあるシステムは作れている
お前が作れないのは単にお前の能力不足でしかない
その事に気づいたようで、動的言語では作れないんだというニュアンスから
負担が大きいに言い換えたようだが、バレバレだw
最初(>>623)に言っておいたとおり、プロジェクト全体の行数を考えるのは意味がない
> 小さなモジュールを組み合わせて作るんだから、プロジェクト全体の行数で考えるのは意味ないんだよ。
小さいモジュールのあつまりで作ればいいだけの話
小さいモジュールの集まりで作るから、
> 小さなプログラム、小さなファイル、小さなクラス、小さな関数等
は長くならない
674デフォルトの名無しさん
2018/09/04(火) 23:05:52.86ID:ROt4XEkp シェルスクリプトの話に戻すならば、
頭が固い人のたわごとは無視して、
複数のファイルで作れば良いってことなんだよ
もちろん、100行のコードと、
100行の10個のファイルだと後者のほうが
複雑だが(そりゃコード量が増えてるからな)
100行の10個のファイルの動的言語と
100行の10個のファイルの静的言語の
複雑度は変わらない
頭が固い人のたわごとは無視して、
複数のファイルで作れば良いってことなんだよ
もちろん、100行のコードと、
100行の10個のファイルだと後者のほうが
複雑だが(そりゃコード量が増えてるからな)
100行の10個のファイルの動的言語と
100行の10個のファイルの静的言語の
複雑度は変わらない
675デフォルトの名無しさん
2018/09/04(火) 23:06:43.34ID:ROt4XEkp 行とかいたら、コメント含めたりするかw
一応実行行(ステップ数)と言い換えておく
一応実行行(ステップ数)と言い換えておく
676デフォルトの名無しさん
2018/09/04(火) 23:14:44.94ID:RaX7EawA この話オチあるんか?
677デフォルトの名無しさん
2018/09/04(火) 23:17:47.09ID:ROt4XEkp678デフォルトの名無しさん
2018/09/04(火) 23:20:18.74ID:ROt4XEkp C言語に連想配列はなくても、誰かが作ったライブラリはある
そう考えると>>571の結論に戻る
> まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
> フレームワークやライブラリが不足しているから。
> 俺がシェルスクリプトで大規模開発をやらないのは、
> シェルスクリプトが適した内容で大規模なものを思いつかないから。
> それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
そう考えると>>571の結論に戻る
> まとめると、現在のシェルスクリプトが大規模開発に向いてないのは
> フレームワークやライブラリが不足しているから。
> 俺がシェルスクリプトで大規模開発をやらないのは、
> シェルスクリプトが適した内容で大規模なものを思いつかないから。
> それはそれとして中規模を小規模にするためのフレームワークやライブラリは欲しい。
>>678
>誰かが作ったライブラリはある
それは具体的にどこにあるのですか?
それを見つけたとして、それを自分のプログラムに適用できるかどうか判断できるのですか?
単に(論理的に)存在すること、だけを言及しても意味がないと思いますけれども
>誰かが作ったライブラリはある
それは具体的にどこにあるのですか?
それを見つけたとして、それを自分のプログラムに適用できるかどうか判断できるのですか?
単に(論理的に)存在すること、だけを言及しても意味がないと思いますけれども
680デフォルトの名無しさん
2018/09/04(火) 23:26:38.84ID:ROt4XEkp C言語用連想配列の話?
681デフォルトの名無しさん
2018/09/04(火) 23:27:47.89ID:ROt4XEkp http://d.hatena.ne.jp/fd0/20080419/p1
glibc
言わずと知れた GNU の標準 C ライブラリ。search.h というヘッダがあり、
その中にハッシュテーブルを管理できる API が提供されている。
glibcなら誰でも知ってるだろう
glibc
言わずと知れた GNU の標準 C ライブラリ。search.h というヘッダがあり、
その中にハッシュテーブルを管理できる API が提供されている。
glibcなら誰でも知ってるだろう
682612
2018/09/04(火) 23:29:35.30ID:GKTPwsNb >>673
どうも君は健忘症みたいだから>>612から引用してあげるね。
> 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「数百行クラスになったら」って書いてますね...
相手の発言を確認せずに「全てのプログラムは」とか言っちゃうの、仕事でやったら信用失うから今後は気をつけた方がいいと思うよ。
> 静的型検査なしで書くのは面倒くさい。
はい、「動的言語では作れないんだというニュアンス」なんて全くないですね。
動的言語だと「面倒くさい」って書いてるだけでした。
仕事でもこんな調子でコミュニケーションしてるのかなあ。
> 小さいモジュールの集まりで作るから、
せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
どうも君は健忘症みたいだから>>612から引用してあげるね。
> 俺、数百行クラスになったら静的言語にするから、シェルスクリプトどころかrubyもpythonも使わない。
「数百行クラスになったら」って書いてますね...
相手の発言を確認せずに「全てのプログラムは」とか言っちゃうの、仕事でやったら信用失うから今後は気をつけた方がいいと思うよ。
> 静的型検査なしで書くのは面倒くさい。
はい、「動的言語では作れないんだというニュアンス」なんて全くないですね。
動的言語だと「面倒くさい」って書いてるだけでした。
仕事でもこんな調子でコミュニケーションしてるのかなあ。
> 小さいモジュールの集まりで作るから、
せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
683612
2018/09/04(火) 23:32:47.66ID:GKTPwsNb search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
日頃POSIX POSIX言ってるけど、シェルスクリプトの範囲しか知らない人かな。
日頃POSIX POSIX言ってるけど、シェルスクリプトの範囲しか知らない人かな。
684デフォルトの名無しさん
2018/09/04(火) 23:33:18.38ID:ROt4XEkp >>682
> 「数百行クラスになったら」って書いてますね...
だから矛盾してるんだよ。
「条件付きの結論」っていうのは、その結論(シェルスクリプトやRubyやPythonを使わない)が
正しいのはあくまで条件を満たされている場合であって
条件を満たさなければ、シェルスクリプトやRubyやPythonを使うということになる
> 「数百行クラスになったら」って書いてますね...
だから矛盾してるんだよ。
「条件付きの結論」っていうのは、その結論(シェルスクリプトやRubyやPythonを使わない)が
正しいのはあくまで条件を満たされている場合であって
条件を満たさなければ、シェルスクリプトやRubyやPythonを使うということになる
685デフォルトの名無しさん
2018/09/04(火) 23:34:16.08ID:ROt4XEkp >>683
> search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
いつ俺がPOSIXじゃないって言ったんだ?
「glibcで提供している」と書いてあるブログを持ってきただけだろ
> search.h のハッシュ関数は別にglibc依存じゃなくてPOSIXだよ。
いつ俺がPOSIXじゃないって言ったんだ?
「glibcで提供している」と書いてあるブログを持ってきただけだろ
686デフォルトの名無しさん
2018/09/04(火) 23:34:31.63ID:ROt4XEkp ほんとどうでもいいところにばっかり突っ込むよなw
687デフォルトの名無しさん
2018/09/04(火) 23:36:12.99ID:idomDZwg お前がな
688デフォルトの名無しさん
2018/09/04(火) 23:36:56.71ID:ROt4XEkp >>682
> せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
> モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
だから、負担が大きいが、別に作れるだろって話
お前は極端なんだよ。規模が大きくなったときのことで悩んで、負担が大きいから使わないと
規模を大きくしなければ済む話なのに、それに気づいていない
まあ行数が同じなら、負担なんて大して変わらんがね。
動的型付き言語で大変なら、静的型付き言語でも大変
> せっかく「まったく同じようにモジュール化しても、静的型付き言語に比べて動的型付き言語は人間にかかる負担が大きい」って書いてあげたのに読めてないんだね。
> モジュール粒度が同じでも、動的型付き言語と静的型付き言語では、人間の負担するコストに違いがあるんですよ。
だから、負担が大きいが、別に作れるだろって話
お前は極端なんだよ。規模が大きくなったときのことで悩んで、負担が大きいから使わないと
規模を大きくしなければ済む話なのに、それに気づいていない
まあ行数が同じなら、負担なんて大して変わらんがね。
動的型付き言語で大変なら、静的型付き言語でも大変
690デフォルトの名無しさん
2018/09/04(火) 23:40:26.52ID:ROt4XEkp お前がな
691デフォルトの名無しさん
2018/09/04(火) 23:41:11.31ID:gZnu4stV 隔離病棟はものすごいことになってる
692デフォルトの名無しさん
2018/09/04(火) 23:41:41.00ID:ROt4XEkp693デフォルトの名無しさん
2018/09/04(火) 23:42:22.29ID:+CEwKGA5 元の板に戻ったほうが良いんじゃないかな
694デフォルトの名無しさん
2018/09/04(火) 23:42:47.42ID:Gq1Hay5m キチガイに触んなすな
695612
2018/09/04(火) 23:43:57.27ID:GKTPwsNb いや、IDがないともっと悲惨だよ、これ。
次スレはワッチョイもつけた方がいい気がする。
次スレはワッチョイもつけた方がいい気がする。
696デフォルトの名無しさん
2018/09/04(火) 23:44:19.45ID:ROt4XEkp698デフォルトの名無しさん
2018/09/04(火) 23:46:10.08ID:gZnu4stV 懸命に手を尽くしたましたが
手の施しようがありません
手の施しようがありません
699デフォルトの名無しさん
2018/09/04(火) 23:47:02.77ID:ROt4XEkp >>695
ワッチョイついてるスレでの俺の活躍を見よ(笑)
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/458-
ワッチョイついてるスレでの俺の活躍を見よ(笑)
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/458-
700612
2018/09/04(火) 23:47:07.77ID:GKTPwsNb やっぱり前スレの荒らしおよび、UNIX 板で後から意図的に重複スレ立てた人物だったんだね。
まあそうだろうとは思ってはいたが。
まあそうだろうとは思ってはいたが。
701デフォルトの名無しさん
2018/09/04(火) 23:48:37.75ID:ROt4XEkp >>700
ひどいな。ネタに決まってるじゃないか
ひどいな。ネタに決まってるじゃないか
702デフォルトの名無しさん
2018/09/04(火) 23:50:01.24ID:gZnu4stV なるほどサマータイムスレであばれた低学歴知恵遅れの一部で
マジキチだったヤツか
マジキチだったヤツか
703デフォルトの名無しさん
2018/09/04(火) 23:50:48.48ID:zILy+Zrq 迷惑なスレの乱立は
ID:ROt4XEkp の仕業だったんだな
ID:ROt4XEkp の仕業だったんだな
704デフォルトの名無しさん
2018/09/04(火) 23:50:57.04ID:ROt4XEkp それは半角使うやつだろ
はっ!お前半角使ってるじゃん!
はっ!お前半角使ってるじゃん!
705612
2018/09/04(火) 23:51:43.34ID:GKTPwsNb 福岡県かあ。関東かと思ってたが違ったんだな。
707デフォルトの名無しさん
2018/09/04(火) 23:55:45.20ID:ROt4XEkp >>705
実はもう一つプロバイダ持ってるw
そっちはホスト名調べても県名がでない
予備回線で昔(10年以上前)は大手プロバイダでも時々回線異常発生してたんで
持ってたんだけど、最近は使わないからやめようかと思ってるけどね
もう2ちゃんねるでスレ立てるするときにしか使ってないしw
実はもう一つプロバイダ持ってるw
そっちはホスト名調べても県名がでない
予備回線で昔(10年以上前)は大手プロバイダでも時々回線異常発生してたんで
持ってたんだけど、最近は使わないからやめようかと思ってるけどね
もう2ちゃんねるでスレ立てるするときにしか使ってないしw
708デフォルトの名無しさん
2018/09/04(火) 23:56:24.91ID:ROt4XEkp んで、元の板に戻るのかどうか?
俺はどっちでもいいよ
俺はどっちでもいいよ
709デフォルトの名無しさん
2018/09/04(火) 23:58:49.53ID:ROt4XEkp ワッチョイ板でも書いたけど日付変わったらIPアドレス変更するよ!
攻撃しないでね!(まあやっても無駄だけど)
攻撃しないでね!(まあやっても無駄だけど)
710デフォルトの名無しさん
2018/09/04(火) 23:59:32.47ID:ROt4XEkp (まあIPアドレス変わっても書き込み内容が独特なのでストーキングしていればすぐに分かる)
711612
2018/09/05(水) 00:01:43.69ID:D7naH2YM これだけ荒らしておいて、まだUNIX板に戻る選択肢があると思ってるとは...
絶対に戻らないっことが、今回の
件でさらに強固になっただけだね。
そして ID:+CEwKGA5 はもう一つのプロバイダーを使った自演だったというわけだ。
絶対に戻らないっことが、今回の
件でさらに強固になっただけだね。
そして ID:+CEwKGA5 はもう一つのプロバイダーを使った自演だったというわけだ。
712デフォルトの名無しさん
2018/09/05(水) 00:05:18.62ID:NuDqxS96 疑心暗鬼(笑)
713デフォルトの名無しさん
2018/09/05(水) 00:33:48.24ID:uppndDPA まず馬鹿ガイキチには叶わないっていう如実なサンプルってことで、以後ID:ROt4XEkp とわかったら途中でも終了スルーでいいだろう
714デフォルトの名無しさん
2018/09/05(水) 03:10:59.07ID:mw/V56zA 元に戻るってのはID無くすってことだぞ
全く解決になってない
解決ってのはワッチョイなりIPなり表示させることだ
全く解決になってない
解決ってのはワッチョイなりIPなり表示させることだ
715デフォルトの名無しさん
2018/09/05(水) 09:56:32.93ID:NuDqxS96 a="abc" から最初の一文字を削除するのは
echo "${a#?}" でいけますが、
この削除した文字を取得する方法ってないですよね?
echo "${a#?}" でいけますが、
この削除した文字を取得する方法ってないですよね?
716デフォルトの名無しさん
2018/09/05(水) 10:20:06.92ID:04P6tucf717デフォルトの名無しさん
2018/09/05(水) 10:33:50.47ID:NuDqxS96 bashはまあそれでいけますよね・・・
試しに文字列の長さを測って
(ループで空になるまで1文字ずつ消していけばわかる)
文字列の長さ-1個の??????・・・という文字列を作って
${a%????・・・} で文字列の後ろを削って1文字残す
というやり方でevalも駆使して取り出したけど、
このやり方で1文字ずつループさせたら
1KB程度の文字列で1秒かかってしまったw
これならたぶんsedで1文字ずつ改行させて処理したほうが速いだろうな
試しに文字列の長さを測って
(ループで空になるまで1文字ずつ消していけばわかる)
文字列の長さ-1個の??????・・・という文字列を作って
${a%????・・・} で文字列の後ろを削って1文字残す
というやり方でevalも駆使して取り出したけど、
このやり方で1文字ずつループさせたら
1KB程度の文字列で1秒かかってしまったw
これならたぶんsedで1文字ずつ改行させて処理したほうが速いだろうな
718デフォルトの名無しさん
2018/09/05(水) 10:34:25.02ID:NuDqxS96 >>716
ついでに聞きたいんだけど、手元にkshしかない状況ってどんな状況?
ついでに聞きたいんだけど、手元にkshしかない状況ってどんな状況?
719デフォルトの名無しさん
2018/09/05(水) 10:36:03.21ID:04P6tucf >>718
仕事中
仕事中
720デフォルトの名無しさん
2018/09/05(水) 10:36:40.11ID:jCw2sC+8 ${a%${a#?}}
でいいのかな。dashでもとれてそう
でいいのかな。dashでもとれてそう
721デフォルトの名無しさん
2018/09/05(水) 10:40:24.63ID:04P6tucf お、kshでも取れたわ
なるほど
なるほど
722デフォルトの名無しさん
2018/09/05(水) 10:48:45.20ID:NuDqxS96723デフォルトの名無しさん
2018/09/05(水) 10:51:17.41ID:04P6tucf >>722
あぁ、AIXだよ
あぁ、AIXだよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】運命のW杯抽選会、NHK総合が生中継&DAZNが無料ライブ配信! 今夜 12月5日(金)26時~ [阿弥陀ヶ峰★] ★2 [阿弥陀ヶ峰★]
- ひろゆき氏、日中対立に 「結局、人口というのは国力なので。10億人以上いる国に、1億2000万人で対抗可能であるというのが間違い」 [冬月記者★]
- 渡邊渚「性を売ってるくせに」批判に反論 幻滅「これが日本の現状だよなー」「『渾身の下着!』というような意味でやってない」★2 [Ailuropoda melanoleuca★]
- 渡邊渚さん脅迫か 写真集に包丁置く写真投稿 30代女性書類送検 渡邊さん「外に出るのも怖く身の危険を感じる」 [ひかり★]
- 【千葉】会社で58歳女性刺される 殺人未遂容疑で同僚の中国籍の男(39)逮捕 女性死亡 いすみ市 [ぐれ★]
- 58歳ミュージシャン俳優、高市首相のアーティスト支援表明に「自分で潰しておいてどの口が…」 [muffin★]
- 【NHK他】FIFAワールドカップ2026 組み合わせ抽選
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1818
- とらせんIP ★2
- ハム専 サヨナラ石井
- こいせん 全レス転載禁止
- 【U-NEXT】プレミアリーグ総合 ★40
- 【動画】日本人さん、バリ島の土産物店で堂々万引きwwwwwwwwwww [834922174]
- 【01:45NHK~】サッカーW杯2026グルーブ分け組み合わせ抽選会いよいよスタート! [339712612]
- 【NHK/DAZN/YouTube】FIFAワールドカップ2026組み合わせ抽選★1
- 久しぶりにスズメ見かけた
- 【風向き】ヤバい!高市が導入を検討する「防衛特別所得税」、ネトウヨらもまさかの反対の大合唱。。さすがに国民を舐めすぎたか? [219241683]
- お茶会聯合自治政府 貳
