[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)