解析屋の険しい道のりを皆で一緒に
超えるのか転がるのか・・・
メインリスト
HOME
FEMAP-API
Nastran
Adventure
OpenFOAM
Salome
CAE Linux
言語色々
お父さんのHSP
ハンググライダー
自転車
猫&うさぎ
Blender等
サブリスト
Fortran
C++
VB.net with Sharp-Divelop
C#.net with Sharp-Divelop
Perl
言語色々
:Windows上でいろんな言語を使ってみる。
プログラム言語各種について、「なるべくコストを掛ける事無く勉強したい」という要望は多々あるのかな、と。 Linuxを入れてgccから始めるのも一つですが、Windows系しか経験した事が無い場合、 どうしてもLinuxはハードルを感じてしまうのではないでしょうか? エディタの使い方一つとっても。 もっとも、cygwinであればWindowsで使いなればエディタ(定番は秀丸でしょうか)をそのまま使えますし、 LinuxでもSambaをたててネットワーク経由で・・・っと、これができる方は心配無用ですね。
昨今では、各種プログラム言語開発環境はWin/Linuxの別無く(Macもかな)比較的容易にそろえる事ができます。 便利な時代になったものです。 ここでは、そんな開発言語各種について導入部分にだけ触れてみたいと思います。 そこから先は何を言ったところで本人次第ですので、がんばって行きましょう。
Fortran
C++
VB.net with Sharp-Divelop
C#.net with Sharp-Divelop
Perl
徒然なるままに:駄文が何かのお役に立てれば良いのですが・・・
複数言語を最低限のレベルであれ使えるようにしておくと、いろいろと便利な事が多いです。 FEMAPから.NETのAPIで必要な情報を抽出したり、自作のプログラムへの入力ファイルを作成したり、 Perlでlog分析をやったり、など等。 各言語にはそれぞれの得意分野があり、無理やり一つの言語で対応するより、 状況に応じて使い分ける方がはるかに楽です。
業務の中で、ちょろちょろっと作業の効率化を実施する事が主目的であれば、 言語仕様のコアな部分にまで踏み込まなくても、 そこそこの技術があれば相当にお役立ちだと思います。
ここでの項目のTopはFortranを挙げています。 このご時世にFortran?と言う方もいるでしょうが、私はやっぱりFortranが好きです。 書き方が比較的きちっとしていて、他人が書いたスパゲッティなコードでもある程度すぐに読めるし、 Cのようにメモリ管理にイライラせずに済むし(もっとも、私のスキルでは、の話ですが)。 でもF77ではなくいきなりF90から入ったんですよね。古い規格からやってもアホかなっと思いまして。 (で、会社で使う事になったプログラムはF77で組まれていて最初はちょっとだけ戸惑いました。) 今でも、ちょっとした作業はFortranでやってます。 伝熱解析は、自分で作ったプログラムでやってます。 ライセンスを気にする必要が無いし、なにより境界条件設定の自由度が圧倒的に高い事が魅力です。 ある時刻にある場所の境界条件をあるルールで制御して、別の場所は別のルールで制御して・・・なんて事を、 プログラムに直接書ける点が最大のPointですね。
他にも、過去には流体解析用の計算格子をFortranで書いてました。 メッシュをある方向に寄せたり、形状をキレイにするために調整したり・・・ 流体関係の書籍にほぼ必ずでてくる各種ツールをプログラミングして使ってました。 2次元平面で切ったメッシュを押し出して3次元化してみたり、 軸対称格子を3次元に拡張するのは楽で良いですが、なんだかんだで格子作成に2週間かかったりして大変でした。 一度作ってしまえば、各種パラメータを修正してドカンと格子を再作成したりするのは楽で良いのですけどねぇ。
ある種の解析で使用する格子は境界面での最小格子幅が非常に狭くなり (境界層内部に10点以上用意したりするので・・・で境界層が非常に薄い ⇒結果、最小格子幅が1.0E-7mとかのオーダーになってしまう事がある。)、 FEMAPでは格子がつぶれてしまってうまく処理できない事がありました。 そういう時には、やっぱりFortranで手で作成してしまいます。
注)Gridgenとかがあれば良いのですけど。 メインの業務としては最近構造or伝熱解析しかやってないので購入検討もしてません。
C系の言語はというと、C#は気に言ってます。 一時期C#+DirectXで3Dプログラミングをやってました。 ガベージコレクション・・・まぁ、メモリ管理にミリミリ気を使わなくて良いって事ですが、 それ以外にも言語仕様がやんわりしていて好きです。 さすがにJAVAの後発言語といった所でしょうか。 で、その3Dプログラミングですが、ある世界では有名なソフト用のモデラーを自作しようとスタートしました。 現状はモデラーではなくViewer止まりで、 それで用を足しているので(モデリングはFEMAP+Perl&手で地道にテキスト作成)活動停止しました。 気が向いたら、その時の成果物を一部修正してここにOpenしても良いかなぁ?とか。
他には、解析プログラムのJob管理ツールをC++(Borland)で書いて運用しています。 ユーザーはブウラウザで解析のJobを投入し、それをPerlでバッチファイル化して順次解析実行。 非常に単純なツールですが(Jobの削除は手作業)、 導入コストはまったく不要ですし(あぁ、一応工数か)、 土日や夜間に解析がバンバン走ってくれるし。 勝手に自己満足しています。
VB系はFortranプログラムにユーザインターフェースをつける為に (使用者がVBが良いというので・・・ソース丸ごと提供でした)使ったのが最初でした(VB6の頃です)。 で、現在は.NETでFEMAP-APIツール作成に利用しています。
Perlは、Nastranの出力ファイル(f06やPCHといったテキストファイル)を加工するのに使ってます。 最近はFEMAP-APIでやる事も多いですが(他のメンバーが使う可能性の高いツールはそうしてます)、 一過性のツールをちょいちょいっと作るのにはPerlが楽で良いかなと。 テキスト処理の楽さ加減が気に入ってます。
加えて、自分が書いた全ての報告書を検索できるようにデータベース化して運用しているのですが、 そこでもPerlを使ってます。 PHPとか使えばもっと良いのでしょうが、なにせ随分昔に作ったものをそのまま使い続けているので いまさら面倒なもので。
JAVAやPython、PHP、Rubyはちょろっと見てはみましたが、 とりあえず現状では業務で使う機会が無いので深くは(浅くも?)手を出していません (上ではPHPを使えとか言っておきながら・・・)。 Pythonはちょっと使いたいと思っているのですが・・・。
あと気になるけど見てない言語としてD言語でしょうか。