C# それと django
2007.03.23 Friday 00:38
今日初めてVisual C# 2005 Express Editionをインストールした.試しにプロジェクトを作ってタスクマネージャを見ると,いきなり実行されてる!まさにDelphiの生まれ変わり...これがFirst Impression
話は変わるがdjangoで少し作り始めたが,効率の善し悪しはわからないけど作っていて何となく楽しい.これだけは言える.
話は変わるがdjangoで少し作り始めたが,効率の善し悪しはわからないけど作っていて何となく楽しい.これだけは言える.
普段C/C++を使うので無償のVisual C++ 2005 Express Editionをインストールしてあるのだが,その中にある「Windowsフォームアプリケーション」というVisual Basicもどきが気になっていた.
これまで無視していたのだが,これは.NET Framework 2.0を使ったRAD環境とのこと.最初はこれを使ってみようかと考えていた.しかしC++でありながら妙な記号が混ざっていてC++ではない.
@ITのこの記事と@ITのこの記事(実は1年半前に一回読んだ)を見てC++/CLIの位置づけをとりあえず理解し,この記事のVisual C++でのRADは無理があるとの意見に同意してC#を試してみようと思ったのが本日.昨年.NET Framwork 3.0が出ているというのに何とも遅い反応だ<自分.でも.NET 1.1に比べて.NET 2.0ではC++, C#ともに拡張されていて,使えるコンポーネントも増えているので2.0から始める案は悪くないかもしれない.
ちなみにC++のフォームは上で紹介した記事に述べられているように.h (.cppではない!)の自動生成されたコードの途中に記述するというMFC以上にメンテナンスしにくそうな構造.それに対してC#ではpartial classを使って1つのクラスを複数ファイルに分けて記述できるので,自動生成部分と記述部分が別ファイルに分かれている.
ところで,何で昨日Rubyだと言ったのに今日C#を思い立ったのかについて.VisualuRubyはWindows APIのラッパーなのでWindowsでしか動かない.移植性を犠牲にするなら何のためのスクリプト言語なのかという疑問にぶち当たったからだ.Windowで動けば良くて実行ファイルサイズが小さいとなるとC#は(22MBの.NET Framworkの存在を前提にしているものの)コンソールのHello Worldで3KB,フォームアプリケーションでも20KBとエンジンが無いので極端に小さい..NET Frameworkの存在は前提にして良くてスクリプトエンジンは駄目かと言われると困るが...もちろんスクリプトエンジンがあればスクリプトの方はテキストで数行なのだから当然もっと小さい.
ただ,使用用途が開発用ツールであれば無償配布されているVisual ○○ 2005 Express Edition以上の存在を仮定することはそんなに不合理ではなく,これをインストールすれば.NET Framework 2.0が付いてくることを考えると.NET 2.0も十分検討する価値があるのではないかと思った次第.
C#で行こうと思ったもう1つの理由が.NET Framworkにはcsc.exeというC#コンパイラとMSBuild.exeというmakeみたいなビルドツールが含まれていること.巨大なIDEをインストールしなくてもビルドスクリプトとソースがあれば標準環境のみで再コンパイルができると思ったので(試してない).
さて,起動してみた感想.最初に書いたとおりプロジェクトを作成したとたんに実行ファイル名の付いたプロセスが動き出すのが気味が悪い.しかし,それがDelphiっぽい.Delphiが単なるお絵かきでなかったのは編集中もコンポーネントそれ自体がデザインモードで実行されるので,コンポーネントに合った多彩な編集表現が可能だったためではないかと思う.それとこれとが関係があるかどうかは知らないが何となくDelphiとC#は同じ人が創ったという話を思い出したら編集中に動いていても気にならなくなった.
しばらく前にMonoで動くVisual Basicができたという記事があったが,元々MonoではC#のコンパイラは開発されていた.Monoの完成度が上がることでWindowsで作ったのコードがクロスプラットフォームで生まれ変わることができるといいな.
話は変わって,既存のDBを元にdjangoを使ってインターフェースの構築を試みているのだが,djangoは何となく楽しい.まずurls.pyを設定して(動かないのがわかっているのに)そのURLをブラウザで開いてみる.するとそのエラーが次にすべきことを教えてくれるので,マニュアルの関連箇所を見てもう少しコードを埋めてといった感じ.あまりつまずかないで進めるところがよい.
ただ,テンプレートで変数名を間違えると何も出ないのはやや不親切.settingの変更で未定義とはっきりわかる出力を得ることも可能なのだが,今のところそこまでしなくても済んでいる.このあたりは慣れだろう.
前の話と無理矢理つなげると,PythonにはIronPythonというCLIの実装がある.monoでもサポートされているらしい.<全然つながっていない
これまで無視していたのだが,これは.NET Framework 2.0を使ったRAD環境とのこと.最初はこれを使ってみようかと考えていた.しかしC++でありながら妙な記号が混ざっていてC++ではない.
@ITのこの記事と@ITのこの記事(実は1年半前に一回読んだ)を見てC++/CLIの位置づけをとりあえず理解し,この記事のVisual C++でのRADは無理があるとの意見に同意してC#を試してみようと思ったのが本日.昨年.NET Framwork 3.0が出ているというのに何とも遅い反応だ<自分.でも.NET 1.1に比べて.NET 2.0ではC++, C#ともに拡張されていて,使えるコンポーネントも増えているので2.0から始める案は悪くないかもしれない.
ちなみにC++のフォームは上で紹介した記事に述べられているように.h (.cppではない!)の自動生成されたコードの途中に記述するというMFC以上にメンテナンスしにくそうな構造.それに対してC#ではpartial classを使って1つのクラスを複数ファイルに分けて記述できるので,自動生成部分と記述部分が別ファイルに分かれている.
ところで,何で昨日Rubyだと言ったのに今日C#を思い立ったのかについて.VisualuRubyはWindows APIのラッパーなのでWindowsでしか動かない.移植性を犠牲にするなら何のためのスクリプト言語なのかという疑問にぶち当たったからだ.Windowで動けば良くて実行ファイルサイズが小さいとなるとC#は(22MBの.NET Framworkの存在を前提にしているものの)コンソールのHello Worldで3KB,フォームアプリケーションでも20KBとエンジンが無いので極端に小さい..NET Frameworkの存在は前提にして良くてスクリプトエンジンは駄目かと言われると困るが...もちろんスクリプトエンジンがあればスクリプトの方はテキストで数行なのだから当然もっと小さい.
ただ,使用用途が開発用ツールであれば無償配布されているVisual ○○ 2005 Express Edition以上の存在を仮定することはそんなに不合理ではなく,これをインストールすれば.NET Framework 2.0が付いてくることを考えると.NET 2.0も十分検討する価値があるのではないかと思った次第.
C#で行こうと思ったもう1つの理由が.NET Framworkにはcsc.exeというC#コンパイラとMSBuild.exeというmakeみたいなビルドツールが含まれていること.巨大なIDEをインストールしなくてもビルドスクリプトとソースがあれば標準環境のみで再コンパイルができると思ったので(試してない).
さて,起動してみた感想.最初に書いたとおりプロジェクトを作成したとたんに実行ファイル名の付いたプロセスが動き出すのが気味が悪い.しかし,それがDelphiっぽい.Delphiが単なるお絵かきでなかったのは編集中もコンポーネントそれ自体がデザインモードで実行されるので,コンポーネントに合った多彩な編集表現が可能だったためではないかと思う.それとこれとが関係があるかどうかは知らないが何となくDelphiとC#は同じ人が創ったという話を思い出したら編集中に動いていても気にならなくなった.
しばらく前にMonoで動くVisual Basicができたという記事があったが,元々MonoではC#のコンパイラは開発されていた.Monoの完成度が上がることでWindowsで作ったのコードがクロスプラットフォームで生まれ変わることができるといいな.
話は変わって,既存のDBを元にdjangoを使ってインターフェースの構築を試みているのだが,djangoは何となく楽しい.まずurls.pyを設定して(動かないのがわかっているのに)そのURLをブラウザで開いてみる.するとそのエラーが次にすべきことを教えてくれるので,マニュアルの関連箇所を見てもう少しコードを埋めてといった感じ.あまりつまずかないで進めるところがよい.
ただ,テンプレートで変数名を間違えると何も出ないのはやや不親切.settingの変更で未定義とはっきりわかる出力を得ることも可能なのだが,今のところそこまでしなくても済んでいる.このあたりは慣れだろう.
前の話と無理矢理つなげると,PythonにはIronPythonというCLIの実装がある.monoでもサポートされているらしい.<全然つながっていない
Comments