無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

中の人の徒然草268

みんな、おはよう♪もうすっかり秋ですよね♪もうそろそろ肌寒くなってきました。
秋と言えばやはり読書。私の場合は年中読書なのですが、そこは置いといて、今現在はC++系と並列関係の本を読み漁っております。それで改めて感じたのですが、やはりC++は手ごわいですね。
暫く使っていないと、細かい点を結構忘れてしまいます。ここ最近はC++の仕事が減ってきているのでなおさらです。脳内に再インストールするために、昨日は一日中書籍紹介記事の目次ーC++で紹介している書籍数点と、まだ紹介していない書籍数点を並列関係の本と併せて読んでいました。
C++と並列処理技術を嫌う人が居るけど、結構楽しいですよ♪食わず嫌いにならないで、どんどんチャレンジして欲しいと思います。

そういえば、昨日コメントで「読書量が多い」と言われたのですが、私って読書量多いのかな?私は生まれ付き本が好きで、幼稚園児の頃も本を読んでいました。幼稚園児に読んだ本は、アカデミア百科事典、国語辞典、ウルトラマン関係、妖怪関係でした。
ですから私にとって読書は呼吸するのと同じぐらい自然な事なので、あまり意識しておりませんでした。読書スピードが速いと言われることもありますが、特別な事はしているつもりもありません。ただの慣れだと思います。常にアンテナを張っておいて、気になった技術の本をまとめ買いして、それらの本を並列的に読むだけです。そうすれば、一冊の本でわからなかった事柄がわかるようになり、結果的に単独で読んでいくよりも早く理解が進みます。
この時のコツはたぶん「理解しようと気張らない事」だと思います。その時わからなくても、経験を積めばわかってくる事が多々ありますので、気にせずにバンバン読んでいきます。そして、頭の中にインデックスを作って、いざという時に何の本の何処に何が書いてあるのかを把握しておきます。
後は人間は忘れる生き物なので、定期的に本を読み直して記憶を定着させたり、必要な時に参照するだけです。このようにすれば、効率的にデータを扱えます。すなわち、外部記憶装置として本を利用しているわけです。
人間の記憶力はHDDと比べると大した事がありません。先ほど述べたインデックスなどのメタ系の重要な点だけ覚えておいて、あとは「覚えようと意識しない」事が肝心です。そうすれば、自然と読書スピードと記憶力が増すと思います。

なにはともあれ、考え込まないでバンバン読書をしていきましょう♪毎日寝る前に100ページでも読んでおけばきっと実力がUPすると思います。他人が何を言おうが、自分の好きな本をどんどん読みましょう。そうすれば、きっと貴方の人生はより充実すると思います。
別窓 | 日記 | コメント:15 | トラックバック:0 | ∧top | under∨
<<中の人の徒然草269 | 無差別に技術をついばむ鳥 | 中の人の徒然草267>>

この記事のコメント

うらやましい限りです。僕は仕事に追われて、当座必要な書籍を漁るだけで、精一杯です。
日常の仕事をこなした上に、それだけの量を読破して、Codezine にも高尚な記事を書いて、まさに神的超人。
「xxxについて」と疑問が湧くと、「この本のこのあたり」とすぐ、脳内インデックスを引けるのでしょうね。
コツを教えてもらいたいです。
 一つ教えてください。インドリさんが、どこかにコメントしているのを見ました。
そこでは、
 「C/C++ のプラグマで #ifndef を使うと、コンパイルが早くなる」といったことが書かれていました。
C/C++のコンパイラーには、そんなオプションがあるのですね。素晴らしい。
ほかの言語にも、プリコンパイラ機能があれば、もっと早くなるのでしょうね。
2009-10-13 Tue 12:46 | URL | インドリ氏親派 #-[ 内容変更]
> うらやましい限りです。僕は仕事に追われて、当座必要な書籍を漁るだけで、精一杯です。
> 日常の仕事をこなした上に、それだけの量を読破して、Codezine にも高尚な記事を書いて、まさに神的超人。

そんなことはございません。
ごく普通の人間です。


> 「xxxについて」と疑問が湧くと、「この本のこのあたり」とすぐ、脳内インデックスを引けるのでしょうね。
> コツを教えてもらいたいです。

これは慣れだと思います。
多く読めば自然と身に着くと思います。


>  一つ教えてください。インドリさんが、どこかにコメントしているのを見ました。
> そこでは、
>  「C/C++ のプラグマで #ifndef を使うと、コンパイルが早くなる」といったことが書かれていました。
> C/C++のコンパイラーには、そんなオプションがあるのですね。素晴らしい。
> ほかの言語にも、プリコンパイラ機能があれば、もっと早くなるのでしょうね。

