[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00070] Re: Microsoft C#
http://www.ikyu.com[一休.COM]http://www.ikyu.com
ホテル宿泊価格最大50%オフ!!
☆☆何とあのリッツカールトンが二万円台で予約できるのはココだけ☆☆
《プレゼント締切迫る》 http://www.ikyu.com/present/present016.htm
--------------------------------------------------------------PR----
えんどうです。
上原さんから投稿いただきましたが、
From:アドレスが参加アドレスでなかったため配信されませんでした。
まだご本人に確認中なのですが、
内容がたいへん興味深いので
勝手ながら代理投稿させていただきます。
==============
上原です。
いつのまにかメーリングリストになってますね。
Hiroshi Kuno <hkuno@xxxxxxxxxxxxxxxx> writes:
> ご無沙汰しております。久野です。
>
> Microsoft の新言語 C# というのが出ました。
> http://japan.cnet.com/News/2000/Item/000627-2.html
>
> 言語仕様も公開になりました。
> http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp
>
> 伝統の Hello world はこんな感じ
>
> // hello.cs
> using System;
> class Hello
> {
> static void Main() {
> Console.WriteLine("Hello, world");
> }
> }
>
> C#のソースは一見 Javaソックリですが、よく見るとギミックが沢山あります。
> 所詮はMicrosoftの言語、大したことはなかろうと思っていましたが、
> 言語仕様を見る限り、かなりイケテル感じです。
>
> ・無符号整数型: ushort, uint, ulong
これは賛成。やっぱほしいっす。
> ・28桁の正確な10進数型(BCD?): decimal
>
> ・本物(?)のポインタがある(うむむむ)
わはは。GCはどうなってますでしょうか?
> ・デストラクタがある(うむむむ)
>
> ・enum,struct により基本型(非オブジェクト)を追加できる
>
> ・C++の参照型引数に相当する ref 構文、out構文:
> 例:void swap(ref int a, ref int b) { int t = a; a = b; b = a; }
> void div(int a, int b, out int q, out int r) { q = a / b; r = a % b; }
やめてほしいなあ..。
「参照先」は変更できないんですかね。
> ・C++のoperatorオーバーロード
>
> ・制御文 foreach: foreach (int i in array) ...
うひ。ユーザ定義型についてもin ...が使えるんでしょうか。
> ・プロパティ構文: string caption { get { return s; } set { s = value; }}
これはdelphiからのパクリですか。
> ・派生クラスでメソッドを上書きする場合には override 宣言が必須
これは納得。でもoverrideだらけになりそう。
> ナドナド。。。
なるほどです。参考になりますです。
私も今朝からこの情報を入手し、
introductionを翻訳しようとおもってたところです。
日本語にしないと理解できないたちので..。
とりあえず最初のとこだけ訳してみましたのでこのメールの末尾につけて
送ります。
ところでまだ全部読んでないのですが、いくつか疑問が。
・これって、「共通実行エンジン」で動くインタプリタなんでしょうか。
コンパイラからはexeが出るようですが..。だとして、CPUネイティブな
コードなのかそうではないのか。
・クラスライブラリがないということは、
コレクションはVBからつかえるみたいな、変なActiveXコントロールの
コレクション(コンテナ)を使うしかない?STLの立場は?
・文字列コードはunicode?
┏━━━無許可翻訳開始
C# はCとC++ から導かれた、単純で現代的な、そして型安全なオブジェクト指
向プログラム言語です。 C# ("Cシャープ"と発音します)はCと C++の系統の言
語としてしっかりと計画されているので、Cと C++ のプログラマーにはすぐに
慣れ親しむことができます。 C# はVisual Basic の高い生産性と C++ の生の
力を結合することを目指しています。
C# はMicrosoft Visual Studio7.0の一部として供給されます。C# のほかに、
Visual StudioはVisual Basic 、Visual C++ とスクリプト言語 VBScript、そ
してJScriptをサポートします。 これらすべての言語は .NET プラットホーム
をアクセスすることができ、共通の実行エンジンと機能が豊富なクラス・ライ
ブラリを含んでいます。 .NET プラットホームは「共通言語サブセット」
(Common Language Subset,CLS)を定義し、CLS に従っている言語とクラス・ラ
イブラリ間でのスムーズな互換性を保証する共通言語の一種を定義します。
このことはC# デベロッパーにとっては、C # は新しい言語ではあるけれども、
Visual Basic やVisual C++のような経験豊かなツールで使われてきた、機能
豊富なクラス・ライブラリと同じものを完全にアクセスできることを意味しま
す。 C# それ自身はクラス・ライブラリを含みません。
この文書はこの言語の中心的な特徴を記述するものであり、完全な言語仕様書
であることを意図していません。 この文書の意図は、読者に対して手っ取り
早くプログラムをかいたり、あるいは完全な言語仕様書を読むのを容易にする
ように言語を紹介することです。
Hello, world
典型的な" Hello, World"プログラムは次のように書くことができます:
using System;
class Hello
{
static void Main() {
Console.WriteLine("Hello, world");
}
}
C# プログラムのソースコードはhello.cs のようにファイル拡張子cs をもち、
典型的に1つあるいはそれ以上のテキストファイルに保存されます。 Visual
Studio で提供されるコマンドラインコンパイラを使用し、このプログラムを
以下のようにコマンドラインからコンパイルすることができます。
csc hello.cs
これによりhello.exe という名前の実行可能なプログラムが生成されます。
このプログラムの出力は以下のとおりです:
Hello, world
プログラムの精密な説明:
・using System; 指令は .NET クラス・ライブラリによって供給される
「Sysetm」と呼ばれるnamespaceを参照します。この namespace はクラスが
Main メソッドが参照するConsoleクラスを含んでいます。 Namespaces はク
ラス・ライブラリの要素を組織化するための階層的な意味を提供します。
"Using"指令はnamespace のメンバーである型を、修飾せずに使用すること
ができるようにします。 " Hello, World"プログラムは
System.Console.WriteLine の略記として Console.WriteLine を使用します。
・Mainメソッドはクラス Hello のメンバーです。 Mainメソッドはstatic修飾
子を伴っているので、このクラスのインスタンスというよりはクラス上のメ
ソッドになります。
・プログラムのメインエントリポイント - 実行開始時に呼び出されるメソッ
ドは、常にMainという名のstaticメソッドです。
・“Hello, World”の出力はクラス・ライブラリの仕様を通じて生成されます。
言語はそれ自身のクラス・ライブラリを供給しません。 その代わりに、
Visual Basic やVisual C++ のような言語によっても使われる共通のクラス・
ライブラリを使用します。
CとC++ デベロッパーにとっては、“Hello, World”プログラムに現われ*ない*少
数のものに気付いたなら、面白く思うでしょう。
・プログラムはグローバルなMainメソッドを使用しません。 メソッドと変数
はグローバルレベルで使えません; それらは常に型宣言(例えば、クラスや
struct 宣言)の中に含められます。
・プログラムでは"::"や"->"オペレータは使われません。"::"はまったくオペ
レーターではなく、" ->"オペレーターはただプログラムの小さい断片にお
いてのみ使われます。セパレータ"."はConsole.WriteLineのような複合名で
使われます。
・プログラムは前方宣言を含みません。 前方宣言は、宣言順序が重要ではな
いので、決して必要とされません。
・プログラムはプログラムテキストを読み込むために #include を使いません。
プログラムの間の依存性は、テキスト処理ではなくむしろシンボリックに処
理されます。 このシステムは、異なる言語で書かれたプログラム間の障壁
を排除します。 例えば、Consoleクラスは他の言語で書くことができていま
す。
┗━━━
--
§NTTS○FT 技術開発部エレクトロニックコマース技術センター 上原 潤二 §
PGP Key fingerprint = B7 C0 CB 1F 1C 88 69 2A 25 36 8A EE 93 A3 61 72
==============
--
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.javaopen.org/jfriends/index.html (Japanese Only)