fc2ブログ

中の人の徒然草296

こんちは♪高校生に戻った気分のインドリです♪
昨日は、数学の計算問題をやっていました。何故そんな事をしたのかと言うと、数学感覚が鈍っていたからです。
例えば、因数分解の問題とか複素数の問題を解くのが遅くなっていました。高校生の頃は、因数分解なんて問題を見た瞬間に解けたのですが、今ではちょっとタイムラグがあります。それに筆記スピードが落ちていましたorz
普段キーボードばかり触っているから、文字を書くスピードが遅い!困ったものです。
やはり、普段からもっと筆記しなくてはなりませんね。
その作業を通じて改めて思ったのですが、基礎的な訓練を疎かにしたら駄目ですね。
極端な例を挙げますと、普通Hello,Worldプログラムなんて書きません。今自分が研究している分野を直接プログラミングします。
例が極端すぎますが、何でも基礎は大事であり、その基礎を頭で分かっているだけでは不十分で、定期的に体に叩きこまないと、因数分解の答えが閃かないのと同様の状態になってしまいます。
これを放置しておくと、「昔は逆上がり出来たのにぃ~」なんて事になってしまいかねません。
誰だって既知の知識の復習をおろそかにしがちだと思いますが、今度の土日にもっと初心者に返って、既知で馬鹿らしいと思える事柄を改めて学習しようと思います。
これを読んでいるみんなも、時々既知の情報について復習するといいかもしれません。きっといい事があるよ♪

テーマ : 裏事情
ジャンル :

書籍をつつく130-Windowsプログラミングの極意。現実を色々学べる書籍。

本日は面白くて役に立つ書籍を紹介するピヨ♪
Windowsプログラミングの極意 歴史から学ぶ実践的Windowsプログラミング!
題名と内容があっていないので注意が必要ピヨォ。
題名を見るとプログラミングの本だと思うだろうけど、実は違うんだなこれが。
プログラミング本だと思って避けたら損するし、プログラミング本だと思って買うとショックを受けると思うピヨ


【目次】
第1章 初めてのユーザーインターフェイス設計
第2章 Windows95の追憶
第3章 GetWindowTextの秘密の生活
第4章 タスクバーと通知エリア
第5章 インターフェイスのパズル
第6章 GlobalAlloc関数の歴史
第7章 Windowsプログラミングの小話
第8章 ウインドウの管理
第9章 ハードウェア夜話
第10章 ダイアログマネージャの内部の仕組み
第11章 一般的なソフトウェアの問題
第12章 Visual C++コンパイラの調査
第13章 下位互換性
第14章 語源と歴史
第15章 ウィンドウメッセージの配信と取得
第16章 国際的なプログラミング
第17章 セキュリティ
第18章  Windows2000とWindowsXP
第19章 Win32の設計の問題点
第20章 税金
第21章 愚かさ


目次を見ると普通のプログラミング本ではない事は分かると思う。では何の本なのかというと、生臭い現実と言った方がいいと思うピヨ。この本にはMSで起こった開発に関する広範囲は話題が書かれているピヨ。これがまた面白いし、ためになるピヨ。というのも、お仕事でプログラミングをする人や、情報産業に属する人は教科書通りではない現実と直面する事になるからだっピヨ♪
例えば、ソフトウェアを売ったとする。教科書では開発の仕方などは書いていあるピヨ。だけど、その結果現実世界で何が起こるのかが書いていないピヨ。でも、この本では売った後の現実がしっかり書かれているピヨ♪
その他にも、現場内の生臭いけど人間くさくて面白い話し等が書かれているピヨ。
おっと、それからもちろん、Windowsプログラミングの何故も書かれているから安心してね♪
情報産業で働いている人や、これから働きたい人は一度目を通す事をお勧めするピヨ♪
必ず笑いと知識が得られるピヨ♪
現実を知りたい人や知っている人は面白いと思う事間違いなし!


もっと本が知りたいという本好きは書籍レビュー目次書籍レビューを見ると良いピヨ♪

テーマ : 情報処理技術
ジャンル : コンピュータ

中の人の徒然草295

