C++は、C++20で、また劇的に変わりそうなのね。ますます関数型、ますますコンパイル時計算島倉千代子\(^O^)/
2019-03-10


ASAHIネット([URL] )のjouwa/salonから。
---
 次の記事を読むと、おそらくほぼこれがC++20に入りそうですね。
[URL]
2019-02 Kona ISO C++ Committee Trip Report (C++20 design is complete; Modules in C++20; Coroutines in C++20; Reflection TS v1 published; work begins on a C++ Ecosystem Technical Report)

 C++20の概要は、こちらにもある。
[URL]
C++20
cpprefjp - C++日本語リファレンス
 高橋晶さんをはじめ、「cpprefjp - C++日本語リファレンス」を編集している方々には、ほんと感謝してもしきれない。ありがとうございます。

 上記、報告書「Kona ISO C++ Committee Trip Report」で注目したもの。

・Contract
 ぼくが知る限り、契約プログラミング(Programming By Contract)、あるいは、契約による設計(Design By Contract)のための機能をコンパイラの言語仕様で入れたのは、Eiffelが最初。
 C++20は、コンパイラの言語仕様ではなく、ライブラリによる実装の標準化。

[URL]契約プログラミング

・Ranges
 Rangesは、Range-V3が評判だったRangesを正式に取り込んだ。
 関数型プログラミング、少なくとも、そのイディオムの使用が、ますますやりやすくなった。

[URL]
Range-v3
にある利用例をみると、関数型言語によるメソッドチェーンの記述か、Unixのshellでやる、パイプを使ってフィルタの連続的につなぐやり方にしかみえない。

 ただ、Microsft(MS)のVisual StudioのC++コンパイラは、少なくとも去年の5月くらいでは、Range-V3がそのままコンパイルできなかった。それで、MSはコンパイルできるように手直しをしたものを、自分たちで配っていた。それくらい人気のあるライブラリだったということでしょう。

・constexpr, consteval
 constexprtつけまくりになり、constevalまで入ってコンパイル時計算島倉千代子\(^O^)/
 改めて探さないけれど、以前、constexpr島倉千代子で、コンパイル時にマンデルブロ集合を計算するコードを書けるライブラリがあった。
 作ったのは日本人だったと記憶している。(いい意味)でやりすぎよ。\(^O^)/
 昔、まだ16bit PCのころには、マンデルブロ集合の計算をやって、きれいなグラフィックを表示するのが流行ったことがある。でも、この計算は、時間がかかるんだよね。
 コンパイル時計算だと、コンパイルには、めっちゃ時間がかかるけど、結果を得るのは、一瞬よ。\(^O^)/
 コンパイル時に時間がかかっても、実行時にスピードが上がるならやるというのが、Modern C++の方針だったが、C++20でconstevalまで入れて、完全にその方向に開き直ったね。\(^O^)/

 やっぱり、探してみた。
 スライドがあった。
 ライブラリの名前はSproutだ。Sprout C++ Library (constexpr ライブラリ)
 そうそう、コンパイル時レイトレーシングだ。
 作ったのは、村上 原野 (むらかみ げんや) さん。
 とんでもないなあ。
[URL]
すごい constexpr たのしくレイトレ!

 村上さんは、岡山だって。じゃ、情報省のスパイ\(^O^)/
 なぜか。あまりに、おれが、九州、山口、沖縄出身者が、各界を席巻しているし、国会開催中や安倍ちゃん(安倍晋三首相)がヤバそうなとき、九州、山口、沖縄の話題が全国ニュースになり、安倍ちゃんへの報道が減るように、情報省が情報爆発攻撃、情報洪水攻撃をしかけていると指摘してきたせいか、去年くらいから、岡山のネタを出すことが多くなってるんです。
 なぜ、岡山か。岡山の情報省トップ、中村正三郎の親戚が多いから。\(^O^)/

関連:
[URL]

続きを読む


コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット