次世代言語9[Haskell Rust Kotlin TypeScript Dart]
: デフォルトの名無しさん [sage] 2018/03/06(火) 10:09:15.60:x/Au45rc スレタイ以外の言語もok 前スレ 次世代言語Part8[Haskell Rust Kotlin TypeScript] ttp://mevius.5ch.net/test/read.cgi/tech/1512137301/ : デフォルトの名無しさん [] 2018/03/06(火) 10:30:06.56:nMdAiw1E Dartきてんね : デフォルトの名無しさん [sage] 2018/03/06(火) 11:03:49.49:05hne0v2 DartとDlangの違いを教えてください : デフォルトの名無しさん [sage] 2018/03/06(火) 11:43:03.15:DTiE8Uxw Googleは言語選択保守的すぎるだろ 関数型言語採用しないどころかGolang作っちゃう時点で : デフォルトの名無しさん [sage] 2018/03/06(火) 12:27:31.20:KV/wZ8PJ Goと関数型は土俵が違わん? : デフォルトの名無しさん [sage] 2018/03/06(火) 14:53:26.90:+D30KD0L 関数型とは具体的に何のことやら Rustが採用したenumとtraitは関数型か? : デフォルトの名無しさん [sage] 2018/03/06(火) 20:42:26.57:MoZw2NXu 別にそんなとこで冒険しても生産性上がらんよねって感覚なんだろ。 : デフォルトの名無しさん [] 2018/03/06(火) 20:42:29.39:cU7JZ0/j enum・traitと関数型は関係ないだろ?どちらもHaskellの型システムをパクって来たってだけ 関数型言語の特徴として真っ先に思いつくのは関数を第一級オブジェクトとして扱えるか否かというところだろうな ただその考え方だけだとC言語でさえ関数ポインタがあるから関数型言語に含まれてしまうことになる そこからさらに副作用を出来る限り避ける文化があるか否かとかも判断基準になるのかな? 言語の文化とかふんわりした表現は具体性を伴わないから説得力に欠けるんだよな 改めて関数型を具体的に説明しろと言われると難しいな… : デフォルトの名無しさん [sage] 2018/03/06(火) 20:57:45.92:xvhpcg6j 関数ポインタは確かにC/C++系独自だけれども(Javaにはなかった)第一級オブジェクトではない、とおもうよ : デフォルトの名無しさん [sage] 2018/03/06(火) 21:32:52.86:MoZw2NXu もう少しだけ動的に関数定義を変えて返したりできるのが関数型ぽい。 : デフォルトの名無しさん [sage] 2018/03/06(火) 21:34:37.20:qto5wiY+ Cの関数は実行時に生成挟めないから第一級オブジェクトではないよ : デフォルトの名無しさん [sage] 2018/03/06(火) 21:40:19.40:MoZw2NXu c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。 : デフォルトの名無しさん [sage] 2018/03/06(火) 21:45:38.71:DG7WbBnA λ理論を念頭に置いて実装されたかどうかやぞ : デフォルトの名無しさん [sage] 2018/03/06(火) 22:00:19.48:qto5wiY+ c++なら素直にラムダ式使おうよ… : デフォルトの名無しさん [sage] 2018/03/06(火) 22:19:34.09:xvhpcg6j C++ のラムダ式でYコンビネータを記述できるのですか? できないのならラムダ式などと呼称していいのでしょうか? : デフォルトの名無しさん [sage] 2018/03/06(火) 22:36:28.04:qto5wiY+ 2つの話題を勝手に混ぜるな で に安価付けなかったのは俺が悪いけどさ 実行時の環境を用いた関数定義の有無についてc++ならラムダ式を使おうという話をしているだけだ しゃーねーだろ言語機能としてラムダ式って命名されてるんだから 関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない Yコンビネータに関しては確かできた気がするが : デフォルトの名無しさん [sage] 2018/03/06(火) 22:44:51.87:DG7WbBnA 正論すぎて草 : デフォルトの名無しさん [sage] 2018/03/07(水) 00:36:57.39:EDSn5kWw goって保守的かな?結構攻めてる言語だと思うが。 swiftのほうが断然保守的。 : デフォルトの名無しさん [sage] 2018/03/07(水) 00:55:59.65:487L5ZU0 保守的にするという意味で攻めてる言語だな : デフォルトの名無しさん [sage] 2018/03/07(水) 00:59:12.93:JwI5qwvI 諦めと開き直りを全面に押し出してくる言語だな、確かに。 : デフォルトの名無しさん [sage] 2018/03/07(水) 01:21:30.28:EDSn5kWw goの攻めてるところ。 ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。 例外を辞めた。 公開、非公開をメンバ名が大文字始まりかどうかで決めるように。 クラスをやめて、構造体だけにした。 インターフェース実装は該当メソッドの有無で決定 といった具合に他の言語の当たり前の部分を壊した。全然保守的とは思えないが。 : デフォルトの名無しさん [sage] 2018/03/07(水) 01:26:49.68:EDSn5kWw 後は未使用ライブラリのimportをコンパイルエラーにするというのも、他の言語であんまり見ない気がする。 これは、積み重なるとコンパイル時間に影響するから、言語設計にコンパイル時間の考慮を重きにおいている証拠の一つと言える : デフォルトの名無しさん [sage] 2018/03/07(水) 01:27:38.81:487L5ZU0 例外とか構造体はC時代に逆戻りしてるだけだし、静的ダックタイピングは他の言語にもあるし、githubのurl指定は結局色々な問題起きてるし(この間のgo-bindata騒動とか)、公開/非公開の大文字小文字も気軽に変えられなくて不便だし何のメリットがあるんだ? : デフォルトの名無しさん [sage] 2018/03/07(水) 01:28:30.13:487L5ZU0 他の言語はエラーにはしないけど警告出す 初期の開発中は未使用importエラーも邪魔なだけでしょ : デフォルトの名無しさん [sage] 2018/03/07(水) 01:41:57.73:EDSn5kWw むしろ、今まで当たり前にあった言語仕様を振り返って本当に必要かどうかを再検討して 削りに削った仕様だと思うけどな。 c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、 すごくしっくりきた。 : デフォルトの名無しさん [sage] 2018/03/07(水) 01:51:00.36:EDSn5kWw IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。 linuxカーネルもコンパイルすると警告出てるし : デフォルトの名無しさん [sage] 2018/03/07(水) 01:54:34.87:487L5ZU0 構造体とクラスに関しては個人的に同意 ただ型パラメーターとか例外がないのはありえない エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ 型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない : デフォルトの名無しさん [sage] 2018/03/07(水) 01:56:06.25:EDSn5kWw go-bindata騒動はgo固有の問題でもない。nodeだって似たようなことあっただろ。 : デフォルトの名無しさん [sage] 2018/03/07(水) 02:03:48.32:EDSn5kWw 例外いるかな? tryで包まなきゃいけないメソッドや、関数ってドキュメント読むか、実際に実行するまでわかんなくないか? 言語によっては例外が飛ぶ可能性がある関数かどうかわかるんだっけ? jsはわかんないから不便。 : デフォルトの名無しさん [sage] 2018/03/07(水) 02:08:04.97:EDSn5kWw 結局interface{}使うのかよ的なね。わかる。 俺はコード生成に可能性を見出してる。 goはコード生成フレンドリーな言語仕様だし標準ライブラリに、AST系が揃ってるから : デフォルトの名無しさん [sage] 2018/03/07(水) 02:19:43.98:487L5ZU0 nodeもあったけどnodeの場合はnpmの仕様変えれば解決出来るやん でもGoはgithubに依存してるから解決不可能じゃん それならEither型作ってメソッドチェーンで書けるようにして欲しい Goのエラー処理は関数呼び出し毎にしないといけないからだるすぎ 型パラメーターが複雑だから、コンパイル速度に影響出るからって入れなかったのにコード生成しろって矛盾してない? どっちが複雑だよ。どっちがコンパイル速度に影響出るよ? : デフォルトの名無しさん [sage] 2018/03/07(水) 03:07:39.19:EDSn5kWw コード生成はプリプロセスとしてコンパイルの度に毎回動かすわけじゃない。stringerとか使ったことない? inportに関しては、 nodeがnpmの仕様を変えたら解決するならgoもそうすればいいのでは? 現状でも、vendor/もコミット対象にしてしまえば、依存ライブラリを管理対象にできるから サードパーティライブラリに頼る以上はライブラリ作者の影響をどの言語だって受ける。 : デフォルトの名無しさん [sage] 2018/03/07(水) 03:12:09.66:rBtvNRXK Yコンビネータ forall a. (a -> a) -> a のように forallがつく関数は第一級オブジェクトにならないのが普通だ 総称型がある比較的新しい言語はもう第一級オブジェクトにこだわらない : デフォルトの名無しさん [sage] 2018/03/07(水) 04:31:47.78:Fw456RXb maybe/eitherが無い言語はあまり触りたくないな : デフォルトの名無しさん [] 2018/03/07(水) 07:45:36.47:zWLX9kTq goってなんだかよく使われてる以外の理由で使う理由がないよ 同じことするならrustのがいいわ : デフォルトの名無しさん [sage] 2018/03/07(水) 08:21:04.51:JwI5qwvI Goはマイクロスレッド得意なのはありがたいな。 あとチャンネルと。 そして静的リンクがデフォ。 これだけで、Go使う価値あると思ってる。 : デフォルトの名無しさん [sage] 2018/03/07(水) 09:16:51.01:L0uTy1l9 WEBサーバ: go,php,ruby,java,Elixir IOSアプリ:swift,dart Androidアプリ:java,kotlin,dart WEBクライアント:JavaScript,elm,TypeScript cliツール:go どこにrustが入る? : デフォルトの名無しさん [sage] 2018/03/07(水) 09:50:59.47:vL0QsqKL Rustは生ポインタが使えるし、C ffiが比較的容易に可能、そのうえwebassemblyにまで対応してる 以外にも組み込み、OS、ドライバ、デスクトップアプリ等どこにでも入ろうと思えば入れる C++の後継を目指してるだけあってかなり万能な言語ではあるんだが 問題は普及するかどうか… : デフォルトの名無しさん [sage] 2018/03/07(水) 10:25:38.57:487L5ZU0 goはgithubに依存してるからgithubの仕様変えないと駄目じゃん 具体的にはリポジトリやユーザーの削除禁止。でもそれは無理だろ? 毎回動かすわけじゃないけど、変更あったら動かすだろ? しかもそれは他の言語でも差分コンパイルで出来る : デフォルトの名無しさん [sage] 2018/03/07(水) 10:51:52.29:JwI5qwvI githubが便利だからgithub使ってるけど、別にgithub以外でも公開出来るし、依存してると言うより多くの人間がgithub使ってるだけでは? : デフォルトの名無しさん [] 2018/03/07(水) 13:02:44.71:s6OLNjGp プログラマの労力よりコンパイル速度を優先してるのが謎 : デフォルトの名無しさん [sage] 2018/03/07(水) 13:09:33.87:4hpZk16v コンパイル速度が短いとデバッグしやすいからじゃね? : デフォルトの名無しさん [sage] 2018/03/07(水) 13:13:30.69:4hpZk16v cliツールgoってマジ? : デフォルトの名無しさん [sage] 2018/03/07(水) 13:14:29.36:upKMxxIv Rust嫌いじゃないけど普及しないと思う 今年のロードマップもwasmとCLIとNetwork頑張る、っておとなしすぎだろ いろいろできるならもっとぶっ込んで来いやゴルア ってね : デフォルトの名無しさん [sage] 2018/03/07(水) 13:19:03.34:lIV1PIoV Googleが採用しなかったDartよりはMozillaが採用したRustの方が将来性はあると思う : デフォルトの名無しさん [] 2018/03/07(水) 13:45:40.70:MMWrPDHz ウエッブサーバ: rust 他のサーバ: rust ウエッブクライアント: rust CLI: rust : デフォルトの名無しさん [sage] 2018/03/07(水) 13:53:35.83:L0uTy1l9 その辺の話は ttps://talks.golang.org/2012/splash.article に書いているけど、 Google社内の巨大なソースのコンパイル時間が45分とかかかるようになっちゃって なんとかしないとという流れで始まったって書いてる。 つまりGoogle以外で恩恵を得る可能性は低いな。 : デフォルトの名無しさん [] 2018/03/07(水) 14:07:05.01:vL0QsqKL 一応マジメに返しておくと現状webクライアントはrustだけじゃダメだよ 現状ではまだwebassemblyでDOM操作はできないし他にも出来ないことは沢山ある webクライアントにはRust+JSの組み合わせが必須になる ただし、Rustのマクロ使ってRustの中にJS書いてビルド時にwasmとJSを両方吐きだして 無理やりRust onlyを実現してるstdwebとかいう先進的?なフレームワークも存在する あのクレート発見したときは「こいつ天才かよ?」って思った : デフォルトの名無しさん [sage] 2018/03/07(水) 14:22:34.19:L0uTy1l9 Rustは気になるけど、さわるモチベーションとなるキッカケがないんだよな。 FirefoxベースのElectronとかでて直接レンダリング部分をrustでいじるようなライブラリがでたら考えるかな : デフォルトの名無しさん [sage] 2018/03/07(水) 14:54:16.32:2wkQZK0N 人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は? 一方で仕事の多い言語は? CodementorXとCoding Dojoの調査結果 ttp://www.publickey1.jp/blog/18/5_codementorxcoding_dojo.html : デフォルトの名無しさん [sage] 2018/03/07(水) 15:25:36.37:n65ilySP jsのファミコンエミュを苦労してrust(→webassembly)に書き直してもぜんぜん速くならないという悲しい現実。 ハマるユースケース少なそう。 : デフォルトの名無しさん [] 2018/03/07(水) 16:03:24.12:vL0QsqKL 憶測でしがないが、それはRustやwasmが遅いというわけではなくて ファミコン程度の演算ならJSだろうがwasmだろうがパフォーマンス的には大差なくて それよりもwasmとJSでデータをやり取りする際のコピーのコストが高くついてるんじゃない? 3Dゲームの演算とかもっと重い処理じゃない限りwasmのメリットが活きてこないんじゃ… もしくは、将来的にwasmから直接DOM操作ができるようになれば… : デフォルトの名無しさん [sage] 2018/03/07(水) 16:26:53.26:lIV1PIoV GoとRustはバランスが悪いんだよな ラムダ式とかジェネリクスとかGCがあればこそ手軽に使えるものなのに GoはGC有るのにどちらも無くて RustはどちらもあるけどGCが無いから不便 : デフォルトの名無しさん [sage] 2018/03/07(水) 16:37:37.77:rBtvNRXK RustにもARCはあるんだろ まあでもARCはゴミのようだという意見には一理あるわな : デフォルトの名無しさん [] 2018/03/07(水) 16:48:10.62:vL0QsqKL RustにARCがあるってのは誤解を招く恐れがあるので補足 RustではARCは標準ライブラリとして用意されてる SwiftみたいにARCでメモリ管理してるわけじゃないよ : デフォルトの名無しさん [sage] 2018/03/07(水) 17:13:59.44:8jwTNUb7 Rustなんてmozillaに金掴まされた奴しか見向きもしてない何にも使えない言語が 次世代言語とか笑わせんでくれ : デフォルトの名無しさん [sage] 2018/03/07(水) 17:19:05.18:mYeM/2on まだ言ってんのかよw : デフォルトの名無しさん [sage] 2018/03/07(水) 17:35:57.09:8jwTNUb7 実際誰がどこで使ってるのか教えてくれ モジラの金掴まされた企業以外で : デフォルトの名無しさん [sage] 2018/03/07(水) 18:15:46.78:EDSn5kWw googleがxi-editor作ってたり、 後railcarってdocker代替作ってたり。 どっちもあんまり魅力的じゃないないな。 ゲームエンジンがrustで書いたらどうなるか興味ある。 : デフォルトの名無しさん [sage] 2018/03/07(水) 18:19:20.11:EDSn5kWw dartを知らない人間がdartに触る例。 ttps://youtu.be/uDKCK8BBPJU エンジニアのプログラミング実況動画面白いかも。これのrust版ってある? : デフォルトの名無しさん [sage] 2018/03/07(水) 18:50:32.83:8jwTNUb7 1.0出て何年も経ってるのに その体たらくって時点でお察し : デフォルトの名無しさん [sage] 2018/03/07(水) 19:11:36.71:QbuNtZtf ゲーム分野もUnityやUnrealでニーズ満たしてるし、それ以外のものは今さら流行らんでしょ : デフォルトの名無しさん [sage] 2018/03/07(水) 19:14:43.72:AePhkh+C コンパイル速度が早ければスループットが上がるんだから、労力の定義次第だろ。 : デフォルトの名無しさん [sage] 2018/03/07(水) 19:15:35.75:487L5ZU0 こいつ反応楽しみたいだけの荒らしだから触れるな : デフォルトの名無しさん [sage] 2018/03/07(水) 19:17:10.88:487L5ZU0 本当これだよな 両方バランスが悪い ネイティブでバランスの良いKotlinみたいな言語欲しい Kotlin Nativeはどうなんだろうね : デフォルトの名無しさん [] 2018/03/07(水) 20:42:19.89:vL0QsqKL ラムダ式とジェネリクスはGCとはあまり関係ない機能だと思うが… 特にジェネリクスとGCには全く何の関係も無いような… : デフォルトの名無しさん [sage] 2018/03/07(水) 20:57:01.38:L0uTy1l9 ttps://taiyaq.com/contents/VXd2aV04Gr1mLC8e3AbEg4XKly Dartの言語ツアーみてるけど、結構言語仕様が辛い。 変数宣言がC由来の「型 変数名」なのがつらい。 GoとかTypeScriptみたいに変数宣言は「変数名 型」にして欲しいわ あと内部コードがutf16というのが気になる。jsより後発なのにjsと同じ仕様って。 Flutterは良さげなのになぁ。 : デフォルトの名無しさん [sage] 2018/03/07(水) 21:02:27.65:ZH5MFU7m RustがC++の代替って枠だと先にも出てる大規模ゲームなんだが、個人やインディーズなら大手エンジンでいいし社内独自エンジンだとこれまでの資産的にツールもゲーム本体も言語変える必要なくない?みたいな所がなぁ : デフォルトの名無しさん [] 2018/03/07(水) 21:13:00.74:xaPv5Ark 気軽に書くならswiftを使うかな : デフォルトの名無しさん [sage] 2018/03/07(水) 21:18:56.44:L0uTy1l9 rustってc++に絶対勝てないのかね? メモリ管理を静的に解決できるって不思議なんだけど、もしかしてメモリ節約プログラミングが得意だったらスマホとかIOTでワンチャンあるかもしれん。 : デフォルトの名無しさん [sage] 2018/03/07(水) 21:24:30.78:Fw456RXb 今rustで書いてるよ、勿論mozilla全く関係無い 映像系のバックエンドでは結構使ってる情報見るけどな : デフォルトの名無しさん [sage] 2018/03/07(水) 21:51:29.88:hDt5Kv7q rustは理論好きで実際はコードほとんど書かないような連中に人気あるだけだろ。 ゼロコスト抽象化カッケーとかそういう層。 : デフォルトの名無しさん [sage] 2018/03/07(水) 21:58:39.87:ZH5MFU7m ヒープ周りは言う程魔法みたいな事をしてる訳ではないよ どこまでいってもコンパイル時の制限をカッツカツにして開放を保証するって話だし iotもスマホも(もちろんゲームも)クロスプラットフォームしたくて大変なのにそれぞれc++向けに書かれてるsdkラップする?っていう オープン規格やらそういうsdkがrust向けを公式で出すようになれば採用も出てくるとは思うけどね : デフォルトの名無しさん [sage] 2018/03/07(水) 22:05:41.69:hDt5Kv7q メモリ解放のタイミングが分からなくなるっつーのは基本的に インスタンスを共有してる変数がいくつもあるから ってのがrustの主張の根幹でしょ。 : デフォルトの名無しさん [] 2018/03/07(水) 22:21:07.09:zWLX9kTq わたすもrustで書いてるよ webだけど メインブラウザがファイヤーフォックスだからモジラの手先かもしれん : デフォルトの名無しさん [sage] 2018/03/07(水) 22:26:35.72:4hpZk16v まあrust使ってる時点でモジラの手先だしな : デフォルトの名無しさん [sage] 2018/03/07(水) 22:26:48.78:rBtvNRXK 実行時に参照カウントを増減するのは、実行しないとわからない場合だけにしろ コンパイル時にわかることを実行時にチェックするな これはRustだけでなく静的型がさんざん主張していたこと : デフォルトの名無しさん [sage] 2018/03/07(水) 23:11:58.32:LhUqstRW Dartとかいう完全死産のゴミ言語をスレタイに入れるな おまえほんっとセンスねーなバーカ : デフォルトの名無しさん [sage] 2018/03/07(水) 23:22:26.51:TWVUeb1Y Dart2で再始動って言ってるからDart4くらいで良くなるんじゃねw Flutterはちょっと気になってる : デフォルトの名無しさん [sage] 2018/03/08(木) 00:02:08.17:XFDvKJyj これでコード書く時間が逆に増えたらウケるな : デフォルトの名無しさん [sage] 2018/03/08(木) 00:11:20.59:XFDvKJyj 死んでしまったAngularちゃんの悪口はやめろ : デフォルトの名無しさん [sage] 2018/03/08(木) 02:29:26.18:to5KOUcv 内部文字コードがutf16とか変数宣言がいまいちとか結構辛い。 flutterとdartを分離してTypeScriptから使えるようにしてくんないかな : デフォルトの名無しさん [sage] 2018/03/08(木) 12:46:52.68:XQ95i3sC あーわかる超わかる トイプログラムだけ書いて満足する奴のための言語みたいな : デフォルトの名無しさん [sage] 2018/03/08(木) 12:54:28.13:XQ95i3sC 結構使ってる情報見る(ソースなし) : デフォルトの名無しさん [] 2018/03/08(木) 13:26:45.90:f+gZIHDW 個人が趣味でやってるプログラムなんてどんな言語だろうが大体そういうものだろ 別にRustで書いてる奴に限った話じゃない : デフォルトの名無しさん [] 2018/03/08(木) 13:27:26.60:f+gZIHDW 本格的なものを作ろうとすれば企業が関わらざるを得なくて現状ではどの企業もまだ様子見状態ってだけ むしろGoogleがRustで実験的にエディタを作ってるってことは Googleも採用を検討するくらいには注目してる言語ということ : デフォルトの名無しさん [sage] 2018/03/08(木) 13:36:32.00:XQ95i3sC 残念ながらxi-editorは20%ルールの産物で完全に個人のトイプログラムなんですよね そもそもGoogle社内の公認言語にRustなどという腐ったものは存在しない : デフォルトの名無しさん [sage] 2018/03/08(木) 13:55:25.73:sd0Mz8U9 Goも元々は20%ルールの産物じゃなかったっけ? : デフォルトの名無しさん [sage] 2018/03/08(木) 13:56:46.22:UjKWiNad そだよ てか、GoはRuby同様ガチ勢に嫌われすぎてて、なかなかカチッとしないね : デフォルトの名無しさん [sage] 2018/03/08(木) 14:07:05.39:XQ95i3sC まじで。Go自体が20%ルールの産物なのは知らんかったわ Goは初期のJava見てるような時代逆行感あるし、それが嫌われる原因だろうね 初期のJavaよりははるかにマシだけど : デフォルトの名無しさん [sage] 2018/03/08(木) 15:53:31.02:39/jgBm7 Rustアンチ面倒臭い ttp://gihyo.jp/dev/serial/01/dwango-engineersoul/0002?page=2 ttps://speakerdeck.com/yaminoma/bitutoretogai-shan-dezhuan-song-liang-wojian-rasitaohanasi : デフォルトの名無しさん [sage] 2018/03/08(木) 16:57:24.84:XQ95i3sC ドワンゴや渋みたいな画質最悪回線ptptのプラットフォームの技術()なんて参考にならん Youtubeとか嗶哩嗶哩とかネトフリくらいのプラットフォームが全く採用してない時点でお察しだろ : デフォルトの名無しさん [sage] 2018/03/08(木) 17:38:09.62:3H4xAb5h アンチのいない言語ってあるんかな? それって誰が見ても引っかかることがなくて無難で分かりやすい言語ってことだよね。 、、、、C言語かな? いやーないか。Pythonかな? : デフォルトの名無しさん [sage] 2018/03/08(木) 18:00:05.39:gkfiSzw4 C 言語は基本だよね… : デフォルトの名無しさん [sage] 2018/03/08(木) 18:05:00.88:cve6DJMj マクロ中途半端じゃん : デフォルトの名無しさん [sage] 2018/03/08(木) 18:06:09.58:My+VxY9/ Goが嫌われるのは、意識高い系の人間が欲しがる機能をオミットしたからだろ。 欲しがるやつはバカぐらいの事言ってるし。 学者と機械屋が仲悪いのと同じようなもんで。 : デフォルトの名無しさん [sage] 2018/03/08(木) 20:42:30.56:Qr0iRnUQ 機能をオミットする方向を示しただけでもgoは価値あるよ。 他の言語はバカみたいに機能を追加する方向しかみてなかったし。 : デフォルトの名無しさん [] 2018/03/08(木) 20:50:41.00:OEgQLKAy 採用例提示しろって言われたから東証一部上場企業の採用例をいったらいったでまた難癖つけるね グダグダ言ってないで自分が使わなきゃいいだけじゃん それでもニコニコがRustでオリジナルファイルシステムまで作ってあのクソさってのはいろいろ思うところはある よくもまあ10年近くも金をオフパコ会議に突っ込んでろくに鯖の整備もせずに来れたもんだ : デフォルトの名無しさん [sage] 2018/03/08(木) 20:53:13.13:39/jgBm7 FacebookのMononokeとかも除外なのかな 有名所が軒並み使わないと認めないんだろうな、いやそれでも否定するか : デフォルトの名無しさん [sage] 2018/03/08(木) 21:19:24.31:3H4xAb5h オミット大事だよね。バージョンを重ねていくと機能追加しかできないから 最初の機能は絞ったほうがいい。 Goにはきっと既存にはない独自発想のジェネリクス的な物が搭載されるであろう。 賛否両論なやつが。 : デフォルトの名無しさん [sage] 2018/03/08(木) 21:38:40.38:EsrBfKCX 「例外を無くした。あれは大域ジャンプだ。行き先の見えないgotoだ。 フローが無茶苦茶になる、複数の戻り値返すから各自チェックするように。 複数の戻り値返せるからマジックナンバーとか返すなよ」 なんて、割り切りというより考え抜いたであろう仕様も、結構叩く人は叩くしな。 ジェネリクス的なものはどうなるんだろう。 正直型でのswitchでだいたい事足りてるし。 : デフォルトの名無しさん [sage] 2018/03/08(木) 21:46:19.70:to5KOUcv 関数の引数にinterface{}型が入るのは良くない。これだけは是非とも改善したい : デフォルトの名無しさん [sage] 2018/03/08(木) 21:52:55.87:EsrBfKCX 何で? コンパイルする時に誤りに気づかないとかそういう話? void*が渡せるよりも、interface{}は実際には型持ってるからよほどマシな気が。 ジェネリクスしたらすごい数の関数が作られうるし、使い方の問題な気がするけどな。 そもそも継承という概念が希薄だから、ジェネリクスにしても幸せになれないと言うか、明示的に何らかのinterfaceを渡す方がマシだと思う。 Writer受ける関数みたいに。 : デフォルトの名無しさん [sage] 2018/03/08(木) 22:31:36.69:to5KOUcv 実行時に解決するのは極力避けたい。 防衛的プログラミングをしたい。 AST系ライブラリを使いこなせるようになってコード生成でもいいけど。 : デフォルトの名無しさん [sage] 2018/03/08(木) 22:35:27.75:Qr0iRnUQ テストコード書くのは嫌だってだけだろどうせ。 : デフォルトの名無しさん [sage] 2018/03/08(木) 22:37:10.68:bpZjqWPW 例えば今、任意のオブジェクトを格納できるコンテナ (二分木でもハッシュマップでもブルームフィルタでも) のライブラリを作りたいとしよう このライブラリに、初期化時に任意の型しか格納できないようにする まあつまりJavaのList<T>みたいなことをしたいと考えたときに Goでは型ごとにラッパをつくって実行時に動的にチェックする以外に実現方法がない これをコンパイル時にチェックしたいという要望は自然と思うが? : デフォルトの名無しさん [sage] 2018/03/08(木) 22:46:42.29:bpZjqWPW つか自分で言ってて思ったがこれinterface{}が悪いとかじゃなくて 単純に高階型が欲しいってだけの話だわ : デフォルトの名無しさん [sage] 2018/03/08(木) 22:51:14.55:to5KOUcv それもあるけどライブラリを提供するときに引数がinterface{}だとドキュメントに説明がいるでしょ。そういうのが嫌。 : デフォルトの名無しさん [] 2018/03/08(木) 23:04:06.14:y3Zn8R8X コンパイルが遅くなるので人間が出来る事は人間がやってください : デフォルトの名無しさん [sage] 2018/03/08(木) 23:05:42.03:Qr0iRnUQ どっちにしろ実行時に起こる現象は説明が必要だろ。 確かに動的だったりテンプレートみたいなもんだと読むのきついなと思うことがあるけど 型で述べられる記述力なんてコード量の割にそんなに豊かなもんでもない。 俺は優良なドキュメトとテストコードのが上回ると思ってる。 goのinterfaceと比べて継承の方が入力の範囲を特定する能力は高まるけど、 同時に型情報をどっさりコンパイラと人間に読ませることになるわけだ。 割にあってると思わない。 : デフォルトの名無しさん [sage] 2018/03/08(木) 23:10:55.43:yZMqeuJA やっぱり型クラスって神だわ : デフォルトの名無しさん [sage] 2018/03/08(木) 23:12:19.99:bpZjqWPW Scalaとか見てると気持ちはすごくわかる しかしせめてコンテナ型くらいは型制約欲しいという気持ちもわかってくれ : デフォルトの名無しさん [sage] 2018/03/08(木) 23:39:44.92:EsrBfKCX 型に階層があるという事が前提になってる時点で、goに向いてないんじゃない? : デフォルトの名無しさん [sage] 2018/03/09(金) 00:31:33.39:IWA+PY9Z "is a" の機能をomitして "has a" とかmixinとかtraitを使う方向 : デフォルトの名無しさん [sage] 2018/03/09(金) 00:49:56.76:cqMSJuy/ ちょっと具体例が浮かばなくて適当な説明になるけど ある引数に io.Reader もしくは io.Writer だけが来て欲しいって場合に interface{}で一旦受け入れてどっちかじゃなかったらエラーって書くのがしんどいの。 引数にio.Reader | io.Writerって書けるようになれば どっちかしか来ないことが保証されるからエラーハンドリングのコードが減る。 別に型システムがほしいとかじゃなくて なんでも受け入れるinterface{}にしてしまう状況を避けたい。 : デフォルトの名無しさん [sage] 2018/03/09(金) 04:10:38.55:4sIM9IpC R | W より Or<R, W> が良い 記号を使うと記号アンチがうるさいし、継承と総称型を混同するやつもうるさい : デフォルトの名無しさん [sage] 2018/03/09(金) 07:28:22.67:zhxSKG5B その場合 `Or<A, Or<B, C>>` と `Or<Or<A, B>, C>` の等価性どうする?って話しになるけどね : デフォルトの名無しさん [sage] 2018/03/09(金) 08:17:11.21:kL3iaTSl そんな気持ち悪い関数嫌だな…。 分けられないの? : デフォルトの名無しさん [sage] 2018/03/09(金) 08:18:50.78:kL3iaTSl それはもう、今の定義されたinterfaceで充分だとなってしまうのでは? : デフォルトの名無しさん [] 2018/03/09(金) 09:19:07.89:Nb7UaI4p せめてパターンマッチくらいは入らんかなあ 型判定のためにifをダラダラ並べるようなコードなんて誰も嬉しく無いよ :=もあるんだし構文糖衣まで全て拒否してる訳でも無いだろうに : デフォルトの名無しさん [sage] 2018/03/09(金) 10:34:44.49:cqMSJuy/ まぁ例えばだから。もっとぴったり来る例を示せればよかったんだけどね。 関数のオーバーロードも合わせて欲しいな。関数名考えるのがしんどい : デフォルトの名無しさん [sage] 2018/03/09(金) 10:59:00.45:kL3iaTSl switchは? : デフォルトの名無しさん [sage] 2018/03/09(金) 10:59:28.74:FTtEfiG6 静的型システム全否定だなお前のレス : デフォルトの名無しさん [sage] 2018/03/09(金) 12:12:54.21:sqnwGWQK ドキュメントが常に最新の状態であることを静的に 保証する方法がない限りは静的型付けの型情報の方が信頼できる 腐ったドキュメントほど有害なものはない 腐らせるヤツが悪いとか言われそうだが 腐らせるのは自分ではなく同じチーム内の誰かだ 他人よりコンパイラの方が信頼できる : デフォルトの名無しさん [sage] 2018/03/09(金) 12:43:31.33:kL3iaTSl interface{}を他の言語のobjectみたいなほんとに雑な受け方と一緒にしないでくれよ…。 実際に書いたら、結構使う場面が限られて来ることもわかるだろ…。 オーバーロードの禁止ははまあ必要悪だと思う。 型同士に階層が無いので、2種類のinterfaceを受ける関数があったとき、その2つともを実装している型に対して関数が定まらんのでは? : デフォルトの名無しさん [sage] 2018/03/09(金) 12:56:29.64:7FF0Q/q6 してねえよ コンパイル時の型制約を足したいって話で、機能的にinterface{}への switch t.(type) で十分なのは承知の上 ifが並ぶっていってる奴はたぶんswitchで型判定できるの知らない気がする : デフォルトの名無しさん [sage] 2018/03/09(金) 13:27:20.95:RwDfRr6t 仮にGoにジェネリクスを実装するとしたらどこまで必要になるんだろ 共変性と反変性は必要? 部分適用は必要? C++のメンバ型みたいなのは必要? : デフォルトの名無しさん [sage] 2018/03/09(金) 13:32:11.39:FTtEfiG6 そんな難しいのはいらねーから宣言的に書かせろ : デフォルトの名無しさん [sage] 2018/03/09(金) 15:24:58.40:hv4D8Q9B object型と同じだと思ってたわ。具体的な違いとメリットを頼む。_φ(・_・ : デフォルトの名無しさん [sage] 2018/03/09(金) 16:38:15.55:kL3iaTSl 渡されたものをどう解釈するかの余地が他の言語と結構違う たとえば、 type xxx struct {} func (x xxx) foo(){} func (x xxx) bar(){} type Ixxx interface { foo() } func (ix Ixxx) bar(){} があったときに、interface{}で受けたものをアサーションでxxxとすると、xxxのbarが、 アサーションでIxxxとすると、Ixxxのbarが呼ばれる。 あくまで、すべての構造体はinterface{}を満たしているだけで、実際には型を持ってるし、 interface{}とIxxx{}も満たす範囲が違うだけで上位下位ではないし、構造体の型とも違うのでレシーバは別になる。 interface{}から派生したものではないって感じ。 : デフォルトの名無しさん [sage] 2018/03/09(金) 17:07:33.29:4sIM9IpC もしかしてswitchに型チェック機能追加したやつが戦犯かな ただのVisitorパターンならジェネリクス対応は難しくなかった : デフォルトの名無しさん [sage] 2018/03/09(金) 18:13:47.78:kL3iaTSl 型チェックでswitchとジェネリクスは全く関係ない。 オーバーロードと同じく、何として処理するかと、その型が何か、に関して曖昧性を排除してるから。 暗黙のキャストも無いでしょ。 戦犯呼ばわりはどうかと思う。他の言語に毒されすぎ。 : デフォルトの名無しさん [sage] 2018/03/09(金) 19:09:25.15:kljWqerj Goにオーバーロード無いの批判される事あるけど HaskellやRustだって型クラスやトレイトを使わないとオーバーロードできないし TypeScriptも型が多重定義できるだけで実体は一つだし むしろ最近の言語はC++みたいな単純なオーバーロード付けないのがトレンドな気がする : デフォルトの名無しさん [sage] 2018/03/09(金) 19:11:17.45:dAbxViV8 一方Cには_Genericがついた : デフォルトの名無しさん [sage] 2018/03/09(金) 20:41:59.05:lMH5BOjd ドキュメントよりコンパイラのが信用できるかも知れんが それ以上にテストコードの実際の動作のが信用できるよ。 c++まともに開発に使ってた奴ならどれほどコンパイラだよりが危ういかわかると思うけどね。 : デフォルトの名無しさん [sage] 2018/03/09(金) 20:50:57.42:mtotlLHa コンパイラが頼れないからC++から離脱したがってるわかで…… : デフォルトの名無しさん [sage] 2018/03/09(金) 21:48:54.86:OETiniYx むしろオーバーロードと型推論を共存させたいというのが型クラスの最初の動機だったのでは : デフォルトの名無しさん [] 2018/03/09(金) 21:50:23.61:sqnwGWQK そりゃテストコードが全てのコードに対して書かれていたらの話で 実際にはテストカバレッジ100%なんてあまり現実的な数値じゃない GUIの場合はテストを書くこと自体がなかなか難しいし、他にも仕様が変わりやすいような 部分は変わるたびにテストも書き直すんじゃ、コストが割に合わないこともある それらを考慮して、あえてテストを書かないという選択をすることも充分あり得る 静的型付けならテストが書かれていない部分でも型情報からある程度ならチェックが出来る 動的型付けはテストがなければ何もチェックできない テストを書かない奴はバカみたいな言い分はあまり好きじゃない テストカバレッジ100%を目指す奴のほうがよっぽどバカだと思う : デフォルトの名無しさん [sage] 2018/03/09(金) 22:24:57.88:mOP6pgpS C++の型安全とHaskellの型安全って随分違うでしょ 理論がしっかりしてて型システムが豊かな方が型安全で提供される品質は高い Haskellは「コンパイルが通れば大体想定通りに動く」って言われる程度には型を信じれるよ これが行き過ぎるとIdrisやCoqみたいに「実行できれば仕様を満たしている」みたいな開発もできる ハードル高いし実用できるほど簡単じゃないからまだ何個かブレークスルーが要るがね : デフォルトの名無しさん [sage] 2018/03/09(金) 22:28:04.16:5gZ3T8dE 残念ながら他言語のobject型とinterface{}の違いがこの説明ではよくわからん。 あんさんは他の言語のobject型を雑な受け方と評したんだぜ。具体的にこの説明では、 なるほど他の言語のobject型で値を受け取るのは雑な受け方だった。って納得しない。 どのへんが雑じゃなくなってるわけ? : デフォルトの名無しさん [sage] 2018/03/09(金) 22:30:56.35:5gZ3T8dE qiitaの記事でだいたいカバレッジが85%位が理想値でそれを超えるとしんどくなるだけで意味ないってのは見たな。 : デフォルトの名無しさん [] 2018/03/10(土) 09:17:00.38:iLIqn+zB C++のコンパイラに頼るのは危ないってのはテンプレートがダックタイピングだからじゃないの? だとしたら、それは単にC++のテンプレートの仕様がクソってだけの話で C++のコンパイラがクソって言うのは筋違いだと思うんだけど… それとも他に理由があるの? : デフォルトの名無しさん [] 2018/03/10(土) 09:30:50.15:iLIqn+zB 書いた後で思ったけど、 C++のテンプレートってダックタイピングって言われてるけど きちんとコンパイルエラーになったような…? 使ってたの3年以上前だから忘れた。どうだったっけ? : デフォルトの名無しさん [sage] 2018/03/10(土) 09:57:39.05:X26PuUpn たぶん135は、コンパイラがバグってて出力される機械語が怪しいという話をしてる 別にC++に限った話ではないんだけど昔は結構多かった : デフォルトの名無しさん [sage] 2018/03/10(土) 10:03:15.55:V+AonR8i うーん。なんにでもなれるスーパークラスで受けてるんじゃなくて、何もかもを満たすインターフェイスで受けてる。 クラスというか構造体同士に階層も無いし、 インターフェイス同士にも無いから。 だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、 むしろどうキャストするか(何がほしいか)で、それに合わせたレシーバを呼んだりできる。 : デフォルトの名無しさん [sage] 2018/03/10(土) 10:07:28.98:ZLY5MDI0 なのになぜライブラリのバグがちょいちょい発覚するの? : デフォルトの名無しさん [sage] 2018/03/10(土) 10:47:28.09:wavGSJ3d 普通は型の階層を利用したキャストの方が丁寧で Goのような要件さえ満たせばなんでもキャストできる方が雑なんだけどな 雑なGoに丁寧なジェネリクスは似合わないって話の方がしっくりくる : デフォルトの名無しさん [sage] 2018/03/10(土) 11:47:59.83:BpWzRYHd 動的型は丁寧なコードも雑なコードも書けるよ 静的型のキャストは雑なコードだけを集めて濃縮したような存在 : デフォルトの名無しさん [sage] 2018/03/10(土) 12:02:58.66:vrfy4Usj 型の階層ってのからまず脱却した方が良いところだと思うけどね。 型の階層の横紙破りとしてインターフェイスを作ってさらにインターフェイスも階層を持つとか、goやり始めてから悪手な気がしてきた。 他の言語もmixinとかtraitなんかで色々やってるけど、そういう方向で対応すべきもんなんだと思うよ。俺は。 rubyのようにobjectの親を作る羽目になったり、どのみち破綻する。 型の継承による、と言うが、型の継承に頼ったキャストとしか言いようが無いんでは? : デフォルトの名無しさん [sage] 2018/03/10(土) 12:03:37.10:ysTMLqRd >だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、 どういうこと?Object型は大抵すべてのインスタンスの親のはずでは? 一度Object型の変数に突っ込んだなら、それってもう実質、動的言語的扱いになるから人間側が元の型を意識しなきゃいけない。 これはGoでもおんなじでしょ? あと以下は正直どうでもいい話なんだけど敢えて突っ込む。 Goのインターフェースは階層構造を持たないって言ってるけど も結局用語の違いってだけで実質階層構造みたいなのはあるでしょ。 Io.ReadWriter は io.Writerを内包している io.Writerはからインターフェースを内包している Io.ReadWriter => io.Writer => interface{} 他の言語は階層構造を明示しているけどGoの場合はそれがコンパイラによって自動化されているってだけでは? もちろん自動化されているってのはありがたいけどね。 : デフォルトの名無しさん [sage] 2018/03/10(土) 12:07:47.02:XYrxJ2qt 静的ダックタイピングって言われてる 本質は変わらない : デフォルトの名無しさん [sage] 2018/03/10(土) 12:13:23.90:ysTMLqRd 動的型のキャストと静的型のキャストに違いがあるとは思えないけどなぁ。 俺の考え方はこう。 動的型: 人間側で型の追跡を頑張る 静的型: コンバイラ側に型の追跡を任せる。ただしobject型とかに渡すことで人間側で頑張ることもできる。 動的型は基本雑なコードだらけ。人間側が型を決め打ちしてメソッドを実行しないとやってられない。 だって毎回instanceof とかで型をチェックしてからメソッドの実行とかしてないでしょ? : デフォルトの名無しさん [sage] 2018/03/10(土) 12:16:33.64:eUrbDIYn 説明されてわかるような奴がを書くと思うか? : デフォルトの名無しさん [sage] 2018/03/10(土) 12:24:33.09:bKdAMFdx そんなことないよ。例えばtoStringみたいな、親から生えてるメソッドは、objectのまま呼べて、しかもインスタンスのメソッドが呼べるでしょ。 goはそうはなってないの。インターフェイスをレシーバとする関数が呼ばれる。 内包してないよ。 ReaderはReadを WriterはWriteを ReaderWriterはReadとWriteを実装しているインターフェイスなだけ。別のインターフェイス。そこに上位下位は無い。 階層構造が暗黙に決まってるんではなくて、そもそも階層構造を持ってない。 : デフォルトの名無しさん [sage] 2018/03/10(土) 12:35:41.84:9xaE30s9 なんでもできる c++ で書くなら なんのメンバーも持たない class interface の直接の 派生型として色んなインタフェースがあるようなもんか COM に似てるな、というか COM のインタフェースの概念の焼き直しか。 : デフォルトの名無しさん [sage] 2018/03/10(土) 12:36:05.42:X26PuUpn ダックタイピングとnominalな階層型の違いを言葉を変えて繰り返しているだけで 問題のinterface{}がobjectより良いという説明にはなってないな : デフォルトの名無しさん [sage] 2018/03/10(土) 12:42:10.90:jPHJ8KIe 別に全部のコードにテスト書けとは思わんが それでもそこまで引数の型がどうなのか気になるインターフェイスなら テストコード書けよ。 てかそこまで作業が圧迫してるなら型をガッチガチにやる言語のが 調整する手間考えた場合割に合わんだろ。 : デフォルトの名無しさん [] 2018/03/10(土) 13:01:42.42:iLIqn+zB どの程度なら「気になる」のかってところに認識の違いがありそうだな 静的型派の人間は全てコードの型情報が気になっちゃうんじゃない? 少なくとも俺は全ての引数の型が気になってしまうタイプの人間だよ : デフォルトの名無しさん [sage] 2018/03/10(土) 13:02:25.28:BpWzRYHd 動的型のコードは二種類に分けられる 静的型で丁寧に書いてから型を省略したようなコードと 静的型で雑に書いてから型を省略したようなコードだ : デフォルトの名無しさん [sage] 2018/03/10(土) 13:10:46.65:wavGSJ3d 「階層を持つから安全にキャストできる」と「安全にキャストできるから階層を持つ」がごっちゃになってる人がいる : デフォルトの名無しさん [sage] 2018/03/10(土) 13:12:51.16:jPHJ8KIe まあ極論すれば感覚的な話だしね。 感覚として型を気にして助かることなんて 5 % くらいじゃないかと思ってる。 対してテストがある場合は 40~50%くらい助かる。 準備するコストとして型が 10~20 としたらテストは 30~40 といった印象。 なんで個人的にはそこまで型を整備するよりかはテストに時間使った方がいいと考えてる。 まあ抽象論一発で済めば嬉しいって気持ちはわかるんだが 実際そうはならんからね。。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:17:24.66:V+AonR8i 端的に言えば、スーパークラス(と言う概念もないが)にキャストしてして渡してない、as-isで渡してると言うところが違うし大きい。 良いとも言ってないぞ。 違うし混同するなと言ってる。 Objectに相当するものが無いので、良いも何も比較対象ではない。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:21:00.62:CNpckm4H スーパークラスにキャストねえ。 どの言語でもその場合は as-is で渡るだろう : デフォルトの名無しさん [sage] 2018/03/10(土) 13:23:17.42:V+AonR8i 暗黙的にでも、ね。 Objectで受ける、Ienumerableで受けるを含めて。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:24:20.18:V+AonR8i as-isで渡るは確かに語弊があったな。 別の型のオブジェクトやインターフェイスとして渡されてるんじゃなくて、って感じ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:27:51.68:X26PuUpn でobjectを雑と評したからには当然interface{}の方が良いという主張と思ってたんだが 実際の詳細は別にしてあなたの説明では聞けば聞くほど同じとしか思えない 俺じゃないがなんかCOM的な構造で代替可能という理解をしてるし : デフォルトの名無しさん [sage] 2018/03/10(土) 13:31:43.54:CNpckm4H とはいえ言いたいことはわかる オブジェクトに似ているがオブジェクトを渡しているわけではない、 オブジェクトとそれの持つインタフェースは1対多 COM のインタフェースや多重継承を用いた場合のC++に似ている 特に前者とはほぼ完全に同じものだ インタフェース抽象って奴だね この場合実行モデルとしてはインタフェースに階層関係は要らなくなる 複数のインタフェースを持つことから(派生による差分宣言、差分実装ではなく) ミックスインが基本となるから。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:31:58.31:BpWzRYHd as-is型に実装を合わせるテンプレート as-is実装に型を合わせるキャスト これが次世代の争い 動的型は次世代ではないから政治的中立 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:52:58.58:V+AonR8i 同じではないでしょ。 COM的な構造で代替可能ってのは、自身は理解してるの?理解してたらそのレスにはならんと思うけど。 そもそもが思い込みで人の発言に「良い」を勝手に補完してなんでそんなにしつこく食いついてくるかわからん。 理解が足りなくて同じだとしか思えないなら開き直らないでほしいわ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:54:45.25:ysTMLqRd だから階層構造がないのはわかってるつーの。実際的な違いがないっていってるの。 実質Object型 とinterface{} はおんなじ扱いにしかならない。 Object型にはtoStringがあるけどinterface{}にはない? 別にそんなのはどうでもいい話。 interface{} に値を突っ込むと人間側が型を意識する必要がある。 動的言語的な扱いになっちゃう。 この点においてObject側と一緒だよね。 ここが最大の肝であり、「Object型でうけるのは雑」っていってるのはこの部分に差があると期待して質問したのに、 そこに関しては違いを見出していない。 なら雑な理由って何よ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 13:55:30.73:wavGSJ3d 今気が付いたがの言ってることは根本的に間違ってる みたいなインターフェイスのレシーバはそもそもコンパイル通らない つまりどの型にキャストしても同じレシーバが呼ばれることが保証されてる そこがGoの型は階層を持たないという根拠になってたはず エアプは黙ってろ : デフォルトの名無しさん [sage] 2018/03/10(土) 13:57:07.23:X26PuUpn IUnknownが便利に使われてるのと QueryInterfaceの実装次第でメンバーに飛ばすこともできるのが似てるって話だろ COMは実装側が応答する型(GUID)を決めないといけなくてダックタイピングにはならんから 俺は必ずしも似てるとは言わんけど、あなたの説明はそう思われてもしょうがないってことだ : デフォルトの名無しさん [sage] 2018/03/10(土) 14:21:55.45:BpWzRYHd classの多重継承ができる言語ならinterfaceはclassの構文糖ということにできた 多重継承を制限したことでinterfaceとclassの互換性が非自明になった : デフォルトの名無しさん [sage] 2018/03/10(土) 14:23:37.99:V+AonR8i これは例が悪かったか。 スマホで書いたからすまん。 ある型にアサーションした場合、アサーション先の型のレシーバが呼ばれるよ。 もとのレシーバではない。 : デフォルトの名無しさん [sage] 2018/03/10(土) 14:26:15.83:V+AonR8i おんなじ扱いをすれば同じになるだろうな。 扱い方の余地の問題なんだが。 人間側が型を意識する必要がある、この点に於いてObjectと同じと言うのは雑すぎる。 動的言語的扱い方と言うか、jsonのUnmarshalなんか見た方が多分わかりやすいと思う。俺が言ってることは。 : デフォルトの名無しさん [sage] 2018/03/10(土) 14:26:53.39:V+AonR8i 説明が悪いのは申し訳ない。 : デフォルトの名無しさん [sage] 2018/03/10(土) 14:31:49.68:V+AonR8i interface{}で受ける関数を呼ぶときは、 とりあえず、スーパークラスのObjectに(暗黙的に)キャストして渡してるのではなくて、あるインターフェイスを実装している型として渡してる。 全クラスがIfooをimplementsしている状態で、Ifooを受けているだけ。 そこにキャストは発生してないし、だから、キャストではなくアサーションで型を判定するだけで(キャスト無しで)中身の型が分かる。 その時に、もとの構造体ではなく、あるインターフェイスとしてアサーションする事ももちろんできる。 そこだけでも伝わってほしい。 : デフォルトの名無しさん [sage] 2018/03/10(土) 14:33:10.73:V+AonR8i しかし、また「エアプ」かw 好きなんだな、その言葉。 : デフォルトの名無しさん [sage] 2018/03/10(土) 14:47:03.22:BpWzRYHd キャストは雑 アサーションは丁寧 という説が伝わってきた : デフォルトの名無しさん [sage] 2018/03/10(土) 14:56:06.20:ysTMLqRd それって結局reflectバッケージを見ろってこと? 型キャストが雑ってこと? 型アサーションだと型が合わないとerrorを返すから雑じゃないってこと? : デフォルトの名無しさん [sage] 2018/03/10(土) 15:25:20.56:opL9wLKH 雑なほうがいいんだよ。that's rightって言うだろ? : デフォルトの名無しさん [sage] 2018/03/10(土) 15:26:15.03:Uh7G7RUR アサーションが丁寧というのは語弊があるが、インターフェイスからのアサーションはそもそも本来の型自体も持ってるのでキャストしているわけではなく、assert、言明し直してるだけで、別の型として一度も扱わない。 : デフォルトの名無しさん [sage] 2018/03/10(土) 15:28:33.49:wavGSJ3d アサーションでもレシーバが変わることはない 自分で試したことないから分からないんだろ のキャスト無しで渡してるってのも間違いで実際はキャストされてる キャスト無しで渡してたらそれはジェネリクスだ たぶんはポインタや参照を理解してなくてキャストの意味をはき違えてる objectにキャストしたら静的オブジェクトが動的オブジェクトに変換されると思い込んでるようにしか見えない : デフォルトの名無しさん [sage] 2018/03/10(土) 15:39:34.50:Uh7G7RUR あることあるから、レシーバが変わる事知ってるんだよ。 そうじゃない。履き違えてないよ。 ジェネリクスはもっとちがう。コンパイル時に関数自体が型ごとに分かれるのが俺が言うジェネリクスとオーバーロード。 オブジェクト指向脳でわけわからん事言わないで。 : デフォルトの名無しさん [sage] 2018/03/10(土) 15:56:33.06:ysTMLqRd が、言いたいことを整理すると Go言語のinterface{}は他言語のObject型とは違う。 なぜならGo言語のinterface{}型は内部的には型情報を保持しており reflectバッケージを使うことでいつでも元の型情報を取得できるから ってことでOK? これって逆に言うと他言語のObject型は内部的に元の型情報を保持しないの? : デフォルトの名無しさん [sage] 2018/03/10(土) 16:04:38.45:X26PuUpn 本来のデータポインタはそのままで実行時型情報をペアにしてinterface{}(fat pointer)にしているのを キャストしているしていない言い張ってるだけかな。まあ言葉はどっちでもいいが ちなJavaタイプのnominalなinterfaceや多重継承はデータポインタに特定のオフセットを加減算する(ポインタの値が変わる) 場合がほとんどだが、fat pointer方式の実装も無いわけではない : デフォルトの名無しさん [sage] 2018/03/10(土) 17:15:29.87:3swSila5 いや保持してるよ RTTIってやつだね : デフォルトの名無しさん [sage] 2018/03/10(土) 17:37:00.44:Hgt7PccX エアプ呼ばわりされて過剰反応するのが真のエアプ エアプでないことを示すのが普通の人 : デフォルトの名無しさん [sage] 2018/03/10(土) 17:37:33.50:Uh7G7RUR 内部的に持ってるが、クラス構造が階層型であるが故にObject型という型で扱われた上で、サブクラスにダウンキャストするじゃん?で、またアップキャストするかもしれん。 だからジェネリクスやオーバーロードだと共変なのか反変なのか、あるいは非変なのかが問題になるし、Javaなんかはジェネリクスは非変だけど、配列は共変みたいな事になってるし、c#なんかだと最近変性注釈できるようになったり、まだゴタゴタしてる。 ちなみに、interfaceへのアサーションはreflectとは違って、interface自体が型を持ってるので、reflectで型を判定したりメソッド呼ぶのとは結構な差がある。 古いけどこのへんか。 ttps://research.swtch.com/interfaces : デフォルトの名無しさん [sage] 2018/03/10(土) 17:38:52.17:Uh7G7RUR エアプのプロは言うことが違うな。 : デフォルトの名無しさん [sage] 2018/03/10(土) 17:47:29.26:NO/eROxb エアプなんか使ったって、レッテル貼るだけで議論ができないようにしか見えないんだからやめときなって : デフォルトの名無しさん [sage] 2018/03/10(土) 17:49:06.20:ngO/N0HJ それが楽しいんだろ、いつもその言葉使うところ見たら。 : デフォルトの名無しさん [sage] 2018/03/10(土) 17:59:38.11:ysTMLqRd >共変なのか反変 急に分かんない用語が出てきて混乱したが ttp://www.thekingsmuseum.info/entry/2016/02/07/235454 が参考になった。非変って用語がないが不変の言い間違い? : デフォルトの名無しさん [sage] 2018/03/10(土) 17:59:39.44:jPHJ8KIe いや全く楽しくねーわ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 18:20:49.51:ysTMLqRd 例えば func ToString(any interface{}) string { if v, ok := any.(Stringer); ok { return v.String() } switch v := any.(type) { case int: return strconv.Itoa(v) case float: return strconv.Ftoa(v, 'g', -1) } return "???" } 上記コードはこうできるようにして欲しい func ToString(any (Stringer | int | float)) string { if v, ok := any.(Stringer); ok { return v.String() } switch v := any.(type) { case int: return strconv.Itoa(v) case float: return strconv.Ftoa(v, 'g', -1) } } 引数にinterface{} があるのはやっぱりJavaとかで引数にObject型が来るのと同義だと思うわ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 18:22:28.94:opL9wLKH こっちのページの下のほうに書いてあるじゃん ttp://www.thekingsmuseum.info/entry/2016/02/11/111718 : デフォルトの名無しさん [sage] 2018/03/10(土) 19:46:35.03:YxlaXMRK 結局Objectの方がinterface{}より保証されてるものが多いから、雑なのはinterface{}の方じゃーん : デフォルトの名無しさん [sage] 2018/03/10(土) 21:09:45.80:ihrcyggr これ最高に型無しクソペチパー指向的レス : デフォルトの名無しさん [sage] 2018/03/10(土) 22:06:56.73:V+AonR8i 保証されてるものが多いんじゃないよ。 保証されるべきでない関連性を持ってないものも、関連性を持っているかのごとく扱われるんだよ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 22:10:01.27:V+AonR8i 自分が知らないものをたったひとつソースから「言い間違えなのか?」と言うのはどうかしてると思うわ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 22:20:22.04:V+AonR8i ToStringなんて関数をinterface{}で受けて中で適当に処理するってこと自体だと思う。 そんな事するぐらいなら、使いたいintとfloatを名前つけてちゃんと型定義して、Stringer実装するほうがまともでは? ライブラリならまだわかるが、ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」であって、基本的にはなんでも受け取りたいから使うための型ではない。 普通のオブジェクト指向言語でもそうだろ。 後半のコード例に至ってはコンパイル時に検出したいだけだろ。 オーバーロードさせろってんならまだわかるが。 コンパイル後に消えるようなもの書いて喜ぶ事こそ馬鹿らしいわ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 22:32:59.68:ysTMLqRd どっちかというとこれを見て思ったんだが ttps://ja.wikipedia.org/wiki/%E5%85%B1%E5%A4%89%E6%80%A7%E3%81%A8%E5%8F%8D%E5%A4%89%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6) : デフォルトの名無しさん [sage] 2018/03/10(土) 22:36:50.46:ysTMLqRd >後半のコード例に至ってはコンパイル時に検出したいだけだろ。 それこそキモだろ。静的言語を使う理由って。 これが嫌なら動的言語使ってなよPHPとか : デフォルトの名無しさん [sage] 2018/03/10(土) 22:40:31.66:ysTMLqRd >ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」 現状のGoでそういう理由でinterface{}を使ってる状況ってどんだけあるんだよ。 それじゃすまないからジェネリクスを欲しがってるんでしょうが。 : デフォルトの名無しさん [sage] 2018/03/10(土) 23:44:31.64:V+AonR8i ホントだな。これは俺が少数派らしい。 高飛車に言ってすまん。 : デフォルトの名無しさん [sage] 2018/03/10(土) 23:45:51.56:O29r5RSu こいつ例のヤベェ奴か : デフォルトの名無しさん [sage] 2018/03/10(土) 23:47:15.74:V+AonR8i キモではないよね。 それは単なる横着のコンパイラへの責任転嫁であって。 void*みたいな無茶苦茶な型があるのも静的言語だが、別に型チェックしてほしくてコンパイルしてるわけじゃないぞ。 : デフォルトの名無しさん [sage] 2018/03/10(土) 23:49:44.45:V+AonR8i 結構あると思うけど。 それで済むから、頑なに「未だ早い」と本家が言い続けてるんでしょ。 済まないならもっと早く導入されてるわ。 そんなに変化ねえじゃんと思いがちだが、ホントに要るなって機能はちゃんと入ってきてるよ。ライブラリの出力しかり、ベンダリングしかり、次はモジュール予定されてたり。 : デフォルトの名無しさん [sage] 2018/03/10(土) 23:50:33.63:ihrcyggr 早くPHP歴4000年秘伝のソースにウンコを継ぎ足す作業に戻れよ 工数の無駄だぞ : デフォルトの名無しさん [sage] 2018/03/10(土) 23:53:30.10:1bOlQOUq このスレ見てたら俺はC++とPythonでいいやって思えてくる : デフォルトの名無しさん [sage] 2018/03/10(土) 23:57:26.44:O29r5RSu こんなスレに影響されんなよ…… 因みに俺はCとPythonとFortranとMathematicaでいいと思う : デフォルトの名無しさん [sage] 2018/03/11(日) 00:04:08.68:oVmCfuF5 非変、はScalaあたりから来てるのかな。記憶が曖昧。 : デフォルトの名無しさん [sage] 2018/03/11(日) 00:44:51.07:RCfxSBiR CとPythonの二刀流ずるい C++むずい だからJavaとかGoとかの支持率は下がらない : デフォルトの名無しさん [sage] 2018/03/11(日) 00:52:28.92:7XeGL+nE あとCみたいな旧世代な言語を静的言語代表にされても。 あと横着はプログラマの美徳だよ。 現在進行形で議論中だよ。安易に入れたくないだけで必要性は明らかだろ。 ttps://github.com/golang/go/issues/15292 というか他のジェネリクスがある言語を使ってるとわかると思うんだけどな。このイライラ感。 まぁ関数のインターフェースにinterface{}型があっても気にしない人間もいるという事実があることは勉強になったわ。 そういう人間もいるんだ。 : デフォルトの名無しさん [sage] 2018/03/11(日) 00:57:35.32:fQarczMf は自爆というかむしろダックタイピングの方だよね? : デフォルトの名無しさん [sage] 2018/03/11(日) 01:05:04.16:7Ky5zjn9 反変共変とかすぐに数学用語を取り込んで違う意味にする : デフォルトの名無しさん [sage] 2018/03/11(日) 01:18:09.18:fQarczMf を斜め読みしたけど、既存のinterface{}なやつと互換を取るためJavaのgenerics同様にするか それとは別に問題を捨て去るためD言語やMLみたいな名前空間単位のやつを入れるかで議論してるな genericsなんて大物は後から入れてもJavaのようにしかならんとは思っていたが (失礼ながら)goのような保守的な言語に今までのスタイルを捨てさせるような変更を入れられるのかは気になった : デフォルトの名無しさん [sage] 2018/03/11(日) 01:37:42.02:7XeGL+nE GoBlogでGo2はGo1と下位互換性を保つと宣言してるから破壊的変更をせずに導入するだろうね。 どうやるか全く想像がつかない : デフォルトの名無しさん [] 2018/03/11(日) 01:53:41.48:vy+Y2xiY やっぱり認識の違いが激しいな。これじゃ話が合わんわけだわ おれの感覚を書くと型情報を書くことで助かることは10~20%くらい 対してテストがある場合は50~60%(約3.5倍)くらい 準備するコストとして型が10~20ならテストは60~70(約4.25倍)の印象 さらに、後からコードを読むときの理解するまでにかかる時間が 静的型が10~20なら動的型は30~40(約2.25倍)の印象。 そして、俺の場合はコードは書くことより読むことの方が多いと思っているので 読むときにかかるコストの違いに良し悪しの重点を置く傾向がある。 というわけで、俺の感覚ではもちろん静的型に軍配が上がる : デフォルトの名無しさん [] 2018/03/11(日) 01:54:27.55:vy+Y2xiY これ以上は感覚のズレをお互いに調整しないと話が進まないだろうな そして、その感覚のズレを調整をするつもりは俺にはないし そっちも多分ないだろうからやはりこれ以上の話は無駄になるだろうな 認識の違いがこれだけもあるということが分かっただけでも良しとしておこう : デフォルトの名無しさん [] 2018/03/11(日) 06:14:26.94:9uw0Jco6 会社でkotlinの勢力が拡大して飲み込まれるのは目前 やだよぉやだよぉ : デフォルトの名無しさん [] 2018/03/11(日) 07:33:15.20:DgI5cE5A javaが積極的に言語に手を入れるようになったから kotlinがcoffeescriptと同じ運命を辿るんじゃ無いかと不安を感じる androidから放り出されない限り生きていられるとは思うが…… : デフォルトの名無しさん [sage] 2018/03/11(日) 09:19:38.49:pTD+ffED 型システム入門では非変と訳されてるな : デフォルトの名無しさん [sage] 2018/03/11(日) 09:44:46.83:IOuBwL8e Goに他の言語の機能を追加したいって声はよく聞くけど 逆に他の言語にGoの機能を追加したいって声はあまり聞かないよね : デフォルトの名無しさん [sage] 2018/03/11(日) 10:05:15.85:VhcwD3HT var導入するのにval導入しないJavaのおじいさんたちはゲェジなのかな? : デフォルトの名無しさん [sage] 2018/03/11(日) 10:21:31.83:9agxgqpG COM「反射性、推移性、対称性」 次世代「恒等射、合成、共変、反変」 型アサーションと型変換の宗教論争の原因はこれか : デフォルトの名無しさん [sage] 2018/03/11(日) 10:24:53.59:VhcwD3HT セイッ! ヘイッ! : デフォルトの名無しさん [sage] 2018/03/11(日) 10:31:59.14:zUkaU6dD AppGameKit Mobile Released on Android! ttps://www.thegamecreators.com/post/appgamekit-mobile-released ttps://play.google.com/store/apps/details?id=com.tgc.agk.mobile 金曜日、2018年3月2日にTGC NewsのAppGameKit News、 今日、Androidプラットフォーム上のAppGameKit Mobileがリリースされました。 今では、AppGameKit Mobileでどこでもどこでもアプリ、デモ、ゲームを作成して、「外出先で」コーディングすることができます。 この完全に無料のAppGameKitのバージョンでは、通常のAppGameKitスクリプト言語を使用してコードを作成してから、プロ ジェクトをコンパイルしてデバイス上で直接実行することができます。このアプリにはデモとサンプルが付属しているため、新 規ユーザーはプログラミング言語の使いやすさを知ることができます。 カットダウンしたIDE内でアプリケーションをコーディングしてから、超高速コンパイラを使用して、プロジェクトをほぼ即座に実 行することができます。クラウドを追加して保存すると、あなたのプロジェクトをTheGameCreatorsのウェブサイトにアップロー ドして、プロジェクトを安全に保護したり、Windows、Mac、Linux版のAppGameKitでコーディングを続けることができます。 AppGameKit Mobileは、デスクトップ版の多くのコマンドへのアクセスを提供します。最も重要なのは、ゲーム作成のためのす べての主要なコマンドです。 ・3Dグラフィックスと3D物理 ・2Dグラフィックスと2D物理 ・レンダリングコントロール ・サウンド&ミュージック ・ユーザー入力 ・ファイルI / O ・センサー カメラと写真のアクセスでは、あなたのデバイスから画像メディアをインポートしてから、これらの画像をアプリケーションのス プライトまたはテクスチャとして使用できます。 今すぐ無料でダウンロード! : デフォルトの名無しさん [sage] 2018/03/11(日) 10:36:02.25:wjY1+kiE サーバーサイドだとC#/.NET Coreも浮上してきたしな 言語の筋が良かったから期待したけど、結局一過性の流行で終わりそう : デフォルトの名無しさん [sage] 2018/03/11(日) 10:54:05.51:VhcwD3HT Kotlinは要するにBabelだろ JavaがKotlin相当に進化する頃にはJava 1000くらいになってるだろ それを実行できるAndroidはバージョン100000くらい じゃあJava 6までダウンコンパイルできるKotlinだよねって話 でもReact Nativeに殺されるんだぜ、嘘みたいだろ? : デフォルトの名無しさん [sage] 2018/03/11(日) 10:56:21.30:VhcwD3HT わかるか?バカども : デフォルトの名無しさん [sage] 2018/03/11(日) 12:14:58.84:SpuufNIs 関数型が流行るようなことにはならない : デフォルトの名無しさん [sage] 2018/03/11(日) 12:57:58.24:7Ky5zjn9 関数型言語Mathematica : デフォルトの名無しさん [sage] 2018/03/11(日) 13:02:55.03:I+OrX4eg 違いがあるのはいいが コードの読みやすさで静的動的で比較もいいけど、 テストコードあるかないかで比較したものも載せて欲しい。 型があった方が読みやすいコードもたくさんあるのは事実だけど。 : デフォルトの名無しさん [sage] 2018/03/11(日) 13:13:29.16:7Ky5zjn9 コードリーディングという意味では型情報はありがたい。でも引数に何を入れればいいかLAPACKくらいしっかり書いてあるとなお良い しかし関数名の直後にドキュメントが長々と書いてあってどこからコードなのかよくわからん奴は嫌い : デフォルトの名無しさん [] 2018/03/11(日) 13:23:51.64:vy+Y2xiY 比較って言ってもこれは独断と偏見に満ちた個人的な印象値だぞ… 参考にして欲しくて書いたわけじゃなくて認識の違いを明らかにするために書いたものだし… あと、静的動的どちらでもテストは書くんだからテストがない場合と比較することに何の意味が…? : デフォルトの名無しさん [sage] 2018/03/11(日) 13:36:14.47:I+OrX4eg なるほど話が噛み合わないわけだ。 俺としては別に動的 本当にテスト書いてんのかなってとこのが重要だと思ってたわけだが、 動的か静的ってとこにそんなに興味があったんだね。 その部分に対してはどっちでもいいわ。 逆にテストするのしないのって話から話題をそらすための抗弁になりやすい印象が強いので あんまり関わりたい議論ではない。 : デフォルトの名無しさん [sage] 2018/03/11(日) 13:42:53.78:9agxgqpG 状況が変わったのにまだ気付いてないんだな だれも嘘をつかない性善説を前提に読みやすいとか読みにくいとか言う時代は終わった 今は嘘を教える人間を回避することが最重要 正直でありさえすれば読みやすさは不問 : デフォルトの名無しさん [sage] 2018/03/11(日) 13:58:30.20:7Ky5zjn9 最強の関数型言語Mathematica を崇めよ : デフォルトの名無しさん [sage] 2018/03/11(日) 14:32:32.97:VhcwD3HT 嘘うんぬん以前にガイジなせいでウンコードまみれなペチPoorさんはどうすればいいの? : デフォルトの名無しさん [] 2018/03/11(日) 14:43:30.00:lK6s4tSM ここがphpスレですか : デフォルトの名無しさん [sage] 2018/03/11(日) 15:03:28.52:5lhurhYh ttps://github.com/collections/programming-languages Crystalが落ちてる Redおもしろそう : デフォルトの名無しさん [sage] 2018/03/11(日) 15:04:09.58:7Ky5zjn9 嘘ねえ……そういえば昔知りもしない言語の嘘八百ばらまいてた人いたなあ : デフォルトの名無しさん [sage] 2018/03/11(日) 15:05:01.09:7Ky5zjn9 Nuとか息してんの? : デフォルトの名無しさん [sage] 2018/03/11(日) 15:09:53.59:P2AtP6SF クロスコンパイル楽すぎワロタwwww : デフォルトの名無しさん [sage] 2018/03/11(日) 16:27:48.12:5ndBYMhR 今も居るんだけどなw : デフォルトの名無しさん [sage] 2018/03/11(日) 16:28:13.49:YmDYWSQj phpディスってる人も多いけど、タイプアノテーションついてだいぶ改善されつつあるんじゃないの。結局仕事にはphpも多いからlinterとか環境整備して開発しやすい状況は作っておきたい : デフォルトの名無しさん [sage] 2018/03/11(日) 16:48:52.27:V9/n/ORo タイプアノテーションだのlinterだの、PHPerがいらねーって騒いでたものばっかりやん : デフォルトの名無しさん [] 2018/03/11(日) 16:53:21.57:vy+Y2xiY いまいち話が掴めないんだが、テストを書くのが面倒だからイヤって奴はクソって言いわけ? 俺はできればテストは書きたくないよ。面倒だし。でも書かないわけにはいかない だったら、テストは書くがテストを書く量を減らしたい 動的型より静的型のほうがテストを書く量を減らせそう…と考えている。 実際に減らせるかどうかはデータを取ってみないと何とも言えないけど 少なくとも動的より静的のほうが減らせるという意見はあってもその逆はない 最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない : デフォルトの名無しさん [] 2018/03/11(日) 16:54:04.68:vy+Y2xiY 静的型派の奴はテストは書きたくないって意見は俺以外にもいると思うけど 動的型派はテスト書くのは面倒だとは思わないの? それを言うと、静的型派の連中は型を書くのは面倒だとは思わないのか?とか言われそうだが、 静的型派の奴らは型安全は保障してほしいとは思いつつ型を書くのが面倒だとも思ってるよ だから型推論なんかを導入して型を書かずに済む方法を模索している : デフォルトの名無しさん [sage] 2018/03/11(日) 16:58:13.27:ciWbW39V 動的型の連中の大半は現実にはテストなんか書いてないよw 常識的に考えて、たかが型書く程度のことを面倒臭がる奴がテストなんか書くと思うか? 全くもって机上の空論よ : デフォルトの名無しさん [sage] 2018/03/11(日) 17:03:15.44:ciWbW39V フォローしとくと、そもそも動的型で書かれるシステムって簡単なCRUDだけで構成される単純なものが多いので、いちいちテスト書くのは大袈裟 一般に、静的型での開発では動的型に比べて遥かに多くの工数をテストに費やしてるよ : デフォルトの名無しさん [sage] 2018/03/11(日) 17:11:27.19:VhcwD3HT 型すら理解できないやつが、インプット・アウトプット理解してテスト書けるわけないだろ ペチプァどもが書いたプロダクト見ろよ : デフォルトの名無しさん [] 2018/03/11(日) 17:12:19.67:vy+Y2xiY 誤字訂正 訂正前>テストを書くのが面倒だからイヤって奴はクソって言いわけ? 訂正後>テストを書くのが面倒だからイヤって奴はクソって言いたいわけ? : デフォルトの名無しさん [sage] 2018/03/11(日) 17:14:33.16:STC5o2AA ペチバカの話は他でやれ 新規で採用することはまずありえないし、COBOL並の過去の遺産なんだから 次世代言語スレが穢れるわ : デフォルトの名無しさん [] 2018/03/11(日) 17:15:32.91:sEfAJdP7 Qt使った時、単体テストが簡単にかけたので書いてたんだけど、まあ確かにテストは良いものだよね。 俺が思うに簡単に書けるようになっていないのは、もはや欠陥製品と言っても良いのでは。 : デフォルトの名無しさん [] 2018/03/11(日) 17:18:15.89:sEfAJdP7 Javascriptも少し勉強してみたんだけど、あれはとても難しいものだな。 頭がこんがらかる。 GCがあればメモリーリークしないみたいな考えは間違っているだろうな。 GCがあるからリークする。 そんな風に感じましたよ私は。 : デフォルトの名無しさん [] 2018/03/11(日) 17:18:47.42:sEfAJdP7 人類にとって最良の言語はC++だと思うね。 : デフォルトの名無しさん [sage] 2018/03/11(日) 17:19:31.10:ciWbW39V COBOLの開発ってかなり厳密にテストするぞ PGの頭の品質はともかく、開発プロセスまで含めた品質はPHPと比較するようなものではない : デフォルトの名無しさん [sage] 2018/03/11(日) 17:19:35.71:7xoreOvU PHP案件って負の遺産・ゴミ扱いで、下請けに押しつけられてるイメージしかない なんていうか、惨め : デフォルトの名無しさん [] 2018/03/11(日) 17:21:19.94:sEfAJdP7 PHPがゴミだとは思いませんね。 ゴミ言語であることは確かですが、ゴミ言語なりに居場所を見つけて素晴らしい成果を挙げています。 : デフォルトの名無しさん [sage] 2018/03/11(日) 17:22:22.45:+qOnrRd1 そうかもしれないけど、このスレで話すことではない : デフォルトの名無しさん [] 2018/03/11(日) 17:25:39.72:sEfAJdP7 次世代言語について話すのであれば、C++2aは欠かせないでしょう。 : デフォルトの名無しさん [] 2018/03/11(日) 17:27:27.49:sEfAJdP7 Boostの逆襲もすでに始まっていると思いますね私は。 C++11以降、Boostは肩身が狭くなってる感がありました。 ところが何ということでしょう。 Boostはさらに先に行ってしまったのです : デフォルトの名無しさん [sage] 2018/03/11(日) 17:46:13.20:7Ky5zjn9 Boostのコンパイル時間マシになった? : デフォルトの名無しさん [] 2018/03/11(日) 17:46:55.45:sEfAJdP7 なるわけないだろw : デフォルトの名無しさん [sage] 2018/03/11(日) 17:51:17.69:7Ky5zjn9 うーんこの : デフォルトの名無しさん [] 2018/03/11(日) 17:51:45.82:sEfAJdP7 Networking TSがいま人類に必要なもの。 : デフォルトの名無しさん [] 2018/03/11(日) 17:52:28.03:9uw0Jco6 phpで書かれたサーバサイト置き換えるとしたらなに使うの? : デフォルトの名無しさん [] 2018/03/11(日) 17:56:33.27:sEfAJdP7 いまはPHPの代わりはないだろな。 NodeはPHP以上に危険なものだし。 C++でサーバサイドを書くと異常に早くなる。 これはC++が早いからではなく、省メモリーだからじゃないだろか。 でも環境が整備されていないから使うのに苦労が多い。 : デフォルトの名無しさん [] 2018/03/11(日) 17:57:01.20:sEfAJdP7 Javaはあらぬ方向に向かっているからいずれ消えるだろう。 : デフォルトの名無しさん [sage] 2018/03/11(日) 18:13:18.72:P2AtP6SF c++と比べてのgoの評価はどう? : デフォルトの名無しさん [] 2018/03/11(日) 18:30:44.81:sEfAJdP7 C++があるのにDやGoを使う意義が見いだせない。 : デフォルトの名無しさん [] 2018/03/11(日) 18:32:24.63:sEfAJdP7 日本は国家戦略としてC++に取り組むべきではないだろうか。 : デフォルトの名無しさん [] 2018/03/11(日) 18:33:24.43:sEfAJdP7 俺の感じでは、C++はネットでこそ強みを発揮できるのではないだろうか。 : デフォルトの名無しさん [sage] 2018/03/11(日) 18:35:12.43:P2AtP6SF しまった聞く人を間違えた : デフォルトの名無しさん [] 2018/03/11(日) 18:36:48.99:sEfAJdP7 俺もそれが言いたかった。 Go大好き人間に聞くべき。 : デフォルトの名無しさん [sage] 2018/03/11(日) 18:44:43.92:I+OrX4eg >最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない まあ残念ながらこういう輩が普通に静的、動的がどうのといってるから故の 主張なんだけどね。 型について明示することに関して個人的には別に面倒ともなんとも思ってない。 コードが増えてきて型を分類、整理するのが大変なだけで。 主に c/c++ でアルゴリズムや数値計算の仕事だからかも知れんが、 際どい数値例のテストコードなんかのが百倍くらい役立つわけよ。 >テストを書くのが面倒だからイヤって奴はクソって言いわけ? まあ端的にいうとこうなる。 プログラマは怠惰なのは悪くないとかバカみたいな格言を持ち出してでも 言い訳してしないからね。 それくらいテスト嫌いってのは根深いと思う。 : デフォルトの名無しさん [] 2018/03/11(日) 18:48:25.25:sEfAJdP7 動的言語でテスト書いてもあまり役に立たないんじゃないか。 : デフォルトの名無しさん [sage] 2018/03/11(日) 18:49:00.57:7Ky5zjn9 もうテストの話いいから : デフォルトの名無しさん [] 2018/03/11(日) 18:53:27.01:sEfAJdP7 次世代言語と言えばC++2aの話は欠かせないな。 : デフォルトの名無しさん [sage] 2018/03/11(日) 18:56:19.64:7Ky5zjn9 C++17はもう出たんだっけ : デフォルトの名無しさん [] 2018/03/11(日) 19:01:43.57:sEfAJdP7 出た。 : デフォルトの名無しさん [sage] 2018/03/11(日) 19:04:33.71:YmDYWSQj c++でサーバサイドを書くのってかなり特殊例だよな。どうゆう用途で使ってんの? : デフォルトの名無しさん [] 2018/03/11(日) 19:05:26.44:sEfAJdP7 たまたま書いてみたら異常に早く安定してるので、これはもしかして?←イマココ。 : デフォルトの名無しさん [] 2018/03/11(日) 19:07:56.00:sEfAJdP7 BoostにHTTPやWebSocketが入ったんだよな。 これは新時代の幕開けでは。 : デフォルトの名無しさん [] 2018/03/11(日) 19:09:19.32:sEfAJdP7 C++でサーバーサイドを書く時代がやってきたのは間違いない。 誰が先頭を走るのか。 それだけだろう。 : デフォルトの名無しさん [] 2018/03/11(日) 19:11:16.04:lK6s4tSM rorとかdjangoみたいなのほしい : デフォルトの名無しさん [] 2018/03/11(日) 19:12:09.94:sEfAJdP7 今あるものをC++に変える必要は全くないが、今から新しい世界を切り開いていくものは、C++で始めたほうが効率よいだろう。 : デフォルトの名無しさん [] 2018/03/11(日) 19:20:03.44:sEfAJdP7 テンプレートエンジンはDOMが遅いから必要になるもので、もしもDOMが早ければ必要性は減るのかもしれない。 そういう観点から設計されたXML/HTMLライブラリがあっても良いのかもしれない。 : デフォルトの名無しさん [sage] 2018/03/11(日) 19:48:29.23:YmDYWSQj c++でのおすすめWAFってあるの? : デフォルトの名無しさん [] 2018/03/11(日) 20:29:03.59:sEfAJdP7 商機ととらえるかどうかだな。 : デフォルトの名無しさん [] 2018/03/11(日) 20:39:34.47:sEfAJdP7 C++はとにかく早くて省メモリーなので、使わない手はない。 : デフォルトの名無しさん [sage] 2018/03/11(日) 20:42:51.49:YmDYWSQj 今からc++使うくらいならrust使う : デフォルトの名無しさん [] 2018/03/11(日) 20:59:23.60:sEfAJdP7 Rustはいずれ無くなる言語の感がある。 : デフォルトの名無しさん [sage] 2018/03/11(日) 22:00:44.14:7cxlreHu conceptもimportも言い出してからずっと仕様に入らない言語が何だって? : デフォルトの名無しさん [sage] 2018/03/11(日) 23:01:34.83:QkfM2cXC 実装したことのない馬鹿が言い出したことはスルーするのが吉 : デフォルトの名無しさん [] 2018/03/11(日) 23:29:35.41:sEfAJdP7 サーバーサイドC++を始めるなら今です!チュドーン。 : デフォルトの名無しさん [sage] 2018/03/11(日) 23:44:01.66:+qOnrRd1 C++をNGした : デフォルトの名無しさん [] 2018/03/11(日) 23:51:53.27:sEfAJdP7 小資本が大資本と戦う武器としてC++は良い選択になりえる。 時は来た。 今は良いタイミングだ。 : デフォルトの名無しさん [sage] 2018/03/11(日) 23:54:55.14:RDyvYZMG C++が速いのではなく早いならこのスレでは時期尚早でもう話すこと無いな : デフォルトの名無しさん [sage] 2018/03/11(日) 23:56:42.69:P2AtP6SF オレもNGするか…さようならC++、信者に恵まれなかった言語よ : デフォルトの名無しさん [sage] 2018/03/11(日) 23:57:17.88:7xoreOvU Webサービス開発に絞った話な。 リリースの速さ必要ならRoR 堅さが必要ならJava, Scala, Go これからはインフラ親和性も必要だから、サーバレスならGo, Python, Node RoRの劣化コピーのオレオレFWで内ゲバやってるPHPは、もう選択肢にすらあがらんだろ まともな審美眼と技術力を持ってればね : デフォルトの名無しさん [] 2018/03/12(月) 00:00:42.95:dVXA1iUP Nodeは危険すぎると感じたな。 : デフォルトの名無しさん [sage] 2018/03/12(月) 00:30:16.07:NCVAu2KZ 具体的に何が? : デフォルトの名無しさん [] 2018/03/12(月) 00:38:32.62:dVXA1iUP 危険性を理解したうえで使ってるのかと思ったらそうでもないんだな。 : デフォルトの名無しさん [sage] 2018/03/12(月) 00:52:06.18:NCVAu2KZ 敏感ヴォーイの被害妄想かい?w : デフォルトの名無しさん [] 2018/03/12(月) 01:26:46.12:dVXA1iUP 私が思うに、決定性を持つアルゴリズムで解析ができないものはすべて危険であり、ネットワークでは避けたほうが良い。 ここに反論するものはいるだろうか? : デフォルトの名無しさん [] 2018/03/12(月) 01:30:16.67:dVXA1iUP 一方で、決定性を持つアルゴリズムは様々な理由をつけてネットワークから排除されてきた。 これはおそらく大衆の無知につけ込んだ出来事に違いない。 おそらく、決定性と言われても何のことかわからない人は、これを読む者の中にも多いだろう。 とりわけウェブエンジニアには無知が多い。 無知にも務まる時代から、無知でなければ務まらない時代へ。 そんな感じすらある。 : デフォルトの名無しさん [sage] 2018/03/12(月) 01:39:07.46:+NwoaeJY 純粋関数の徒か? : デフォルトの名無しさん [] 2018/03/12(月) 01:40:40.08:dVXA1iUP 現状でウェブ上のすべてのものが危険であり、容易にハックされ得る。 狙われた瞬間降参するしかないのだ。 原理的に防ぐ方法が無いからだ。 SUNとMSはその点を熟知しており、ルールを変えようとするここ試みがあった。 この点に気が付いたものは少ないだろう。 そして試みは打倒された。 なぜそのような事が起こるのか。 それは銃を売るものも必要、そしてほとんどのものは自分は打たれないと考えるからであろう。 : デフォルトの名無しさん [] 2018/03/12(月) 01:43:53.06:dVXA1iUP キミのシステムは危険だ!チュドーン。 : デフォルトの名無しさん [sage] 2018/03/12(月) 10:40:24.64:RPfHsums まぁ、nodeオンリーだと確かに辛いところは出てくるな。 JSでQRコードの画像作るロジックが言うほど重くないんだけどそれなりに時間かかる処理になってて、そのせいで全然パフォーマンス出ねえって思ったことある。 結局そこはGoで書いたQRコード作るだけのサーバにリクエストすることにした。 タイトなループが書けないは最初から考えとかないと辛い。 : デフォルトの名無しさん [sage] 2018/03/12(月) 11:00:05.16:FLBcUOOG QRコード画像を作る処理ですら重いんかnode.js。 : デフォルトの名無しさん [sage] 2018/03/12(月) 11:05:26.37:epBgW/7w まあ、技術者にありがちな典型的な「やりたかっただけ」だろうな 自分が一番よく分かってると思うが、辛いと思い込もうとしてるだけで、もっとシンプルでメンテや運用コストの低い解決方法は間違いなくあったはず : デフォルトの名無しさん [sage] 2018/03/12(月) 11:11:22.42:cpvGEsWE そもそもqr生成なんてクライアントでやれやw ttps://www.cssscript.com/flexible-client-side-qr-code-generator/ : デフォルトの名無しさん [sage] 2018/03/12(月) 11:34:32.52:87sijYPq node_modulesの中を見るとゲロを吐きたくなる : デフォルトの名無しさん [sage] 2018/03/12(月) 12:43:15.24:RPfHsums 重くはないが、シングルスレッドなので詰まる。 cluster使ったところで、ワーカー数使い切る。 npmにモジュールあったから、へぇと思いながら使ったらこうなった感じ。 やりたかったからと言うより要件だったから、かな。 クライアントは台数凄いけど基本IE8のエンタープライズモードという悲しいイントラネットなのよ。 ブラウザは無力と思わないとどうにもならん。 そいつらがリアルタイム更新したいとかで、万台のlongpollをどう捌こうと言うところで白羽の矢がたった感じ。 それ自体は良かったよ。 node_modulesはせめて圧縮できないかねえと思ってしまう。 : デフォルトの名無しさん [sage] 2018/03/12(月) 20:08:05.60:eaoNNYZy ワーカー数使い切るってどういう事? 基本cpu数で回していくもんじゃないの? : デフォルトの名無しさん [sage] 2018/03/12(月) 20:30:18.54:UjJufH3o cpu数立てても、全部同じように同じタイトなループがあるハンドラで詰まって、結果フリーな子が居なくなるって意味のつもりだったよ。 外部へのioだったり、外部プロセスだったりと非同期で帰ってくるものを使わないと当たり前だけど意味無かった。 clusterも結局プロセス立ってるけど、そいつら自体はシングルスレッドだし。 : デフォルトの名無しさん [sage] 2018/03/12(月) 21:58:15.37:eaoNNYZy それってつまり実装の問題ってことか。 現在はasync-awaitを使えるから非同期処理もだいぶ書きやすくなったし、結果は変わってきそう。 : デフォルトの名無しさん [sage] 2018/03/12(月) 22:03:20.44:eaoNNYZy IE8でもbabelとか使えばクライアントサイドで行けたんじゃないのかな : デフォルトの名無しさん [sage] 2018/03/12(月) 22:18:38.74:UjJufH3o babelは嫌いなのと、そもそも保証がしにくいのと、ポリフィルまみれになってパフォーマンスがゴミレベルになる。 エンタープライズモードはちょっと理解できないレベルに落とされてたりするし。 console.logが無いってどういう事?ってレベル。 : デフォルトの名無しさん [sage] 2018/03/12(月) 22:30:10.56:hfB/eSkd console.log無いとかひどいなw : デフォルトの名無しさん [] 2018/03/13(火) 01:11:16.42:tZ7kTpHY しかしグーグルさんもkotrinに肩入れしたりdart2出したり、どうしたいのかね? : デフォルトの名無しさん [sage] 2018/03/13(火) 01:43:11.12:XIDUN/3I Googleに開発環境や言語のセンスが絶望的に無くて常に迷走してるのは今に始まったことじゃないでしょ ビジネスを理解してるMSやAmazonにはどうやっても勝てんよ : デフォルトの名無しさん [sage] 2018/03/13(火) 02:39:23.57:eDfC6nrV PythonのライブラリはC言語とOSのセンスを踏襲することが多い 一方JavaやJavaScriptのセンスはSmalltalkの影響が微レ存 : デフォルトの名無しさん [sage] 2018/03/13(火) 08:37:52.99:zCWNq4J5 googleの社員は皆思い思いに、プロジェクトを進めてる感じ。 でも結果的に技術的多様生が有効に働いてる。chromeがあるからインターネットプロトコルまで手を入れることが可能になったし。 appleはいずれ終わるけどgoogleは底が見えないよね。 : デフォルトの名無しさん [sage] 2018/03/13(火) 09:43:42.39:21E/SGjc 【イーサリアム】Solidity本スレDAPPS】 ttps://mevius.5ch.net/test/read.cgi/tech/1520901794/ : デフォルトの名無しさん [sage] 2018/03/13(火) 21:12:42.56:CUB7TEfm ここで唐突に新言語が乱入だー C言語の現代化を目指すC2 ttps://www.infoq.com/jp/news/2018/03/c2lang-modern-c : デフォルトの名無しさん [sage] 2018/03/13(火) 23:32:12.39:Z0di2vGk これか ttp://c2lang.org/ Cより良さそう : デフォルトの名無しさん [sage] 2018/03/14(水) 00:03:14.25:fxigNd06 まだCより良さそうなんて判断は無理だろ。マクロ周りが全貌も見えてないし。 : デフォルトの名無しさん [sage] 2018/03/14(水) 00:04:08.32:7QXpRona 配列の範囲外アクセス検知強化してたら有能 : デフォルトの名無しさん [sage] 2018/03/14(水) 00:27:05.17:D1sQyr+F C2は機能は悪くないんだがCの記法を引きずってるのが足かせになりそう まあそこを変えたらC2なんて名乗れなくなるか : デフォルトの名無しさん [sage] 2018/03/14(水) 01:05:08.25:ZGpe5WQ6 1つの言語でいいのになんでおもいおもいに勝手に言語作るの? : デフォルトの名無しさん [sage] 2018/03/14(水) 01:10:36.80:7QXpRona ベストな言語は未だ存在しないからだよ : デフォルトの名無しさん [sage] 2018/03/14(水) 01:13:29.13:+4V1rKt1 まあ99.9%の仕事じゃ既存の言語使った方が効率いいわな。 本当のところ、新しい言語なんてマーケティング的な意味以上のものがあると思えん。 : デフォルトの名無しさん [] 2018/03/14(水) 02:02:52.14:TtlwJ4jl 同じものを作り続けるならそうだろうけど、普通要件に因るでしょう : デフォルトの名無しさん [sage] 2018/03/14(水) 02:44:51.50:VWZtH1+z C2? まーた波括弧言語か…… OCamlのシンタクスを波括弧にする改悪だけの凄まじいクソだったReasonのトラウマが…… Rust がML系シンタクスだったら良かった人生だった : デフォルトの名無しさん [sage] 2018/03/14(水) 02:50:33.24:gKR2N6Y9 えーみんなオフサイドルール好きなの? : デフォルトの名無しさん [sage] 2018/03/14(水) 03:09:29.30:BF4uYFfL 勝手にc2とか名乗って問題にならないのかな cの規格をc99、c11みたいに表示するから言語名+数字はちょっと紛らわしいと思う : デフォルトの名無しさん [sage] 2018/03/14(水) 03:47:25.69:lwj22l3u フォーラムちょっと読んでみたけどまだまだ全然まともなものとは思えんで フォーカスしてる用途が不便を楽しむ遊び、ポートする楽しさ以外見えてこない : デフォルトの名無しさん [] 2018/03/14(水) 07:37:15.69:TtlwJ4jl オフサイドルールなんて嫌 そもそもrustのブロックを表現できないじゃないか : デフォルトの名無しさん [sage] 2018/03/14(水) 07:56:53.64:0fdBf/WL ML系シンタクスってオフサイドルールとは違うと思うけど? : デフォルトの名無しさん [sage] 2018/03/14(水) 09:59:50.84:mT31QN2T 細かい字面の違いなんぞどうでもいいわ : デフォルトの名無しさん [sage] 2018/03/14(水) 12:08:19.96:OBFQDHoW 見た目は波括弧だが意味は中括弧か大括弧 一行で書けない長いやつ だがラムダがあったら小括弧の内部に大括弧を書くことがあるから意味がない Pythonの波括弧は集合か辞書を意味する Haskellの波括弧は囲んだ部分のオフサイドルールを無効にする機能 : デフォルトの名無しさん [sage] 2018/03/14(水) 13:10:17.73:OcK2GZgi C2を名乗るなら既存のヘッダファイルとモジュールの両立を真っ先に考えないと 現状ヘッダファイルを手動で書き直さないといけないのでは、Cと互換性のない他の新興言語と何も変わらん 本家Cに提案されているモジュールが採用されたら存在意義を失う : デフォルトの名無しさん [] 2018/03/14(水) 13:18:43.15:9411JVzT 緊急速報 (+)【IT】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも ttps://asahi.5ch.net/test/read.cgi/newsplus/1520989318/ (BIZ+)【CPU】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも ttps://egg.5ch.net/test/read.cgi/bizplus/1520995986/ (ゲハ)【PS4/XONE】AMDのCPUに致命的な欠陥【Ryzen】 ttps://krsw.5ch.net/test/read.cgi/ghard/1520998474/ : デフォルトの名無しさん [sage] 2018/03/14(水) 14:10:00.37:OBFQDHoW コンパイルはできるがリンクができないのが現代 未来ならまあわかるが現代化を目指してもやっぱりリンクができない : デフォルトの名無しさん [sage] 2018/03/14(水) 18:19:32.06:D1sQyr+F C2使ってみようと思ったらこれCのコードに変換してるだけだった これくらいなら同じものすぐに作れる人いそう : デフォルトの名無しさん [sage] 2018/03/14(水) 18:36:37.90:hEhRPYgv それくらいの方が見通しが良くていいかもな : デフォルトの名無しさん [sage] 2018/03/14(水) 18:54:14.79:fFm4rqzY Cのプリプロセスのマクロとかが遅いからとか書いてなかったか? C2をCに変換するトランスパイラじゃ意味ないじゃん : デフォルトの名無しさん [sage] 2018/03/14(水) 19:40:13.34:IogLKo4e そんなんどこに書いてあるの? : デフォルトの名無しさん [sage] 2018/03/14(水) 19:59:28.97:fFm4rqzY コンパイル時間を大幅に遅くするヘッダファイルの使用が問題ってそういうことじゃないの? : デフォルトの名無しさん [sage] 2018/03/14(水) 20:12:57.97:hEhRPYgv Include先がまた別のファイルincludeする大連鎖include地獄のことを言ってるんじゃない? : デフォルトの名無しさん [sage] 2018/03/14(水) 20:26:52.27:+4V1rKt1 C with class じゃないですか。。 : デフォルトの名無しさん [sage] 2018/03/14(水) 20:53:53.48:ocseprwf ポリモーフィズムはともかく継承もインターフェイスも仮想関数も型クラス・トレイトも無いように見えるがこれをクラスと呼ぶのか……? : デフォルトの名無しさん [sage] 2018/03/14(水) 23:12:31.41:hxEXxDVi Nim,Crystal あたりと合わせて altC って感じやな : デフォルトの名無しさん [sage] 2018/03/14(水) 23:35:24.83:9KFxXS/p 3つ眺めてみたけどnimに惹かれる。 こんな言語あったんか…なんでこんなん知ってんだお前ら : デフォルトの名無しさん [sage] 2018/03/15(木) 03:29:44.83:FoOjJG9w nimいいじゃんこれ : デフォルトの名無しさん [sage] 2018/03/15(木) 05:29:41.26:q+mljZsH ここのスレに顔出しててNim知らないのか… まじで知名度ないな : デフォルトの名無しさん [sage] 2018/03/15(木) 07:38:27.49:wNeo1CJk NimはQiitaとかでたまに話題に上がるから 次世代系の中では比較的有名なのかと思ってた : デフォルトの名無しさん [sage] 2018/03/15(木) 15:07:19.69:Gk47k1T6 変な奴に好かれて評価を落とした言語という印象が付いてしまった感がある 実際触ると構文はPython機能はDelphiプラスD言語って感じで性能も良好なんだが モダンな感じはしないのが弱いかな 特にPascal風のバリアントレコードを引きずってるのが痛い。代数的データ型ぐらい欲しい : デフォルトの名無しさん [] 2018/03/15(木) 16:21:52.17:81MsBC+z このスレ来てるのにNix言語も知らないってマジ? : デフォルトの名無しさん [sage] 2018/03/15(木) 17:26:52.54:OYGfq7D7 知らんかったから調べたけどこれはいいや…俺は惹かれなかった。しかし検索性悪いな : デフォルトの名無しさん [] 2018/03/15(木) 20:25:23.49:0iJywA+8 波括弧こそ至高 : デフォルトの名無しさん [sage] 2018/03/15(木) 20:49:12.32:9ujU8BdG マクロとかメタプログラミング向けの機能以外はこれといった特徴無いように見えるね。 しいて言えばgoやrustみたいにアクが強すぎないところかな? あるいは、pythonのようなオフサイドルールでネイティブコンパイルできるってのが 一部の人の琴線に触れるような気がしないでもない。 : デフォルトの名無しさん [sage] 2018/03/15(木) 20:52:20.23:thSPLixB 何よりCを凌駕するというとんでもないパフォーマンスを持つという記事の存在が大きい : デフォルトの名無しさん [sage] 2018/03/15(木) 21:48:11.64:jcfpYhJu バリアントレコード位しか c(++) より速くなる要素無いがな… : デフォルトの名無しさん [sage] 2018/03/15(木) 22:05:28.04:bzT8+O3E cより速いとか大抵特殊な条件下だったりの煽り記事だけどね。 : デフォルトの名無しさん [sage] 2018/03/15(木) 22:37:00.89:gNl1NP6h 煽り記事に煽られて有名になった言語 実際、結構複雑なことしてもc並みに速いんかねえ……? : デフォルトの名無しさん [] 2018/03/15(木) 22:43:14.62:AY8mFBH0 Cへのトランスパイラ言語は何やってるか判ってれば同等になるでしょ。 まあ、"Cより早い" が意味があった試しは無い。 : デフォルトの名無しさん [sage] 2018/03/15(木) 22:51:44.82:gNl1NP6h 複雑なことっていうのは、Cにどう変換されるか負えないくらい複雑なことってことだよ : デフォルトの名無しさん [sage] 2018/03/15(木) 23:02:50.82:jcfpYhJu nim performance で検索してトップに出てくる ttp://blog.johnnovak.net/2017/04/22/nim-performance-tuning-for-the-uninitiated/ ではレイトレースというごく単純な処理で出てくるコード見ながら色々やってるな inline 指定したり 複雑な処理は c で書いても複雑(で恐らく遅いの)だから、 簡単な処理が速く書ければいいんじゃない? 上記ページによると Java と JS が数値計算案外速くて笑う : デフォルトの名無しさん [sage] 2018/03/15(木) 23:19:56.51:AY8mFBH0 昔LuaJITはぇーって盛り上がった事あったなあ… : デフォルトの名無しさん [sage] 2018/03/16(金) 06:03:27.99:VHgYZCtO pythonが遅いからなぁ : デフォルトの名無しさん [] 2018/03/16(金) 07:44:37.90:fr9o0CI5 今年もrustが愛され言語No1に輝きましたな スタックオーバーフローにはモジラの息のかかった人しかいないのかな : デフォルトの名無しさん [sage] 2018/03/16(金) 09:48:10.52:ooeu0A1b 支持率改竄が愛され陰謀論ナンバーワン : デフォルトの名無しさん [sage] 2018/03/16(金) 20:00:27.38:ZX5ucnyZ オマエが馬鹿だろ。死ね : デフォルトの名無しさん [sage] 2018/03/16(金) 20:38:34.09:4KsfexYH Cより速いを名乗るには、C言語では吐けないアセンブリパターンを吐く必要があるはずだが 現実にはバックエンドが同じなんでC言語でも再現可能だからなあ (処理系固有のattributeやpragmaを書き足す必要がある場合も多いだろうけど) : デフォルトの名無しさん [sage] 2018/03/16(金) 21:14:11.01:sL/r1GAp そこでmasmですよ。 : デフォルトの名無しさん [sage] 2018/03/16(金) 21:27:41.47:r/T+njCz 現行バージョンのメジャーなライブラリでもmalloc/free (new / delete) が結構遅いから rpmalloc 辺りを使うコード吐くだけで「処理によっては C より速い!」が実現できる気もする : デフォルトの名無しさん [sage] 2018/03/16(金) 22:03:02.48:bARX2ip1 非標準のライブラリを使ってはいけないとかCが遅くなるルールを何個か追加すればいい 他にも、変更されたら困るデータはコピーを取る手間がかかる immutableを保証すればその手間がないからCより速い : デフォルトの名無しさん [sage] 2018/03/16(金) 22:48:15.19:r/T+njCz そう言われてみると他のスレッドからアクセスされないメモリ/オブジェクトは スレッドローカルなプールからアロケートするとか その他のロックも省略できるとか色々最適化の余地あるな : デフォルトの名無しさん [sage] 2018/03/16(金) 23:45:02.47:pyLfI6yU *2が勝手に足し算に変わるとか、そういう最適化を勝手にやってくれてるな あとはどうあがいてもプロが最適化したCに勝てるわけがないし、素人が適当に書いたCと素人が適当に書いたnimのどっちが速いかだな : デフォルトの名無しさん [sage] 2018/03/17(土) 00:00:18.49:Fbe/Dv6l 前時代的の異物、死ね。 速度の必要な部分だけを切り出して、それだけをアセンブリコードにすればいいだけ。 : デフォルトの名無しさん [sage] 2018/03/17(土) 00:01:17.17:Oh0Aao6E のリンク先の記事はある程度参考になると思う : デフォルトの名無しさん [sage] 2018/03/17(土) 00:02:21.86:a9tSZ89y なんで死ねって言われたのか理解できない アセンブリコードまで自前で書くほうが前時代の遺物感強いと思うけどなあ : デフォルトの名無しさん [sage] 2018/03/17(土) 00:44:26.42:Fbe/Dv6l 理解できないなら、死ねばいいだけ。 : デフォルトの名無しさん [sage] 2018/03/17(土) 01:00:08.76:aJVXG6RF Cに代わる次世代言語はアセンブラやC、C++で書かれた 高速な実装を呼び出す1行のコードが書ければ十分ってことだろう。 そうしてそれがわからないなら死ねばいい、と。 : デフォルトの名無しさん [sage] 2018/03/17(土) 01:12:32.40:U1WdVkRs 普通に考えたら高速な実装を書ける言語がアセンブラやC、C++だとすれば Cに代わる次世代言語も同じように高速な実装を書けなきゃ代わりにならない : デフォルトの名無しさん [sage] 2018/03/17(土) 01:36:41.05:Z+moL2ES その普通に考えるってのが前時代的だな スピードではなくフライングで勝つサイコパスのような考えができない : デフォルトの名無しさん [sage] 2018/03/17(土) 01:53:39.29:a9tSZ89y Nimは速い上にCよりずっと楽に書けるんだが : デフォルトの名無しさん [sage] 2018/03/17(土) 02:01:20.25:U1WdVkRs ということは最近は「代わり」は置き換え可能な存在という意味ではなくなったんだね それなら前時代的と言われても仕方がない : デフォルトの名無しさん [sage] 2018/03/17(土) 10:06:45.76:wWRkBHq+ まあ最近でも低レイヤーの仕事としてGPUのアセンブラチューニングって話はあるけど、 どうせユーザー側なら言語とか関係ないけどね。 結局どんな言語使ってもどうせライブラリ呼ぶだけのお仕事でしょう。 : デフォルトの名無しさん [] 2018/03/17(土) 10:13:19.41:btDjh9Sw Clojureの話する? : デフォルトの名無しさん [sage] 2018/03/17(土) 10:17:40.12:zOFcLIxk プロが本気で書いたCに勝つのは無理だろ でも最適化しやすくして読みやすく書いてもプロが本気で書いたC並の速度出る言語なら… : デフォルトの名無しさん [sage] 2018/03/17(土) 10:47:29.26:/AWOYA6X なんで速さの勝負になるかよく分からんし 速さしか考えないならCは中途半端やろ : デフォルトの名無しさん [sage] 2018/03/17(土) 10:59:08.85:Z+moL2ES バグを正解に置き換えるならいいが、バグではないものをその1bit棒で叩くのは危ない : デフォルトの名無しさん [sage] 2018/03/17(土) 11:18:24.87:Z+moL2ES immutable云々はデバッグ目的で使えるからCを置き換える可能性はある 速さはおまけ : デフォルトの名無しさん [sage] 2018/03/17(土) 11:46:47.41:4zm/Hii4 強力なおまけは魅力的ね : デフォルトの名無しさん [sage] 2018/03/17(土) 13:48:58.28:VXA170pJ これまでどれだけの言語が 「Cと同等!」、「Cを置き換える!」って言って来たことか。 : デフォルトの名無しさん [] 2018/03/17(土) 14:38:29.12:6EPcIvNf Nimの特徴はC並みの実行速度でCより手軽に書けることですか… なんだかGoとキャラが被ってる気が… Nimって生ポインタ扱えるの? : デフォルトの名無しさん [sage] 2018/03/17(土) 14:48:40.03:TnL0M0fs でもCより速いVM言語とかあるし。 : デフォルトの名無しさん [sage] 2018/03/17(土) 14:57:44.26:4zm/Hii4 NimはどっちかというとOCamlに近い存在だろ Cの置き換えは狙ってねえよ : デフォルトの名無しさん [] 2018/03/17(土) 15:27:21.87:6EPcIvNf OCamlか…そういえばそんな言語あったなぁ あれもモダンなコードが書けるうえにC並みに速いって話を聞く Rustのコンパイラは初めOCamlで書かれていたということは知ってる 聞く限りにはかなり良さそうなのに全く普及する気配がないのは何故? : デフォルトの名無しさん [sage] 2018/03/17(土) 15:27:38.42:Nmk4+afD 実行状況に応じて実行しながら最適化ができるから原理的にはVM言語のほうが速くなる まあその理屈だとインタプリタが最強なわけだが : デフォルトの名無しさん [sage] 2018/03/17(土) 15:49:23.67:4zm/Hii4 なんか知らんけどこのスレには熱心なOCamlアンチがいるよな : デフォルトの名無しさん [] 2018/03/17(土) 15:57:42.27:6EPcIvNf なんか知らんけどこのスレには熱心なRustアンチもいるよな : デフォルトの名無しさん [sage] 2018/03/17(土) 16:24:52.64:QOkOyKQG おるな : デフォルトの名無しさん [sage] 2018/03/17(土) 18:15:28.10:zOFcLIxk Goは遅いぞ : デフォルトの名無しさん [sage] 2018/03/17(土) 18:36:45.18:/KW2HbwM 言うほど遅いか? : デフォルトの名無しさん [sage] 2018/03/17(土) 18:40:43.08:zOFcLIxk Cとかと比べたらね 「速い」ってほど速くはない : デフォルトの名無しさん [sage] 2018/03/17(土) 18:44:17.42:zOFcLIxk JVMよりちょっと速いレベルでしょ 一般的な用途では十分だけど : デフォルトの名無しさん [sage] 2018/03/17(土) 18:59:01.64:4zm/Hii4 そんな十分とか言い出すなら俺なんかPythonの速さでも十分だわw : デフォルトの名無しさん [sage] 2018/03/17(土) 19:14:57.81:EY8EOa8A 「実行状態を調べて最適化」なる余分な仕事の分だけ遅くなる 最適化でそのオーバーヘッドを取り戻せるかどうかは自明ではない : デフォルトの名無しさん [] 2018/03/17(土) 19:40:49.75:/yJWANaR あー。つまり、シェルスクリプト。 : デフォルトの名無しさん [sage] 2018/03/17(土) 19:58:26.68:4zm/Hii4 シェルスクリプトは次世代言語だったのか…… : デフォルトの名無しさん [] 2018/03/17(土) 20:03:43.73:/yJWANaR #!/bin/sh ls もう、これだけでCで書かれた超高速なlsが実行される。 : デフォルトの名無しさん [sage] 2018/03/17(土) 20:12:06.50:4zm/Hii4 シェルスクリプトが次世代言語とは流石に分からんかったわ 死ななきゃならんのか…… : デフォルトの名無しさん [sage] 2018/03/17(土) 22:19:21.09:jxvv8BHS サイコパスあるある 死傷者が出ても見て見ぬふりをする : デフォルトの名無しさん [sage] 2018/03/18(日) 01:12:13.80:b+jeKp+S Cに変わる言語は遅い部分をCで書いて"代替"するのか… : デフォルトの名無しさん [sage] 2018/03/18(日) 02:11:42.71:cPcsfedK 速い遅いよりも矛盾をなんとかする方が重要だ もし速さを優先して矛盾を野放しにしたらどうなるか全く予測できない : デフォルトの名無しさん [sage] 2018/03/18(日) 02:55:12.96:zE4QVnSy こりゃまた難しいのがきた : デフォルトの名無しさん [] 2018/03/18(日) 03:18:03.86:GxVko3yL 同じC言語でも速さに違いが出るのに : デフォルトの名無しさん [sage] 2018/03/18(日) 11:11:10.49:cPcsfedK ソフトだからね なんで同じソフトが違うハードで動くのかという説明から始めないといけないかも : デフォルトの名無しさん [sage] 2018/03/18(日) 14:10:28.16:9iYD44BB Cの良さは 変換される機械語との違いが滑らか それでいてメモリ部分はある程度抽象化してくれている。 てなところなんでないかね。 他の言語は「変換される機械語との違いが滑らか」を無視しすぎてる。 : デフォルトの名無しさん [sage] 2018/03/18(日) 14:13:46.06:fKWd4mcG 先ずはそのよく分からん「変換される機械語との違いが滑らか」を定義するところからガンバレ : デフォルトの名無しさん [sage] 2018/03/18(日) 14:27:58.24:JHP9/eea セマンティックギャップの話かな : デフォルトの名無しさん [sage] 2018/03/18(日) 14:33:49.99:E4zJaTX6 なんやなんやGoの悪口かいな? : デフォルトの名無しさん [sage] 2018/03/18(日) 14:36:05.49:9iYD44BB わからんのなら絡んでくんなよ。 自分でコード書いて gcc -S でコンパイルしてみろ。 : デフォルトの名無しさん [sage] 2018/03/18(日) 15:11:52.29:ewHMGPnU 説明できないのね : デフォルトの名無しさん [sage] 2018/03/18(日) 15:20:21.22:RiuyGRlC 言語を1個2個と数える時点で滑らかさが足りない C/C++は1個なのか2個なのか定義できないところが面白い : デフォルトの名無しさん [sage] 2018/03/18(日) 15:30:05.63:95A2sExk 言語を1個2個と数える 頭の中で考えていることの正しさ云々はさておき、 他人と話が通じない人は対話を試みないでくれ : デフォルトの名無しさん [sage] 2018/03/18(日) 15:48:06.10:jQGugCpv 「エレガントなコード」みたいな話? : デフォルトの名無しさん [sage] 2018/03/18(日) 15:50:34.37:RiuyGRlC サイコパスじみてきたな お前みたいなのが次世代だよ : デフォルトの名無しさん [sage] 2018/03/18(日) 17:00:52.16:2o82+Dxy ttps://ziglang.org/ Dスレにあったzig こっちのほうがCのヘッダーを直接使える分c2の名前にふさわしい : デフォルトの名無しさん [sage] 2018/03/18(日) 17:11:21.46:sSGcrtJx そのうちzagが出そう : デフォルトの名無しさん [sage] 2018/03/18(日) 17:22:37.12:2o82+Dxy まあ、ドキュメントを読む限り未完成っぽいんだよなあ c2もそうだけど : デフォルトの名無しさん [] 2018/03/18(日) 19:21:34.04:bcfd9xTZ Life Inside China's Total Surveillance State 新疆ウイグル自治区は中国国内の監視体制の巨大な実験場と化した。最先端テクノロジーで常時監視される人々の生活 ttps://www.youtube.com/watch?v=OQ5LnY21Hgc 中国企業の端末やアプリを使っていると日本人も中共に監視されているのと同じ : デフォルトの名無しさん [] 2018/03/18(日) 20:43:37.23:enUduEc8 Haskellブームは終わったのだろうか。 : ◆QZaw55cn4c [sage] 2018/03/18(日) 20:55:54.48:ojW1vPJY C++ の江添氏が新たに始めた、というくらいだから、水面下で脈々と支持層を広げていっているに違いない : デフォルトの名無しさん [sage] 2018/03/18(日) 22:16:49.47:vUL4g3CK 水面から出たら起こしてくれ(スヤァ… : デフォルトの名無しさん [sage] 2018/03/18(日) 23:32:14.22:Eey0KM1h OCamlより遅いやん? : デフォルトの名無しさん [sage] 2018/03/18(日) 23:59:48.70:ksiDZyZW 絶望的に頭悪いな。 IT系の仕事は辞めた方がいい : デフォルトの名無しさん [sage] 2018/03/19(月) 00:13:58.89:QoeeCiYG 遅くて不便な言語が流行る → C++で書き直す需要が生じて業界が繁栄 この流れ大切 : デフォルトの名無しさん [sage] 2018/03/19(月) 00:24:03.98:P7gHkF5x 頭良い人間の気持ちや陰謀を勝手に忖度して勝手に言語化してるように見える 自分の言葉ではないし自分の頭で考えてないだろ : デフォルトの名無しさん [sage] 2018/03/19(月) 00:34:26.02:lFWK67Qs その内容どれが当てはまるの?アンカーつけて : デフォルトの名無しさん [sage] 2018/03/19(月) 00:47:57.84:P7gHkF5x 架空の頭良い人間の気持ち () や陰謀 () : デフォルトの名無しさん [] 2018/03/19(月) 00:55:58.20:pEbY2e08 Haskellの誇大広告のおかげで関数型全般が胡散臭くなった。 : デフォルトの名無しさん [sage] 2018/03/19(月) 06:34:05.14:3pEfrTg9 ずっと前はてなブログやQiitaでHaskellを崇めてた人全員Haskellで特に何か作ることもなく他の言語に移って行った説 : デフォルトの名無しさん [sage] 2018/03/19(月) 07:09:28.84:TWWfpY71 OCamlはなんで演算子は多重定義できないのか結局ようわからん : デフォルトの名無しさん [sage] 2018/03/19(月) 07:31:36.71:uweaBiN7 アドホックポリモーフィズムは邪教だから。 : デフォルトの名無しさん [sage] 2018/03/19(月) 08:19:54.52:nlNc4C3i Stack Overflowが2018年の調査結果を発表。一番使われている言語はJavaScript、一番好きな言語はRustに ttp://www.publickey1.jp/blog/18/stack_overflow2018javascriptrust.html 今回、Stack Overflowでは「好きな言語」の調査結果も発表しています。 トップとなったのはRust。2位がKotlinで、Python、TypeScript、Goと続きます。 1位がRustとなったのはその知名度からするとやや意外な気がしますし、 2位のKotlinは昨年2017年5月のGoogle I/O 2017でAndroidの正式な開発言語となったのがきっかけで注目され始めたと言ってもいいので、急速に人気が上昇していると言えるでしょう。 : デフォルトの名無しさん [sage] 2018/03/19(月) 08:27:35.84:TWWfpY71 (+)は ’a -> ‘a -> ‘aじゃない 割に(=)は’a -> ‘a-> boolなんだよな 便利だからいいけど : デフォルトの名無しさん [sage] 2018/03/19(月) 09:44:30.00:P7gHkF5x 演算子だけでなく定数にもアドホック多相がある 例えばπがfloatにもdoubleにもなるとか : デフォルトの名無しさん [sage] 2018/03/19(月) 12:21:13.21:dH7nnHk9 Rustの一位が意外って… これ書いたヤツ去年と一昨年のランキング見てないのかな? : デフォルトの名無しさん [sage] 2018/03/19(月) 12:40:57.38:P7gHkF5x mozillaやgoogleを学閥か何かのように考えているのかね おまえどこ中だよって : デフォルトの名無しさん [] 2018/03/19(月) 13:07:46.72:pEbY2e08 つまり組織票が存在する。 : デフォルトの名無しさん [sage] 2018/03/19(月) 13:21:48.40:P7gHkF5x じゃあPython Go Kotlinの3つが1つにまとまったら組織票?が約3倍になるのか そうだとしても、たかが統計のために言語仕様を犠牲にするなんてバカバカしい : デフォルトの名無しさん [sage] 2018/03/19(月) 19:12:02.46:fFp4LVyf Swiftは死にそう?trySwiftとかは話題になってるけど マルチプラットフォームなフレームワークが続々登場してるからイマイチかもなー。 正直obj-cのほうが好きかもしれない。違和感なくc++のライブラリが使えるし : デフォルトの名無しさん [sage] 2018/03/19(月) 19:35:30.36:I7PCjnkp 旧世代言語の話ばっかり : ◆QZaw55cn4c [sage] 2018/03/19(月) 20:16:40.93:lFWK67Qs とびっきり最新世代の言語を一つお勧めいただけますか? 回答いただいてから一週間でマスターしてみせます : デフォルトの名無しさん [] 2018/03/19(月) 21:07:56.60:pEbY2e08 次世代言語織田信長というのがあったはず。 : ◆QZaw55cn4c [sage] 2018/03/19(月) 21:13:56.87:lFWK67Qs ttp://www.brl.ntt.co.jp/people/hirata/Papers/on-2000j.pdf 404 NOT FOUND : デフォルトの名無しさん [] 2018/03/19(月) 21:18:47.38:pEbY2e08 このスレに出てきた各種言語もいずれ404になるんだろうなあ。 : デフォルトの名無しさん [] 2018/03/20(火) 01:53:46.76:/+MVnq9/ このスレにある程度の頻度で登場した次世代?言語を新しい順で並べるとこうなる Rust(2015.5) Swift(2014.9) TypeScript(2014.4) Hack(2014.3) Go(2012.3) Kotlin(2012.2) Dart(2011.10) -> Dart2(2018?) D(2007) Scala(2003?) OCaml(1996?) Haskell(1990) ちなみに言語自体が発表された時期ではなくVer.1.0がリリースされた時期ね ?がついてるのはWikipediaには1.0リリース時期が明記されてなかった… 変なところがあれば訂正・追記してくれ Nim, Elm, Juliaに関しては最新がVer.0.~でまだ1.0すらリリースされていない とびきり最新が良いのならこの3つからお好きなのをどうぞって感じかな? 1.0リリース時期で見るとSwiftよりRustの方が新しいんだな… D, Scala, OCaml, Haskell辺りは次世代言語と呼ぶにはちと古いかも? : デフォルトの名無しさん [sage] 2018/03/20(火) 02:53:37.44:LX463VTZ 次世代言語というのは時期だけで決まるものなのか? typescriptやgoよりも、ocamlやhaskellのほうがよっぽど次世代感あるが : デフォルトの名無しさん [sage] 2018/03/20(火) 03:35:46.01:/+MVnq9/ 次世代言語をどう捉えるかによるが少なくとも時期を1つの目安にすることは出来るだろ? それとGoに関しては必要最低限の機能のみを残し 他をバッサリ切り捨てたという点で次世代感があると私は考える Typescriptに関してはJSを完全に排除しようとするのではなく JSとの共存を目指したいう点が新しいと考える事も出来る 次世代の定義なんて物の見方によっていくらでも変わり得る よって、何をもって次世代と定義するかについて1つの結論に まとめることは出来ないと考えるのでその話はあまりしたくないな 話題提供を目的に書いたので批判ではなく忌憚のない意見や感想を求む : デフォルトの名無しさん [sage] 2018/03/20(火) 04:12:48.94:geezFnQ4 個人的には広く利用されていないものは次世代とも前世代とも呼びたくない 今であれば C / C++、Java、C#、JavaScript が担っているような用途で この先使われるような言語を次世代言語と呼びたい : デフォルトの名無しさん [sage] 2018/03/20(火) 04:18:48.83:LX463VTZ バッサリ切り捨てた仕様というなら初期のJavaだってそうだし 親言語との共存を目指す派生言語というならObjective-Cだってそうだろ 全然新しくない : デフォルトの名無しさん [sage] 2018/03/20(火) 05:07:06.58:/+MVnq9/ 何でプログラム以外のところまで抽象化したがるんだ? 初期のJavaの機能が少ないのは必要最低限の機能のみに絞りこんだのではなく 単にジェネリクスもラムダ式もアノテーションも当時はまだ技術が確立してなかったからで Goのように技術が確立してるのにあえて必要ないと判断して削ったわけじゃない 初期のJavaとは機能が少ないという点で共通しているが機能を少なくした理由は全然違う Typescriptに関しては共存という言葉を使ったのが誤解を招いたようで悪かったが トランスパイルした結果のJSコードの可読性にまで気を配って作られているという点でCoffeeScriptとは違う つまりトランスパイル後のコードの可読性にまで気を配っているという点が 今までのトランスパイル系の言語とは違う全く新しい部分だと言いたかった 行きすぎた抽象化は時に大事な情報までも削ってしまうということを頭の片隅に置いておくべきかと… : デフォルトの名無しさん [sage] 2018/03/20(火) 05:46:21.35:LX463VTZ 何言ってんだ。Javaの登場した1995年には貴方の表でも既にHaskellがあって C++でももう<algorithm>があってbind1stとかやりまくってたぞ トランスパイル後の可読性なんてそれこそ無数のプリプロセッサが気を遣ってきただろ CoffeeScriptのことは知らんが、遠い過去にあった素晴らしい処理系のことは忘れて 近い過去にあった特定のゴミを超えていればいいという話なのか?違うでしょ : デフォルトの名無しさん [sage] 2018/03/20(火) 06:15:12.86:/+MVnq9/ 1995年に既にHaskellは存在していたが1995年当時のHaskellに今ほどの知名度はないよね 知名度のない言語の技術はまだ確立していない技術と同義だ あと今さらだけど初期のJavaとGoって言うほど同じじゃないよね Goは例外も継承も削ってるし、interfaceだってGoとJavaでは名前が同じだけで別物だし あとC++のテンプレートとJavaのジェネリクスは似て非なるものだ 同じものとして扱われても困る プリプロセッサーとトランスパイラーも別物だよね… 最後の一文だけは同意するが…その他はこちらとしても「なに言ってんだ?」状態なんですが… : デフォルトの名無しさん [sage] 2018/03/20(火) 06:25:50.52:/+MVnq9/ 追記 プリプロセッサーって可読性に気を使ってたの?それは知らなかった あんな読みにくくてプリプロセッサー通した後のコードが想像できないもの 可読性なんか一切考慮してないものだと思ってたわ : デフォルトの名無しさん [sage] 2018/03/20(火) 06:30:44.46:LX463VTZ あ−、1995年だとC++は標準化前だからちょっと言い過ぎた 当時は独自のテンプレートライブラリも林立してた : デフォルトの名無しさん [sage] 2018/03/20(火) 06:34:07.57:eQ1biRix 技術が実在したのは客観的事実だからなあ ユーザーに情報が伝わらなければ実在しないのと同じという理屈を受け入れてしまったら 情報を操作すれば客観的事実をいくらでも改竄できることになってしまう : デフォルトの名無しさん [sage] 2018/03/20(火) 06:36:41.10:LX463VTZ 個々の機能のことを言ってるんじゃなくて、当時の目新しいあれやこれをさっくりと無視して 絞り込んできたのが登場時点のJavaの立ち位置だったということ 時代が違うから絞りこまれた結果も違うが、コンセプトとしては似たようなもんだ : デフォルトの名無しさん [sage] 2018/03/20(火) 06:51:48.33:jSYCaWsz 関数型ゴリゴリて感じのAlgebra of Programmingも1996年て見てビックリしたわ。 当時からやってる人からすると、今更感があるのかもね。 : デフォルトの名無しさん [sage] 2018/03/20(火) 06:54:01.38:/+MVnq9/ , 技術が実在していたのと確立していたのは別物と考えている ここから先は個人的な憶測も入るので賛否両論あるだろうということを前置きしておく Javaはバージョンアップしても後方互換性を保つタイプの言語なので C++のひし形継承問題みたいな仕様バグは絶対に避けたかっただろうと思われる そうすると色々な言語で既に使われている枯れた技術じゃないと安心して採用できないだろう JavaはGoのようにあえて採用しなかったのではなく、採用したくてもできなかったんだろうと考えている 実際のところどういう方針だったのかはJava言語の開発者に聞いてみるほかないが… : デフォルトの名無しさん [sage] 2018/03/20(火) 07:09:14.80:/+MVnq9/ もしくはC#のように取り敢えずリリースして 後からどんどん足していこうという考えだった線もあり得る いずれにせよ、Goのように技術的にも開発期間的にも採用できるものを シンプルに保ちたいというだけの理由であえて採用しなかったという線は薄い : デフォルトの名無しさん [sage] 2018/03/20(火) 07:13:20.18:eQ1biRix Pythonなら一切型を書かない意図は明確だがGoは微妙 意図を伝えるという点では穏健派より過激派の方が有利だ : デフォルトの名無しさん [sage] 2018/03/20(火) 07:20:10.14:/+MVnq9/ Javaは当時の目新しいあれやこれをさっくりと無視したのかもしれないけど Goは継承や例外やジェネリクスなど現在当たり前なあれやこれやもさっくり無視してる もっと言うとwhileやdo-whileまで無視している クドイようだがやはり初期のJavaとGoはコンセプトから全然違うものと私は思う : デフォルトの名無しさん [sage] 2018/03/20(火) 07:58:37.61:ZzmZL45/ ポインタを消したのがJava 継承を消したのがGo : デフォルトの名無しさん [sage] 2018/03/20(火) 08:40:55.19:eQ1biRix ポインタは消えてない 値型かポインタ型のいずれかを選べる型システムをやめただけ ジェネリクスも型 継承も型 全ての原因は型だった : デフォルトの名無しさん [sage] 2018/03/20(火) 09:00:55.46:xTcfPcIk 「Javaにはポインタがない」という言説をそろそろ撲滅したいです。 ttps://web.archive.org/web/20071111061957/http://java-house.jp/ml/archive/j-h-b/028505.html : デフォルトの名無しさん [] 2018/03/20(火) 11:36:56.30:J0Id73NT ポインタが使えない糞言語。 : デフォルトの名無しさん [] 2018/03/20(火) 11:38:39.53:J0Id73NT ポインタは凄い発明だよな。 : デフォルトの名無しさん [sage] 2018/03/20(火) 14:05:57.79:2KGHSNsy matz「参照とポインタの違いは常識(キリッ」 ttp://kmaebashi.com/seiha/hosoku001.html : ◆QZaw55cn4c [sage] 2018/03/20(火) 14:07:55.13:PD8yAuaT 二重ポインタはありませんので「Java にはポインタがある」とはいいきれないのではないでしょうか? rust に決めました! : デフォルトの名無しさん [sage] 2018/03/20(火) 14:19:51.44:eQ1biRix ジェネリクスの記法で考えると 二重 Pointer< Pointer<T> > ができない言語を作る方が逆に難しい : デフォルトの名無しさん [sage] 2018/03/20(火) 14:29:34.01:ZzmZL45/ Fortranは無理やで : デフォルトの名無しさん [] 2018/03/20(火) 14:39:50.65:J0Id73NT プロセッサのインストラクションって暗黙に型を要求するよね。 一方で変数、アドレスに型はない。 そこでポインタなんですよ。 これは大発明だと思いますね。 : デフォルトの名無しさん [] 2018/03/20(火) 14:41:16.73:J0Id73NT C++には夢とロマンがいっぱい詰まってるような気がする。 頭の良い若者にはぜひC++をやっていただきたい。 : ◆QZaw55cn4c [sage] 2018/03/20(火) 14:48:34.63:PD8yAuaT C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが 簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを 追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。 C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、 それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる: - うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が 安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、 もはや笑えるレベルを超えている) - 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに 効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の コードがその素晴らしいオブジェクトモデルに依存していて、直すためには アプリ全体を書き直さなきゃなんない。 言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに 限定するってことは、他の人がそれをめちゃくちゃにしないってことで、 ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい 「オブジェクト・モデル」のたわごとを持ちこまないってことだ。 : デフォルトの名無しさん [sage] 2018/03/20(火) 14:49:26.38:ZzmZL45/ 何度見ても名文 : デフォルトの名無しさん [] 2018/03/20(火) 14:50:16.56:J0Id73NT まあ正論だね。 夢も希望もない正論だけど。 : デフォルトの名無しさん [] 2018/03/20(火) 14:57:07.27:J0Id73NT Cは40年以上、C++は30年以上、一線で活躍する言語であり、これらの言語が無くならなかったのにはそれなりの理由があるはず。 : デフォルトの名無しさん [] 2018/03/20(火) 15:01:30.33:J0Id73NT つまりポインタです。 : デフォルトの名無しさん [sage] 2018/03/20(火) 15:13:14.76:fj312v7r いいえプラズマです。 ttp://plasmalang.org : デフォルトの名無しさん [] 2018/03/20(火) 15:24:04.02:J0Id73NT GCはおそらくリークを増やすのではないか。 Node使ってみてそんな感想を持った。 長時間稼働時代のいま、RAIIこそが本命だと感じました。 ※C++でサービス書いてみた結果の感想です。 : デフォルトの名無しさん [] 2018/03/20(火) 15:25:51.52:J0Id73NT RAIIを徹底することによってリークを無くすことができる。 これは発見が容易になるからでもあります。 : デフォルトの名無しさん [] 2018/03/20(火) 16:49:42.05:J0Id73NT 私はポインタを軽視する風潮に警鐘を鳴らそうと思います。 : デフォルトの名無しさん [] 2018/03/20(火) 20:00:27.39:/+MVnq9/ の「C++には夢とロマンがいっぱい詰まってる」の直後に の「C++ではゲロゲロのゴミが生産される」で草 h Rustを一週間でマスターするのはムリだと思うよ あの言語の学習コストを他言語のそれと同じものと考えてると痛い目に合うよ : ◆QZaw55cn4c [sage] 2018/03/20(火) 20:38:30.06:PD8yAuaT アドバイスありがとうございます、チュートリアル最初の数当てゲームが終わったところです : デフォルトの名無しさん [sage] 2018/03/20(火) 20:39:04.23:tLYOcIpU テストを用意すると自動的にコード生成するのが次世代言語じゃないかな? : デフォルトの名無しさん [] 2018/03/20(火) 20:41:08.57:J0Id73NT WindowsのアプリケーションはほとんどがC++で書かれており、ゲロゲロのごみとはそういったもののことを言うんですよ。 例えばChromeとかね。 : デフォルトの名無しさん [sage] 2018/03/20(火) 21:01:58.36:eQ1biRix が偉いのはC++の代わりにJavaではなくCを選ぶところ C++を使いたくなったらすぐ掌を返せる絶妙な位置 : デフォルトの名無しさん [sage] 2018/03/20(火) 21:03:53.47:LX463VTZ Linusの言だぞ : デフォルトの名無しさん [] 2018/03/20(火) 21:07:40.66:J0Id73NT とはいえ、C++にはプログラミングの面白さ全てが詰まっている。 : デフォルトの名無しさん [] 2018/03/20(火) 21:08:30.04:J0Id73NT 頭の良い若者にはぜひC++にチャレンジしていただきたいですね。 ※馬鹿にはお勧めしません。 : デフォルトの名無しさん [] 2018/03/20(火) 22:15:07.02:/+MVnq9/ くっ…こいつ(ID:J0Id73NT)全然引かねぇなww の「RAIIこそが本命だと感じました」に関してはある程度同意するが RAIIならC++よりRustのほうが優れてると思うけどね。Dropトレイト便利だよ 次世代言語スレで次世代のRustではなく頑なにC++を推す理由は? : デフォルトの名無しさん [] 2018/03/20(火) 22:22:14.78:/+MVnq9/ RustはHaskellと同じで実践で役に立つかはともかく学習しといて損はない言語だと思うので頑張って 言ってる自分もいまだに結構な頻度でコンパイラと格闘してるのだが… とりあえず所有権・借用・ライフタイムの概念まで終わったら感想を聞かせてほしいかな… : デフォルトの名無しさん [sage] 2018/03/20(火) 23:32:04.40:ojRlp1ye c++ で所有権意識して書く方が、rustでunsafe周りを使うより楽で安全だから。 : デフォルトの名無しさん [sage] 2018/03/20(火) 23:35:49.06:ck80uwiX C++20でうるう年サポートだってよwww ……なんだようるう年って他にやる事あるだろ………… : デフォルトの名無しさん [] 2018/03/20(火) 23:47:09.33:J0Id73NT 流行ものはいずれ廃れるんですよ。 : デフォルトの名無しさん [] 2018/03/20(火) 23:59:40.98:/+MVnq9/ じゃあなんで次世代言語スレに居るんだ…( ゚д゚)? : デフォルトの名無しさん [] 2018/03/21(水) 00:23:07.24:fTbDiwfs 次世代もC/C++だからですよ。 : デフォルトの名無しさん [sage] 2018/03/21(水) 00:34:20.76:6aYzYwF2 C++は置いといて、ライフタイムについては何年かしたら画期的な解決方法が開発されて あのrustに費やした努力はなんだったんだ……って事になったらいいなあみたいな期待はないでもない : デフォルトの名無しさん [] 2018/03/21(水) 01:27:25.51:O5cKQJeM でもgccも今ではc++で開発されてるじゃん : デフォルトの名無しさん [sage] 2018/03/21(水) 01:39:07.97:pF+TNkB8 これ、C++に限らず色々なクラスベースオブジェクト指向言語と信奉者に 多かれ少なれ、言えることじゃね? : デフォルトの名無しさん [sage] 2018/03/21(水) 02:43:19.10:+8mievnH コピーと参照のトレードオフは本質だよ。 どんな言語作ろうとそれは変わらん。 超える可能性があるとすれば量子効果のあるコンピュータとその言語か。 : デフォルトの名無しさん [sage] 2018/03/21(水) 02:47:53.30:pF+TNkB8 ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄ : デフォルトの名無しさん [] 2018/03/21(水) 03:17:32.00:fTbDiwfs 注ぎ込めるリソースが少ない場合、C++を選択してください。 あなたの要求は完ぺきにかなえられるでしょう。 : デフォルトの名無しさん [sage] 2018/03/21(水) 06:35:12.70:TV3lE0eZ まあそうだけど C# や Java では既存の実用的なフレームワークが強い影響力を持ってるから 俺が考えた最強の〜的なオブジェクト指向の設計はしないんじゃないか? Windows アプリの場合 C++ でも mfc や wtl 使うから同様のことが言える : デフォルトの名無しさん [] 2018/03/21(水) 06:37:39.43:fTbDiwfs Linusは無料で奴隷をこき使える才能がある。 だからこそC。 我々は工数考えないといけないからC++。 : デフォルトの名無しさん [sage] 2018/03/21(水) 06:38:46.28:TV3lE0eZ 書き捨てのユーティリティとか書くときも map とか使いたいもんね : デフォルトの名無しさん [] 2018/03/21(水) 06:43:22.74:fTbDiwfs Linusは生粋の5ちゃねらだし、あいつのあおりを真に受けちゃいかんよ。 : デフォルトの名無しさん [] 2018/03/21(水) 06:48:17.40:fTbDiwfs OOはウィンドウシステムと非常に相性が良いんだ。 CでもOO出来るって? ああそうだな、Xのソースは1980年代末期に研究したよ俺も。 流行ってたんだ。 歩いてだってアメリカには行けるさ、お前ならな。 だが俺は飛行機で行く。 それだけのことだ。 : デフォルトの名無しさん [sage] 2018/03/21(水) 07:05:06.97:LE/KJcVc Linusがカーネル周りの人間って事を忘れてはいけない その前提とシステムプログラムの観点からCが選択されたのであるし、更にその発言が結構前であることも意識しなきゃ : デフォルトの名無しさん [] 2018/03/21(水) 07:14:44.19:fTbDiwfs KHTMLはIEと同じ表示ができたので気に入っていた。 それが今やEdgeがWebkit互換表示だもんな。 : デフォルトの名無しさん [] 2018/03/21(水) 07:16:02.63:fTbDiwfs ただなあ、Javascriptの邪悪さには誰も勝てないと思う。 : デフォルトの名無しさん [sage] 2018/03/21(水) 08:26:35.73:6aYzYwF2 もムーブセマンティクスが流行った時は飛びついたくせにー 古くはPascalのconst引数、新しくはswiftのinoutみたいにコピーと参照が曖昧なのもあるし 明確に区別したままでももっといい推論方法だってできるかもしれない : デフォルトの名無しさん [sage] 2018/03/21(水) 09:47:49.88:7q6KKp9o 早すぎる一般化は諸悪の根源なんやで まずCで書き、そのあと他の言語に移植しなさい : デフォルトの名無しさん [sage] 2018/03/21(水) 11:03:36.91:6+RFoA8s 早すぎる最適化や過剰な一般化ならともかく、一般化が早すぎて困ることなんてそうあるかねぇ? : デフォルトの名無しさん [sage] 2018/03/21(水) 11:33:24.48:2s39Qc49 むしろ早すぎる具体化詳細化のほうが害悪だな。 : デフォルトの名無しさん [sage] 2018/03/21(水) 11:52:04.49:KBtkuQdG Linusは何も間違ってないし、むしろ高級言語使う側が「楽だから」と目を閉じてるのが問題だと思うけど。 ちゃんとどんな機械語になるか把握して、どれぐらいのオーバーヘッドがあって、それはこういう基準やメリットで許容してるから、俺はxxx言語を使う、って言い切れないのが問題じゃない? : デフォルトの名無しさん [sage] 2018/03/21(水) 12:06:23.78:2s39Qc49 90年代まではそれで正解だったけど、今の時点で「コンパイラが吐く機械語が予測しやすい」のは欠点でしかないし、実際Cコンパイラもかなりの最適化をするわな。 : デフォルトの名無しさん [sage] 2018/03/21(水) 12:17:48.32:KBtkuQdG 最適化は想定してコンパイルするだろ。Cなら特に。書き方にも関わるし、コンパイルオプションにもかかわるし。 予測しやすいか、しにくいかなんて問題にしてなくて、予測じゃなくて把握しろって思うんだって。 コンパイル結果みて考えても良いぐらい。 「とりあえず楽」じゃなくてさ。 そういう意味では、Goみたいに-gcflags -Sで簡単にアセンブリコード見れるのは良いと思うし、流行りの高級言語にもあって然るべきだと思うんだが。 要らない、全部コンパイラが楽させてくれる、って言うやつはRustをディスる事も、Cを称賛する事も中途半端だと思う。 : デフォルトの名無しさん [] 2018/03/21(水) 12:19:27.12:rpkcQ7dD そろそろ人知を超えた最適化を行うAIコンパイラとか出てきても良さそうだけどね 抽象度の高い言語の方が最適化の余地が広くて有利になったりして : デフォルトの名無しさん [sage] 2018/03/21(水) 13:16:11.38:WIlWrPur 別の方に着目したいから楽ちん高級言語を使っているのに それを目を閉じると表現するのはいかがなものか : デフォルトの名無しさん [sage] 2018/03/21(水) 13:25:57.59:+8mievnH いくらでもあるだろ。 めちゃくちゃデラックスなプリント文とかな。 : デフォルトの名無しさん [sage] 2018/03/21(水) 14:07:57.78:366TuTPF 実はお前らが内心で求めてるのは次世代言語じゃなくて前世代言語じゃね? : デフォルトの名無しさん [sage] 2018/03/21(水) 14:13:44.60:zc8zGgCT コピーと参照の違いは代入すればわかる だから代入を禁止すればコピーと参照の違いを捨象できる 抽象化とはつまり具体的な何かを禁止することだ 禁止されている自覚がないなら、目を閉じていると批判されても仕方ない : デフォルトの名無しさん [sage] 2018/03/21(水) 14:19:34.98:OmyrbXdn こんなのあったんか。まだ開発序盤か : デフォルトの名無しさん [sage] 2018/03/21(水) 14:53:44.91:KBtkuQdG 別の方を着目したからと言って「見ないことにしている」を「見なくていいから楽」と取るのは間違ってるだろ。 : デフォルトの名無しさん [sage] 2018/03/21(水) 15:05:39.36:zc8zGgCT ケースバイケースだろ ・全てのケースで間違ってる ・全てのケースで正しい これ以外の選択肢が見えなくなるのがおかしい : デフォルトの名無しさん [sage] 2018/03/21(水) 15:08:02.21:7q6KKp9o Cはどのように最適化されるかわかるからそれを想像しながら書くことで 美しいコードがかけるんだよな。 : デフォルトの名無しさん [sage] 2018/03/21(水) 15:15:52.41:zc8zGgCT 最適化は別にどうでもいい 人知を超えた最適化してもいいぞ ただし人知を超えた仕様変更とか人知を超えたデバッグは困る : デフォルトの名無しさん [sage] 2018/03/21(水) 15:19:26.15:7q6KKp9o ネットサーフィンでホームページみると汚い糞みたいなコードしかないからな。 俺くらいのプロになると美しいコードを書くだけで勝手に正解になっている。 コツは対称性を意識すること。対称性を持った完全な美に矛盾は存在する訳ないからな。 : デフォルトの名無しさん [] 2018/03/21(水) 15:28:41.94:fTbDiwfs boostは新言語と言って良いのではないか。 : デフォルトの名無しさん [sage] 2018/03/21(水) 15:35:40.07:7q6KKp9o boostは便利なものもあるけれどほとんどがゴミだよね : デフォルトの名無しさん [sage] 2018/03/21(水) 15:36:59.68:2s39Qc49 いつの時代のCコンパイラの話だよw : ◆QZaw55cn4c [sage] 2018/03/21(水) 15:39:31.62:ZGJmhAHm >人知を超えたデバッグ ……… : デフォルトの名無しさん [] 2018/03/21(水) 15:52:31.99:fTbDiwfs テンプレート大好きな感じを何とかしてもらいたいよな。 : デフォルトの名無しさん [] 2018/03/21(水) 16:26:40.62:fTbDiwfs ストリーム廃止運動が必要。 : デフォルトの名無しさん [sage] 2018/03/21(水) 18:32:27.05:KwzRI0fp boost もjavascriptのBrowserifyみたいなツールで必要なモジュール部分だけ取り出して コンパイルを速くできる機能ってないのかね? それとも依存が激しくて結局全部マルごとになっちまうってことなんかな。 : デフォルトの名無しさん [sage] 2018/03/21(水) 18:33:29.63:MnBjTwAx boostがC++標準委員会のケツ蹴飛ばしたおかげでだいぶ今のC++良くなったじゃん : デフォルトの名無しさん [] 2018/03/21(水) 18:37:44.59:fTbDiwfs boostを・・・というより使う側で配慮すれば分割コンパイルの恩恵にあずかれる。 : デフォルトの名無しさん [sage] 2018/03/21(水) 19:30:11.24:5MZw04v3 なってるんだが… : デフォルトの名無しさん [] 2018/03/21(水) 21:34:18.38:UH8S3msx PLASMA言語っすか…これは初めて知ったわ 今パッと見ただけだけど、なんとなくHaskellに近い雰囲気を感じた どこら辺が違うのが詳しく説明してくれない? : デフォルトの名無しさん [sage] 2018/03/21(水) 22:01:31.33:LNpphUL+ すべてプラズマで説明できそう : デフォルトの名無しさん [] 2018/03/21(水) 22:52:30.65:fTbDiwfs ではboostをプラズマで説明してもらおうか。 : デフォルトの名無しさん [sage] 2018/03/22(木) 00:28:48.05:NqS/W9is いや、二、三個の関数使うだけであのビルド時間はおかしいぞ。 : デフォルトの名無しさん [] 2018/03/22(木) 01:22:53.45:tiDItZ1f 使い方を知らんってことか。 : デフォルトの名無しさん [sage] 2018/03/23(金) 21:30:21.55:yG5SnYrv atCoder今日から始めてみたんだけどc++が圧倒的に多い。 GoとかRustは少数派みたい。c++いいんかそんなに。 : デフォルトの名無しさん [sage] 2018/03/23(金) 21:32:50.91:J4dYcx4H >c++いいんかそんなに : デフォルトの名無しさん [] 2018/03/23(金) 23:22:27.41:IQgPE3+N 混とんとしたウェブの状況を見ればウェブ屋さんが薦める言語なんて使えない。 ウェブ屋さんは昔から頭がおかしい。 落ちまくるネットスケープを推奨してたような人たちだぞ。 IEと互換性があるからKHTMLはダメだとも言っていた。 ウェブ屋さんが一番ネットスケープに苦しめられていたというのに。 つまり彼らはマゾなのだ。 : デフォルトの名無しさん [] 2018/03/23(金) 23:30:09.64:IQgPE3+N 本来ネットワーク上で流通するものはすべて決定性を持つアルゴリズムで解析できなければならないだろう。 言語でいえばJava、データ形式でいえばXMLがそういったものだ。 実はW3Cはそういった方向にウェブを進めようとしていた。 これに反対したのがグーグルやアップルだ。 この反対する姿勢は純粋に政治的なもので技術の上に成り立つものではない。 もしもム板で議論されたなら技術が勝利したであろう。 しかし議論の場はム板ではなかった。 世界中の優秀なウェブ屋さんが集まったとはいえウェブ屋さんはしょせんウェブ屋さんなのである。 : デフォルトの名無しさん [] 2018/03/23(金) 23:36:00.72:IQgPE3+N OWASPの資料を見てほしい。 なぜウェブが危険なのかわかるだろう。 つまりほとんどすべてウェブ屋さん自身が持ち込んだ危険である。 : デフォルトの名無しさん [sage] 2018/03/24(土) 06:31:03.15:iue9vSP8 混とんとしたカーネルの状況を見ればOS屋さんが薦める言語なんて使えない。 OS屋さんは昔から頭がおかしい。 落ちまくるBSDを推奨してたような人たちだぞ。 DOSと互換性があるからWindowsはダメだとも言っていた。 OS屋さんが一番MS系に苦しめられていたというのに。 つまり彼らはマゾなのだ。 : デフォルトの名無しさん [sage] 2018/03/24(土) 06:34:45.58:iue9vSP8 本来OS上で機能するものはすべてPOSIXに準拠しなければならないだろう。 言語でいえばC、データ転送でいえばファイルがそういったものだ。 実はPOSIXはそういった方向にOSを進めようとしていた。 これに反対したのがMSやアップルだ。 この反対する姿勢は純粋に政治的なもので技術の上に成り立つものではない。 もしもム板で議論されたなら技術が勝利したであろう。 しかし議論の場はム板ではなかった。 世界中の優秀なOS屋さんが集まったとはいえOS屋さんはしょせんOS屋さんなのである。 : デフォルトの名無しさん [] 2018/03/24(土) 07:42:28.38:Z79Bg+7E 決定性を持たなければならないのはsecurity reasonであって標準とは無関係だぞ。 ウェブ屋さんは昔の論文を読み漁るべきだろうな。 セキュリティに最も関心を持つべき職業なんだから。 : デフォルトの名無しさん [] 2018/03/24(土) 07:46:59.67:Z79Bg+7E 世界を再構成する、Re Designを提唱する。 : デフォルトの名無しさん [sage] 2018/03/24(土) 07:48:27.16:76HSbC/B すべて文脈自由文法でなければならない これに反対したのがPerl正規表現やCプリプロセッサだ この反対する姿勢は純粋にGNU/Linux的なものでグーグル/アップルではない : デフォルトの名無しさん [] 2018/03/24(土) 08:41:54.13:Z79Bg+7E ハイ、ダウト。 : デフォルトの名無しさん [] 2018/03/24(土) 11:43:16.47:1vPeJim6 インターネットはウェブ屋さんだけのもんじゃないからね 素人が適当に作れるのは大事なんだよ 確かに苦労は絶えないけど : デフォルトの名無しさん [] 2018/03/24(土) 11:45:42.94:Z79Bg+7E HTML一つとっても素人が気軽に書ける時代じゃないだろう。 なぜそうなったかわかるかい? 本来別のレイヤーにあるべきものをHTMLは一つ人類みな友達とかわけわからないこと言って一緒くたにしたからだよ。 : デフォルトの名無しさん [] 2018/03/24(土) 11:54:04.10:Z79Bg+7E html5-tidyでCustom elementのサポートについて議論があって、いろいろ考えさせられる。 : デフォルトの名無しさん [sage] 2018/03/24(土) 11:57:19.01:76HSbC/B 政治的というのは「人類みな友達」のことじゃないだろう 平気で嘘をついたり、間違いを絶対認めないことを政治的というんだ : デフォルトの名無しさん [sage] 2018/03/24(土) 12:23:11.92:iue9vSP8 OS/2 WARPの資料を見てほしい。 なぜpreemptive context switchingが危険なのかわかるだろう。 つまりほとんどすべてOS屋さん自身が持ち込んだ危険である。 : デフォルトの名無しさん [sage] 2018/03/24(土) 13:05:00.91:Q4O/QWqD まあセキュリティー商売なんてのは危険を煽らないと成り立たないからな。 : デフォルトの名無しさん [] 2018/03/24(土) 18:52:42.30:bGodUaM+ いやあ未だに適当に書いてるよ プロだってほとんど適当だよ : デフォルトの名無しさん [sage] 2018/03/24(土) 19:47:17.53:pV2WFofj HTMLは俺もクソ適当に書いてるわ あんなもん書捨てで動きゃいい divじゃなくてarticleタグ使えだのcssのセレクタにdata属性使うのはやめろだのと くだらない拘りでコードレビュー通さない意識高い系フロントエンダーはマジで害悪だわ HTML/CSSにおけるデザインと論理構造の分離なるものが現実に何かの役に立ったのなんて見たことない : デフォルトの名無しさん [sage] 2018/03/24(土) 19:58:25.59:DVXvRdXT HTMLはタグの数を極力減らして XSLT使って独自タグを定義する方向に向かえば良かったと思う : デフォルトの名無しさん [sage] 2018/03/24(土) 20:22:26.30:eKuOy/a9 向かってるだろ : デフォルトの名無しさん [sage] 2018/03/24(土) 20:28:12.89:g25JX84P reactとか? cssが未だによくわかんねえ。あれわかる人なんなので。 : デフォルトの名無しさん [] 2018/03/24(土) 20:58:55.04:Z79Bg+7E ReactでSSR、サーバーサイドでレンダリングした結果をクライアントで引き継げて凄すぎ! みたいなのは、努力の方向性が間違っているような気がする。 SSRの必要があるってことは、結局SPAである必要が無いような。 : デフォルトの名無しさん [sage] 2018/03/24(土) 21:12:09.71:uNUSOufN 画面の大きさがPCとスマホで全然違うからデザインが違う せめて論理構造だけは同じにするべきだが まさかPCと同じ情報を見ることができない実質ガラケーのようなスマホはないよな : デフォルトの名無しさん [sage] 2018/03/24(土) 21:34:42.30:OxsUYtrP HTMLとして見ればその通りなんだろうけど、XMLで作ったデータフォーマットからウェブも含めた何かを作ってるような人たちには許容できない部分なのかもしれん。 PageMakerで組版してる人たちとか。 同じブロック要素でも、naviとarticleは文字詰めの方法が違うとか、そういう部分で、何でもdiv+classにすんなと言うのは充分わかる。 : デフォルトの名無しさん [] 2018/03/24(土) 21:37:02.47:LUxFSHaJ 書き捨てで誰もメンテしないならそれでいいだろうな そんなのレビューしなくていいと思うけど : デフォルトの名無しさん [] 2018/03/24(土) 21:42:42.38:Z79Bg+7E 考えるのに紙は依然として役に立つけど、読むのには紙である必要がなくなってきたな。 高性能なタブレットが重すぎるのを何とか出来れば完全に紙を駆逐できるんじゃないか。 : デフォルトの名無しさん [sage] 2018/03/24(土) 21:42:47.26:gBcMRATK PageMakerじゃないな。普通に名前間違えた。FrameMakerとか。 : デフォルトの名無しさん [] 2018/03/24(土) 21:45:34.89:Z79Bg+7E Googleが出すOSSは尻切れトンボが多いな。 : デフォルトの名無しさん [sage] 2018/03/24(土) 21:49:22.28:gBcMRATK 電池が要らない、 濡れても乾かせば大丈夫、 乱雑に投げられる、車に轢かれても壊れない、 複写を他人にページ単位で簡単に渡せる、 そのへんの筆記具で好きに書き込みが出来る、 氷点下20度でも使える、 破れてもセロテープで取り急ぎ直る、 完全に読めなくなっても比較的安価に買い直せる このあたりが紙の冊子が電子媒体で駆逐できない所だと思うよ。 特に取説とか。 : デフォルトの名無しさん [] 2018/03/24(土) 22:03:59.29:Z79Bg+7E 太陽光発電でもつけておけ。 : デフォルトの名無しさん [sage] 2018/03/24(土) 22:07:01.15:uNUSOufN 「QRコードを印刷する紙がないぞ」「あんなの飾りです」 : デフォルトの名無しさん [] 2018/03/24(土) 22:36:07.63:Z79Bg+7E Gumbo parserってどうなんだよ。 : デフォルトの名無しさん [sage] 2018/03/24(土) 23:58:13.59:Q4O/QWqD 手触りで大体のページを把握するってインターフェイスに慣れ過ぎてるから それを超えるまではまだまだ電子ペーパーは人類には早い : デフォルトの名無しさん [sage] 2018/03/25(日) 00:06:04.48:+oTPc842 なんの話だよ OCamlの話いいっすか? : デフォルトの名無しさん [] 2018/03/25(日) 00:16:01.86:U5SlEUJl 民主党→民進党のように名前をちょっと変えると爆発的に売れる場合もあるからな。 : デフォルトの名無しさん [sage] 2018/03/25(日) 00:18:17.39:JVNvN7ma 保守性という観点で言えば、DRYさえ死守してれば後は些細な問題だと思うよ HTMLに限った話じゃないけど : デフォルトの名無しさん [sage] 2018/03/25(日) 00:30:12.26:GhdgZmXr htmlでdryを守とかそれが無理だっつーの : デフォルトの名無しさん [sage] 2018/03/25(日) 00:41:53.53:Wz8WBZT8 OCamlに話すことあるか? : デフォルトの名無しさん [sage] 2018/03/25(日) 00:55:24.67:Qy9e8iWO 収益に直結してないものはやりたい人がいなくなったらそれまでだからな : デフォルトの名無しさん [] 2018/03/25(日) 01:20:58.23:4Rittzre 全部グローバル変数で名前規則さえ死守してればいいとでも言うのか? : デフォルトの名無しさん [sage] 2018/03/25(日) 07:18:41.27:WO056vpM Haskellと重複する部分についてDRYを死守する方法を話して : デフォルトの名無しさん [] 2018/03/25(日) 08:01:39.02:U5SlEUJl ttp://www.stroustrup.com/JSF-AV-rules.pdf ロッキード・マーティン F-35 Strike Fighter Air Vehicle 開発のためのC++コーディング・ガイドライン。 ※URLでお分かりの通り禿が関わっています。 : デフォルトの名無しさん [sage] 2018/03/25(日) 14:46:57.32:2EIVAaim 立憲民主党と勘違いしてない? : デフォルトの名無しさん [sage] 2018/03/25(日) 16:11:18.40:+oTPc842 関数があるのにDRYに苦労する状況が分からん : デフォルトの名無しさん [] 2018/03/25(日) 19:01:20.02:NiWlHtrf 政治の話はNGで : デフォルトの名無しさん [sage] 2018/03/25(日) 21:25:39.57:WO056vpM プログラム技術という観点では政治も経済も経営もNG : デフォルトの名無しさん [] 2018/03/25(日) 22:55:03.56:U5SlEUJl 政治では名前が長くなり始めると危険領域だよな。 ○○民主主義自由独立解放戦線的な。 朝鮮民主主義人民共和国とか欲張りすぎな国もあるし。 予言しておくけど立憲民主党は時代とともに名前が長くなるぞ。 : デフォルトの名無しさん [] 2018/03/25(日) 22:56:11.12:U5SlEUJl 日本も大日本帝国時代は危険領域だったんだろな。 : デフォルトの名無しさん [] 2018/03/25(日) 22:57:49.97:U5SlEUJl Googleのコーディングガイドラインは名前はいくら長くなっても良い、省略された名前はダメと述べているからな。 罠かもしれんな。 : デフォルトの名無しさん [] 2018/03/26(月) 00:02:29.61:3hemhRjv 悩ましいぞな : デフォルトの名無しさん [sage] 2018/03/26(月) 00:05:05.18:mhu6xXG+ つまりこう for (int indexOfItemInArrayOfProxyInformation = 0; ; ++i) { auto proxyInformation = arrayOfProxyInformation[indexOfItemInArrayOfProxyInfomation]; ... みたいな : デフォルトの名無しさん [sage] 2018/03/26(月) 00:08:00.38:QH+aPMzj ofを使ったら負け : デフォルトの名無しさん [sage] 2018/03/26(月) 00:10:58.12:mhu6xXG+ でもインデックス複数あったら? : デフォルトの名無しさん [] 2018/03/26(月) 00:23:51.81:WZ1ZCWjW ストアドよりインデックスのほうが早いよ。 : デフォルトの名無しさん [] 2018/03/26(月) 00:32:41.52:ceAN67+T 何でも極端に走っちゃいかん。 バランスは大事よ。 : デフォルトの名無しさん [sage] 2018/03/26(月) 00:35:46.73:mhu6xXG+ getInfo なんてのは Android の api でも見かけるし information を info と略するのはありなんだろうな 普通の会話でもしばしばそう略すし 他にもなにか例外があるかとAndroid ndk api リファレンス眺めたら 名前がどれもこれも長くて驚いたわ…特にenum : デフォルトの名無しさん [sage] 2018/03/26(月) 01:21:09.02:BMtnwc7n 理由がわからない命令に従うから暴走するんだな 長くする理由を知ってたら必要な長さ以上にはならないし 理解できないものは反対したり批判したりする習慣があれば暴走しない : デフォルトの名無しさん [sage] 2018/03/26(月) 01:28:05.88:mhu6xXG+ 例えを出しただけなのに「理由がわからないなら反対しろ!」と言われましても… : デフォルトの名無しさん [sage] 2018/03/26(月) 01:45:15.94:h+3ybIF8 馬鹿らし過ぎる。。 関数切り出してスコープ切ればいいだけの話だろうに。 今時の言語ならネームスペースだって使えるだろうし、エイリアシングみたいなものも ある。 てかそれもなければなんの略かのコメントでも付けてろよ。 : デフォルトの名無しさん [sage] 2018/03/26(月) 01:59:38.91:BMtnwc7n 反対しろとは言ってないぞ しかし単語の組み合わせを少し改竄するとそういう意味になる可能性はあるのか だから短い単語を組み合わせるのをやめて長い固有名詞を一個だけ書くのか : デフォルトの名無しさん [sage] 2018/03/26(月) 02:02:12.66:hwIkGQhx goだとどいつもこいつもクッソ短いんだけどな google内でも派閥があると見える : デフォルトの名無しさん [sage] 2018/03/26(月) 02:05:44.31:mhu6xXG+ 哲学とかも不要な誤解や意図した曲解を避けるために用語をどんどん定義していくよね 今回で言えば「合目的的」であれ、とかか。 でも非常に長い名前は必ずしも判りにくくは無いんだよねああして書いてみると。 見難いのが問題なだけであって。 : デフォルトの名無しさん [sage] 2018/03/26(月) 03:07:46.44:qQm2MzQc 名前が無いものに分かりやすい名前を付けようとするとどうしてもそのまんまの名前になっちゃうんだよな aにbを足してcをかけた数に「aにbを足してcをかけた数」という名前を付けたり : デフォルトの名無しさん [] 2018/03/26(月) 04:27:44.25:WZ1ZCWjW C++11から日本語の識別子も使えるようになったんだよな。 ということは。 #define もしも if もしも(0 < プロキシ情報の配列におけるアイテムの索引) { ・・・ } : デフォルトの名無しさん [] 2018/03/26(月) 07:19:11.84:WZ1ZCWjW 最近気が付いたのは、MSは情報を収集するためにちょっと踏み込んだことをしてるな。 Google的になったというか。 例えばMSが提供する一部のアプリケーションでは変換中の文字列について対象文節をわかりにくくするようになった。 これはつまり、単漢字変換のようなことをせず、一括変換してから間違えた部分を修正してほしいということだろう。 なぜそのようなことをするのか? 誤変換に関する統計情報が欲しいのだろう。 : デフォルトの名無しさん [] 2018/03/26(月) 07:21:37.08:WZ1ZCWjW もちろん、一括変換がうまく機能しないからこそユーザーは変換範囲を狭めて変換するのだし、誤変換情報が欲しいのは、変換が上手くいかないことがわかっているからだろう。 つまり、一部のソフトウェアは意図的にとても使いづらくなっている。 : デフォルトの名無しさん [sage] 2018/03/26(月) 08:36:23.04:fyNor71T つまり次世代言語とは日本語の事だった…!? : デフォルトの名無しさん [] 2018/03/26(月) 08:48:45.88:WZ1ZCWjW いや中国語だろうけどさ。 : デフォルトの名無しさん [sage] 2018/03/26(月) 16:34:24.37:b2RxclhK ブラックジョークかな? : デフォルトの名無しさん [sage] 2018/03/26(月) 16:41:17.53:jinbnpD9 でもたしかにコードが中国語なら、短い変数名で意味が通るからコードはすっきりしそう : デフォルトの名無しさん [sage] 2018/03/26(月) 16:52:27.07:Xx23wWxJ C 風の文法なら名前が空白区切りで並ぶ必要あまり無いし、 名前の途中に空白を含めても良いという言語があっていい気がする var indexOfProxy := 0; var index of proxy := 0; どっちが見やすいかな : デフォルトの名無しさん [sage] 2018/03/26(月) 17:37:31.08:dvRuSlEv 今の中国の字(簡体字)はよくわかりません : デフォルトの名無しさん [sage] 2018/03/26(月) 18:56:27.15:MGgBxL58 謝謝茄子… : デフォルトの名無しさん [sage] 2018/03/26(月) 19:33:26.92:sC9O8aKE 勘弁して。こんな発想はエアプだけだろ。少なくともエディターとの連携がしづらいし。 そもそもどっからどこまでが予約語で変数かどうやって判断するの? 当然の帰着として変数名に予約語を含めることは絶対禁止ってことになるだろ。 想像しただけで死にたくなってきた。 : デフォルトの名無しさん [sage] 2018/03/26(月) 19:40:27.04:jinbnpD9 Fortranは空白無視するがな : デフォルトの名無しさん [] 2018/03/26(月) 19:55:57.52:pOsEMXVS お前ホモかよお!? : デフォルトの名無しさん [sage] 2018/03/27(火) 00:43:26.13:ry3uUZdU 予約語は大文字だけ、変数名は小文字だけで書くとか… VAR index of proxy := 0; : デフォルトの名無しさん [sage] 2018/03/27(火) 00:56:02.73:Zrk+MxC2 そんな前時代的な…… : デフォルトの名無しさん [sage] 2018/03/27(火) 01:05:23.75:5DREL+sj クソワロタwww : デフォルトの名無しさん [sage] 2018/03/27(火) 01:14:44.93:1nOfLeWK お前ら頭悪いなwww 俺様が華麗に解決してやろう ほらよ var index%20of%20proxy := 0; : デフォルトの名無しさん [sage] 2018/03/27(火) 02:14:32.56:xOo+kmL4 どんどんバカになっていってる。 : デフォルトの名無しさん [sage] 2018/03/27(火) 02:49:05.89:nthqohzW 読みにくいしこうしたらどうだろう?(名案) var index_of_proxy := 0; : デフォルトの名無しさん [sage] 2018/03/27(火) 11:11:55.54:4hOyl1p5 バカなことを思いつくことは誰にでもあるが それを宣伝して押し売りするか黙って廃棄するかの判断がおかしくなってるんだろう : デフォルトの名無しさん [sage] 2018/03/27(火) 22:54:29.91:D/rPklFE いわゆる全角スペース使うとか、とにかくコンパイラにスペースと思われない文字だが見た目がスペースのやつを使えばいいのでは? Java なんかはそれでなんとかなっちゃうよな。 : デフォルトの名無しさん [sage] 2018/03/27(火) 22:59:22.15:xOo+kmL4 職場で本気でそんなことしだしたら俺は怒るよ。 : デフォルトの名無しさん [sage] 2018/03/27(火) 23:16:27.79:iLpxT8od DDDとかだとDSLを作るって言うけど それって変数名とかメソッド名に日本語を許容するってこともありえんのかな? : デフォルトの名無しさん [sage] 2018/03/27(火) 23:35:51.57:O0jMKDc6 最近の言語って識別子に日本語使えるの増えたよな。まあ日本語っていうかUnicodeなんだけど。 : デフォルトの名無しさん [] 2018/03/28(水) 05:56:44.07:LrPDAu7h 絵文字を駆使したハンガリアン記法時代の幕開けだ : デフォルトの名無しさん [sage] 2018/03/28(水) 07:22:48.81:lXnJ1NTY ようやく時代がSmalltalk-72に追いついたかw ttps://pbs.twimg.com/media/DDhrUoSXkAAtvJO?format=jpg : デフォルトの名無しさん [sage] 2018/03/28(水) 10:43:26.92:Pilbwiej 時代を先取りしすぎるのも考え物 : デフォルトの名無しさん [sage] 2018/03/28(水) 10:45:01.89:qnpV2Jxp APL… : デフォルトの名無しさん [sage] 2018/03/28(水) 10:53:19.54:yjlej8xR 正直APLは今なら流行ると思う : デフォルトの名無しさん [sage] 2018/03/28(水) 10:55:53.02:qnpV2Jxp 統計とか各種データの集計に良さそうだもんな : 655 [sage] 2018/03/28(水) 11:29:22.55:ng8CxZVM たしかにそうなんですが…APLの方は記号を読みやすくするために用いているように思えなかったので… ピタッとはまれば驚愕の短さで書けますけどね 例: Conway's Game Of Life in APL ttps://www.youtube.com/watch?v=a9xAKttWgP4 : デフォルトの名無しさん [sage] 2018/03/28(水) 16:41:04.69:Lb32PKeB むしろ文字使用禁止な言語 (コーディングルールじゃなく言語仕様でemojiと記号を強制) 次世代言語感がいっぱいw : デフォルトの名無しさん [sage] 2018/03/28(水) 17:21:22.86:4ymmJVEB そういう次世代感か… 文法エラーにも優しくどう書いても何らかの動作をすることが望ましいな。 「プログラマになろう」というサイトを開いてみるか : デフォルトの名無しさん [sage] 2018/03/28(水) 22:26:11.70:CTFOdrqh チューリング完全になろう系じゃないか C++とHaskellの親戚みたいな言語がいっぱいだぞ : デフォルトの名無しさん [sage] 2018/03/28(水) 23:09:42.27:yjlej8xR C++とHaskell の親戚ってなんだ : デフォルトの名無しさん [sage] 2018/03/29(木) 02:16:30.07:Hc4kPWXM テンプレ(異世界転生or転移、チート、ハーレムあり)小説が量産されるみたいなノリで テンプレ(手続き型or関数型、型推論あり)言語が量産されるわけか その傾向はあるよね : デフォルトの名無しさん [sage] 2018/03/29(木) 02:37:14.12:tc7M6rRR Fortranのサブルーチンみたいな感じで副作用は全部intent(out)の引数にのみ許すことで実質純粋手続きみたいな言語って他にある? : デフォルトの名無しさん [sage] 2018/03/29(木) 07:56:15.41:plQi1Ped COBOLとかPLIとか汎用機時代の主役はだいたいそうでしょ まさかCOBOLプログラミングは全部グローバル変数でデータのやり取りをするみたいな話を真に受けてる? そんなの汎用機全盛時代の超規模開発において一山いくらのPG達に管理しきれるわけないだろ コンパイル単位を分割して、サブプログラムに明示的に構造体の参照を渡す形でリンクするか、別の実行ファイルにして間に一時ファイルを挟むんだよ Cがヘッダのincludeを覚えてしまったことで業界がダークサイドに堕ちたけど、昔のプログラムは今よりずっと疎結合で単体テストしやすかったんだよ : デフォルトの名無しさん [sage] 2018/03/29(木) 08:11:58.91:xXxQyZNu グローバル変数を使うのはパソコンのbasicの時代ではないか プロがどんな美しいコードを書こうが ネットで検索できるオープンソース以外は知ったことではない : デフォルトの名無しさん [sage] 2018/03/29(木) 08:13:12.45:9BLtoEOh 以前の俺含め今時は一時ファイルなんかダサいAPIやメッセージキューにしろなどと抜かす人が多いけど、汎用機を経験するとみんなバッチ信者になるよ 単体テストしやすく、開発規模面でもパフォーマンスス面でもスケーラブルで、運用も容易 汎用機のバッチ処理の設計は現代のプログラマ全員が学ぶべき素晴らしい技術 : デフォルトの名無しさん [sage] 2018/03/29(木) 08:25:29.74:xXxQyZNu ダサいというのは建前で、JITコンパイラ言語でそれをやりたくないのが本音ではないか : デフォルトの名無しさん [sage] 2018/03/29(木) 08:28:00.50:Hc4kPWXM Linux でも良くやってるぞ : デフォルトの名無しさん [sage] 2018/03/29(木) 09:11:24.31:r+OSvbaK モックライブラリがこんなに発達してるのに何言ってんだ : デフォルトの名無しさん [sage] 2018/03/29(木) 09:27:39.99:pztT5rJU バッチならファイル作って放り込むだけやぞ 結合状態でのリグレッションテストとかもdiff取るだけだし : デフォルトの名無しさん [sage] 2018/03/29(木) 10:09:08.49:CZF8yyoA バッチ処理で何してんの? システム運用中に流せるもの? 停止してから流すとしたら、想定時間内に終わらないように作んないといけなかったりするんじゃないの? : デフォルトの名無しさん [sage] 2018/03/29(木) 10:18:06.32:r+OSvbaK モックならインスタンス作って放り込むだけやぞ 結合状態でのリグレッションテストとかも状態比較するだけだし : デフォルトの名無しさん [sage] 2018/03/29(木) 10:48:51.83:pztT5rJU 結果が意図しないものになってるときにどうやって途中経過を調べるの? バッチならファイル見れば一発だけど、全サービスクラスにログ出力入れるの? : デフォルトの名無しさん [sage] 2018/03/29(木) 11:16:09.01:r+OSvbaK ログ出力も何もオブジェクトのスナップショットとって状態比較するだけ てか、結合テストで途中結果見てる時点で、それモジュールテストだろっていう : デフォルトの名無しさん [sage] 2018/03/29(木) 11:18:13.25:r+OSvbaK 結合テストでは通常おのおののモジュールが期待した結果を出力することを前提に振る舞いテストのみを行うだろ? 結果の比較なんかしてる時点で、考え方がズレてる : デフォルトの名無しさん [sage] 2018/03/29(木) 11:26:16.78:r+OSvbaK てかも書いてるけど、バッチ処理なんて前提条件厳しすぎるし、障害対応もめちゃくちゃ大変だろ 今どき、そんなシステムどんな業種で開発するんだ : デフォルトの名無しさん [] 2018/03/29(木) 16:52:27.07:wUGa4G8N 純粋手続きってのがわからん。 引数にin outだったらadaも付けれるぞ。 : デフォルトの名無しさん [sage] 2018/03/29(木) 17:13:18.86:mREgEFij Fortranのpure subroutineのことや。まんま訳して純粋手続きって書いたけど、分かりにくいなら以後pure subroutineって書くわ : デフォルトの名無しさん [sage] 2018/03/29(木) 17:55:25.23:d3FuArtt Fortran等の昔の言語には、サブルーチンと関数の区別があって サブルーチンは副作用あり、関数は副作用なしって使い分けがあったんだよ (その区別はAdaにもあったんだが、2012年の改定で関数もoutパラメータを持てるようになってしまった) : デフォルトの名無しさん [sage] 2018/03/29(木) 17:57:17.44:mREgEFij intent(out)さえつけといたらsubroutineにもpure修飾子をつけれることを俺はで言ったの : デフォルトの名無しさん [sage] 2018/03/29(木) 18:04:24.92:d3FuArtt あーすまん、話の流れを追いきれてなかった : デフォルトの名無しさん [sage] 2018/03/29(木) 18:42:15.80:mREgEFij 言ったのと言いつつ言ったつもりになってただけだわ。謝られるとこっちが申し訳ない : 680 [] 2018/03/29(木) 22:25:28.48:wUGa4G8N なるほどわかりやすい説明サンクス。 : デフォルトの名無しさん [sage] 2018/03/29(木) 23:19:00.18:fG+oYH1y 元々の問いに対する答えは持ってないけど、そもそも 引数に明示するのは返却値の代入と同じで副作用でも何でも無いような。 : デフォルトの名無しさん [sage] 2018/03/30(金) 00:38:00.59:Cv8Wlmrv そういう、単に複数の値を返したい(outパラメータを使いたい)からというだけで 関数ではなくてサブルーチンになっている物に対して、副作用がないことを明示できるのが Fortranのpure、という話だろう 今時なら普通にタプル返すだけだけど : デフォルトの名無しさん [sage] 2018/03/30(金) 01:00:29.06:Z4F/kC6f そうそうそれそれ。汲み取ってくれてありがとう タプルで返すのもいいんだけど、大きなベクトルとか行列とかは返り値として返そうとすると確保やらコピーやらのコストがかかっちゃうから、サブルーチンって結構いいと思うんだよね : デフォルトの名無しさん [sage] 2018/03/30(金) 03:17:21.13:Wx9gH+Ym でかい配列を返すとして、オブジェクトを複製せずポインター返しておしまいという言語も多いし : デフォルトの名無しさん [sage] 2018/03/30(金) 12:08:24.66:27QTfa4q それのオーバーヘッドがどの程度のものなのかよく分からんで不気味に感じるんだよな。俺が勉強不足なだけかな : デフォルトの名無しさん [sage] 2018/03/30(金) 21:17:44.20:S5bBhBUr ベンチマーク取ればいいだけじゃん : デフォルトの名無しさん [sage] 2018/03/30(金) 21:25:37.94:gL2Crqwy まあ実際そこそこオーバーヘッドあるんだけどね : デフォルトの名無しさん [sage] 2018/03/30(金) 21:34:29.21:35t2qqJ0 ベンチマークとれ テストコードかけ は若手にいうと凄まじく煙たがれるなw : デフォルトの名無しさん [sage] 2018/03/30(金) 21:37:02.92:lbiuvb17 毎回毎回 (N)RVO が効くかなと頭使ったりプロファイル計測したりするより 可能なら out パラメータにしたくなるよな string だけは何故か気軽に戻り値にしてしまうが : デフォルトの名無しさん [sage] 2018/03/30(金) 21:53:34.74:Lu4RhpIc なるほど。 値型ローカル変数でスタックを確保する事が意味論的に決まってると、 返却値でコピー回避は難しいですね。 Nimでresultが予約変数になってるのも不思議だったけど、外部で確保した 領域を直接割り当てられる、みたいな理由だったりするのかな。 : デフォルトの名無しさん [sage] 2018/03/30(金) 22:05:59.64:lbiuvb17 c++ の場合 RVO (return value optimization) が最高に効けば string f() { return string(“123”); } は void f(void * retval) { new (retval) (“123);} のように戻り値を呼び出し側が渡した領域に直接コンストラクトするから、 void f(string &s) { s = “123”; } よりも高速になる可能性がかなりあるんだよね vectorでもなんでも同じだけど どうでもいいか : デフォルトの名無しさん [sage] 2018/03/30(金) 22:50:08.41:MliDoeQ0 C++ならplacement newを使う手もありそうだが実際に使いこなせる気がしない : デフォルトの名無しさん [sage] 2018/03/30(金) 22:51:45.23:35t2qqJ0 どうでもいいな。 そこまで速度欲しいなら他にもっと直接的なやり方がいくらでもあるだろうに。 : デフォルトの名無しさん [sage] 2018/03/30(金) 22:53:37.54:s5wfWcqZ そんな細かいことで速くなるような状況ならインライン展開されるだろ : デフォルトの名無しさん [sage] 2018/03/30(金) 23:09:07.15:MliDoeQ0 マルチスレッドを考えるとスタックはスレッドローカルなので速度だけの問題ではない 速度だけ考えると確かにどうでもいいからマルチスレッドを考えるといい : デフォルトの名無しさん [sage] 2018/03/30(金) 23:32:59.08:vpP76l93 >>直接的なやり方 それがintent(out)なわけだが : デフォルトの名無しさん [sage] 2018/03/30(金) 23:36:16.61:vpP76l93 あすまんはへのレスか。それ分からずに変なこと書いた その「可能性がある」ってのやっかいだわ : デフォルトの名無しさん [sage] 2018/03/31(土) 00:27:11.90:Pb+ZodvD そもそも返り値使いすぎなんだよな 返り値なんてエラー管理かスカラー関数くらいにしとくものなのかも : デフォルトの名無しさん [sage] 2018/03/31(土) 01:41:58.87:uN2ioEKO その言語の推奨されるスタイルに合わせるべきじゃね? C++ならちょっとしたことでのどっちがいいか変わるとかには目をつぶって 返り値使うべき Fortranならoutパラメータを活用すればいいだろ(タプル無いし) そこから外れるのは実際に速度が必要になってからでいい : デフォルトの名無しさん [sage] 2018/03/31(土) 02:05:24.43:Pb+ZodvD そう。その推奨されるスタイルとしてintent(out)を採用している言語って少ないよなあーと思うんよ : デフォルトの名無しさん [sage] 2018/03/31(土) 02:15:44.60:t0EWsjNV このスレ的にあれどけどc言語がそうだ 戻り値はスカラーかポインタ それ以外の返り値が必要なら非constポインタを渡す : デフォルトの名無しさん [sage] 2018/03/31(土) 03:00:03.91:uN2ioEKO C言語はスタイルとしてはそうだけど、言語機能としてポインタ渡しとoutは区別されてないな 逆にD言語やC#はoutをinout/refと区別してるけど、推奨はされてない感が強い : デフォルトの名無しさん [sage] 2018/03/31(土) 08:00:23.62:9+5jHACw まあ直感的には引数はインプットで返り値がアウトプットってのは自然だとは思う。 そうならんのはcの場合は返り値をレジスタ、もしくはスタックにどう置くかを意識してるからでしょ。 良くも悪くも低レイヤーに合わせているわけだ。 : デフォルトの名無しさん [sage] 2018/03/31(土) 11:14:49.43:Pb+ZodvD Cはintent指定出来ないことに目を瞑ればかなり良いんだけど、配列の範囲外アクセスチェック周りとかが原始的すぎてデバッグしんどいなあ : デフォルトの名無しさん [sage] 2018/03/31(土) 13:27:31.25:pVxcphgn そもそもpure宣言相当が無い、つまりどんな関数も副作用が有りうると想定する 必要のあるCはお題から外れるのでは。 : デフォルトの名無しさん [sage] 2018/03/31(土) 14:04:14.80:Pb+ZodvD せやな : デフォルトの名無しさん [sage] 2018/03/31(土) 14:18:10.92:38KyKd1m 「副作用が無いDSL」のインタプリタをCで作るか インタプリタではない何かをDDDで作れ : デフォルトの名無しさん [sage] 2018/03/31(土) 14:45:53.72:uN2ioEKO つ__attribute__((pure)) : デフォルトの名無しさん [sage] 2018/03/31(土) 19:03:39.12:pVxcphgn libC関数もヘッダに情報が入って、pure から pure じゃない関数を呼んだらコンパイルエラーになるくらいになったら意味があると思うけど。 : デフォルトの名無しさん [sage] 2018/03/31(土) 20:16:30.87:dM6Zlct0 画面に出力するのは副作用?Thunderbolt3で接続したGPUボックスをGPGPUとして使った計算は? ヒープ領域を変更するのは? と、考えるとpureなものって何でしょうね、ってならないかね : デフォルトの名無しさん [sage] 2018/03/31(土) 20:30:38.28:Pb+ZodvD その辺はHaskell的なアプローチでいいんじゃない? : デフォルトの名無しさん [sage] 2018/03/31(土) 20:31:03.58:Pb+ZodvD Haskell のは並列か : デフォルトの名無しさん [sage] 2018/04/02(月) 19:29:25.78:o7/+6TQd Cって 「本当は疎結合にしたいけど性能優先でしかたなく密結合にするよ」 を理解できるレベルを暗黙の前提にしてない? なんであんなに流行したんだろ?? : デフォルトの名無しさん [sage] 2018/04/02(月) 19:41:43.42:jOZ58Btw Nimって疎結合にしても密結合なCくらいのパフォーマンス出るんだろうか? : デフォルトの名無しさん [sage] 2018/04/02(月) 19:51:29.66:7E1ezZvV ライバルたり得たPascalが 文字列は255文字まで 可変長引数使えない ポインター扱いにくい int と char の区別が面倒、など なんとも無意味な不便さを抱えていたからだと思う 32ビットまでの Windows は API の呼び出し規約が Pasal 流なのに文字列はC式、 初期の Macinrosh は API の文字列も公式の解説書の記述も Pascal だったりしたなあ : デフォルトの名無しさん [sage] 2018/04/02(月) 20:02:30.49:jOZ58Btw ごめんなんでもない : デフォルトの名無しさん [sage] 2018/04/02(月) 22:21:14.63:EN/8rlvw 疎結合の意味はよくわからんがdllやsoの中身はほぼ全部Cの関数だろ : デフォルトの名無しさん [sage] 2018/04/02(月) 22:23:36.55:QQz+Sj8+ 高級言語からCの方向で見てるからの感想だろ。 アセンブラからCの方向だったらまた違った感想になるんじゃないかね。 : デフォルトの名無しさん [sage] 2018/04/03(火) 00:10:13.25:RwyGVa1s ドライバのようにインタフェースを関数ポインタで定義して実装を分離するみたいなのが疎結合のC? : デフォルトの名無しさん [sage] 2018/04/03(火) 00:12:50.53:kpq2obaf 素直に別の実行ファイルにするのが疎結合のC : デフォルトの名無しさん [sage] 2018/04/03(火) 01:42:26.51:+aZgql8Q それはコロンブスの卵だから無意識に選択肢から外してしまうんだよな 任意の言語でできることをやっても特定の言語の手柄にならないから : デフォルトの名無しさん [sage] 2018/04/03(火) 03:18:38.36:uqya3zvR 作者のwirth先生はPascalを教育用、ModulaをOSも書けるように作ったのに Pascalの方がそれなりに広まってModulaがさっぱりだったのは不幸だよな まあModulaはModulaで面倒くさいとこあるんだけど : デフォルトの名無しさん [sage] 2018/04/03(火) 12:54:09.54:GZlQK3q7 いい加減スレタイからRustはずそうぜ : デフォルトの名無しさん [sage] 2018/04/03(火) 14:02:58.92:bDjjKsy9 つか、スレタイから次世代言語をはずした方がいいんじゃね。 旧世代の言語の話しか出てこないし。 : デフォルトの名無しさん [] 2018/04/03(火) 14:19:06.58:01qL0AuM 次世代を語るためには旧世代を知っておかねばならんのだ(キリッ : デフォルトの名無しさん [sage] 2018/04/03(火) 14:58:56.73:nX+Jhx5Q おんこちしんと うんこちんちん 似てる : デフォルトの名無しさん [sage] 2018/04/03(火) 16:29:09.56:lykT2DjF C++のポジションを狙う言語には「なんなんだよこの仕様=うっとうしい」もついてくるからw : デフォルトの名無しさん [] 2018/04/03(火) 17:41:10.26:01qL0AuM C++のポジションを狙うRustには「なんなんだよこのアンチ=うっとうしい」もついてくるからw : デフォルトの名無しさん [sage] 2018/04/03(火) 18:01:19.06:teyqxCn/ ネタにしてるが、マジで旧世代言語知らずに次世代なんて語れんだろう。 : デフォルトの名無しさん [sage] 2018/04/03(火) 19:42:11.24:wFxxlJZP そもそも次世代言語ってまだない言語を夢想して話せってこと?無茶いうな : デフォルトの名無しさん [sage] 2018/04/03(火) 19:48:53.79:AUs9WXEq あのアンチはRustに職を奪われたからね、しょうがないね Rustスレで気持ちよく大暴れしてるときに自分で漏らしてたよ : デフォルトの名無しさん [sage] 2018/04/03(火) 20:16:15.66:BzNmSsTz なんでこんなrust普及の妨げにしかならんこと言いだすんだろう。 : デフォルトの名無しさん [sage] 2018/04/03(火) 20:27:21.10:X7iioW9i UE4やHoudini使ってると次世代言語はビジュアルプログラミングでいい気がしてきた : デフォルトの名無しさん [sage] 2018/04/03(火) 20:33:03.03:s7jZ67re Rustは次世代言語だがC++知ってた人と今から勉強始める人の格差はリセットされないな 世代交代とは寿命が尽きることであって格差がなくなることではない : デフォルトの名無しさん [sage] 2018/04/03(火) 20:44:15.49:uqya3zvR MSは何故GUIエディタを放棄してXAMLなんぞ作ったんだろうか…… : デフォルトの名無しさん [sage] 2018/04/03(火) 21:06:26.14:teyqxCn/ XAMLはまだBlendで書けるだろ。 : デフォルトの名無しさん [sage] 2018/04/03(火) 21:10:07.12:f/nGrkvY XAMLを手書きしてる人なんているか? : デフォルトの名無しさん [sage] 2018/04/03(火) 21:27:57.24:teyqxCn/ Xamarinの人たちかな。 : デフォルトの名無しさん [sage] 2018/04/03(火) 22:59:23.72:oucbN3qp 補完ありのテキストエディタならいくらでもいそうな気がするが。 : デフォルトの名無しさん [sage] 2018/04/03(火) 23:12:30.59:gOYTrQOB Delphi「やっと時代が追い付いたか」 : デフォルトの名無しさん [sage] 2018/04/04(水) 00:44:22.36:fh2IMjqM じゃあdiff取ってみろ。 テキストを超える記述方法は無いよね。 : デフォルトの名無しさん [sage] 2018/04/04(水) 16:47:20.75:VNuZKpdj Kylix「誰も知らない 知られちゃいけない」 : デフォルトの名無しさん [] 2018/04/04(水) 17:04:36.07:Pmay6Vdj deっvi---l : デフォルトの名無しさん [sage] 2018/04/04(水) 17:31:20.15:wRFLDXS3 まあVBの方が古いんだけどな : デフォルトの名無しさん [sage] 2018/04/07(土) 09:53:55.09:e89pcJBq 同意 テキストよりビジュアルの方が人間の頭脳に優しい : デフォルトの名無しさん [sage] 2018/04/07(土) 12:37:16.42:JZPNgytE Goの案件って結構あるのね : デフォルトの名無しさん [sage] 2018/04/07(土) 12:55:34.16:y0NHVjlZ Goみたいな不安定なものよく使うな : デフォルトの名無しさん [sage] 2018/04/07(土) 13:26:35.73:LOY6Fa8O Cはグローバル変数の使い方やOOPのやり方みたいなローカルルールないと無理っぽい Cがいくら安定してもローカルルールは安定しない : デフォルトの名無しさん [sage] 2018/04/07(土) 13:43:27.23:iO/NW/s5 流石にひどいw : デフォルトの名無しさん [sage] 2018/04/07(土) 16:18:41.57:dIEw27mY まじでー。普通のcrudなweb案件とかもあるならやってみたい : デフォルトの名無しさん [sage] 2018/04/07(土) 17:28:50.26:1M9Ik5ns どこが不安定なんだろ? : デフォルトの名無しさん [sage] 2018/04/07(土) 18:15:56.12:LOY6Fa8O 小学校でプログラミングを教えろ、ただし中学レベルの数学を教えるな Goがやりたいことは大体これと同じだろ : デフォルトの名無しさん [sage] 2018/04/07(土) 18:27:40.19:2Xz4c+5M 何か問題でも? : デフォルトの名無しさん [sage] 2018/04/07(土) 19:04:22.55:LOY6Fa8O どこかの評論家に否定される前に、自分で考えて肯定すればいいのに 自分で考えるのをやめたら、否定してくださいと言ってるようなものじゃないか : デフォルトの名無しさん [sage] 2018/04/07(土) 19:20:07.17:y0NHVjlZ は自分で考えてなんの問題もないと肯定したレスだろう : デフォルトの名無しさん [sage] 2018/04/07(土) 19:59:52.92:65xgSjRP まあGoogleの中の人は例外すら理解できなくてGoに盛り込まなかったくらいだからな Googleのプログラマは小学生レベル : デフォルトの名無しさん [sage] 2018/04/07(土) 20:02:15.13:y0NHVjlZ いやいやいや : デフォルトの名無しさん [] 2018/04/07(土) 20:42:13.27:n5lWGq5m 例外なんて機能を欲しがるとか正気か? タプルかタグ付きユニオンのある言語には例外なんて必要ない むしろ、無いほうがよほど筋が良い。よりによって例外かよ… Go言語の問題はもっと他にあるよね ジェネリクスとかNil安全とかラムダ式とかイミュータビリティとか : デフォルトの名無しさん [sage] 2018/04/07(土) 20:45:00.99:y0NHVjlZ AirPlayさんなんだろ : デフォルトの名無しさん [] 2018/04/08(日) 00:14:21.96:Dxb/j7Bg 100得ナイフを欲しがっても無理だぜ。 お前さんは、刺身包丁では肉を斬りにくいと文句いう人なの? : デフォルトの名無しさん [sage] 2018/04/08(日) 00:16:58.41:kOs0IpX+ ガイガイ : デフォルトの名無しさん [sage] 2018/04/08(日) 00:44:53.47:V9VuwMAu ここでのクソみたいな議論に時間を使うことが一番コスト高ってことを goを使ってる人はわかってる。 : デフォルトの名無しさん [] 2018/04/08(日) 00:59:11.92:yrhx1H5B 例外ってか戻値無視してたらコンパイルエラーにする構文がほしい。(すでにgoにあったらスマヌ) ライブラリやミドルウェア作るとき、ここでエラーならそれ以上処理進めんなってことあるので、アプリ側のエラーハンドリングを強制させたい。 それができないからやむを得ず例外で終了させてる。 : デフォルトの名無しさん [sage] 2018/04/08(日) 01:06:05.49:+FJwvftX 例外とコンパイルエラーを同じものと考える神経がわからん。 実行時にまずい処理が来たらgoのプログラムを強制終了させたいならpanicがあるが。 : デフォルトの名無しさん [sage] 2018/04/08(日) 01:11:44.09:+FJwvftX つーかgoが気に入らない理由に例外を上げるけど、例外ってそんなに良いもんかね? 例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある? それくらいやってくんないと例外を使う意味って、エラーハンドリング問題の先送りでしかないから。 : デフォルトの名無しさん [] 2018/04/08(日) 01:12:25.64:DdcJdhQn 問題って書いたのが誤解を招いてしまったかな… 別に上記の全てが無いとダメって言ってるわけじゃないよ。あったら嬉しいなくらいにしか思ってない けど、例外なんて邪魔にしかならん機能を欲しがるくらいなら他に欲しいものがいくらでもあるだろと思って… あと、揚げ足取って悪いけど、100徳ナイフを欲しがってるなら例外も欲しがってるはずだろ… 例外と継承を捨てたのはGoの英断 : デフォルトの名無しさん [sage] 2018/04/08(日) 01:16:07.05:kOs0IpX+ いやお前は悪くない。相手が意味ワカラン奴なだけだ : デフォルトの名無しさん [sage] 2018/04/08(日) 01:46:25.89:21utqBEE java 但しランタイム例外は除く : デフォルトの名無しさん [] 2018/04/08(日) 02:00:48.53:DdcJdhQn >例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある? Javaの検査例外とSwiftの例外はtry必須だよ。 けど、try必須だと書くのが面倒なんだよね。実際、Javaでは非検査例外のほうが主に使われてるし… 検査例外と非検査例外を場合によって書き分けるのがJavaの理想なんだろうけど、現実はそうじゃない… Swiftの例外はtryの書き方が何種類かあるからJavaより使い易くはなってるんだけど Rustと同じでタグ付きユニオン(enum型)あるから別に必要なくない?ってなる Rustはエラー処理にenumのResult型を使うけど、Swiftでは例外を使うのがマナーなのかな? : デフォルトの名無しさん [sage] 2018/04/08(日) 02:16:09.65:+FJwvftX swiftはそうだったな。 たしか例外周りはswift2で追加実装されてウゲーってなった覚えがあるような。 swiftの言語仕様の変更は凄まじいものがあるよな。もうswift4だっけか? 正直swift信奉者≒apple信者じゃないと説明がつかない。 言語仕様をミニマムに抑えて熟考するgoを見習ってほしいわ。 : デフォルトの名無しさん [sage] 2018/04/08(日) 02:26:12.80:+FJwvftX つまり結局goのエラーハンドリングの面倒くささと一緒になるってことだよな? goのエラーはただの値だから 構造体のメンバ変数に格納先を用意してやれば、 後で纏めてチェックしたり、 一回でもエラーが発生したら処理を中断する みたいな書き方は全然できる。 そのへんはgo blogに記事があった。 : デフォルトの名無しさん [sage] 2018/04/08(日) 03:04:32.63:N7to3hps goの例外不在についてはerrorの握りつぶしが書きやすい上に気づきにくいのが不満 握りつぶしに比べたら先送りのほうがまだ良い が戻値無視してたらコンパイルエラーって言ってるのはそこが理由でしょ : デフォルトの名無しさん [sage] 2018/04/08(日) 03:14:34.94:+FJwvftX あー。なるほどと思ったけど例外処理は先送りしたあげく、結局とこでも処理せず終わるパターンあるよね。 握りつぶしが簡単にできるのはどっちも一緒では? : デフォルトの名無しさん [sage] 2018/04/08(日) 03:17:34.48:N7to3hps ハンドルされない例外は処理の中断になるけど、 握りつぶしは処理の続行になる 中断のほうが良い、と思う : デフォルトの名無しさん [sage] 2018/04/08(日) 03:49:10.38:DdcJdhQn 例外の一番の問題は予想外の場所で例外が不必要にキャッチされて、その上で 握りつぶされてしまった場合、握りつぶされた場所を特定するのがかなり面倒臭いこと。 そんなコード書くヤツが悪いと言いたいが実際にいるんだからしょうがない… どこで握りつぶされるか分からんリスクを背負うくらいならその場で握りつぶされた方がまだいい 因みに、エラーハンドリングに関してはRustのResult型が最も筋が良いと思ってる Result型なら故意に握りつぶそうとでもしない限りは簡単には握りつぶせない : デフォルトの名無しさん [sage] 2018/04/08(日) 04:07:01.05:N7to3hps goのほうが握りつぶしが書きやすいからこそ、どこで握りつぶされるか分からんリスクはgoのほうが大きい、と思うんだよなあ : デフォルトの名無しさん [] 2018/04/08(日) 08:46:33.77:Dxb/j7Bg トラブルシューティングの為に、キャッチした時点でロギングしないの? : デフォルトの名無しさん [sage] 2018/04/08(日) 09:00:51.10:RUgiqDA/ Cのprintfの戻り値を毎回欠かさずチェックしてる人だけが例外に石を投げなさい : デフォルトの名無しさん [sage] 2018/04/08(日) 10:19:07.88:xmyFoIZI 戻り値の握り潰しは局所的・静的に判断できるけど例外はそうじゃないからなぁ。 それこそ例外を起こしてみないと見つけるのが困難だったりして。 : デフォルトの名無しさん [sage] 2018/04/08(日) 10:23:53.74:+rfxRhvD 例外は継続的な改良に対応しやすいのがメリットなんだよな 取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、 あとでより丁寧な取扱いが必要になったときは問題なく対応できる もちろん、検査例外とかいうビチグソは無い前提だが : デフォルトの名無しさん [sage] 2018/04/08(日) 11:36:37.63:Bf+GYw8s 最初はexit exitの握り潰しが必要になったら例外で : デフォルトの名無しさん [] 2018/04/08(日) 11:42:04.86:YK+KPtHu 1から10までの整数を足すのに ループで順番に足す方法を教える様なのが 今の日本のプログラミング学習(教育)だからな そんなんじゃだめ : デフォルトの名無しさん [sage] 2018/04/08(日) 13:08:16.40:mQRLIlYG このスレも例外が理解できない幼稚園児ばっかかよ Goみたいな言語が流行るわけだ : デフォルトの名無しさん [sage] 2018/04/08(日) 13:22:55.27:Bf+GYw8s 自分で選んだ言語がそれだったらそれでもいいよ より良い言語を後で見つけたら自分が馬鹿だっただけで済む しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する : デフォルトの名無しさん [sage] 2018/04/08(日) 13:39:52.93:T4sPcvM1 このスレの議論はほんとレベルが低いな 間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか : デフォルトの名無しさん [] 2018/04/08(日) 13:50:33.26:DdcJdhQn なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。 の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから 誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。 俺の言う"どこ"は例外がスローされた場所に対して キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。 キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。 Goみたいに戻り値としてエラーが返されるとエラーの発生場所と 握り潰した場所は必ず一致するからデバッグしやすい。 結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:09:14.32:Bf+GYw8s 従来の言語にはexitがあるから例外がない SmalltalkやJavaScriptにはexitがないから例外があるんだろう : デフォルトの名無しさん [] 2018/04/08(日) 14:12:58.97:DdcJdhQn でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように 制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。 オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし… : デフォルトの名無しさん [sage] 2018/04/08(日) 14:13:54.54:aL28Ce5R 戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。 例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。 goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:15:23.81:V9VuwMAu 間違えを考慮しないシステムの恐ろしさを全くわかってない奴はそもそも話にならん。 プログラミングを語る資格がない。 : デフォルトの名無しさん [] 2018/04/08(日) 14:23:41.21:DdcJdhQn すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。 ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。 デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:26:14.02:aL28Ce5R 返り値でエラーを判別するコードだと、本来やりたいことの次にほぼ必ず、エラー判定処理が入るから、可読性が低いんだよね。 昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。 正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:32:30.43:kugCg6kv そのあたりはEitherが良いと思うんだな : デフォルトの名無しさん [sage] 2018/04/08(日) 14:35:54.54:aL28Ce5R 後、最近のIDE使ってると、todoをコメントに入れとけば、あとでそれを、まとめて見直せるから、取り敢えず、try-catchして、catchのところはtodoにしといて、まず正常系を一通り買いてから、あとで異常系に対処するっていうワークフローにできるのが、例外の利点かなと思う。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:37:10.66:N7to3hps デバッグ時に、どこかでエラーが握りつぶされてるかもしれない、というパターンを考えないといけない、という意味で「どこ」 しかもそういう状況はの言うように不適切な状況で動き続けるから 握りつぶした箇所と不具合の発生箇所がかけ離れることも多い だから、goに限ったことではないが、エラーや例外の握りつぶしはデバッグしづらい 例外がどこでcatchされてるか探すのは、握りつぶし探しに比べたらまだ簡単 : デフォルトの名無しさん [] 2018/04/08(日) 14:37:23.36:DdcJdhQn タグ付きユニオンがある言語ならそれが一番だと思う。 前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる でも、Goにはタグ付きユニオンがないからなあ… : デフォルトの名無しさん [sage] 2018/04/08(日) 14:51:49.81:aL28Ce5R goは本格的には使ったことないけど、無視はできないんで、いろんなコードを見てるんだけど、今のところの感想としては、goって、書き手の思考を遮らないというところに重きを置いてる印象。 deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。 自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。 : デフォルトの名無しさん [sage] 2018/04/08(日) 14:51:50.04:Bf+GYw8s 副作用禁止ならexitも例外も禁止だからEitherがある : デフォルトの名無しさん [sage] 2018/04/08(日) 15:22:23.64:gQU7xBEC stack traceもしらんのか : デフォルトの名無しさん [sage] 2018/04/08(日) 15:29:06.45:drN9+cfC 握りつぶしてるところでスタックトレース出力するんだよ! ('、3_ヽ)_?? : デフォルトの名無しさん [sage] 2018/04/08(日) 15:51:49.24:4BboKQKO maybe, eitherがある言語やった後に無い言語はしんどい : デフォルトの名無しさん [sage] 2018/04/08(日) 17:20:17.22:kOs0IpX+ Maybe, Eitherは強い。ほぼ必須な体になってしまった : デフォルトの名無しさん [sage] 2018/04/08(日) 17:47:41.66:iGi236dt Eitherは初見だとそれがエラー処理用によく使うっていうことが 名前から全然伝わってこないところだけが嫌い : デフォルトの名無しさん [sage] 2018/04/08(日) 17:58:42.79:+FJwvftX 書きやすさと読みやすさは同一だと思ったが。特にdeferとか大体close処理では? open直後はdeferにclose処理書いてあったほうが読みやすくないかな? : デフォルトの名無しさん [sage] 2018/04/08(日) 17:58:46.39:AFrzJyvZ たし蟹 : デフォルトの名無しさん [sage] 2018/04/08(日) 18:04:30.90:ikNNlzZg リューナイト : デフォルトの名無しさん [sage] 2018/04/08(日) 18:14:07.95:V9VuwMAu defer はスコープの終わりで暗黙的に動くクラスのデストラクタより コード部分で明示した方がわかりやすくね?って発想じゃないかね。 こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。 : デフォルトの名無しさん [] 2018/04/08(日) 18:50:09.38:BxgydgxS c++17の [discard]はどうかね? : デフォルトの名無しさん [] 2018/04/08(日) 18:52:29.42:BxgydgxS 間違えた nodiscard : 769,815 [] 2018/04/08(日) 23:39:43.80:yrhx1H5B > Goみたいに戻り値としてエラーが返されるとエラーの発生場所と > 握り潰した場所は必ず一致するからデバッグしやすい。 俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。 : デフォルトの名無しさん [sage] 2018/04/09(月) 00:41:14.72:R+tVusAV Fortran のIO関係のエラー処理は優れてると思うわ。 Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了 : デフォルトの名無しさん [sage] 2018/04/09(月) 00:59:36.33:1PTa96/6 goのdeferは、その中で起こったエラーを外に通知する(簡単な)方法がないってんで 槍玉に上げられてなかったっけ?うろ覚えだけど : デフォルトの名無しさん [sage] 2018/04/09(月) 01:32:15.01:l0nazyXh 一番簡単な方法は名前つきreturn変数を使うことだから簡単ちゃ簡単 だが正直名前つきreturn変数がそもそもクソ構文 : デフォルトの名無しさん [sage] 2018/04/09(月) 06:40:40.00:ON56dtQ5 異常終了してはならないUIもある UIが言語に影響を与える : デフォルトの名無しさん [sage] 2018/04/09(月) 07:57:09.29:1PTa96/6 はー、名前付きreturn変数なんてあったんだ しかし本来の流れによるerrがある場合は握りつぶさないようにしないといけないし、真面目にやると分岐が入り組みそうだな : デフォルトの名無しさん [sage] 2018/04/09(月) 07:59:50.20:R+tVusAV いやそのためにerr引数があるのよ…… : デフォルトの名無しさん [sage] 2018/04/09(月) 08:27:01.39:D454qjGx MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈) SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。 : デフォルトの名無しさん [] 2018/04/09(月) 08:42:34.03:mPPENYW6 理想はエラーハンドリングを書いてなかったらコンパイルエラー。 (エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない) 次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。 一番悪いのはそのまま処理進んでサイレントクラッシュ。 こんな感じ。 : デフォルトの名無しさん [sage] 2018/04/09(月) 08:51:45.67:2cUxs1pv コンパイルエラーは、そこまで強烈にエラー対応必須にしたらスクリプトみたいな「まずはとりあえず動くコードを書いて様子を見る」っていう使い方は出来なくなるな : デフォルトの名無しさん [] 2018/04/09(月) 09:45:04.94:9pBeshvD となるとrustやな : デフォルトの名無しさん [sage] 2018/04/09(月) 09:59:14.65:RBhArkXv そういやClojureってどうなったん? : デフォルトの名無しさん [sage] 2018/04/09(月) 10:18:17.46:aahOEQux Goの名前付きreturn使うとアセンブリまで落としたとき、コードが少しきれいになるぞ。 俺は好き。 : デフォルトの名無しさん [sage] 2018/04/09(月) 10:48:34.89:1PTa96/6 返値の最適化だけが目的なら初めからresult変数方式のやつ使えば Pascal、Eiffel、あとFortranもそうだぞ : デフォルトの名無しさん [sage] 2018/04/09(月) 11:33:31.90:ON56dtQ5 デバッグは自分との戦い だが最適化は自分が速くならなくても相手が遅くなれば勝てる 他人の足を引っ張る要素があるからカオスになる : デフォルトの名無しさん [sage] 2018/04/09(月) 12:00:22.27:aahOEQux だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。 例外は俺も好きじゃないな。 ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、 finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、 各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、 毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。 deferは、実際に使えた直後に開放を予約できるから価値がある。 良くできてると思うけどな。 : デフォルトの名無しさん [] 2018/04/09(月) 12:16:00.98:Wtc2x12J そこは、エラー戻値無視するな構文を用意してれば良い : デフォルトの名無しさん [sage] 2018/04/09(月) 12:16:21.64:ebJj02XJ え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの? : デフォルトの名無しさん [sage] 2018/04/09(月) 13:04:43.93:1PTa96/6 されるよ。全部の実装でそうとは断言できないけど 要するにのretvalが直接返り値用の変数として見えるってだけ : デフォルトの名無しさん [sage] 2018/04/09(月) 14:38:02.08:50KKUeFL 何でここの人たちエラーをその場で処理するのが当然だと思ってるの? 普通は上に投げるよね? : デフォルトの名無しさん [sage] 2018/04/09(月) 14:47:49.87:iBEYls0Z その「上」の関数ではどうすんの?また上に投げるの? : デフォルトの名無しさん [sage] 2018/04/09(月) 15:03:10.07:FuUgA4s9 一番上のハンドラでまとめて受け取る : デフォルトの名無しさん [sage] 2018/04/09(月) 15:18:43.79:ml5ntbUH 結局人類にgotoは必要だったんだ! : デフォルトの名無しさん [sage] 2018/04/09(月) 16:05:31.09:O1tgNFRh なんで2ちゃんでこういう議論をすると最期は必ずアホアホ展開になるの? : デフォルトの名無しさん [] 2018/04/09(月) 16:19:21.64:mPPENYW6 俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。 rustのResult型や他言語のEither勉強不足でわからない。スマヌ : デフォルトの名無しさん [sage] 2018/04/09(月) 16:26:17.23:ON56dtQ5 マルチスレッドが普通になったから 上に投げるよりスレッドの外に投げる : デフォルトの名無しさん [] 2018/04/09(月) 16:39:51.89:wyYx8QLn rustのResultは検査しないとコンパイラにワーンされるよ : デフォルトの名無しさん [sage] 2018/04/09(月) 18:13:02.99:aahOEQux 上に投げるとしても、戻り値で明示的に戻せば良いだろう。 とりあえず手に負えないからだれか呼んだ人処理して、って言って、だれの手にも負えない可能性がある、ってのは良くないと思うよ。 普通とか言い始めると誰の普通かはっきりしないから、それはおいといて。 goでも、ホントに戻り値なしで呼ぶとき以外(何かしらの値とともにエラーが帰ってくる時)は、_で明示的に握りつぶさない限り受けた変数に触らないとコンパイル通らないし。 何一つ受けずに呼び出したり、触った結果握りつぶしたらコンパイルは通っちゃうけど。 : デフォルトの名無しさん [sage] 2018/04/09(月) 18:20:13.54:2gnvm26g 例外安全を徹底してればどこでキャッチしようが手に負えない例外なんか無いだろ それを不安に感じるのは、個別の事情にばかり気を取られて全体の一貫性を疎かにする典型的な日本人の思考パターンだ (メモリ不足など、どこでキャッチしても対処のしようがないものは除く) : デフォルトの名無しさん [sage] 2018/04/09(月) 18:26:58.77:aahOEQux 徹底する、というルールベースな時点で「手に負えない例外は存在しない」という事を言い切るのは不可能でしょ。 メインロジックではアプリケーションの総合ハンドラでメッセージ出してリトライさせれば手に負えるはずの例外だったが、 なんの因果かそいつがバッチプログラムに使われる事になった時とかなんて、前提条件や処理フロー自体が変わる典型だと思うが。 最初からエラーとして返しとけば、なんの問題もなく流用できるでしょ。 常に呼び出す親が(さらに親へ丸投げするかの選択も含め)処理することが義務付けられてるほうが明示的だよねって言ってるんだが。 : デフォルトの名無しさん [sage] 2018/04/09(月) 18:38:57.68:2gnvm26g 戻り値なら流用しやすいという根拠は? なんとなく手抜きっぽい、で批判する典型的な日本人的思考だね : デフォルトの名無しさん [sage] 2018/04/09(月) 18:44:44.78:ml5ntbUH チョンが何か言ってらぁww : デフォルトの名無しさん [sage] 2018/04/09(月) 18:45:14.09:2gnvm26g あと、例外機構を持つ言語には例外安全を維持するための仕組みが組み込まれているのが普通だから、 それを「運用ルールに頼っている」と切り捨てておきながら戻り値は言語の補助があるから安全だと主張するのはダブスタの詭弁だ : デフォルトの名無しさん [sage] 2018/04/09(月) 18:45:52.21:w9Q1JF4q 書いてるだろ。 明示的に処理するからだよ。 すっぽぬけて何処か別の定義されている「はず」のハンドラに任せない所。 全関数にtry-catchを書いてて、親にもtry-catchが漏れなくあって、明示的に再throwしてたり、異常な場合はちゃんと死ぬ事が保証できてるなら、それでもいいけど。 この関数では呼び出し先がthrowすることもあるけど、親にハンドラがあるから大丈夫、が一箇所でもあったら認めないが。 何か、戻り値でエラーを返せる言語使ったことある? パターンマッチングでエラーか結果か判定できたり、複数結果を返せたり、引数でエラーをどう処理するから指定できる言語。 使ったらわかると思うけど。 : デフォルトの名無しさん [sage] 2018/04/09(月) 18:50:39.85:w9Q1JF4q ダブルスタンダードでもないよ。 維持するための仕組みがあったって、維持していると保証がない限り維持は出来てないのと同じでしょ。 recoverがあるから、catchできるのと同じだからエラーハンドラここに書くって言う奴と同類に見える。 : デフォルトの名無しさん [sage] 2018/04/09(月) 18:53:07.60:w9Q1JF4q 暗黙的に握りつぶす/無視する、か、明示的に握りつぶす/無視する、だけの違いなんだが。 なんでわかんないんだろう。 : デフォルトの名無しさん [sage] 2018/04/09(月) 18:53:14.64:2gnvm26g そんなことはプログラミングのメインストリームがとっくの昔に通った道なんだよ Javaの失敗をトレースしてるようにしか見えない Javaの検査例外がなぜ失敗したかを調べてみたら? : デフォルトの名無しさん [sage] 2018/04/09(月) 18:55:18.76:w9Q1JF4q 「そもそも例外があるから、こういう失敗するんだ」を「例外無くして明示的にやろう」 と言語仕様で厳しくやってるだけで、 トレースしているどころか、トレースしないように別ルート取ってるだろ。 どこがトレースしてるの? : デフォルトの名無しさん [sage] 2018/04/09(月) 18:58:04.38:mElBwjLW まさか検査例外を知らないのか? あれは戻り値によるエラー処理を強制してるのと等価だよ まずは勉強しよう : デフォルトの名無しさん [sage] 2018/04/09(月) 18:58:52.48:w9Q1JF4q 日本人的だとか、ロジカルでない事をグダグダ言う前に、いろんな言語の言語仕様みてくりゃいいのに。 Fortranが話題に出てるけど、知ってんのかって疑問。 : デフォルトの名無しさん [sage] 2018/04/09(月) 19:03:27.06:w9Q1JF4q 知ってるよ。 非検査例外と検査例外のどちらも発生させうるメソッドはどうハンドリングするの?運用のルール? 結局全部検査例外なら良いって話になっちゃうし、throws書いたらガバガバになるだけじゃん。 : デフォルトの名無しさん [sage] 2018/04/09(月) 19:58:52.42:rsHYF1DS jsでasync await使おうとするとエラー系は例外扱いになるから辛い。 : デフォルトの名無しさん [sage] 2018/04/09(月) 20:15:00.84:ebJj02XJ Fortranを話題に出してるのは俺で、俺はFortranユーザーだ。なんか用か? : デフォルトの名無しさん [sage] 2018/04/09(月) 20:15:41.91:ebJj02XJ まあ返り値の最適化はわかってなかったけどなw : デフォルトの名無しさん [sage] 2018/04/09(月) 20:24:45.38:25u/0YJa 次世代語る前に現世代を勉強した方が良いねこれは。 : デフォルトの名無しさん [sage] 2018/04/09(月) 20:25:58.04:w9Q1JF4q いやいや、そういう意味じゃない、誤解させてすまん。 引数でerrの取り扱いしたり、名前付き引数があったり、そういう言語を触ったことがあるのか? 皆はそれぞれ使ってて、メリットを分かって話してるが、自分(ID:2gnvm26g)は戻り値でそういう処理をする言語は触った事があるのか? 話題についてこれてるか?Javaかなんかの狭い世界の話ししてるんじゃないのか? って事を言いたかったんよ。 : デフォルトの名無しさん [sage] 2018/04/09(月) 20:31:26.77:ebJj02XJ ああそういうことか。誤解してたわすまん : デフォルトの名無しさん [sage] 2018/04/09(月) 20:39:58.68:2gnvm26g 俺は普通に使ったことあるし、戻り値をエラーに使うことを否定したつもりはないぞ? ただ、あんたの主張はJavaの検査例外が失敗した理由を解決していない、と言ってるんだよ : デフォルトの名無しさん [sage] 2018/04/09(月) 20:40:46.31:w9Q1JF4q いやいや、俺の方こそすまん。 慌てて説明したから名前付き戻り値を名前付き引数とか言ってるし。 重ね重ね面目ない。 : デフォルトの名無しさん [sage] 2018/04/09(月) 20:40:53.09:FJyngZbb 例外設計に関してはrustが現状ベストだと思うけどな unhandled promiss rejection出た時の絶望感半端ない : デフォルトの名無しさん [sage] 2018/04/09(月) 20:45:47.57:w9Q1JF4q 解決していないんじゃなくて、結果として検査例外の書き方がまずかった、検査例外以外の存在も実は「これ検査例外にすべきじゃないの?」とか色々物言いもつく、 そもそも論として全部明示的にハンドリングする事をデフォルトにして、検査例外どころか例外を無くそう、って話なんだが。 失敗したも何も、クソめんどくさかったりして、throwsを全部につければ問題無いとか変なルールで回避するからややこしくなるだけなって、収拾がつかなくなったんでしょ。 ジェネリクスがない頃からJavaは触ってるし、歴史を知らんわけでもない。 問題を整理し直して解決したんじゃなくて、捨てたんだよ。柔軟さを。 : デフォルトの名無しさん [sage] 2018/04/09(月) 20:56:14.35:ebJj02XJ ID:2gnvm26gの主張って、エラー関係に文句言ってる奴に「別にthrow-catchでもそんなに困らなくね?」って言ってるの? : デフォルトの名無しさん [sage] 2018/04/09(月) 20:56:27.27:1PTa96/6 俺には二人ともが「Javaの検査例外は失敗だった」と主張しているように読める…… なんで喧嘩してるんだろうこの人たち : デフォルトの名無しさん [sage] 2018/04/09(月) 20:58:19.15:w9Q1JF4q その上で例外廃止を是とするか、「ちゃんとしてれば「手に負えない例外」なんてない」って夢物語を語ってるかが違うと思う。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:00:24.61:w9Q1JF4q なんとなく手抜きっぽいからじゃなくて、本気で手抜きだと思ってんだよなぁ。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:00:41.98:25u/0YJa なんかどっちでも大して変わらんというか、 結局実装者がどれだけ丁寧に作るかどうか以上の話にならん気がする。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:04:04.26:mElBwjLW まあthrows Exceptionやるような奴なら、戻り値によるエラー処理を強制したとしても 全メソッド呼び出しでErrorを盲目的に再returnするか全部握り潰してOptionalだらけにするだけだろうな : デフォルトの名無しさん [sage] 2018/04/09(月) 21:06:17.30:w9Q1JF4q 丁寧に作ると、大域ジャンプなんかそうそう使わん。 それでも、どこか遙か上でcatchしてることを期待してthrowされるより、直上がエラーを見てる事が保証できてるほうがマシかと。 握りつぶすのは論外として。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:09:28.00:ON56dtQ5 Javaは継承はあるがジェネリクスがない時代の遺物 タプルやEitherを使わないのもジェネリクスがなかったことが影響している : デフォルトの名無しさん [sage] 2018/04/09(月) 21:11:10.68:O1tgNFRh Javaの検査例外が失敗したのは パッと見で非検査例外と区別がつかなかったことと try-catch文を毎回書くもがあまりにも冗長で面倒臭かったから だからSwiftでは非検査例外の方をなくして 更にtry-catch文の改良することで検査例外を復活させてる ID:2gnvm26gは検査例外という考え方そのものが失敗作だと思ってない? そうじゃないよ。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:16:16.06:D454qjGx ところで検査例外って「失敗」したの?たしかにJava以降採用する言語はないけどさ。 : デフォルトの名無しさん [sage] 2018/04/09(月) 21:19:48.19:mElBwjLW 検査例外は多態との相性が最悪なんだよ Java自身ですら、Lambdaで詰んでとうとう検査例外やめちゃった : デフォルトの名無しさん [sage] 2018/04/09(月) 21:36:54.73:1PTa96/6 この関数は引数として渡されたクロージャと同じ種類の例外を投げますよ記法があれば良さそうに思うけどな やることは多相型の推論と同じだろう : デフォルトの名無しさん [sage] 2018/04/09(月) 21:48:04.19:1PTa96/6 あー、Javaの場合はクロージャを独立したinterfaceとして型を付けないといけないんで無理だな すまん忘れてくれ : デフォルトの名無しさん [sage] 2018/04/09(月) 21:49:57.80:8jS3HAgs 例外をGenericsパラメータにして大体同じような事は出来る。 単に標準ライブラリが採用しなかっただけでは。 : デフォルトの名無しさん [sage] 2018/04/09(月) 22:01:05.72:ON56dtQ5 動的型は平和でいいよな 検査例外やジェネリクスの無理難題を 追っぱらうため *だけ* だったとしても、それ自体、動的型を使う強力な理由になりうる : デフォルトの名無しさん [] 2018/04/09(月) 22:29:22.04:mPPENYW6 明示的に無視するように書いてる場合は議論から除いたほうがよくない? : デフォルトの名無しさん [sage] 2018/04/09(月) 23:37:00.39:zonfm2OA Goはマスコットがきもい!! : デフォルトの名無しさん [] 2018/04/09(月) 23:41:10.06:O1tgNFRh 世間一般ではあれをキモカワイイと呼ぶ……はずだ… : デフォルトの名無しさん [sage] 2018/04/09(月) 23:55:03.87:zonfm2OA まぁ一番キモいのはTomcatの猫だが : デフォルトの名無しさん [sage] 2018/04/09(月) 23:56:56.11:GkNeq2uk Kotlinは、名前だけなら一番かわいい。 : デフォルトの名無しさん [sage] 2018/04/09(月) 23:59:55.69:GkNeq2uk 複数で開発してる時とか、誰かがやっちまってて、頭抱えることになったりするから、無視しやすいのはギルティだと思うけどね。 : デフォルトの名無しさん [sage] 2018/04/10(火) 00:06:23.32:G1U7ZKfA 一番キモいのはGitlabの昔のアイコン。 : デフォルトの名無しさん [sage] 2018/04/10(火) 00:06:43.88:qmeNshHp Roslyn「あたしより?(ノД`)」 : デフォルトの名無しさん [sage] 2018/04/10(火) 00:15:20.65:RkM59NlG 言語が用意した安全機構を無理矢理回避して握りつぶすことまでは言語側の責任ではないだろうとは思う とはいえ、安全機構が不十分であるのならそれは言語側の責任だろうと思う そしてgoの安全機構は不十分だと思う : デフォルトの名無しさん [] 2018/04/10(火) 00:21:44.16:EmC/WCPP ねぇ、まだ例外の話するの?そろそろ飽きたんですけど… 最近の言語のエラーハンドリング(Goのタプル, RustのResult, Swiftの例外)が 従来の例外(非検査例外)を使っていないという事実が全てを物語ってるでしょ? Kotlin, TypeScriptは互換性の問題で非検査例外を外すわけにはいかないが… あとは、握り潰しの対処に関しては議論する価値はあるかもしれないけど… 結局「握りつぶすバカが悪い」って結論になりそうな希ガス : デフォルトの名無しさん [] 2018/04/10(火) 00:59:26.74:EEQPQ2Uz 無視しやすいとは書いてねーだろ。 無視しずらくしてるのを明示的に無視するコード書くケースは議論から外すべきといってるだけ。 盲目的にエラーを無視するコード書く人間のことまで議論に含めたらきりないじゃん。 : デフォルトの名無しさん [sage] 2018/04/10(火) 07:44:44.88:qJmqAz8N 結局Lispエイリアンが最高にカワイイんだよな : デフォルトの名無しさん [] 2018/04/10(火) 07:54:07.90:Hi+EisyU コトリンなんか使ってる間抜けはandroid屋さんくらいかね : デフォルトの名無しさん [sage] 2018/04/11(水) 20:59:15.55:APP8E9xr いや、俺使ってるよ。趣味でだけど。 : デフォルトの名無しさん [sage] 2018/04/14(土) 12:38:55.29:LFIiHGEx いやキモいだろ : デフォルトの名無しさん [sage] 2018/04/14(土) 12:41:23.74:rk2ZBYTo どういう感性してんだおめえクロマニョン人か? : デフォルトの名無しさん [] 2018/04/14(土) 12:49:22.86:eqcluMRm 何で揉めてんだよ : デフォルトの名無しさん [] 2018/04/14(土) 18:24:20.33:s0fojNED コトリンなんか使ってる間抜けはandroid屋さんと君くらいかね : デフォルトの名無しさん [] 2018/04/14(土) 18:57:30.54:vgY4uhqI googleもなんでkotlinとdartってかぶってることやってるの? : デフォルトの名無しさん [sage] 2018/04/14(土) 21:52:46.32:7M7GkfUj googleは別にことりんは作っておらんで。 dartは作ってるけど。 : デフォルトの名無しさん [sage] 2018/04/14(土) 21:57:34.62:xCvUgQvH こういうスレで、特定の言語をディスるやつは、その言語を使えない(理解できないとか、組織の都合とかいろいろあるだろうけど)やつの呪詛だと思うことにしている。 : デフォルトの名無しさん [sage] 2018/04/14(土) 22:57:19.09:LHyM2rc9 呪詛に反対するならポリコレを推進すればいい 逆にポリコレに反対なら呪詛は許容範囲内だろう : デフォルトの名無しさん [sage] 2018/04/14(土) 23:11:05.96:xdB8fLqn こういうスレで、特定の言語をマンセーやつは、その他の言語を使えない(理解できないとか、組織の都合とかいろいろあるだろうけど)やつの呪詛だと思うことにしている。 : デフォルトの名無しさん [sage] 2018/04/15(日) 10:50:29.03:MI4LTSUC 俺自身はgoがなんで好きか説明できないけど好き♡ : デフォルトの名無しさん [sage] 2018/04/15(日) 11:02:47.68:X/anazzZ 一つの言語しか使えないやつは、こんなスレにこないと思うけどな。 取り敢えず、お前が悔しいと感じていることは理解した。 : デフォルトの名無しさん [sage] 2018/04/15(日) 11:45:40.73:ldkcKhuZ ある程度の文法が分かる言語はいくつもあるがエコシステムを十分に使いこなせる言語は少ない : デフォルトの名無しさん [sage] 2018/04/15(日) 12:19:01.56:eLmDxHX7 そいつはただの煽りだろw : デフォルトの名無しさん [sage] 2018/04/17(火) 12:10:26.37:w/mvzKg0 例えばMalbolgeは言語として破綻してるけど、これをdisったら「使えない奴の妬み」になるのか?違うだろ? そのレベルで使い物にならない言語が世の中にはあるってことだ : デフォルトの名無しさん [sage] 2018/04/17(火) 12:58:58.10:QJ3ecdT3 ポリコレの人なら差別感情が原因だというし ニーチェならルサンチマンが原因だという 何を言ったかではなく何が原因かを重視する人が世の中にはいる : デフォルトの名無しさん [sage] 2018/04/17(火) 12:59:55.25:rNTM/JTl Brainf*ck使えない奴の妬みが心地いいなw : デフォルトの名無しさん [sage] 2018/04/17(火) 13:04:24.51:g5yHmTYu ユングならチンコが原因だというだろう : デフォルトの名無しさん [] 2018/04/17(火) 13:16:14.75:QO/6Yzum 池沼コンプ : デフォルトの名無しさん [sage] 2018/04/17(火) 16:33:29.42:m5s6Mf1F なんでも性欲に還元しちゃうのはフロイト先生じゃなかったっけ : デフォルトの名無しさん [sage] 2018/04/17(火) 16:45:43.91:g5yHmTYu そっかごめん間違えたわ : デフォルトの名無しさん [sage] 2018/04/17(火) 17:04:22.19:gWiyCqxa どちらかというとフロイト : デフォルトの名無しさん [sage] 2018/04/17(火) 17:19:32.35:cVYjBdTw 元型論とか実用主義とか構造主義とかはプログラミング言語の批評や比較にも丸っと適用できるな… : デフォルトの名無しさん [sage] 2018/04/18(水) 00:07:08.14:gZh+2AXP 普通にレスに参加してると味方も現れたり、割と建設的な会話になるんだが、 名前欄に「あ」と入れるだけで俺が悪くなる不思議な現象もあるんだし、 誰が言ったかもかなり大事だろうね。いろんな意味で。 : デフォルトの名無しさん [sage] 2018/04/18(水) 00:33:14.99:IXg32T3d いま適当に調べたらニーチェとフロイトは大陸哲学の先駆者とされる プログラミングはどう見ても分析哲学です : デフォルトの名無しさん [sage] 2018/04/18(水) 10:22:11.56:E1UyW8OG プラグマティズムでしょ : デフォルトの名無しさん [sage] 2018/04/18(水) 10:43:31.39:ITlW1RMQ 【悲報】自己顕示欲の塊「あ」さん、こんな会話でも自分の話に持ち込んでしまう : デフォルトの名無しさん [sage] 2018/04/18(水) 12:13:25.41:gZh+2AXP だいぶ長いこと普通に会話してたからな。 持ち込むも何も、嫌味なんだけどなぁ。 そういう反応含め。 : デフォルトの名無しさん [sage] 2018/04/18(水) 12:43:59.64:IrI4bqKj 大陸哲学もプログラミングに関係あると思うけどなあ そういや『記号と再帰』というパースとソシュールの記号論でプログラミング言語を記号論的に語る本があったな : デフォルトの名無しさん [sage] 2018/04/18(水) 12:58:33.98:2VrfViNp おまえら哲学とラムダ計算どっちのほうが詳しい? : デフォルトの名無しさん [sage] 2018/04/18(水) 13:36:02.31:+aOsPa5t クイックソートの各言語での実装はクイックソートのイデアの写像なのだ (プラトン主義) 野の諸言語でのクイックソートの実装のどれ一つとってもその中にクイックソートは内在する (グノーシス主義) : デフォルトの名無しさん [sage] 2018/04/18(水) 17:12:11.36:lZdMxdpS プログラム言語での英米系と大陸系 言語仕様が多少一貫してなかろうが便利ならいいんだよ vs そんなんだからごちゃごちゃな仕様になるんだよ 結局「メシマズ野郎」「カエル食い」のいつもの展開になりそうな気もするw : デフォルトの名無しさん [sage] 2018/04/19(木) 17:03:40.67:9euJrxqo 哲学史と同じだなw : デフォルトの名無しさん [sage] 2018/04/19(木) 17:42:11.31:Ugd67CCb 繰り返している記憶を思い出せないゆえに歴史は繰り返す : デフォルトの名無しさん [sage] 2018/04/20(金) 17:07:59.52:rfyQpLQN まあ結局なんでこんなにたくさんの言語があるのかってのが答えだと思うな で、どっちが優れてるかってのはどちらがより後世まで生き残るかで決めるしかないんじゃないかな まあ時代、時代で必要な技術ってのは変わるからそれで一応の結論が出せるって話でしかないけど : デフォルトの名無しさん [sage] 2018/04/20(金) 17:18:58.21:sbzNwV19 未だに決着がついてないところまで似てるw : デフォルトの名無しさん [sage] 2018/04/21(土) 02:20:33.50:h2C47Kaa 隙あらばあ語り : デフォルトの名無しさん [sage] 2018/04/21(土) 07:58:45.75:Tcatlxxe いまどき「語り」に罪悪感を覚える人間がどこにいるんだよ 次世代に備えろ 人を見たらサイコパスと思え : デフォルトの名無しさん [sage] 2018/04/21(土) 19:40:57.77:W/q1DIXv 隙あらば次世代言語語り : デフォルトの名無しさん [sage] 2018/04/21(土) 20:16:20.43:Z4H7O2O2 俺じゃねえぞ : デフォルトの名無しさん [sage] 2018/04/21(土) 20:45:55.94:dcjYnmEM 誰だよおめー : デフォルトの名無しさん [] 2018/04/21(土) 22:42:40.15:zqkaZSIG 次世代言語にDartは入りますか? : デフォルトの名無しさん [sage] 2018/04/22(日) 08:48:01.83:jd9SLSuF いいえ、残念ですが死産です : デフォルトの名無しさん [sage] 2018/04/22(日) 09:54:09.54:c2tTlBO1 先月Dart2が出たと思ったらもう死んだのか・・・ : デフォルトの名無しさん [sage] 2018/04/22(日) 14:12:12.91:TtvJ1g+m Laravelの伸び方がやばい件 これPHP復権するんじゃね? ttps://trends.google.co.jp/trends/explore?date=all&q=Ruby%20on%20Rails,Laravel,Rails : デフォルトの名無しさん [sage] 2018/04/22(日) 14:18:33.01:nugsKp1K Dartほど誰にも望まれてない不憫な子も珍しい 望まれてない技術をゴリ押しするなんて、Google自身が非難していた過去のMSとやってることは変わらないって気付いてないんだろうか : デフォルトの名無しさん [sage] 2018/04/22(日) 14:27:32.48:AAVHB68B ゴリ押すどころかGoogleが真っ先に見捨ててるだろ : デフォルトの名無しさん [sage] 2018/04/22(日) 16:44:50.97:WERdgzar こっちでどうぞ 【PHP】Laravel【フレームワーク】 [無断転載禁止] ttp://medaka.5ch.net/test/read.cgi/php/1503683914/ : デフォルトの名無しさん [sage] 2018/04/22(日) 18:30:51.10:jd9SLSuF 今さらゲリクソプェチピィでフルスタックとかガイジにもほどが : デフォルトの名無しさん [sage] 2018/04/22(日) 19:35:14.33:bBR6Oib8 laravelってそんなに良いかな? 丁度railsのチュートリアルと合わせてlaravelも触ってるけど railsの劣化コピー感があるんだけど。 この辺の感覚はここに書くには長すぎるからqiitaにでも書くけどさ : デフォルトの名無しさん [sage] 2018/04/22(日) 20:55:44.29:o9swHd+I どの辺がどう良いか言えない時点で頭お察しのペチパーだろ せめてRailsと比べての明確な利点を理論的に話してもらわんと。ペチパーには無理だろうけど : デフォルトの名無しさん [sage] 2018/04/22(日) 21:02:46.32:fdCmw2ub Railsと比較したらどんなものでもマシだろう。 : デフォルトの名無しさん [sage] 2018/04/22(日) 22:34:33.87:eKADyGOj Rails自体を手放しで賞賛する訳じゃないが、 PHP製のRails劣化コピーフレームワークどもがRailsよりマシってさすがに頭ペチパーでは SymfonyがRailsより良いのか? Laravelが? FuelPHPが? CakePHPが? : デフォルトの名無しさん [sage] 2018/04/22(日) 23:01:59.83:IlGrff4D JavaScriptはブラウザを変えても動く それに比べて、PHPとRubyはサーバーを変えたらどうなるの : デフォルトの名無しさん [sage] 2018/04/22(日) 23:20:29.43:9Np5N8Zp phpは知らん。rubyは発狂しそうになった。pythonやjavaもトラブったことある。 goのシングルバイナリとか憧れるわ。青い芝生なのかもしれんけど。 : デフォルトの名無しさん [sage] 2018/04/22(日) 23:45:16.35:eKADyGOj jsもサーバで動かそうとするとRubyやPythonの比じゃないくらい頭おかしくなるけどな Goのシングルバイナリは悪くはないんだが妙にデカいのとコンパイルパスがバイナリから消せないのがクソ : デフォルトの名無しさん [sage] 2018/04/23(月) 00:42:42.58:Qj7zyv05 型無し糞言語なんて全部糞だからセーフ : デフォルトの名無しさん [] 2018/04/23(月) 02:01:40.00:sTSAMHq0 でかいと言ってもrubyなんかのライブラリ含んだ環境と比べてもでかいもんなのかなぁ?よくわからんけど。 : デフォルトの名無しさん [sage] 2018/04/23(月) 03:25:35.65:6kB1GY2J nodeのほうがRubyやPythonよりまだマシだったぜ。こいつらの場合システムプリインストール版と戦わなくちゃならんもん。 : デフォルトの名無しさん [sage] 2018/04/23(月) 05:55:51.63:klhfnu8X nodeだってそのうちきっとsystemdあたりが使い出して プリインストールされて衝突するようになるよ : デフォルトの名無しさん [sage] 2018/04/23(月) 06:26:29.65:u+QX9S93 railsが最強なのはrailsチュートリアルという無料コンテンツが存在する点。 これ一本で何も知らない素人をwebエンジニアにしあげてしまう力がある。 しかも常にメンテナンスされてて一部古くて使えない。みたいなことも無さそう。 phpもフレームワークを真似るんだったら、こういうエコシステム面もぱくらんとな。 特にphpは推奨すべきphp.ini構成とかあるんでしょ? : デフォルトの名無しさん [sage] 2018/04/23(月) 07:57:49.59:Lxhtz3Yj node は素人が普通に使っても衝突しにくいと思う : デフォルトの名無しさん [sage] 2018/04/23(月) 08:36:31.93:SVjZZRS4 デカイのはstaticリンクされてるから。 びっくりするような「ただOSとしてlinuxが起動してるだけ、なんのライブラリも入れてない、コマンドもない、むしろシェルすらない」みたいな環境でも起動するんだから必要悪だと思うわ。 : デフォルトの名無しさん [sage] 2018/04/23(月) 08:39:44.34:SVjZZRS4 何も知らない素人を、なんとなく組めるけど考え方の骨子も知らずパフォーマンスなんか気にしない「Rails書き」に仕上げる、の間違いだろ。 Railsからruby始めたやつで、唸るようなコード見たこと無いぞ。 ruby大好きな人が書くコードは好きじゃないけど唸ることはある。 : デフォルトの名無しさん [sage] 2018/04/23(月) 08:43:37.79:p6JtziKv そんなこと言ってたら極論シェルすら使えなくなるだろ : デフォルトの名無しさん [sage] 2018/04/23(月) 08:49:26.77:gcQjvBIZ GoのシングルバイナリのメリットはDockerがいらないという点だろ まあGo使うような意識高い系のインフラはそもそもDockerデプロイ前提だったりするからあまり意味ないけど : デフォルトの名無しさん [sage] 2018/04/23(月) 08:57:04.74:8zXr1SIe 唸るようなコードなんて見たくない。 唸りたくない。 驚き最小の法則。 : デフォルトの名無しさん [sage] 2018/04/23(月) 09:02:31.54:SVjZZRS4 唸るってのは難しくて唸るんじゃねえよ。 美しすぎて唸ったり、ぐうの音もでないときの唸りだよ。 驚き最小限と言うが、そんな事言ってたらバカがバカのままじゃん。 : デフォルトの名無しさん [sage] 2018/04/23(月) 09:11:34.54:8zXr1SIe 何でバカのお勉強に付き合わなきゃならんのだ。成りすましruby厨は巣に帰れ。美しいコードとやらでシコシコやってろ。 : デフォルトの名無しさん [sage] 2018/04/23(月) 10:28:24.82:u+QX9S93 数週間前までプログラムを書いたことのない人のコードだぞ。許してやれよ。 スタートアップのコードは大体クソだと聞く。金を生むようになってからリファクタリングするためにあんたを雇ってくれるんだから雇い主になるんだぞ。もっと敬えw : デフォルトの名無しさん [sage] 2018/04/23(月) 10:39:44.78:KRfN1kM2 つーかパフォーマンスが必要ならそもそもrailsつかうなや。 elixir使え : デフォルトの名無しさん [sage] 2018/04/23(月) 11:40:35.21:lvgkpyUP 最強の無料コンテンツがあるのにどうやって金を生むのか不思議 有料って驚き最大じゃん : デフォルトの名無しさん [sage] 2018/04/23(月) 11:56:46.40:SVjZZRS4 rubyがそーいう書き方を是とするのが好かん。 なにがなりすましなんだよw プログラマ気分で口開かなければ無視するよ。 往々にして、プログラマ気分で口開くようになるけど。 ところがrailsしかできない奴は無理矢理rails使うんだよなぁ。 PHPerよりもレベルが低いのに、マシだと思い込んでるバカばっかり。 : デフォルトの名無しさん [sage] 2018/04/23(月) 12:09:11.14:aoPGecCM スレタイ読めますか? : デフォルトの名無しさん [sage] 2018/04/23(月) 12:55:04.45:jMm7sVs3 Rails が基本になる理由は、 無料で翻訳された、Rails チュートリアルという教科書があって、 数十の技術が、山陰地方のRails合宿などで、学べるから Git, Bitbucket, Heroku, Ruby, ERB, HTML, CSS・SASS, JavaScript・jQuery, DB, SQL, MVC, Linuxコマンド・シェルスクリプト 環境構築・仮想環境 パッケージマネージャー テストのやり方 普通、これらは1冊ずつの本になっている。 別個に勉強して、資格を取ると、軽く10年は掛かる Web アプリには、ものすごい総合力が問われるから、 開発していくと、どこかで出来なくなる それを、Rails チュートリアルでは、必要な部分を超特急で教える。 だから、Node.js + Express の前に、やっておくべき ここで苦しむと、他言語で楽になる : デフォルトの名無しさん [sage] 2018/04/23(月) 13:02:03.72:8zXr1SIe 10年とか無能すぎワロタwww : デフォルトの名無しさん [sage] 2018/04/23(月) 13:28:10.73:u+QX9S93 多分俺が10年で学んだこと。って言いたいことじゃないか? 大体紆余曲折を経て正解にたどり着く。 それぞれの年代によって開発トレンドも変わっていきその都度ふりまわされることもあり。 そうしてたどり着いた正解を 一冊のチュートリアルにまとめました。 : デフォルトの名無しさん [sage] 2018/04/23(月) 13:32:39.38:u+QX9S93 俺もこれに感動した。他のフレームワークでwebアプリ書いてるやつもrailsチュートリアルを読んでほしい。 というか、railsチュートリアルパクって作れ。 : デフォルトの名無しさん [sage] 2018/04/23(月) 13:33:05.10:Lxhtz3Yj 言いたいことは色々あると思うがNGして我慢しましょう : デフォルトの名無しさん [sage] 2018/04/23(月) 13:34:48.24:u+QX9S93 他のフレームワークもrailsチュートリアルをベースにチュートリアルを作るべき。と言いたかった : デフォルトの名無しさん [sage] 2018/04/23(月) 14:11:35.74:SVjZZRS4 総合力とやらしか無い開発者ってのは居て、そして、それで良いと思ってる。ここまでは許そう。 ただ、他人にその低レベルが当たり前だと触れ回るのは如何なもんか。 もうちょっと真面目にやれよ。 過去の言語を知らねば次世代言語の話は出来まいとは言ったが、過去の言語で満足してるなら大人しく寝てろ。 : 969 [sage] 2018/04/23(月) 14:48:01.73:jMm7sVs3 Linux 資格のLPIC とか、環境構築・シェルスクリプトとか、 漏れは、個別に勉強しているから、 それぞれの内容は濃いけど、時間が掛かる ただ、この勉強はしょーもないから、ほとんどの人が続かない。 勉強だから その点、Railsチュートリアルは面白い。 実際に動くものだから Ruby の女神・女優の池澤あやかも、そう言ってる。 楽しくないと続かないって : デフォルトの名無しさん [sage] 2018/04/23(月) 15:28:45.42:u+QX9S93 過去の言語って何? そもそも次世代言語の指すものも明確になってないんだから、ぶっちゃけただの井戸端会議でしかない。したがって資格の有無もない。 : デフォルトの名無しさん [sage] 2018/04/23(月) 15:31:29.85:u+QX9S93 仮に次世代言語があるとするならそれは初期状態からLSPを揃えた言語であるべきだろうな。最初からIDE連携がしっかり取れてリファクタリングも容易。これは必須事項だろう。 : デフォルトの名無しさん [sage] 2018/04/23(月) 15:42:41.08:kKKCDRJg LSPって何? 「リスコフの置換原則」のこと? : デフォルトの名無しさん [sage] 2018/04/23(月) 15:56:21.02:KRfN1kM2 language server protocol : デフォルトの名無しさん [sage] 2018/04/23(月) 16:26:20.82:kKKCDRJg ああ、MSのアレね。どうも そういう機能も重要だとは思うけど、もちろん一番重要なのは言語設計でしょ? IDEの機能がいくら優秀だったとしても言語設計がクソなら意味はない。 逆に言語設計さえ良ければそういう機能は自然と後からついてくるのでは? : デフォルトの名無しさん [sage] 2018/04/23(月) 17:02:12.83:aOH2hrcK 情報系の大学に行けば在学中の4年で全て出来る 俺は卒業前にはLPICレベル2も応用情報も持っていたし、Webならインフラから開発まで全て出来た : デフォルトの名無しさん [sage] 2018/04/23(月) 18:11:20.46:8zXr1SIe →「インフラから開発まで」← : デフォルトの名無しさん [sage] 2018/04/23(月) 18:12:48.65:SVjZZRS4 過去の言語って何?ってのは、適宜引用するときにその特徴含め、何と何を比較してるかを述べれば充分でしょ。 井戸端会議する為のベースラインが無いなら、井戸端のおかーさんにひっついてきてる子供みたいなもんだ。 資格の有無は言ってない。意味が無いと言ってる。 「○○」は素晴らしかった、だから「○○」を「□□」で焼き直せ、って論調に 「ならやっとけ。と言うよりそれしか理解できねえから○○がベストだと思ってて、 何でも○○で解決しようとして、新しいパラダイムなんか理解する気ねえだろ」 って言ってるだけ。 : デフォルトの名無しさん [sage] 2018/04/23(月) 18:18:36.33:SVjZZRS4 濃いし、人によっては時間がかかるのも事実かもしれんが、 しょーもない、と言い切るのもおかしいし、ただの勉強でもない。 Railsしか知らないから、Railsは実際に動かせるから楽しいとかぬかすんだろ。 ほとんどRails弁みたいなruby使ってタノシーって覚えて、Rails訛りのrubyしか使えない奴になるのが関の山。 よほど変なハードを要求するものでもなけりゃ、何でも実際に動かせるわw 何もCで書けとまで言ってる訳でなく、perlで生socket使ってhttpサーバ書いた方がよほど応用が効く知識つくんじゃねえの?って話。 今時perlは極端だけどな。 : デフォルトの名無しさん [sage] 2018/04/23(月) 19:32:32.81:JgfH4MZr 唸るコードは草 : デフォルトの名無しさん [sage] 2018/04/23(月) 20:33:33.00:AzyZGKdE 唸る僕のコード(ザ・ルビイスト) : デフォルトの名無しさん [sage] 2018/04/23(月) 20:44:54.50:iikzPCLQ は?おまえのかいたコード唸らねえの? 俺のはPCが唸るぜ : デフォルトの名無しさん [sage] 2018/04/23(月) 21:20:18.83:SVjZZRS4 俺ruby嫌いだぞ。 : デフォルトの名無しさん [sage] 2018/04/23(月) 21:24:14.13:p/p8P93w デバッグは自分との戦い 小並感書き殴るだけで後は誰かが採点してくれるお受験とは違う : デフォルトの名無しさん [sage] 2018/04/23(月) 21:31:57.26:SVjZZRS4 しかし、ホントにたとえ自分の嫌いな言語でも関わらないと仕方ない事とか、 その中で「へー、この言語だとこう書けて、確かにシンプルでわかりやすいな」とか感心する事無いの? 言い回しがダサかったのは認めるけど。 : デフォルトの名無しさん [sage] 2018/04/23(月) 21:47:58.89:p/p8P93w ソースコードの読み方にはコツがある 読まなくてもわかる情報を全部理解するまで読まないこと : デフォルトの名無しさん [sage] 2018/04/24(火) 00:11:46.25:ZNYEqjZq 読まなくてもわかる情報をわざわざ読む理由は? : デフォルトの名無しさん [sage] 2018/04/24(火) 00:40:43.83:pcJzry5C インストールできないとか実行したくないとか 読む以外のやり方がたくさんあるのが嫌いとか : デフォルトの名無しさん [sage] 2018/04/24(火) 07:42:24.61:TUZ43qB9 後半の話はperlよりもgoがおすすめ。 : デフォルトの名無しさん [sage] 2018/04/24(火) 09:02:55.18:KZ0RDZHW 俺がGo推しだから、あまりに恣意的過ぎると思って。 俺もそう思う。 : デフォルトの名無しさん [sage] 2018/04/24(火) 09:32:39.81:oBpm702g タノシーって覚えることのなにがいけないのかわからん 入門の形態とその後の成長に関係はないだろう : デフォルトの名無しさん [] 2018/04/24(火) 10:26:37.84:sL4t+Nc4 わろた : デフォルトの名無しさん [] 2018/04/24(火) 10:27:37.29:sL4t+Nc4 データ構造を把握するのが第一だな その次に大まかな流れを観る 詳細は最後 : デフォルトの名無しさん [] 2018/04/24(火) 10:28:01.74:sL4t+Nc4 アスペか : 1001 [] Over 1000Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 49日 0時間 18分 46秒 : 1002 [] Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ ttps://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ ttps://login.5ch.net/login.php
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。