23/12/02 13:19:48.88 WB1lo/06.net
>>574
現在のCPUは割り算もサポートしているけどとても遅いので
整数の定数での割り算はコンパイラが掛け算と足し算とシフトに変換してコード生成して実行しているもんね
593:デフォルトの名無しさん
23/12/02 13:35:17.97 toHU0qcw.net
コメントで徳丸先生が神格化されてる
「今まさに先生の著書を拝読しており、そのアウトプットとしてこのテーマを選んだ。まさか……夢かな?」という気持ちですw
594:デフォルトの名無しさん
23/12/02 13:58:15.40 GMhCNfLc.net
>>579
割り算を早くする仕組みは、コンパイラがやるにしても、CPU内で工夫するにしてもすごいと思うわ
(昔々、16bitCPUの頃に256bit浮動小数点四則演算書いた懐かしい記憶。分かる人にはわかる、これがどれだけアホなことかw)
595:デフォルトの名無しさん
23/12/02 14:32:42.15 O1+k
596:7+xW.net
597:デフォルトの名無しさん
23/12/02 14:46:51.45 WB1lo/06.net
>>582
定数による割り算をコンパイラが掛け算へ置き換えるのは現在行われている技術
598:デフォルトの名無しさん
23/12/02 18:22:41.31 AqzpHgxf.net
>>577
引数を度数法にして中でラジアンに変換するとその関数から他の関数を呼び出すときに度数法に変換して呼び出された関数内でそれをラジアンに変換することになる
最初からラジアン使えば楽なのになぜわざわざそんなことするの?w
マゾなの?w
599:デフォルトの名無しさん
23/12/02 23:03:48.99 cp7BUpKc.net
>>584
全部自作関数でフォローすればいいだろ
600:デフォルトの名無しさん
23/12/03 01:00:05.04 f0Mitdsc.net
>>585
ラジアン使うほうが簡単じゃん
公式も使えるし
行列使えば一発で済むことをいちいち計算するのは虚しくならんか?
601:デフォルトの名無しさん
23/12/03 04:24:06.37 RcU1frwZ.net
> 標準の三角関数がラジアンを前提としてるだけの話では?
以上の答えが聞きたい
602:デフォルトの名無しさん
23/12/03 09:15:59.56 4qmwHihr.net
>>587
標準の三角関数がラジアンを前提としてるのはなぜかというところから勉強したらそんなアホなことを聞かずに済むんじゃね?
その問の答えも既に書いてあることにすら気づかない知識量だからなw
603:デフォルトの名無しさん
23/12/03 10:06:28.67 g+MbdVEU.net
三角比そのものは初等幾何なんよ
だから何の関数として捉えるのかも初等幾何で扱いやすい量をパラメータにするのよ
これで分かるよね
604:デフォルトの名無しさん
23/12/03 10:57:18.91 Hid8qFt5.net
qiitaとは関係ない話を延々と続ける人たち
qiitaに書けばいいのに
605:デフォルトの名無しさん
23/12/03 11:27:08.26 QTewqrs7.net
これだけ厨房レベルと判る話もめずらしい
606:デフォルトの名無しさん
23/12/03 11:44:29.77 Rt9y+CD2.net
>>590
qiitaと関係ある
どのように関係あるかという質問なら答えない
過去スレを読めとだけ
607:デフォルトの名無しさん
23/12/03 11:47:17.15 Rt9y+CD2.net
過去レス
608:デフォルトの名無しさん
23/12/03 16:22:42.87 49b8YJ5n.net
qiitaのどうでもいい記事貼ってるよりはマシ
609:デフォルトの名無しさん
23/12/03 18:29:17.96 RcU1frwZ.net
Wikipediaのラジアンの記事(URLリンク(ja.wikipedia.org)ラジアン)には「ラジアンを用いる理由として主張される言説」に
> 以下では、しばしば主張される間違った言説について記述する。
として角度を表す単位にラジアンが必ずしも合理的でない説明が書かれてるけどこのスレでラジアン推しの人達はラジアンの使用が合理的であることを説明できるんだろうか?
俺は度数法では正確に表せられる90度のような角度が浮動小数点数では正しく表せられないラジアンはコンピュータで使用するには筋の良い方法ではないと思ってるけど。
610:デフォルトの名無しさん
23/12/03 22:30:59.95 K2dbitVB.net
2π=360
2π=180
2π=256
2π=128
要は何でもいい
ただの比だから
611:デフォルトの名無しさん
23/12/03 23:39:17.71 ATjKgXyi.net
nsinθΩt
612:デフォルトの名無しさん
23/12/04 02:08:38.29 uA82POL4.net
#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793238462643383279
int main(void)
{
double r = PI / 6;
printf("sin(%.16f) = %.16f\n", r, sin(r));
r = asin(0.5);
printf("sin(%.16f) = %.16f\n", r, sin(r));
}
URLリンク(wandbox.org)
sin(0.5235987755982988) = 0.4999999999999999
sin(0.5235987755982989) = 0.5000000000000000
ラジアン派はこーゆーの気になんないの?
613:デフォルトの名無しさん
23/12/04 03:00:07.00 Iryk16EJ.net
>>598
お前プログラミング向いてないよ
614:デフォルトの名無しさん
23/12/04 08:28:10.32 vwW1h00Z.net
ラジアンの欠点を認めると負けとなってしまうので相手を非難する作戦かあ。分かりやすい奴だなあw
615:デフォルトの名無しさん
23/12/04 08:48:45.23 oB7QUebp.net
まず度数法支持者が>>598相当を実装してみてよ
616:デフォルトの名無しさん
23/12/04 09:44:51.59 vGycO/bS.net
>>598
>>599 の言う通り
617:デフォルトの名無しさん
23/12/04 09:55:25.22 85Eugi9n.net
除算誤差なんて折り込み済みで
なるべく割り算は最後にやる様にコード組むだろjk
618:デフォルトの名無しさん
23/12/04 09:56:17.77 vGycO/bS.net
>#define PI 3.141592653589793238462643383279
ちなみに double に↑こんな値を入れても意味無いぞ
URLリンク(ideone.com)
#include <stdio.h>
#include <math.h>
#define M_PI acos(-1.0)
int main(void)
{
double r = M_PI / 6;
printf("sin(%.15f) = %.15f\n", r, sin(r));
r = asin(0.5);
printf("sin(%.15f) = %.15f\n", r, sin(r));
}
619:デフォルトの名無しさん
23/12/04 10:20:50.99 OOT/ELre.net
度数法派がdegsin(30.0)=0.5となる度数法sin関数を(ラジアン変換や既存関数を使わずに)実装して見せないと勝負にならん
620:デフォルトの名無しさん
23/12/04 10:32:28.64 vwW1h00Z.net
>>604
printfの丸めに頼ってる時点でインチキだぞw
URLリンク(ideone.com)
621:デフォルトの名無しさん
23/12/04 11:47:30.49 mv4YeKKc.net
きみたち円周率3.141592653589793238462643383279が無限ってことを知らないんじゃない?
円周率を介して計算するわけだから角度と三角関数のどっちかは必ず浮動小数になって丸めの問題が出る
角度と三角関数のどっちを優先するかっていうだけの話
622:デフォルトの名無しさん
23/12/04 11:55:18.03 TSy6FgHB.net
>円周率を介して計算する
でも度数法派が円周率を介さないでdegsinを実装したら面白い
623:デフォルトの名無しさん
23/12/04 12:14:21.67 vGycO/bS.net
>>606
きみこそ double の精度を判ってないからインチキ
624:デフォルトの名無しさん
23/12/04 12:37:10.40 vwW1h00Z.net
> きみこそ double の精度を判ってない
15桁以上の精度があること理解してない人の存在には驚いたw
625:デフォルトの名無しさん
23/12/04 15:25:21.08 0jFhmyWD.net
「度数派はラジアン全く使わずにやれよ」とか言ってるラジアン派は、完全に別枠のバカ枠だからな
ラジアン派(度数は全く不要)
って明記して書いてね
626:デフォルトの名無しさん
23/12/04 15:59:08.84 rGwCHRoy.net
>>611
白旗宣言には早いぞ
度数派はラジアン全く使わずに「三角関数を実装」しろよ
from ラジアン派(度数は日常生活用語)
627:デフォルトの名無しさん
23/12/04 17:06:35.73 K2CxeKDC.net
度数派は三角関数の結果を丸暗記するから速いのだぞ
628:デフォルトの名無しさん
23/12/04 17:18:48.11 0jFhmyWD.net
>>612
オレはハナホジしながら本論は見てるだけなので
(自分での結論は既にあるが、置いといて意見を見てると)
上で書いたのは、分けて書いてくれたほうが分かりやすいから
629:デフォルトの名無しさん
23/12/04 17:22:28.70 0jFhmyWD.net
>>612
まあ、白旗宣言とかお前が園児並みに頭悪いのはわかったから「from ラジアン派(度数は日常生活用語)」は忘れずに付けといてねw
630:デフォルトの名無しさん
23/12/04 17:47:14.81 UfxvNa8U.net
これが度数派絶滅の瞬間であるw
631:デフォルトの名無しさん
23/12/04 18:40:58.70 0jFhmyWD.net
>>616
思考が貧相で草
632:デフォルトの名無しさん
23/12/04 19:14:34.96 fXwZ4v84.net
>自分での結論は既にあるが、置いといて意見を見てる
ここ笑うところだろ
度数派ボッチの葛藤w
633:デフォルトの名無しさん
23/12/04 20:19:05.97 6mZ+7kq5.net
>>618
ハナホジさんに全力なの草
634:デフォルトの名無しさん
23/12/04 20:23:14.86 jTljZym0.net
>自分での結論は既にあるが、置いといて意見を見てる
自分の意見があるなら言うべき
「自分はアホです」と告白してるようなもの
長文書くあいだ誰も遮らないよ
5行ぐらいで書いてみせろ
こういうことをいうやつは自分の意見がないんだよw
635:デフォルトの名無しさん
23/12/04 20:35:47.93 0jFhmyWD.net
>>620
ブーメラン
636:デフォルトの名無しさん
23/12/04 22:33:26.37 uA82POL4.net
#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793238462643383279L
typedef unsigned Degree;
double degsin(Degree r)
{
double sign = 1.0;
r %= 360 * 60 * 60;
if (r >= 180 * 60 * 60) {
r = 360 * 60 * 60 - r;
sign = -1.0;
}
if (r >= 90 * 60 * 60) {
r = 180 * 60 * 60 - r;
}
return sign * sinl(r * PI / 180 / 60 / 60);
}
Degree degasin(double y)
{
return roundl(180 * 60 * 60 * asinl(y) / PI);
}
int main(void)
{
Degree r = 180 * 60 * 60 / 6;
printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
r = degasin(0.5);
printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
printf("\n");
for (r = 0; r <= 360 * 60 * 60; r += 30 * 60 * 60) {
printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
}
}
637:デフォルトの名無しさん
23/12/04 22:35:06.62 uA82POL4.net
実行結果:
degsin( 30.0000000000000000) = 0.500000000000000000000000000000000000000000000000000000000000
degsin( 30.0000000000000000) = 0.500000000000000000000000000000000000000000000000000000000000
degsin( 0.0000000000000000) = 0.000000000000000000000000000000000000000000000000000000000000
degsin( 30.0000000000000000) = 0.500000000000000000000000000000000000000000000000000000000000
degsin( 60.0000000000000000) = 0.866025403784438596588302061718422919511795043945312500000000
degsin( 90.0000000000000000) = 1.000000000000000000000000000000000000000000000000000000000000
degsin(120.0000000000000000) = 0.866025403784438596588302061718422919511795043945312500000000
degsin(150.0000000000000000) = 0.500000000000000000000000000000000000000000000000000000000000
degsin(180.0000000000000000) = -0.000000000000000000000000000000000000000000000000000000000000
degsin(210.0000000000000000) = -0.500000000000000000000000000000000000000000000000000000000000
degsin(240.0000000000000000) = -0.866025403784438596588302061718422919511795043945312500000000
degsin(270.0000000000000000) = -1.000000000000000000000000000000000000000000000000000000000000
degsin(300.0000000000000000) = -0.866025403784438596588302061718422919511795043945312500000000
degsin(330.0000000000000000) = -0.500000000000000000000000000000000000000000000000000000000000
degsin(360.0000000000000000) = 0.000000000000000000000000000000000000000000000000000000000000
URLリンク(wandbox.org)
ラジアン派は同じことラジアンでやって見せてね。
638:デフォルトの名無しさん
23/12/05 06:42:34.60 Cw6vkTwt.net
なぜそんなアホなことをしなきゃいけないんだw
各種言語のライブラリを作ってるのはたいていラジアン派だがお前のようなアホは一人もいないぞ
639:デフォルトの名無しさん
23/12/05 07:00:46.87 cetDiW3q.net
なんちゃって度数派が裏でラジアンを使っていてニヤニヤが止まらない
640:デフォルトの名無しさん
23/12/05 08:28:17.49 5h79xbZ5.net
> なんちゃって度数派が裏でラジアンを使っていてニヤニヤが止まらない
>>577読んで理解できない馬鹿が↑
641:デフォルトの名無しさん
23/12/05 08:44:23.66 SSjjvqXO.net
>>626
一般の周期関数テクの話とラジアンの普遍性の話を区別できないアホw
642:デフォルトの名無しさん
23/12/05 10:01:28.02 OB7B230q.net
「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい
URLリンク(qiita.com)
煽り気味なタイトルのせいか炎上というほどではないが
はてなの反応が良いな。
URLリンク(b.hatena.ne.jp)
643:デフォルトの名無しさん
23/12/05 10:07:25.33 oOJ/nxDa.net
度数派 小手先の誤差低減の話
ラジアン派 数学的普遍性の話
ハナホジ 話さないけど腹案がある
噛み合わないわけだ
644:デフォルトの名無しさん
23/12/05 10:11:08.19 oMrFNtiB.net
ラジアン派(度数は全く不要)
はおらんな
645:デフォルトの名無しさん
23/12/05 10:22:43.81 uKmQyOPy.net
>>630
確かに度数は全く不要と唱えた意見は無かったな
>>628
decimal型
COBOL
の事を忘れないで
646:デフォルトの名無しさん
23/12/05 10:42:01.92 tOewq7uI.net
なんか知らんが、ゲームで必要なのは精度より速度なんだがなぁ
647:デフォルトの名無しさん
23/12/05 10:57:27.91 Cw6vkTwt.net
まだやってたのか
メジャーなフレームワークや言語で採用されてるのはラジアンということを知らないやつが暴れてるのか?
648:デフォルトの名無しさん
23/12/05 12:10:17.41 OB7B230q.net
> メジャーなフレームワークや言語で採用されてるのはラジアンということを知らないやつが暴れてるのか?
LOGOを始めとするタートルグラフィックが度数法採用してるのも知らない人か。
649:デフォルトの名無しさん
23/12/05 12:31:19.45 3gv/r0yN.net
>>634
度数派は面白いの持って来るw
もしかして日本語プログラミング言語を応援してる?(作者?)
650:デフォルトの名無しさん
23/12/05 12:35:21.44 OB7B230q.net
日本語プログラミング言語はネタ言語以上の認識はないし興味ないよ。
651:デフォルトの名無しさん
23/12/05 12:38:08.97 oMrFNtiB.net
関数の引数がどちらだろうと、それに合わせるだけだからな
652:デフォルトの名無しさん
23/12/05 12:56:48.22 iUWOMqxo.net
うむ一番無意味なのがハナホジって事だ
653:デフォルトの名無しさん
23/12/05 13:08:12.96 oMrFNtiB.net
どっちでもいいってことやろハナホジ
654:デフォルトの名無しさん
23/12/05 13:18:27.41 Rawb+6fk.net
作者か?と質問する前におまえが本名を名乗れよ
655:デフォルトの名無しさん
23/12/05 13:43:01.04 7Ypxlpgu.net
>>634
それ初心者向けのフレームワークだろ
ここにいる人はプロのプログラマだから関係ない
656:デフォルトの名無しさん
23/12/05 13:43:23.68 WZUOKD5G.net
>>598
きっちり500mになるべきなのに0.1pmもの誤差が出るのは気になるといった話か
どれくらいだったら気にならないんだろ
>>622-623にしても計算時に誤差は出てるはずだけどlong doubleで計算してdoubleに
変換することでその誤差を見えないようにしただけだよな
見えなくなれば気にならなくなるのかな
657:デフォルトの名無しさん
23/12/05 14:27:49.94 QJai9ytv.net
>>603
良い例がある
URLリンク(www.youtube.com)
658:デフォルトの名無しさん
23/12/05 16:12:34.92 7Ypxlpgu.net
>>643
どこがいい例なの?
659:デフォルトの名無しさん
23/12/05 17:32:02.80 Apzylo18.net
ハナホジには目から鱗
660:デフォルトの名無しさん
23/12/05 17:50:42.95 oMrFNtiB.net
>>645
結局ラジアン派(度数は全く不要)は
ここら >>584 で吠えてたやつだけで、いつの間にか逃亡しちゃったってことね
661:デフォルトの名無しさん
23/12/05 18:23:28.54 krPRwJ/O.net
逃亡と言うか583がハナホジ
未だに度数派の計算精度テクの話に噛みついているのもハナホジ
数学が好きらしいが級数展開しか論拠がなく幾何とか普遍性で理解してなかったのがハナホジ
>自分での結論は既にあるが、置いといて意見を見てる
らしいから「度数は全く不要」は宗旨替えしたのでは
662:デフォルトの名無しさん
23/12/05 18:48:50.85 uXWwlbvf.net
数学が好きならこっちで目から鱗しては>ハナホジ
The geometric interpretation of sin x = x - x³/3! + x⁵/5! -...
URLリンク(www.youtube.com)
663:デフォルトの名無しさん
23/12/05 19:02:32.34 591nKLmi.net
>>647
見てるだけのハナホジを噛みついてとか参戦しまくってることにしてるアタオカさん
664:デフォルトの名無しさん
23/12/05 19:41:33.42 pgNWE5er.net
>>649
見てるだけの体
665:デフォルトの名無しさん
23/12/05 20:10:47.39 giawSqG2.net
>>647
ラジアン派(度数は全く不要)はコイツで間違いないな
666:デフォルトの名無しさん
23/12/05 20:55:42.83 3bE7C5RB.net
関流のライブラリーを作ろう
667:デフォルトの名無しさん
23/12/05 20:56:32.43 q/KkVzxX.net
(数学で)
ラジアンを用いる理由として主張される言説
URLリンク(ja.wikipedia.org)
このwikipediaの解説は微積分の話に落とし込んでいるけれど
>>648のように幾何学的説明に落とし込む方が視覚的納得感が得やすい
その場合、微積分の話 sin' x = cos x もxを弧長パラメータに取ってあるので図でみて理解できる
668:デフォルトの名無しさん
23/12/05 21:03:53.85 q/KkVzxX.net
URLリンク(en.wikipedia.org)
に多少書いてある様にラジアンは微積分の成立より前からあった
微積分との相性が良いのは上記の通り
669:デフォルトの名無しさん
23/12/05 21:16:41.18 gNoEGx80.net
>>628
この会社のアドベントカレンダーのタイトルひでぇな
「フォロー必須!」「開発者必見!」「永久保存版」「全エンジニアが知っておくべき」etc…
こういう社風なのかね
670:デフォルトの名無しさん
23/12/06 10:44:23.62 oM0gjrfW.net
円周の一周が360度ってのはそう思い込まされてるだけで普遍的なものではない
水の融点が0℃で沸点が100℃ってのと同じ
まったく科学的でも数学的でもない人為的なもの
671:デフォルトの名無しさん
23/12/06 10:46:57.59 0PLwUZLW.net
はてな民の怒った反応してる人は
> 「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい
自分のことを言われた気がしたからかな?
672:デフォルトの名無しさん
23/12/06 10:48:13.10 oM0gjrfW.net
>>655
まるでKENTAだな
673:デフォルトの名無しさん
23/12/06 11:06:38.84 5dbO0JQ2.net
記事には種類ある
(1)「フォロー必須!」「開発者必見!」「永久保存版」「全エンジニアが知っておくべき」etcという記事。多数の読者に向けた記事。専門知識がなくても読みやすい。入門者向け。閲覧数があがりやすい。いいねがつきやすい
(2) 専門的な記事。難解。少数の読者に向けた記事。閲覧数がのびない。いいねがつきにくい
(3)学習したことを書く記事。初心者。マサカリが来やすい
674:デフォルトの名無しさん
23/12/06 11:31:28.15 oM0gjrfW.net
>>657
試せばすぐ判るのに
URLリンク(ideone.com)
#include <stdio.h>
int main(int argc, char **argv)
{
long double f1 = 0.1;
long double f2 = 0.2;
long double f3 = 0.3;
long double f4 = f1 + f2;
printf("%.20Lf\n", f1);
printf("%.20Lf\n", f2);
printf("%.20Lf\n", f3);
printf("%.20Lf\n", f4);
printf("%d\n", f3 == f4);
return 0;
}
675:デフォルトの名無しさん
23/12/06 11:33:45.97 oM0gjrfW.net
こっちの方が良かったなωωω
URLリンク(ideone.com)
#include <stdio.h>
int main(int argc, char **argv)
{
long double f1 = 0.1L;
long double f2 = 0.2L;
long double f3 = 0.3L;
long double f4 = f1 + f2;
printf("%.20Lf\n", f1);
printf("%.20Lf\n", f2);
printf("%.20Lf\n", f3);
printf("%.20Lf\n", f4);
printf("%d\n", f3 == f4);
return 0;
}
676:デフォルトの名無しさん
23/12/06 11:38:33.03 oM0gjrfW.net
変な誤解する人(観えなけれokって人のことね)も居そうなのでこれも貼っておくわωωω
URLリンク(ideone.com)
#include <stdio.h>
int main(int argc, char **argv)
{
long double f1 = 0.1L;
long double f2 = 0.2L;
long double f3 = 0.3L;
long double f4 = f1 + f2;
long double f5 = 0.1L + 0.2L;
long double f6 = 0.3L;
printf("%.30Lf\n", f1);
printf("%.30Lf\n", f2);
printf("%.30Lf\n", f3);
printf("%.30Lf\n", f4);
printf("%d\n", f3 == f4);
printf("%.30Lf\n", f5);
printf("%d\n", f3 == f5);
printf("%.30Lf\n", f6);
printf("%d\n", f3 == f6);
return 0;
}
677:デフォルトの名無しさん
23/12/06 12:17:57.51 0PLwUZLW.net
>>660-662は馬鹿かな?
678:デフォルトの名無しさん
23/12/06 12:20:02.29 0PLwUZLW.net
> 試せばすぐ判るのに
試さんとわからん人ってw
679:デフォルトの名無しさん
23/12/06 12:52:56.79 3GMVsXa4.net
256度でやると360の30度を使いたいときに誤差が出るんじゃね?w
680:デフォルトの名無しさん
23/12/06 12:58:02.11 3feScvAM.net
>>660
君はC言語しかできんの?
681:デフォルトの名無しさん
23/12/06 14:43:54.71 JsHlZ4fk.net
>>665
そんなことはどうでもいい頃のこと
ずっと上から読まないと
682:デフォルトの名無しさん
23/12/06 16:30:05.85 RizWoKoD.net
昔のシューティングゲームなんか、方向は8方向しか無かったんだから斜めに進みたいならX,Y座標に加算する各ベクトルを0.7倍してやれば済むだけの話だったなぁ
でも敵の弾幕は16方向とかズルかった
まあ、パズルみたいに格子を進むゲームなら不用な処理なんだが
683:デフォルトの名無しさん
23/12/06 19:36:28.64 Y9yXTF6q.net
>>656
だからケースバイケースだろ
「今朝の気温は285K」とか言われても解らんがな
684:デフォルトの名無しさん
23/12/06 23:02:30.60 8JqK4Yrt.net
>>667
効いてて草
685:デフォルトの名無しさん
23/12/07 14:29:02.73 wNl2TimY.net
2π=180が1byteで収まって合理的
686:デフォルトの名無しさん
23/12/07 14:58:43.59 fQltjmnX.net
>>671
Cとかアセンブラで書いてる時代には、2π=256にすると、何周回っても補正がいらないんだよね、まあ、いまどきの言語だとエラーになるけどさ
687:デフォルトの名無しさん
23/12/07 16:29:19.68 78AJyp32.net
>>672
そういうとこがわかるかだよね
フラグは立つんじゃなかったっけ
エラー無視と同じようにフラグ無視
(まあどうせ無視だからフラグどうでもいいけど)
688:デフォルトの名無しさん
23/12/07 16:33:08.96 oY2pVPcB.net
もしかして剰余知らない人?w
689:デフォルトの名無しさん
23/12/07 17:42:06.78 ahX/pqE0.net
割算剰余算は現在のCPUでも非常に遅いため
定数で割算剰余算を行う場合は現在でも掛算加算シフトANDなどにコンパイラが置き換えています
特に定数2^nの剰余は&(2^n-1)で済むため高速です
もちろん256の場合は8bit演算をサポートしていればそれすら必要な�
690:ュなります
691:デフォルトの名無しさん
23/12/07 20:27:03.34 oY2pVPcB.net
>>675
そこまでしないとまともに動くゲームが作れない技術の低さかわいそうw
普通にdoubleでラジアン使ったゲームがグリグリ動くのに
692:デフォルトの名無しさん
23/12/07 21:05:51.14 fQltjmnX.net
>>676
Cとかアセンブラで書いてた時代の話だから
老人の話に若者が無理に加わろうとするなよw
693:デフォルトの名無しさん
23/12/07 21:58:03.58 wOldY3VJ.net
0.1+0.2を0.3ピッタリにしたいという要望に対しDecimal型使えって話と
90度や30度等正確に扱いたいという要望に対し角度型用意しろって話は
大して違うものではないんだけどラジアン派はカタクナだね。
与えられたものを何の疑問も持たずに使ってるブタ野郎だね。
694:デフォルトの名無しさん
23/12/07 22:10:57.92 ahX/pqE0.net
>>676
>>677
いいえ
最新のコンパイラも定数による整数割り算を掛け算命令へとコンパイルします
これは最新のCPUであっても整数掛け算命令は1サイクルで済むのに対して整数割り算命令は数十サイクルかかるためです
この手の話をするならば常識的な基礎知識です
695:デフォルトの名無しさん
23/12/07 22:17:13.85 wOldY3VJ.net
定数による整数除算がパフォーマンスに大きく影響するプログラムもそうはないと思うのでいまどきのコンパイラが定数除算を定数乗算+シフトに置き換える最適化をしてくれるのも大して必要があってのことではなくて開発者の趣味的なもんだと思うよ。
696:デフォルトの名無しさん
23/12/07 22:52:22.96 78AJyp32.net
>>676
まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
697:デフォルトの名無しさん
23/12/07 23:07:34.68 OOqJ6lun.net
壊れたレコードみたいなスレだねこのすれ
698:デフォルトの名無しさん
23/12/08 00:29:46.04 1AT0BZX4.net
>>678
> 90度や30度等正確に扱いたいという要望に対し角度型用意しろ
と思う人がそういうライブラリをDecimal型を使って作ればいいんじゃないかな
30.1度とかが「ピッタリ」になるように
699:デフォルトの名無しさん
23/12/08 09:50:47.34 k3Bpg+TD.net
radian使わずにdegreeで全部済ますのは中学生までだよな。
中学生までならdegreeはほぼ整数しか出て来ないしω
700:デフォルトの名無しさん
23/12/08 10:40:19.77 LYFHy36X.net
12月1日にアドベントカレンダーが始まって記事が増えたのにラジアンのことしか話さなくなったな
701:デフォルトの名無しさん
23/12/08 10:43:43.53 vnCtmrWX.net
>>682
壊れたレコードって何ですか?(若者しぐさ
702:デフォルトの名無しさん
23/12/08 12:42:14.73 2niISWES.net
>>677
今時そんな話を突然始めるからファミコンかよって突っ込まれたんだろw
無理に加わろうとするからそうやって顔真っ赤になるんだぞw
703:デフォルトの名無しさん
23/12/08 13:38:51.95 corZECtM.net
>>687
だから、昔の話しの方にわざわざ混ざって来なくていいってわかんねーのかよアホやなw
>まだ条件をまともに把握できない貧相な脳ミソかわいそうw
>ついでに日本語もまともに理解できないと
704:デフォルトの名無しさん
23/12/09 08:18:49.84 OVj/qE5g.net
逆だぞw
お前が混ざってきた上に昔の話という条件も書けないアホだから支離滅裂で小馬鹿にされてるんだぞw
705:デフォルトの名無しさん
23/12/09 08:21:54.40 OVj/qE5g.net
>>561
どう見ても昔話じゃなく今の話なんだよなあw
706:デフォルトの名無しさん
23/12/09 14:00:24.54 /QienOD5.net
>>689
だから、昔の話しの方にわざわざ混ざって来なくていいってわかんねーのかよアホやなw
昔の話しかどうかもわからない貧相な脳ミソ
まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
707:デフォルトの名無しさん
23/12/09 15:12:02.71 DXmw58tM.net
>>687
ブタがなんか言ってて笑えるw
708:デフォルトの名無しさん
23/12/09 15:40:18.97 4WPSHv3H.net
チープなCPU積んでる組み込み系なら現役の話やね
709:デフォルトの名無しさん
23/12/09 15:44:47.43 knfa6RUO.net
このやり取り見てて怖いのは
これどっちもド素人ってことな
アマチュアさんの論点は面白いわ
710:デフォルトの名無しさん
23/12/09 16:06:57.26 JLekGzLF.net
>>686
壊れたレイディオだよな
711:デフォルトの名無しさん
23/12/09 16:21:29.73 9/8Tko/o.net
>>693
最新のCPUでも整数でも除算は遅くて数十サイクルかかる
乗算は1サイクルで済む
だから最新のコンパイラでも定数による除算は乗算やシフトに変換してアセンブリコードを生成している
712:デフォルトの名無しさん
23/12/09 19:31:40.40 OVj/qE5g.net
反論できなくなって話そらそうと必死なのに同じことしか言えないのは流石にダサいなw
そんなだからいまだにラディアン使えないんだよ
713:デフォルトの名無しさん
23/12/09 19:45:40.37 DXmw58tM.net
URLリンク(ja.wikipedia.org)
> 『ラディアン』(原題:Radiant)は、トニー・ヴァレントによるフランスの
> 漫画作品(バンド・デシネ)。本国では2013年より単行本が発売されており、
> 日本では2015年より邦訳版が刊行されている。
714:デフォルトの名無しさん
23/12/09 19:54:16.97 DXmw58tM.net
浮動小数点数使って弧度法で角度を表すことに何の疑問も持たない人は
#include <iostream>
#include <numbers>
#include <cmath>
int main()
{
for (int i = 0; i <= 8; i++) {
double s = sin(i / 4.0 * std::numbers::pi);
double c = cos(i / 4.0 * std::numbers::pi);
printf("sin(%d/4π) = %19.16f cos(%d/4π) = %19.16f\n", i, s, i, c);
}
}
sin(0/4π) = 0.0000000000000000 cos(0/4π) = 1.0000000000000000
sin(1/4π) = 0.7071067811865475 cos(1/4π) = 0.7071067811865476
sin(2/4π) = 1.0000000000000000 cos(2/4π) = 0.0000000000000001
sin(3/4π) = 0.7071067811865476 cos(3/4π) = -0.7071067811865475
sin(4/4π) = 0.0000000000000001 cos(4/4π) = -1.0000000000000000
sin(5/4π) = -0.7071067811865475 cos(5/4π) = -0.7071067811865477
sin(6/4π) = -1.0000000000000000 cos(6/4π) = -0.0000000000000002
sin(7/4π) = -0.7071067811865477 cos(7/4π) = 0.7071067811865474
sin(8/4π) = -0.0000000000000002 cos(8/4π) = 1.0000000000000000
URLリンク(wandbox.org)
sin(1/4π)とsin(3/4π)の結果が一致しないことやsin(8/4π)が0.0ちょうどに
ならないことは気にしないんだろうか?
715:デフォルトの名無しさん
23/12/09 19:58:58.90 DXmw58tM.net
> 各種言語のライブラリを作ってるのはたいていラジアン派だがお前のようなアホは一人もいないぞ
このひとBoostとか.NET Frameworkとか知らないんだろうな。
#include <iostream>
#include <boost/math/special_functions/sin_pi.hpp>
#include <boost/math/special_functions/cos_pi.hpp>
int main()
{
for (int i = 0; i <= 8; i++) {
double s = boost::math::sin_pi(i / 4.0);
double c = boost::math::cos_pi(i / 4.0);
printf("sin(%d/4π) = %19.16f cos(%d/4π) = %19.16f\n", i, s, i, c);
}
}
sin(0/4π) = 0.0000000000000000 cos(0/4π) = 1.0000000000000000
sin(1/4π) = 0.7071067811865476 cos(1/4π) = 0.7071067811865476
sin(2/4π) = 1.0000000000000000 cos(2/4π) = 0.0000000000000000
sin(3/4π) = 0.7071067811865476 cos(3/4π) = -0.7071067811865476
sin(4/4π) = -0.0000000000000000 cos(4/4π) = -1.0000000000000000
sin(5/4π) = -0.7071067811865476 cos(5/4π) = -0.7071067811865476
sin(6/4π) = -1.0000000000000000 cos(6/4π) = 0.0000000000000000
sin(7/4π) = -0.7071067811865476 cos(7/4π) = 0.7071067811865476
sin(8/4π) = 0.0000000000000000 cos(8/4π) = 1.0000000000000000
URLリンク(wandbox.org)
716:デフォルトの名無しさん
23/12/09 23:20:50.00 KlOFsEHe.net
>>699
こういうのだろ >>642
気にしてもしかたがない
717:デフォルトの名無しさん
23/12/09 23:25:33.94 +PH/QYJf.net
> コンピュータの計算では「0.1+0.2」は「0.3」になりません。
と断言しちゃう奴も
> 各種言語のライブラリを作ってるのはたいていラジアン派だがお前のようなアホは一人もいないぞ
と言い切っちゃう奴も己の狭い知識が世の中の全てと勘違いしてる点で同類だよなあ。
718:デフォルトの名無しさん
23/12/10 00:04:11.75 zoYXXcKe.net
>>700
こうなった
#include <iostream>
#include <boost/math/special_functions/sin_pi.hpp>
#include <boost/math/special_functions/cos_pi.hpp>
int main()
{
for (int i = 0; i <= 12; i++) {
double s = boost::math::sin_pi(i / 6.0);
double c = boost::math::cos_pi(i / 6.0);
printf("sin(%d/6π) = %19.16f cos(%d/6π) = %19.16f\n", i, s, i, c);
}
}
sin(0/6π) = 0.0000000000000000 cos(0/6π) = 1.0000000000000000
sin(1/6π) = 0.5000000000000000 cos(1/6π) = 0.8660254037844387
sin(2/6π) = 0.8660254037844386 cos(2/6π) = 0.5000000000000000
sin(3/6π) = 1.0000000000000000 cos(3/6π) = 0.0000000000000000
sin(4/6π) = 0.8660254037844387 cos(4/6π) = -0.4999999999999999
sin(5/6π) = 0.4999999999999999 cos(5/6π) = -0.8660254037844387
sin(6/6π) = -0.0000000000000000 cos(6/6π) = -1.0000000000000000
sin(7/6π) = -0.5000000000000002 cos(7/6π) = -0.8660254037844385
sin(8/6π) = -0.8660254037844385 cos(8/6π) = -0.5000000000000002
sin(9/6π) = -1.0000000000000000 cos(9/6π) = 0.0000000000000000
sin(10/6π) = -0.8660254037844385 cos(10/6π) = 0.5000000000000002
sin(11/6π) = -0.5000000000000002 cos(11/6π) = 0.8660254037844385
sin(12/6π) = 0.0000000000000000 cos(12/6π) = 1.0000000000000000
719:デフォルトの名無しさん
23/12/10 01:52:17.90 K18bkLWA.net
1/6はdoubleで正確に表せられないからそれやりたかったら分数型か度数法採用した三角関数使えって説明されないとわからん人かな
720:702
23/12/10 02:04:39.98 zoYXXcKe.net
>>704
分かってるよ
元の話 >>622-624に対応するのは1/6だからやってみただけ
721:デフォルトの名無しさん
23/12/10 03:29:27.52 1SmlZO1k.net
> 分かってるよ
> やってみただけ
お前顔真っ赤だなw
722:デフォルトの名無しさん
23/12/10 04:18:03.31 IOBSQ4pi.net
>>703
sin((1/6)π)とsin((5/6)π)が一致しないことを気にしてもしかたないと
Boostをつくってる人たちも考えていたってことだろうな
723:デフォルトの名無しさん
23/12/10 09:33:45.43 sajOyEd/.net
>>702
> コンピュータの計算では「0.1+0.2」は「0.3」になりません。
どこのレスの引用だよ
まだ条件をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
724:デフォルトの名無しさん
23/12/10 12:08:34.40 1MxEINjf.net
>>699
>浮動小数点数使って
>値が一致しない
弧度法関係ないから
そこを判ってないから君は馬鹿にされてるんだよ
725:デフォルトの名無しさん
23/12/10 12:41:43.11 gdYIu2m3.net
> どこのレスの引用だよ
>
> まだ条件をまともに把握できない貧相な脳ミソかわいそうw
> ついでに日本語もまともに理解できないと
こいつここがQiitaスレって前提すら理解してなさそうw
>>708
>>628のリンク先見れやアホ
726:デフォルトの名無しさん
23/12/10 12:51:11.53 yvfeQZ7U.net
>>709
> > 浮動小数点数使って弧度法で角度を表すことに何の疑問も持たない人は
> > sin(1/4π)とsin(3/4π)の結果が一致しないことやsin(8/4π)が0.0ちょうどに
ならないことは気にしないんだろうか
> 弧度法関係ないから
浮動小数点数で1/4π等が正確に表せられない弧度法の問題なんだがお前驚くほどの馬鹿だな。
727:デフォルトの名無しさん
23/12/10 13:10:58.57 1MxEINjf.net
710 は相手にされなくなった複オジか
728:デフォルトの名無しさん
23/12/10 13:22:10.29 GDhODx6c.net
ID:1MxEINjf は生きてて申し訳ないと思わないのかな
729:デフォルトの名無しさん
23/12/10 14:17:38.67 1MxEINjf.net
複オジは否定しないんだな
730:デフォルトの名無しさん
23/12/10 15:28:56.92 cr9NbQ30.net
言われたことを認めると負けたことになってしまうので
相手をレッテル貼りしてなんか言い返したつもりになってんのねw
731:デフォルトの名無しさん
23/12/10 16:06:29.55 sajOyEd/.net
>>710
やっぱアホなんやな
園児向けに少し丁寧に書いてやるよw
まだ条件(省略)をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
732:デフォルトの名無しさん
23/12/10 20:19:31.37 MqU2QoF1.net
256度だと誤差が出ないと思ってる病気の人はどこの病院にいるの?w
733:デフォルトの名無しさん
23/12/10 21:03:13.50 sajOyEd/.net
まだ昔の話しかどうかもわからない貧相な脳ミソ
まだ条件(省略)をまともに把握できない貧相な脳ミソかわいそうw
ついでに日本語もまともに理解できないと
734:デフォルトの名無しさん
23/12/10 23:48:37.12 otdxVCuX.net
ラジアン派の発狂ぶりが見ていて楽しいなw
735:デフォルトの名無しさん
23/12/11 00:43:41.12 dv5wJdGz.net
>>717
> 256度だと誤差が出ないと思ってる病気の人
誰かそんなこと言ってる? レス番示してヨロシクね
736:デフォルトの名無しさん
23/12/11 20:12:45.71 wJWh5kBz.net
AtCoder Beginner Contest 332 A Online Shopping を Elixir と C で解いてみた
URLリンク(qiita.com)
准教授 inttypes.h 知らないとかマジか。
64bitでコンパイル、実行
URLリンク(godbolt.org)
32bitでコンパイル、実行
URLリンク(godbolt.org)
737:デフォルトの名無しさん
23/12/11 22:35:20.73 qiG2trvi.net
度数君まだ発狂してて草
738:デフォルトの名無しさん
23/12/12 08:35:00.63 WTw42ze4.net
説得力あるコードのひとつも提示できなかったラジアン派まだ生きてたw
739:デフォルトの名無しさん
23/12/12 12:34:25.83 71TRaAjF.net
説得力のあるコードまだみつからなくて困ってたのかよw
どの言語のライブラリもラジアンなのにそれを知らないって無能すぎない?w
740:デフォルトの名無しさん
23/12/12 15:54:16.85 gehgB0Io.net
>>721
URLリンク(atcoder.jp)
Elixir遅すぎ
Cだと1msなのに制限時間ギリギリじゃねーの
そりゃ流行らんわな
741:デフォルトの名無しさん
23/12/12 19:08:14.85 0W1gKG9X.net
> ポイントとしては,i番目の行の値Qi,Piを読み込んだら,即座に積和を行ない,入力した値を�
742:z列として記憶することはしないという点です.これにより,計算時間を1ミリ秒以下に,メモリ消費量もごく最小限にすることができます. なんか誇らしげに説明してるけどscanf()で値読み込むのに掛かるコストに比べたら配列に入れようが即座に計算しようが屁みたいな違いしかないぞ。 > Streamを使って積和を累積する方法は,Stream.transform関数にs1関数を与え,得られるリストの最後の要素をEnum.at(-1)として取り出すことで実現します. > 結果として,実行時間を800ミリ秒以下に,メモリ消費を160MB前後に抑えることができました. https://atcoder.jp/contests/abc332/submissions/48423119 ↑見るとどのテストケースでも780msに近い処理時間になってるし積和のコストってこっちも問題になってはいないよな。起動時に馬鹿みたいに待たされてるだけだろこれ。 なんかこの人計算コストについての理解がすげえ怪しい気がするわ。これで学生さんに何教えてんだか。
743:デフォルトの名無しさん
23/12/12 23:20:02.29 d4PkBWYa.net
>>726
で、全てについて上を行くお前の書いた記事はどれ?
744:デフォルトの名無しさん
23/12/13 00:52:07.07 VTpIZ5BK.net
「1+1=3」という人を面白がってたら「で、全てについて上を行くお前の書いた記事はどれ?」という馬鹿が絡んできたでござる の巻
745:デフォルトの名無しさん
23/12/13 01:02:23.97 pLi0oPHq.net
Qiitaユーザー約2000人に聞いた「勤め先のサーバ・クラウド」
調査は9月29日から10月31日にかけてネット上で実施。
URLリンク(www.itmedia.co.jp)
746:デフォルトの名無しさん
23/12/13 01:03:20.41 VTpIZ5BK.net
URLリンク(atcoder.jp)
> 問題文
> 高橋君はそこで N 種類の商品を購入することにしました。
> 1 以上 N 以下の整数 i について、i 種類目の商品は 1 個 P i円で、高橋君はQ i個購入します。
> 制約
> 1≤N≤100
100以下の制約で遅いとかないわアホかw
747:デフォルトの名無しさん
23/12/13 01:32:17.09 mZ0KNVix.net
またIPAの資料以下の要件定義入門記事が来たな
748:デフォルトの名無しさん
23/12/13 08:26:07.94 NpZf2J/f.net
Nが100以下の制約で800ms
N+Mが2000以下の制約で1500ms
Cはどちらも1ms
制約が緩くなると時間も順調に伸びてるから起動時間が長いだけということでもなく全体的に遅いんだろう
並行処理が得意で対障害性が高いのがElixirの売りらしいが
速度がここまで出ないんじゃ使いみちは限られそうだな
起動時間除いて単純計算で1900の処理に700msかかるとか控えめに言ってゴミでしかない
インタプリタかな?
(そもそも新しい言語で並行処理や対障害性が不得意なものの方が少ない気がするし対障害って多分Optional型やEither型の話でしかないよなあ)
749:デフォルトの名無しさん
23/12/13 10:12:45.45 ZLCSU55O.net
今度は初心者向けの設問にしかドヤれないバカが湧いてんのか
750:デフォルトの名無しさん
23/12/13 10:15:49.81 cuotF3WF.net
初心者にElixir勧めるやつはおらんやろ
751:デフォルトの名無しさん
23/12/13 10:31:28.43 Hx44XXHL.net
裸の王様に「Elixir全然速くないねw」みたいなコメントする正直な子供おらんのかな
752:デフォルトの名無しさん
23/12/13 15:41:58.90 nkVMGJ7R.net
URLリンク(atcoder.jp)
Haskellだと1〜2ms
Elixirは速度もありえないくらい遅くてコードも長くてインデントも深くて何一ついいところなしにしか見えんがこれって言語のせいなのかね
753:デフォルトの名無しさん
23/12/13 18:35:43.24 eFqokkdq.net
スクラッチのようなブロック並べるのもあるし、そこに拘る必要もないやろ
754:デフォルトの名無しさん
23/12/13 19:39:13.03 p0B6DwAr.net
QiitaでElixir推してる人達ってElixirは並列処理が簡単にできて
速いという主張を当たり前のように繰り返してるけど、他の言語と
比べてどうだこんなに速いぞてのじゃなくて、クソみたいな
アルゴリズムをElixirでシングルコアとマルチコアで比べて
マルチコアでこんなに速くなった!Elixir最高ーー!!(ビクンビクン
みたいな記事ばっか見かける希ガス。
まずアルゴリズムちゃんとしろよと。
他の言語と実際に比べて優位を語れと。
755:デフォルトの名無しさん
23/12/13 21:48:45.90 NpZf2J/f.net
>>738
URLリンク(qiita.com)
CとJavaと比較してるぞ
どちらもasync/awaitが無いからめんどくさいがそれって結局Elixirの優位性というよりCとJavaが遅れてるってだけの話なんだよなあ
756:デフォルトの名無しさん
23/12/13 22:22:14.64 X0GNdEDV.net
コメント欄総ツッコミだなあw
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」
URLリンク(qiita.com)
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」
URLリンク(qiita.com)
Elixir推しの人がC引き合いに出してるけどよく分かってないから比較にすらなってない感じ。
757:デフォルトの名無しさん
23/12/14 01:21:26.48 X6Ol8Z5z.net
Elixir は、10万もの小プロセスを起動できる。
メモリが大きいと、5千万小プロセスも
それに関数型で、オブジェクトの状態が変わらないから、安全性・保守性が高い。
つまり更新できず、新規作成・廃棄しかできない。
オブジェクトは更新できないから再利用できる
片方向リストなので、先頭にしか追加できない。
末尾追加できないので、先頭に追加していって、最後に逆転させるとか
スクエニは、Elixirを使っているらしい
758:デフォルトの名無しさん
23/12/14 02:40:45.61 aBZ2Af/o.net
>>741
GoやRustでも10万可能だな
759:デフォルトの名無しさん
23/12/14 04:11:29.57 +GVKXU6O.net
いくらプロセス起動できようが遅けりゃ意味無し
760:デフォルトの名無しさん
23/12/14 04:52:43.66 ehr7WTWM.net
Rustの非同期タスクはスタックレスコルーチンなので軽くて速くていいね
761:デフォルトの名無しさん
23/12/14 07:29:56.59 y0v8WBQQ.net
10万のプロセス作ったとしてもCPUが10万無いなら結局同時処理できないわけで意味ないんじゃね
あとプロセス作る負荷と切り替えの負荷は結構重い
PCで使う限り大量のプロセス作っても速くなるどころか逆に遅くなると思うんだがほんとに速さが売りになるのか?
762:デフォルトの名無しさん
23/12/14 07:37:03.68 y0v8WBQQ.net
スクエニの使ってるElixirって言語なのか?
ゲーム配信インフラとゲーム内アイテムの話しか出てこんぞ
763:デフォルトの名無しさん
23/12/14 08:51:47.14 tCCx741E.net
Elixir推しの人達がElixirの強みをアピールする記事書かないのホント不思議。
764:デフォルトの名無しさん
23/12/14 10:00:34.56 vwLqM/bT.net
URLリンク(www.infoq.com)
Discordは一部Elixirで書かれてるがユーザーが増えて同時接続数の限界が見えたためにRustで書き直したそうな
一番得意な分野で他の言語に席を譲るとかやっぱり使いみちないじゃん
最初から全部Rustを使えばこんなことにならなかったのに
765:デフォルトの名無しさん
23/12/14 10:17:33.82 riWO4PsS.net
Elixir推しの人曰くElixirはGPU使った並列処理もカンタンに書けるとのことだけど
実際そうなら個人が所有できるパソコンでも有意な使い方ありそうだけどね、
そういう記事が見当たらない辺りでまあそういうことなんだろうなあ。
766:デフォルトの名無しさん
23/12/14 10:24:05.23 ehr7WTWM.net
>>745
プロセスやスレッドを10万個作るわけではないよ
一つのプロセスの中にスレッドをそのCPUコアスレッド数分(例えば8個)だけ作って使う
10万個の軽い非同期タスクはそのマルチスレッド上で擬似的にスケジューリングされる
もし数値計算ならばそのような非同期タスクを使うのは無意味でマルチスレッドをそのまま用いる
一方でネット通信のように非同期でCPUの待ち時間が多いものは軽い非同期タスクを何万も同時に動かし何万もの通信クライアントを同時に捌くことができる
767:デフォルトの名無しさん
23/12/14 10:39:56.58 ztw3BXrG.net
通信デバイスは限られてるからそれは無い
768:デフォルトの名無しさん
23/12/14 10:40:17.07 y0v8WBQQ.net
>>750
なんでプロセスじゃなくスレッドを8個作るんだよw
769:デフォルトの名無しさん
23/12/14 11:15:16.07 f6g+GYKj.net
プロセス間通信にコストがかかるからでは?
知らんけど
770:デフォルトの名無しさん
23/12/14 11:18:51.20 ztw3BXrG.net
何万スレッド起こそうが、通信デバイスが一つなら
一つのスレッド以外後はひたすら待ってるだけだしなぁ
771:デフォルトの名無しさん
23/12/14 11:19:33.74 vwLqM/bT.net
>>726
URLリンク(atcoder.jp)
AWKで2msだから准教授が持てる力の全てを発揮して本気で作ったElixirプログラムはインタプリタより遅いことになるな
772:デフォルトの名無しさん
23/12/14 11:19:57.78 ztw3BXrG.net
単なる待ち行列の捌き方の違いでしか無いんだよなぁ
773:デフォルトの名無しさん
23/12/14 11:27:56.68 ehr7WTWM.net
>>751
現在の何万接続も同時に捌く最新型の各種サーバーはそのように作られている
ネットワークデバイスやその通信データに対してそれ以外の方法で作るとCPUは暇で遊んでしまうため
>>752
マルチプロセスにするメリットはないため1つのプロセス内でマルチスレッドを使う
CPUコアスレッド数よりも多くのスレッドを動かすのは無駄にスレッドスイッチングが発生し不利となるため限定した数のスレッドを動かしている
そのCPUコアスレッド数分のマルチスレッド上で数万個の軽い非同期タスクを動かすことでCPUの待ち時間を可能な限り無くしている
774:デフォルトの名無しさん
23/12/14 13:11:25.11 UDs9NMEG.net
>>749
Elixirが本当にGPU処理をカンタンに書けるなら、もっと有名だったろう
一時期openCL使ってたけど、まず使えるようにするまでも面倒だったな
(今は簡単なのかもだけど)
使えるようにしてからは、ヤッホ~イだったw
775:デフォルトの名無しさん
23/12/14 13:17:27.28 4gudT7IY.net
>>757
それだと10万のプロセスが扱える利点なくね?w
776:デフォルトの名無しさん
23/12/14 13:32:55.03 4sl/SGKe.net
>>759
プロセスではなくマルチスレッド上に何万もの非同期タスクを動かしてるんだよ
Rustならスタックレスなコルーチンで実現されていてGoならスタック付きgoroutine
777:デフォルトの名無しさん
23/12/14 13:43:48.30 qE3AElg+.net
ていうか現にElixirだと捌ききれなくてRustで書き直したという事例がそこにあるわけだがいつまで机上の空論を支えにしてるんだ
778:デフォルトの名無しさん
23/12/14 13:45:00.14 e7pV4XH4.net
>>760
十万のプロセス使わないなら使える利点なくね?
という話だぞ?
779:デフォルトの名無しさん
23/12/14 14:03:29.37 lRrQctoZ.net
>>761
>>748の事かな?
747はElixirのMapSet、List、OrdsetをFFIで外出ししたと言う話だね
discordのgithubでピン留めされてるのはElixirプロジェクト(とJS/TS)
discord自前のRustプロジェクトは1年以上コミットが無いですよ
780:デフォルトの名無しさん
23/12/14 14:41:05.58 2Ni4Gd+R.net
>>759
プロセスはスイッチングコストが非常に大きいため、
プロセスを動かせば動かすほど損をするという基本常識を理解しよう。
そのためメモリを共有しスイッチングコストが軽減されたスレッドが代わりにある。
そのスレッドもスイッチングコストが大きいため、
1スレッド1クライアント接続だと何万もクライアントが同時接続したら動かない。
よってスイッチングコストが極めて軽量で非同期に動くマイクロタスクを用いるのが主流となっている。
781:デフォルトの名無しさん
23/12/14 14:55:20.21 e7pV4XH4.net
>>764
そこまでわかってるならなんで10万プロセス使えるってホルホルしたの?w
782:デフォルトの名無しさん
23/12/14 14:58:52.36 2Ni4Gd+R.net
俺じゃないので知らん。
そんなバカな主張してるやつもいないだろ?
783:デフォルトの名無しさん
23/12/14 15:05:17.25 +fN+qS2C.net
10万のプロセスと書き込んでいるアホは>>745と>>759
784:デフォルトの名無しさん
23/12/14 15:08:18.14 W87KUsm7.net
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜「コンピュータと地球温暖化は
決して無縁ではない」(2022年版)
URLリンク(qiita.com)
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜機械学習の消費電力あたり性能の改善に向けて
URLリンク(qiita.com)
Elixirを使ってコンピュータの電力消費を抑える目論見みたいだけども実行効率で他の言語に劣るElixirを使う意図がわからん。
都合が良い話しかしてないようにも見える。
785:デフォルトの名無しさん
23/12/14 16:07:24.88 nB7JFyYo.net
ああなるほど
>>741を無かったことにしたくて頑張ってスレを流してたのかw
786:デフォルトの名無しさん
23/12/14 16:13:09.80 xxh+LIL0.net
>>759
>>765
10万個動くのは
Goならgoroutine
Rustならtask
Elixirならlightweight process
OSのプロセスの話なんて誰もしていないことに気づかなきゃ
そのへんの今どきの言語どれかをかじったことがあるならすぐわかるでしょ
787:デフォルトの名無しさん
23/12/14 16:42:29.46 ztw3BXrG.net
だから、ネット1回線あたりにそんなキャパは無いからw
788:デフォルトの名無しさん
23/12/14 17:34:03.34 XrPlFWPd.net
>>770
プロセスはOSが作るんだぞ?w
そこから説明がいるんかいw
実行ファイルを実行した時のプロセスと同じものだぞ?w
789:デフォルトの名無しさん
23/12/14 17:34:30.30 H9fFRRYE.net
>>754
非同期プログラミングどころかネットワークプログラミングすらしたことのない子供が暴れてるのか?
まずネットワーク通信はOSにより抽象化されているためプログラムで通信デバイスを直接操作したり待つことはない
次に古典的なブロッキング同期でマルチスレッドを使う単純な方法でもlisten/accept専用スレッドはacceptするとすぐに別スレッドに任せてその別スレッドが通信を行なう
プログラミングをしたことのない子供だから知らないのか?
790:デフォルトの名無しさん
23/12/14 17:36:36.25 XrPlFWPd.net
>>76
791:8 CPUは使いまくるし実行速度は遅いしで絶対電力効率悪いわな
792:デフォルトの名無しさん
23/12/14 17:39:47.54 y0v8WBQQ.net
>>773
今度はスレッドの数も必要ないと言い出したがそれだとプロセスに続いてますますElixirの利点なくならね?w
793:デフォルトの名無しさん
23/12/14 17:42:38.14 89ikcykU.net
>>772
みんなが話しているのは一つのOSプロセス内の話ですよ
一つのOSプロセス内で複数のOSスレッドが動くのです
一つのOSプロセス内で複数の軽量プロセス/軽量タスク/軽量コルーチンが動くのです
だから誰もOSプロセスの話なんてしていません
ここまで読んだところ発端の>>741の人も軽量プロセスを意味する「小プロセス」と書いていますね
794:デフォルトの名無しさん
23/12/14 17:55:03.81 5ci7xWno.net
>>752
常識だろ
同じメモリ空間を使うためスレッドを使い、CPUを限界まで使いこなせるようにするためCPUコアの分だけスレッドを起動する
GoもRustのtokioもそれが指定しない時のデフォルト挙動となっている
795:デフォルトの名無しさん
23/12/14 18:07:20.47 ztw3BXrG.net
>>773
馬鹿はハードの事情も知らずにサービス開始と共にキャパオーバーで障害発生させるのかw
796:デフォルトの名無しさん
23/12/14 18:27:59.46 y0v8WBQQ.net
>>776
えっと、OSプロセスって何?w
プロセスを作るにはOSに依頼しないといけないわけで実行ファイルを実行しようがAPIを呼ぼうがファイルをロードしないだけで同じだぞ?w
797:デフォルトの名無しさん
23/12/14 18:30:01.63 y0v8WBQQ.net
>>777
プロセス10万作る君に10万作ったプロセスはどうすんのって聞いたというところから説明が必要な感じ?w
なんかわかってないやつと話すといちいち話を戻されてめんどうだなー
798:デフォルトの名無しさん
23/12/14 18:32:21.00 XrPlFWPd.net
どれだけ話をごまかそうとElixirが遅いことに変わりはないんだな
計測すればわかること
799:デフォルトの名無しさん
23/12/14 18:32:58.40 zrmcyW9d.net
>>779
各モダン言語の軽量タスク相当はプロセス内で大量に生成するため新たにプロセスを作る必要はない
無知をさらしていないでまずは基礎知識を身につけてはどうか
800:デフォルトの名無しさん
23/12/14 18:36:52.31 XnrONDcr.net
>>780
あんさん一人だけElixirの軽量プロセスとOSのプロセスの区別ができてなくね??
OSのプロセスを10万はリソース的にありえないと誰でもわかるからさ
区別つかないなら知的境界
801:デフォルトの名無しさん
23/12/14 19:13:15.18 Qyxtwh9D.net
>>782
作れる利点がなくなるよねって話の三回目に入る?w
802:デフォルトの名無しさん
23/12/14 19:13:56.39 Qyxtwh9D.net
>>783
もうちょい調べてから書かないと恥の上塗りになるだけだぞw
803:デフォルトの名無しさん
23/12/14 19:22:47.99 2Hq+5kYn.net
自演で恥ずかしい過去ログ流してもElixirは速くなったりしないしスレが消えたりもしないんだよなあ
804:デフォルトの名無しさん
23/12/14 19:27:28.75 H+V/uhu0.net
他の言語に比べれば大量の軽量プロセスサポートがあるElixir・Go・Rustなどが圧倒的に有利なのは当たり前だが
Elixirはイミュータブルに拘りすぎていてガベージが大量発生するからかその中では遅いよな
GoもElixirと同じくガベージコレクションを抱える言語だけどミュータブルも使えるしエスケープ解析でヒープ利用回避もあってElixirより速い
RustはC/C++と同じくガベージコレクションがないだけでなくヒープ利用回避がGoよりさらに積極的に可能でさらに速い
805:デフォルトの名無しさん
23/12/14 19:30:41.46 2Hq+5kYn.net
インタプリタの数百倍遅いのにガベージどうこういう話じゃないだろ
806:デフォルトの名無しさん
23/12/14 19:31:52.15 2Hq+5kYn.net
そもそも大量の軽量プロセスなんか使うことないからまったく意味ないって結論出たろうに
807:デフォルトの名無しさん
23/12/14 19:35:21.32 H+V/uhu0.net
>>789
GoでもRustでもウェブバックエンドなどを中心に普通に使われまくっているぜ
808:デフォルトの名無しさん
23/12/14 19:58:49.62 FC5gFBi+.net
【11万文字越え】プログラミング初心者に贈る即戦力ガイド
URLリンク(qiita.com)
> 4. よく使われる英単語一覧(全759語)
> なお、ここで紹介した単語の一覧についてはこちらの記事から引用させていただいております。
> プログラミング必須英単語600+ | プログラミング英語検定
759語のコピペは引用じゃないと思ったが?
引用マークの「>」を付けてないし引用にしては数が多すぎる
809:デフォルトの名無しさん
23/12/14 20:16:06.62 k/PqgUjR.net
10年後のために「私自身が」今勉強しておきたい技術〜Elixir, Nx, SIMD/ベクタ命令, GPU, FPGAプログラミングの高速化を極めたい!
URLリンク(qiita.com)
> 取り組みたいこと
> しかしながら,コード最適化の専門家としては,より高速なNxバックエンドを作ってみたいという野心が私に芽生えました。
「コード最適化の専門家」だそうだ。
810:デフォルトの名無しさん
23/12/14 20:29:36.51 OXkICwN3.net
>>792
その人の少し前の記事を見たら
Elixirの遅さをちゃんと認識してるな
>現状の Elixir の実行時環境である Erlang VM (アーラン ブイエム) は,Rust や C/C++ などのネイティブコードにコンパイルするプログラミング言語処理系と比べて低速です。
>
>そこで,Elixir (というか Erlang VM) には,NIF(Native Implemented Function)というネイティブコード実行に関わるAPIが整備されています。
>NIFは通常C/C++で書くのですが,Elixir では Rustler (ラスラー)というライブラリによって NIF を記述するプログラミング言語として Rust を利用することができるようになります。
>
>Rustler によって Elixir と Rust は共存共栄の道を辿ることができます!
811:デフォルトの名無しさん
23/12/14 21:05:29.39 AJ/57PbC.net
> Rustler によって Elixir と Rust は共存共栄の道を辿ることができます!
Rustだけで良くね?
812:デフォルトの名無しさん
23/12/14 21:59:19.62 Q2uBj3OJ.net
>>790
次にお前は「使われているのはスレッドだ」と言う
813:デフォルトの名無しさん
23/12/15 01:07:06.13 XTNGu5LG.net
前にも書いたけど、
例えば、C で100 スレッド起動するよりも、
Go で100 goroutine 起動すると、
6 スレッドしか使わずに、実行時間も半分になる。
つまり、スレッドの起動時間が遅い
OS のプロセス/スレッドは遅い
Elixir, Rust, Go の
軽量プロセス/軽量タスク/軽量コルーチンの方が速い
814:デフォルトの名無しさん
23/12/15 01:26:29.98 cIV5Hp8x.net
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜「コンピュータと地球温暖化は
決して無縁ではない」(2022年版)
URLリンク(qiita.com)
> このような状況の時に,クロック周波数を上げることで乗り切るか,クロック周波数を抑えたまま複数のコアに負荷分散して並列処理するかという選択肢があると思うのですが,後者の方が消費電力的には有利であることが多いのではないかという主張になります.
> FortranやC++等によるマルチスレッドによる実装には,デッドロックや性能低下の問題が起こりやすいという点を指摘したかと思います.Elixirを用いることで,それらのほとんどを回避することができると主張しています.
複数にコアにまたがる処理でElixirが高効率という主張かあ。
なんか実例挙げて言ってんのかな、自称コード最適化の専門家は。
815:デフォルトの名無しさん
23/12/15 01:34:51.66 FlvYUTtH.net
遅い言語で並列化するくらいなら速い言語で逐次処理しますわ
816:デフォルトの名無しさん
23/12/15 02:16:26.21 XbW4elW9.net
スパコンの電力当たりのみたいに、どの言語がどの程度効率いいか比較するのもいいかもね
どのような処理内容にするかも思案のしどころだけど
あ、オレはgoとかrustとか全然わからんからムリ
(もうあるかは知らない)
817:デフォルトの名無しさん
23/12/15 02:17:25.67 XbW4elW9.net
あ、R23でいいのか汗
818:デフォルトの名無しさん
23/12/15 02:18:03.31 XbW4elW9.net
>>800
あ、違うわ…寝ます
819:デフォルトの名無しさん
23/12/15 07:19:04.05 qQ38is4w.net
>>798
並列化は当たり前で
並行化の話がされている
批判している人はこの区別がついていないのかな
逐次処理は論外
例えば1000ヶ所と通信するとして順に処理していったら待ち時間で時間かかりすぎる
820:デフォルトの名無しさん
23/12/15 08:16:29.01 6YWiJxHB.net
>>802
実際に測ってCの逐次よりElixirの並列が遅かったら笑うが
Rustで並列処理をすればいいだけでElixirを使う意味がないよね
821:デフォルトの名無しさん
23/12/15 08:23:02.74 6YWiJxHB.net
ていうかもしかしてElixirに並列処理させるより接続数の数だけJavaやPHPのプログラムを立ち上げて排他はDBに任せた方が速いんじゃないかっていう
822:デフォルトの名無しさん
23/12/15 10:02:52.05 upp2Hku2.net
>>802
だから、通信は一度に一つの相手としか繋げられないんだから、どう書こうが変わらないよ
変わるとすれば切り替えのオーバーヘッドの違いだけ
823:デフォルトの名無しさん
23/12/15 10:24:30.21 xCMZAyyJ.net
>>805
>通信は一度に一つの相手としか繋げられない
これはpingが200msの相手達(複数)とは1秒間に合計5回しか通信出来ないと思ってるのか?
824:デフォルトの名無しさん
23/12/15 10:36:14.71 upp2Hku2.net
>>806
馬鹿は話し掛けるなw
825:デフォルトの名無しさん
23/12/15 10:42:34.89 qQ38is4w.net
>>803
まずは並列(parallel)と並行(concurrent)の違いを勉強しなさい
速さを求めるならRustが良いのはその通り
>>805
通信は同時に数万ヶ所と繋いで通信できる
ネットワーク通信プログラミングの基礎を学びなさい
826:デフォルトの名無しさん
23/12/15 10:47:32.82 upp2Hku2.net
>>808
だからさ、そんなマクロな視野でコード組むから
リリースした途端にサーバ落ちるんだよw
一つのくちから1パケットづつ順に送り出してんだからさw
受信も一つのくちからしか入って来ないからな
CPUの時間単位で考えたらかなりの待ち時間だぞ
827:デフォルトの名無しさん
23/12/15 10:50:21.81 esahPYg6.net
>>808
ずっと並列でホルホルしてたのに並列が意味ないとわかった途端に並行の話に切り替えるの笑うわ
並行ならなおさら10万プロセス必要ないとわかったらおとなしく遅いの認めろよw
828:デフォルトの名無しさん
23/12/15 11:02:05.12 Ih8Pp7jw.net
数万同時接続ってさあ
数万のパケットが同時にくるわけじゃなく一定時間に数万通りのipの書かれたパケットが届くことなんだよねえ
同時なのは接続数(最初のパケットが届いてから後、最後のパケットが届いてタイムアウトするまでが1接続)であって通信じゃないんだわ
普通はそれを複数のサーバーにふりわけるから一つのコンピューターで全部処理する必要ないんですわ
でもってそれぞれのサーバーのLANカードの数は物理的に限られてるしそれを処理するCPUのコア数も限られてるから10万の並列(並行ではなく)処理を誇っても意味ないんすわ
ましてや10万のプロセスなんてほぼ休んでるだけなんすわ
829:デフォルトの名無しさん
23/12/15 11:07:46.44 Ih8Pp7jw.net
だから結局大事なのは並列じゃなく並行の方なんだけど逐次処理がインタプリタの数百倍遅い言語で並行処理しても処理しきれないで取りこぼすだけなんすわw
830:デフォルトの名無しさん
23/12/15 11:13:07.61 Ih8Pp7jw.net
並行処理ってわかるかなあ?
要はタスク毎に逐次処理するんじゃなく複数のタスクをちょっとずつ順に処理することなんだけど、結局合計でかかる時間は逐次処理と変わらないのわかる?
それどころか切り替えにかかる時間を入れると逐次処理よりも時間がかかるのが並行処理なんだよねえ
だから逐次処理の無茶苦茶遅いElixirは並行処理にも向いてないの理解できる?
できるかなあ?
ちょっとまだ難しいかなあ?
831:デフォルトの名無しさん
23/12/15 11:17:58.27 VevHc3wp.net
>>811-813
その通りだから>>763のように
discordは逐次処理のMapSet、List、Ordsetだけネイティブコードにして
全体はElixirのままで十分なんだよな
832:デフォルトの名無しさん
23/12/15 11:25:03.44 CpUqahV2.net
>>813
あまりにも無知でプログラミングをしたことないみたいだから
練習に数十ヵ所のWebサーバーからデータをとって来るプログラム書いてみな
逐次処理は無駄に時間がかかり並行処理はすぐに済むことがわかる
これはネットワークプログラミングの基礎知識だよ
833:デフォルトの名無しさん
23/12/15 11:32:29.38 Ih8Pp7jw.net
>>815
うーん、何というか、君って悲しい存在だねw
JavaScriptが1スレッドで並行処理を実現してることを知ったら穴掘って埋まりそうw
834:デフォルトの名無しさん
23/12/15 11:33:35.63 Ih8Pp7jw.net
>>814
そもそも全体をElixirで書く必要がないんだけどw
835:デフォルトの名無しさん
23/12/15 11:43:37.92 74u1yDVR.net
>>815
数十箇所ならElixirでもどうにか処理できそうだけど数万箇所だと取りこぼしそうって話がわかってないやつおるな
遅い言語でいくら複数のプロセスやスレッド作ってもハードの制限で並列化できる数は限られてるから意味がないよ
並行処理だと休みなくパケットが来たときに合計実行時間が逐次処理以上になるから処理の遅い言語は並行処理に向いてないよ
836:デフォルトの名無しさん
23/12/15 11:48:08.48 CpUqahV2.net
>>816
並行処理だからもちろんシングルスレッドでいいんだよ
ちなみにマルチスレッドを必要とするのが並列処理
JavaScript普通にNode.jsでいいから先程の例をプログラム書いてごらん
逐次処理は遅く並行処理は速いというネットワークプログラミングの基礎知識がわかるから
>>818
Elixirとかいう言語には一切興味がないのでそこまでは知らん
837:デフォルトの名無しさん
23/12/15 12:21:47.92 Q6tOx24A.net
>>819
お前一人だけ初歩的な話をしてることに早く気づけ
痛々しいわw
大規模アクセスつまりパケットが常に行列に並んでて待ち時間が無い時には並行処理で早くならんということこそ基本だぞ?w
なんでお前一人だけ自分のPCの話をしてんだよw
838:デフォルトの名無しさん
23/12/15 12:30:29.65 kcf1mbU3.net
大規模サーバーは並行処理をやっていて逐次処理をやっている古いプログラムはとっくに淘汰されたもんな
最近の言語がいずれも並行処理に力を入れてるのも需要を反映してる
839:デフォルトの名無しさん
23/12/15 12:47:22.02 3oHFxrKa.net
>>820
サーバーとクライアントと言うべき
> 大規模アクセスつまりパケットが常に行列に並んでて待ち時間が無い時には並行処理で早くならん
これはサーバーの話
> なんでお前一人だけ自分のPCの話をしてんだよw
これはクライアントの話
おまえは説明が下手
840:デフォルトの名無しさん
23/12/15 12:51:02.58 6YWiJxHB.net
逐次処理があり得ないくらい遅いElixirでは並行処理も早くならんし他の言語でも今やasync/awaitが常識だしやっぱりElixirをわざわざ選ぶ理由はないよな
取りこぼしてエラー連発するのが落ち
普通のサイトなら普通にPHPやRubyでいいし速度を望むならRustで書けばいい
一番得意な分野で力を発揮できないって設計思想から間違ってるんじゃね?
841:デフォルトの名無しさん
23/12/15 12:52:03.81 6YWiJxHB.net
>>822
説明が下手というよりお前が(
いやなんでもない
初心者はほめて伸ばさなきゃな
842:デフォルトの名無しさん
23/12/15 12:56:17.44 DfOQteVp.net
他の言語vsElixirの話は逐次処理vs並行処理の話にすりかえろって指示でもどっかから出てんのかな
並行処理がElixirの独壇場って時代が存在したっけ?
843:デフォルトの名無しさん
23/12/15 12:58:42.00 IyzV6Elv.net
分散処理も区別してください
844:デフォルトの名無しさん
23/12/15 13:23:32.97 3oHFxrKa.net
> ジョー アームストロング氏は、2013 年の Rackspace とのインタビューで次のように述べています。「もし Java が '一度書いたらどこでも実行できる'場合、Erlang は「一度書いたら永久に実行できる」
> Sun Microsystems の Web テクノロジー担当ディレクター、Tim Bray 氏は次のように述べています。 2008 年 7 月のオライリー オープンソース コンベンション (OSCON) での基調講演:
> 誰かが私のところに来て、実際に常時稼動する必要があり、一度に何年もダウンさせるわけにはいかない大規模なメッセージ処理システムを構築するために大金を払いたいと思ったら、私は迷わず Erlang を選ぶでしょう。それを組み込んでください。
> Elixir は、(Erlang 抽象形式経由で) BEAM バイト コードにコンパイルされるプログラミング言語です。
://en.wikipedia.org/wiki/Erlang_(programming_language)
> PhoenixはElixirで記述するWebフレームワーク。
> ちょうどRubyとRailsのようなもの。
://zenn.dev/hiroe_orz17/articles/647ec2155d8088
> Elixirは、低レイテンシで分散型のフォールトトレラントシステムや、Webや組み込みシステムの領域で成功を収めている、Erlang VMを利用します。
://elixir-lang.jp/
> OSネイティブなプロセスよりもはるかに軽量な「プロセス」を持ち、独自の実行環境(Erlang VM)上で動作する。
> また、Erlangのプロセスは他のプロセスからは分離されていて、メモリ領域を他のプロセスと共有することがなく、プロセス間でのデータ共有はメッセージパッシング機構を使用して行う。
> このため、Erlangではあるプロセスに問題が発生しても、他のプロセスに影響が及ぶことが少ない。
> こうした特徴から、Erlangではスケーラブルでリアルタイム性を持った、可用性の高いプログラムを構築できる。
://atmarkit.itmedia.co.jp/ait/articles/1608/30/news021.html
845:デフォルトの名無しさん
23/12/15 13:35:08.42 hcZMsUIS.net
実際のところ何年もダウンさせない需要もないよ
どうせ時代に合わせてセキュリティーパッチを入れたりハードを交換したりしなきゃいけないし
そういう時に普通にやってる方法は運用しながら新しいプログラムを新ハードで動かしてデータをインポートしてデータが完全に同期したら新しい方のサーバーを公開する
それだけ
古いハードは使えるなら増強用として再利用したり別のところで使うしデータを完全に消去して中古として売ることもできる
846:デフォルトの名無しさん
23/12/15 13:38:40.54 hcZMsUIS.net
要するにElixirの強みを活かせる場がないのに遅いという明確な弱点があるから流行らないというだけ
10万のプロセスが作れるとか一流のプロジェクトマネージャーが金と時間をかけて作れば何年もメンテ不要になるわずかな可能性があるとかそういうの求めてる場所ってほとんど無いから
847:デフォルトの名無しさん
23/12/15 19:44:55.47 OxJQfyKN.net
某准教授は一流のプロジェクトマネージャーということだな
848:デフォルトの名無しさん
23/12/15 20:14:12.96 hcZMsUIS.net
何年も動いてるシステム作ったことあるの?
849:デフォルトの名無しさん
23/12/16 14:21:28.83 f/oi2kts.net
【11万文字越え】プログラミング初心者に贈る即戦力ガイド
URLリンク(qiita.com)
高評価されてる様子な記事だけど
> def calc(a, b):
> sum = a + b
> return sum
↑が「引数のa, bがどのような変数を受け取るのかわかりません。」だそうで改善版が
> def add(first_integer, second_integer):
> total = first_integer + second_integer
> return total
という説明だけど、名前に型含めるとかいまどき
850:正気かな? def add(a: int, b: int) -> int: return a + b 型ヒントで良くね? > def print_fruits(fruits_name): > print(fruits_name) 「この関数名なら「フルーツの名前を出力する」と認識することができ、可読性が高くなります。」だそうだけど def print_fruits_name(fruits_name): print(fruits_name) フルーツの値段や重さじゃなくて名前を出力するならそれが分かる関数名にするべきだろう。
851:デフォルトの名無しさん
23/12/16 14:23:22.83 f/oi2kts.net
あとコメントで指摘されてるけど
> def add(int_1: int, int_2: int) -> int:
> return int_1 + int_2
>
> def print_num(int: int) -> str:
> print(f"This num is {int}")
>
> num: int = add(5, 10)
>
> print_num(num)
酷い。業務でプログラミングに携わった者の書いたコードとは思えん。
本とか読んで勉強はしてるんだろうけど理解して身についてる感じじゃないなあ。
852:デフォルトの名無しさん
23/12/16 14:26:59.75 f/oi2kts.net
会社の宣伝として公開してる記事なんだろうけど社内でレビューすらやってない感じ。
853:デフォルトの名無しさん
23/12/16 14:39:20.13 l3lyoDWU.net
返事がないところを見ると無いようだな
854:デフォルトの名無しさん
23/12/16 14:41:58.89 rVs6zzQ4.net
記事を書く気持ちになれ
自分の利益のために記事を書くんだよ
それが学習したことを書くタイプの記事
従業員が学習したら会社の利益になる
855:デフォルトの名無しさん
23/12/16 14:53:08.81 8lOphjkY.net
ハンガリアン流行らせたい勢がいるんだろ
856:デフォルトの名無しさん
23/12/16 14:54:01.36 8lOphjkY.net
>>836
それ公開する必要ある?
857:デフォルトの名無しさん
23/12/16 15:07:42.06 rVs6zzQ4.net
>>838
記事を公開したことない?
(公開したことがあるとしたら)学習したことを書いてない?
858:デフォルトの名無しさん
23/12/16 15:13:35.73 SKTafFG5.net
クソ記事は公開しないほうが良かろう。
859:デフォルトの名無しさん
23/12/16 15:40:27.21 Tgc1PQC5.net
>>836
コメントに返信すらないことから察するに正しい知識をまとめよう、みたいな意識はないと思うよ。
ボリュームで圧倒して記事の内容気にしない人にアピールしたいだけだろう。
860:デフォルトの名無しさん
23/12/16 16:06:35.20 Ufkvmgs0.net
わかってしまってると(無意識に)省略してしまう
わからない人に向けてを意識しすぎると、クドくなる(どこまでクドくすればいいか難しい)
記事書いたことない奴にはわからんだろな
861:デフォルトの名無しさん
23/12/16 16:13:51.23 CoPEXxa8.net
記事ではVSCodeも紹介してるけどVSCodeならPythonの型ヒント見て型情報の表示や警告出してくれるプラグインくらい当たり前にあるだろう知らんけど。
ハンガリアン勧める気がしれない。
記事の章が噛み合ってないよう見えるのは筆者の理解が浅いからだろうなあ。
862:デフォルトの名無しさん
23/12/16 17:09:54.66 y/jJ/G7Y.net
>>839
学習したことなんか書くわけ無いじゃんアホなの?
なんでN番煎じの記事を書かなきゃいけないのよ?w
研究成果を書くに決まってんだろ
863:デフォルトの名無しさん
23/12/16 17:11:55.77 y/jJ/G7Y.net
>>842
どこまでって対象読者を設定するもんだぞw
864:デフォルトの名無しさん
23/12/16 17:23:08.70 GK+0OpB6.net
>>839
お前小学校の読書感想文の宿題であらすじ書いてただろ。
865:デフォルトの名無しさん
23/12/16 17:25:16.67 pGV096fC.net
URLリンク(qiita.com)
超初心者向けの問題がElixirを使うと難問に化ける模様
ほんとここまで使えない言語って他にあるのか?
866:デフォルトの名無しさん
23/12/16 17:27:54.04 vLHzsqrk.net
>>844
学習したことを書く理由やN番煎じの記事を書く理由がわからないのはおまえがアホだからだ
そういう記事が大量にあるってことも認めない?
867:デフォルトの名無しさん
23/12/16 17:29:32.66 vLHzsqrk.net
>>846
なんで小学校の読書感想文の
868:話になるのかがわからないが おまえは小学校の読書感想文で何を書いてたの?w
869:デフォルトの名無しさん
23/12/16 18:01:33.39 GK+0OpB6.net
ID:vLHzsqrkが底なしの馬鹿であることは分かった
870:デフォルトの名無しさん
23/12/16 18:08:08.94 2LPlrTT0.net
横からだけどID:vLHzsqrkのタイプにはインタラクティブな勉強会が必要だな
記事じゃダメだ(書く側でも読む側でも)
記事の数だけ量産して独り善がりするタイプ
871:デフォルトの名無しさん
23/12/16 18:13:12.55 2LPlrTT0.net
自分の他記事リンクでひたすらたらい回ししたり
内容がポエムだったり、何を読んだ勉強しただのリストだったり
とにかく数を書いてランクインしたいとしか見えない
872:デフォルトの名無しさん
23/12/16 18:16:33.88 M1xuAm5C.net
>>848
大量にあったとしてそれが正しさの証明にならんことは理解してる?
873:デフォルトの名無しさん
23/12/16 18:16:46.97 Ufkvmgs0.net
ID:y/jJ/G7Yの研究成果記事なんて出てこないだろうな
口ぶりからそれなりの数の記事書いてそうだが
874:デフォルトの名無しさん
23/12/16 18:20:52.00 wSj2b2+I.net
>>854
自分の書いた記事がどれか書けばいいのに >>842
875:デフォルトの名無しさん
23/12/16 21:28:42.53 pGV096fC.net
Qiitaにバカな記事が大量にあるのはQiitaにバカが大量にいるということでしかないよなあ
876:デフォルトの名無しさん
23/12/16 22:02:01.66 I2vzXgZR.net
アドベントカレンダーみたいに書くことが目的となってる記事もあるしもう終わりだねこのサイト
877:デフォルトの名無しさん
23/12/16 22:34:19.05 k8amybAq.net
イベントにスポンサーがちゃんと付く位には成功しているから、いいね衆遇評価だけでなく、paizaとかatcoder見たく実行環境を用意して、記事+実行コードに基づいて評価される方向性になると良いのだけど、無理かw
878:デフォルトの名無しさん
23/12/16 23:13:01.39 4QVWcoLO.net
>>847
Brainfuckなら使えなさでは負けてないはず
…はず
879:デフォルトの名無しさん
23/12/16 23:22:48.37 NaPXGVB2.net
>>847
> これにより,TLE(実行時間制限超過)が2つにまで減りました.
クソワロタw
「Elixirを使えばこれだけ素晴らしいことができますよ」と言ってお金をもらってる立場とはいえ大変だなあw
880:デフォルトの名無しさん
23/12/17 07:50:06.29 4oY8H79R.net
この問題ってElixirが得意という触れ込みの並列処理できる問題なんだけどな
なぜ10万のプロセスで他の言語を圧倒しないの?
おかしいな
881:デフォルトの名無しさん
23/12/17 08:01:59.39 4oY8H79R.net
目的地1から2へ、2から3へ、3から4へ…というのが全て独立に判定できるから10万の判定を並列で行って最後に集計して全てtrueならYesをそうでなければNoを返せばいいだけなんだよなあ
目的地は最大1万ヶ所だから10万の並列処理ができれば余裕だよね
「並列が得意だから速い」のが売りだったよね?
遅くね?
逐次より並行の方が速いと必死に主張してたやつ解説してよ
882:デフォルトの名無しさん
23/12/17 14:44:33.93 8O8gITSe.net
> メッセージ交換アクターモデルによるシェアード・ナッシング・アーキテクチャを採用
://ja.wikipedia.org/wiki/Elixir_(プログラミング言語)
> シェアード・ナッシング・アーキテクチャは各更新リクエストが 1 つのノード (プロセッサ/メモリ/ストレージ ユニット) によって満たされる分散コンピューティングアーキテクチャ。
> シェアード・ナッシング・アーキテクチャは単一障害点を排除し、個々のノードで障害が発生してもシステム全体が動作を継続できるようにし、個々のノードでハードウェアやハードウェアをアップグレードできるようにします。システム全体をシャットダウンせずにソフトウェアを実行できます。
> シェアード・ナッシング・アーキテクチャはデータ ウェアハウジングアプリケーションで普及していますが、複数のノードからのデータを必要とするリクエストによりスループットが大幅に低下する可能性があります。
://en.wikipedia.org/wiki/Shared-nothing_architecture
シャットダウンしないのがすごいが遅い
883:デフォルトの名無しさん
23/12/17 15:42:15.60 4oY8H79R.net
システム全体をシャットダウンせずソフトウェアを実行できるって普通じゃん
まさかそのために速度を犠牲にしてんの?
他の言語は犠牲にせずできるのに?
884:デフォルトの名無しさん
23/12/17 17:00:15.78 84fpKGOS.net
>>862
>目的地1から2へ、2から3へ、3から4へ…というのが全て独立に判定できるから
2から3に到達する時刻を求めるにはその前に2に到達する時刻を求めなきゃならんからそこは逐次的。
幅優先探索の並列化ははできるかもしれんが。
885:デフォルトの名無しさん
23/12/17 17:51:04.77 4oY8H79R.net
>>865
大丈夫か?w
2に到達する時刻は入力で与えられるだろ?w
886:デフォルトの名無しさん
23/12/17 17:59:13.23 84fpKGOS.net
入力で与えられるのはその時刻にその地点を通過してほしいというプランだけ。
887:デフォルトの名無しさん
23/12/17 18:24:06.99 4oY8H79R.net
>>867
到達できなけりゃfalseになるんだから到達したと想定して並列/並行できるじゃんw
一つでもfalseがあればNoだぞ?
アホなのか?w
888:デフォルトの名無しさん
23/12/17 19:07:03.71 84fpKGOS.net
ああなるほど、区間ごとの判定は独立してできるからそっちは並列化可能ってことか。
889:デフォルトの名無しさん
23/12/18 07:34:31.29 uZ6a40ez.net
このスレでも散々言われてるけどCPUやメモリやネットワークのハードに制限があるから並列化できる数は限られてるんだよな
並行はどうしても逐次より遅くなるからプロセスを10万作れようが100万作れようがまったく無意味だし逐次が絶望的に遅い言語で万単位の並行処理させるのはデータの取りこぼしの原因にしかならない
遅い言語で並行作業するのは仕事の遅いやつに複数の仕事を振るようなもんだからそもそも遅い言語は並行処理が不得意なんだよ
誰だよElixirが並行処理得意だなんて嘘を広めてるやつ
890:デフォルトの名無しさん
23/12/18 11:58:49.04 fTRnJP3I.net
Elixirを使えと言ってるのじゃなくElixirが実験的にやろうとすることを他の言語で使えってことだろ
NTTデータが10月に発生したシステム障害を未だに直せなくて技術力のなさが社会問題になってる
891:デフォルトの名無しさん
23/12/18 12:44:10.26 uZ6a40ez.net
>>871
無関係すぎて草
実験的にやろうとすることの意味もわからん
Elixirは他の言語より10年は遅れてるんじゃね?
892:デフォルトの名無しさん
23/12/18 12:55:48.75 RKFsKcnX.net
非同期はJSでも使えるしJSの方がElixirより速かったりするからな
技術力には言語選定力も含まれる
Elixir選ぶ奴は絶望的に技術力ないわ
893:デフォルトの名無しさん
23/12/18 13:02:45.82 d3xco00j.net
Elixirをダウンさせず動かし続けるためにはOSをダウンさせず動かし続けなきゃいけないわけだがそこで選ばれてるのはElixirじゃなくRustだってとこから察してみては?
Rustの方が安定性は高いし非同期も得意だし速い
Elixirはただのネタ言語で何も新しいことしてないよ?
894:デフォルトの名無しさん
23/12/18 13:37:44.11 GH4Jodzu.net
あれ?>>740のリンク先消えてね?
895:デフォルトの名無しさん
23/12/18 13:48:46.44 moJp7zqn.net
>>875
排他制御の理解が間違ってるみたいなことをZuishinに突っ込まれてたのを見たな
896:デフォルトの名無しさん
23/12/18 14:16:24.49 5jHsOOIo.net
調べてみるとElixirの本当に得意なことは分散システムの構築らしいとわかった
確かにそれならメリットがあるようだ
それを知らず並行/並列にばかり目を向けたりElixirで並行処理すると温暖化防止になったりすると思い込んでるエヴァンジェリストがElixirへの理解が足りてないように思う
複数のコンピューターを立ち上げて分散処理してエネルギー消費や熱が減るわけないじゃんっていう
897:デフォルトの名無しさん
23/12/18 15:24:05.90 fTRnJP3I.net
どういうこと?と思ってググったら地球温暖化に立ち向かうための解決策は消費電力あたりの性能の高いプロセッサを使用することだと言ってるようだ
その上でElixirは分散システムの構築が得意だということのようだ
898:デフォルトの名無しさん
23/12/18 16:01:06.83 dmmQMNxZ.net
消費電力あたりの性能の高いプロセッサを並列処理で回すのは良いとしてクソ遅いElixir使う意味はまるでないんでは?
マルチスレッドのプログラムならCでも書けるんだしさあ、電力消費もそっちのほうが全然小さそうじゃん。
Elixirにこだわる理由が知りたい。
899:デフォルトの名無しさん
23/12/18 17:05:05.17 RKFsKcnX.net
>>878
消費電力あたりの計算能力が低すぎやしませんかね
900:デフォルトの名無しさん
23/12/18 20:09:01.65 ZIjYQ4Fe.net
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」
URLリンク(webcache.googleusercontent.com)
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」
URLリンク(webcache.googleusercontent.com)
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」
URLリンク(webcache.googleusercontent.com)
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その4「イミュータブル性の利点」
URLリンク(webcache.googleusercontent.com)
記事が消されたのはまあどうでも良いんだけど有用なコメントが消えたのは残念。
901:デフォルトの名無しさん
23/12/18 20:50:15.23 PYgWDYAB.net
ん~IntelやAMD辞めてARMやRISC-V使えって?
902:デフォルトの名無しさん
23/12/18 23:54:48.67 XrIWsXhA.net
省電力サーバでARM選ぶって珍しい話ではない罠。
903:デフォルトの名無しさん
23/12/19 08:54:38.97 Ql0Yh5Lx.net
記事消えたのが准教授がこのスレ見ての反応だったらと思うとちょっと嬉しいね
904:デフォルトの名無しさん
23/12/19 09:42:48.64 0S4ThnVC.net
アーキテクチャがarmで困ったことはないなあ
aptみたいなパッケージマネージャーにないやつはオープンソースのを自分でビルドしてインストールすりゃいいし
905:デフォルトの名無しさん
23/12/19 12:13:52.03 jZOqIqVS.net
身内の記事に内容も見ないでいいねを押しまくる福岡Elixirコミュはしょうもないんだけど
それ以外の反応で准教授の記事にコメントつける人、前はちょこちょこいたのに最近は
さっぱりいなくなったね。
しょうもなさ過ぎて相手にされなくなったか准教授の方からブロックしたかどっちかな。