fc2ブログ

中の人の徒然草361

こんにちは。オブジェクト指向派のインドリです♪
仮想マシンにオブジェクト指向を適用して改めて感じたのですが、オブジェクト指向は開発効率がいいですね。
何がいいのかといいますと、思考が独立する点です。
機械語命令を実装している時は命令オブジェクト、CPUを実装している時はCPUオブジェクト・・・という風に、独立して思考出来ますので、思考が一つの要素に集中出来ます。
この状態はテストも行いやすく、バグに悩まされる確率が減ります。
C言語もしくは、命令型言語チックに実装していると、仮想マシンはテストが行い難く、一つの部分に責任&コードが集中してしまいます。
そうなってしまうと、機械語命令一つ実装するにも、全体像を考えなくてはならなくなります。
おまけに、抽象度が低くなり、開発する順番が決まってしまう傾向が強まります。
そういったことから、コンパイラの様な従来C言語で実装していたものも、オブジェクト指向を適用する価値があります。
ただ、オブジェクト指向で実装すると、C言語を駆使したものよりもパフォーマンスが悪くなります。
この点が課題となりますが、実験的に作るコンパイラでは問題になりませんし、並列処理にも有利に働くのではないかと考えています。
というのも、並列処理は各要素が独立している事が望ましく、接点を少なくするのが得策だからです。
要素間の接点が多いとロックが多くなり、パフォーマンスが下がりますし、トラブルの元となります。
おそらくパフォーマンスで、オブジェクト指向言語がC言語に勝つ方法は、並列処理しかないでしょう。
それさえ出来れば、開発生産性が高いオブジェクト指向言語を使わない手はありません。拡張性も高く、パフォーマンスもよい、理想的な実装になるでしょう。
並列処理は、オブジェクト指向言語の適用範囲を広げられる技術なのかもしれません。この様に、技術の組み合わせを考えるのは楽しいですね。
スポンサーサイト



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

中の人の徒然草360

皆さまお久しぶりです。やる事が多すぎて、ブログを書くのを忘れてしまうインドリです。
ここ最近は、相変わらず色々しています。仕事はもちろんのこと、インド式計算で遊んでみたり、英語を学習してみたり、数学を学習してみたり、ハードウェアを学習したり・・・とにかく色々です(笑)
一つの事に絞ってやるべきかもしれないと感じる時がありますが、私の場合は分散してやった方が調子がよいのです。
私は好奇心が強くて、気になる事があれば、知らないと気が済まない性質なのですが、基本的にのんびり屋ですので、生涯学習するのだから「ちょっとわき道にそれてもいいや♪どうせいつか学習する事だしな♪」と考えて、その日の気分に任せて学習しています。
例えば、CPUの話題を見聞きしたら、気になって仮想CPUを実装してみます。その過程で仮想マシンといえばインタプリタだと思いつき、次はインタプリタが気になり簡単なインタプリタを実装します。そうこうするうちに、OSが気になってミニOSを実装してみたりします・・・
そんな感じのたサイクルを好奇心の赴くままに繰り返し、今は数学とハードウェアが気になってきました。
という事で、ハードウェアを知るために、仮想マシンをまた作ってみようかと思ったのですが、前と同じ事をしても面白くありません。
そこで、オブジェクト指向プログラミングで仮想マシンを実装する事にしました。
これが当たりでした。とても面白い!
ノーマルにC言語で仮想マシンを実装するよりも、テストがやりやすいし、オブジェクト指向設計をするのが楽しい。
毎日少しずつ、設計→テスト→実装が出来るから、仕事が忙しくて集中出来ない私向きです。
C言語での実装とは違い、各要素が独立していますので、デザパタを適用してみたり、気になるアセンブラ命令を実装したり・・・と好きな放題できます。
将来は仮想マシンの実装を並列処理にしたり、仮想マシン上のOSを実装したり、ローダー&リンカの実験をしたりする予定です。この遊びを通じて、ハードウェア・OS・コンパイラ・並列処理・アセンブラ・オブジェクト指向を一度に学習するというわけです。
そして、一通り遊んだら、本格的なものを作っていこうと考えております。
本当はもっと早く、本格的なものを作ろうと考えていたのですが、なんだか腑に落ちない。
技術者としての勘が「足りないものがある」と言っています。
その足りないものを探すために、こうやって遊んでいるわけです。
足りないものが何なのか気になりますが、人生は長いので気長に情報処理技術を探求していきます。
そうしたら、私が理想とする情報処理技術の形が見えてくるでしょう。
自分でも不思議なのですが、無差別に手を出しているように見えて、私の中では全てが一つにつながっているんですよね・・・
その何かを見つけるために私は生きているのかもしれません。

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

