いざ、語ろうぞ。
スレタイ超過のため、一部省略。
その他もウェルカム。
前スレ
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代
http://mevius.2ch.net/test/read.cgi/tech/1492631007/
探検
次世代言語議論スレ[Go Rust Scala Haskell]第5世代 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
2017/06/13(火) 08:54:07.99ID:O1HnBMDk
966デフォルトの名無しさん
2017/08/27(日) 17:30:06.18ID:0P4eY3kj >>965
なんでステレオタイプな一つの人格にしようとしてんの?
俺はphperでもないし、動的言語がいいなんて言った覚えもない。
ただ和田さんのプレゼン、防衛的プログラミングの一環として
型アノテーションを使うことを提案されていて良いと思ったから話しただけ。
http://sssslide.com/speakerdeck.com/twada/php-conference-2016
なんでステレオタイプな一つの人格にしようとしてんの?
俺はphperでもないし、動的言語がいいなんて言った覚えもない。
ただ和田さんのプレゼン、防衛的プログラミングの一環として
型アノテーションを使うことを提案されていて良いと思ったから話しただけ。
http://sssslide.com/speakerdeck.com/twada/php-conference-2016
967デフォルトの名無しさん
2017/08/27(日) 18:22:30.86ID:Xm4zUSYU968デフォルトの名無しさん
2017/08/27(日) 18:34:38.91ID:afYlE8K8 >>966
これ会場で誰か「Java使えば?」って言ってあげろよ
これ会場で誰か「Java使えば?」って言ってあげろよ
969デフォルトの名無しさん
2017/08/27(日) 18:50:11.83ID:q7bmEdLB PHPはなぜライト層が好むのか
970デフォルトの名無しさん
2017/08/27(日) 19:22:26.33ID:Xm4zUSYU >>969
「PHPなら初心者でも書ける」という大嘘がまかり通ってるから
そんな連中が書いたゴミの山を保守する奴隷が足りてないから
やっぱり「PHPなら初心者でも書ける」と噂を流して
奴隷がやってくるのを待っている
「PHPなら初心者でも書ける」という大嘘がまかり通ってるから
そんな連中が書いたゴミの山を保守する奴隷が足りてないから
やっぱり「PHPなら初心者でも書ける」と噂を流して
奴隷がやってくるのを待っている
971デフォルトの名無しさん
2017/08/27(日) 19:39:59.26ID:0cj4lMWm 暗黙にいろいろ用意してくれてるものがライト層には人気出るのはわかる。
972デフォルトの名無しさん
2017/08/27(日) 19:48:59.90ID:ZA6o2PCQ ライト層が好むんじゃなくて結果的にライト層が残るんだろ
まともにコード書ける奴はゴミみたいな単価のWeb制作なんかすぐ辞めて自社事業系に行くよ
まともにコード書ける奴はゴミみたいな単価のWeb制作なんかすぐ辞めて自社事業系に行くよ
973デフォルトの名無しさん
2017/08/27(日) 20:47:45.53ID:0P4eY3kj >>968
プレゼンの内容ロクに見ずに批判してるのがまるわかり。
動的言語の良さと静的言語の良さをあわせてる
動的言語はメタプログラミングし易いからフレームワークの挙動を組みやすい。
でもインターフェースがゆるゆるだと使う時にひどいから
インターフェース部分を型アノテーションで固めようってことでしょ。
javaは全部かっちりしすぎて辛い部分もある。だからkotlinとか注目されてる。
ボイラープレートだらけとかシンドいのは事実
goも若干きつくて正直goaに出会うまではgoでwebやろうってあんまり思わなかった
プレゼンの内容ロクに見ずに批判してるのがまるわかり。
動的言語の良さと静的言語の良さをあわせてる
動的言語はメタプログラミングし易いからフレームワークの挙動を組みやすい。
でもインターフェースがゆるゆるだと使う時にひどいから
インターフェース部分を型アノテーションで固めようってことでしょ。
javaは全部かっちりしすぎて辛い部分もある。だからkotlinとか注目されてる。
ボイラープレートだらけとかシンドいのは事実
goも若干きつくて正直goaに出会うまではgoでwebやろうってあんまり思わなかった
974デフォルトの名無しさん
2017/08/27(日) 21:14:56.73ID:0uJKb2TV 動的だとメタプログラミングしやすい…?
メタプログラミングって何かわかってる??
メタプログラミングって何かわかってる??
975デフォルトの名無しさん
2017/08/27(日) 21:42:23.55ID:J8/CoBlN 確かに、Rubyのようにコード上の静的なセマンティクスと実行時のデータ構造とが明確に分離されていない言語において
動的にメソッド生やしたりするのをメタプログラミングと呼ぶのは違和感あるよな
動的にメソッド生やしたりするのをメタプログラミングと呼ぶのは違和感あるよな
976デフォルトの名無しさん
2017/08/27(日) 21:43:30.82ID:0P4eY3kj >>974
ダックタイピングとマジックメソッドの組み合わせによって
例えばORMとかだとDBのスキーマ情報からメソッド生やしたりできる。
そういうのはjavaとかgoだとcode genereateするしかないでしょ。
ダックタイピングとマジックメソッドの組み合わせによって
例えばORMとかだとDBのスキーマ情報からメソッド生やしたりできる。
そういうのはjavaとかgoだとcode genereateするしかないでしょ。
977デフォルトの名無しさん
2017/08/27(日) 21:51:14.06ID:0P4eY3kj >>976
あれ?俺の考えてるメタプログラミングって違うの?
例えばジェネリクスもメタプログラミングだと思ってるんだけど
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
を見る限りじゃ合ってると思うんだけど。
簡単に言えばロジックを記述するロジックを組むのがメタプログラミングだよね。
あれ?俺の考えてるメタプログラミングって違うの?
例えばジェネリクスもメタプログラミングだと思ってるんだけど
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
を見る限りじゃ合ってると思うんだけど。
簡単に言えばロジックを記述するロジックを組むのがメタプログラミングだよね。
978デフォルトの名無しさん
2017/08/27(日) 22:12:18.75ID:otpxcVUC >>977
ジェネリクスによるメタプログラミングは型という本来静的に決まっているものに依存しないという点でメタ
ロジックを記述するメタプログラミングとは意味が違う
動的言語ではメソッドが静的に定義されている必要は元々全くないし、
定義するメソッドもごく普通のメソッドであり決してロジックを生成しているわけではない
LISPみたいに実行するコードそのものを作ってしまうのがロジックを記述する方のメタプログラミングだ
ジェネリクスによるメタプログラミングは型という本来静的に決まっているものに依存しないという点でメタ
ロジックを記述するメタプログラミングとは意味が違う
動的言語ではメソッドが静的に定義されている必要は元々全くないし、
定義するメソッドもごく普通のメソッドであり決してロジックを生成しているわけではない
LISPみたいに実行するコードそのものを作ってしまうのがロジックを記述する方のメタプログラミングだ
979デフォルトの名無しさん
2017/08/27(日) 22:25:38.24ID:J8/CoBlN 補足
動的言語でcallをフックする系のメタプログラミングがメタである所以は、
メソッドは本来クラスに対して静的にアサインされるものである、という前提において、
メソッドを動的にアサイン(動的にロジックを記述しているわけではない)しているという点だ
その前提を認めるかどうかは議論の余地がある
例えば、さすがにJavaScriptでメソッドは静的にアサインされるものだと主張するのは無理があるだろうね
動的言語でcallをフックする系のメタプログラミングがメタである所以は、
メソッドは本来クラスに対して静的にアサインされるものである、という前提において、
メソッドを動的にアサイン(動的にロジックを記述しているわけではない)しているという点だ
その前提を認めるかどうかは議論の余地がある
例えば、さすがにJavaScriptでメソッドは静的にアサインされるものだと主張するのは無理があるだろうね
980デフォルトの名無しさん
2017/08/27(日) 22:26:36.34ID:QZuIwK0r981デフォルトの名無しさん
2017/08/27(日) 23:44:09.86ID:0P4eY3kj >>979
難しいっすわ。
つまりjsでメタプログラミングと言ったら
jsのコードを文字列で記述してそれをevalしたものだけってこと?
学術的な定義だと言われると凄く困るんだけど、
メタ って自己言及ってことでしょ
ロジックを持ってロジックを作るという考え方全般をメタプログラミングと呼んだら
実際的に弊害があったりする?
静的言語だと例えばマクロを駆使してコード生成をかける
部分をメタプログラミングと呼ぶ。
rust のprintln!とかだよね
テンプレート文字列の内容を実際に渡すパラメータの数と型の一致の確認をコンパイル時に行う。
goだとプリプロセッサがないからcode genereteがメタプログラミングなわけだ。
でも動的言語だとコンパイルはないから全て実行時に処理する。
だから明確にメタプログラミングと言える箇所はないってことか。
そこはわかったよ。
でも、実際には静的言語にはマクロがないとできないことを動的言語はできる。
だからメタプログラミングが動的言語は得意っていいたかったんだよね。
難しいっすわ。
つまりjsでメタプログラミングと言ったら
jsのコードを文字列で記述してそれをevalしたものだけってこと?
学術的な定義だと言われると凄く困るんだけど、
メタ って自己言及ってことでしょ
ロジックを持ってロジックを作るという考え方全般をメタプログラミングと呼んだら
実際的に弊害があったりする?
静的言語だと例えばマクロを駆使してコード生成をかける
部分をメタプログラミングと呼ぶ。
rust のprintln!とかだよね
テンプレート文字列の内容を実際に渡すパラメータの数と型の一致の確認をコンパイル時に行う。
goだとプリプロセッサがないからcode genereteがメタプログラミングなわけだ。
でも動的言語だとコンパイルはないから全て実行時に処理する。
だから明確にメタプログラミングと言える箇所はないってことか。
そこはわかったよ。
でも、実際には静的言語にはマクロがないとできないことを動的言語はできる。
だからメタプログラミングが動的言語は得意っていいたかったんだよね。
982デフォルトの名無しさん
2017/08/27(日) 23:47:44.62ID:0uJKb2TV C++ではマクロを使わないと実現できない最小のpythonコードをご提示ください
983デフォルトの名無しさん
2017/08/28(月) 00:04:08.73ID:bSe63dl4 誰がなんと言おうと、PHPみたいな糞言語使わないし、使う必要もない
生涯を保守に捧げたい哀れな土方どもにやらせておけばいい
生涯を保守に捧げたい哀れな土方どもにやらせておけばいい
984デフォルトの名無しさん
2017/08/28(月) 00:15:01.04ID:hSp+oBxP やはり動的型が好きな人はありとあらゆることがゆるゆるで
それはこういった会話にも表れてしまって、全てが場当たり的なんだな
会話がこうなんだから、他のこともそうなんだろう
指摘されてから直したらよい、的な
どうしてそうなってしまうのか、非常に興味深いところであるが
おそらく現実が正しく認識できていないか、もしくは根本的なところを履き違えているだとか
そんなおかしな状態で日常を過ごしていると
思考回路がいい加減になってしまって常習化してしまうのだろう
モデルが正しくないところへ幾らインプットを流し込んでも
正しく学習できないばかりか、どんどん変になっていく
そのうち何が何やらどうでもよくなってしまうのだろう
それはこういった会話にも表れてしまって、全てが場当たり的なんだな
会話がこうなんだから、他のこともそうなんだろう
指摘されてから直したらよい、的な
どうしてそうなってしまうのか、非常に興味深いところであるが
おそらく現実が正しく認識できていないか、もしくは根本的なところを履き違えているだとか
そんなおかしな状態で日常を過ごしていると
思考回路がいい加減になってしまって常習化してしまうのだろう
モデルが正しくないところへ幾らインプットを流し込んでも
正しく学習できないばかりか、どんどん変になっていく
そのうち何が何やらどうでもよくなってしまうのだろう
985デフォルトの名無しさん
2017/08/28(月) 01:53:37.57ID:2qTxVo4t986デフォルトの名無しさん
2017/08/28(月) 02:23:45.93ID:PMfiarSN 動的言語のメタプログラミングのメリットもわからないとか終わってるなww
987デフォルトの名無しさん
2017/08/28(月) 06:51:11.62ID:bSe63dl4 ペチプァさん・・・w
988デフォルトの名無しさん
2017/08/28(月) 09:41:42.58ID:hmoIfjPi あほくさ。
そこまで堅いのが好きならすべてワイヤロジックで組むべきだな。
そこまで堅いのが好きならすべてワイヤロジックで組むべきだな。
989デフォルトの名無しさん
2017/08/28(月) 09:48:23.03ID:IHzBG4Iq メタプログラミングってどれがって定義とかじゃなくて相対的なものじゃないの
敢えて言えば平均的な使い方よりメタかどうかなので、言語によって変わってくるのでは
敢えて言えば平均的な使い方よりメタかどうかなので、言語によって変わってくるのでは
990デフォルトの名無しさん
2017/08/28(月) 10:23:02.60ID:knrf7PIh 静的なメタプログラミングにはチューリング完全ではない特殊な言語を使う
コンパイル時に無限ループさせないために
言語が二つあるから完全に二極化している
コンパイル時に無限ループさせないために
言語が二つあるから完全に二極化している
991デフォルトの名無しさん
2017/08/28(月) 15:51:07.02ID:PMfiarSN メタプログラミングという概念について述べてるところに
メタプログラミングの実現方式について返すから話が噛み合わないわけだw
言語処理能力って重要だね
メタプログラミングの実現方式について返すから話が噛み合わないわけだw
言語処理能力って重要だね
992デフォルトの名無しさん
2017/08/28(月) 15:54:35.06ID:hmoIfjPi まあこれ以上、メタプロとはってなこと話しても無駄だろうということで
話題の発端である「動的言語はメタプログラミングし易いからフレームワークの挙動を組みやすい。」
てなところに戻って、
動的言語でフレームワークの挙動を組みやすいかどうかを語った方が良いのでは?
話題の発端である「動的言語はメタプログラミングし易いからフレームワークの挙動を組みやすい。」
てなところに戻って、
動的言語でフレームワークの挙動を組みやすいかどうかを語った方が良いのでは?
993あ
2017/08/28(月) 16:01:40.95ID:J4nOOC8D994デフォルトの名無しさん
2017/08/28(月) 16:11:48.75ID:hSp+oBxP どちらにしても次世代言語の覇者なるものがもし出てくるとしても
動的型言語界隈から出てくるわけないので、どうでもよい
動的なメタプログラミングなど悪夢でしかなく、好まれるはずがない
静的な分、Cのマクロの方がましだ
静的型で出来なくて、動的型で出来ることの殆どは、悪手でしかない
結局人間にもわかりにくいし
実行速度を落としてまでサポートするほどの価値はない
動的型言語界隈から出てくるわけないので、どうでもよい
動的なメタプログラミングなど悪夢でしかなく、好まれるはずがない
静的な分、Cのマクロの方がましだ
静的型で出来なくて、動的型で出来ることの殆どは、悪手でしかない
結局人間にもわかりにくいし
実行速度を落としてまでサポートするほどの価値はない
995デフォルトの名無しさん
2017/08/28(月) 16:37:43.73ID:eoTPDlew Lispのマクロはメタプログラムに入りますか〜?
996デフォルトの名無しさん
2017/08/28(月) 19:04:21.49ID:nnMMDr4F997デフォルトの名無しさん
2017/08/28(月) 19:06:30.14ID:nnMMDr4F >>994
つまりあんたはOSをインストールしたら最後、プログラミングなんて一切しない人なんだね。
動的であることを拒否するということは、OS上でユーザは実行可能ファイルを一切生成することも上書きすることも許されないということだ。
IEでインターネットでもしてろw
つまりあんたはOSをインストールしたら最後、プログラミングなんて一切しない人なんだね。
動的であることを拒否するということは、OS上でユーザは実行可能ファイルを一切生成することも上書きすることも許されないということだ。
IEでインターネットでもしてろw
998デフォルトの名無しさん
2017/08/28(月) 19:41:37.27ID:hSp+oBxP と、このように関係のない的外れなことを言い出す
ゆるゆるなのは誰がどう見てもお前じゃねーか
ゆるゆるなのは誰がどう見てもお前じゃねーか
999デフォルトの名無しさん
2017/08/28(月) 19:48:51.91ID:hSp+oBxP 要するには何の区別も分別もついてないということだな
じゃなきゃそんな的外れなたとえ話w
そういった混沌とした状態の頭で生活をしていから
普段から、何もかも、何が何やらで
終いには全てのことが、どうでもよくなるんだろうな
悪循環だな
じゃなきゃそんな的外れなたとえ話w
そういった混沌とした状態の頭で生活をしていから
普段から、何もかも、何が何やらで
終いには全てのことが、どうでもよくなるんだろうな
悪循環だな
1000デフォルトの名無しさん
2017/08/28(月) 20:26:26.83ID:3Zs55+dM よく考えてみたらメタプログラミングってgoとかでコードを書くようになったから意識するようになった。php自体は意識しないで使ってたから。
静的言語、動的言語って分け方もよくなかったね。
静的言語だってマクロ機能があればメタプログラミングはある程度できる。
goだとreflectとか使わないとphpと同じことはできないしできたとしてもかなり苦しい。
結局言語機能が不足してるのが問題なんだよね。
TypeScriptはその点でかなり自由度が高かった
型の直和型と直積型を & と | を駆使して組み合わせられるから
かなり動的言語よりにコードを書ける。
let a :string|number|undefined;
とやるとstringの可能性とnumberの可能性とundeifnedの可能性がある型が作れる。
もちろん
if (typeof a === ‘string’) {
} else if (typeof a === ‘undefined’ ) {
} else {
// ここに来るのは絶対number型だとIDEも認識する。
}
とういう風にTypeGuardも完璧に動作する。
goはエコシステムがいいのにこういうのが充実してないからかなり苦しむことになる。
だからメタプログラミングは弱いって思ったんだけど
静的言語だから弱いって言うべきではなかったな。
静的言語、動的言語って分け方もよくなかったね。
静的言語だってマクロ機能があればメタプログラミングはある程度できる。
goだとreflectとか使わないとphpと同じことはできないしできたとしてもかなり苦しい。
結局言語機能が不足してるのが問題なんだよね。
TypeScriptはその点でかなり自由度が高かった
型の直和型と直積型を & と | を駆使して組み合わせられるから
かなり動的言語よりにコードを書ける。
let a :string|number|undefined;
とやるとstringの可能性とnumberの可能性とundeifnedの可能性がある型が作れる。
もちろん
if (typeof a === ‘string’) {
} else if (typeof a === ‘undefined’ ) {
} else {
// ここに来るのは絶対number型だとIDEも認識する。
}
とういう風にTypeGuardも完璧に動作する。
goはエコシステムがいいのにこういうのが充実してないからかなり苦しむことになる。
だからメタプログラミングは弱いって思ったんだけど
静的言語だから弱いって言うべきではなかったな。
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 76日 11時間 32分 19秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 76日 11時間 32分 19秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- ( ・᷄ὢ・᷅ )あ?
- 千葉県民だけどなんか地震あったらしいな
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- 秋田大学のホームページがつながらなくなって1日以上経つのだが
- 【速報】高市早苗、起床 [779938112]
