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

■ このスレッドは過去ログ倉庫に格納されています
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
2019/10/01(火) 20:00:53.41ID:fust4gpU
>>726
他の言語感覚って言うけど、
じゃあお前いくつ言語しってんの?って話だよ。

狭い言語の知識=言語の全てって思ってるだけさ
2019/10/01(火) 20:02:16.96ID:8eIOCDAd
そもそものそもそもは、bcの毎回起動するのに時間がかかるというので、せっっかくの標準で暗黙的にもマルチプロセスなのでサーバ&クラアント的に起動しとけばいいんじゃねと

trap 'exec 8>&-; exec 7>&-; rm -f from-server to-server' EXIT

mkfifo from-server
mkfifo to-server
exec 8<> to-server
exec 7<> from-server

< to-server bc -l > from-server &

calc () {
echo "$*" > to-server
read result < from-server
echo $result
}

てのを書いたのよ、単なる興味的にどれだけのコスト削減できるのかを試し確認するために。で、この一連の(他の言語的には)思ってもいなかったとこでコストがあるなと。その確認だけだよ。で、やっぱり>>721のようなことだなとw
2019/10/01(火) 20:02:43.57ID:8eIOCDAd
>>727
はいはい
2019/10/01(火) 20:09:04.89ID:fust4gpU
>>728
どの言語でも、その言語を知らなければ、その言語特有の所でコストがかかるってだけだ
だからちゃんとその言語を知らなければいけない。
2019/10/01(火) 20:10:22.49ID:8eIOCDAd
はいはい。知っていることを延々と言われても。それも聞いてもいないのに
2019/10/01(火) 21:09:03.88ID:/EdGAgHY
>>726
つうか、お前の感覚の話なんか誰にもわからんだろ。
だから、馬鹿だと言う前提で説明してるだけじゃん?
それすら理解できないってことはやはり馬鹿なんだなぁと思うばかり。
2019/10/01(火) 21:21:30.07ID:T/R8ZN8b
ろくにシェルスクリプトのことを知らないから聞いてみた。
親切に教えてくれる人がいた。
……何が不満なんだ?
2019/10/01(火) 21:25:17.92ID:8eIOCDAd
何がお怒りのなのかさっぱりですけどw
2019/10/01(火) 21:31:30.87ID:8eIOCDAd
よくわからないが、他の言語で
func()

a = func()
で、こんな差があるのなんて、他にどの言語あるの?俺は知らない少々他の言語を知っているが
てか、そういうのは普通は「使えない」からそうならないようにするし、そもそもシングルプロセスを前提のが多いだろうから、他の一般的な言語でシェルスクリプトのようなのはちょっと思いつきません

func がまあ普通の速さなので、a = func もなんか他の方法があるのかなと。無いという確認はとれてお礼も言っているのになあ>>718
関係ない(知っていることを)ことを延々とでいい加減してくれというのはあったけどw
2019/10/01(火) 21:52:27.77ID:fust4gpU
すべての言語はそれぞれ違っているんだが、
同じ言語がほしいのか?
737デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:57:08.01ID:Ueonb/Q5
みんな違って
 みんないい
  まつお
2019/10/01(火) 22:01:17.19ID:8eIOCDAd
>>736
相変わらずだね。何を言いたいのかさっぱり
返り値を使う(関数)使わない(サブルーチン)でコストがこんなにあるって話なのに
2019/10/01(火) 22:14:23.82ID:8eIOCDAd
そうだ、ksh(zsh)ならreadでと思ったら、逆に遅くなるのね
hoge | read a
サブシェルになるのはhoge。kshはパイプでもパイプを使わずになんちゃらを使ってなんとかかんとかwとかあったからちょっと期待したのに

あれだな、そもそもシェルスクリプトの関数の返り値はreturnでの実行ステータスしかない、それ以外の形態(テキスト)は考えていませんからこんな感じにしかなりませんってとこか
2019/10/01(火) 22:58:18.96ID:9HRGRt02
for ループは、while よりも遅いだろ。
bash も、dash よりも遅いだろ

