次世代言語Part8[Haskell Rust Kotlin TypeScript]at TECH
次世代言語Part8[Haskell Rust Kotlin TypeScript] - 暇つぶし2ch693:デフォルトの名無しさん
18/01/18 21:25:08.77 oG29giIx.net
関数型っのがどういう定義かは分からないけれど、
HaskellとPythonを比べると、パターンマッチが
なくて再帰が書きにくいと感じたり、
基本破壊的だから、わざわざ非破壊で書くのが
めんどくさいと感じる。
内包表記は似ていて良いかな。

694:デフォルトの名無しさん
18/01/19 19:12:49.43 ih0w0grk.net
Schemeのマクロ定義でパターンマッチを使えるがすごい不人気だったよ
おそらくパターンマッチのアルゴリズムが透けて見えないと人気出ないよ

695:デフォルトの名無しさん
18/01/20 08:12:20.84 hxs4OOGh.net
うちのプログラマは大半がコトリンに移ったのでわしらラストを使うことにした

696:デフォルトの名無しさん
18/01/20 15:07:10.20 TIRmwaq4.net
イムータムルのない言語は全て糞

697:デフォルトの名無しさん
18/01/20 16:54:37.17 TgcSeHcI.net
関数型言語のパターンマッチって理論的な裏付けってあるんだろうか

698:デフォルトの名無しさん
18/01/20 17:28:38.29 JZVVUERo.net
理論的てのが分からんけど、例えばリストを引数にとる関数なら、
空リストとSuccの場合を定義しとけば、帰納的に任意のリストについての適用結果が求められる、
とかそういうの?

699:デフォルトの名無しさん
18/01/20 18:09:55.87 grrE5KFF.net
評価順序とかモチっと低いレイヤーでの動作規定ってことでないの?
ABIレベルでのさ。

700:デフォルトの名無しさん
18/01/20 18:18:48.11 JZVVUERo.net
もしかして、あ氏?
だとしたら、お久しぶりです。

701:デフォルトの名無しさん
18/01/20 20:48:41.14 I76mD3dR.net
>>678
そうそうそういうの
関数型ってって原理的にはあらゆるものが原始的な計算原理に還元できるものって理解してんだけど
パターンマッチはそういう裏付けあるのかなって疑問

702:デフォルトの名無しさん
18/01/20 20:52:07.08 4frS9VE4.net
>>681
単なる場合分けだから裏付けもクソもない

703:デフォルトの名無しさん
18/01/20 21:02:06.68 4frS9VE4.net
補足
パターンマッチは場合分け、つまり条件分岐そのものであり、
通常はそれ自体が原始的な計算原理の一つとして定義されるってことだぞ
だから裏付けなんぞ必要ない

704:デフォルトの名無しさん
18/01/20 21:09:03.16 zaN+pP6E.net
学術的なことは分からないけども、静的型のパターンマッチは網羅性を
コンパイル時にチェックしてくれることが多くて
それが凄くありがたい
動的型言語にパターンマッチを持って来ても上手くいかないのは、
上のメリットが得られないからでは?

705:デフォルトの名無しさん
18/01/20 21:28:06.72 L/NwSAXQ.net
>>681
上の人が書いてるように、ただの場合分けだと思う。ただ、>>684の人も書いてますが、本当に網羅しているか、を考えると理論が出てくる気がする。
定義域の型が、型コンストラクタで定義されてれば、そいつら全てについて場合分けする、
で、そいつらも型コンストラクタが入ってれば、、てのを続けていけば、全てについて網羅的な場合分けが出来る。
言葉だとわかりにくいですが、Agdaの動画を見るといいと思います。
定理を証明するのに、上の場合分けを考慮する必要があって(漏れたら困りますよね?)、
実際EmacsのAgdaモードだとそういうのを勝手に展開してくれるコマンドがあり、
ゲーム感覚で証明してく感じ。
で、カリーハワード対応を考えると、関数の定義も結局は同じで、実際同じコマンドを使って進めてくことになる。その流れでやれば、後で漏れてる云々は問題にならない。
こんな感じですかね?

706:デフォルトの名無しさん
18/01/20 22:20:04.44 4frS9VE4.net
>>684
動的言語はデータクラスをほとんど使わず、辞書や配列を生で扱うことが多いからじゃないかな
型で分岐するケースがそもそも少ないし、when Some a みたいにパターンマッチと同時に要素を抽出したくても抽出の仕方が定義されていない

707:デフォルトの名無しさん
18/01/20 23:10:12.11 fmAc02d6.net
>>680
俺は最近書いてないぞ。
つまらんからな。

708:デフォルトの名無しさん
18/01/21 00:17:54.03 DgAEmkFM.net
パターンマッチで変数にバインドするところとかあれってどう還元できんですかね?

709:デフォルトの名無しさん
18/01/21 01:01:46.61 PzzAcO+j.net
・頭文字が大文字ならコンストラクタ (引数0個以上)
・そうでなければ変数 (引数なし)
少なくともこの仕様を守れば動的言語でもパターンマッチできるよ

710:デフォルトの名無しさん
18/01/21 01:02:49.35 2R9CDqfY.net
難しく考える必要はない
タプルは関連する複数の値をまとめて扱ってるだけ
レコードはタプルに型名というラベル値が付いただけ
型によるパターンマッチはその型名で条件分岐してるだけ
変数へのバインドはタプルの特定の要素の値にに別名を付けただけ

711:デフォルトの名無しさん
18/01/21 01:37:10.13 kGWmn81W.net
つまり・・・どういうことだってばよ?

712:デフォルトの名無しさん
18/01/21 06:13:50.88 pnNTWTyQ.net
>>684
動的言語どうこうではなく、オブジェクト指向の情報隠蔽とパターンマッチの相性が悪い。
アクセス制御をかいくぐってデータ構造にマッチさせるぐらいなら
オブジェクトを受け取ってからメソッド叩いたり条件分岐したほうがマシ。

713:デフォルトの名無しさん
18/01/21 10:42:33.20 kGWmn81W.net
>>692
SuccessとFailをパターンマイッチングするんじゃなくて
class Success implements Resultと
class Fail implements Resultみたいにしろ
ってこと?

714:デフォルトの名無しさん
18/01/21 11:06:54.37 I3ORKf0i.net
本物のオブジェクト指向はTrueクラスとFalseクラスを使う
Bool &True::ifTrue(Block f) {f(); return this;}
Bool &True::ifFalse(Block f) {return this;}
Bool &False::ifTrue(Block f) {return this;}
Bool &False::ifFalse(Block f) {f(); return this;}

715:デフォルトの名無しさん
18/01/21 11:22:08.22 1jbGMztY.net
こういうときオブジェクト指向ってアホの自慰っぽいなと思う

716:デフォルトの名無しさん
18/01/21 12:05:31.75 kGWmn81W.net
全てのif文を消し去るのです

717:デフォルトの名無しさん
18/01/21 13:37:58.84 I3ORKf0i.net
その次の世代はtemplateを使いvirtualを消し去る
だからifが復活

718:デフォルトの名無しさん
18/01/21 14:30:35.35 kGWmn81W.net
>>697
はいサイクリングマチカル複雑度増加

719:デフォルトの名無しさん
18/01/21 23:54:04.18 U0xKcFDq.net
多次元配列と第一級関数をサポートしている静的言語ってなんかあったっけ?

720:デフォルトの名無しさん
18/01/22 00:18:19.80 WYTiMnwL.net
C#

721:デフォルトの名無しさん
18/01/22 00:18:46.23 7qCCLtD1.net
サポートするの定義が曖昧すぎる。

722:デフォルトの名無しさん
18/01/22 00:28:37.30 +fzK3Dih.net
そうかC#があったか。ありがとナス��

723:デフォルトの名無しさん
18/01/24 05:54:32.12 V1qhcEkf.net
>>699
それサポートしてない言語って何があるの?

724:デフォルトの名無しさん
18/01/24 10:06:55.58 Gs9CrZMb.net
>>703
多次元配列サポートしてる言語なんて他にはFortran, R, Python, Julia, Racketくらいしか思いつかない
第一級関数は最近増えて来てるけどFortranみたいな古い言語はだいたいサポートしてない

725:デフォルトの名無しさん
18/01/24 10:13:41.67 apJvYiuW.net
>>704
多次元配列サポートすると何の役に立つの?

726:デフォルトの名無しさん
18/01/24 10:30:59.45 Gs9CrZMb.net
>>705
行列計算とか、その他数値的な解析がめちゃくちゃ書きやすくなる。
いわゆる数値解析や流行りの機械学習からゲーム開発まで、くまなくアルゴリズムが書きやすくなるぜ

727:デフォルトの名無しさん
18/01/24 10:44:28.83 tYoa+WgF.net
サポートてのは、数値計算でよく使う引数が2の関数と、そういう関数とと中置演算子との間の糖衣構文が標準でオーバーロード気味に存在するってことですかね?

728:702
18/01/24 10:59:06.24 J/V7RjN6.net
>>706
Racket挙げてるし中置演算子は重要度低いけど、よく使う関数はチューニングされたものを置いておいて欲しいな
Numpyだって標準ライブラリじゃないし、最悪標準ライブラリじゃなくてもいいけど、「数値計算するなら常識的に考えてこれ」という一つに定まっていてほしいな。
あるライブラリはEigenに依存しているが他のあるライブラリはublasに依存してるみたいなのはやめて欲しい

729:702
18/01/24 10:59:37.34 J/V7RjN6.net
間違えた。
安価は>>707

730:デフォルトの名無しさん
18/01/24 11:04:32.91 RrrJ1nlK.net
>>704
良かった。言語として普通にあるもんだと思ってたから
無いことを想像したこともなかった。

731:デフォルトの名無しさん
18/01/24 11:09:12.83 J/V7RjN6.net
第一級関数のことかな?
多次元配列はレアだよ

732:デフォルトの名無しさん
18/01/24 11:24:52.80 veFPPCA3.net
Pythonは多次元インデックスをオーバーロードできるけど組み込みの多次元配列は無い
PythonレベルのサポートでいいならKotlinも同等だね

733:デフォルトの名無しさん
18/01/24 11:58:57.43 apJvYiuW.net
そういえばExcel方眼紙もある意味二次元をサポートしてるな
Excelの異常な人気の原因はそこか

734:デフォルトの名無しさん
18/01/24 19:16:29.18 CULWU8L2.net
義務教育に向けて親もプログラミングやっときたい、どれが良い?
Pythonとかよく目にするけど、と聞かれた。
どう答える?

735:デフォルトの名無しさん
18/01/24 19:30:37.89 D4W5cGwF.net
相手が挙げて来た言語のメリットを適当に言ってそのまま勧めれば良い
親が教えるためにやる言語なんて何でも良いし、違いがわかる頃には子供は卒業してる
選ぶのも面倒くさい

736:デフォルトの名無しさん
18/01/24 19:50:08.15 N2tfbGLJ.net
>>714
まずはExcelのVLOOKUPを使いこなせるようになれ
次はVBAをやれ
でいいよ
教える側が何の役に立つのか分からないまま人に教えるなんて全く何の意味もない

737:デフォルトの名無しさん
18/01/24 20:27:01.77 0VEJNLN9.net
>>714
教育ママに特定の言語やらせて認識を固定させんな、むしろ子供に害悪だろ
数学パズルでもやらせとけ

738:デフォルトの名無しさん
18/01/24 20:29:15.40 c9tmIiAF.net
子供にはScratchをやらせることになるらしいから、親もScratchをやればいいじゃん

739:
18/01/24 20:39:13.05 m3QL6muE.net
>>714
やはり再帰的思考が勘所かと考えていますので、scheme をお勧めしようかと思っています

740:デフォルトの名無しさん
18/01/25 01:24:29.68 mR4+Kf/H.net
>>714
Haskel
関数型を理解できないバカはプログラミングする資格も意味もなし
保守困難なウンコをひり出すだけのゴミは消えろ
と伝えてくれ

741:デフォルトの名無しさん
18/01/25 02:32:13.16 uqKgsWDy.net
>>720
Haskellの綴りも正しく書けない池沼は文章を書く資格も意味もなし
無意味なウンコをひり出すだけのゴミは消えろ

742:デフォルトの名無しさん
18/01/25 12:45:10.82 R+9hEl/X.net
>>713
excelは関数型言語だ、と言う人々も居るくらいだからな(笑)

743:デフォルトの名無しさん
18/01/25 14:09:07.50 ArcwQAgj.net
Excelはビ�


744:Wュアルリアクティブプログラミング環境と言えばまあ間違ってはないんだけど 二次元配列以外の構造の扱いが難しすぎて、学習用にしてしまうと 他のデータ構造を学ぶ機会がないまま何でも二次元配列に落としこむ悪癖がついてしまいそうで



745:デフォルトの名無しさん
18/01/25 14:31:25.81 NsBjyJ7C.net
>>723
人間が無理なく扱えるデータは二次元の表が限界なんだよ
考えてみろ
お前がよく使う構造体やクラスのリストや辞書は実質二次元の表だろ
オブジェクト指向では直接深く階層掘ったアクセスは嫌われるだろ?
なんだかんだ格好いい理屈を付けても、結局人間にはExcelのデータ構造が馴染むんだよ

746:デフォルトの名無しさん
18/01/25 14:38:39.64 ArcwQAgj.net
>>724
再帰的 or 多相な構造どうすんのよ、ってのはまあExcelの用途では滅多にないとしても
単純に三次元配列が欲しい時もあるし
Sheet増やしだすと急に面倒くさくなるんだよなあ

747:デフォルトの名無しさん
18/01/25 14:41:15.02 NsBjyJ7C.net
>>725
再帰なんか同じ表の行番号を持たせるだけだろ

748:デフォルトの名無しさん
18/01/25 17:16:48.70 sWzOL5fe.net
3次元以上を汎用に使おうとするとSQLみたいだったり tensor flow だったり
かなりめんどくさいインターフェイスになるのはしゃーない。

749:デフォルトの名無しさん
18/01/25 17:55:47.33 R+9hEl/X.net
まぁ、Haskellで作られたものより、Excelで作られたモノのほうが多いしな(笑)
純関数型(笑)

750:デフォルトの名無しさん
18/01/25 20:01:29.48 0RuyxExF.net
>>721
このようなtypoを防ぐためにも強い型付けが必要なんだよ

751:
18/01/25 22:05:59.50 LX8HI+AO.net
>>729
変数宣言(型宣言ではない)だけでいいと思うが、それだけでもいいから、事前チェックを可能にしてほしいなあ
python のバイトコンパイル機能は変数名をチェックしてくれるのでしょうか?

752:デフォルトの名無しさん
18/01/25 22:42:04.62 uaT/xfzY.net
flake8を使えば

753:デフォルトの名無しさん
18/01/26 01:29:50.06 2fuI1BST.net
headerをincludeしてチェックする言語は簡単だけど
コンパイル済みのライブラリの中身を見て名前をチェックする言語は大変そうだ
コンパイル後も情報を全部残しておかないといけない

754:デフォルトの名無しさん
18/01/26 16:21:27.98 Zz9xFin2.net
変数宣言を省略できる機能(スペルミスが検出できない)と、型付けは別だよね?
昔のFortranやBASICは変数はいきなり使っていいけど名前で型が決まる静的型だったし

755:デフォルトの名無しさん
18/01/26 16:36:58.42 G7ZCkEjP.net
宣言がない変数は、省略ではなく他のファイルで宣言している可能性がある
そのファイルをincludeするか、全てのファイルを検索する必要がある

756:デフォルトの名無しさん
18/01/27 13:04:44.52 7uBpZq93.net
レベル下がったなぁ

757:デフォルトの名無しさん
18/01/27 14:31:34.34 fjEoblON.net
下がってから言っても遅いな
レベル高かった頃に、なにこれ高いって評価できる奴が勝つ

758:デフォルトの名無しさん
18/01/27 14:40:54.49 7K+kXdeY.net
まぁ、その時から無駄なつっかかりしかできない奴ばっかだったし仕方ないんだろうな。
今更option explicitじみた話に戻るとは。

759:デフォルトの名無しさん
18/01/27 22:13:06.80 RNgYnDaT.net
>>736
天井Lみたいなこと言うな

760:デフォルトの名無しさん
18/01/28 15:51:11.09 CWAHXL7y.net
自分で書いたコードが三ヵ月後に読めないっていうやつは素人
プロは三ヵ月後の記憶喪失を織り込んでる

761:デフォルトの名無しさん
18/01/28 23:40:40.83 ZERk9zo5.net
保守受注独占するために汚くするんやぞ

762:デフォルトの名無しさん
18/01/29 22:16:09.55 4480+Jxl.net
そういう足を引っ張る人には�


763:ロ守受注の代わりに ベーシックインカムをあげたらいいんじゃないかと言われている 足を引っ張る悪人より善良な怠け者の方がいい



764:デフォルトの名無しさん
18/01/30 01:45:49.07 ZcZnTiUX.net
しょーもない理想論はいらんねん
こっちはきっちり世間様に仕事回してんねんで
頭の悪いガキは黙っとき

765:デフォルトの名無しさん
18/01/30 01:47:45.52 ZcZnTiUX.net
ソースがきれい → オタクの自己満足
ソースがきたない → 工数取れて残業代も出る、みんなニッコリ
これが現実やで

766:デフォルトの名無しさん
18/01/30 10:52:36.78 2Eamtv1n.net
そんなことしてるから他国の技術に駆逐されるんだよ。。

767:デフォルトの名無しさん
18/01/30 14:43:26.40 xaKIrtPB.net
その理屈だと、まるで必要もない次世代言語で書くやつみたいだな。
汚いソース書くやつは。

768:デフォルトの名無しさん
18/01/31 23:31:38.87 Rp2Mauf0.net
次世代言語で書くだけならいいんだよ
故意に汚くするとはいってないから、改善する可能性がある
故意とただの偶然とでは罪の重さが違う

769:デフォルトの名無しさん
18/02/01 08:43:21.74 AVafL46K.net
故意にその言語で書いてる以上、もう偶然でもなんでもないだろ。
ちゃんとその言語のメリット、デメリット含めて布教してから使うべきだと思うが。

770:デフォルトの名無しさん
18/02/01 11:05:23.20 niJJgdbA.net
ちゃんとする可能性があるならいい
その可能性をわざと排除するなら悪質
最初からそう言ってるんだろ

771:デフォルトの名無しさん
18/02/01 13:10:20.37 Bj9uVLC2.net
まあ大体がカスな開発体制に問題があるところに
新しい言語なら問題解決できる!
とかめちゃくちゃな広告が出回って導入、失敗っつークソパターンがここ20,30年の間繰り返されてるわけだからな。

772:デフォルトの名無しさん
18/02/01 15:37:35.21 suqSmKNo.net
Elm はどう?
ここ見てたら興味出てきた
URLリンク(nulab-inc.com)

773:デフォルトの名無しさん
18/02/03 02:04:53.95 VC8JN1NA.net
JSに依存するのはいいがGHCがな
もしもF#がGHCに依存していたら面倒臭いじゃないか

774:デフォルトの名無しさん
18/02/12 17:15:27.49 NkUQn5xe.net
URLリンク(arison.jp)

775:デフォルトの名無しさん
18/02/12 17:16:33.56 NkUQn5xe.net
URLリンク(i.imgur.com)

776:デフォルトの名無しさん
18/02/14 20:27:03.68 SwEfqZxS.net
ASM.net

777:デフォルトの名無しさん
18/02/15 23:40:47.93 yLr3787F.net
clojure やれよ?

778:デフォルトの名無しさん
18/02/16 00:35:29.80 JK/MGoqE.net
気の科学 ★朝は気合いで起きる★ 雑学

URLリンク(youtu.be)

779:デフォルトの名無しさん
18/02/18 01:30:59.56 5P/pcqvC.net
>753
これ初めて見た

780:デフォルトの名無しさん
18/02/18 15:38:35.68 CW1UlThv.net
なんかTypeScriptのジェネリクスがどんどん変態じみてきたんだけど、ジェネリクスってこういうもんなの?
これならgoに乗んなくていいなぁ

781:デフォルトの名無しさん
18/02/18 15:51:20.83 AYB00j0e.net
>>758
欲求は際限なく広がって、そしてゴミの塊みたいな仕様になるもんだ。
ずっと前からTypeScriptは手段と目的をどっかで履き違えたと言ってたが、最近シャレになってない。
Goの割り切りは納得に値するよ。あったら便利なのは認めるけど。
Cppのtemplateみたいに、それだけでチューリング完全になってしまう前に、最初から入れない、やるならgenerateで別立てで勝手にやれと言う割り切りしたのは英断だと思う。

782:デフォルトの名無しさん
18/02/18 17:25:12.30


783: ID:CW1UlThv.net



784:デフォルトの名無しさん
18/02/18 18:16:19.28 WV1p31YW.net
>>760
変性注釈とか、やりたいことはわかるし、なぜ必要かもわかるが、一方でjsとどんどん乖離していって、jsのプロジェクトと繋げるときに結局any使うことになったり、グダグダも良いところだと思う。
TSだけでもの作るんなら、良いと思うが、そうなるとJavaScriptにコンパイルできる必要もなく、逆に早くwasmなんかに対応しろとか、ネイティブにTSの良いところを保ったまま実行できる環境出せとか、色々文句が言いたいけど、
全部ほったらかしにされてるからな。
ずーっと言語の改良してる。

785:デフォルトの名無しさん
18/02/18 18:37:05.69 Ct2k6iqr.net
一方的にjsのライブラリを使用する分には問題ないだろうし、その資産にただ乗りできることこそ
jsとの相互運用性を維持する理由だろう。
言語仕様としては奇麗だけどライブラリが揃わなくて実用性がいまいち、みたいになるよりは。

786:デフォルトの名無しさん
18/02/18 19:25:55.39 WV1p31YW.net
>>762
jsのライブラリ側が自由な感じのライブラリだと定義ファイルが無茶苦茶ややこしいものになったりするし、なかなか微妙だけどな。
ライブラリが揃わなくてイマイチ、は確かに無いか。ほとんどタダ乗り出来るからなぁ。

787:デフォルトの名無しさん
18/02/18 22:15:41.08 +Qsqi9wm.net
>>763
せめて関数のオーバーロード定義みたいなことが出来ればコードが整理しやすくなると思うんだよね。
つまり
export function h(name, attributes /*, ...rest*/) {
// 省略
return typeof name === "function"
? name(attributes || {}, children)
: {
nodeName: name,
attributes: attributes || {},
children: children,
key: attributes && attributes.key
}
}
ってあった時に
export function h(name: string, attributes:obj /*, ...rest*/) {}
export function h(nextFunc: (attributes:obj)=>void, attributes:obj /*, ...rest*/) {}
みたく出来れば型定義自体も綺麗にできる気がする。
でも今のTypeScriptってこれできんよね。

788:デフォルトの名無しさん
18/02/18 22:19:58.51 +Qsqi9wm.net
あと詳しい人に聞きたいんだけどやっぱりジェネリクス一つとっても
言語によって全然仕様が違うのかね?
だとしたらGoはコードジェネレートと組み合わせも考慮したちょうどいい便利さの
ジェネリクスというのも考えていて実装を見送ってるのかも。
でもGoにはそれ以前にnull安全を実装してほしい気がするが。
レシーバがnullの可能性があったりnull周りに罠があるんだよねGoは

789:デフォルトの名無しさん
18/02/18 22:47:38.32 Ct2k6iqr.net
>>764
オーバーロードってまさにそんな感じでできた気がするが。

790:デフォルトの名無しさん
18/02/18 23:30:02.62 /vdt0GUK.net
ジェネリクスは途中から入れるようなもんじゃないと思うがね
型自体はフラットな構造で、階層構造はHaskellみたいに型の境界(型クラス)として作ると綺麗にまとまりやすい
型≒クラスで、型自体に階層構造を作ってるような言語だと、ジェネリクスの使い方が面倒よ
Javaの<T extends ClassFoo>とかC#のin/outとかは元の型システムに合わせて入れないといけない面倒な部分
TSの元々の型システムはよく知らないけど、ダックタイピングできるならジェネリクス入れる必要がないし、
クラスがあったり型に階層構造があるなら面倒なのはしょうがない

791:デフォルトの名無しさん
18/02/18 23:45:12.91 LabDqOSD.net
むしろJavaScriptさんが悔い改めるべきではないか?

792:デフォルトの名無しさん
18/02/18 23:52:24.01 AYB00j0e.net
Goでレシーバがnilになれるのは案外便利だぞ。
あれは罠ではない。
型や型クラスに階層構造持つのはいつでも便利なわけではないと言うか、結局コンパイラ都合を押し付けられてるだけな気がするけどな。
その辺、後出しジャンケンできるGoのinterfaceの方が楽な事が多い。

793:デフォルトの名無しさん
18/02/19 00:07:59.55 B+b1Q4Nq.net
ジェネリクスは、コード上別の箇所に出現する型Aと型Bが同一であることを明示することにより、型情報の損失を避けるために使うんだよ
ダックタイピングは関係ない
C++やHaskellをやってる人は>>767みたいに混同しがちだけど、JavaやC#だと多態とGenericsをわりとはっきり区別する文化がある
TypeScriptのGenericsも同様に、型の同一性を示すマーカーとしての性格が強いね

794:デフォルトの名無しさん
18/02/19 01:32:35.15 1YgzgKOj.net
「型が同一である」の定義がわからない
犬型と猫型は異なるともいえるし同じ動物型ともいえる
この辺の仕様を捨ててからジェネリクスを追加するのが基本
もし両方入れてゴミ言語ができたら
捨てられないのが原因ともいえるし追加したのが原因ともいえる

795:デフォルトの名無しさん
18/02/19 01:40:02.40 U+qaWnxw.net
それに対して型の制限を型でなくしたのがHaskellの型クラスやRustのtraitだし、型を分解する事で非同一性を示すのが多くの言語にあるパターンマッチじゃないの

796:デフォルトの名無しさん
18/02/19 07:49:12.96 HJ1z9rHd.net
型階層のある言語でアドホックに型クラスをやりたいなら別途Comparableみたいなインスタンスを受け取るようにするだけだろ
ジェネリクスと区別するっていうのは端的にはそういうことで、実際に引数として明確に分かれることになる
JavaやC#, TSだと型引数に制約を付けることで中途半端に似たことができてしまうのが微妙に直行してなくてダサいけど、それは基本的にあまり使われない機能

797:771
18/02/19 07:54:42.45 HJ1z9rHd.net
すまんComparatorの間違いだ
補足しとくと、直行してないというのは例えば具体的には <T extends Comparable> と (T obj, Comparator<T> comparator) みたいなののことな

798:デフォルトの名無しさん
18/02/19 09:53:32.16 isUwiiOH.net
>>769
便利さを教えてほしいな。
純粋なnilと型があるけど中味はnilって正直わかりづらくないかな。
reflectionのお勉強をしないと理解できない。
Goのインターフェースは後出しジャンケンってのは面白いな。パクらせてもらおう

799:デフォルトの名無しさん
18/02/19 09:58:27.89 isUwiiOH.net
>>770
このへん詳しく知りたいな。
C++とかHaskellのジェネリクスってTypeScriptとかと違うの?

800:デフォルトの名無しさん
18/02/19 12:10:56.39 BdVjRyEG.net
>>775
それがnilでも、メソッドチェーンできる。
だから、errを伝搬するのに便利。
末尾のDoなんかで、本当の結果,errorとして取り出せば良いよ。
いちいち失敗構造体なんぞ書かんでも良い。
Nullable的に使える。
どっちかというと下回り書いてるときに便利かも。

801:デフォルトの名無しさん
18/02/19 12:44:49.19 g9K5jJLr.net
>>776
C++はテンプレートを使ってダックタイピングができる
Haskellはアドホック多相を使って>>774でいうcomparator引数に相当する要求をTの型制約に含められる

802:デフォルトの名無しさん
18/02/19 14:19:03.08 x9oxab6h.net
>>777
なんかサンプルある?とょっとイメージがつかめない。nilでメソッドチェーンができるのはわかるけど、それがメリットになるかな?
結局nilを、返してるメソッドがエラー状態な訳で、そいつが暫定的な値を返せばメソッドチェーンはできるよね。

803:デフォルトの名無しさん
18/02/19 15:23:40.87 FUvFB9Jm.net
ハスケルのメイビーみたいなことだろうな。

804:デフォルトの名無しさん
18/02/19 16:10:57.83 BdVjRyEG.net
>>779
暫定的なオブジェクトに、レシーバ書いてくの?
Hoge().Get().ReadAll().AsString()
で、毎度nilチェックとか暫定レスポンスのオブジェクト置いてたら非効率じゃん。
ToXXX以外の関数が、Hoge()の返す型やinterfaceを返せば楽じゃない?
Getに失敗したかReadAllに失敗したかが必要ならまた別だろうけど、だいたいひとからげにして問題ない事の方が多い。

805:デフォルトの名無しさん
18/02/19 18:59:46.08 esiJbF27.net
>>781
error情報を最初から諦めるってことね。
とにかく最終結果がnilだからメソッドチェーンのどっかで失敗してんだろーなー。くらいの感じなのか。
標準ライブラリでそういう実装してるのあるかな?reflect.Valueとかかな。
あれメソッドチェーンできる代わりに不正なメソッド操作するとpanicしててなかなかしんどい。

806:デフォルトの名無しさん
18/02/19 19:03:08.21 BdVjRyEG.net
>>782
ちょっと違うけど、protobufあたりはもう少し有意義に使ってたな。

807:デフォルトの名無しさん
18/02/19 19:14:13.94 esiJbF27.net
流れをぶった切って悪いけどTypeScriptはさすがMS。開発リソースたっぷり。という余裕を感じる。vscodeと一緒に毎週くらいの勢いでアップデート繰り返してる。
ジェネリクスの気持ち悪さもエラーメッセージがわかりやすく進化する感じで直してくれれば全然良いので頑張ってもらいたい。

808:デフォルトの名無しさん
18/02/19 19:17:59.63 u7QgBPEb.net
goのことは全然知らないんだが、型付きnilとやらは実行時ディスパッチしてくれて
その型のメソッドにnil引数付けてやってくるという理解でOK?

809:デフォルトの名無しさん
18/02/19 20:22:12.51 BwjO59+V.net
まずメソッドではなくて、ちょっと変わった構文のの関数ぐらいに受け取ったほうが良いかも。
Foo.Bar()は
Bar(Foo)と、
Foo.Bar(a,b)

Bar(Foo,a,b)と同じぐらいの意味。
だからFooがnilでも(ポインタに対してのレシーバであれば)呼べる。

810:デフォルトの名無しさん
18/02/19 23:02:26.53 cDVYUoQ2.net
やはりメソッドチェーンは何回も値 (nil) を返すのが気になる
Haskellでは
((Nothing >>= f) >>= g) >>= h
こうするとNothingのパターンマッチを3回するのに対し
Nothing >>= (\ y -> f y >>= (\ z -> g z >>= h))
これなら1回だけ

811:デフォルトの名無しさん
18/02/19 23:09:11.19 g9K5jJLr.net
>>787
記号がキモい
見てて痒くなる

