アカウント名:
パスワード:
なんか気づいたらいろんなところで動いてた。知らん間にWrite Once, Run Anywhere
もともとjavaをかなり意識して作られたものだし、CLIって規格上は最初から特定プラットフォーム依存じゃなかったからね。当のMicrosoftがWindows以外の実装を長いこと作らなかっただけで。
言語仕様についてはおっしゃるとおりですが、マルチプラットホームを本気で考えていたかどうかは疑問ですね。
Microsoft製のCLI実装として、2001年に公開されたShared Source CLIというものがあり、FreeBSD版とMac OS Xが動いています。オブジェクトレイアウトなどが現行の.NET実装とほぼ一緒なので、現在のMicrosoft実装の原型と考えられるものです。2001年にオープンソースとして公開されました。MicrosoftのOSSへの歩み寄りの先駆けといえるソフトウェアです。
https://en.wikipedia.org/wiki/Shared_Source_Common_Language_Infrastructure [wikipedia.org]
2001年にはすでにマルチプラットフォームを検討していたということです。
すみませんオープンソース警察です。(コメACは分かっているのかもしれませんが)
シェアードソースCLI (コードネームRotor) はソースコードを公開しましたが、そのライセンスは利用目的を「個人的および学術的な目的」に限定していたので、オープンソース・イニシアティブが定義したオープンソースの定義 [wikipedia.org]には合致してないんですね。当然、コミュニティと共に実装を発展させていくという動きもありませんでした。Monoプロジェクトの創設者であるMiguelは「Rotorが(真の)OSSだったなら、Monoを作るかわりにそっちを使えていただろうに」 [hatena.ne.jp]と言ってます。
Rotorは言ってみればリサーチプロジェクトでしかなく、「マルチプラットフォームを検討」というのはあくまでリサーチの範囲での検討、ということでした。なので#3510350の「マルチプラットホームを本気で考えていたかどうかは疑問」は同感です。とはいえ、Rotorで実験的に実装されたプラットフォーム抽象化レイヤーが、その後Silverlightの実装にも生かされ、最終的に.NET Coreにも知見が反映されてはいるので、MS的には無駄ではなかったのでしょう。(Monoチームがどう思っているかは別として)
オープンソースとマルチプラットフォームは、理屈の上ではあくまで独立した話のはずだけど?
WindowsNTは、Microsoft単独で複数種のCPUに対応していたんだし、頭のどこかにマルチプラットフォームのことがあって不思議じゃない。
> #3510553「本気で考えていた」をどう受け取ったのかに差異があるんだと思います。リサーチは重要ですし、Rotorの時点で将来的なマルチプラットフォーム展開の可能性を切り捨てたわけではないと思いますし、前コメにも書いたようにRotorの知見が.NET Coreに反映されていると考えています。それでも個人的には、最低でも製品戦略に組み込んでロードマップ発表する、もっと言えば実プロダクトをリリースしたうえでバージョン3まで続ける、というあたりがMSの本気かなあと思うのです。マルチプラットフォーム展開に関するそういう意味での本気は、レガシー.NET Frameworkについてはゼロ、Silverlightでそこそこコミット、.NET Coreでフルコミットかなあと思います。私の感覚ですが。
> #3510719オープンソースとマルチプラットフォームが別の話なのはその通りですね。前コメは話題をちょっと混ぜてしまいましたが、別に「OSSにしなきゃマルチプラットフォームとは言えない」なんてことはさすがに思っていません。あと、「頭のどこかにマルチプラットフォームのことがある」レベルの話はたぶん誰も否定していません。上で書いたように「本気だったかどうか」については見解が分かれたみたいです。
「マルチプラットフォームを検討」=「マルチプラットフォーム化する際に障害になりうる要素を洗い出し排除する」というのが普通の開発だし、MSは本気でそれをやったことはいま大きなトラブルが起きてないことからわかるこういう人は「マルチプラットフォームを検討」=「いきなり実装」と考えているのかな?OSS界隈には頭より先に手が動く人が多いんだろうかそれはそれで結構なことだが、自分が先を見据えた設計ができないから他人もそうだとは思わないでほしいところ
知りませんでした。早期からマルチプラットフォームの取り組みはあったのですね。ただし、会社としてどの程度本気だったかはどうでしょうか。
もちろん分かっている。だけど、Exception.HResultとか、そもそも文字列がUTF-16であることとか、ときおりWindows由来っぽさを感じることは自分もあるよ。なので、元のコメント#3510350の気持ちも理解できなくはない。
Exception.HResultはともかくUTF-16なのは時代的な面もあるのでは?JavaだってUTF-16だったし、Unicodeの追加面が実際に定義されたのはC#の誕生より後。
そしてC#が生まれたころLinuxはEUCが当然だった。1990年代後半から2000年代前半にかけて16bitでは足りないと見切った人々の選択はUTF-32だった。UTF-8がローカルでここまで使われるようになると、どれだけの人が予想できただろうか。
いや、UTF-8 は交換用が主用途だろ…Linux/UNIX や Windows のいずれも UTF-8 を内部コードとしては使ってないよ。
それは詭弁というか、UTF-16がWindows由来っぽいって話とは別の次元では?
Javaを例に出して、グローバル文字列といえばUTF-16だったって言ってるじゃないですか。JavaScriptだって内部的にはUTF-16ですよ。文字コードを取得する古い関数なんかではそちらのコードが取得できます。
>> UTF-8がローカルでここまで使われるようになると、どれだけの人が予想できただろうか。> いや、UTF-8 は交換用が主用途だろ…UTF-8 がローカルで広く使われているという説を否定しています。
まずは一例としてlocaleコマンドの結果ゲロってみろよ
'locale' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
つか、マイクロソフトは.NETプロジェクト開始時点でWin9x、WinNT、WinCEと異なる系列のOSを抱えていたんだからCLIを非プラットフォーム依存の実装にするなんてのは当然だよ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
今更盛り上がってきてるよねC#ってか.NET (スコア:0)
なんか気づいたらいろんなところで動いてた。
知らん間にWrite Once, Run Anywhere
Re: (スコア:1)
もともとjavaをかなり意識して作られたものだし、CLIって規格上は最初から特定プラットフォーム依存じゃなかったからね。
当のMicrosoftがWindows以外の実装を長いこと作らなかっただけで。
うじゃうじゃ
Re: (スコア:1)
言語仕様についてはおっしゃるとおりですが、マルチプラットホームを本気で考えていたかどうかは疑問ですね。
Re:今更盛り上がってきてるよねC#ってか.NET (スコア:0)
Microsoft製のCLI実装として、2001年に公開されたShared Source CLIというものがあり、FreeBSD版とMac OS Xが動いています。
オブジェクトレイアウトなどが現行の.NET実装とほぼ一緒なので、現在のMicrosoft実装の原型と考えられるものです。
2001年にオープンソースとして公開されました。MicrosoftのOSSへの歩み寄りの先駆けといえるソフトウェアです。
https://en.wikipedia.org/wiki/Shared_Source_Common_Language_Infrastructure [wikipedia.org]
2001年にはすでにマルチプラットフォームを検討していたということです。
Re:今更盛り上がってきてるよねC#ってか.NET (スコア:4, 興味深い)
すみませんオープンソース警察です。(コメACは分かっているのかもしれませんが)
シェアードソースCLI (コードネームRotor) はソースコードを公開しましたが、そのライセンスは利用目的を「個人的および学術的な目的」に限定していたので、オープンソース・イニシアティブが定義したオープンソースの定義 [wikipedia.org]には合致してないんですね。当然、コミュニティと共に実装を発展させていくという動きもありませんでした。Monoプロジェクトの創設者であるMiguelは「Rotorが(真の)OSSだったなら、Monoを作るかわりにそっちを使えていただろうに」 [hatena.ne.jp]と言ってます。
Rotorは言ってみればリサーチプロジェクトでしかなく、「マルチプラットフォームを検討」というのはあくまでリサーチの範囲での検討、ということでした。なので#3510350の「マルチプラットホームを本気で考えていたかどうかは疑問」は同感です。とはいえ、Rotorで実験的に実装されたプラットフォーム抽象化レイヤーが、その後Silverlightの実装にも生かされ、最終的に.NET Coreにも知見が反映されてはいるので、MS的には無駄ではなかったのでしょう。(Monoチームがどう思っているかは別として)
Re:今更盛り上がってきてるよねC#ってか.NET (スコア:2)
オープンソースとマルチプラットフォームは、理屈の上ではあくまで独立した話のはずだけど?
WindowsNTは、Microsoft単独で複数種のCPUに対応していたんだし、頭のどこかにマルチプラットフォームのことがあって不思議じゃない。
Re:今更盛り上がってきてるよねC#ってか.NET (スコア:2)
> #3510553
「本気で考えていた」をどう受け取ったのかに差異があるんだと思います。
リサーチは重要ですし、Rotorの時点で将来的なマルチプラットフォーム展開の可能性を切り捨てたわけではないと思いますし、前コメにも書いたようにRotorの知見が.NET Coreに反映されていると考えています。
それでも個人的には、最低でも製品戦略に組み込んでロードマップ発表する、もっと言えば実プロダクトをリリースしたうえでバージョン3まで続ける、というあたりがMSの本気かなあと思うのです。マルチプラットフォーム展開に関するそういう意味での本気は、レガシー.NET Frameworkについてはゼロ、Silverlightでそこそこコミット、.NET Coreでフルコミットかなあと思います。私の感覚ですが。
> #3510719
オープンソースとマルチプラットフォームが別の話なのはその通りですね。前コメは話題をちょっと混ぜてしまいましたが、別に「OSSにしなきゃマルチプラットフォームとは言えない」なんてことはさすがに思っていません。
あと、「頭のどこかにマルチプラットフォームのことがある」レベルの話はたぶん誰も否定していません。上で書いたように「本気だったかどうか」については見解が分かれたみたいです。
Re: (スコア:0)
「マルチプラットフォームを検討」=「マルチプラットフォーム化する際に障害になりうる要素を洗い出し排除する」というのが普通の開発だし、MSは本気でそれをやったことはいま大きなトラブルが起きてないことからわかる
こういう人は「マルチプラットフォームを検討」=「いきなり実装」と考えているのかな?
OSS界隈には頭より先に手が動く人が多いんだろうか
それはそれで結構なことだが、自分が先を見据えた設計ができないから他人もそうだとは思わないでほしいところ
Re:今更盛り上がってきてるよねC#ってか.NET (スコア:1)
知りませんでした。早期からマルチプラットフォームの取り組みはあったのですね。
ただし、会社としてどの程度本気だったかはどうでしょうか。
Re: (スコア:0)
もちろん分かっている。だけど、Exception.HResultとか、そもそも文字列がUTF-16であることとか、ときおりWindows由来っぽさを感じることは自分もあるよ。なので、元のコメント#3510350の気持ちも理解できなくはない。
Re: (スコア:0)
Exception.HResultはともかくUTF-16なのは時代的な面もあるのでは?
JavaだってUTF-16だったし、Unicodeの追加面が実際に定義されたのはC#の誕生より後。
そしてC#が生まれたころLinuxはEUCが当然だった。
1990年代後半から2000年代前半にかけて16bitでは足りないと見切った人々の選択はUTF-32だった。
UTF-8がローカルでここまで使われるようになると、どれだけの人が予想できただろうか。
Re: (スコア:0)
いや、UTF-8 は交換用が主用途だろ…
Linux/UNIX や Windows のいずれも UTF-8 を内部コードとしては使ってないよ。
Re: (スコア:0)
それは詭弁というか、UTF-16がWindows由来っぽいって話とは別の次元では?
Re: (スコア:0)
Javaを例に出して、グローバル文字列といえばUTF-16だったって言ってるじゃないですか。
JavaScriptだって内部的にはUTF-16ですよ。文字コードを取得する古い関数なんかではそちらのコードが取得できます。
Re: (スコア:0)
>> UTF-8がローカルでここまで使われるようになると、どれだけの人が予想できただろうか。
> いや、UTF-8 は交換用が主用途だろ…
UTF-8 がローカルで広く使われているという説を否定しています。
Re: (スコア:0)
まずは一例としてlocaleコマンドの結果ゲロってみろよ
Re: (スコア:0)
'locale' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
Re: (スコア:0)
つか、マイクロソフトは.NETプロジェクト開始時点でWin9x、WinNT、WinCEと異なる系列の
OSを抱えていたんだからCLIを非プラットフォーム依存の実装にするなんてのは当然だよ。