簡潔に述べます。
どちらかと言うと、C++が遅いからこんな工夫をしないといけないのだと思います。
これは多分Cから継承した負の資産で、インクルードするのが物理的(ファイルを読み込んで処理をする)のが原因です。
ですから元々その物理的な動作が隠ぺいされて論理的な指定をするC#やJavaの方が速い(コンパイラ屋さんがその分努力している)と思います。
この違いはC#がusing C++/Cが#includeとなっている事からも伺えます。
本当はもっと複雑な概念なので、大規模C++ソフトウェアデザインを参照する事をお勧めします。
2009-10-13 Tue 13:02 | URL | インドリ #-[ 内容変更]
負の遺産というのは言いすぎでしたね。
OSやコンパイラなどを作っていると#Includeの方が都合がいい時がありますからね・・・
2009-10-13 Tue 13:10 | URL | インドリ #-[ 内容変更]
>負の遺産というのは言いすぎでしたね。
>OSやコンパイラなどを作っていると#Includeの方が都合がいい時がありますからね・

そうなんですか。C/C++言語は、低級言語だから、コンパイル作業の前に、合理的なソースをインクルードする制御構造だと理解していたのですが、誤認でしたね。
#Include一つで賄えるというわけてすね。勉強になります。

>C++が遅いからこんな
C++ってそんなに遅いのですか。
C#/JAVAは最近の言語だから、洗練されてるわけですね。
コンパイラの動作まで指示しないといけないとは、難儀な言語ですね。
それでもインドリさんはC/C++を勧めていますね。
推薦理由をもっと知りたいです。
2009-10-13 Tue 14:53 | URL | インドリ氏親派 #-[ 内容変更]
> >負の遺産というのは言いすぎでしたね。
> >OSやコンパイラなどを作っていると#Includeの方が都合がいい時がありますからね・
>
> そうなんですか。C/C++言語は、低級言語だから、コンパイル作業の前に、合理的なソースをインクルードする制御構造だと理解していたのですが、誤認でしたね。
> #Include一つで賄えるというわけてすね。勉強になります。
>
誰もそんなことは言っておりません。
システムソフトを作る際に#Includeの方が都合がよいときがあると言っただけです。


> >C++が遅いからこんな
> C++ってそんなに遅いのですか。
コンパイル&リンクだけで1日かかるプロジェクトも存在するそうです。
#Includeはその仕組み上時間がかかる事があります。

> C#/JAVAは最近の言語だから、洗練されてるわけですね。
> コンパイラの動作まで指示しないといけないとは、難儀な言語ですね。
> それでもインドリさんはC/C++を勧めていますね。
> 推薦理由をもっと知りたいです。
#IncludeだけでC++を使わない理由になりません。
システムソフトを作れる実務的言語はC++/Cぐらいなものですし、C++の言語設計が好きなのです。
2009-10-13 Tue 16:47 | URL | インドリ #-[ 内容変更]
>この違いはC#がusing C++/Cが#includeとなっている事からも伺えます。

なんか違和感感じるなぁ。

例えば、

using System.Windows.Forms;

これ宣言しなくても

System.Windows.Forms.Form

って書けばいいよね。

でも、

#include <stdio.h>

を書かないと使えない(エラーになる)関数が出るよね。
2009-10-14 Wed 10:28 | URL | あるまじろ #ykf0353g[ 内容変更]
> >この違いはC#がusing C++/Cが#includeとなっている事からも伺えます。
>
> なんか違和感感じるなぁ。
>
> 例えば、
>
> using System.Windows.Forms;
>
> これ宣言しなくても
>
> System.Windows.Forms.Form
>
> って書けばいいよね。
>
> でも、
>
> #include <stdio.h>
>
> を書かないと使えない(エラーになる)関数が出るよね。

またはじまった(溜息)
だから違うと言っているのですが・・・
もういい加減にして下さいね。
2009-10-14 Wed 11:09 | URL | インドリ #-[ 内容変更]
>だから違うと言っているのですが・・・

そうかもしれないが、誤解を招くような書き方ってこと。
同列に語れない物を...

それに「C++/C」と言う書き方にも違和感を感じる。
2009-10-14 Wed 11:50 | URL | あるまじろ #ykf0353g[ 内容変更]
> >だから違うと言っているのですが・・・
>
> そうかもしれないが、誤解を招くような書き方ってこと。
> 同列に語れない物を...
>
> それに「C++/C」と言う書き方にも違和感を感じる。

貴方の態度に違和感を覚えます。
ちゃんと前後の文章を読みましょう。
いつも貴方は単語だけ抜き出して、勝手に妄想を繰り広げます。
嵐をしようとすれば、拡大解釈・曲解・誤読がつきものというのはわかりますが、そのような事をして恥ずかしくないのですか?
2009-10-14 Wed 12:27 | URL | インドリ #-[ 内容変更]
それにしても、拡大解釈・曲解・誤読・単語拾い出し・妄想(勝手な解釈を付加する)などで書いてくる人にはあきれます。
文章というものは前提や前後があります。
それを無視してこの手の手法を使えば【どんな文章にもなん癖を付けられます】。
そのような子供っぽい行為をして何が楽しいかがわかりません。
彼らはどうやら自分の知性アピールしているつもりなのでしょうが、文章の前後が読めない人に知性があるとは思えませんので逆に知性の欠落をアピールしている事になります。
それをわかっていないから恥知らずにもその手の事が出来るのでしょうが、私には恥ずかしくてそんな真似はできません。
このような事をする意味があるのでしょうか?
理解に苦しみます。
2009-10-14 Wed 12:42 | URL | インドリ #-[ 内容変更]
横槍すみません。