812:デフォルトの名無しさん
18/02/19 23:41:51.38 cDVYUoQ2.net
記号がなくても右結合がきもい
h(g(f(x))は右結合
x.f().g().h()は左結合

813:デフォルトの名無しさん
18/02/20 00:33:09.75 uyRcVPMC.net
こんなのをありがたがるくらいならCommonLisp書くわ。

814:デフォルトの名無しさん
18/02/20 01:53:25.83 IMJo1v/e.net
その気持ちは分からんでもない

815:デフォルトの名無しさん
18/02/20 05:20:12.69 o3fs2Zzy.net
goの場合nilの場合分けを関数の中でしなくちゃいけないわけだろ。
それが嫌だからモナドができたわけだからな。
メソッドチェーンも嫌だからasyn/awaitとかdo構文が出来たわけで
全部が劣っているな。

816:デフォルトの名無しさん
18/02/20 17:49:07.93 uyRcVPMC.net
秀でるのと、こねくりまわすのは違うからな。
原理上、変態構文と純でも何でもないモナドで出来るとか抜かすぐらいなら、nilチェックするほうがマシ。

817:デフォルトの名無しさん
18/02/20 18:26:18.82 SK024iMW.net
コンパイラはモナドをコンパイルエラーにしない
一部の人間は忖度してモナドを自主規制する
コンパイラと人間はどっちが正しいかというだけの話

818:デフォルトの名無しさん
18/02/21 18:12:35.61 WKR1veUF.net
機械と人間の両方に指図されるのは不自由過ぎる
両方採用するのは過激派
どっちか一つだけにした方が中道という可能性がある

819:デフォルトの名無しさん
18/02/21 19:30:26.52 BxLkRHyS.net
goにいまさらnil安全は無理かな?
python3並の断絶が起きちゃう?

820:デフォルトの名無しさん
18/02/21 20:32:34.11 qR5uNCei.net
そもそもnil安全にする必要もない。
その変数に型的にnilが入ることが無かろうがあろうが、
他の言語のnullとはちと違うレベルでnilを取り扱える。
タプルで返す前提だと大した問題には無いと言うか。
他の言語は、nullに本来のその型が持つ意味以上の意味を与えてしまうからわざわざnull安全にしないといかんのでは?

821:デフォルトの名無しさん
18/02/22 02:26:39.63 zGB/N5H/.net
タプルで値が返せるから必要ないってただの理屈の上の話で、エラーチェック漏れをおこしたり、エラーチェックしててもnilの入った変数を次の処理に引き継ぐミスは起こり得るだろ。それを防ぐのがnil安全なわけで。

822:デフォルトの名無しさん
18/02/22 04:32:43.91 +RpZ2cWG.net
俺も>>799と同意
>>798の言ってることはいまいちよく分からん
nilに余計な意味を与えるからダメとか言ってるがnil自体がそもそも余計だと思う
nilは便利すぎるがゆえにチェック忘れ系の地雷がある
ポインタ演算みたいに強力な機能は同時に危険も引っ付いてまわる
そういった機能は出来うる限りは排除・制限していくべきだと思う

823:デフォルトの名無しさん
18/02/22 05:41:36.72 ePT/3hrM.net
nilに余計な意味を与えないための基準がnil安全なのでは?

824:デフォルトの名無しさん
18/02/22 08:14:10.74 p8NiYEqx.net
同僚のコトリンのコードがビックリマークだらけで、こりゃだめだと思った

825:デフォルトの名無しさん
18/02/22 08:54:55.92 MB1I4+Gh.net
だから、便利に使わなければ良いと思うんだが。
参照にしない限りnilにはなれないし。

826:デフォルトの名無しさん
18/02/22 12:53:25.00 +RpZ2cWG.net
>>799
すまん。番号ズレてるな。以下訂正
> 俺も>>798と同意
> >>797の言ってることはいまいちよく分からん
スマホアプリ使ってると時々ズレるんだよな クソが
そのせいで自分で自分に同意するというアホな文章になってやがる

827:デフォルトの名無しさん
18/02/22 13:11:15.71 0cZDh8Nv.net
修理しない自由 vs. 修理する権利

828:デフォルトの名無しさん
18/02/22 14:54:41.89 ei88pKkZ.net
>>800
基準がどうこうってnil安全な言語ってのがわかっていないのかな?
設計思想とかの話じゃなく言語仕様の話をしてんだけど。
つまり変数に明示しない限りnilを代入不可能な変数が作れるってのか
nil安全な言語ってこと。
TypeScriptなら
let some?:number = null; // OK
let some:number = null; // NG
ってこと someにnullが入っている可能性をコンパイル時点で排除できる。
Goだって
func hoge(s *Some) {
// sが絶対nullじゃないことが保証されるスコープ
}
func (s? *Some) SomeFunc() {
if (s != null) {
hoge(s)
}
hoge(s) // NG コンパイルエラー sがnullである可能性が残っている
}
みたいな感じで書ける。?が使えると仮定

829:デフォルトの名無しさん
18/02/22 16:43:44.83 ePT/3hrM.net
>>805
しょぼ!
その例はnull安全の中でも一番弱いやつ。
書き方を気をつければnullを避けられるってだけ。
本物のnull安全はスコープ単位ではなく、型検査が通ればプログラムにnullによる誤りを完全に排除されるんだよ。Haskellのように。

830:デフォルトの名無しさん
18/02/22 17:06:16.89 zGB/N5H/.net
>>806
elmも実行時エラーを完全排除できるというのを売りにしてたね。
しょぼくても学習コスト最小でメリットは十分享受できる。
とりあえずelm触ってみようかな

831:デフォルトの名無しさん
18/02/22 18:59:35.60 MB1I4+Gh.net
>>806
haskellはそんな事の前にもっと解決すべき問題を解決できる言語になってくれ。

832:デフォルトの名無しさん
18/02/23 01:19:34.60 i8nFKqus.net
動的型で解決できる問題はすべて静的型で解決できるし
もしこれが嘘八百だと証明されたとしてもそれはそれで大きな成果だし
いずれにせよHaskellは静的型の歴史に貢献している

833:デフォルトの名無しさん
18/02/23 01:23:42.56 KFd5WK6x.net
でも需要はハケスル(笑)<<<<<PHPで圧倒的な件w

834:デフォルトの名無しさん
18/02/23 08:46:52.58 LZyM23a9.net
歴史に貢献するって、ラテン語でもあるまいし。
実用言語にしてよ。

835:デフォルトの名無しさん
18/02/23 10:35:29.52 fGTUWBf8.net
実在するだけでは不満か
実在すら怪しいものがあったらもっと不満だろ
実用よりも実在の方がモチベーションが強い

836:デフォルトの名無しさん
18/02/23 10:45:07.36 HJaUFAvs.net
>>811
ラテン語は良い喩えだね。印欧語ヒエラルキーの上の方にいるし。
俗ラテン語を見て、どこが欠落してるかの見通しが良くなる。
Haskellも足りてないけどさ、型理論的に。そういう点でもラテン語あたりなのは妥当。

837:デフォルトの名無しさん
18/02/23 11:35:44.21 2M6dxKUJ.net
コンパイル時に解決できるならそれに越したことは無いが
そのための学習コストは増大する傾向にあるよね。
Elmはブラウザのviewに特化したDSLとして学習コストを抑えてる。
Rustもメモリリークを静的に解決しようとするけどそのためのコストはかなり高め。
何事もバランスだよね。

838:デフォルトの名無しさん
18/02/23 21:27:40.00 LZyM23a9.net
>>813
そう。
そんなに格いるか?確かにあれば便利だけど前置詞のほうが実質簡潔じゃねえの?とか、
今更ラテン語使う必要無いだろ。足りない語彙を現代語から借用するの?とか、
ヒエラルキーの上位と言うより、広がる枝の根本にほうっておかれた存在だろ。
全く次世代で無い。

839:デフォルトの名無しさん
18/02/23 22:03:17.49 GuloKGfV.net
Haskellの熱心なアンチが全くのエアプだった事件があるので、そういう意見はHaskellに精通していることを示さないとなかなか受け入れられないと思うよ

840:デフォルトの名無しさん
18/02/23 23:44:14.84 NePmI3sA.net
まあカス仕様を必死に守るのにコストかけるくらいなら
goみたいにコンパイラの性能上げてもらった方がよっぽど有益だったりはする。

841:デフォルトの名無しさん
18/02/24 00:32:37.74 LvxjVVyK.net
お、型付λアンチか?

842:デフォルトの名無しさん
18/02/24 01:03:27.04 67+llEBF.net
>>816
エアプって言葉好きだなぁ。
正直触ってダメ出ししたぐらいだけど、精通せんでも文句は言える。
ラーメン食いに行って「まずいわこれ」って言って、店主に「じゃあお前はこれ以上のラーメン作れんのかよ」「それだけラーメン食って言ってるのか?」ってキレられても困るだろ。
客観的にまずいもんはまずい。まずいと誤解されるものもその次にまずい。

843:デフォルトの名無しさん
18/02/24 01:06:09.79 67+llEBF.net
意識高い系のおもちゃとして使うんじゃなくて、なんか使えるプロダクト出してから言ってくれよな。
古代言語を次世代言語スレで出すんなら。

844:デフォルトの名無しさん
18/02/24 01:21:53.07 ZueQv0Xl.net
>>817
URLリンク(taiyaq.com)
goの設計思想自体が依存関係解決の高速化だったりコンパイル速度優先の実装みたいだね。
ジェネリクスみたいなコンパイル時の計算速度に大きく影響を与える仕様はなさそうだ。
(あっても限定的な機能になりそう)

845:デフォルトの名無しさん
18/02/24 02:01:52.41 9192Hwvs.net
goにはクラス階層も無いんでしょ?ジェネリクス以外の多態が無いならまだ綺麗に導入できる可能性がある
swiftはバージョンアップで型推論を入れるようなスジの悪い進化を進めてるから好きになれんよ

846:デフォルトの名無しさん
18/02/24 06:02:14.88 VvbK4X3N.net
コンパイル速度優先の上で云々ということであれば
goがDelphi/FreePascalを超えてるかというのは正直疑問

847:デフォルトの名無しさん
18/02/24 07:01:37.55 VvbK4X3N.net
>>822
goはinterfaceによる多態が既にあるから、そこにジェネリクス入れるとJava同様になるぞ

848:デフォルトの名無しさん
18/02/24 07:57:18.04 ZueQv0Xl.net
>>823
現在も絶賛コンパイル速度更新中だからいいんじゃないの。
そもそもdelphiって古すぎて早く見えるってだけでは、、、?
>>824
interfaceを進化させるイメージでジェネリクスぽいものを作るんだろうね
現状複数のinterfaceを受け入れる可能性のある変数は空インターフェース(interface{})
(javaでいうところの何でもありのObject型みたいなの)
にするしかないのがツラミになってる。
ここを改善する方向に進化させるでしょう。
直積型をつくるのはできてるから直和型(union)をサポートして
someFunc(o interface{}) error {}
みたいなのを
someFunc(o A & B) error {}
someFunc(o A | B) error {}
みたいにできればいい。TypeScript好きだからこうなったら感動する

849:デフォルトの名無しさん
18/02/24 11:17:45.72 LvxjVVyK.net
>>819
だっさw

850:デフォルトの名無しさん
18/02/24 11:20:37.36 pBIylWjV.net
古すぎて速いってのは正しい
あとはジェネリクスがない言語は古いと認識できたらもっと正しい

851:デフォルトの名無しさん
18/02/24 13:37:19.37 67+llEBF.net
>>826
俺がダサいだけでhaskellが良くなって実プロダクト出てくるならいくらでもダサくなるわw

852:デフォルトの名無しさん
18/02/24 14:17:08.41 4YJEYBsv.net
実はDelphiにはジェネリクスあるんだぜw

853:デフォルトの名無しさん
18/02/24 14:17:22.06 WPlCcRak.net
>>827
TypeScriptの最近のジェネリクス変態進化ぶりを見ていると
ジェネリクスが正しいという意見も
なんとも言えないかも。

854:デフォルトの名無しさん
18/02/24 14:39:08.92 ozvKRveg.net
言うほど変態か?
JSによるOOPの実装方法や、即値を型として扱うTypeScriptの特性を十分に理解してないと
new () => Tとかkeyofなんかは分かりにくいかもしれないけど、それはGenerics以前の問題だろ
基本的には必要以上の驚きのない自然な仕様だと思うよ

855:デフォルトの名無しさん
18/02/24 15:23:35.50 ZueQv0Xl.net
>>831
それくらいならいいけどさ
URLリンク(qiita.com)
とか見てみると分かる。
辛いのはユーザ側だとしてもエラーメッセージで巻き込まれることないだよね。
ジェネリクス関連のエラーで一発で問題がわかったことが殆ど無い。

856:デフォルトの名無しさん
18/02/24 15:44:01.13 ozvKRveg.net
>>832
これくらい何とも思わないな
所詮は型アノテーションを正しく引き継ぐためだけの仕組みだぞ?
生成されたコードをデバッグしなきゃいけないテンプレートとは訳が違う

857:デフォルトの名無しさん
18/02/24 16:50:37.88 ZueQv0Xl.net
>>833
こういうエラーメッセージを吐き出すジェネリクスが分かりやすいだって?
URLリンク(i.imgur.com)

858:デフォルトの名無しさん
18/02/24 17:03:15.17 ZueQv0Xl.net
>>834
こういうエラーメッセージと戦うのが辛いのって結局途中経過を追えないってことなんだよね。
goはコードジェネレート前提だったりする。
そっちだと分かりやすいコードを吐いてくれれば追いやすい。

859:デフォルトの名無しさん
18/02/24 17:08:20.40 yL1hQTQw.net
>>835
つまり言語仕様の問題じゃなくてコンパイラが途中結果を出力しないのか問題なんだろ?
MSが改善すれば済む話
完全に論理が破綻してるね

860:デフォルトの名無しさん
18/02/24 17:08:38.51 cWB/7seJ.net
>>834
これは酷いTypeScriptは糞

861:
18/02/24 17:14:56.38 yWQ45jBy.net
>>834
C++ とて似たようなものだ、ジェネリクスのエラーメッセージは総じて汚らしい

862:デフォルトの名無しさん
18/02/24 17:15:40.58 NYPMK72i.net
>>836はコンパイルがクソ遅い言語に対しても
問題は言語仕様じゃなくてコンパイラの所為だと思ってそう

863:デフォルトの名無しさん
18/02/24 17:26:03.56 WPlCcRak.net
>>836
論理がはたんしてるか?
というかコンパイラの挙動と言語仕様を分けて考える意味がわからない。
言語としての素晴らしさはそれを囲むエコシステム全体を含めて語っていいと思うが。

864:デフォルトの名無しさん
18/02/24 17:29:02.21 WPlCcRak.net
>>838
これ。ジェネリクスは人間に牙を向くのが辛い。ライブラリ開発者でうまくエラーをラップできたりすれば良いんだけどね。 

865:デフォルトの名無しさん
18/02/24 17:43:47.02 yL1hQTQw.net
>>834が分かりにくいのって、structual-subtypingで特定のメンバの型に互換性がないのを
「型同士の互換性」の単位で出力してしまってるからじゃないか?
TypeScriptならVSCodeに代入元と代入先の型を展開した状態で比較するビューが付けば解決だと思う

866:デフォルトの名無しさん
18/02/24 17:51:04.11 ZueQv0Xl.net
>>842
あと、もしかしてこう書きたかったんじゃなりませんか? みたいにannotationをコンパイラが出してくれるとかね。
rustってそういう感じだっけ?

867:デフォルトの名無しさん
18/02/24 17:54:41.90 ZueQv0Xl.net
ちなみに >>834 のエラーはTypeScript2.5.3では出ない。2.6以降にすると出るようになる。
コードとしては何の問題もなく動くんだよね。
バージョン上げるたびに修正するのしんどくて放置してる。

868:デフォルトの名無しさん
18/02/24 18:11:51.54 67+llEBF.net
そのうちまた型システムだけでチューリング完全になるんじゃねえの?

869:デフォルトの名無しさん
18/02/24 19:33:38.61 OJHwttVu.net
チュリ完だと何の不都合ですか?

870:デフォルトの名無しさん
18/02/24 20:27:10.88 67+llEBF.net
する必要の無いものをチューリング完全にしてしまったが故にえらいことになったプロジェクト見てきたし、
そもそもコンパイルの時点で無限ループしかねないとかどんな闇言語だよって話になってくるじゃん。
Scalaも型システムだけでコンパイラ止めれたっけ。

871:デフォルトの名無しさん
18/02/24 21:39:56.69 Wx4opHQO.net
c/c++ のヘッダ処理なんかもデバッグしやすくするのとコンパイル効率は
かなりトレードオフがあるってのが一般的。
だから visual studio が内部で変なことガツガツやってるわけで。
そんなもん2、3年本気で仕事すりゃわかることだろうと思うんだが
なぜか理論よりの人間は事実を認めない傾向にある。

872:デフォルトの名無しさん
18/02/24 22:16:50.94 8UiUrtqZ.net
チュリ完であることそれ自体が問題なのではなく、デバッグ回りが弱すぎるのが問題なのだ

873:デフォルトの名無しさん
18/02/24 22:36:20.17 CuRF79s8.net
>する必要の無いものをチューリング完全にしてしまったが故にえらいことになったプロジェクト見てきたし、
それ、「えらいことになった」原因が本当にチューリング完全のせいだったのかね。

874:デフォルトの名無しさん
18/02/24 22:55:49.93 WPlCcRak.net
少なくともc,c++の依存関係解決の遅さの解決のためにgoが生まれたってのがgoogleの言い分なわけだし、遅いは遅いんじゃないの。
goにプリプロセッサが無いのも意味があるわけで。

875:デフォルトの名無しさん
18/02/24 23:31:49.65 8UiUrtqZ.net
まあ遅いは遅いな。それはそうだ

876:デフォルトの名無しさん
18/02/25 00:02:11.41 /LdYt4iz.net
ちなみにredoxというrustで書かれたosはコンパイルは早いんだろうか。lunuxと単純比較はできないだろうけども

877:デフォルトの名無しさん
18/02/25 01:39:43.29 i5g4VWIk.net
>>850
そうだよ。何を想像してるかわからんけど。

878:デフォルトの名無しさん
18/02/25 07:45:46.39 Pn1I1KPs.net
そりゃチューリング完全であることが問題なんじゃなくてそのチームに問題があったんだろ。
世の中にチューリング完全なシステム(言語)は腐るほどあるわけだし。

879:デフォルトの名無しさん
18/02/25 08:04:15.51 MHQfhChM.net
なんでも「チームが悪い」と言えばいいのだから簡単だな。ばーか

880:デフォルトの名無しさん
18/02/25 09:34:28.35 5I/H3HR9.net
できちゃうことが問題なんじゃないの
c++の型システムがチューリング完全だと自分たちだけがコンパイル速度に気をつけても
依存しているサードパーティライブラリまでは保証できないでしょ。
だったら言語側で制限がかかっておいてほしいって話。
Cの依存性解決も#ifdefを駆使してプリプロセッサの自由度を持って後付で解決していた。
プリプロセッサ自体便利なものだけど、それが原因でコンパイル速度の低下を招いた。
というのが >>821 に書いてる。
汎用性がある機能はなんでもできるからこそ、コンパイル速度を落としたり迷惑を書けることも可能。
swiftもGoも後発言語だけどプリプロセッサのってないもの
rustのマクロの自由度は知らんけども。

881:デフォルトの名無しさん
18/02/25 10:45:11.82 AkGT52Is.net
テンプレートやマクロで無茶をする奴が
コードジェネレータで無茶するようになるだけ

882:デフォルトの名無しさん
18/02/25 11:03:44.36 5I/H3HR9.net
>>858
少なくともGoのgenereateはコンパイル時毎回動くわけじゃないから。

883:デフォルトの名無しさん
18/02/25 11:41:56.21 oFPVlXbE.net
あるC++のファイルを変更したら
そのファイルがincludeした全てのコードを再コンパイルする
型情報のみをincludeすればいいのに型ではない値とコードが大量に入ってる
この値とコードが原因だよね
チューリング完全はそこから生じた結果の一つ

884:デフォルトの名無しさん
18/02/25 12:11:15.59 hhzTCNKn.net
>>851
すまん、プリプリセッサって何ンゴ?

885:デフォルトの名無しさん
18/02/25 12:35:19.43 SIGvHUUj.net
プリケツセッサ

886:デフォルトの名無しさん
18/02/25 12:38:14.47 XjF3qDop.net
prepresessor

887:デフォルトの名無しさん
18/02/25 14:15:34.84 dV634vWG.net
>>861
rustでいうマクロみたいなもの
コンパイル前に文字列操作を行ってコードを改変する。
結構なんでもできるから重たい操作を行うとコンパイル時間に影響する。
URLリンク(ja.wikipedia.org)

888:デフォルトの名無しさん
18/02/25 15:09:03.97 SIGvHUUj.net
それはプリプロセッサや~~!!!

889:デフォルトの名無しさん
18/02/25 15:13:14.53 iLEoqX9J.net
>>855
まあバカな奴をチームに入れないためにc++を採用しないって主張をするリーナスは
ある意味正しいな。

890:デフォルトの名無しさん
18/02/25 16:03:19.53 jkdNIq8n.net
>>860
それはちょっと違う
そもそも今時フルコンパイルなんてそんなに重いものではない
C++がまずいのは、includeしたヘッダのコンパイル結果をコンパイル単位(.cpp)を跨って共有できないことだ
プリプロセッサのせいで毎回変わる可能性があるからな

891:デフォルトの名無しさん
18/02/25 16:17:08.31 UX7CM2uT.net
>>866
リーナスはc++がクソだって言ったんだよ。
その次に使う人間もクソが多いって言ったの。、間違えんな

892:デフォルトの名無しさん
18/02/25 16:45:30.82 u3kGuI4S.net
間違ってはない

893:デフォルトの名無しさん
18/02/25 17:25:46.72 eL53m5ic.net
リーナスはもともとアセンブラーやからのうwww
Cは複数のCPUのアーキテクチャーに適応するためにどうにゅうしたわけやしのうww

894:デフォルトの名無しさん
18/02/25 17:45:40.47 ZzND0YhV.net
c++はいつになったら#importを導入するんだ……

895:デフォルトの名無しさん
18/02/25 18:22:22.98 iLEoqX9J.net
linux もだいぶヘッダマクロでテンプレみたいなことはやってる。
もちろん型安全ではないがそれでもc++のテンプレート使うよりマシという判断をしてるわけだよ。

896:デフォルトの名無しさん
18/02/25 20:57:01.90 Sac3cGbb.net
>>867
それやったらODR違反

897:デフォルトの名無しさん
18/02/25 22:23:17.24 hhzTCNKn.net
>>864
メメタァプロプロミングってやつンゴか?

898:デフォルトの名無しさん
18/02/26 01:07:52.73 NUAGFWAP.net
jsのhyperappみたいに300行くらいでreact + reduxなライブラリを作ったように
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?

899:デフォルトの名無しさん
18/02/26 01:08:12.13 NUAGFWAP.net
jsのhyperappみたいに300行くらいでreact + reduxなライブラリを作ったように
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?

900:デフォルトの名無しさん
18/02/26 01:59:20.48 RBbBnG6R.net
すごいことってなんだか感情的だな
実用というのも感情かもしれない

901:デフォルトの名無しさん
18/02/26 05:56:26.51 KYXdLiJx.net
コードから改行をスペースに変換して一行にするライブラリーを作ればいい。

902:デフォルトの名無しさん
18/02/26 11:09:00.46 AYoEpEU8.net
プリプロセッサは遅くないぞ
C++のテンプレートやコンパイル時処理のほうがよっぽど遅い
RustもSwiftもプリプロセッサを排除する代わりにC++と同じようなことをやってる

903:デフォルトの名無しさん
18/02/26 11:28:37.86 OBKUk/zi.net
>>879
プリプロセッサが遅いんじゃなくてプリプロセッサに依存したビルドが遅いんだろ
コンパイル単位という時代遅れな概念さえなければ話はずっとシンプルになる

904:デフォルトの名無しさん
18/02/26 11:57:47.68 LqmnPPXl.net
コンパイル単位ってコンパイル高速化するためのものと思ってたんだけど、今は無い方が速いのか?

905:デフォルトの名無しさん
18/02/26 11:58:09.67 tiI6jRqU.net
文字列処理は結果をファイルに保存して再利用しやすい
クラスやオブジェクトの処理はファイルシステムと連携が難しい
かといってファイルシステムがない環境でも動くコンパイラを作る意欲もなさそう

906:デフォルトの名無しさん
18/02/26 13:46:15.14 IYGVTnOb.net
>>879
プリプロセッサが、遅いかどうかはどう作るかによるのでは?
何でもできる分、遅く作り込むことも可能。
だからgoとかは組み込みのimport機能を作ったわけで。

907:デフォルトの名無しさん
18/02/26 13:50:29.38 IYGVTnOb.net
>>877
jsのhyperappに感動してしまったから
感情的になってしまった。
300行でしかも比較的読みやすいコードで
react+reduxなライブラリが作れたことにびっくりしたんす。
勉強用の教材としてもうってつけ。
こういうのが他の言語のライブラリでもないかなと思って。

908:デフォルトの名無しさん
18/02/26 16:02:15.05 CBNL7amJ.net
>>881
✕高速化
○メモリ節約
今の1/1000のメモリでデカいウンコを無理矢理出すための手法で、今となっては百害あって一理なし

909:デフォルトの名無しさん
18/02/26 20:55:59.83 2he6fwHk.net
じゃあお前だけ並列コンパイル禁止な

910:
18/02/26 21:02:06.28 5mZ9QExD.net
>>885
make -j での高速コンパイルに感動することしきりです、いつか 32thread な CPU を買おうと思っています

911:デフォルトの名無しさん
18/02/26 22:24:02.68 FUm7ZUuj.net
なぜかプログラマー板に立って放置されてる
nimのスレ立てるか

912:デフォルトの名無しさん
18/02/26 22:29:16.70 eKoH1eQ3.net
頼む

913:デフォルトの名無しさん
18/02/26 22:43:29.59 +1zKWNLy.net
boost 大好きな奴がビルドのベストプラクティスとして
1ファイルに全て書く言うてたな。
バカとしか言いようがないが面倒だから黙ってた。

914:デフォルトの名無しさん
18/02/26 23:37:01.37 hKYTqf2f.net
小規模なら1ファイルに全て書いても問題ない
普通に書いたら数百とか数千ファイルになるようなものなら馬鹿で間違いない

915:デフォルトの名無しさん
18/02/26 23:38:45.60 vKciEg6e.net
インターフェースとその実装とかは、小規模なら同じファイルに書いてるのもよく見かける

916:デフォルトの名無しさん
18/02/27 03:24:43.50 Rnz77xQ6.net
世の中にはhaskell使い結構居るっぽいのになんでここには全く居ないんだ
githubやstackoverflowまで行かないと出会えんのか

917:デフォルトの名無しさん
18/02/27 05:49:52.64 5KO97NM4.net
一つのファイルに書かなくても
複数のファイルをつなげて一つにするプログラム書けばいいだろ
そのやつ馬鹿やんなwww

918:デフォルトの名無しさん
18/02/27 05:53:33.06 5KO97NM4.net
昔の偉い人はトップのファイルに


919:だけインクルードを書く手法をつかったらしいからな。 これは複数のファイルを一つにつなげるプログラムとおなじことやんな。



920:デフォルトの名無しさん
18/02/27 11:03:33.84 P8RgwK6u.net
今の偉い人はLTOに任せます

921:デフォルトの名無しさん
18/02/27 11:58:06.25 hiD/gfTg.net
分割できないのはC++のtemplateだけ
Cは問題ないからほとんどの言語はCのライブラリに依存する
他言語から利用するならさすがにファイル分割せざるをえない

922:デフォルトの名無しさん
18/02/27 12:49:23.86 cuAUxW5W.net
templateって分割できないの?分割してる俺は異端だったか

923:デフォルトの名無しさん
18/02/27 13:02:26.29 osJwhRBM.net
優秀なコンパイラ使ってるんだな
そのためのexport構文は実装が難しすぎて廃止されたんだ

924:デフォルトの名無しさん
18/02/27 14:30:07.64 hiD/gfTg.net
Vector<T>の内部で無引数のVectorを利用するだけみたいなパターンがある
このパターンに従ってなければ異端視されるリスクはあるだろう

925:デフォルトの名無しさん
18/02/27 16:21:26.72 ZLoGDkNB.net
Railsってなんだかんだいって未だに人気があるみたいだけど、
なんでなん? Rubyって動的言語だよね? PHPを使ったフレームワークとどこが違うの?
なんであんなに1強状態で人気があるの?
Rubyの魅力とセットで教えてください。

926:デフォルトの名無しさん
18/02/27 16:31:55.21 hlxRjRwD.net
優れているわけではなく、バカチョンで作れるから安易に選ばれやすいのだろう
Railsで始めてみることより、仕様が固まったら次のまともな言語やフレームワークに移行できるかの方が重要
実際、それに失敗(あるいはその必要性すら見越せず)して炎上する案件も後を絶たない
小さくは産めるが大きく育てることはできないのがRails

927:デフォルトの名無しさん
18/02/27 16:57:52.59 NW0j8e0V.net
バカチョンなのはphpじゃなくて?
なんか意識高い系が使ってるイメージなんだけどRoR

928:デフォルトの名無しさん
18/02/27 17:42:22.46 5KO97NM4.net
絶対MAC使ってそう

929:デフォルトの名無しさん
18/02/27 22:14:44.71 D4/jn9Oj.net
ザッカーバーグはphpでボコボコ作ってたんだから作れる奴は作れるんだろ。

930:デフォルトの名無しさん
18/02/28 00:50:59.60 BRgV9W3l.net
>>905
でも言語ごと見直してるよね つ hack

931:デフォルトの名無しさん
18/02/28 01:21:37.82 twfZQuBm.net
型が定義域を成すような言語ってあったっけ?

932:デフォルトの名無しさん
18/02/28 06:23:34.25 sJxURYwy.net
高階型の事か?
ルービーとか?

933:デフォルトの名無しさん
18/02/28 10:14:44.58 BRgV9W3l.net
>>901
これに誰もコメントできないということは意識高い系エンジニアはもう2chにはいないってことかな

934:デフォルトの名無しさん
18/02/28 10:54:54.72 pZIdeYdH.net
煽られたのでレスする
>>901
エコシステムが優れているの一点に尽きる
日本語のユーザーが多いので大抵の問題は検索で解決する
とりあえずgem入れれば大抵のことができる
Rubyであることは恐らく関係がない(Rubyの魅力ってなんだろ?ないんじゃね)
このような特長によりラピッドプロトタイピングでは他の追随を許さないため、
早急に成果物が必要なWeb系スタートアップなどでとても重宝される
ユーザーが多くて問題が検索で解決するということは学習コストが低いので、
プログラミングが全くわからないという初心者にも人気
誤解を恐れずに言えば、PHPなどの他の言語のRoRライクなフレームワークは、
Rubyを新たに学習


935:するのを嫌がった既存言語のユーザーのためのパチモンである



936:デフォルトの名無しさん
18/02/28 17:01:05.36 dNU7bBqW.net
人気がどうとか言い出したら未だに8割はphpだし

937:デフォルトの名無しさん
18/02/28 18:04:09.73 51qUbh2+.net
次世代言語スレで枯れたスクリプト言語の流行り廃りなんて話題にしたくないって人が多いんだろ

938:デフォルトの名無しさん
18/02/28 18:07:45.89 0QofQq2Z.net
結局javascirptが古いようで最新の技術なんだよね。

939:デフォルトの名無しさん
18/02/28 20:24:05.75 BRgV9W3l.net
>>910
Rubyが嫌いって結局ガッツリハマった人の意見じゃないなぁ。
結局外から観測してる人の意見じゃん。
やっぱりいないんだな。2chには。
ちなみにRubyの良いところって多分プリミティブ型が存在しないことなんかなと
完全に純粋なオブジェクト指向言語を目指したって作者の人も言ってるし。
数字にメソッドが生えているのはたしかにすごいと思った。

940:デフォルトの名無しさん
18/02/28 20:29:48.68 BRgV9W3l.net
>>914
あとElixirはかなりRubyに影響を受けてると聞いた。
だからRubyには魅力があると考えている人は確実にいる。

941:デフォルトの名無しさん
18/02/28 21:14:49.16 sIMYGGyy.net
数字にメソッドといえば Kotlin もそうだな。

942:デフォルトの名無しさん
18/02/28 23:56:12.70 DmvhFr4C.net
>ちなみにRubyの良いところって多分プリミティブ型が存在しないことなんかなと
心の底からどうでもいいわ。

943:デフォルトの名無しさん
18/03/01 00:14:26.84 mwB1G/ka.net
>>917
まぁそうよね。俺もRubyを外野から見てるから、正直それがどうプログラミングに役に立つかわからない。
でも、今もiOS開発でcocoapodsが使われてるなら
あれは設定ファイルがrubyで出来てるはず。(DSLを作りやすい言語だとも聞いた。)

944:デフォルトの名無しさん
18/03/01 01:01:03.87 PEqveR2A.net
>>911
捨てられない、壊せない、低学歴のゴミ捨て場
池沼保守が更なる池沼保守を招き、公共事業になる
COBOLですか?いいえ、ペチプァです

945:デフォルトの名無しさん
18/03/01 01:49:49.40 jbpZZhCj.net
>>913
URLリンク(anond.hatelabo.jp)
>JavaScriptはDOMを書き換えるためだけに存在している書捨てのクソ言語であって、サーバーサイドを書くために存在している言語でも、100万行からなるバベルの塔の建設に耐えうる言語でもない。

946:デフォルトの名無しさん
18/03/01 02:34:21.42 mwB1G/ka.net
>>920
JSも毎年進化してるしasync-await周りの進化を楽しみにしてます。
array系メソッドのasync-await対応入れて欲しい。
TypeScript全然今現役だし。むしろこれからじゃないの。
結構型定義ファイルを最初から提供してくれるライブラリも増えてきたし。

947:デフォルトの名無しさん
18/03/01 02:51:20.00 3GQv6gfc.net
動的言語の良いところは連想配列と無名関数だぜ
オブジェクトとか参照透明とかいう思想を無視して使うと良い

948:デフォルトの名無しさん
18/03/01 07:56:42.84 PEqveR2A.net
参照透明w
ガイジすぎますよペチプァさん

949:デフォルトの名無しさん
18/03/01 08:06:33.61 hFyb911L.net
透明でも透過でも意味はおなじやろ

950:デフォルトの名無しさん
18/03/01 08:47:20.76 KaHAqFPd.net
日本語ですらこうだからな
英語でこれをやられると日本人は詰む

951:デフォルトの名無しさん
18/03/01 09:14:47.72 QH9XRV0O.net
rubyで作ったものといえばhomebrewとかchef、vagrantとか環境構築系統の奴が多い気がする。

952:デフォルトの名無しさん
18/03/01 11:41:14.60 mwB1G/ka.net
でもPHPってなにげに関数型っぽい性質を思ってるよね。
requestを入力にresponseを出力するだけの機能しか作れないわけだし。
ただ


953:言語自体が副作用を許容するのが残念なだけで。



954:デフォルトの名無しさん
18/03/02 07:56:21.08 WI55jJOz.net
いや関西型でしょ
細かいことはどうでもええねんやで~ って感じ

955:デフォルトの名無しさん
18/03/02 11:26:26.47 swkM6DDi.net
>>928
新しいーー

956:デフォルトの名無しさん
18/03/02 16:36:06.39 cw2CU0bm.net
細かい組み込み関数は暗記しなくていいとPerlの作者は言ってる
でもみんな人の話を細かいところまで聞いてない
そして、組み込み型が存在しない言語があれば完璧に覚えられるんじゃないか
完璧に覚えられないPerlは欠陥品じゃないかと誰かが思いついた

957:デフォルトの名無しさん
18/03/02 23:32:55.91 yLzcLNAA.net
perlやっぱキチーわ。。
URLリンク(perldoc.jp)

958:デフォルトの名無しさん
18/03/03 01:42:16.88 6xQIfmrF.net
詳細を暗記しなくていいって言い方は何か違うな
全容を理解しなくても使えるみたいな言い方だった

959:デフォルトの名無しさん
18/03/03 10:52:51.13 v4FkTK4+.net
誰も全容を理解できないほどグチャグチャなだけじゃないか?

960:デフォルトの名無しさん
18/03/03 10:55:41.97 duFkg5Z7.net
ゴミの中から使えるものを探し出すマイニング言語だな

961:デフォルトの名無しさん
18/03/03 14:24:12.16 xVbk5YBO.net
機能を詰め込んだ言語はどれも同じようなこと言うが、
あればどっかのバカがドヤ顔で使うもんなんだよ。人が分からないこと機能を使うことがそいつの生きがいだったりするし。

962:デフォルトの名無しさん
18/03/04 04:04:02.15 H2uta8yU.net
結局次世代覇権はどれなの

963:デフォルトの名無しさん
18/03/04 04:24:53.92 LENvqUUV.net
そんなものはない

964:デフォルトの名無しさん
18/03/04 08:27:34.15 ZzYgGHv3.net
覇権とはつまり無料で伝わってくる評判や情報
たしかにソースコード自体はただでもらえることが多いが
全ての情報が無料になるとは限らない

965:デフォルトの名無しさん
18/03/04 08:43:02.11 jVv2tvmI.net
Dartまだ生きてたんだな
flutterで久々に名前聞いたわ

966:デフォルトの名無しさん
18/03/04 09:06:46.22 wkppZr3e.net
死産だろ
AltJSはTypeScriptだけでいい
Flowのある今、TSですら要らなくなりかけてるしな
コヒースクリプトとかいう究極の糞ゴミもあったなそういえば

967:デフォルトの名無しさん
18/03/04 09:27:49.51 JhMcbRX8.net
javascriptのpython的な感じのnode.jsが
サーバ側javascriptとかいってわけのわからない何をするものかわからない
説明しかないウェブ上にないから選択肢にならないのが駄目なんだよな。

968:デフォルトの名無しさん
18/03/04 09:58:27.75 ok4FvQ1Q.net
Dartの戦略はosから全部google製に置き換えるという壮大なものっぽい。
flutterはUI部分はビデオゲームみたいに0から作り直してるからAndroidの断片化問題を回避してる。
結論はdart死んでなかったんや

969:デフォルトの名無しさん
18/03/04 10:16:59.43 nKesZExL.net
Dartはまだワンチャンある

970:デフォルトの名無しさん
18/03/04 12:11:02.48 wkppZr3e.net
自社で使ってねえ、いつ投げ出すかもわかんねえプロダクト使えるわけねえだろ
Angularなんて全く自社で使ってないから、案の定グダグダでReact対抗なんか遙か遠く、Vueにすら劣るゴミやン

971:デフォルトの名無しさん
18/03/04 12:37:54.80 vieJ9/i2.net
>>944
わかる
自社で作ったフレームワークを自社が使わないってどうなのよ?って思う
まだベータ版だからとかそれなりの理由があるならともかく、そうでなければ
自分の作ったフレームワークは使うに値しないって言ってるも同然だよな
そんなフレームワークを使う気になれないし趣味以外で使う奴の気が知れない

972:デフォルトの名無しさん
18/03/04 12:39:21.59 DG


973:FKECqx.net



974:デフォルトの名無しさん
18/03/04 13:04:30.62 PM/22zQa.net
angularみたいに色々ごった煮するよりか
reactみたいに単なるviewライブラリって割り切ってもらった方が個人的には好みかな。

975:デフォルトの名無しさん
18/03/04 13:14:01.97 8KjE9Kl8.net
そだねー

976:デフォルトの名無しさん
18/03/04 16:54:18.25 esyJJEGF.net
Googleって社内の開発に関しては保守的な印象
Googleともなると、新しい玩具に飛びつくことが長期的にどれだけの利益または不利益を生むかが定量的に分かってしまうんだろうね

977:デフォルトの名無しさん
18/03/04 17:12:34.27 fkgoPQSR.net
あんだけコード資産あったらそらそうだろ

978:デフォルトの名無しさん
18/03/04 17:17:55.41 P0TPEWFs.net
逆に、つかえねえ自社開発ツールを>>945みたいな理屈で開発環境として現場に押し付けるのもどうかと思うが
公開しないんじゃなくて、できないレベルで使えない、公開したら株価下がるレベルのやつ
ある程度は公開してフィードバック貰わないと腐るよ

979:デフォルトの名無しさん
18/03/04 18:24:47.56 vieJ9/i2.net
>>951
いや、自社開発のクソみたいなツールを使えと言っているわけじゃないんだが…
例えばReactはFacebookが作っていて、Facebookは自社でReactを積極的に利用してるわけだから
そういう開発者自身が積極的に利用してるツールじゃないと魅力を感じないってだけで
あと、公開するなとも言ってないんだが…
自社では利用してないツールなら正式版としては公開するのはどうかと思うってだけで
ベータ版としてならむしろ積極的に公開してほしい
Googleはコード資産が膨大だから全てをAngularに置き換えるのは到底無理な話だが
一部のツール(例えばGmailだけ)を実験的にAngularに置き換えることは可能だろ
でも、それさえ行われてないわけでそんなものを正式版と言われても魅力を感じないと言いたかった

980:デフォルトの名無しさん
18/03/04 18:53:56.69 ok4FvQ1Q.net
Flutterをとょっと触った感じすごくReactぽい。なんというか今のトレンドはReactに皆寄せるんかな

981:デフォルトの名無しさん
18/03/04 20:14:57.99 8pLLmBBd.net
Google Wave の匂いがする…

982:デフォルトの名無しさん
18/03/04 20:20:02.27 p/eHcB/Q.net
Closure Library「社内で使ってたら使ってくれるんですか?」

983:デフォルトの名無しさん
18/03/04 20:32:08.26 7+LmoBkc.net
Flutterのチュートリアルを翻訳し始めてみた
URLリンク(taiyaq.com)
手軽に触れる。開発ツールとして悪くない。
vscodeに最初から対応しているのがいい。

984:デフォルトの名無しさん
18/03/04 23:16:03.90 wkppZr3e.net
>>952
ワイ大将軍の代弁、ご苦労だぞ

985:デフォルトの名無しさん
18/03/04 23:17:13.31 wkppZr3e.net
>>956
React Nativeの寡占のケツ叩く材料にはいいかもしれんな
それしか価値がないが

986:デフォルトの名無しさん
18/03/04 23:26:12.39 24V4/Iiw.net
覇権言語TypeScriptで作られたVSCodeを使ってDart書いてたら死にたくならない?

987:デフォルトの名無しさん
18/03/05 00:09:59.08 YrcFxfr2.net
AltJS界で覇権
プログラミングエディタで覇権
クラウドプラットフォームでGoogleに圧勝して2番手
.NET Coreもまさかの成功
MSは一時期調子に乗ってMSを馬鹿にしてたWeb系連中を完全に黙らせたよな
結局、所詮Web系は極めて狭い技術領域における開発プロセスの過剰な最適化を競ってるだけで、大した技術はないんだよ


988:ね



989:デフォルトの名無しさん
18/03/05 00:19:04.86 DPv3+ffH.net
そのWeb系連中のケツ穴舐めて媚びへつらってアヘ顔晒してるM$さんが何だって?

990:デフォルトの名無しさん
18/03/05 00:32:25.07 YuCY3xrf.net
実際、言語設計やシステム設計に関してはMSは群を抜いてると思う
対して、需要を先読みするセンスはGoogleとAppleの方が一枚上手って感じ
まぁ、今のAppleはブランド力だけで需要を強引に上書きしてる感あるが

991:デフォルトの名無しさん
18/03/05 00:37:15.68 XKEuRD67.net
おい林檎豚、M字ハゲベゼルが見えてるぞ

992:デフォルトの名無しさん
18/03/05 07:49:09.52 LJ6W+mLO.net
林檎は、かつてのMSみたいな老害と化してるだろ…

993:デフォルトの名無しさん
18/03/05 09:46:28.71 mBYt1wWZ.net
TypeScriptは確かに覇権ではあるけど
自らにES201X + 型 である。という強い制約を課している。
だからいろいろできたらいいのになって思うけどできない制約が多い。
例えば関数のオーバーロードはできない(宣言はできるけど)。
URLリンク(docs.solab.jp)
がっばって実装を工夫しないと読みづらそう。

994:デフォルトの名無しさん
18/03/05 09:56:41.48 mBYt1wWZ.net
>>963
今のApple上層部は技術に興味がない感がすごい。
rootパスワードを無視できるバグができたって完全にテストプロセスが旧態依然ってことだろ。

995:デフォルトの名無しさん
18/03/05 10:36:05.64 CUJxqnH7.net
C言語はほとんど良いんだけどマクロだけは糞すぎ

996:
18/03/05 10:41:43.46 NU3s1WzP.net
>>967
あのマクロが万能なんでもあり感満載でいいのではないか?

997:デフォルトの名無しさん
18/03/05 10:45:51.07 9If1UATd.net
副作用も含めて良い感じ
関数の中に書いたりしたときにスコープ効いてくれると嬉しかったんだが

998:デフォルトの名無しさん
18/03/05 11:33:55.06 VSqqwJ69.net
Cのプリプロセッサはマクロと呼ぶには貧弱で置換表現と呼ぶには強力過ぎるのがなぁ

999:デフォルトの名無しさん
18/03/05 12:26:34.17 hapGaUvz.net
>>965
普通に関数のオーバーロードできてるやん…
もしかして、オーバーロードが何か理解してない??

1000:デフォルトの名無しさん
18/03/05 12:41:42.16 mBYt1wWZ.net
>>971
よく読めよ宣言はできるって言ってるだろ。
エントリーポイントは一箇所に纏める必要があるのが問題だって言ってるの

1001:デフォルトの名無しさん
18/03/05 12:42:27.17 rvkcJo3P.net
>>971の理解している「普通の関数のオーバーロード」を説明してもらった方が面白いと思う

1002:デフォルトの名無しさん
18/03/05 13:27:13.44 cuduWH2+.net
>>972
エントリポイントが1箇所にまとまってるとオーバーロードじゃないの?
>>973
ポリモフィズムのバリエーションで、ユーザーコードから、別シグニチャに同じメッセージタグで呼び出せるものだと思ってるが

実装が大変かどうかと、オーバーロードが実現できるかどうかを同じにしてることに違和感があっただけだよ
ID:mBYt1wWZが大変だと思ってる事実を否定するものではない

1003:デフォルトの名無しさん
18/03/05 13:27:48.97 gV5hE2lT.net
マクロはDOM操作かPHPに似ている
ただしweb系が戦国時代だとしたらcppは覇権江戸幕府

1004:デフォルトの名無しさん
18/03/05 14:45:14.98 FSU+NZg/.net
オーバーロードの宣言を一箇所にまとめないといけないというのは改造ocamlのG'Caml等もそうだったな
その方がコンパイラは楽なのもわかるけど、実用しようと思ったら別々の場所で宣言できないと
用を為さないというのもわかる

1005:デフォルトの名無しさん
18/03/05 17:35:50.57 0z7zpsA6.net
>ポリモフィズムのバリエーションで、ユーザーコードから、別シグニチャに同じメッセージタグで呼び出せるものだと思ってるが
特段反論というわけでもないけど:
シグネチャというのはそもそもメッセージタグが同一でも型や引数の個数で別になる
つまり


1006:それはシグネチャの定義に過ぎない シグネチャが別になった結果同じ名前で別のもの(関数定義など)が参照されるのがオーバーロード。 TypeScriptは型情報についてはオーバーロードが行われるが、 実装の参照については(ECMAScriptとの互換性のため)オーバーロードが行われない、 みたいに理解している。



1007:デフォルトの名無しさん
18/03/05 17:57:02.33 dFIp3KoW.net
次スレからPart表記なくせば、もっと詰め込める
この形ならElmかNimがはまるな
次世代言語9[Go *** Rust Swift Kotlin TypeScript]
でも文字数ギリだから、次次スレからまた変えることになる
括弧をなくせば使えるが
次世代言語10 Go *** Rust Swift Kotlin TypeScript

1008:デフォルトの名無しさん
18/03/05 19:57:21.53 D1Vi1BjH.net
>>978
そもそも言語をスレタイに入れなければ良いのでは?

1009:デフォルトの名無しさん
18/03/05 20:31:22.82 D61iv0lz.net
>>979
それだと検索に引っかからなくなる

1010:デフォルトの名無しさん
18/03/05 20:38:24.63 1R0ciaNQ.net
別に引っかからなくていいよ。
誰がそこまでこのスレを重視してんの?

1011:デフォルトの名無しさん
18/03/05 20:41:16.04 03r0WsXs.net
オレだよ、オレオレ!

1012:デフォルトの名無しさん
18/03/05 20:41:22.54 r5YruRsJ.net
>>980
引っかかったところで大してその言語の話してねえようなスレなんだぜ。
Kotlinなんて十レスもない。
引っかかること自体詐欺的。

1013:デフォルトの名無しさん
18/03/05 20:56:53.56 cQ8T6f3a.net
たし蟹
もう次スレいらんでしょ

1014:デフォルトの名無しさん
18/03/05 21:22:28.56 +lEhhk6x.net
次世代言語と言えばsmalltalkだろ
もっとsmalltalkの話しようぜ!

1015:デフォルトの名無しさん
18/03/05 21:27:08.39 CUJxqnH7.net
申し訳ないがジョブズに自慢していいとこ取られて死んだ言語はNG

1016:デフォルトの名無しさん
18/03/05 21:35:44.64 kL27V13J.net
あえて言おう
パクられることなくSmalltalkに残った機能なぞカスであると
イメージベース然り、become:然り

1017:デフォルトの名無しさん
18/03/05 23:30:43.29 XKEuRD67.net
なんでDart2なんか出しちゃったんだろな
ひょっとしてグーグルって俺よりバカなんじゃないか?
俺だったらGo使うわ

1018:デフォルトの名無しさん
18/03/05 23:39:33.13 XKEuRD67.net
いやホント、俺がプロジェクトマスターやってあげたほうがいいんじゃないか?って。
心配になってくるよな、最近のグーグルは、困ったもんだよ

1019:デフォルトの名無しさん
18/03/06 01:37:43.48 tYgPxfOY.net
>>988
goはなんか違う気がする。
今のgoでGUIフレームワーク作ったらinterface{}だらけになる予感しかない。

1020:デフォルトの名無しさん
18/03/06 01:41:33.41 vxZYoA9J.net
GoにGUIは明らかに不得手。
俺画面周りはHTMLとCSSで書いてるわ。
gopherjs使うと思ったよりブラウザ側でも色々させられるし。
あれ面白いぞ。

1021:デフォルトの名無しさん
18/03/06 01:43:22.53 tYgPxfOY.net
どっちかというと比較対象はTypeScriptなんじゃないかな。null安全だったりasync awaitあったり共通点は多い。
でも、jsの仕様を引きづる言語仕様だから、そういう後方互換性を考慮しなくてもいいDartってことなんじゃないか。
google社内でも使われてるみたいだし。
flutterもreactユーザーにはしっくりきやすい。俺はTypeScript+React大好き派だから
かなりいい感じ。
チュートリアルもdartを知らんでも触れるようにできてて分かりやすい。

1022:デフォルトの名無しさん
18/03/06 07:20:22.85 kXsiMblM.net
>>983
笑えたわww。
対照的に何度も出てくるみんなのアイドル某ボケ担当言語を外してるあたりも、
個人的怨嗟が垣間見える。

1023:デフォルトの名無しさん
18/03/06 08:33:44.80 E3ObYs9n.net
>>993
単純に一番少ないやつ挙げたんだけどね

1024:デフォルトの名無しさん
18/03/06 10:09:42.47 x/Au45rc.net
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
URLリンク(me)


1025:vius.5ch.net/test/read.cgi/tech/1520298555/



1026:デフォルトの名無しさん
18/03/06 17:55:36.25 +o/JM6Eu.net
flutterってどんなアーキ使えばいいの?
reactと同じだからflux?

1027:デフォルトの名無しさん
18/03/06 20:24:51.38 aemwhbpR.net
>>996
flux自体がReactの延長上の思考法なわけだから。
基本は極力Stateの管理をするコンポーネントを一箇所に集めろって話。
flutterもおんなじだろうね。
詳しくはReactの考え方でググってみ。

1028:デフォルトの名無しさん
18/03/06 23:57:19.92 osOtByTq.net


1029:デフォルトの名無しさん
18/03/06 23:57:52.53 osOtByTq.net


1030:デフォルトの名無しさん
18/03/06 23:58:24.93 osOtByTq.net


1031:デフォルトの名無しさん
18/03/06 23:58:49.26 osOtByTq.net


1032:デフォルトの名無しさん
18/03/06 23:59:19.76 osOtByTq.net
1000

1033:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 95日 0時間 50分 58秒

1034:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch