[過去ログ] Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
733: デフォルトの名無しさん [sage] 2023/12/13(水) 10:15:49.81 ID:cuotF3WF(1) AAS
初心者にElixir勧めるやつはおらんやろ
734: デフォルトの名無しさん [sage] 2023/12/13(水) 10:31:28.43 ID:Hx44XXHL(1) AAS
裸の王様に「Elixir全然速くないねw」みたいなコメントする正直な子供おらんのかな
735: デフォルトの名無しさん [sage] 2023/12/13(水) 15:41:58.90 ID:nkVMGJ7R(1) AAS
https://atcoder.jp/contests/abc332/submissions?f.Task=abc332_a&f.LanguageName=Haskell&f.Status=AC&f.User=
Haskellだと1〜2ms
Elixirは速度もありえないくらい遅くてコードも長くてインデントも深くて何一ついいところなしにしか見えんがこれって言語のせいなのかね
736: デフォルトの名無しさん [] 2023/12/13(水) 18:35:43.24 ID:eFqokkdq(1) AAS
スクラッチのようなブロック並べるのもあるし、そこに拘る必要もないやろ
737(1): デフォルトの名無しさん [] 2023/12/13(水) 19:39:13.03 ID:p0B6DwAr(1) AAS
QiitaでElixir推してる人達ってElixirは並列処理が簡単にできて
速いという主張を当たり前のように繰り返してるけど、他の言語と
比べてどうだこんなに速いぞてのじゃなくて、クソみたいな
アルゴリズムをElixirでシングルコアとマルチコアで比べて
マルチコアでこんなに速くなった!Elixir最高ーー!!(ビクンビクン
みたいな記事ばっか見かける希ガス。
まずアルゴリズムちゃんとしろよと。
他の言語と実際に比べて優位を語れと。
738: デフォルトの名無しさん [sage] 2023/12/13(水) 21:48:45.90 ID:NpZf2J/f(2/2) AAS
>>737
https://qiita.com/zacky1972/items/fa362f4d9b1252a207ad
CとJavaと比較してるぞ
どちらもasync/awaitが無いからめんどくさいがそれって結局Elixirの優位性というよりCとJavaが遅れてるってだけの話なんだよなあ
739(1): デフォルトの名無しさん [sage] 2023/12/13(水) 22:22:14.64 ID:X0GNdEDV(1) AAS
コメント欄総ツッコミだなあw
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」
https://qiita.com/zacky1972/items/bbf1f7bdecbbd0492151
並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」
https://qiita.com/zacky1972/items/10787cb6104c82016487
Elixir推しの人がC引き合いに出してるけどよく分かってないから比較にすらなってない感じ。
740(3): デフォルトの名無しさん [sage] 2023/12/14(木) 01:21:26.48 ID:X6Ol8Z5z(1) AAS
Elixir は、10万もの小プロセスを起動できる。
メモリが大きいと、5千万小プロセスも
それに関数型で、オブジェクトの状態が変わらないから、安全性・保守性が高い。
つまり更新できず、新規作成・廃棄しかできない。
オブジェクトは更新できないから再利用できる
片方向リストなので、先頭にしか追加できない。
末尾追加できないので、先頭に追加していって、最後に逆転させるとか
スクエニは、Elixirを使っているらしい
741: デフォルトの名無しさん [sage] 2023/12/14(木) 02:40:45.61 ID:aBZ2Af/o(1) AAS
>>740
GoやRustでも10万可能だな
742: デフォルトの名無しさん [sage] 2023/12/14(木) 04:11:29.57 ID:+GVKXU6O(1) AAS
いくらプロセス起動できようが遅けりゃ意味無し
743: デフォルトの名無しさん [sage] 2023/12/14(木) 04:52:43.66 ID:ehr7WTWM(1/3) AAS
Rustの非同期タスクはスタックレスコルーチンなので軽くて速くていいね
744(2): デフォルトの名無しさん [sage] 2023/12/14(木) 07:29:56.59 ID:y0v8WBQQ(1/6) AAS
10万のプロセス作ったとしてもCPUが10万無いなら結局同時処理できないわけで意味ないんじゃね
あとプロセス作る負荷と切り替えの負荷は結構重い
PCで使う限り大量のプロセス作っても速くなるどころか逆に遅くなると思うんだがほんとに速さが売りになるのか?
745: デフォルトの名無しさん [sage] 2023/12/14(木) 07:37:03.68 ID:y0v8WBQQ(2/6) AAS
スクエニの使ってるElixirって言語なのか?
ゲーム配信インフラとゲーム内アイテムの話しか出てこんぞ
746: デフォルトの名無しさん [sage] 2023/12/14(木) 08:51:47.14 ID:tCCx741E(1) AAS
Elixir推しの人達がElixirの強みをアピールする記事書かないのホント不思議。
747(1): デフォルトの名無しさん [sage] 2023/12/14(木) 10:00:34.56 ID:vwLqM/bT(1/2) AAS
https://www.infoq.com/jp/news/2019/09/rust-elixir-performance-at-scale/
Discordは一部Elixirで書かれてるがユーザーが増えて同時接続数の限界が見えたためにRustで書き直したそうな
一番得意な分野で他の言語に席を譲るとかやっぱり使いみちないじゃん
最初から全部Rustを使えばこんなことにならなかったのに
748(1): デフォルトの名無しさん [sage] 2023/12/14(木) 10:17:33.82 ID:riWO4PsS(1) AAS
Elixir推しの人曰くElixirはGPU使った並列処理もカンタンに書けるとのことだけど
実際そうなら個人が所有できるパソコンでも有意な使い方ありそうだけどね、
そういう記事が見当たらない辺りでまあそういうことなんだろうなあ。
749(1): デフォルトの名無しさん [sage] 2023/12/14(木) 10:24:05.23 ID:ehr7WTWM(2/3) AAS
>>744
プロセスやスレッドを10万個作るわけではないよ
一つのプロセスの中にスレッドをそのCPUコアスレッド数分(例えば8個)だけ作って使う
10万個の軽い非同期タスクはそのマルチスレッド上で擬似的にスケジューリングされる
もし数値計算ならばそのような非同期タスクを使うのは無意味でマルチスレッドをそのまま用いる
一方でネット通信のように非同期でCPUの待ち時間が多いものは軽い非同期タスクを何万も同時に動かし何万もの通信クライアントを同時に捌くことができる
750(1): デフォルトの名無しさん [] 2023/12/14(木) 10:39:56.58 ID:ztw3BXrG(1/5) AAS
通信デバイスは限られてるからそれは無い
751(2): デフォルトの名無しさん [sage] 2023/12/14(木) 10:40:17.07 ID:y0v8WBQQ(3/6) AAS
>>749
なんでプロセスじゃなくスレッドを8個作るんだよw
752: デフォルトの名無しさん [sage] 2023/12/14(木) 11:15:16.07 ID:f6g+GYKj(1) AAS
プロセス間通信にコストがかかるからでは?
知らんけど
753(1): デフォルトの名無しさん [] 2023/12/14(木) 11:18:51.20 ID:ztw3BXrG(2/5) AAS
何万スレッド起こそうが、通信デバイスが一つなら
一つのスレッド以外後はひたすら待ってるだけだしなぁ
754: デフォルトの名無しさん [sage] 2023/12/14(木) 11:19:33.74 ID:vwLqM/bT(2/2) AAS
>>725
https://atcoder.jp/contests/abc332/submissions?f.Task=abc332_a&f.LanguageName=AWK&f.Status=AC&f.User=
AWKで2msだから准教授が持てる力の全てを発揮して本気で作ったElixirプログラムはインタプリタより遅いことになるな
755: デフォルトの名無しさん [] 2023/12/14(木) 11:19:57.78 ID:ztw3BXrG(3/5) AAS
単なる待ち行列の捌き方の違いでしか無いんだよなぁ
756(1): デフォルトの名無しさん [sage] 2023/12/14(木) 11:27:56.68 ID:ehr7WTWM(3/3) AAS
>>750
現在の何万接続も同時に捌く最新型の各種サーバーはそのように作られている
ネットワークデバイスやその通信データに対してそれ以外の方法で作るとCPUは暇で遊んでしまうため
>>751
マルチプロセスにするメリットはないため1つのプロセス内でマルチスレッドを使う
CPUコアスレッド数よりも多くのスレッドを動かすのは無駄にスレッドスイッチングが発生し不利となるため限定した数のスレッドを動かしている
そのCPUコアスレッド数分のマルチスレッド上で数万個の軽い非同期タスクを動かすことでCPUの待ち時間を可能な限り無くしている
757: デフォルトの名無しさん [] 2023/12/14(木) 13:11:25.11 ID:UDs9NMEG(1) AAS
>>748
Elixirが本当にGPU処理をカンタンに書けるなら、もっと有名だったろう
一時期openCL使ってたけど、まず使えるようにするまでも面倒だったな
(今は簡単なのかもだけど)
使えるようにしてからは、ヤッホ~イだったw
758(4): デフォルトの名無しさん [sage] 2023/12/14(木) 13:17:27.28 ID:4gudT7IY(1) AAS
>>756
それだと10万のプロセスが扱える利点なくね?w
759(1): デフォルトの名無しさん [sage] 2023/12/14(木) 13:32:55.03 ID:4sl/SGKe(1) AAS
>>758
プロセスではなくマルチスレッド上に何万もの非同期タスクを動かしてるんだよ
Rustならスタックレスなコルーチンで実現されていてGoならスタック付きgoroutine
760(1): デフォルトの名無しさん [sage] 2023/12/14(木) 13:43:48.30 ID:qE3AElg+(1) AAS
ていうか現にElixirだと捌ききれなくてRustで書き直したという事例がそこにあるわけだがいつまで机上の空論を支えにしてるんだ
761: デフォルトの名無しさん [sage] 2023/12/14(木) 13:45:00.14 ID:e7pV4XH4(1/2) AAS
>>759
十万のプロセス使わないなら使える利点なくね?
という話だぞ?
762(1): デフォルトの名無しさん [sage] 2023/12/14(木) 14:03:29.37 ID:lRrQctoZ(1) AAS
>>760
>>747の事かな?
747はElixirのMapSet、List、OrdsetをFFIで外出ししたと言う話だね
discordのgithubでピン留めされてるのはElixirプロジェクト(とJS/TS)
discord自前のRustプロジェクトは1年以上コミットが無いですよ
763(1): デフォルトの名無しさん [sage] 2023/12/14(木) 14:41:05.58 ID:2Ni4Gd+R(1/2) AAS
>>758
プロセスはスイッチングコストが非常に大きいため、
プロセスを動かせば動かすほど損をするという基本常識を理解しよう。
そのためメモリを共有しスイッチングコストが軽減されたスレッドが代わりにある。
そのスレッドもスイッチングコストが大きいため、
1スレッド1クライアント接続だと何万もクライアントが同時接続したら動かない。
よってスイッチングコストが極めて軽量で非同期に動くマイクロタスクを用いるのが主流となっている。
764(1): デフォルトの名無しさん [sage] 2023/12/14(木) 14:55:20.21 ID:e7pV4XH4(2/2) AAS
>>763
そこまでわかってるならなんで10万プロセス使えるってホルホルしたの?w
765: デフォルトの名無しさん [sage] 2023/12/14(木) 14:58:52.36 ID:2Ni4Gd+R(2/2) AAS
俺じゃないので知らん。
そんなバカな主張してるやつもいないだろ?
766: デフォルトの名無しさん [sage] 2023/12/14(木) 15:05:17.25 ID:+fN+qS2C(1) AAS
10万のプロセスと書き込んでいるアホは>>744と>>758
767(1): デフォルトの名無しさん [sage] 2023/12/14(木) 15:08:18.14 ID:W87KUsm7(1) AAS
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜「コンピュータと地球温暖化は
決して無縁ではない」(2022年版)
https://qiita.com/zacky1972/items/a67459bf36f7b369b946
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜機械学習の消費電力あたり性能の改善に向けて
https://qiita.com/zacky1972/items/fc74503c33839b64d0a3
Elixirを使ってコンピュータの電力消費を抑える目論見みたいだけども実行効率で他の言語に劣るElixirを使う意図がわからん。
都合が良い話しかしてないようにも見える。
768: デフォルトの名無しさん [sage] 2023/12/14(木) 16:07:24.88 ID:nB7JFyYo(1) AAS
ああなるほど
>>740を無かったことにしたくて頑張ってスレを流してたのかw
769(1): デフォルトの名無しさん [sage] 2023/12/14(木) 16:13:09.80 ID:xxh+LIL0(1) AAS
>>758
>>764
10万個動くのは
Goならgoroutine
Rustならtask
Elixirならlightweight process
OSのプロセスの話なんて誰もしていないことに気づかなきゃ
そのへんの今どきの言語どれかをかじったことがあるならすぐわかるでしょ
770: デフォルトの名無しさん [] 2023/12/14(木) 16:42:29.46 ID:ztw3BXrG(4/5) AAS
だから、ネット1回線あたりにそんなキャパは無いからw
771(1): デフォルトの名無しさん [sage] 2023/12/14(木) 17:34:03.34 ID:XrPlFWPd(1/3) AAS
>>769
プロセスはOSが作るんだぞ?w
そこから説明がいるんかいw
実行ファイルを実行した時のプロセスと同じものだぞ?w
772(2): デフォルトの名無しさん [sage] 2023/12/14(木) 17:34:30.30 ID:H9fFRRYE(1) AAS
>>753
非同期プログラミングどころかネットワークプログラミングすらしたことのない子供が暴れてるのか?
まずネットワーク通信はOSにより抽象化されているためプログラムで通信デバイスを直接操作したり待つことはない
次に古典的なブロッキング同期でマルチスレッドを使う単純な方法でもlisten/accept専用スレッドはacceptするとすぐに別スレッドに任せてその別スレッドが通信を行なう
プログラミングをしたことのない子供だから知らないのか?
773: デフォルトの名無しさん [sage] 2023/12/14(木) 17:36:36.25 ID:XrPlFWPd(2/3) AAS
>>767
CPUは使いまくるし実行速度は遅いしで絶対電力効率悪いわな
774: デフォルトの名無しさん [sage] 2023/12/14(木) 17:39:47.54 ID:y0v8WBQQ(4/6) AAS
>>772
今度はスレッドの数も必要ないと言い出したがそれだとプロセスに続いてますますElixirの利点なくならね?w
775(1): デフォルトの名無しさん [sage] 2023/12/14(木) 17:42:38.14 ID:89ikcykU(1) AAS
>>771
みんなが話しているのは一つのOSプロセス内の話ですよ
一つのOSプロセス内で複数のOSスレッドが動くのです
一つのOSプロセス内で複数の軽量プロセス/軽量タスク/軽量コルーチンが動くのです
だから誰もOSプロセスの話なんてしていません
ここまで読んだところ発端の>>740の人も軽量プロセスを意味する「小プロセス」と書いていますね
776(1): デフォルトの名無しさん [sage] 2023/12/14(木) 17:55:03.81 ID:5ci7xWno(1) AAS
>>751
常識だろ
同じメモリ空間を使うためスレッドを使い、CPUを限界まで使いこなせるようにするためCPUコアの分だけスレッドを起動する
GoもRustのtokioもそれが指定しない時のデフォルト挙動となっている
777: デフォルトの名無しさん [] 2023/12/14(木) 18:07:20.47 ID:ztw3BXrG(5/5) AAS
>>772
馬鹿はハードの事情も知らずにサービス開始と共にキャパオーバーで障害発生させるのかw
778(1): デフォルトの名無しさん [sage] 2023/12/14(木) 18:27:59.46 ID:y0v8WBQQ(5/6) AAS
>>775
えっと、OSプロセスって何?w
プロセスを作るにはOSに依頼しないといけないわけで実行ファイルを実行しようがAPIを呼ぼうがファイルをロードしないだけで同じだぞ?w
779(1): デフォルトの名無しさん [sage] 2023/12/14(木) 18:30:01.63 ID:y0v8WBQQ(6/6) AAS
>>776
プロセス10万作る君に10万作ったプロセスはどうすんのって聞いたというところから説明が必要な感じ?w
なんかわかってないやつと話すといちいち話を戻されてめんどうだなー
780: デフォルトの名無しさん [sage] 2023/12/14(木) 18:32:21.00 ID:XrPlFWPd(3/3) AAS
どれだけ話をごまかそうとElixirが遅いことに変わりはないんだな
計測すればわかること
781(1): デフォルトの名無しさん [sage] 2023/12/14(木) 18:32:58.40 ID:zrmcyW9d(1) AAS
>>778
各モダン言語の軽量タスク相当はプロセス内で大量に生成するため新たにプロセスを作る必要はない
無知をさらしていないでまずは基礎知識を身につけてはどうか
782(1): デフォルトの名無しさん [sage] 2023/12/14(木) 18:36:52.31 ID:XnrONDcr(1) AAS
>>779
あんさん一人だけElixirの軽量プロセスとOSのプロセスの区別ができてなくね??
OSのプロセスを10万はリソース的にありえないと誰でもわかるからさ
区別つかないなら知的境界
783: デフォルトの名無しさん [sage] 2023/12/14(木) 19:13:15.18 ID:Qyxtwh9D(1/2) AAS
>>781
作れる利点がなくなるよねって話の三回目に入る?w
784: デフォルトの名無しさん [sage] 2023/12/14(木) 19:13:56.39 ID:Qyxtwh9D(2/2) AAS
>>782
もうちょい調べてから書かないと恥の上塗りになるだけだぞw
785: デフォルトの名無しさん [sage] 2023/12/14(木) 19:22:47.99 ID:2Hq+5kYn(1/3) AAS
自演で恥ずかしい過去ログ流してもElixirは速くなったりしないしスレが消えたりもしないんだよなあ
786: デフォルトの名無しさん [sage] 2023/12/14(木) 19:27:28.75 ID:H+V/uhu0(1/2) AAS
他の言語に比べれば大量の軽量プロセスサポートがあるElixir・Go・Rustなどが圧倒的に有利なのは当たり前だが
Elixirはイミュータブルに拘りすぎていてガベージが大量発生するからかその中では遅いよな
GoもElixirと同じくガベージコレクションを抱える言語だけどミュータブルも使えるしエスケープ解析でヒープ利用回避もあってElixirより速い
RustはC/C++と同じくガベージコレクションがないだけでなくヒープ利用回避がGoよりさらに積極的に可能でさらに速い
787: デフォルトの名無しさん [sage] 2023/12/14(木) 19:30:41.46 ID:2Hq+5kYn(2/3) AAS
インタプリタの数百倍遅いのにガベージどうこういう話じゃないだろ
788(1): デフォルトの名無しさん [sage] 2023/12/14(木) 19:31:52.15 ID:2Hq+5kYn(3/3) AAS
そもそも大量の軽量プロセスなんか使うことないからまったく意味ないって結論出たろうに
789(1): デフォルトの名無しさん [sage] 2023/12/14(木) 19:35:21.32 ID:H+V/uhu0(2/2) AAS
>>788
GoでもRustでもウェブバックエンドなどを中心に普通に使われまくっているぜ
790: デフォルトの名無しさん [sage] 2023/12/14(木) 19:58:49.62 ID:FC5gFBi+(1) AAS
【11万文字越え】プログラミング初心者に贈る即戦力ガイド
https://qiita.com/nuco_bk/items/27f5ad03d0c4b41241fc
> 4. よく使われる英単語一覧(全759語)
> なお、ここで紹介した単語の一覧についてはこちらの記事から引用させていただいております。
> プログラミング必須英単語600+ | プログラミング英語検定
759語のコピペは引用じゃないと思ったが?
引用マークの「>」を付けてないし引用にしては数が多すぎる
791(1): デフォルトの名無しさん [sage] 2023/12/14(木) 20:16:06.62 ID:k/PqgUjR(1) AAS
10年後のために「私自身が」今勉強しておきたい技術〜Elixir, Nx, SIMD/ベクタ命令, GPU, FPGAプログラミングの高速化を極めたい!
https://qiita.com/zacky1972/items/16551040cc42696127fb
> 取り組みたいこと
> しかしながら,コード最適化の専門家としては,より高速なNxバックエンドを作ってみたいという野心が私に芽生えました。
「コード最適化の専門家」だそうだ。
792: デフォルトの名無しさん [sage] 2023/12/14(木) 20:29:36.51 ID:OXkICwN3(1) AAS
>>791
その人の少し前の記事を見たら
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 は共存共栄の道を辿ることができます!
793: デフォルトの名無しさん [sage] 2023/12/14(木) 21:05:29.39 ID:AJ/57PbC(1) AAS
> Rustler によって Elixir と Rust は共存共栄の道を辿ることができます!
Rustだけで良くね?
794: デフォルトの名無しさん [sage] 2023/12/14(木) 21:59:19.62 ID:Q2uBj3OJ(1) AAS
>>789
次にお前は「使われているのはスレッドだ」と言う
795: デフォルトの名無しさん [sage] 2023/12/15(金) 01:07:06.13 ID:XTNGu5LG(1) AAS
前にも書いたけど、
例えば、C で100 スレッド起動するよりも、
Go で100 goroutine 起動すると、
6 スレッドしか使わずに、実行時間も半分になる。
つまり、スレッドの起動時間が遅い
OS のプロセス/スレッドは遅い
Elixir, Rust, Go の
軽量プロセス/軽量タスク/軽量コルーチンの方が速い
796: デフォルトの名無しさん [sage] 2023/12/15(金) 01:26:29.98 ID:cIV5Hp8x(1) AAS
地球温暖化とコンピュータのエネルギー消費の問題にElixirで立ち向かう〜「コンピュータと地球温暖化は
決して無縁ではない」(2022年版)
https://qiita.com/zacky1972/items/a67459bf36f7b369b946
> このような状況の時に,クロック周波数を上げることで乗り切るか,クロック周波数を抑えたまま複数のコアに負荷分散して並列処理するかという選択肢があると思うのですが,後者の方が消費電力的には有利であることが多いのではないかという主張になります.
> FortranやC++等によるマルチスレッドによる実装には,デッドロックや性能低下の問題が起こりやすいという点を指摘したかと思います.Elixirを用いることで,それらのほとんどを回避することができると主張しています.
複数にコアにまたがる処理でElixirが高効率という主張かあ。
なんか実例挙げて言ってんのかな、自称コード最適化の専門家は。
797(1): デフォルトの名無しさん [sage] 2023/12/15(金) 01:34:51.66 ID:FlvYUTtH(1) AAS
遅い言語で並列化するくらいなら速い言語で逐次処理しますわ
798: デフォルトの名無しさん [] 2023/12/15(金) 02:16:26.21 ID:XbW4elW9(1/3) AAS
スパコンの電力当たりのみたいに、どの言語がどの程度効率いいか比較するのもいいかもね
どのような処理内容にするかも思案のしどころだけど
あ、オレはgoとかrustとか全然わからんからムリ
(もうあるかは知らない)
799(1): デフォルトの名無しさん [] 2023/12/15(金) 02:17:25.67 ID:XbW4elW9(2/3) AAS
あ、R23でいいのか汗
800: デフォルトの名無しさん [] 2023/12/15(金) 02:18:03.31 ID:XbW4elW9(3/3) AAS
>>799
あ、違うわ…寝ます
801(2): デフォルトの名無しさん [sage] 2023/12/15(金) 07:19:04.05 ID:qQ38is4w(1/2) AAS
>>797
並列化は当たり前で
並行化の話がされている
批判している人はこの区別がついていないのかな
逐次処理は論外
例えば1000ヶ所と通信するとして順に処理していったら待ち時間で時間かかりすぎる
802(1): デフォルトの名無しさん [sage] 2023/12/15(金) 08:16:29.01 ID:6YWiJxHB(1/4) AAS
>>801
実際に測ってCの逐次よりElixirの並列が遅かったら笑うが
Rustで並列処理をすればいいだけでElixirを使う意味がないよね
803: デフォルトの名無しさん [sage] 2023/12/15(金) 08:23:02.74 ID:6YWiJxHB(2/4) AAS
ていうかもしかしてElixirに並列処理させるより接続数の数だけJavaやPHPのプログラムを立ち上げて排他はDBに任せた方が速いんじゃないかっていう
804(2): デフォルトの名無しさん [] 2023/12/15(金) 10:02:52.05 ID:upp2Hku2(1/3) AAS
>>801
だから、通信は一度に一つの相手としか繋げられないんだから、どう書こうが変わらないよ
変わるとすれば切り替えのオーバーヘッドの違いだけ
805(1): デフォルトの名無しさん [sage] 2023/12/15(金) 10:24:30.21 ID:xCMZAyyJ(1) AAS
>>804
>通信は一度に一つの相手としか繋げられない
これはpingが200msの相手達(複数)とは1秒間に合計5回しか通信出来ないと思ってるのか?
806: デフォルトの名無しさん [] 2023/12/15(金) 10:36:14.71 ID:upp2Hku2(2/3) AAS
>>805
馬鹿は話し掛けるなw
807(2): デフォルトの名無しさん [sage] 2023/12/15(金) 10:42:34.89 ID:qQ38is4w(2/2) AAS
>>802
まずは並列(parallel)と並行(concurrent)の違いを勉強しなさい
速さを求めるならRustが良いのはその通り
>>804
通信は同時に数万ヶ所と繋いで通信できる
ネットワーク通信プログラミングの基礎を学びなさい
808: デフォルトの名無しさん [] 2023/12/15(金) 10:47:32.82 ID:upp2Hku2(3/3) AAS
>>807
だからさ、そんなマクロな視野でコード組むから
リリースした途端にサーバ落ちるんだよw
一つのくちから1パケットづつ順に送り出してんだからさw
受信も一つのくちからしか入って来ないからな
CPUの時間単位で考えたらかなりの待ち時間だぞ
809: デフォルトの名無しさん [sage] 2023/12/15(金) 10:50:21.81 ID:esahPYg6(1) AAS
>>807
ずっと並列でホルホルしてたのに並列が意味ないとわかった途端に並行の話に切り替えるの笑うわ
並行ならなおさら10万プロセス必要ないとわかったらおとなしく遅いの認めろよw
810(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:02:05.12 ID:Ih8Pp7jw(1/5) AAS
数万同時接続ってさあ
数万のパケットが同時にくるわけじゃなく一定時間に数万通りのipの書かれたパケットが届くことなんだよねえ
同時なのは接続数(最初のパケットが届いてから後、最後のパケットが届いてタイムアウトするまでが1接続)であって通信じゃないんだわ
普通はそれを複数のサーバーにふりわけるから一つのコンピューターで全部処理する必要ないんですわ
でもってそれぞれのサーバーのLANカードの数は物理的に限られてるしそれを処理するCPUのコア数も限られてるから10万の並列(並行ではなく)処理を誇っても意味ないんすわ
ましてや10万のプロセスなんてほぼ休んでるだけなんすわ
811(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:07:46.44 ID:Ih8Pp7jw(2/5) AAS
だから結局大事なのは並列じゃなく並行の方なんだけど逐次処理がインタプリタの数百倍遅い言語で並行処理しても処理しきれないで取りこぼすだけなんすわw
812(2): デフォルトの名無しさん [sage] 2023/12/15(金) 11:13:07.61 ID:Ih8Pp7jw(3/5) AAS
並行処理ってわかるかなあ?
要はタスク毎に逐次処理するんじゃなく複数のタスクをちょっとずつ順に処理することなんだけど、結局合計でかかる時間は逐次処理と変わらないのわかる?
それどころか切り替えにかかる時間を入れると逐次処理よりも時間がかかるのが並行処理なんだよねえ
だから逐次処理の無茶苦茶遅いElixirは並行処理にも向いてないの理解できる?
できるかなあ?
ちょっとまだ難しいかなあ?
813(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:17:58.27 ID:VevHc3wp(1) AAS
>>810-812
その通りだから>>762のように
discordは逐次処理のMapSet、List、Ordsetだけネイティブコードにして
全体はElixirのままで十分なんだよな
814(2): デフォルトの名無しさん [sage] 2023/12/15(金) 11:25:03.44 ID:CpUqahV2(1/2) AAS
>>812
あまりにも無知でプログラミングをしたことないみたいだから
練習に数十ヵ所のWebサーバーからデータをとって来るプログラム書いてみな
逐次処理は無駄に時間がかかり並行処理はすぐに済むことがわかる
これはネットワークプログラミングの基礎知識だよ
815(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:32:29.38 ID:Ih8Pp7jw(4/5) AAS
>>814
うーん、何というか、君って悲しい存在だねw
JavaScriptが1スレッドで並行処理を実現してることを知ったら穴掘って埋まりそうw
816: デフォルトの名無しさん [sage] 2023/12/15(金) 11:33:35.63 ID:Ih8Pp7jw(5/5) AAS
>>813
そもそも全体をElixirで書く必要がないんだけどw
817(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:43:37.92 ID:74u1yDVR(1) AAS
>>814
数十箇所ならElixirでもどうにか処理できそうだけど数万箇所だと取りこぼしそうって話がわかってないやつおるな
遅い言語でいくら複数のプロセスやスレッド作ってもハードの制限で並列化できる数は限られてるから意味がないよ
並行処理だと休みなくパケットが来たときに合計実行時間が逐次処理以上になるから処理の遅い言語は並行処理に向いてないよ
818(1): デフォルトの名無しさん [sage] 2023/12/15(金) 11:48:08.48 ID:CpUqahV2(2/2) AAS
>>815
並行処理だからもちろんシングルスレッドでいいんだよ
ちなみにマルチスレッドを必要とするのが並列処理
JavaScript普通にNode.jsでいいから先程の例をプログラム書いてごらん
逐次処理は遅く並行処理は速いというネットワークプログラミングの基礎知識がわかるから
>>817
Elixirとかいう言語には一切興味がないのでそこまでは知らん
819(1): デフォルトの名無しさん [sage] 2023/12/15(金) 12:21:47.92 ID:Q6tOx24A(1) AAS
>>818
お前一人だけ初歩的な話をしてることに早く気づけ
痛々しいわw
大規模アクセスつまりパケットが常に行列に並んでて待ち時間が無い時には並行処理で早くならんということこそ基本だぞ?w
なんでお前一人だけ自分のPCの話をしてんだよw
820: デフォルトの名無しさん [sage] 2023/12/15(金) 12:30:29.65 ID:kcf1mbU3(1) AAS
大規模サーバーは並行処理をやっていて逐次処理をやっている古いプログラムはとっくに淘汰されたもんな
最近の言語がいずれも並行処理に力を入れてるのも需要を反映してる
821(1): デフォルトの名無しさん [sage] 2023/12/15(金) 12:47:22.02 ID:3oHFxrKa(1/2) AAS
>>819
サーバーとクライアントと言うべき
> 大規模アクセスつまりパケットが常に行列に並んでて待ち時間が無い時には並行処理で早くならん
これはサーバーの話
> なんでお前一人だけ自分のPCの話をしてんだよw
これはクライアントの話
おまえは説明が下手
822: デフォルトの名無しさん [sage] 2023/12/15(金) 12:51:02.58 ID:6YWiJxHB(3/4) AAS
逐次処理があり得ないくらい遅いElixirでは並行処理も早くならんし他の言語でも今やasync/awaitが常識だしやっぱりElixirをわざわざ選ぶ理由はないよな
取りこぼしてエラー連発するのが落ち
普通のサイトなら普通にPHPやRubyでいいし速度を望むならRustで書けばいい
一番得意な分野で力を発揮できないって設計思想から間違ってるんじゃね?
823: デフォルトの名無しさん [sage] 2023/12/15(金) 12:52:03.81 ID:6YWiJxHB(4/4) AAS
>>821
説明が下手というよりお前が(
いやなんでもない
初心者はほめて伸ばさなきゃな
824: デフォルトの名無しさん [sage] 2023/12/15(金) 12:56:17.44 ID:DfOQteVp(1) AAS
他の言語vsElixirの話は逐次処理vs並行処理の話にすりかえろって指示でもどっかから出てんのかな
並行処理がElixirの独壇場って時代が存在したっけ?
825: デフォルトの名無しさん [sage] 2023/12/15(金) 12:58:42.00 ID:IyzV6Elv(1) AAS
分散処理も区別してください
826: デフォルトの名無しさん [sage] 2023/12/15(金) 13:23:32.97 ID:3oHFxrKa(2/2) AAS
> ジョー アームストロング氏は、2013 年の Rackspace とのインタビューで次のように述べています。「もし Java が '一度書いたらどこでも実行できる'場合、Erlang は「一度書いたら永久に実行できる」
> Sun Microsystems の Web テクノロジー担当ディレクター、Tim Bray 氏は次のように述べています。 2008 年 7 月のオライリー オープンソース コンベンション (OSCON) での基調講演:
> 誰かが私のところに来て、実際に常時稼動する必要があり、一度に何年もダウンさせるわけにはいかない大規模なメッセージ処理システムを構築するために大金を払いたいと思ったら、私は迷わず Erlang を選ぶでしょう。それを組み込んでください。
> Elixir は、(Erlang 抽象形式経由で) BEAM バイト コードにコンパイルされるプログラミング言語です。
http://en.wikipedia.org/wiki/Erlang_(programming_language)
> PhoenixはElixirで記述するWebフレームワーク。
> ちょうどRubyとRailsのようなもの。
http://zenn.dev/hiroe_orz17/articles/647ec2155d8088
> Elixirは、低レイテンシで分散型のフォールトトレラントシステムや、Webや組み込みシステムの領域で成功を収めている、Erlang VMを利用します。
http://elixir-lang.jp/
> OSネイティブなプロセスよりもはるかに軽量な「プロセス」を持ち、独自の実行環境(Erlang VM)上で動作する。
> また、Erlangのプロセスは他のプロセスからは分離されていて、メモリ領域を他のプロセスと共有することがなく、プロセス間でのデータ共有はメッセージパッシング機構を使用して行う。
> このため、Erlangではあるプロセスに問題が発生しても、他のプロセスに影響が及ぶことが少ない。
> こうした特徴から、Erlangではスケーラブルでリアルタイム性を持った、可用性の高いプログラムを構築できる。
http://atmarkit.itmedia.co.jp/ait/articles/1608/30/news021.html
827: デフォルトの名無しさん [sage] 2023/12/15(金) 13:35:08.42 ID:hcZMsUIS(1/3) AAS
実際のところ何年もダウンさせない需要もないよ
どうせ時代に合わせてセキュリティーパッチを入れたりハードを交換したりしなきゃいけないし
そういう時に普通にやってる方法は運用しながら新しいプログラムを新ハードで動かしてデータをインポートしてデータが完全に同期したら新しい方のサーバーを公開する
それだけ
古いハードは使えるなら増強用として再利用したり別のところで使うしデータを完全に消去して中古として売ることもできる
828: デフォルトの名無しさん [sage] 2023/12/15(金) 13:38:40.54 ID:hcZMsUIS(2/3) AAS
要するにElixirの強みを活かせる場がないのに遅いという明確な弱点があるから流行らないというだけ
10万のプロセスが作れるとか一流のプロジェクトマネージャーが金と時間をかけて作れば何年もメンテ不要になるわずかな可能性があるとかそういうの求めてる場所ってほとんど無いから
829: デフォルトの名無しさん [sage] 2023/12/15(金) 19:44:55.47 ID:OxJQfyKN(1) AAS
某准教授は一流のプロジェクトマネージャーということだな
830: デフォルトの名無しさん [sage] 2023/12/15(金) 20:14:12.96 ID:hcZMsUIS(3/3) AAS
何年も動いてるシステム作ったことあるの?
831: デフォルトの名無しさん [] 2023/12/16(土) 14:21:28.83 ID:f/oi2kts(1/3) AAS
【11万文字越え】プログラミング初心者に贈る即戦力ガイド
https://qiita.com/nuco_bk/items/27f5ad03d0c4b41241fc
高評価されてる様子な記事だけど
> def calc(a, b):
> sum = a + b
> return sum
↑が「引数のa, bがどのような変数を受け取るのかわかりません。」だそうで改善版が
> def add(first_integer, second_integer):
> total = first_integer + second_integer
> return total
という説明だけど、名前に型含めるとかいまどき正気かな?
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)
フルーツの値段や重さじゃなくて名前を出力するならそれが分かる関数名にするべきだろう。
832: デフォルトの名無しさん [] 2023/12/16(土) 14:23:22.83 ID:f/oi2kts(2/3) AAS
あとコメントで指摘されてるけど
> 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)
酷い。業務でプログラミングに携わった者の書いたコードとは思えん。
本とか読んで勉強はしてるんだろうけど理解して身についてる感じじゃないなあ。
上下前次1-新書関写板覧索設栞歴
あと 170 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s