こんにちわ♪インドリです。
今日の散歩でまた未来のプログラミングについて思いを馳せました。
並列指向になったら逐次プログラミングは何処へ行くのでしょうか?
無くなってしまうと言う人もいるでしょうが、私は存在し続けると思います。 何故ならば、テストコードまで並列化しない方がいいからです。 並列化は結果が予測し辛いという側面があります。 その予測し辛いプログラムを検証するために、予測し辛いテストコードを書くと、テストコードのテストコードが必要になってしまいます。従って、逐次プログラミングはテストコードで生き続けるでしょう♪
これは、さらなる分業化を招く結果になるかもしれません。情報処理技術の進化と反比例して、技術者の能力が低下する事が非常に心配です。何時の時代にもハッカーは存在するでしょうが、多くの人がエンドユーザーと同列化してしまっては、情報産業そのものが成り立たなくなります。誰が素人にお金を支払うのでしょうか?ところが、今既にその傾向があるから非常に心配です。 何故日本のIT業界は、自らの価値を下げてまでサボる方向に進むのでしょうね・・・理解に苦しみます。
技術を知らない技術者なんて要りませんよね。エンドユーザーが何時までも黙っていると思ったら大間違いです。
自らの価値を高める必要があるでしょう。だから、保守性云々という言い訳の下、色々な技術を学習不要という変な人が多く居るけども無視して学習しよう♪

テーマ : 裏事情
ジャンル :

中の人の徒然草294

こんにちは♪無差別なインドリだよ。早朝に散歩をしていた時、これからのプログラミングについて考えました。
私が思うに、並列指向になるのは間違いがないでしょう。ただし、直列部分も当然残るでしょう。ここが足を引っ張りパフォーマンスが思うようにUPせず問題になるでしょう。
そこで、必要とされるのがSIMD系プログラミングになるのではないでしょうか?現在のところ、SIMDはコンパイラの最適化機能の後ろに存在しています。しかし、並列化も最適化機能からやってきました。
※だいぶ前から最適化機能に並列化が存在しています
これにはちゃんとした理由があります。それは、コンパイラの最適化機能だけでは開発者の意図が汲み取れず、最適化にも限界があるからです。という事は当然、SIMD系命令を備えたプログラミング言語もしくはライブラリが必要となってきます。SIMDなプログラミング言語ってどんなになるかな?
きっと、複合命令文などと命名された構文が増え、SIMD向きデータ構造を指定するためにSIMD系修飾子が増える事でしょう。
想像すると大変面白いです♪血沸き肉躍ります♪今この瞬間にコンパイラ実装能力が足りないのが口惜しいです。 コンパイラ実装能力があれば、どんどん実装していくのにぃにゃ~♪
自分の欲望をかなえるため、もっと精進します。ゆくゆくは、自分のOSを構築するためにそれ専用のコンパイラを作って、その実装した独自OS内で理想の開発環境を整えるために色々作りたいです。DBMSも作りたいし、新しいプロトコルも作りたいし、デバッガも作りたいし、アプリケーションだって作りたいです。おっと、テキストエディタを忘れてはなりませんね。
これぞ最高の知的遊戯です♪人生楽しくなきゃ意味がありません。楽しむためにもっと努力をします。
その努力がまた楽しい♪それを毎日すれば毎日幸せ♪これ程の正のサイクルはないでしょう。
中学生の時、情報処理技術に一目惚れして良かったとつくづく思います。
私も色々酷い目に遭ってきましたが、生まれてきてよかったと思います。

テーマ : 裏事情
ジャンル :

中の人の徒然草293

おっはー♪無差別なインドリでーす♪
あおいたんの御蔭でコンパイラに必要な数学につていの情報がたまってきたので整理します。

  • 集合理論・・・SQLで御馴染。コンパイラにとっても有効な知識。オブジェクト指向の熟練者たちは、オブジェクトも集合として認識している模様。私も実践していますがいい感じです。DOAとOOAの違いに拘らないで済みます。
  • グラフ理論・・・コンパイラコンパイラのコードを調べていたら出てきた。構文解析などをグラフとして考えるとよいらしい。他にもネットワーク系のアルゴリズムなどにちらほら出現します。習得しておくと何かと便利みたいです。
  • λ計算・・・関数型言語の要素が必須な現在に於いて必要な知識。今後ますます重要視されると思います。
  • 形式的な論理・・・コンパイラはつまるところ、ある形式からある形式への変換処理であるので重要。
  • プログラムの意味論・・・コンパイラと深い関係にあらしいですね。それにも関わらず参考資料が全滅状態orz
  • 整数論・・・色々な部分で必要だと思われます。
  • 圏論・・・たまに圏論ぽい概念が出てくるようです。確か何かの本で、圏論から来ているという情報処理技術がありました。それに、都合の良い対象を選んで操作して、元の対象に対する新たな知見を得る手法は色々な場面で役に立つようです。まだ手が出せる状態ではないですが、将来学習しようと思います。


