型推論。C++の型推論なら「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」が必読。オライリー・ジャパンで買った、この本の電子書籍のことも ― 2017年05月23日 08時49分18秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
型推論のことを簡単に。
静的な型付けと、動的型付けくらいは、知っているものとして。
https://ja.wikipedia.org/wiki/静的型付け
https://ja.wikipedia.org/wiki/動的型付け
静型付けは、強い型付け、コンパイル時型付けともいわれ、コンパイル時に型チェックをやって、型に反するエラーを検出して、バグを減らす考え。大規模開発だと特に有効といわれる。反面、自由度が低いので。実行時にいろいろ変化させたい、メタプログラミング的なことはやりにくい。
動的型付けは、弱い型付け、実行時型付けともいわれ、草分けは、Lispでしょうが、その後、多くのスクリプト言語も動的型付けをやっています。処理系の実装がやりやすいし、インタープリタ系は、大体、動的型付け。メリット・デメリットは、静型付けと逆。
静型付けの言語に、ジェネリスクス(Generics, C++でいえば、テンプレート)を入れると、話がややこしくなる。
たとえば、コンテナや関数宣言に型パラメータが必要になり、記述が複雑化する。
C++で、テンプレートを使ったとき、コンパイルエラーやデバッガで、訳がわからん型が表示されてうんざりした経験は、みんな、あると思います。
複雑な宣言を少なく、あるいはまったく不要にして、プログラマの負担を軽減して、あたかも、動的型付けの言語のように簡単に書けるようにするのが、型推論。
型推論自体は、関数型プログラミング言語で発達してきました。
オブジェクト指向と関数型のいいとこ取りのScalaは、最初から型推論があるので、JavaやC++に比べ、非常に少ない記述で、強力な型チェックがコンパイル時にできます。
最近のJavaやC++などは、ラムダ式といって、Lispでいうクロージャ(あるいは類似物)が書けるようになり、ライブラリの仕様も関数型プログラミングのスタイルを後押しするようになりましたが、その場で、簡単に関数リテラルが書けないとありがたみがありません。
関数リテラルを書くのに、型パラメータを指定してコンテナを書いたり、複雑な記述をしないといけないのでは、使う気が失せます。
使う気にさせるのが、型推論。
https://ja.wikipedia.org/wiki/型推論
たとえば、JavaはJava 7から、ダイヤモンド・オペレーターによる型推論が入っていますが、この機能は、BorlandのJBuilderのコンパイラには、10年以上前から入っていたと記憶しています。Java 7でやっと正式対応。Java 8でラムダ式が入ったので、今後も、あれこれ、強化されるでしょう。
C++でも、C++11からラムダ式が入ったので、auto宣言による型推論が入っています。
C#にもありますし、最近の静的型付け言語は、ほとんど装備していると思います。
C++の型推論とautoについては、
Scott Meyers「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」
の第1章、第2章が非常に詳しいです。
https://www.amazon.co.jp/exec/obidos/ASIN/4873117364/showshotcorne-22/
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
大型本 2015/9/18
Scott Meyers (著), 千住 治郎 (翻訳)
オライリージャパンにある紹介。
http://www.oreilly.co.jp/books/9784873117362/
Effective Modern C++――C++11/14プログラムを進化させる42項目
Scott Meyers 著、千住 治郎 訳
2015年09月 発行
Scott Meyersさんは、古きよきC++時代から、その解説に定評があります。
コンパイラが何をやり、どう推論するかのメカニズムや、型推論機能を最大限に生かして、型安全なプログラムを楽に書くには、どうすべきが詳しく書いてあります。
autoに任せず、自分で型を書いて、うっかりミスをすると、無駄なコードが生成され、実行時に無駄な実行が行なわれてしまう話も出てきます。
Scott Meyersさんは、面倒なことはコンピュータにやらせる考え。
autoを使えばいいし、どういう型に推論されているか不安なら、最近のIDEは、推論された型を表示できるので、それで確認すればいいと。
型推論だけではなく、C++11/C++14をうまく使って、楽にいいコードを書くにはどうすればいいかの話が満載です。
この本は、紙書籍を、オライリー・ジャパンの矢野さんから、献本してもらっていますが、最近、日本の出版社の電子書籍、特に索引がどうなっているかを調べているので、オライリー・ジャパンのサイトに行って、電子書籍を買いました。
PDF, EPUB, Kindleがあるので、調べるのに好都合。
PDFが一番読みやすいと思います。ちゃんと索引もあるし、索引に出ているページのクリックで該当ページに飛べる。
EPUBとKindleは、リフロー型。しかし、日本の出版社はCAS-UBを使ってないので(笑)、リフロー型には、索引がない! テキストの検索はできるが、専門書としては、索引がないのは、致命的だと思っています。
オーム社の電子書籍については、
http://iiyu.asablo.jp/blog/2017/05/18/8564076
続:日本AIベンチャーの雄、Preferred Networks(PFN)が、総務省の開発指針に反対する理由でわかる官僚お得意のガイドライン行政の罠。電子書籍の出来は?
で書いたけど、やはり、リフロー型の索引がだめ。
ぼくが勤めるアンテナハウスのCAS-UBなら、リフロー型でもちゃんと索引ができるのに。
http://www.cas-ub.com
デジタル出版物制作Webサービス CAS-UB
メイヤーズさんの、以前のEffective C++シリーズ。
https://www.amazon.co.jp/exec/obidos/ASIN/4621066099/showshotcorne-22/
Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI) 単行本(ソフトカバー) 2014/3/18
スコット メイヤーズ (著), 小林 健一郎 (翻訳)
https://www.amazon.co.jp/exec/obidos/ASIN/4621066064/showshotcorne-22/
新訂版MORE EFFECTIVE C++ (ADDISONーWESLEY PROFESSIONAL CO) 単行本(ソフトカバー) 2014/2/28
スコット メイヤーズ (著), 安村 通晃 (翻訳), 伊賀 聡一郎 (翻訳), 飯田 朱美 (翻訳), 永田 周一 (翻訳)
https://www.amazon.co.jp/exec/obidos/ASIN/4894714108/showshotcorne-22/
Effective STL―STLを効果的に使いこなす50の鉄則 単行本 2002/1
スコット メイヤーズ (著), Scott Meyers (原著), 細谷 昭 (翻訳)
関連:
http://iiyu.asablo.jp/blog/2015/10/06/7828405
「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」は、マストバイ!
http://iiyu.asablo.jp/blog/2015/09/25/7812140
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、C++11/14コア言語
http://iiyu.asablo.jp/blog/2015/09/25/7812131
マーティン・レディ著「C++のためのAPIデザイン」
http://iiyu.asablo.jp/blog/2015/07/27/7717499
C++のバイブル「プログラミング言語C++第4版」が出ていました
http://iiyu.asablo.jp/blog/2014/05/02/7299920
C++11でauto_ptrは非推奨(いずれ廃止)。C++の定番本がC++11対応。
http://iiyu.asablo.jp/blog/2014/09/28/7444837
Effective Java, Effective C++, More Effective C++などEffectiveシリーズ。年寄りだから、昔話が長いわ、お前
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/2015/07/25/7716321
Javaとオブジェクト指向プログラミング(OOP)の入門書
---
型推論のことを簡単に。
静的な型付けと、動的型付けくらいは、知っているものとして。
https://ja.wikipedia.org/wiki/静的型付け
https://ja.wikipedia.org/wiki/動的型付け
静型付けは、強い型付け、コンパイル時型付けともいわれ、コンパイル時に型チェックをやって、型に反するエラーを検出して、バグを減らす考え。大規模開発だと特に有効といわれる。反面、自由度が低いので。実行時にいろいろ変化させたい、メタプログラミング的なことはやりにくい。
動的型付けは、弱い型付け、実行時型付けともいわれ、草分けは、Lispでしょうが、その後、多くのスクリプト言語も動的型付けをやっています。処理系の実装がやりやすいし、インタープリタ系は、大体、動的型付け。メリット・デメリットは、静型付けと逆。
静型付けの言語に、ジェネリスクス(Generics, C++でいえば、テンプレート)を入れると、話がややこしくなる。
たとえば、コンテナや関数宣言に型パラメータが必要になり、記述が複雑化する。
C++で、テンプレートを使ったとき、コンパイルエラーやデバッガで、訳がわからん型が表示されてうんざりした経験は、みんな、あると思います。
複雑な宣言を少なく、あるいはまったく不要にして、プログラマの負担を軽減して、あたかも、動的型付けの言語のように簡単に書けるようにするのが、型推論。
型推論自体は、関数型プログラミング言語で発達してきました。
オブジェクト指向と関数型のいいとこ取りのScalaは、最初から型推論があるので、JavaやC++に比べ、非常に少ない記述で、強力な型チェックがコンパイル時にできます。
最近のJavaやC++などは、ラムダ式といって、Lispでいうクロージャ(あるいは類似物)が書けるようになり、ライブラリの仕様も関数型プログラミングのスタイルを後押しするようになりましたが、その場で、簡単に関数リテラルが書けないとありがたみがありません。
関数リテラルを書くのに、型パラメータを指定してコンテナを書いたり、複雑な記述をしないといけないのでは、使う気が失せます。
使う気にさせるのが、型推論。
https://ja.wikipedia.org/wiki/型推論
たとえば、JavaはJava 7から、ダイヤモンド・オペレーターによる型推論が入っていますが、この機能は、BorlandのJBuilderのコンパイラには、10年以上前から入っていたと記憶しています。Java 7でやっと正式対応。Java 8でラムダ式が入ったので、今後も、あれこれ、強化されるでしょう。
C++でも、C++11からラムダ式が入ったので、auto宣言による型推論が入っています。
C#にもありますし、最近の静的型付け言語は、ほとんど装備していると思います。
C++の型推論とautoについては、
Scott Meyers「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」
の第1章、第2章が非常に詳しいです。
https://www.amazon.co.jp/exec/obidos/ASIN/4873117364/showshotcorne-22/
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
大型本 2015/9/18
Scott Meyers (著), 千住 治郎 (翻訳)
オライリージャパンにある紹介。
http://www.oreilly.co.jp/books/9784873117362/
Effective Modern C++――C++11/14プログラムを進化させる42項目
Scott Meyers 著、千住 治郎 訳
2015年09月 発行
Scott Meyersさんは、古きよきC++時代から、その解説に定評があります。
コンパイラが何をやり、どう推論するかのメカニズムや、型推論機能を最大限に生かして、型安全なプログラムを楽に書くには、どうすべきが詳しく書いてあります。
autoに任せず、自分で型を書いて、うっかりミスをすると、無駄なコードが生成され、実行時に無駄な実行が行なわれてしまう話も出てきます。
Scott Meyersさんは、面倒なことはコンピュータにやらせる考え。
autoを使えばいいし、どういう型に推論されているか不安なら、最近のIDEは、推論された型を表示できるので、それで確認すればいいと。
型推論だけではなく、C++11/C++14をうまく使って、楽にいいコードを書くにはどうすればいいかの話が満載です。
この本は、紙書籍を、オライリー・ジャパンの矢野さんから、献本してもらっていますが、最近、日本の出版社の電子書籍、特に索引がどうなっているかを調べているので、オライリー・ジャパンのサイトに行って、電子書籍を買いました。
PDF, EPUB, Kindleがあるので、調べるのに好都合。
PDFが一番読みやすいと思います。ちゃんと索引もあるし、索引に出ているページのクリックで該当ページに飛べる。
EPUBとKindleは、リフロー型。しかし、日本の出版社はCAS-UBを使ってないので(笑)、リフロー型には、索引がない! テキストの検索はできるが、専門書としては、索引がないのは、致命的だと思っています。
オーム社の電子書籍については、
http://iiyu.asablo.jp/blog/2017/05/18/8564076
続:日本AIベンチャーの雄、Preferred Networks(PFN)が、総務省の開発指針に反対する理由でわかる官僚お得意のガイドライン行政の罠。電子書籍の出来は?
で書いたけど、やはり、リフロー型の索引がだめ。
ぼくが勤めるアンテナハウスのCAS-UBなら、リフロー型でもちゃんと索引ができるのに。
http://www.cas-ub.com
デジタル出版物制作Webサービス CAS-UB
メイヤーズさんの、以前のEffective C++シリーズ。
https://www.amazon.co.jp/exec/obidos/ASIN/4621066099/showshotcorne-22/
Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI) 単行本(ソフトカバー) 2014/3/18
スコット メイヤーズ (著), 小林 健一郎 (翻訳)
https://www.amazon.co.jp/exec/obidos/ASIN/4621066064/showshotcorne-22/
新訂版MORE EFFECTIVE C++ (ADDISONーWESLEY PROFESSIONAL CO) 単行本(ソフトカバー) 2014/2/28
スコット メイヤーズ (著), 安村 通晃 (翻訳), 伊賀 聡一郎 (翻訳), 飯田 朱美 (翻訳), 永田 周一 (翻訳)
https://www.amazon.co.jp/exec/obidos/ASIN/4894714108/showshotcorne-22/
Effective STL―STLを効果的に使いこなす50の鉄則 単行本 2002/1
スコット メイヤーズ (著), Scott Meyers (原著), 細谷 昭 (翻訳)
関連:
http://iiyu.asablo.jp/blog/2015/10/06/7828405
「Effective Modern C++ ―C++11/14プログラムを進化させる42項目」は、マストバイ!
http://iiyu.asablo.jp/blog/2015/09/25/7812140
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、C++11/14コア言語
http://iiyu.asablo.jp/blog/2015/09/25/7812131
マーティン・レディ著「C++のためのAPIデザイン」
http://iiyu.asablo.jp/blog/2015/07/27/7717499
C++のバイブル「プログラミング言語C++第4版」が出ていました
http://iiyu.asablo.jp/blog/2014/05/02/7299920
C++11でauto_ptrは非推奨(いずれ廃止)。C++の定番本がC++11対応。
http://iiyu.asablo.jp/blog/2014/09/28/7444837
Effective Java, Effective C++, More Effective C++などEffectiveシリーズ。年寄りだから、昔話が長いわ、お前
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/2015/07/25/7716321
Javaとオブジェクト指向プログラミング(OOP)の入門書
コメント
トラックバック
このエントリのトラックバックURL: http://iiyu.asablo.jp/blog/2017/05/23/8572667/tb
_ ホットコーナー - 2017年06月03日 12時12分14秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
「C++ ポケットリファレンス」は、人気がありますね。
https://www.amazon.co.jp/exec/obidos/ASIN/4774157155/showshotcorne-22/
C++ ポケットリファレンス
---
「C++ ポケットリファレンス」は、人気がありますね。
https://www.amazon.co.jp/exec/obidos/ASIN/4774157155/showshotcorne-22/
C++ ポケットリファレンス
_ ホットコーナー - 2017年06月20日 10時07分06秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
ここは、大変な労作。ありがたや、ありがたや。
https://cpprefjp.github.io
cpprefjp - C++日本語リファレンス
後述、「コンパイラの実装
---
ここは、大変な労作。ありがたや、ありがたや。
https://cpprefjp.github.io
cpprefjp - C++日本語リファレンス
後述、「コンパイラの実装
_ ホットコーナー - 2018年06月05日 09時59分03秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
お買い上げありがとうございます。2000年11月なので、ずいぶんと古い。
C++は、C++11以降で劇的に変わっています。特にテンプレート
---
お買い上げありがとうございます。2000年11月なので、ずいぶんと古い。
C++は、C++11以降で劇的に変わっています。特にテンプレート
_ ホットコーナー - 2018年08月05日 01時00分22秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
続刊の「More Effective C# 6.0/7.0」の日本語版のほうが先に出た、「Effective C# 6.0/7.0」の日本語版が、2018/09/05にやっと出ます。
現在、予
---
続刊の「More Effective C# 6.0/7.0」の日本語版のほうが先に出た、「Effective C# 6.0/7.0」の日本語版が、2018/09/05にやっと出ます。
現在、予
_ ホットコーナー - 2018年08月14日 01時19分58秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
私が勤めるアンテナハウスのブログに、Modern C++について書きました。
Modern C++は、C++11, C++14, C++17(, C++20)といったC++11以降のC++の総称
---
私が勤めるアンテナハウスのブログに、Modern C++について書きました。
Modern C++は、C++11, C++14, C++17(, C++20)といったC++11以降のC++の総称
_ ホットコーナー - 2018年08月15日 09時38分19秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
C++11以降のC++をModern C++とします。
Modern C++の日本語の本、特にC++17までカバーした日本語の本は、なかなかないのですが(英語の本は
---
C++11以降のC++をModern C++とします。
Modern C++の日本語の本、特にC++17までカバーした日本語の本は、なかなかないのですが(英語の本は
_ ホットコーナー - 2018年08月24日 23時48分56秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
監訳者の鈴木幸敏さま、翔泳社の野村さま、献本ありがとうございました。
https://www.amazon.co.jp/exec/obidos/ASIN/4798153869/showshotcorne-22/
Eff
---
監訳者の鈴木幸敏さま、翔泳社の野村さま、献本ありがとうございました。
https://www.amazon.co.jp/exec/obidos/ASIN/4798153869/showshotcorne-22/
Eff
_ ホットコーナー - 2018年10月16日 10時28分18秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
Modern C++と総称されるC++11以降のC++。
数ヵ月前に調べたとき、日本語で書かれたModern C++のテンプレートプログラミングのいい本、そ
---
Modern C++と総称されるC++11以降のC++。
数ヵ月前に調べたとき、日本語で書かれたModern C++のテンプレートプログラミングのいい本、そ
_ ホットコーナー - 2019年02月28日 01時57分29秒
ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
アンテナハウスのメイン言語は、C++。次にJava。
あとは、社内で使う分は、Scala, C#, JavaScript, Python, Ruby, Perl, PHP, Objective-Cなどなど、
---
アンテナハウスのメイン言語は、C++。次にJava。
あとは、社内で使う分は、Scala, C#, JavaScript, Python, Ruby, Perl, PHP, Objective-Cなどなど、
_ ホットコーナー - 2019年03月11日 00時44分58秒
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/
20
---
次の記事を読むと、おそらくほぼこれがC++20に入りそうですね。
https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/
20
_ ホットコーナー - 2019年12月04日 10時07分35秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
プログラミング言語の人気ランキングや収入ランキングで、CとC++を一緒にしてい
---
プログラミング言語の人気ランキングや収入ランキングで、CとC++を一緒にしてい
_ ホットコーナー - 2019年12月29日 00時27分25秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
■Modern C++チャレンジ
C++を勉強中の新人君から、いい問題集みたいなものはない
---
■Modern C++チャレンジ
C++を勉強中の新人君から、いい問題集みたいなものはない
_ ホットコーナー - 2020年01月03日 01時30分14秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
みなさま。
あけまして、おめでとう。
閉めまして、さよ、おなら。\(^O^)
---
みなさま。
あけまして、おめでとう。
閉めまして、さよ、おなら。\(^O^)
_ ホットコーナー - 2020年01月13日 02時21分49秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
C++14でジェネリックラムダが入ったから、こんなに簡単にクロージャが書けて、ク
---
C++14でジェネリックラムダが入ったから、こんなに簡単にクロージャが書けて、ク
_ ホットコーナー - 2020年01月18日 23時40分17秒
ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
お買い上げありがとうございます。
去年のお買い上げで、ずっと気になってい
---
お買い上げありがとうございます。
去年のお買い上げで、ずっと気になってい
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。