C++は、C++20で、また劇的に変わりそうなのね。ますます関数型、ますますコンパイル時計算島倉千代子\(^O^)/ ― 2019年03月10日 23時43分53秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
次の記事を読むと、おそらくほぼこれがC++20に入りそうですね。
https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/
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の概要は、こちらにもある。
https://cpprefjp.github.io/lang/cpp20.html
C++20
cpprefjp - C++日本語リファレンス
高橋晶さんをはじめ、「cpprefjp - C++日本語リファレンス」を編集している方々には、ほんと感謝してもしきれない。ありがとうございます。
上記、報告書「Kona ISO C++ Committee Trip Report」で注目したもの。
・Contract
ぼくが知る限り、契約プログラミング(Programming By Contract)、あるいは、契約による設計(Design By Contract)のための機能をコンパイラの言語仕様で入れたのは、Eiffelが最初。
C++20は、コンパイラの言語仕様ではなく、ライブラリによる実装の標準化。
https://ja.wikipedia.org/wiki/契約プログラミング
・Ranges
Rangesは、Range-V3が評判だったRangesを正式に取り込んだ。
関数型プログラミング、少なくとも、そのイディオムの使用が、ますますやりやすくなった。
https://ericniebler.github.io/range-v3/
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 ライブラリ)
そうそう、コンパイル時レイトレーシングだ。
作ったのは、村上 原野 (むらかみ げんや) さん。
とんでもないなあ。
https://www.slideshare.net/GenyaMurakami/constexpr-29223898
すごい constexpr たのしくレイトレ!
村上さんは、岡山だって。じゃ、情報省のスパイ\(^O^)/
なぜか。あまりに、おれが、九州、山口、沖縄出身者が、各界を席巻しているし、国会開催中や安倍ちゃん(安倍晋三首相)がヤバそうなとき、九州、山口、沖縄の話題が全国ニュースになり、安倍ちゃんへの報道が減るように、情報省が情報爆発攻撃、情報洪水攻撃をしかけていると指摘してきたせいか、去年くらいから、岡山のネタを出すことが多くなってるんです。
なぜ、岡山か。岡山の情報省トップ、中村正三郎の親戚が多いから。\(^O^)/
関連:
http://iiyu.asablo.jp/blog/2019/02/27/9041626
C++17まで対応の「C++ポケットリファレンス」の改訂第3版が出ていたことに、やっと気づいた\(^O^)/
http://iiyu.asablo.jp/blog/2018/10/16/8975329
C++テンプレートプログラミングの定番本の第2版、C++ Templates The Complete Guide Second Edition
http://iiyu.asablo.jp/blog/2018/08/15/8942252
モダンC++(Modern C++):江添亮の詳説C++17
http://iiyu.asablo.jp/blog/2018/08/14/8941408
C++の劇的な進化に圧倒されるModern C++
http://iiyu.asablo.jp/blog/2018/06/05/8875815
Exceptional C++―47のクイズ形式によるプログラム問題と解法。この本は古いので、C++11以降のモダンなC++の本をあれこれ。
http://iiyu.asablo.jp/blog/2017/06/20/8600969
C++の実装状況、言語機能、リファレンス。Effective Modern C++――C++11/14プログラムを進化させる42項目
http://iiyu.asablo.jp/blog/2017/06/03/8584002
基礎からしっかり学ぶC++の教科書 C++14対応、Optimized C++、C++ ポケットリファレンス、改訂新版 C++ポケットリファレンス
http://iiyu.asablo.jp/blog/2017/05/23/8572667
型推論。C++の型推論なら「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」が必読。オライリー・ジャパンで買った、この本の電子書籍のことも
http://iiyu.asablo.jp/blog/2016/04/08/8067423
C++の解説本、STL, Effectvieシリーズ、ゲームプログラマのためのコーディング技術、リーダブルコード、Code Complete, コーディングを支える技術
http://iiyu.asablo.jp/blog/2015/09/25/7812131
マーティン・レディ著「C++のためのAPIデザイン」
http://iiyu.asablo.jp/blog/2015/09/25/7812140
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、C++11/14コア言語
http://iiyu.asablo.jp/blog/2014/09/26/7443432
Effective Modern C++, C++11, C++14。C++ Multithreading Cookbook。ICT業界の技術者が、若いときにやっておくべきこと。
ネタ:
http://iiyu.asablo.jp/blog/2017/02/14/8360963
C++ std::stringが、こうやったら、最強やのぉ。
---
次の記事を読むと、おそらくほぼこれがC++20に入りそうですね。
https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/
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の概要は、こちらにもある。
https://cpprefjp.github.io/lang/cpp20.html
C++20
cpprefjp - C++日本語リファレンス
高橋晶さんをはじめ、「cpprefjp - C++日本語リファレンス」を編集している方々には、ほんと感謝してもしきれない。ありがとうございます。
上記、報告書「Kona ISO C++ Committee Trip Report」で注目したもの。
・Contract
ぼくが知る限り、契約プログラミング(Programming By Contract)、あるいは、契約による設計(Design By Contract)のための機能をコンパイラの言語仕様で入れたのは、Eiffelが最初。
C++20は、コンパイラの言語仕様ではなく、ライブラリによる実装の標準化。
https://ja.wikipedia.org/wiki/契約プログラミング
・Ranges
Rangesは、Range-V3が評判だったRangesを正式に取り込んだ。
関数型プログラミング、少なくとも、そのイディオムの使用が、ますますやりやすくなった。
https://ericniebler.github.io/range-v3/
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 ライブラリ)
そうそう、コンパイル時レイトレーシングだ。
作ったのは、村上 原野 (むらかみ げんや) さん。
とんでもないなあ。
https://www.slideshare.net/GenyaMurakami/constexpr-29223898
すごい constexpr たのしくレイトレ!
村上さんは、岡山だって。じゃ、情報省のスパイ\(^O^)/
なぜか。あまりに、おれが、九州、山口、沖縄出身者が、各界を席巻しているし、国会開催中や安倍ちゃん(安倍晋三首相)がヤバそうなとき、九州、山口、沖縄の話題が全国ニュースになり、安倍ちゃんへの報道が減るように、情報省が情報爆発攻撃、情報洪水攻撃をしかけていると指摘してきたせいか、去年くらいから、岡山のネタを出すことが多くなってるんです。
なぜ、岡山か。岡山の情報省トップ、中村正三郎の親戚が多いから。\(^O^)/
関連:
http://iiyu.asablo.jp/blog/2019/02/27/9041626
C++17まで対応の「C++ポケットリファレンス」の改訂第3版が出ていたことに、やっと気づいた\(^O^)/
http://iiyu.asablo.jp/blog/2018/10/16/8975329
C++テンプレートプログラミングの定番本の第2版、C++ Templates The Complete Guide Second Edition
http://iiyu.asablo.jp/blog/2018/08/15/8942252
モダンC++(Modern C++):江添亮の詳説C++17
http://iiyu.asablo.jp/blog/2018/08/14/8941408
C++の劇的な進化に圧倒されるModern C++
http://iiyu.asablo.jp/blog/2018/06/05/8875815
Exceptional C++―47のクイズ形式によるプログラム問題と解法。この本は古いので、C++11以降のモダンなC++の本をあれこれ。
http://iiyu.asablo.jp/blog/2017/06/20/8600969
C++の実装状況、言語機能、リファレンス。Effective Modern C++――C++11/14プログラムを進化させる42項目
http://iiyu.asablo.jp/blog/2017/06/03/8584002
基礎からしっかり学ぶC++の教科書 C++14対応、Optimized C++、C++ ポケットリファレンス、改訂新版 C++ポケットリファレンス
http://iiyu.asablo.jp/blog/2017/05/23/8572667
型推論。C++の型推論なら「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」が必読。オライリー・ジャパンで買った、この本の電子書籍のことも
http://iiyu.asablo.jp/blog/2016/04/08/8067423
C++の解説本、STL, Effectvieシリーズ、ゲームプログラマのためのコーディング技術、リーダブルコード、Code Complete, コーディングを支える技術
http://iiyu.asablo.jp/blog/2015/09/25/7812131
マーティン・レディ著「C++のためのAPIデザイン」
http://iiyu.asablo.jp/blog/2015/09/25/7812140
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、C++11/14コア言語
http://iiyu.asablo.jp/blog/2014/09/26/7443432
Effective Modern C++, C++11, C++14。C++ Multithreading Cookbook。ICT業界の技術者が、若いときにやっておくべきこと。
ネタ:
http://iiyu.asablo.jp/blog/2017/02/14/8360963
C++ std::stringが、こうやったら、最強やのぉ。
最近のコメント