コンパイラの実装はオープンソースのお陰で情報が山ほど手に入ります。しかし、数学的な知識や感覚がないとその情報が根本から理解できないと思われますので数学は重要です。その他にも英語が重要なんだけど・・・これが一番苦しい。ちびちび勉強していますので、これを継続しつつ、数学の復習をします。高校数学って案外忘れている部分が多いです。微分積分とか難しい!グラフィックス系をやってなかったのですっかり忘れています。多分ゲームプログラマならば忘れないんだと思う。私は業務系なので普段使わないです。
やべ、高校生の時は数学テスト普通に点数取っていたので、高校生のころに負けているぜw
という事で、高校数学の復習も今年の初めごろからちびちびしています。でも普通に数学ドリルをひたすら解くのは面白くないので、プログラミングを交えて楽しもうと思います。計算機プログラムの構造と解釈を読んでいると、数学の問題よく出てくるし。学生の頃は何の意味があるんだろうと思った時があるけど、今はその重要性が分かります。数学のものの考え方は情報処理技術にとって非常に重要ですね。
そういえば、絶版臭がしたんで買っておいたクヌース先生の本The Art of Computer Programmingにもバリバリ数学の知識が要求されている。数学の重要さをひしひしと感じます。ハッカーも数学が得意な人が大半のようですし・・・
私が思うに、数学はたとえ直接役に立たなくても、その物事の見方がよい効果をもたらすのだと思います。
もっと長い時間を数学に充てようと思います。

テーマ : 裏事情
ジャンル :

中の人の徒然草292

こんピヨ♪インドリです♪今日散歩していてふと思ったのですが、並列指向に共鳴して意外とアスペクト指向が一般化するかもしれませんね。アスペクト指向は、考え方も面白くて、私の好みとも一致するので、個人的には応援したいのですが、オブジェクト指向すら満足に日本のIT業界に普及していない現状と、その保守的(怠惰と言った方がいいかな)な態度を考慮すると、多くの開発者が何となくアスペクト指向の産物を使うだけにとどまるのではないかと考えておりました。
しかしながら、並列指向で考えるのであれば、自然と横断的関心事にも目が向くでしょう。横断的関心事は並列化するコードの着目点になりえます。というのも、並列指向では何が分離できるのかを考えねばならないからです。何を分離するのかをちゃんと考えるのであれば、自然と横断的関心事にも目が向くでしょう。
とはいえ、日本のIT業界は保守的というか学習しない人ほど上流に居るからね・・・オブジェクト指向どころか、データ中心プローチすら満足に理解していないという怖い話しも聞きますし・・・未だに構造化設計をやっているのか(溜息)構造化設計でオブジェクト指向プログラミングをすれば、そりゃデスマーチにもなります(泣)
それはさておき、並列化指向で考えると全てのアルゴリズムを見直さないと駄目ですね。今までのアルゴリズムが無用になるわけではありませんが、並列化時代を真に迎えるには見直さないとだめでしょう。そうしないと、アムダールの法則が指し示すように、やっつけ的に並列化しても直列部分が足を引っ張って性能はあんまりUPしません。
ハードウェアの性能を引き出すのが我々開発者の仕事です。皆で並列処理を学ぼう!

テーマ : 裏事情
ジャンル :

ネタつつき73-構文解析法についての考察5

構文解析法について考えた事を書きます。

結論から言いますと、従来の構文解析法は変える必要があります。何故ならば、並列指向で考えられていないからです。 並列指向でコンパイラの在り方を考えた時、従来の構造ではプログラム間の依存性が強すぎて並列化し辛いです。
もし従来の方法で並列化をするのであれば、並列的にファイルをコンパイルしていく程度の事しか出来ませんが、それでは不十分だと私は考えております。
ここ数年の動きを見るに、ますます情報機器の性能がUPし、それに応じて要望やデータ量も爆発的に増加するでしょう。この時問題となるのは開発効率です。開発効率を上げるためには、もっと効率よく並列化しなくてはなりません。そのためには、より短いサイクルでチェックが出来なくてはなりませんし、開発環境の補助的役割を果たさねばなりません。それらの事を考慮すると、アルゴリズムから見直さないと駄目なのは明白です。
それでどのように並列化するのかが、昨今の私の趣味です。先ずは既存の技術について詳しく調べないと、新しいものは生み出せません。ある程度想像する事は出来ますが、本格的なものとなると根本を深く知ることは必須事項です。

テーマ : プログラミング
ジャンル : コンピュータ

中の人の徒然草291

どうも♪幸せ満喫中のインドリです♪昨日、Schemeを復習するために、