あるまじろさんが誤解されているということならば、単純にインドリさんが補足説明をされればいい話だと思うのですが…

インドリさんの今のレスはあまりに無意味だと思います。
2009-10-14 Wed 13:05 | URL | とおりすがり #-[ 内容変更]
> 横槍すみません。
>
> あるまじろさんが誤解されているということならば、単純にインドリさんが補足説明をされればいい話だと思うのですが…
>
> インドリさんの今のレスはあまりに無意味だと思います。

知らない人から見ればそうなのでしょうが、この方はこの手の事をして何回もごねています。
いくら説明しようとも「納得するつもりがない」ので時間の無駄なのです。
なん癖つけるのが目的の人に何を言ってもどうにもなりません。
2009-10-14 Wed 13:09 | URL | インドリ #-[ 内容変更]
>なん癖つけるのが目的の人に何を言ってもどうにもなりません。
いつものように、難癖つけられて大変ですね。
#ifndef
#include

は二度読み防止の定例句ですが、二度読みのことまでソースが意識しないといけないのはオカシイわけですよね。
コンパイラは完成したコードをコンパイルするの仕事ですね。
#xxx の行はプリコンパイラーで、コードを完成させる手続きなので、そんなものに時間を食われるのは理不尽ですよね。

unsing は直接モジュールを参照するのでコードを完成させなくても良いから早い訳ですね。
成る程、鋭い洞察ですね。目から鱗です。

C#でよく
#if debug
xx
xx
xx
#endif

とするのですが、これなども、コードが未完成なのでコンパイルが遅くなる要因だったのですね。
段々遅くなってきた原因はこれだったんだ。
2009-10-14 Wed 17:25 | URL | インドリ氏親派 #-[ 内容変更]
> >なん癖つけるのが目的の人に何を言ってもどうにもなりません。
> いつものように、難癖つけられて大変ですね。
まぁ慣れました。
馬鹿の一つ覚えで同じパターンの事しかしてきませんので大した事ありません。
それにしても、彼らは余程空しい人生を送っているのでしょうね。
普通の人はそんな子供じみて暇な事しません。
仕事、鍛錬、恋愛、家族サービス・・・・などの日々の生活に追われてそんな事する暇はないはずです。
本気でかわいそうだと思っています。
今ではおじいちゃんに利用されるだけの存在です。
特に偉そうな人が落ちぶれた姿はあまりにも悲惨です。
今では意味のないコメントを一日中書いているだけなのですから・・・
人間ああなりたくないものですね。


> #ifndef
> #include
>
> は二度読み防止の定例句ですが、二度読みのことまでソースが意識しないといけないのはオカシイわけですよね。
> コンパイラは完成したコードをコンパイルするの仕事ですね。
> #xxx の行はプリコンパイラーで、コードを完成させる手続きなので、そんなものに時間を食われるのは理不尽ですよね。
>
> unsing は直接モジュールを参照するのでコードを完成させなくても良いから早い訳ですね。
> 成る程、鋭い洞察ですね。目から鱗です。
>
> C#でよく
> #if debug
> xx
> xx
> xx
> #endif
>
> とするのですが、これなども、コードが未完成なのでコンパイルが遅くなる要因だったのですね。
> 段々遅くなってきた原因はこれだったんだ。
確かにプリプロセッサはテキスト処理をしないから#ifも遅くなるでしょうね。
でもこれって必要があってしている事なのだろうから難しいですよね。
私的にはAssertとユニットテストで#ifの必要性を極力なくす方がいいと思います。
それでも全ての#ifはなくせないでしょうが、Assertとユニットテストをよく実装すればかなり減らせると思います。
2009-10-15 Thu 10:28 | URL | インドリ #-[ 内容変更]
そうですよね。高慢な態度は、偉い人ほど陥りやすい罠ですよね。
インドリさんは、感情的にならずに、軽く受け流すところが偉いです。
あれだけ、悪口雑言を書き込めるなんて、きっと仕事しなくていいくらい暇なんでしょう。

#Include の性質と欠点も納得しました。
私は、プリコンパイラは、テキストの置換と修正だけ処理して、結果をコンパイラーに受け渡すものだと短絡に理解していました。誤りがわかって良かったです。ありがとうございました。
プリコンパイラのマクロ展開は字面だけの処理なので、有名な副作用が発生しますね。これは欠点だったのですね。納得です。
2009-10-15 Thu 11:56 | URL | インドリ氏親派 #-[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |