スレタイ以外の言語もok
前スレ
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1508403098/
次世代言語Part8[Haskell Rust Kotlin TypeScript]
■ このスレッドは過去ログ倉庫に格納されています
2017/12/01(金) 23:08:21.45ID:FxdZTiuZ
797デフォルトの名無しさん
2018/02/22(木) 04:32:43.91ID:+RpZ2cWG798デフォルトの名無しさん
2018/02/22(木) 05:41:36.72ID:ePT/3hrM nilに余計な意味を与えないための基準がnil安全なのでは?
799デフォルトの名無しさん
2018/02/22(木) 08:14:10.74ID:p8NiYEqx 同僚のコトリンのコードがビックリマークだらけで、こりゃだめだと思った
800デフォルトの名無しさん
2018/02/22(木) 08:54:55.92ID:MB1I4+Gh だから、便利に使わなければ良いと思うんだが。
参照にしない限りnilにはなれないし。
参照にしない限りnilにはなれないし。
801デフォルトの名無しさん
2018/02/22(木) 12:53:25.00ID:+RpZ2cWG802デフォルトの名無しさん
2018/02/22(木) 13:11:15.71ID:0cZDh8Nv 修理しない自由 vs. 修理する権利
803デフォルトの名無しさん
2018/02/22(木) 14:54:41.89ID:ei88pKkZ >>798
基準がどうこうって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である可能性が残っている
}
みたいな感じで書ける。?が使えると仮定
基準がどうこうって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である可能性が残っている
}
みたいな感じで書ける。?が使えると仮定
804デフォルトの名無しさん
2018/02/22(木) 16:43:44.83ID:ePT/3hrM >>803
しょぼ!
その例はnull安全の中でも一番弱いやつ。
書き方を気をつければnullを避けられるってだけ。
本物のnull安全はスコープ単位ではなく、型検査が通ればプログラムにnullによる誤りを完全に排除されるんだよ。Haskellのように。
しょぼ!
その例はnull安全の中でも一番弱いやつ。
書き方を気をつければnullを避けられるってだけ。
本物のnull安全はスコープ単位ではなく、型検査が通ればプログラムにnullによる誤りを完全に排除されるんだよ。Haskellのように。
805デフォルトの名無しさん
2018/02/22(木) 17:06:16.89ID:zGB/N5H/806デフォルトの名無しさん
2018/02/22(木) 18:59:35.60ID:MB1I4+Gh >>804
haskellはそんな事の前にもっと解決すべき問題を解決できる言語になってくれ。
haskellはそんな事の前にもっと解決すべき問題を解決できる言語になってくれ。
807デフォルトの名無しさん
2018/02/23(金) 01:19:34.60ID:i8nFKqus 動的型で解決できる問題はすべて静的型で解決できるし
もしこれが嘘八百だと証明されたとしてもそれはそれで大きな成果だし
いずれにせよHaskellは静的型の歴史に貢献している
もしこれが嘘八百だと証明されたとしてもそれはそれで大きな成果だし
いずれにせよHaskellは静的型の歴史に貢献している
808デフォルトの名無しさん
2018/02/23(金) 01:23:42.56ID:KFd5WK6x でも需要はハケスル(笑)<<<<<PHPで圧倒的な件w
809デフォルトの名無しさん
2018/02/23(金) 08:46:52.58ID:LZyM23a9 歴史に貢献するって、ラテン語でもあるまいし。
実用言語にしてよ。
実用言語にしてよ。
810デフォルトの名無しさん
2018/02/23(金) 10:35:29.52ID:fGTUWBf8 実在するだけでは不満か
実在すら怪しいものがあったらもっと不満だろ
実用よりも実在の方がモチベーションが強い
実在すら怪しいものがあったらもっと不満だろ
実用よりも実在の方がモチベーションが強い
811デフォルトの名無しさん
2018/02/23(金) 10:45:07.36ID:HJaUFAvs >>809
ラテン語は良い喩えだね。印欧語ヒエラルキーの上の方にいるし。
俗ラテン語を見て、どこが欠落してるかの見通しが良くなる。
Haskellも足りてないけどさ、型理論的に。そういう点でもラテン語あたりなのは妥当。
ラテン語は良い喩えだね。印欧語ヒエラルキーの上の方にいるし。
俗ラテン語を見て、どこが欠落してるかの見通しが良くなる。
Haskellも足りてないけどさ、型理論的に。そういう点でもラテン語あたりなのは妥当。
812デフォルトの名無しさん
2018/02/23(金) 11:35:44.21ID:2M6dxKUJ コンパイル時に解決できるならそれに越したことは無いが
そのための学習コストは増大する傾向にあるよね。
Elmはブラウザのviewに特化したDSLとして学習コストを抑えてる。
Rustもメモリリークを静的に解決しようとするけどそのためのコストはかなり高め。
何事もバランスだよね。
そのための学習コストは増大する傾向にあるよね。
Elmはブラウザのviewに特化したDSLとして学習コストを抑えてる。
Rustもメモリリークを静的に解決しようとするけどそのためのコストはかなり高め。
何事もバランスだよね。
813デフォルトの名無しさん
2018/02/23(金) 21:27:40.00ID:LZyM23a9 >>811
そう。
そんなに格いるか?確かにあれば便利だけど前置詞のほうが実質簡潔じゃねえの?とか、
今更ラテン語使う必要無いだろ。足りない語彙を現代語から借用するの?とか、
ヒエラルキーの上位と言うより、広がる枝の根本にほうっておかれた存在だろ。
全く次世代で無い。
そう。
そんなに格いるか?確かにあれば便利だけど前置詞のほうが実質簡潔じゃねえの?とか、
今更ラテン語使う必要無いだろ。足りない語彙を現代語から借用するの?とか、
ヒエラルキーの上位と言うより、広がる枝の根本にほうっておかれた存在だろ。
全く次世代で無い。
814デフォルトの名無しさん
2018/02/23(金) 22:03:17.49ID:GuloKGfV Haskellの熱心なアンチが全くのエアプだった事件があるので、そういう意見はHaskellに精通していることを示さないとなかなか受け入れられないと思うよ
815デフォルトの名無しさん
2018/02/23(金) 23:44:14.84ID:NePmI3sA まあカス仕様を必死に守るのにコストかけるくらいなら
goみたいにコンパイラの性能上げてもらった方がよっぽど有益だったりはする。
goみたいにコンパイラの性能上げてもらった方がよっぽど有益だったりはする。
816デフォルトの名無しさん
2018/02/24(土) 00:32:37.74ID:LvxjVVyK お、型付λアンチか?
817デフォルトの名無しさん
2018/02/24(土) 01:03:27.04ID:67+llEBF >>814
エアプって言葉好きだなぁ。
正直触ってダメ出ししたぐらいだけど、精通せんでも文句は言える。
ラーメン食いに行って「まずいわこれ」って言って、店主に「じゃあお前はこれ以上のラーメン作れんのかよ」「それだけラーメン食って言ってるのか?」ってキレられても困るだろ。
客観的にまずいもんはまずい。まずいと誤解されるものもその次にまずい。
エアプって言葉好きだなぁ。
正直触ってダメ出ししたぐらいだけど、精通せんでも文句は言える。
ラーメン食いに行って「まずいわこれ」って言って、店主に「じゃあお前はこれ以上のラーメン作れんのかよ」「それだけラーメン食って言ってるのか?」ってキレられても困るだろ。
客観的にまずいもんはまずい。まずいと誤解されるものもその次にまずい。
818デフォルトの名無しさん
2018/02/24(土) 01:06:09.79ID:67+llEBF 意識高い系のおもちゃとして使うんじゃなくて、なんか使えるプロダクト出してから言ってくれよな。
古代言語を次世代言語スレで出すんなら。
古代言語を次世代言語スレで出すんなら。
819デフォルトの名無しさん
2018/02/24(土) 01:21:53.07ID:ZueQv0Xl >>815
https://taiyaq.com/contents/YgxOd3YjadMa5c793O1j1d9VX
goの設計思想自体が依存関係解決の高速化だったりコンパイル速度優先の実装みたいだね。
ジェネリクスみたいなコンパイル時の計算速度に大きく影響を与える仕様はなさそうだ。
(あっても限定的な機能になりそう)
https://taiyaq.com/contents/YgxOd3YjadMa5c793O1j1d9VX
goの設計思想自体が依存関係解決の高速化だったりコンパイル速度優先の実装みたいだね。
ジェネリクスみたいなコンパイル時の計算速度に大きく影響を与える仕様はなさそうだ。
(あっても限定的な機能になりそう)
820デフォルトの名無しさん
2018/02/24(土) 02:01:52.41ID:9192Hwvs goにはクラス階層も無いんでしょ?ジェネリクス以外の多態が無いならまだ綺麗に導入できる可能性がある
swiftはバージョンアップで型推論を入れるようなスジの悪い進化を進めてるから好きになれんよ
swiftはバージョンアップで型推論を入れるようなスジの悪い進化を進めてるから好きになれんよ
821デフォルトの名無しさん
2018/02/24(土) 06:02:14.88ID:VvbK4X3N コンパイル速度優先の上で云々ということであれば
goがDelphi/FreePascalを超えてるかというのは正直疑問
goがDelphi/FreePascalを超えてるかというのは正直疑問
822デフォルトの名無しさん
2018/02/24(土) 07:01:37.55ID:VvbK4X3N >>820
goはinterfaceによる多態が既にあるから、そこにジェネリクス入れるとJava同様になるぞ
goはinterfaceによる多態が既にあるから、そこにジェネリクス入れるとJava同様になるぞ
823デフォルトの名無しさん
2018/02/24(土) 07:57:18.04ID:ZueQv0Xl >>821
現在も絶賛コンパイル速度更新中だからいいんじゃないの。
そもそもdelphiって古すぎて早く見えるってだけでは、、、?
>>822
interfaceを進化させるイメージでジェネリクスぽいものを作るんだろうね
現状複数のinterfaceを受け入れる可能性のある変数は空インターフェース(interface{})
(javaでいうところの何でもありのObject型みたいなの)
にするしかないのがツラミになってる。
ここを改善する方向に進化させるでしょう。
直積型をつくるのはできてるから直和型(union)をサポートして
someFunc(o interface{}) error {}
みたいなのを
someFunc(o A & B) error {}
someFunc(o A | B) error {}
みたいにできればいい。TypeScript好きだからこうなったら感動する
現在も絶賛コンパイル速度更新中だからいいんじゃないの。
そもそもdelphiって古すぎて早く見えるってだけでは、、、?
>>822
interfaceを進化させるイメージでジェネリクスぽいものを作るんだろうね
現状複数のinterfaceを受け入れる可能性のある変数は空インターフェース(interface{})
(javaでいうところの何でもありのObject型みたいなの)
にするしかないのがツラミになってる。
ここを改善する方向に進化させるでしょう。
直積型をつくるのはできてるから直和型(union)をサポートして
someFunc(o interface{}) error {}
みたいなのを
someFunc(o A & B) error {}
someFunc(o A | B) error {}
みたいにできればいい。TypeScript好きだからこうなったら感動する
824デフォルトの名無しさん
2018/02/24(土) 11:17:45.72ID:LvxjVVyK >>817
だっさw
だっさw
825デフォルトの名無しさん
2018/02/24(土) 11:20:37.36ID:pBIylWjV 古すぎて速いってのは正しい
あとはジェネリクスがない言語は古いと認識できたらもっと正しい
あとはジェネリクスがない言語は古いと認識できたらもっと正しい
826デフォルトの名無しさん
2018/02/24(土) 13:37:19.37ID:67+llEBF >>824
俺がダサいだけでhaskellが良くなって実プロダクト出てくるならいくらでもダサくなるわw
俺がダサいだけでhaskellが良くなって実プロダクト出てくるならいくらでもダサくなるわw
827デフォルトの名無しさん
2018/02/24(土) 14:17:08.41ID:4YJEYBsv 実はDelphiにはジェネリクスあるんだぜw
828デフォルトの名無しさん
2018/02/24(土) 14:17:22.06ID:WPlCcRak829デフォルトの名無しさん
2018/02/24(土) 14:39:08.92ID:ozvKRveg 言うほど変態か?
JSによるOOPの実装方法や、即値を型として扱うTypeScriptの特性を十分に理解してないと
new () => Tとかkeyofなんかは分かりにくいかもしれないけど、それはGenerics以前の問題だろ
基本的には必要以上の驚きのない自然な仕様だと思うよ
JSによるOOPの実装方法や、即値を型として扱うTypeScriptの特性を十分に理解してないと
new () => Tとかkeyofなんかは分かりにくいかもしれないけど、それはGenerics以前の問題だろ
基本的には必要以上の驚きのない自然な仕様だと思うよ
830デフォルトの名無しさん
2018/02/24(土) 15:23:35.50ID:ZueQv0Xl >>829
それくらいならいいけどさ
https://qiita.com/Quramy/items/b45711789605ef9f96de
とか見てみると分かる。
辛いのはユーザ側だとしてもエラーメッセージで巻き込まれることないだよね。
ジェネリクス関連のエラーで一発で問題がわかったことが殆ど無い。
それくらいならいいけどさ
https://qiita.com/Quramy/items/b45711789605ef9f96de
とか見てみると分かる。
辛いのはユーザ側だとしてもエラーメッセージで巻き込まれることないだよね。
ジェネリクス関連のエラーで一発で問題がわかったことが殆ど無い。
831デフォルトの名無しさん
2018/02/24(土) 15:44:01.13ID:ozvKRveg832デフォルトの名無しさん
2018/02/24(土) 16:50:37.88ID:ZueQv0Xl833デフォルトの名無しさん
2018/02/24(土) 17:03:15.17ID:ZueQv0Xl >>832
こういうエラーメッセージと戦うのが辛いのって結局途中経過を追えないってことなんだよね。
goはコードジェネレート前提だったりする。
そっちだと分かりやすいコードを吐いてくれれば追いやすい。
こういうエラーメッセージと戦うのが辛いのって結局途中経過を追えないってことなんだよね。
goはコードジェネレート前提だったりする。
そっちだと分かりやすいコードを吐いてくれれば追いやすい。
834デフォルトの名無しさん
2018/02/24(土) 17:08:20.40ID:yL1hQTQw835デフォルトの名無しさん
2018/02/24(土) 17:08:38.51ID:cWB/7seJ >>832
これは酷いTypeScriptは糞
これは酷いTypeScriptは糞
>>832
C++ とて似たようなものだ、ジェネリクスのエラーメッセージは総じて汚らしい
C++ とて似たようなものだ、ジェネリクスのエラーメッセージは総じて汚らしい
837デフォルトの名無しさん
2018/02/24(土) 17:15:40.58ID:NYPMK72i >>834はコンパイルがクソ遅い言語に対しても
問題は言語仕様じゃなくてコンパイラの所為だと思ってそう
問題は言語仕様じゃなくてコンパイラの所為だと思ってそう
838デフォルトの名無しさん
2018/02/24(土) 17:26:03.56ID:WPlCcRak839デフォルトの名無しさん
2018/02/24(土) 17:29:02.21ID:WPlCcRak >>836
これ。ジェネリクスは人間に牙を向くのが辛い。ライブラリ開発者でうまくエラーをラップできたりすれば良いんだけどね。
これ。ジェネリクスは人間に牙を向くのが辛い。ライブラリ開発者でうまくエラーをラップできたりすれば良いんだけどね。
840デフォルトの名無しさん
2018/02/24(土) 17:43:47.02ID:yL1hQTQw >>832が分かりにくいのって、structual-subtypingで特定のメンバの型に互換性がないのを
「型同士の互換性」の単位で出力してしまってるからじゃないか?
TypeScriptならVSCodeに代入元と代入先の型を展開した状態で比較するビューが付けば解決だと思う
「型同士の互換性」の単位で出力してしまってるからじゃないか?
TypeScriptならVSCodeに代入元と代入先の型を展開した状態で比較するビューが付けば解決だと思う
841デフォルトの名無しさん
2018/02/24(土) 17:51:04.11ID:ZueQv0Xl842デフォルトの名無しさん
2018/02/24(土) 17:54:41.90ID:ZueQv0Xl ちなみに >>832 のエラーはTypeScript2.5.3では出ない。2.6以降にすると出るようになる。
コードとしては何の問題もなく動くんだよね。
バージョン上げるたびに修正するのしんどくて放置してる。
コードとしては何の問題もなく動くんだよね。
バージョン上げるたびに修正するのしんどくて放置してる。
843デフォルトの名無しさん
2018/02/24(土) 18:11:51.54ID:67+llEBF そのうちまた型システムだけでチューリング完全になるんじゃねえの?
844デフォルトの名無しさん
2018/02/24(土) 19:33:38.61ID:OJHwttVu チュリ完だと何の不都合ですか?
845デフォルトの名無しさん
2018/02/24(土) 20:27:10.88ID:67+llEBF する必要の無いものをチューリング完全にしてしまったが故にえらいことになったプロジェクト見てきたし、
そもそもコンパイルの時点で無限ループしかねないとかどんな闇言語だよって話になってくるじゃん。
Scalaも型システムだけでコンパイラ止めれたっけ。
そもそもコンパイルの時点で無限ループしかねないとかどんな闇言語だよって話になってくるじゃん。
Scalaも型システムだけでコンパイラ止めれたっけ。
846デフォルトの名無しさん
2018/02/24(土) 21:39:56.69ID:Wx4opHQO c/c++ のヘッダ処理なんかもデバッグしやすくするのとコンパイル効率は
かなりトレードオフがあるってのが一般的。
だから visual studio が内部で変なことガツガツやってるわけで。
そんなもん2、3年本気で仕事すりゃわかることだろうと思うんだが
なぜか理論よりの人間は事実を認めない傾向にある。
かなりトレードオフがあるってのが一般的。
だから visual studio が内部で変なことガツガツやってるわけで。
そんなもん2、3年本気で仕事すりゃわかることだろうと思うんだが
なぜか理論よりの人間は事実を認めない傾向にある。
847デフォルトの名無しさん
2018/02/24(土) 22:16:50.94ID:8UiUrtqZ チュリ完であることそれ自体が問題なのではなく、デバッグ回りが弱すぎるのが問題なのだ
848デフォルトの名無しさん
2018/02/24(土) 22:36:20.17ID:CuRF79s8 >する必要の無いものをチューリング完全にしてしまったが故にえらいことになったプロジェクト見てきたし、
それ、「えらいことになった」原因が本当にチューリング完全のせいだったのかね。
それ、「えらいことになった」原因が本当にチューリング完全のせいだったのかね。
849デフォルトの名無しさん
2018/02/24(土) 22:55:49.93ID:WPlCcRak 少なくともc,c++の依存関係解決の遅さの解決のためにgoが生まれたってのがgoogleの言い分なわけだし、遅いは遅いんじゃないの。
goにプリプロセッサが無いのも意味があるわけで。
goにプリプロセッサが無いのも意味があるわけで。
850デフォルトの名無しさん
2018/02/24(土) 23:31:49.65ID:8UiUrtqZ まあ遅いは遅いな。それはそうだ
851デフォルトの名無しさん
2018/02/25(日) 00:02:11.41ID:/LdYt4iz ちなみにredoxというrustで書かれたosはコンパイルは早いんだろうか。lunuxと単純比較はできないだろうけども
852デフォルトの名無しさん
2018/02/25(日) 01:39:43.29ID:i5g4VWIk >>848
そうだよ。何を想像してるかわからんけど。
そうだよ。何を想像してるかわからんけど。
853デフォルトの名無しさん
2018/02/25(日) 07:45:46.39ID:Pn1I1KPs そりゃチューリング完全であることが問題なんじゃなくてそのチームに問題があったんだろ。
世の中にチューリング完全なシステム(言語)は腐るほどあるわけだし。
世の中にチューリング完全なシステム(言語)は腐るほどあるわけだし。
854デフォルトの名無しさん
2018/02/25(日) 08:04:15.51ID:MHQfhChM なんでも「チームが悪い」と言えばいいのだから簡単だな。ばーか
855デフォルトの名無しさん
2018/02/25(日) 09:34:28.35ID:5I/H3HR9 できちゃうことが問題なんじゃないの
c++の型システムがチューリング完全だと自分たちだけがコンパイル速度に気をつけても
依存しているサードパーティライブラリまでは保証できないでしょ。
だったら言語側で制限がかかっておいてほしいって話。
Cの依存性解決も#ifdefを駆使してプリプロセッサの自由度を持って後付で解決していた。
プリプロセッサ自体便利なものだけど、それが原因でコンパイル速度の低下を招いた。
というのが >>819 に書いてる。
汎用性がある機能はなんでもできるからこそ、コンパイル速度を落としたり迷惑を書けることも可能。
swiftもGoも後発言語だけどプリプロセッサのってないもの
rustのマクロの自由度は知らんけども。
c++の型システムがチューリング完全だと自分たちだけがコンパイル速度に気をつけても
依存しているサードパーティライブラリまでは保証できないでしょ。
だったら言語側で制限がかかっておいてほしいって話。
Cの依存性解決も#ifdefを駆使してプリプロセッサの自由度を持って後付で解決していた。
プリプロセッサ自体便利なものだけど、それが原因でコンパイル速度の低下を招いた。
というのが >>819 に書いてる。
汎用性がある機能はなんでもできるからこそ、コンパイル速度を落としたり迷惑を書けることも可能。
swiftもGoも後発言語だけどプリプロセッサのってないもの
rustのマクロの自由度は知らんけども。
856デフォルトの名無しさん
2018/02/25(日) 10:45:11.82ID:AkGT52Is テンプレートやマクロで無茶をする奴が
コードジェネレータで無茶するようになるだけ
コードジェネレータで無茶するようになるだけ
857デフォルトの名無しさん
2018/02/25(日) 11:03:44.36ID:5I/H3HR9 >>856
少なくともGoのgenereateはコンパイル時毎回動くわけじゃないから。
少なくともGoのgenereateはコンパイル時毎回動くわけじゃないから。
858デフォルトの名無しさん
2018/02/25(日) 11:41:56.21ID:oFPVlXbE あるC++のファイルを変更したら
そのファイルがincludeした全てのコードを再コンパイルする
型情報のみをincludeすればいいのに型ではない値とコードが大量に入ってる
この値とコードが原因だよね
チューリング完全はそこから生じた結果の一つ
そのファイルがincludeした全てのコードを再コンパイルする
型情報のみをincludeすればいいのに型ではない値とコードが大量に入ってる
この値とコードが原因だよね
チューリング完全はそこから生じた結果の一つ
859デフォルトの名無しさん
2018/02/25(日) 12:11:15.59ID:hhzTCNKn >>849
すまん、プリプリセッサって何ンゴ?
すまん、プリプリセッサって何ンゴ?
860デフォルトの名無しさん
2018/02/25(日) 12:35:19.43ID:SIGvHUUj プリケツセッサ
861デフォルトの名無しさん
2018/02/25(日) 12:38:14.47ID:XjF3qDop prepresessor
862デフォルトの名無しさん
2018/02/25(日) 14:15:34.84ID:dV634vWG >>859
rustでいうマクロみたいなもの
コンパイル前に文字列操作を行ってコードを改変する。
結構なんでもできるから重たい操作を行うとコンパイル時間に影響する。
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5
rustでいうマクロみたいなもの
コンパイル前に文字列操作を行ってコードを改変する。
結構なんでもできるから重たい操作を行うとコンパイル時間に影響する。
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5
863デフォルトの名無しさん
2018/02/25(日) 15:09:03.97ID:SIGvHUUj それはプリプロセッサや〜〜!!!
864デフォルトの名無しさん
2018/02/25(日) 15:13:14.53ID:iLEoqX9J865デフォルトの名無しさん
2018/02/25(日) 16:03:19.53ID:jkdNIq8n >>858
それはちょっと違う
そもそも今時フルコンパイルなんてそんなに重いものではない
C++がまずいのは、includeしたヘッダのコンパイル結果をコンパイル単位(.cpp)を跨って共有できないことだ
プリプロセッサのせいで毎回変わる可能性があるからな
それはちょっと違う
そもそも今時フルコンパイルなんてそんなに重いものではない
C++がまずいのは、includeしたヘッダのコンパイル結果をコンパイル単位(.cpp)を跨って共有できないことだ
プリプロセッサのせいで毎回変わる可能性があるからな
866デフォルトの名無しさん
2018/02/25(日) 16:17:08.31ID:UX7CM2uT867デフォルトの名無しさん
2018/02/25(日) 16:45:30.82ID:u3kGuI4S 間違ってはない
868デフォルトの名無しさん
2018/02/25(日) 17:25:46.72ID:eL53m5ic リーナスはもともとアセンブラーやからのうwww
Cは複数のCPUのアーキテクチャーに適応するためにどうにゅうしたわけやしのうww
Cは複数のCPUのアーキテクチャーに適応するためにどうにゅうしたわけやしのうww
869デフォルトの名無しさん
2018/02/25(日) 17:45:40.47ID:ZzND0YhV c++はいつになったら#importを導入するんだ……
870デフォルトの名無しさん
2018/02/25(日) 18:22:22.98ID:iLEoqX9J linux もだいぶヘッダマクロでテンプレみたいなことはやってる。
もちろん型安全ではないがそれでもc++のテンプレート使うよりマシという判断をしてるわけだよ。
もちろん型安全ではないがそれでもc++のテンプレート使うよりマシという判断をしてるわけだよ。
871デフォルトの名無しさん
2018/02/25(日) 20:57:01.90ID:Sac3cGbb >>865
それやったらODR違反
それやったらODR違反
872デフォルトの名無しさん
2018/02/25(日) 22:23:17.24ID:hhzTCNKn >>862
メメタァプロプロミングってやつンゴか?
メメタァプロプロミングってやつンゴか?
873デフォルトの名無しさん
2018/02/26(月) 01:07:52.73ID:NUAGFWAP jsのhyperappみたいに300行くらいでreact + reduxなライブラリを作ったように
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?
874デフォルトの名無しさん
2018/02/26(月) 01:08:12.13ID:NUAGFWAP jsのhyperappみたいに300行くらいでreact + reduxなライブラリを作ったように
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?
haskellでも小さなコードですごいことをしてみせる実用ライブラリってあるかな?
875デフォルトの名無しさん
2018/02/26(月) 01:59:20.48ID:RBbBnG6R すごいことってなんだか感情的だな
実用というのも感情かもしれない
実用というのも感情かもしれない
876デフォルトの名無しさん
2018/02/26(月) 05:56:26.51ID:KYXdLiJx コードから改行をスペースに変換して一行にするライブラリーを作ればいい。
877デフォルトの名無しさん
2018/02/26(月) 11:09:00.46ID:AYoEpEU8 プリプロセッサは遅くないぞ
C++のテンプレートやコンパイル時処理のほうがよっぽど遅い
RustもSwiftもプリプロセッサを排除する代わりにC++と同じようなことをやってる
C++のテンプレートやコンパイル時処理のほうがよっぽど遅い
RustもSwiftもプリプロセッサを排除する代わりにC++と同じようなことをやってる
878デフォルトの名無しさん
2018/02/26(月) 11:28:37.86ID:OBKUk/zi879デフォルトの名無しさん
2018/02/26(月) 11:57:47.68ID:LqmnPPXl コンパイル単位ってコンパイル高速化するためのものと思ってたんだけど、今は無い方が速いのか?
880デフォルトの名無しさん
2018/02/26(月) 11:58:09.67ID:tiI6jRqU 文字列処理は結果をファイルに保存して再利用しやすい
クラスやオブジェクトの処理はファイルシステムと連携が難しい
かといってファイルシステムがない環境でも動くコンパイラを作る意欲もなさそう
クラスやオブジェクトの処理はファイルシステムと連携が難しい
かといってファイルシステムがない環境でも動くコンパイラを作る意欲もなさそう
881デフォルトの名無しさん
2018/02/26(月) 13:46:15.14ID:IYGVTnOb882デフォルトの名無しさん
2018/02/26(月) 13:50:29.38ID:IYGVTnOb >>875
jsのhyperappに感動してしまったから
感情的になってしまった。
300行でしかも比較的読みやすいコードで
react+reduxなライブラリが作れたことにびっくりしたんす。
勉強用の教材としてもうってつけ。
こういうのが他の言語のライブラリでもないかなと思って。
jsのhyperappに感動してしまったから
感情的になってしまった。
300行でしかも比較的読みやすいコードで
react+reduxなライブラリが作れたことにびっくりしたんす。
勉強用の教材としてもうってつけ。
こういうのが他の言語のライブラリでもないかなと思って。
883デフォルトの名無しさん
2018/02/26(月) 16:02:15.05ID:CBNL7amJ884デフォルトの名無しさん
2018/02/26(月) 20:55:59.83ID:2he6fwHk じゃあお前だけ並列コンパイル禁止な
>>883
make -j での高速コンパイルに感動することしきりです、いつか 32thread な CPU を買おうと思っています
make -j での高速コンパイルに感動することしきりです、いつか 32thread な CPU を買おうと思っています
886デフォルトの名無しさん
2018/02/26(月) 22:24:02.68ID:FUm7ZUuj なぜかプログラマー板に立って放置されてる
nimのスレ立てるか
nimのスレ立てるか
887デフォルトの名無しさん
2018/02/26(月) 22:29:16.70ID:eKoH1eQ3 頼む
888デフォルトの名無しさん
2018/02/26(月) 22:43:29.59ID:+1zKWNLy boost 大好きな奴がビルドのベストプラクティスとして
1ファイルに全て書く言うてたな。
バカとしか言いようがないが面倒だから黙ってた。
1ファイルに全て書く言うてたな。
バカとしか言いようがないが面倒だから黙ってた。
889デフォルトの名無しさん
2018/02/26(月) 23:37:01.37ID:hKYTqf2f 小規模なら1ファイルに全て書いても問題ない
普通に書いたら数百とか数千ファイルになるようなものなら馬鹿で間違いない
普通に書いたら数百とか数千ファイルになるようなものなら馬鹿で間違いない
890デフォルトの名無しさん
2018/02/26(月) 23:38:45.60ID:vKciEg6e インターフェースとその実装とかは、小規模なら同じファイルに書いてるのもよく見かける
891デフォルトの名無しさん
2018/02/27(火) 03:24:43.50ID:Rnz77xQ6 世の中にはhaskell使い結構居るっぽいのになんでここには全く居ないんだ
githubやstackoverflowまで行かないと出会えんのか
githubやstackoverflowまで行かないと出会えんのか
892デフォルトの名無しさん
2018/02/27(火) 05:49:52.64ID:5KO97NM4 一つのファイルに書かなくても
複数のファイルをつなげて一つにするプログラム書けばいいだろ
そのやつ馬鹿やんなwww
複数のファイルをつなげて一つにするプログラム書けばいいだろ
そのやつ馬鹿やんなwww
893デフォルトの名無しさん
2018/02/27(火) 05:53:33.06ID:5KO97NM4 昔の偉い人はトップのファイルにだけインクルードを書く手法をつかったらしいからな。
これは複数のファイルを一つにつなげるプログラムとおなじことやんな。
これは複数のファイルを一つにつなげるプログラムとおなじことやんな。
894デフォルトの名無しさん
2018/02/27(火) 11:03:33.84ID:P8RgwK6u 今の偉い人はLTOに任せます
895デフォルトの名無しさん
2018/02/27(火) 11:58:06.25ID:hiD/gfTg 分割できないのはC++のtemplateだけ
Cは問題ないからほとんどの言語はCのライブラリに依存する
他言語から利用するならさすがにファイル分割せざるをえない
Cは問題ないからほとんどの言語はCのライブラリに依存する
他言語から利用するならさすがにファイル分割せざるをえない
896デフォルトの名無しさん
2018/02/27(火) 12:49:23.86ID:cuAUxW5W templateって分割できないの?分割してる俺は異端だったか
■ このスレッドは過去ログ倉庫に格納されています