ループでは、for, bashを使わない方が速い
2019/10/01(火) 23:34:09.29ID:DttT1lmW
returnが返り値ってw
あれはエラー情報だろ
例外と同じ。
2019/10/01(火) 23:35:42.98ID:DttT1lmW
パイプで処理をつなげていくシェルスクリプトにおいて
返り値=出力なんだよ

出力を読み取って、処理して出力する

そういう基本がわかってないだけ
2019/10/01(火) 23:53:15.78ID:8eIOCDAd
return
なんすけど。returnの意味知ってる?とかいう。いや、しつれい
エラー情報でもない、単なる終了ステータス。exit ではないのは、まあ、関数だからと、exit と区別がつかないからかなw
2019/10/01(火) 23:59:02.30ID:8eIOCDAd
function name () { }
が、POSIXではないのは(これからも採用されないかも?採用するの?)というのは、関数じゃねえー、所詮コマンドだなというとこかなと思ったりしてみたり、今回w

>>742そのレベルで馬鹿にできるのはあなたがそのレベルと言っているようなもんかなとw
てか、return なのにそれを返り値と見るのを頭から否定するのは、いままでの同一人物としか思えないんだけど。シェルスクリプトは知っているがシェルスクリプトしか知らないシェルスクリプトにだけ拘るw
2019/10/02(水) 00:19:13.78ID:DWeKr+Az
>>743
returnの意味は「帰る」
何かを戻すという意味はない
2019/10/02(水) 00:20:54.57ID:238K9SSk
マジで言ってるの?もっと勉強しよう、他人にアタるならw
2019/10/02(水) 00:20:59.41ID:DWeKr+Az
アセンブラでもreturn(RET)がある。
これも戻るという意味なだけ
呼び出し元に何かを戻すという意味はない
2019/10/02(水) 00:23:56.96ID:238K9SSk
アセンブラでもマクロアセンブラはあったりするけどな
戻り値をどういう形態で(どのレジスタにとか)という決まりであれば
>呼び出し元に何かを戻すという意味はない
マジで言っているの?アホらしい
2019/10/02(水) 00:25:12.52ID:DWeKr+Az
>>748
「マジでいってんの」しか言ってないよなw
returnを翻訳してみろ。戻るという意味しかない
2019/10/02(水) 00:26:09.34ID:DWeKr+Az
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_24
returnの説明にも、nは終了ステータスと書いてある。
return valueとは書いていない
2019/10/02(水) 00:30:13.30ID:238K9SSk
言うならアセンブラでなくて機械語だな。ほんとにしょうもない知識自慢

>>749
>returnを翻訳してみろ。戻るという意味しかない
マジで言ってるのとしか言えんやん。「return なんとか」とか普通にあるぞ?
>>743 にreturnしか書いてないからか?なんかしょうもないなああwなんかしょうもないけど、だったらなんかすまんな

>>750
関数として見たらだよ。すでにそういうことは>>743,744で言っているんだけど
所詮コマンドだなで終わってるよ
2019/10/02(水) 01:32:56.67ID:o4tQ0hze
>>735
よく分からないで批判する癖は辞めた方が良い
2019/10/02(水) 01:35:11.54ID:o4tQ0hze
>>751
機械語にreturnに類する語は出てこないぞ?
2019/10/02(水) 01:35:40.52ID:238K9SSk
「よくわからない」が何を指しているのか「よくわからない」だろう?
また単なる「語」に食いつくwいつものかとしか思えません
2019/10/02(水) 01:36:26.76ID:238K9SSk
>>753
イミフ。機械語は01だからな。そんな話はしてない
やっぱりいつものかw
2019/10/02(水) 01:39:39.82ID:238K9SSk
同一人物かどうか知らんが、>>742から同じ人物としてしまう、もうw
同じ「レベルw」でしかも同じ姿勢としか思えないので。もう十二分にそのレベルwを自ら率先して晒してしまったので>>744の後半で正解だったなと
あとはもう「教えてww」やんない
2019/10/02(水) 01:53:53.42ID:o4tQ0hze
いつもの妄言を喚いて自分の敵は一人だと思い込んでる痛い奴だったか
2019/10/02(水) 01:55:39.44ID:238K9SSk
敵www
そういう姿勢だったのね。そうだよね、あなたはw
2019/10/02(水) 02:46:06.49ID:JFJLbhDm
IDが変わっても判別しやすいのはいいこと
ぼんやりしてて助かる
2019/10/02(水) 02:51:03.64ID:o4tQ0hze
>>758
いやおまえ、オレと関係ない人を同一人物扱いしてんじゃん
2019/10/02(水) 02:58:29.05ID:238K9SSk
>>760
>>756をよーく読もうな。読めない?

>>753は何を言いたいの?
機械語は01だからreturnに対する語はないと言いたいの?ととって、ああまたかというw>>756なんだよ(よく読んでねw)

>機械語にreturnに類する語は出てこないぞ?
って、どういう意味?俺の理解とは別でならすまんかったちょっと続ける?
2019/10/02(水) 03:24:37.13ID:DWeKr+Az
知らないなら言わなければいいのにw

RET命令(Return from Procedure)
http://softwaretechnique.jp/OS_Development/Tips/IA32_Instructions/RET.html
2019/10/02(水) 03:28:45.47ID:238K9SSk
>>762
なにを言いたいのかさっぱりなんですが、具体的に自分のお言葉でお願い
まさか、RETはあるがReturnは無いではないだろうし、さっぱりわからん

(そしてなんで同じやねん、その姿勢w)
2019/10/02(水) 03:43:25.73ID:DWeKr+Az
同じだだろ。何いってんの?
略だから違うんだって言いたいの?
2019/10/02(水) 03:44:26.53ID:o4tQ0hze
>>762
そしてそれはアセンブリ言語という..
2019/10/02(水) 03:46:58.80ID:DWeKr+Az
シェルスクリプトのreturnは終了ステータスを返すもので
これは他の言語の返り値ではないのは一目瞭然なんだがね

だからこそ $_ という変数(外部コマンドを呼び出した時の終了ステータス)で
アクセスできるわけだし

しらないならシェルスクリプトを勉強してくださいって言うしか無いな

なんならbashのドキュメント引用しようか?

return [n]
指定した返り値 n で関数を終了させます。 n を省略すると、返却ステータスは 関数内で最後に実行したコマン
ドの返却ステータスになります。 関数の外側で使われているが、 . (source) コマンドによるスクリプトの実行
中である場合、 シェルはそのスクリプトの実行を止め、 n またはスクリプト内で最後に実行されたコマンドの
終了ステータスを スクリプトの終了ステータスとして返します。 関数の外側で . によるスクリプトの実行中以
外に使われた場合、 返却ステータスは偽となります。 関数やスクリプトから実行が戻る前に、 RETURN トラッ
プ に設定されたコマンドが実行されます。
2019/10/02(水) 03:47:32.93ID:DWeKr+Az
>>765
その違いは今、重要なのか?w

returnの意味なんて言語によって違うって話をしてるんだが
2019/10/02(水) 03:49:09.36ID:238K9SSk
>>764
マジか
残念ながらが同一人物に見えるとやはりなお思ってしまうよw

マジか。そんなんで偉ぶるwなんの意味があるのだかさっぱり
そもそもマシン語ではない、アセンブリ=ニーモニックだし。ニーモニック命令は3文字にという昔の風習なだけだろうに

豆知識
そもそも、そんなRETでもいいけどReturnすらないCPUもある。POPしてジャンプという

