次世代言語18 Go Rust Elixir Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
スレタイ以外の言語もok
前スレ
次世代言語17 Go Rust Kotlin TypeScript Julia
https://mevius.5ch.net/test/read.cgi/tech/1567602619/ >>622
Rustは、有る意味では普通の「手続き型言語」の枠組みを超えてしまっているため、
通常のプログラミング言語の代わりに使うことはほぼ出来ないことが最大の欠点。
関数言語以外ではどの言語でもほぼ共通である所の変数の代入の概念がRustでは
変更になってしまっている。 >>642
ファイルシステムに関しては、本当にサンドボックスの外に出られ無い事が
大問題ではあるが、Wasmは雰囲気だけはnativeアプリ見たいには出来る。
ダウンロード時間を含めて起動も速い:
https://yutakaaoki.github.io/demo1/index.html >>98
KotlinとSwiftは、それぞれ、ほぼ AndroidとiOS専用なのに対し、DartとFlutterと組み合わせは、マルチプラットフォームであることが違うことは違う。 >>96
Dartは、Javaにも似ているが、初期のころのC++に似ている気がした。
原始的なC++から、型を明示した宣言を省略したような感じ。
C#やSwiftには便利さの点で負けると思うし、確かにJavaにすら負けているかもね。 >>24
Rustは、厳格すぎて余計なことに気を取られたりタイプ量が多すぎてむしろC++より生産性は下がりそうだ。
生産性という意味では、C#やJavaの方が上だろう。 >>659
結局wasmの売りってホストにデプロイされたバイトコードが如何なる環境でもChromium上で実行可能かつネイティブと迫る速度であるってことだからやっぱターゲットはゲームやモバイルアプリなんだよな
そうなると最近アナウンスされたReactNative for Windows/Macとはベクトルが違うからやっぱクロスプラットフォームって幻想だよな
実際アプリもネイティブで書いた方がメンテしやすいからなみんなネイティブで書いてるもんな それはwasmじゃなくてwasiでやろうとしてることでしょ? >>664
wasiなんてあるのか知らなかったわサンクス
node.jsでも試験的に実装されてて実際に動作するみたいやな
現状ファイルアクセスだけみたいやがネットワーク接続もできるようになるみたいやしnode.jsでwasiがサポートされてるなら完全なクロスプラットフォームが実現しそうやな ぼくもwasiって知らんかった。このスレたまたま開いてよかった Wasm : ブラウザで動かす。バックエンドのJSのcanvasなどを使うことで
グラフィックも使え、GUIも可能。原則、nativeファイルシステムが使えない。
wasi : Wasmを使うがブラウザ外で動かし、今のところCUI専用。native ファイル
システムが使えるので、サーバーサイドの node.jsやJavaの置き換えや
組み込みに向いているらしい。 webの流れ早過ぎ
業務で触ってないと追いつける気がしない wasiの変なサイトにアクセスしたら勝手にインストールされて
激重なるの?情報も抜かれる? >>667
他にも、
Wasmer, Wasmerio(Wasmer I/O ?), Wasmtime など色々出てきている。 >>669
そんなことは無い。
すべてはブラウザのセキュリティーモデルの中で動いているので、
原則的に今までどおりのセキュリティーレベル。
というのは、結局、Wasmで出来ることはJSでできることと変わりが無いため、
JSでどう書いてもできないことは、Wasmでもできないから。
Wasmの大きな利点は、JS以外の言語が使えることで、プログラムが開発し易くなること。
たとえば、JSだと間違いになかなか気づかない箇所でもC++だとコンパイラが発見してくれ、protected属性をつけていれば、他のclassからのアクセス制御なども出来て、保護したい変数に不用意にアクセスできなく出来たりする。 DOS攻撃すると逆にハッカー側がダメージ負う方法ってない?
例えばレスポンスで巨大なファイル送りつけるとか(多分レスポンス受け取らないから意味なさそう) ネットを利用するとお金がかかるようにすればいいのに
なんでネットすぐタダにしてしまうん >>668
俺は最新のメタはほぼすべて趣味で調べて自宅でコーディングして試してるで
仕事やとまず言語ですら最新のバージョン触れないから言語やフレームワークの新機能やトレンドはすべてプライベートでないとキャッチアップ不可能 >>673
じつはネットもぜんぜんタダやないんやで
主に広告によって収入を得る仕組みになっとるんや
ただしサービスを受けとる側が提供してる側へ直接払うみたいな
ドストレートな金の流れにはなってへんし、そもそもサービスを
提供してる側が金をもらうようにはなってない事もようあるで
世の中タダのもんなんてあらへんで >>669
その文脈でwasiはおかしい。wasmかな? >>657
K&R2=C89 で必要にして十分、それ以降は蛇足 > というのは、結局、Wasmで出来ることはJSでできることと変わりが無いため、
> JSでどう書いてもできないことは、Wasmでもできないから。
え?
間違ったことは教えちゃダメよーダメダメ🙅♂
wasmでしかできないこともあるし、JSでしか出来ないこともあるよ >>679
いや、言語が変えられることと、速度が速いこと以外は、Wasmが
出来ることはJSと完全一致で、JSが出来る範囲の事を超えることは出来ない。
これは絶対。 >>679
>wasmでしかできないこともあるし、JSでしか出来ないこともあるよ
これはそうだけど
セキュリティ観点でJS onlyでは出来ないけど
wasm使えば出来るってことは無いよね? うーん、俺の理解はこんな感じやな
クライアントのwasm対応ブラウザからホストにデプロイされたwasmのバイナリをリクエストしてダウンロードされたバイナリをブラウザで実行。
wasmの実行はブラウザ依存で対応ブラウザさえあれば組込だろうとどんな環境でも実行可能かつ高速なのが魅力。
wasm ←
・CaaS、コンテナみたいなもの。
・wasmは現状ブラウザ標準のFile APIしか使用できないのでネイティブファイルシステムにアクセスできない。
・ChromeではNative File System APIが試験導入されてるが、現状できることはinput type=“file”のFile APIとかわらない(これは試した)。
・各言語で書かれたソースコードをコンパイルして、wasmファイル(ブラウザで実行するバイナリ。プラットフォーム毎にバイナリが作られる)を生成。
・よって基本AOTでJITやインタプリタはない?
wasi ←
・PaaS、仮想マシンみたいなもの。
・wasmから利用できるプラットフォーム毎のネイティブファイルシステムAPIを抽象化した実装。
・wasiの機能・使用方法
→ watからモジュール(ライブラリ)を参照して使用する。
→ wasiを使用して書かれたソースコードをwasi対応バイナリとしてコンパイルする、コンパイルされたファイルはwasmだったりしなかったり。
→ wasmを実行するランタイムでもある。 >>682
>・各言語で書かれたソースコードをコンパイルして、wasmファイル(ブラウザで実行するバイナリ。プラットフォーム毎にバイナリが作られる)を生成。
「各言語で書かれたソースコードをコンパイルして、wasmファイルを生成」
の部分は正しいが、
Wasmはプラットフォームごとのバイナリではなく、あらゆるプラットフォームで共通の1つのコードだ。
だから、全く同じ *.wasm が Win/Mac/Linux/Android/iOS で、Wasmに対応したあらゆるブラウザで動作する。
なので、プラットフォームごとにキオンパイルしなおす必要は全くない。
>・よって基本AOTでJITやインタプリタはない?
Wasmは基本的にAOTではあるが、実行段階でさらにJITによってさらにコンパイルされて高速に動作される。
この段階でWasmの形式から、CPUのマシン語の形式に変換されることがある。
また、Wasmにはインタプリタも存在している。 >>680
> 出来ることはJSと完全一致で、JSが出来る範囲の事を超えることは出来ない。
完全一致www
まぁ色々仕様見た方がいいね
>>681
むしろセキュリティ観点からするとJSの方が安全だよ
"そこ"に関しては特別WASMだけが出来ることはないよ >>684
正しく言えば、Wasmでも、画面の見た目、グラフィック、キーボード/マウス/タッチパネルなどの
入出力、IMEなどを使った日本語入力、XHRやfetchなど、File API, native file API,
などはJSを使ってしか出来ないのでJSで出来ないことはWasmでも出来ないことになるので、
「Wasmで出来ることは使える言語と速度を除いてはJSと完全一致」
ということは正しい。 >>676
でもワイ、毎日タダでシコりまくりんグの件 >>658
>関数言語以外ではどの言語でもほぼ共通である所の変数の代入の概念がRustでは
>変更になってしまっている。
たいへん良いことじゃん?
変更されない変数を後から探してconstを付けて回る工数が削減される、 Rustの所有権や借用の概念は何で今まで他はこうじゃなかったのかと思ってたわ
難しいとか聞いたので構えてたけど、全く何の違和感も無かった
但し書き方が、もうちょい何とか出来なかったのかとは思うが、Rustが難しいのは概念や仕様じゃなくて書式 >>689
参照などの書き方に統一感が無いのは、Perl の関数呼び出しにおける参照型を思い出させる。
結局、分けが分からないので、衰退して言ったようだ。 rustはコンストラクタにもう一工夫あればc++に取って変われたかもね。 AppleのCloudサービス(iCloud, iTunes, Siri, Maps)はRustへ移行するってさ
Following a very successful first foray into Rust we are migrating an established codebase from C to Rust, and building new functionality primarily in Rust.
https://jobs.apple.com/en-us/details/200144575/software-engineer
https://jobs.apple.com/en-us/details/200117537/software-engineer 欲求の大体は想像できるけど
ライブラリ等の使用準備はインスタンス駆動よりも
ブロック内に記述/用意したプロパティを言語機能で勝手に読み取り構築してくれるくらいやって欲しいね
機能関数を初めて呼んだ時点でブロック単位最優先のヤツをライブラリに渡してくれるようなの
ブロックの親子関係でマイナスになったら初めてフラグもリセット 造語症の検査が必要だ
造語症を見抜けないことでかえってリソースが浪費される DropboxもクライアントをRustに書き換えか
Pythonの型アノテーション頑張ってたけど >>692
書いてみりゃわかる。
状態変更や共有に気を遣うとインスタンス生成を上手くやる必要が出る。 rustのhello world 4MBになるけど最小化しようとしたら存外難しくてワロタw cargo newしただけの状態をBuildしても143KBなんだが…
Goと間違ったのかな?いや流石に無いか、どういう事なんだ釣か? AppleもcをRustに置き換えしていくって言ってるよ rustにコンストラクタねえ?
コンストラクタに一工夫とか釣りなのかエアプなのか判断に苦しむ >>707
すまん、refCell、mut使いまくりの馬鹿には関係ない話だな。 ワイJavanist完全コンストラクタで華麗に対応 公式のリファレンス読んでもRustを使うメリットがわからんのやけどPythonみたいに環境がトータルとして優れてるってことか?
変数を束縛という概念で標準でイミュータブルとして定義されると何が嬉しいんや?constやreadonlyやとあかんのか?
スコープとシャドイーングもクロージャやとあかんのか?有識者からの説明求む
環境やパフォーマンスやなくて言語仕様や機能そのものは個人的にC#が最高やと思うんやけどマイノリティなんかな Rustのメリットは実行時のパフォーマンスを犠牲にすることなくそこそこモダンで高度に抽象化された言語で書けること
開発効率だけで言えばC#の方が圧倒的に上だし、総合的なROIで見てもRustがC#を上回るケースは現実にはほとんどない CもC++もDも使ってきたけど最近はPythonばっかり
Pythonが物足りなくてRust覚えようとしてたけど
C#が思いの外良くてそのままC#使ってる >>713
なるほど、ちゃんと調べてから質問すればよかったわすまんこ
システムプログラミングで使われるC/C++の代替がRust/Goなわけなんやね
調べてて知ったのがRust/Goはtry-catchない仕様なんめっちゃええね
そもそも例外が起きないようにプログラミング書くのに全処理をtry-catchで囲む慣習が個人的にずっと不服やったんよ
そもそも例外も変数で受け取ればええやんてのはほんま納得
Rust/Goでアプリケーション開発できるイージーな環境を誰か構築してほしいな PythonのライブラリはCで書く
言語を2つ使うのをやめて1つにするのを狙ってるのがC++やRust
PythonはRubyと競争して勝ってしまった
競争も勝敗もないのがC#やJavaやGo >>712
Rustは、例え一部であっても、参照カウンタも GarbageCollection もなしで、メモリ管理を目指そうとしていた。
束縛や借用を使えばStack変数に関してはそれはある程度成功する。
Heapオブジェクトの自動解放に関しては、Uniqueポインタ的な単一参照や参照カウンタ方式を使っている。
がしかし、循環参照してしまうと誰も使ってないHeapメモリーが自動解放されない現象が起きるので、循環参照を避けることはプログラマの責任で行う設計。 >>718
C/C++では、スタック変数を、関数の呼び出し元へ returnしたり、
引数に返したりすることが出来てしまうが、危険なので絶対やってはならないが、
Rustではそれに関してはコンパイル時にエラーが出るので防げる。
同様に関数の途中のブロックの中だけで有効なブロック変数も、ブロックの
外側にポインタ値を渡してはいけないが、これもRustでは防げる。 >>716
プログラムのし易さの目的には、Rustは向いていない。
例外を try, catch で囲む以上の面倒くささがあらゆる場面で伴う。 >>714
Pythonは、RAD系。C#も、RAD系的。
Rustは、RAD系とは正反対で、深く使いこなそうとするとCよりもC++よりもずっと難しい。 海外のサイトでRustを褒めている人は実際には表面的にしか理解してない。
多くの人の投稿を見ているとC++14などの新しいC++が難しいから嫌になって
その代替としてRustを使いたいと思っている。
また、うたい文句である所の「安全、ガベージコレクターなし、簡単なC統合」
などをそのまま真に受けている。
ところが現実は違う。
C++ですら複雑に感じる人は、Rustで独自のリンクリストを設計することは決して出来ないと予言しておく。
そして、それが出来ない状態でシステム作りするのは、とても危険である。
(C++が難しく感じるプログラマの99.9%は、Rustで、標準のリンクリストを僅かでも作り直すことは出来ないだろう。) >>720
あーそうなんか残念やな
C#は登場から20年経ってようやくパフォーマンスに舵を切り始めて俺が使うことはないやろけどSystem.Runtime.Intrinsicsなんかもリリースされたから下々にもパフォーマンスを享受できるようにしてほしいわ
個人的にp/invokeをpythonのようにctypes/cdllでみたいに使いやすくしてくれへんもんかなC++/CLIでラッパー書くのしんどすぎる C#はMS製というのが唯一の欠点
食わず嫌いも多いであろう >>716
>そもそも例外が起きないようにプログラミング書くのに全処理をtry-catchで囲む慣習が個人的にずっと不服やったんよ
エラーハンドリングの基礎を学んだほうが良さそう
それにRustとGoではエラーハンドリングの機能や考え方は全く違うぞ 元請けが決めるんやからしゃーないやろw
そやから慣習って書いてるやんけ 元請けのトンチキさに縛られる環境なら
RustやPythonの特徴がどうのとか考えるだけ
無駄では Rustをどうしても認めたくない人多いイメージ
海外大手を筆頭に導入が広がりだしてるのは確かなんだが 海外の事例(○○をrustで書き直しました!)はかなりタメになる
rustはいいぞ!なんで使わないの、やくめでしょっていう話は楽しくない
最近だったらDiscordをrustで書き直したって記事が面白かった
https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f
ただ、こういうリライト記事って基本的に「既にある≒要件がとても固まってるシステム」が対象なので、
試行錯誤しながら正解を探すっていう普通のプログラミングに合うのかは分からないよね GCのアルゴリズムはいっぱいある
最も単純な方法では何か困ったからいっぱい作った ふつう何かを開発するのにGCとか型付けとか
関数型プログラミングとかそんなくだらない事はどーでもいいわけ。
numpyやpandas、数学ライブラが充実してるから
pyを使う
組み込みで機械動かせるからC系を使う
ブラウザはJavaScriptで動作するからJavaScriptを使う
モバイル開発専用の言語だからkotlinやswiftを使う
みんな使ってるからJavaを使う
GoやRustにそれらの専売性がありますか?
ないよね?それを使わざるを得ない状況がないよね?
じゃあ要らないよね。 Goは文法がガチでウンコ
あれ作った低学歴に説教してやりてえわ >>735
サーバー書くのなら割とGoが最適解の時あるのでは サーバーって、ショッピングの Web API サーバーとか?
あの記述力の低さで複雑なドメイン扱える気がしないな >>741
そんなん言われても実際に使ってるところあるし >>742
そんなこと言ったら、PHP 4 だって使ってるところありますよ(笑) >>743
まあ確かにGoは技術力いるかもな
俺は技術力高い所がよく使ってるのは重要な指針になると思ってるんだけど、君はそう思わないタイプ? 記述力の低さを指摘したら
いっぱい使ってるし!とマジギレされたでござる
Go信者こわ そりゃphpだってfacebookは使ってるし、javaだってgoogleが使ってるわけで
そんなことで判断するのは流石にどうかと思うわ。 バックエンドは長いスパンで運用しながら継続的に開発していくわけだが、
そういった状況において言語の一定以上の機能性は開発生産性にほとんど寄与しないんだよね
Googleはプログラマの感情を無視して露骨にそれを主張してるから反感を買いがちだけど、
MSなんかも統計的にはその事実はよく理解してるはず 頑固な善人より柔軟な悪人の方が機能性があると思うやんか
でも一定以下に抑えることができなくなって悪は滅ぶ
この主張が感情ではなく統計的事実だとすると滅ぶのは誰なのか MicrosoftがProject Veronaという主要言語の研究でRustを高く評価してるな
Windowsの低水準コンポーネントをRustで書いて試用中らしい
>>732
同意、ぶっちゃけ実際の開発って仕様決まってようがRADでコアを作って形になったらそのままスケールしていくって感じが個人的にほとんどなんだよな
とにかく効率的なメタで開発したプログラムをパフォーマンスやメンテがボトルネックだから性能を追求と保守性で最適なメタでリライトしようぜって感じでRust採用って流れじゃなかろうか >>747
それはそう。
結局組織の問題だったりするわけだがプログラマとしては面白くない結論なんだろうっていうのはよくわかる。 人類は感情を煽る技術ばっかり進歩させて
逆に感情を抑えるノウハウをほとんど持ってない 記述力なんて言葉を使うやつが
複雑なドメインを扱える気がしない >>752
スレ違いな内容を書きたいという感情を抑えることができないのか >>749
後半の文節に関して、Webサービスの世界における究極のRADである Ruby on Rails の
誕生から現在に至るストーリー展開とのデジャブーを感じる
たとえば Twitter は、Rails でスタートアップして「コアをスケールアップ」していくことで
ビジネス的な成功を収め、同時に「パフォーマンスやメンテがボトルネック」だから
内部のコンポーネントを Scala/Java へ移行している
Rust に関して言えば、必須の低水準言語は C であることは変えようが無いという前提のもとで、
それよりやや高水準をターゲットとしている C++ のシェア侵食が起こり得ると考える
それはWebサービスの世界で Rails が PHP の牙城に食い込んでいった歴史の再現だ
もちろん昔も今も PHP の絶対的王者たる地位に揺るぎがあろうはずもなく、
一部の熱狂者たちが Rails のシェアを支えているに過ぎないという事実と重なる
同様に、Rust が一定の認知を得て普及する可能性は高いと同時に、
すべての C++/Java/C# プロジェクトが Rust に置き換わるバラ色の未来もまた存在しないだろう 誰も言ってないことを長文で批判するのが
あちこちのスレで見るよね >>755
まず「文節」を辞書で引こう。
小学校の国語の授業寝てたの?www PHPが絶対的王者ってマジ?
俺の世界ではRubyが王者でそのあとをGoが追ってて、PHPはゴリ押ししてようやく採用されるかどうかなんだが ■ このスレッドは過去ログ倉庫に格納されています