プログラミング本を買うときに思うこと

プログラミングはネットの情報だけで一から勉強するのは難しいと思います。どうしても本のお世話になることが多いと思います。私はプログラミングのプロじゃないので、これを読んでまだまだだなと思う方もいらっしゃるかもしれませんが、参考にしていただける方が世の中に一人でもいればと思い書かせていただきました。
●プログラミングの本はどこで買うか。
・基本は大きな本屋さんです。
自分の欲しい情報が大きく取り上げられている本を見て確かめて買うことができます。
・本屋さんで手に入らない本はネットで注文
信頼の置ける出版社でタイトルを見ただけで間違いないと確信できる本はネットで買ったほうがいい場合もあります。今は中古本も状態のいいものがネットで手に入る時代になりました。
●入門書を買うときに気をつけること
・タイトルだけで選ばない。
自分はそのプログラミング言語に対してどこを強化しようとしているのか、明らかにしてから本を選ぶ。ソースをひたすら打ち込みたいのか、辞典が欲しいのか、一から勉強したい場合でもまずは手始めにどんな機能の実装をしてみたいのか。
・結局一冊の本の最初から最後まですべてを吸収する場合は少ない
読まない部分が多くても間違いなく使える内容を含んでいる本を選ぼう。
●最後に
・必ず積んだままで読み終わったりする本も出てきますが、人の興味の対象が時々刻々と変化するのは仕方がありません。経験値を積むことで目が養われていきます。

広告

VisualC++を活用するには

Visual C++とはC++言語を使ってWindowsのアプリケーションソフトを作れるマイクロソフト社製開発環境のことです。
Windowsのソフトを作るとき、自由度が高く高速でコンパクトな実行ファイルを作るのにこれが一番の開発環境だと思って研究してきました。でも今は速く楽に作れる開発環境が主流のようですが、せっかく身につけたスキルはもったいないので活用しています。
これからVisualC++を身につけたい人のためにちょっと書いてみます。
Visual C++を身につけるために必要なこと
●自分は何を作りたいのか、具体的にいくつか思いつくことがないと厳しい。
すでに手に入れられるシステムで満足できる場合は他の人が作って完熟したものを使った方が失敗は少ないと思います。
●もっと簡単な開発環境で作れないのか。
モノによってはExcelのマクロで作ったりVBを使って素早く作れないと価値のない場合もあります。できあがった部品の再利用をした方が信頼性の高い場合もあります。
●どういう順番で勉強していけばいいのか思い浮かぶか?
いきなりVCの本にあたっても厳しいでしょう。C言語、C++言語、VCの本の順番が基本です。
●困難な壁を越えられるか。
まずソースを見慣れなくてはなりません。
ビルドのエラーを直せなくてはなりません。
実行後のエラーを直せなくてはなりません。
ヘルプから情報を拾ってこれなくてはなりません。
●一番大事なことは
研究を続ける自分の気持ちでしょう。
私は10年以上VCとつきあってきていて、簡単な自分用ソフトしか作れないけど、本当にVCが好きになれる人にしかすすめられないなあ。

ExcelVBA超高速化技法か?

ExcelVBAで大量のデータ処理を行うと時間がかかって仕方のないことがあります。そこで少しでも速くする方法を思いついたので書きました。
結論
セルの値を大量に変えるときは変数を使おう。
以下、1~10000の和を求めるループを10回繰り返したときの時間を表示するプログラムです。Excel2000用なので他の環境での動作は不明です。動かすときはテキストエディタを使って全角スペースを半角スペースに置き換えましょう。
ここから~
Private Declare Function timeGetTime Lib ”winmm.dll” () As Long
Sub セル上で計算()
Dim i As Long
Dim j As Long
Dim t1 As Long
Dim t2 As Long
t1 = timeGetTime()
For i = 1 To 10
ActiveSheet.Cells(1, 3).Value = 0
For j = 1 To 10000
ActiveSheet.Cells(1, 3).Value = ActiveSheet.Cells(1, 3).Value + j
Next j
Next i
t2 = timeGetTime()
ActiveSheet.Cells(1, 1).Value = ”セル”
ActiveSheet.Cells(1, 2).Value = ”10000までの和”
ActiveSheet.Cells(1, 4).Value = ”かかった時間(ミリ秒)”
ActiveSheet.Cells(1, 5).Value = t2 - t1
MsgBox ”計算を終了しました。”
End Sub
Sub 変数上で計算()
Dim i As Long
Dim j As Long
Dim j_sum As Long
Dim t1 As Long
Dim t2 As Long
t1 = timeGetTime()
For i = 1 To 10
j_sum = 0
For j = 1 To 10000
j_sum = j_sum + j
Next j
Next i
t2 = timeGetTime()
ActiveSheet.Cells(3, 1).Value = ”変数”
ActiveSheet.Cells(3, 2).Value = ”10000までの和”
ActiveSheet.Cells(3, 3).Value = j_sum
ActiveSheet.Cells(3, 4).Value = ”かかった時間(ミリ秒)”
ActiveSheet.Cells(3, 5).Value = t2 - t1
MsgBox ”計算を終了しました。”
End Sub
~ここまで
私の家の環境では、セル上で計算の方のプロシージャを実行したところ17~35秒くらいかかりましたが、変数上で計算の方では(キャッシュにヒットすると?)1ミリ秒もかからないことが多いみたいです。
驚異の高速化?です。
セル同士で代入を繰り返すのと比較して、セルの値を変数へコピーし計算処理を行い、最終結果を再びセルにコピーし表示することは高速化に有効なようです。