なんだかなあ
2019/10/02(水) 03:55:47.57ID:238K9SSk
あら。なんかすまん、別人なのね

>>766
んー、なんで「知らない」前提なのかさっぱりわからん。一般的な関数の形態としての話だし、その言っていることは>>743,744で書いているのだけど(もちろんそんなことは前々から知っていての)

あくまでも関数の形態としてのreturn文ね。わからないかなあ

なにか俺は知らないを前提に書いているようだけど、なんで??
2019/10/02(水) 04:19:21.82ID:238K9SSk
ん??
ID:DWeKr+Az が頓珍漢に横入りしたのかwwなにをのたまっているのかだかな。もうあんたはいいよw同じこと繰り返してるし

>>768,769はID:o4tQ0hzeかと思って書いた
>>761はID:o4tQ0hze にご理解いただけたということでよろしいのですかね??
2019/10/02(水) 06:38:15.47ID:Ge1fP5ct
シェルスクリプトはシェルスクリプトだっていってんのに

俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!
といわれても、

うんじゃあ、シェルスクリプトを使えるように、シェルスクリプトの勉強をしましょうか?
としか言えんわなw
2019/10/02(水) 07:03:56.09ID:R26grXOk
アセンブラじゃなくて機械語だってすごいよなw
2019/10/02(水) 08:47:07.26ID:238K9SSk
>>771
どう読んで、そう思っているのか??
俺は他の言語しか知らん。シェルスクリプトは他の言語じゃない!なんてこれっぽっちも言ってないけど

他の言語の関数とはやっぱ違う他の言語の関数と同じようにはできないねというだけだが?端的には>>735と所詮コマンドということ
POSIXとしてもfunctionと名乗ってるけど、一般的=他の多くの言語のfunctionとは違うfunction、functionというよりコマンドだなやっぱちう
それがシェルスクリプトのfunctionで他の言語のfunctionとは違うって強く俺に言いたいんですかね?

いいよ、めんどくさいから読まなくても。レスするのもめんどくさいからw


>>772
まあ、そういう意味じゃないんだけどね(どういう意味のレスなのかイマイチだがw)
マクロアセンブラがあるようにアセンブラはどのようにもできる、やろうと思えば。縛りはそこじゃなくて、機械語だなという
また、機械語になんて関数なんて概念ないからねって話にも膨らむのになというw
774デフォルトの名無しさん
垢版 |
2019/10/02(水) 09:15:47.03ID:gGwgwb6G
俺はたぬきしか知らないなんて言ってない!
みかんはたぬきとは違う!
2019/10/02(水) 09:19:32.36ID:R26grXOk
機械語に関数の概念が無いってすごいよなw
2019/10/02(水) 09:23:09.06ID:238K9SSk
めんどくせえなあ。とんちんかんな変すぎるレスいらんw

知らなかったのはサブルーチンとして使うのと関数として使うのにコストの差が思った以上にあったというだけだな。functionなんだからそんなに差が無いようになんかあるだろうと思い込みによる
それだけだよ

別にだから関数のように使わないとも言わんし、いままでも使ってるし変わらずに使うけど
2019/10/02(水) 09:25:03.86ID:238K9SSk
>>775
無いよ。機械語を駆使して関数を作ってるっていう
機械語レベルの関数って?まあ、そんなCPUがもしかしたらあるのかもだが、知らんんなあ
2019/10/02(水) 09:39:55.43ID:238K9SSk
機械語にはサブルーチンはある。なきゃ困る(主にどこのアドレスに返ってくるのかのため)。単なるサブルーチンコール、引数の概念とかも無いw
引数も返り値(サブルーチン+返り値=関数)も、単なるmoveとかpushとかで「適当」なとこに入れての(主に高級言語(ほぼCだが)の仕様にあわせての)で、機械語の概念では存在しない
おしまい
2019/10/02(水) 10:11:40.69ID:caSqV8Sl
これマジ?
2019/10/02(水) 10:39:50.67ID:238K9SSk
この板にもあるだろうと思ったらあったし、
「関数」で検索したらアセンブリで関数というのを説明しているようなレスもあるやん
調べろよそのぐらいw
2019/10/02(水) 10:46:24.58ID:238K9SSk
ああ、すまん。勇み足だった。よく読んだらあんま詳しくはないかな
ある程度知っていての注意点ぐらいだった
2019/10/02(水) 10:51:24.96ID:238K9SSk
お詫びに探してきた
https://nw.tsuda.ac.jp/lec/i486/
興味があるなら、読もう。アセンブリの部分をも
2019/10/02(水) 10:54:19.14ID:caSqV8Sl
サンクス
読んでくるわ
2019/10/02(水) 11:01:36.56ID:vYvaxxoe
だいたいシェルスクリプトと機械語なんて超相性悪いから
シェルスクリプトの概念を例える別の言語として機械語(含むアセンブリ言語)は最悪の選択ではw

シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか
適用範囲の節で明言してるし。

(つーかこの喧嘩って俺がkshの速度を持ち出したことが発端なんだな…
良かれと思って余計なこと言わなけりゃよかった)
2019/10/02(水) 11:18:14.46ID:238K9SSk
>>784
>シェルスクリプトの概念を例える別の言語として機械語
じゃないよ、そもそも言いだしたのは。俺じゃないけど。単にreturnという「語」のに絡みついてだけの>>747
まあ、機械語(=1対一でしかないアセンブラ)では当たり前なんだが、上記の通りに

てか、めんどくさいから読まないでしょ?レスするのめんどくさいよw
2019/10/02(水) 11:26:54.15ID:238K9SSk
>>784
>シェルスクリプトの標準・仕様書であるPOSIXも機械語には全く言及してないってか
>適用範囲の節で明言してるし
CPUによって全然違うし(CPUメーカーが作るもんでしょう)なあ。標準化なんてする範疇じゃないんじゃないかな

>kshの速度を持ち出したことが発端なんだな…
いや、違うよ。kshの件は早々に終わっているといえば終わってる。そんなのが全く関係ないとこでながながとなってるだけだな
その前の俺の思惑wからだな、長々としている原因は。強いて言えば
2019/10/02(水) 14:05:10.23ID:D8VruPt/
>>718 , >>719 が既に頭悪そうなんだよ。その辺りから見直したらいいんじゃないかな。
2019/10/02(水) 14:31:23.77ID:238K9SSk
よくわかんないなw
2019/10/02(水) 17:06:22.98ID:em13adMU
ファイル名に()が入ってるやつをリネームしようとしたら
Syntax error: "(" unexpected
と言われる・・
ファイル名から()取り除いたらうまくいきました
どうすればよいでしょうか
2019/10/02(水) 17:19:25.51ID:ccSnb7w3
touch "foo()bar" で作れたからそれかな
あるいは 正規表現のできるrenameツールに任せちゃう
https://paiza.io/projects/GgkMgqOqyzwwgbmu-Fn-Vg
https://pastebin.com/pYBipcQt

~/bin/rename.pl dry s/foo../foo/ foo\(\)bar
foo()bar => foobar

~/bin/rename.pl run s/foo../foo/ foo\(\)bar
2019/10/02(水) 20:34:07.49ID:9nRFYl/a
>>789
file="aaa (bbb) ccc"
mv "$file" "aaa"

シェルスクリプトでは引数の変数は""でくくるもんだ
常識だからな

shellcheckでチェックしろ
792デフォルトの名無しさん
垢版 |
2019/10/02(水) 20:52:22.16ID:56vpBHGI
>>789
ファイル名をシングルクォートまたはダブルクォートで括る。またはそのようにシェルが特別な解釈をしてしまう文字の直前に \ を入れる。
2019/10/03(木) 00:15:58.71ID:SqD9WxB/
空白絡みで便乗質問です。

スクリプトがあるディレクトリを変数に入れるために、よく、
BASEDIR=$(cd $(dirname $0); pwd)
みたいなの書くと思うんですけど、
スクリプトを呼び出す際の相対パスや絶対パスに空白があっても大丈夫な場合はどう""をつければいいんでしょうか。

いつも試行錯誤するんですけどうまくいかなくて空白禁止にしちゃってます。
2019/10/03(木) 00:16:32.35ID:SqD9WxB/
大丈夫な場合→大丈夫にしたい場合、です。
2019/10/03(木) 00:41:53.26ID:kXokk7Ss
dirname "$0"じゃダメな理由はなに?
2019/10/03(木) 00:56:16.10ID:WHDqtNcX
"$(dirname "$0")" じゃない
2019/10/03(木) 02:58:37.36ID:DFQVUXe/
>>793
BASEDIR=$(cd "$(dirname "$0")"; pwd)


BASEDIR="$(cd "$(dirname "$0")"; pwd)"
↑これは不要

"引数"として渡す場合に必要。
変数への代入は引数ではないので不要
2019/10/03(木) 07:38:56.48ID:vim6DLSQ
>>790
ありがとうございます
今のところThunarに標準昨日の一括リネームでなんとかなりました
>>791,792
ls: 'aaa (bbb) ccc.jpg'にアクセスできません:
みたいな感じになりましたね
2019/10/03(木) 08:37:13.31ID:/bA39X9L
小数の計算がPOSIXで標準化されるって本当?
これどうにかしてほしいんだが

$ zsh -c 'echo $((0.1+0.2))'
0.30000000000000004

固定小数点をサポートしてくれよ。
800デフォルトの名無しさん
垢版 |
2019/10/03(木) 09:12:38.31ID:BSBvRGI4
各言語での 0.1 + 0.2 の結果
http://0.30000000000000004.com/
801デフォルトの名無しさん
垢版 |
2019/10/03(木) 09:41:30.99ID:T62xH6xP
言語というよりはどういうライブラリ使っているかの問題だと思うが
2019/10/03(木) 09:46:51.64ID:wbZFe5vy
きちんと0.3返す言語は
分子と分母の2つ記録するから速度は遅くなる

遅いシェルスクリプトの選択した方法は正しい
2019/10/03(木) 09:50:59.70ID:/bA39X9L
いや、誰が浮動小数点数的な答えを求めてるのよ?
誰も数学的に間違った答えなんか求めてないでしょ?
2019/10/03(木) 13:46:15.91ID:oxXSy4fC
固定小数点なんて採用することはないな
提案してみろ、まずはStandard C Libraryとして
2019/10/03(木) 14:46:29.02ID:Fw9k5QN4
>>801
ライブラリというより、内部での浮動小数点の形(float,double,long doubleのどれか。いまどきfloatは無いか)、および、いつ丸めてるかだけじゃね

>>800のも大体は結局はCでの結果でしかないだろう。デフォのdoubleの結果がほとんどだろう
例えば、awkは問題ないように見えるが。2.3 / 0.1 = 23 だが、int(2.3/0.1) = 22 になるのも
806デフォルトの名無しさん
垢版 |
2019/10/03(木) 14:56:31.03ID:gitagY/F
>>805
いや、だからライブラリだろ。
同じ言語でも内部表現に関する決まりのない言語なら例えばBCDで保持するようにしてそれ用のライブラリで計算や10進文字列変換したって構わないんだからな。
2019/10/03(木) 15:03:35.77ID:Fw9k5QN4
そういうある意味特殊なことをしようとする意志のがあればな
結局はCなんだよどういう言語でもああいう部分は。そしてCがそうだからただそうなだけ。わざわざ言うようなことをするのは極めて少ないだろ
浮動小数点がIEEEで決められてる正規なものだし。特殊なプログラムを使えということだよ=シェルとかに求めるのは現在のコンピュータ界隈では無理筋だな
2019/10/03(木) 15:08:16.36ID:wbZFe5vy
perl か何かに任せておけ
#!/usr/bin/env perl
use bigrat;
my ( $ss, $F, $ISO ) = (@ARGV);
unless ( defined $ISO ) { $ISO = 100 }

my %shutter_speed = (
30 => -5,
25 => -14/3,
20 => -13/3,
......
);
printf "%s\n", 0/1 + $shutter_speed{$ss} + $F_number{$F} - $ISO_number{$ISO};

ただし perl bigrat だと
0/1 +
を抜くと型が整数処理されるというわけのわからん挙動するケースがあったから
別の言語がいいけど
2019/10/03(木) 17:47:54.90ID:vTPkh0Cq
>>807
浮動小数点とIEEE754は同じ意味じゃないから語弊が生まれるよ。
文字コードとUTF-8ぐらいの関係だろう。
そして大抵の小数を扱えるプログラムがCでIEEE754に準拠した浮動小数点による取り扱いをしてるって意見は、全然同意できないな。
2019/10/03(木) 18:03:01.77ID:NYKgu9W2
1. 数学的には正しくない。
2. 速度のために正確さを犠牲にしている。
3. 誰も間違った答えは望んでいない

仕様だから〜とかいう話じゃないんだよね。
本当はみんな正しい答えが欲しい。

シェルスクリプトに速度は重要じゃないんだから
正しい答えのほうが便利だろ
2019/10/03(木) 18:39:51.77ID:K4DSf+RO
ほとんど近似値でたりるし必要なら自分でつくるなりすればとしか思わないよ
2019/10/03(木) 18:40:45.48ID:Fw9k5QN4
>>809
浮動小数点とIEEE754は同じ意味じゃないって?何を言いたいのかわからん
IEEE準拠じゃない独自のがあると?今時はFPUでやってるもんだし、速度なんぞを犠牲にしてまでもそういうのを「わざわざ」をやっている=それがウリになるからすぐに探せるんじゃないかなあ?

>>810
コンピュータサイエンス的にはそんなのはない=シェルスクリプト作る人も、そんな目新しいことをわざわざしないだろうとしか思えんな、いくらそう言っても
2019/10/03(木) 20:14:25.67ID:A9ow2usS
>>811
0.1+0.2が0.3にならなくてもいいよっていう業界を教えてくれ
814デフォルトの名無しさん
垢版 |
2019/10/03(木) 20:20:38.23ID:gitagY/F
適当なところで丸めりゃ良いんだからいいじゃねえか
2019/10/03(木) 20:23:06.87ID:Fw9k5QN4
少数なんて大体でしかないなんて常識だと思ってたのにな。少数使わないでも結局できたりするので、また、固定少数でも結局工夫が必要なのには変わりないので
なんでそんなに少数の正しさに拘っているのだか、どういう業界でそういうのをしかもスクリプトオンリーで書かなきゃならないって想像できないな
2019/10/03(木) 20:30:23.62ID:KR7C+a5e
>>813
必要なら用途に合うもん使えよ
2019/10/03(木) 23:39:56.70ID:5pSilKMJ
気が付いたら少数を使うことがほとんどなくなった
利子の計算ぐらいだが、これは何桁で計算を打ち切るか
あらかじめ決めておく。安易に double とか使わない
2019/10/03(木) 23:43:58.79ID:6kVVAM38
簡単なシェルスクリプトしか書けんが何が覚えとけって言語ある?
s以外のsedの機能をようやく覚えたけどコマンドは文字列操作系で手一杯だわ
やっぱりperlの呪文覚えるしかないか
2019/10/03(木) 23:49:00.65ID:wbZFe5vy
パイプが強烈だから文字列処理に強い perl でしょ
オブジェクト指向はいらない
2019/10/04(金) 00:41:14.19ID:jIZSSFYe
>>818
JavaScript
2019/10/04(金) 00:43:47.35ID:jIZSSFYe
>>817
それな。何桁で計算を打ち切るだと、どこで誤差が出るか想定しやすいが
doubleとかだと、桁数小さくても誤差が出るから、想定しづらいんだよね。

シェルスクリプトは型が文字列しか無いんだから、
内部の都合である数値型には影響されてほしくないな
822デフォルトの名無しさん
垢版 |
2019/10/04(金) 01:20:38.52ID:5l5U7bxj
>>812
文字コードってのは文字に番号を割り振って取り扱いますよ、という概念。
浮動小数点も一緒で、有限の長さの小数を、小数点の位置を自由にすること
(仮数部と基数部で表現する)ことで表しますよって概念。
各ベンダーが独自に実装したら不便極まりないから文字コードにおけるUnicode(とかUTF-8)と同様IEEE754という標準がある。

浮動小数点演算、と言ったときにそれは一概にIEEE754内部表現を用いた演算とはならない。
https://ja.wikipedia.org/wiki/任意精度演算 の方式の中にはIEEE754でない浮動小数点表現を取り扱ってるものだってあるだろう。
BCDで小数が扱えるライブラリだってそう言うのが多いと思うよ。

IEEE754の仕様の浮動小数点演算で十分な場合は、CPUに便利命令が用意されてて1桁ずつ計算とかしなくても
一発で計算が求まるからIEEE754の浮動小数点は使われている、というだけでしょ。

浮動小数点っていう大きい概念がどういったものかってのと、IEEE754はその概念を実現するための一例でしかないってのを、
Wikipediaなり読み込んで理解したほうが良いと思うよ。
ほんと、文字コードとUTF-8は同じものだ、って言ってるぐらいトンチンカンだから
2019/10/04(金) 01:34:09.77ID:N11Kz3K2
>>813
セブンイレブンとか
2019/10/04(金) 01:44:25.75ID:eSKeLXlH
>>818
1-liner、パイプ、CSV・テキスト処理、クローラーなら、可読性が高い、Ruby !

Perl のような謎のような記号は少ない
2019/10/04(金) 03:06:51.70ID:gCVTKDJQ
>>822
他のが無いというのではなく、実際に使われている多くはというのだよ
実際に使われているのはどれだけあるの?わざわざ使ってるのならそれは意味があるのだから、そうナニか書いてあってすぐにわかるだろうという。例えばbcのように

https://ja.wikipedia.org/wiki/IEEE_754
多くのプロセッサなどの〜 から書いてある通り。Javaがそうでないように書いてあるが、
https://www.ibm.com/developerworks/jp/java/library/j-jtp0114/index.html
同様に、java.math.BigDecimal が提供する任意精度の10進数もアプリケーションで使用されることは少ないため、開発者に無視されているケースがほとんどです
しかし整数を中心としたプログラムに、突如、整数以外の表現が出てくることがあります。たとえば、JDBCではSQLDECIMAL 列の優先変換形式としてBigDecimal が使用されます
なんてある意味それを表しすぎなくらい(まあ、ここは作る側ではなく使う側を言ってるけど)

CPUに便利命令ってFPUに対するのこと?一発で計算が決まるからという簡単だからとかじゃなくて、FPUがあるのはハードで支援用意しないとそもそも浮動小数点は重い演算だからなんだけど

>文字コードとUTF-8は同じものだ、って言ってるぐらい
いや、言ってないけど、なにか思い込みが激しいね。IEEEが利用されないのも普通という考え方もそうだが
2019/10/04(金) 03:13:49.05ID:gCVTKDJQ
>>825
>Javaがそうでないように書いてあるが
ああ、違ったしつれい。IEEE 754 を必須か
使ってないってどれだ?どういう理由でという思いがあって、おおと思ったんだけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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