プログラミング言語 開発スレ( ´�D`)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNGマジ?そのネイティブコンパイラってオプティマイザ込み?
0155デフォルトの名無しさん
NGNGネイティブバイナリの出力フォーマットはPE?ELF?
それともコンパイル済みのコードをリソースとして保持して
実行ファイルにはローダを作り込む?
015639
NGNGCOFFにするか、直接PEを吐くかはまだ決めていない。
COFF/OMFが吐ければ便利だけど、他言語との連携を考えないといけないからな。
0157デフォルトの名無しさん
NGNGエレガントなOOPLね。オブジェクト指向周りの設計が難しいな。
実際の所、プロトタイプベースの言語以上の柔軟性って思いつかないし、
実行パフォーマンスとのバランスを考慮すればC++が最良の解に思える。
でもそういう既成言語を踏襲するだけじゃエレガントの内には入らないんだよね?(w
015839
NGNGんー、漏れが考えているのはC#程度まではシンプルになった
C++がいいかな、とは考えているんだが。
ファイルベースのモジュールじゃなくて、シンボルベースにしたり、
今のC++の古いところを取り除いて。
ああ、それから、GCをネイティブで搭載したいな、とも。
0159デフォルトの名無しさん
NGNGdelegate なんかは俺はエレガントとは思えないんだけど、便利ではある。
あと attribute もエレガントとは思えない。
でも、そういう特徴を除いちゃうとDじゃんって話になる。
もちろんそのまま取り入れるだけだったらC#じゃんって話になる。
そこはやっぱり差別化しなくちゃいけないよね。
templateの有無なんかはどう見てる?
016039
NGNGそれを言ったら言語を作る意味がなくなっちゃうしな。
attributeは泥臭いと思うし、delegateもいいアイデアがあれば違う形で、と。
別にC#を踏襲するつもりは全くないです
っていうか、言語仕様をこのスレで話し合ってくれ〜って事なんですが。
それから、静的型付けマンセーなんで、templateは導入したいけど、
C++そのままというのはちょっとイヤだから、いろんな言語を見て研究、と。
Java Genericsもイマイチピンと来ないし。
0161デフォルトの名無しさん
NGNGフラグ値と列挙値は区別して。
プリミティブは従来のshort,longじゃ無くてint16,int32のように。
templateの魅力はinline展開されてこそだと思うけどその辺はどう思う?
0162デフォルトの名無しさん
NGNGtemplateのinline展開は必ずしもコンパイル時にやらなくても、
JITを使うとして実行時の処理に任せるというのも手だと思うな。
016339
NGNGオブジェクト参照やvoid*を使ったポリモーフィズムじゃなくて、
タイプセーフを保ったまま総称を実現出来る事じゃないかなぁ
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGコンテナではそれも大きいんだけど(キャストうざい&コンパイル時チェックできない)。
アルゴリズム側から見ると、ポリモーフィズムでも別にいいじゃん、って話にならない?
0166デフォルトの名無しさん
NGNGtemplateがポリモーフィズムだけでお終いってことはないと思う。
0167デフォルトの名無しさん
NGNGdelegateは関数ポインタのお化け(型)でeventはフィールド・・かな?
delegate型のメンバも作れるけど代入演算子が使えるとか、問題が多いからeventでラップする。
C#ってdelegate作った後にevent作らなきゃいけなくて、なんか2度手間のように感じてしまう・・・いい方法無いかな?
016839
NGNGそれはならないでしょう。
タイプごとに別に関数・クラス実体を作成するから、たいした問題では無いと思う
>>165
プログラマ側からの実現手段はどうでもいいんだけど・・・
特にインライン展開を導入するメリットが感じられないし、
そもそも、それが足かせになるようなクリティカルな要求に耐えうる
処理速度は実現できないだろうし。
それから、万が一オプティマイザを搭載する事になったら、
そのときに自動判断で展開するようにすればいい。
templateを無条件インラインにしちゃうと、
inlineキーワード追加しないとならないし、どんどん言語仕様がシンプルじゃなくなるでしょ
016939
NGNGそれでも、テンプレートの本質はこれでしょ?
あのスレの話題はそれを発展させたトリックであると言うだけで。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG一般化された概念としてのポリモーフィズムとしてはそうだね。
C#/Java/C++などで言われるところのポリモーフィズムでは不足。
でもその辺を追究していくとHaskellになっていくような・・・。
0172デフォルトの名無しさん
NGNGCのような単なるchar配列というのもなんだか使えないし。
C++のbasic_stringはSTLとあわせると強力だけど、パフォーマンス的にあれだし。
JavaやC#のように行くの?
017339
NGNGテンプレートについては私自身勉強不足な点は多いんで、
何かいいことがあればどんどん書いてほしいと思いますが
>>172
本当にでbasic_stringのパフォーマンス悪いと思いますか?
参照渡しじゃなくて、コピー渡しを多用していませんか?
string型の実装は基本的にクラス(ライブラリ側)で、
言語によるサポート有りのC#/Javaの様な物を考えてます
そもそも、こういうミクロな話じゃなくて、
もっと言語のポリシーや構文を決定するマクロな話からしたほうがいいかと。
基本的に、質問じゃなくて、アイデアを提案してください
私が仕様を決定するのではなく、私は単なる1実装者でありたいので。
0174デフォルトの名無しさん
NGNG新しいフィーチャーはなくてもいいから実用十分な機能があって使いやすいのがいい。
結局は、C#と似たり寄ったりになるんだろうけど、もっと文法はシンプルな方がいい。
0175デフォルトの名無しさん
NGNGGUIフレームワークを最初に作り、それに親和性の高い構文を持つ言語とする
と言うのが理想かな。
どうせ2chの烏合の衆じゃ一般化された素晴らしい言語仕様なんて作れないだろうから
0176デフォルトの名無しさん
NGNGはい、喧嘩売るなら自分で実装してからにしてくれ。
0177デフォルトの名無しさん
NGNG前半部は同意
窓をサクっと書きたいね
0178
NGNG循環するもの
0179デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/prog/961558082/l50
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG★☆★☆★☆ 糸冬 了 ☆★☆★☆★☆
0183デフォルトの名無しさん
NGNG暇人は帰れってことですか?(泣
とりあえず継承の構文はまだですよね?
018439
NGNG継承って単一継承か、Javaの用に実装一つインターフェース複数にするか、
それすらも決まってないようです。
>>10-12の型推論は面白そうだけど、実装がちょっとめんどくさそうですね。
MLの型推論に関する文章読んでます。
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGmix-inの概念がよくわからないので、詳細キボン
0187185
NGNG多重継承と同じでインターフェースと実装を継承できます。
mix-inされるモジュールは通常のクラス定義と同じように
インスタンス変数とメソッドを定義できますが、モジュールは
スーパークラスを持たず、また、単体ではインスタンスを生成
できないと言う制限が付きます。
クラスは一つのスーパークラスと複数のモジュールを継承できるので
クラスを横断するような実装を再利用しやすくなります。
‥‥といふのが私の認識ですが間違ってたらつっこんでやってください。
0188デフォルトの名無しさん
NGNGpublic:
foo();
}
class IClass {
public:
bar();
}
class Class : IClass {
public:
mix-in(Aclass)
}
こうするとClassは
Class : IClass
+foo()
+bar()
こんな感じになるって事?
0189デフォルトの名無しさん
NGNGmix-inの実装されてる言語の構文は良くわからないけど、こんな感じ?
// 継承不可能、インスタンス変数もメソッドの実装も可能
module SomeModule
{
hoho(){ write("HOHO"); }
}
// インターフェイスだけ継承可能、メソッドの実装は不可能
interface SomeInterface : OtherInterface
{
huhu();
}
// classは単一継承、他はなんでも可能
class SomeClass : OtherClass, SomeModule, SomeInterface
{
huhu(){ hoho(); }
}
0190185
NGNG>>189
両方よろしいかと思います。
>>188はRubyがそんな感じ(includeだったと思うけど)
多重継承と同じく名前の衝突の問題が出てくるのですが、
CLOS流:
クラスやモジュール間に優先順位を持たせる。
Eiffel流:
明示的にRenameする。
のやり方があると思います。
……個人的にはCLOS流が好きですが、静的型付けの好きなタイプの
ひとはEiffel流を好むような気がします。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGinterface First{ void hoge(); }
interface Second{ void hoge(); }
class Class : First, Second
{
void First.hoge(){ /* first hoge */ }
void Second.hoge() { /* second hoge*/ }
}
みたいに。
0193デフォルトの名無しさん
NGNGC++流やね
0194185
NGNGほんとの多重継承だとスーパークラスの探索がツリーになるので
イヤな感じですが、mix-inの場合はスーパークラスを持たないので、
クラスとスーパークラスの間にリニアに挿入するだけで済むと思います。
つまり単純継承とそんなに違わない。たぶん。
(でもインスタンス変数のベースアドレスのオフセット計算は必要か。)
>>192
Renameをいちいち書くのは面倒だし優先順位のやり方だとアクセスできない
メソッドやインスタンス変数が出てくる場合があるのでナイスなアイデアかも。
0195189
NGNG多重継承のせいで同じ基本クラスが複数含まれてしまう問題と、
インターフェイス内でメソッドの実装が行えない問題の
両方に対してなかなかいい答えを出してくれると思う。
class // 参照型、インスタンス化可能
struct // 値型、インスタンス化可能
interface // インプリメントするクラスによって変わる、インスタンス化不可能
module // インクルードするクラスによって変わる、インスタンス化不可能?
enum // 値型、{0,1,2,3,4}、演算結果はint(再代入不可能)
flag // 値型、{1,2,4,8,16}、ビット演算の結果はflag(再代入可能)、それ以外はint
これくらいあるとうれしい。
え?多すぎる?
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG漏れは>>10の様にclassキーワードをつけないのが好みだったり
0198デフォルトの名無しさん
NGNG漏れは変数にはvar、関数にはfuncつけたほうがいいとか思ったり、でもそれは面倒だとも思ったり。
0199デフォルトの名無しさん
NGNGメソッド定義の場合に限定するとかしないと、
class
interface
module
なんかの区別がうまくできない気がします。
ところでstructってやっぱり必要?
0200デフォルトの名無しさん
NGNGでも、コンパイラ制作者ががんばれば出来ないことも無いと思うが
0201デフォルトの名無しさん
NGNGC#みたいにintやlongをstructとするといろいろ幸せなことが多いです。
確かintを継承したり出来ますよね。
あ、そうそう、演算子のオーバーロードもほしい、オーバーライドもあるとなおうれしい。
0202デフォルトの名無しさん
NGNGclassをmix-inすればいいんでないの?
0203デフォルトの名無しさん
NGNGmix-inされるクラスは他のクラスを継承してはいけないとか制限があるから、
ただわかりやすくするため、程度に。
メソッドの宣言しか出来ないクラス(に似たもの)をinterfaceと呼ぶのと同じ気分で。
0204デフォルトの名無しさん
NGNGシンプルで敷居の低い言語であってほしい
何でもかんでもごちゃごちゃ入れちゃうと、
C++っぽくつぎはぎだらけに・・・
0205デフォルトの名無しさん
NGNG(こいつらの使用頻度自体が低いことはおいといて・・・)
0206デフォルトの名無しさん
NGNGコンパイラ作るには仕様ががちっと決まっている必要があるぞ。
何スレ目までかかることやら・・・。
0207デフォルトの名無しさん
NGNG複素数や巨大な数のクラスは言語標準でサポートすれば
>>206
500過ぎても構文が決まらなかったらwikiを設置しよう
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG言語仕様は小さいほうがいいなぁ。
0210デフォルトの名無しさん
NGNG禿て同感
0211デフォルトの名無しさん
NGNG複素数を言語でサポートするのと
オペレータオーバーロードを導入するの、
セーフティプログラミングの観点から見て、どっちがいいと思う?
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGスマートポインタも作れないよぉ。
他にもPOINT とか SIZE とか演算子が欲しくなるようなクラスが沢山。
演算子が使えないのはやっぱり嫌だなぁ。
>211
セーフティ...
演算子のオーバーロードってそんなに危険?
型変換演算子以外は別に問題ないと思うけど。
ところでこの言語のコンセプトって何?
個人的にはテンプレートライブラリが作りやすい言語がいいな。
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG39はGC搭載したいとか言ってなかったか?
生ポインタはそもそも入れるつもり無いと思われ
>セーフティ...
多人数開発での保守性といった方がいいのかな
0218デフォルトの名無しさん
NGNGそれほどの問題はないんじゃないかな?
cout<<みたいな変な使い方さえしなければ。
インデクサもあればコレクションが作りやすいけど。
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGそれより GUI フレームワークを考えるべきだと思う。
Windows 限定なのか Swing などのようにマルチプラットフォームを目指すのか。
0225デフォルトの名無しさん
NGNGこのくらいの打鍵数で窓を開けさせてくれ!
初心者はこれくらいが限界だよ!
0226デフォルトの名無しさん
NGNG個人的には VCL ライクだと使いやすくていいけど(w
一番問題なのはスレッディングモデルかね。
ウェジェットにスレッド化の属性を付けてやって
クリック一つでマルチスレッド処理ができればいいが
そんなに簡単なパターンばかりじゃないしな。
022739 ◆6K2ziZrM
NGNGGUIビルダとそれを接続するイベントモデルを作って、
コード上から(Windowsの)コントロールを操作するコードを
完全に切り離すというのはどうだろう。
ってそれは幻想だよなぁ。
結局ソースからさわる必要も出てくるだろうし・・・
0228デフォルトの名無しさん
NGNGClassname BaseClassname {
allcls int data1; // == public static int data1;
canins int data2; // == protected int data2;
notins int data3; // == private int data3;
}
??????
0229デフォルトの名無しさん
NGNG{
public // ブロックも可能
{
int field;
void method();
}
private char field2; // もちろん1行も可能
}
ダメ?
あと書き込みはprotected、読み込みはpublicな属性もほしい。
俺はreadonlyって呼んでたけど、C#で別の意味で使われちゃったね。
0230228
NGNG「頭文字が違う」
の実演テストしてみただけです…。
でもpublicとかに慣れてるせいか自分じゃ見やすいのかよくわかんない…。
しかも等幅じゃないからインデント崩れてるし…。
別にallclsキーワードは本気ではないですよ。
ただちょっとstatic宣言の代用にclsとinsを思いついたので。
0231_
NGNG*a++ = 0;
*a = 1;
と
a[0] = 0;
a[1] = 1;
の上って必要?あんまり上が必要になったことないのだけど・・・
下だけじゃだめ?
http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html
ここにJVMをターゲットにした言語山ほどありますね。。。
0232デフォルトの名無しさん
NGNGそっくりなコードをさっき別スレで見た気がする・・・
場合によって違うじゃん。
C++的にはイテレータって概念が浸透してるから上のほうが主流だろうけど、
C的にはどっちも同じくらいの頻度で使うんじゃないの?
ランダムアクセスが必要なら当然下になるし。
0233231
NGNG(下の話につなげたかっただけ)
ほんとは8086ファミリーがターゲットです。。。
0236デフォルトの名無しさん
NGNG読みにくくなることはあるだろうね。
0237231
NGNGなる〜サンキュ。じゃあ、下だけにしよっと。
今までちょっと作ってみた感じでは
Cへのトランスレータ>8086インタプリタ>=JVMコンパイラ
>8086コンパイラ
の順で楽だと思います。これからは.NET対応が一番幸せになれそう。
0239デフォルトの名無しさん
NGNG何が言いたいのかサパーリわからんのだが
8086インタプリタってナニ?
エミュレータ?
しかも、楽とか・・・
何が言いたいのかわからん
024039 ◆6K2ziZrM
NGNGああ、ごめん、読み書きで属性変えたいのね。
public property int i {
public get {
}
protected set {
}
};
こんな感じって事?
0241229
NGNGんや、それで桶です。
おれっちの考えたのにはプロパティはなかったんで。
ところで
int hoge( string arg ){ return hage; }
void before hoge( string arg ){/*hogeの呼び出し前に呼ばれる*/}
void after hoge( int ret ){/*hogeの呼び出し後に呼ばれる*/}
みたいなのは、どうでしょうか。
hogeをサブクラスでオーバーライドしたときは、
そのサブクラスのhogeが呼び出される前後にbefore hogeとafter hogeが呼ばれるです。
0245デフォルトの名無しさん
NGNG0246229
NGNGあんまり深く練ってなかったんで、
あったらdebugとか便利かなと思ったんですけど、
> hogeをサブクラスでオーバーライドしたときは、
> そのサブクラスのhogeが呼び出される前後にbefore hogeとafter hogeが呼ばれるです。
この部分は撤回です、挙動がおかしくなるです。
DBCは、機能自体は知ってるんですけど、
実際どのように実装されているんでしょう?
0247229
NGNGdebug時にだけ有効になるassertがあれば、特に他に言語サポートは必要ないんじゃないでしょうか。
024839 ◆6K2ziZrM
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1003674814/21
記述形式がこれと似ていたのでそうかなって
0249デフォルトの名無しさん
NGNG漏れは別にいらない気もするけど。
int func()
{
in{}
out( ret ){ assert( ret>0 ); }
// 本体
return 1;
}
0250デフォルトの名無しさん
NGNGいっそのことaspectキーワードを入れてしまうとか。
0252デフォルトの名無しさん
NGNGD 言語がよりモダンな構文だと思う。
D言語ドラフト一応読んだよ
http://pc.2ch.net/test/read.cgi/tech/1003674814/
■ このスレッドは過去ログ倉庫に格納されています