June 09, 2006

fortran

最近行列の演算関係のプログラミングが多く, fortran ばっかり触っている.

既にかなり時代遅れの感がある言語だが,数値計算の類のライブラリは充実しており,今私がやっている方面では fortran に頼らざるを得ない.

正直,使い始めるまでは結構気が重かったのだが,しばらく書いてみると,「意外に書きやすいなあ」というのが今の感想.

確かに,名前が6文字までしか駄目(最新版では解消?)とか,暗黙の型宣言(回避方法はある)とか,構造体が無い(最新版では解消?)とか,欠点はある.しかし,自分一人で半分実験しながらあれこれ書く,ということであれば,これらにそれほど悩まされることは無い.

引数も参照渡ししかないので,あんまり変なエラーは出ない.また,ライブラリのバグが出尽くしている感があり,安心して色々繋ぐ事ができる.

長く生き残っているものには,それなりの理由があるもんだね.

| | Comments (2) | TrackBack (1)

December 20, 2005

ソフトウェア業界

私は最近まで存在を知りませんでしたが,以下のリンク先はうちの業界では割合有名な文章です.

(コ)の業界のオキテ

一読の価値はありますね.概ね当たってる気がします.

まあこれを読めば,最近流行の某証券会社のトラブルなどは氷山の一角であることは自明・・・.

| | Comments (2) | TrackBack (0)

December 18, 2005

C++

私の開発のメイン言語です.

とは言っても,それほどプログラムばっかり書きまくってる訳でもないので,そんなに知識は無いです.まあ,そこそこ知ってる程度でしょうか.

一応私が引っ掛かったポイントをまとめてみました.勿論これで全部では無いですが,逐次 UP していければ良いなと思ってます.大体のレベルとしては,独習 C++ とかはそれなりに理解してて, Effective C++ と格闘中くらいの人を想定してます.

C++

初めての人とか,中上級者は,多分読んでも意味ないです.

| | Comments (0) | TrackBack (0)

December 10, 2005

CVS

CVS というのは,プログラムのソースを効率よく管理する為のツールです.

個人で小さなものを作っている場合には,導入するメリットはあまりないですが,多人数でそれなりの規模のものを開発する際には威力を発揮します.

「バージョンごとのバックアップを,最新版との差分で管理する」というのが核となるアイデアです.確かにでかくなってきたら,毎回全コピーなどしてられないですからね.

ただ,私はあまりこのツールが好きではなく,研修で使って以後は敬遠してきました.

ところが,今度の開発ではどうもこいつを使わないとまずいらしく,ある程度使い方を覚える必要が出てきました.

CVS

これは一気には書ききれないので,少しずつ増やしていこうと思います.また,これは主に自分用のメモなので,一から勉強する方や,詳しく調べたい方は別のサイトのまとめの方を見たほうが良いです.

| | Comments (0) | TrackBack (0)

November 18, 2005

スクリプトの実行速度

先日テスト用に大量の入力ファイルを作成する必要がありました.

面倒なので適当なスクリプトを書いていたら,必要なもの一式を作成するのに随分時間がかかってしまいました.原因は非常につまらない事なのですが,普段意識していない人もいるかもしれないので,一応 UP.

スクリプトの実行速度

| | Comments (2) | TrackBack (0)

November 09, 2005

cygwinと共有ライブラリ

一応 UNIX 環境とは言え,cygwin は windows 上のアプリケーションである. .so 形式のライブラリを共有ライブラリとしてリンクできるはずが無かった.

ちょっと気づくの遅かったなあ.

| | Comments (0) | TrackBack (0)

November 03, 2005

gcc

去年はずっと windows 環境一色で,開発もすべて Visual Studio だったのですが,今年は Linux で gcc を触る事が結構ありました.

たまにしか触らないと,覚えておくべき事項が結構抜けてしまいますね・・・.

主に自分用に, gcc の定番オプションのメモをアップ.
gcc 定番オプション

詳細なオプション一覧は結構どこかしこにありますが,程々のものが案外世の中には無かったです.意外でした.

| | Comments (0) | TrackBack (0)

January 11, 2005

循環インクルード

循環インクルードとは、その名の通り、インクルードするヘッダファイルが循環してしまうことにより生じるエラーの事を言います。

本で読んだ時は、「こんなミスするのは馬鹿だけだ」とか思っていましたが、今日ついにやってしまいました。VCのエラーメッセージが不親切で、発見にかなり時間がかかりました。(エラーメッセージには、インクルードできません、みたいな表示がでてくるので、最初はインクルードファイルの名前の打ち込みミスかと思っていました)

設計をしっかりやって、その通りにコーディングしていくタイプの人だと、この手の間違いはしないと思いますが、私は、設計⇒実装⇒テスト⇒修正 を小刻みに繰り返すタイプのやり方なので、はまったのかもしれません。あんまりこういうつまらん所で時間取られたくはないもんですな。

| | Comments (8) | TrackBack (1)

December 02, 2004

C++

私は開発言語でC++を使っていますが、この言語はとにかくメモリ管理に関してうるさい。ちょっと油断してると、すぐにメモリリーク系のエラーが発生します。まあうまくソースを書けば、その分早く動くんですけどね。

多分JAVAとかC#とかだと、この辺の話は意識しなくて良いんでしょうな。そのかわりメモリを大量に食うわけですが。

しかし実際の所、多少遅いと言っても高々定数倍程度の話。正直、仕事で使うのでなければC++お勧めしません。結構落とし穴が色々あって、それらを回避する知識の習得に時間がかかります。ちょっと触ってみたいなあという人には断然JAVAの方を勧めます。


情報処理試験受かってました。良かった。

| | Comments (4) | TrackBack (0)

November 30, 2004

限界値

今日仕事でプログラム書いてたら、意味不明な所でエラーが出ました。

いつものように、デバッガを使ってエラーの原因を探っていく事1時間。ようやく判明した原因は、 86400 と 28800 の最小公倍数が何故か -62436 (値は多少違ったかも)。86400 と 21600 ならきちんと 21600 と出るのに・・・。

何故だ(゜д゜メ)ゴルァ 。

原因は、 32bit機の long 型の上限でした。計算途中で上限 2 の 32 乗(大体21億5000万)を超えてしまうんですよね。 86400*21600 は耐えたが 86400*28800 は耐えられなかった訳ですな。

これは私の作った最小公倍数導出関数がへたれなのも原因でした。私は2数 a, b の最小公倍数を (a*b)/GCD(a,b) で求めていたのですが、これだと先に計算した a*b が上限を突破してしまう可能性が高くなるんですよね。 a*(b/GCD(a,b)) あるいは (a/GCD(a,b))*b としてれば問題無かったのです。

勉強になりました。

| | Comments (0) | TrackBack (0)

October 13, 2004

cygwin と awk

今日はこの二つのあわせ技で大幅に時間をロスしました。

cygwin というのは、 windows 上でも LINUX 的な環境を構築するためのフリーのツールです。若干敷居は高いですが、慣れるとなかなか便利です。

んで、 awk というのは UNIX に大体デフォルトで付いているテキスト処理用の簡易言語です。Perl 知ってる方なら、Perl の簡易版と考えても良いかと思います。

実は先日からしばらく、文字列処理をずっと C++ でやり続けており、ようやく自分のアホさ加減に気が付いた所でした。「うおーこりゃ楽だぜ」とか思いながらスクリプトを書き終えて実行させた所、

改行がなぜか全部二回実行される・・・

なんでやねん (;`д´)ノ


犯人は二人いました(-人-)。

1つは、 awk の仕様。改行は空白文字扱いにならないそうです。なので、文字入力後直ちに改行している行だと、awk は改行も文字の一部とみなしてしまいます。

これだけならまだ良かったのですが、もう一人犯人がいました。一般に windows では改行コードは CR+LF 、 UNIX 系OS なら LF という風になってます。 cygwin も例によってデフォルトは LF なのですが、何故か cat コマンドだけ CR+LF で出力されるらしいです。

そんなん知るか(;`д´)ノ

今日は疲れた。

| | Comments (4) | TrackBack (1)