中の人の徒然草359

今日も気になる本を発見♪



詳細な情報はここに書いています。凄く面白そうな本ですね。
関数型プログラミングを楽しむという発想の本は、今までの和書にはなかったと思います。
こんな面白そうな書籍が出るってことは、本格的に関数型プログラミングが通常化するのかも。
そうしたらF#でお仕事する日がきっと来るでしょう。
その日が楽しみです♪
それにしても、F#の本はまだ発売されないのかな?
もうそろそろ出てきてもいい頃だと思うな。

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

書籍をつつく141-SQLパズル 第2版 プログラミングが変わる書き方/考え方。SQL脳を作り上げよう!

お久しぶり♪今回はSQLに関する書籍を紹介するピヨ♪



この本は、題名通りSQLのパズルブックピヨ♪つまり、問題があって、その答えが考え方とともに書いてあるピヨ。イメージ的には、Java Puzzlers 罠、落とし穴、コーナーケースのSQL版だよ。
この本を読むと、SQLの考え方(集合指向)が身につくピヨ♪問題もとってつけたものではなくて、実務で似たような場面に遭遇したという人もいると思う。かくいうボクも同じで、いくつもの問題で、思い出が頭をよぎったピヨ♪
お勧めしたい人は、SQLに触れる人全員ピヨ。SQLの文法が分かっても、集合指向を身につけている人は意外と少ないピヨぉ。それも当然で、事例がすくないからだとボクは思う。その点この本はそれを補っており、プログラマのためのSQL 第2版と併読する事をお勧めするピヨ♪
SQLの文法だけ覚えている状態では危険なバグを生むピヨ。ここでいうバグというのは、デッドロック・酷いパフォーマンス・ファントムデータの発生・・・などといった、データベースにおける広い意味のバグだっピヨ。
最近のDBMSは賢くなったから、だいぶ改善してくれるだろうけど、SQLを下手に使うとデータベース特有のバグが大量の発生するから、文法を覚えるだけでは不十分で、この本で鍛えて集合指向の考え方を習得しよう♪

他の本のレビューも読みたいたい人は・・・書籍レビュー目次をチェックしてね♪

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

中の人の徒然草358

みんな、お久しぶり♪忙しくて、ブログを書く気力がないインドリです♪
面白い本が発売されるから紹介するよ。



この書籍は・・・



の続編だよ。
本格的に学習するのならば・・・



を読むべきだと思うけど、この本は初心者向きではないからAPIで学ぶWindowsプログラミング を読むといいと思います。
プロを名乗るならばAdvanced Windowsとインサイドを読むべきなんだけど、誰しもいきなり難しい本を理解するのはは無理だから、こういった入門書で学ぶのは良い事です。
私も昔APIで学ぶWindows徹底理解―できるプログラマになるための (日経BPパソコンベストムック)を理解してから、AdvancedとプログラミングWindows第5版〈上〉プログラミングWindows第5版〈下〉 を読みました。
C++を使用するWindows系プログラマにとって、今日紹介した本は必読書と言えるでしょう。
あと、.NET系プログラマも読むべきだと私は思います。.NETは快適で、Win32 APIの知識は必要ないと思われるかもしれませんが、やはり何時の時代もWindowsOSを知らないと真のプロフェッショナルとは言えません。
時代に関係なく根源を知る事は大事です。バブルは過ぎ去ったのですから、不況に備えて貪欲に腕を磨こう!
世間には明らかにツテ・コネで飯を食っている人もいますが、そんな人は不況になったらお終いです。
職場に学習意欲をそぐ人が居ても、気にせずに上だけを見て生きよう!
他人がどうであろうと、常に自分が上を向いて生きればいいのです。
本当に頼りになるのは、会社でもなく他人でもなく、自分の腕だけです。

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

プロフィール

インドリ

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カウンター