を読んだんだけど、やっぱり関数型言語は面白い!
命令型言語の不満な点が解消されているので、非常に興味深く、何故最近まで流行らなかったのか不思議に思うぐらいです。
やっぱり、括弧とインデントの深さが威圧感を与えるのかな?
そして、今まで我慢していた数学も一緒に学習する事に決めたので、のびのびと学習しています。
自分の知的好奇心の暴走を抑えるために、あえて禁止していた数学を学習すると開放感を感じます♪
私は元々型にはまった事が嫌いで、数Ⅰとか分類を細かく決めて、ただ暗記しろという学校教育が非常に嫌いでした。
1+1の理由も証明してくれないなんて、学問を冒涜する行為だと小学生から考えていました。
ただ暗記しろと言うほど学問を馬鹿にした態度はなく、学ぶためにお受験をするのが、お受験のために暗記するとなってしまった日本の教育に疑問を感じずには居られません。
さらに昨今はゆとり教育・・・学問と人を何処まで馬鹿にすれば気が済むのでしょうか?
おっと、話はズレたけども、私は型にはまった事が嫌いなので、縦横無尽に心のあるままに楽しんでいます。
もしかしたら、色々あって何かの学習に踏み切れない人が居るかもしれませんが、学ぶ事を躊躇う必要はありません。
何歳からでも何時からでも楽しめばいいのです♪
年齢に固定されると言うのは日本人に植えつけられた先入観です。
何時でもやればいいじゃない♪もう大人なんだから何をどのように学習しようが自由だよ♪
といっても、仕事に差し支えがないように注意しよう。
仕事がなくなったら学習できなくなるからね。

テーマ : 裏事情
ジャンル :

ネタつつき72-不利益な事をする不思議なIT業界

IT業界は摩訶不思議なところで、人材を滅茶苦茶に扱っています。その例は枚挙に暇がありませんが・・・

無知な人にプロジェクトの指揮を任せてデスマーチを発生させる。
デスマーチの発生原因を追求しようとせず、誰かに責任を押し付けてデスマーチをまた発生させる。
優秀な人は損をし、その結果優秀な人ほど疲弊して業界から去る構造が出来ている。
上になればなる程知識が無くてもいいと何故か考えられている。さらには、経営者は無知でもいいと信じられている。
努力しない人ほど出世する。
(以下省略)

他業種の人はこれを笑い話だと思うでしょうが、これがIT業界の現実です。
では、情報サービスはそもそも何が利益が生むのかといいますと人と技術です。特別なものは必要ありませんのでそれが全てです。つまり今のIT業界は、不利益になる事を業界全体でやっているのです。これを喜劇と言わずとしてなんと言えばいいのでしょうか?
どんな人でも利益を生まないように努力しないでしょうから、これが示唆する事は何が利益になるのか分かっていないという事なのでしょう。利益の元が分からずに、業界全体で人材を粗末にするべく動いているのですから呆れる他ありません。
この状態で誰が得をするのでしょうか?お客様は品質が悪いものを買わされているわけですし、真面目に働く人ほど潰されます。
あまりに基礎的な部分がおかしいので、この件について私は当たり前な事しか言えません。

普通の商売をして儲けましょう!

怠ければ怠ける程儲かる構造を作るなんて、まともな商売法だと言えません。そんな不自然な事をしていればお客様から見捨てられ、日本の情報産業が衰退するのは目に見えています。もういい加減に普通に商売して欲しいものです。

テーマ : ソフトウェア開発
ジャンル : コンピュータ

中の人の徒然草290

数学と情報処理技術の学習に接点が出来てスッキリしているインドリです♪
今から思えば、関数型言語は数学と縁が深い言語であり、そもそも電子計算機も数学と縁がかなり濃い。
数学と情報処理技術の両方に心惹かれていて、その自分の心の扱いに困っていましたが、ちゃんと情報処理技術を学ぶ道から外れていないと気付いて気分爽快です♪
仕事があるから中々前に進まない点はもどかしいですが、長い道のりをじっくり味わうためのものだと思えば、不必要にあせる必要もありませんね。
我に迷いなしです!
数学を学ぶ事により、より一層視野が広くなりますので、今からとても楽しみです。
自分の現在習得している技術に拘り、新しい物事を学ぶ事を拒否する人も結構いますが、無知こそ楽しい!
知らない事に遭遇し、それを理解するプロセスそのものが人としての喜びです。
この心を忘れた人には「初心に帰れ」と言いたいです。
Hello Worldプログラムを初めてプログラミングした時、コンピューターを初めて操作した時、ブラインドタッチが出来るようになった時・・・などを思え返せばその全てが無知から出る喜びです。
未知なる分野に立ち向かえば、常に初心者を味わう事が出来るのです。
それ程おいしい事はないでしょう。
数学は殆ど未知なる領域で、私はそこでは初心者ですが、それが何よりも楽しいです♪
この領域は深いから数年楽しめそうですね♪
私は今、とても幸せです。

テーマ : 裏事情
ジャンル :

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター