新C言語を作ろう
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/07/21(土) 18:27:03C言語に足りない、欲しい機能を追加して最終的には標準化しましょう。
いまここに新C言語作成委員会の発足を宣言します。
とりあえず必要と思われる機能は
・クラス
・テンプレート
などでしょうか?
0002デフォルトの名無しさん
2007/07/21(土) 18:29:250003デフォルトの名無しさん
2007/07/21(土) 18:58:52この素人め
お前には無理
削除依頼出しとけ
0004デフォルトの名無しさん
2007/07/21(土) 19:39:270005デフォルトの名無しさん
2007/07/21(土) 19:44:570006デフォルトの名無しさん
2007/07/21(土) 19:45:290007デフォルトの名無しさん
2007/07/21(土) 19:51:490008デフォルトの名無しさん
2007/07/21(土) 19:57:180009デフォルトの名無しさん
2007/07/21(土) 20:20:15それなんてC++
0010デフォルトの名無しさん
2007/07/21(土) 20:24:42C++ってjavaみたいにnew演算子で動的にオブジェクト生成できるけど、
あれってC++にもガーベージコレクションがついてるってこと?
VMでもないのにどうなってるの?
コンパイル時にコンパイラが
スコープとか計算してメモリ開放処理を付け加えてるの?
0011デフォルトの名無しさん
2007/07/21(土) 20:26:06newしたらdeleteしなきゃならん。
mallocしたらfreeするのと同じ。
0012デフォルトの名無しさん
2007/07/21(土) 20:27:43>コンパイル時にコンパイラが
>スコープとか計算してメモリ開放処理を付け加えてるの?
じゃあこの機能欲しいね。
0013デフォルトの名無しさん
2007/07/21(土) 20:29:580014デフォルトの名無しさん
2007/07/21(土) 20:32:27機能内容と実装方法の提案だけ。
0015デフォルトの名無しさん
2007/07/21(土) 20:34:23後追いをしても仕方がないので
あくまでもC言語をベースに革新的な言語を作る
0016デフォルトの名無しさん
2007/07/21(土) 20:57:49> コンパイル時にコンパイラが
> スコープとか計算してメモリ開放処理を付け加えてるの?
scoped_ptrやshared_ptrならまさにそんなことをやってくれる。
0017デフォルトの名無しさん
2007/07/21(土) 21:06:29C+ライブラリの開発環境だとめんどくさいことが多い。
最初から3Dを意識した仕様にしてみては?
0018デフォルトの名無しさん
2007/07/21(土) 21:23:37言語仕様がそのままなら、一体何をするっての?バカだろ
0019デフォルトの名無しさん
2007/07/21(土) 21:42:32Cでいいや
0020デフォルトの名無しさん
2007/07/21(土) 21:51:410021デフォルトの名無しさん
2007/07/21(土) 22:01:38構文はそのままって意味。
0022デフォルトの名無しさん
2007/07/21(土) 22:08:39nara
Java
demo
yookune?
0023デフォルトの名無しさん
2007/07/21(土) 22:16:420024デフォルトの名無しさん
2007/07/21(土) 23:04:04C++
D
好きなのを選ぶヨロシ。
0025デフォルトの名無しさん
2007/07/21(土) 23:16:140026デフォルトの名無しさん
2007/07/21(土) 23:34:210027デフォルトの名無しさん
2007/07/22(日) 07:32:340028デフォルトの名無しさん
2007/07/22(日) 09:01:12型推論って導入できるの?
あ、構文木をラムダ式に変換すればいいだけなのかな
0029デフォルトの名無しさん
2007/07/22(日) 09:03:090030デフォルトの名無しさん
2007/07/22(日) 09:06:35DとかC# 3.0とか
0031デフォルトの名無しさん
2007/07/22(日) 09:18:10VMもないのにどうやって検出されるの?
0032デフォルトの名無しさん
2007/07/22(日) 09:38:08OSが例外処理を持っていたり。(WindowsのSEH)
0033デフォルトの名無しさん
2007/07/22(日) 09:57:231つめのはコンパイル時に自動挿入ですか?(setjump/longjump)
0034デフォルトの名無しさん
2007/07/22(日) 10:00:150035デフォルトの名無しさん
2007/07/22(日) 10:10:37それは当然。
例外処理なんてようするに関数を越えたジャンプにデストラクタの後片付けを入れただけ。
検出するなんてものではないと思う。
0036デフォルトの名無しさん
2007/07/22(日) 11:36:08もっと酷いバグ作りこむかもしれないけど、それでいい?
0037デフォルトの名無しさん
2007/07/23(月) 23:19:17プログラムの保守性が絶対に上がるよ。
0038デフォルトの名無しさん
2007/07/23(月) 23:28:02Javaは使えたよな?C++も使えるんだっけ?
ジョークプログラムでたまに見るが、?が頭を駆け巡る。
慣れの問題で済む程度じゃないと思う。
0039デフォルトの名無しさん
2007/07/23(月) 23:42:28ひ○わり
なで○こ
0040デフォルトの名無しさん
2007/07/24(火) 01:48:24それ以外の、C の素朴さを損なう様な追加機能は要らない
カプセル化はオブジェクト指向の本質ではないので要らない
テンプレートでメタプログラミングとかも要らない
総称関数も要らない
GC も要らない
クロージャはあったら嬉しいけど、動的クロージャなら何の役にも立たない
本来の意味の C w/ Class が欲しい
GLib とかじゃなくて
みたいな事を考えてた事もあった
0041デフォルトの名無しさん
2007/07/24(火) 02:51:470042デフォルトの名無しさん
2007/07/24(火) 05:38:490043デフォルトの名無しさん
2007/07/24(火) 13:17:340044デフォルトの名無しさん
2007/07/24(火) 13:20:010045デフォルトの名無しさん
2007/07/24(火) 16:59:440046デフォルトの名無しさん
2007/07/24(火) 19:20:200047デフォルトの名無しさん
2007/07/24(火) 19:58:380048デフォルトの名無しさん
2007/07/24(火) 20:04:38何らかの代替機能を用意した上で廃止してくれ。
0049デフォルトの名無しさん
2007/07/24(火) 20:18:160050デフォルトの名無しさん
2007/07/24(火) 20:45:390051デフォルトの名無しさん
2007/07/24(火) 21:00:440052sage
2007/07/24(火) 21:09:480053デフォルトの名無しさん
2007/07/24(火) 21:38:120054デフォルトの名無しさん
2007/07/24(火) 21:39:30lisp の defmacro の強力さを知らんのだよ。
Symbolics の FORTRAN はマクロによって lisp に展開されていた。
餓鬼どもには想像も出来んだろうがな(w
0055デフォルトの名無しさん
2007/07/24(火) 21:39:40int f(int n) { return n + 1; }
int g(int n)
{ int x = f(n);
{ int x = f(x);
{ int x = f(x);
return x;
}
}
}
int main() {
printf("g()=%d\n", g(1));
return 0;
}
さて、g(1)はいくつを返すでしょう?
このコードに対してエラーも警告も出さなかったコンパイラがあったら要注意です。
C言語は { int x = f(x); 〜} を期待通り処理しません。
初期化式中のxは変数宣言xによって既に親を上書きしています。
つまりこの規則は変数のアドレスを再帰的に初期化式に
適用したいというかなり特殊な状況以外に全く役に立ちません。
h() {
struct _tag {
struct _tag *next, *prev;
} a = {&a, &a};
printf("&a=%d a.next=%d a.prev=%d\n", &a, a.next, a.prev);
}
変数のアドレス限定なのは、初期化式中に変数の値を参照しても
何の意味もないからです。もし参照してたらエラーにすべきでしょう。
0056デフォルトの名無しさん
2007/07/24(火) 21:42:190057デフォルトの名無しさん
2007/07/24(火) 21:47:19{ int x = f(x);
{ int x = f(x);
{ int x = f(x);
return x;
}
}
}
だとエラーになった
: error C2082: 仮引数 'x' が再定義されました。
int g(int n)
だと警告
: warning C4700: 値が割り当てられていないローカルな変数 'x' に対して参照が行われました。
(VC6SP4)
0058デフォルトの名無しさん
2007/07/24(火) 21:47:59で、お前はそれがどうなったらいいと思う?
初期化式では、初期化対象の変数がまだ見えないようにするのか、
そもそもコンパイルエラーになるようにするのか、
はたまたそれ以外の方法があるというのか。
0059デフォルトの名無しさん
2007/07/24(火) 21:48:56(define (f x) (+ x 1))
(define (g x)
(let ((x (f x))) (let ((x (f x))) (let ((x (f x))) x))))
(g 1)
=>4
まさに期待通りです。
まったくSchemeは素晴らしいですね。
0060デフォルトの名無しさん
2007/07/24(火) 21:51:18そんなの当たり前のじゃん…
006148
2007/07/24(火) 21:51:33LISPみたいなのだったらありだ。
Cプロセッサは、C自体の字句解析と独立しているから、
IDEの入力支援機能なんかと相性が悪いはず。俺はそれが嫌なんだ。
0062デフォルトの名無しさん
2007/07/24(火) 21:53:26いきなり関数の引き数と同じ名前で自動変数宣言すんなw
0063デフォルトの名無しさん
2007/07/24(火) 21:55:390064デフォルトの名無しさん
2007/07/24(火) 22:02:49そりゃ、変数に対する考え方が違うから当然だろ。
Cの変数つうか識別子は、つまるところ名前付きメモリ領域だからな。
ん、むしろ、これで当然(そしてSchemeも当然)と思える
俺の方がどうかしてるのか?
何か悩んだり面白がったりするものなのか?
0065デフォルトの名無しさん
2007/07/24(火) 22:25:36どうかしてる。
>>57相当の事をしたいとなると、わざわざ別名を考える必要が
出てきて思考の妨げになるじゃん。
0066デフォルトの名無しさん
2007/07/24(火) 22:30:22なんて普通は考えないからな。違うスコープにある方が自然だろ。
C言語が一般的になりすぎたとか、そういう言語に慣れすぎたとかで、
その違和感に気付かないのかもしれないな。
0067デフォルトの名無しさん
2007/07/24(火) 22:33:17C系言語的には、そういうときは変数名じゃなく型名を定義する事を考える。
つまりクラスにする。
あ、Cではクラス無理かw
0068デフォルトの名無しさん
2007/07/24(火) 22:37:20#define G(n) do { int x = f(n); return x; } while(0)
int g(int n)
{ int m = f(n);
{ int x = f(m);
G(x);
}
}
: warning C4700: 値が割り当てられていないローカルな変数 'x' に対して参照が行われました。
0069デフォルトの名無しさん
2007/07/24(火) 22:45:270070デフォルトの名無しさん
2007/07/24(火) 22:45:580071デフォルトの名無しさん
2007/07/24(火) 22:47:58(define (g x) ((lambda (x) ((lambda (x) ((lambda (x) x) (f x))) (f x))) (f x)))
と等価という考え方であり、つまり初期化式は関数適用と同じスコープで
評価されるので、xは親を参照するという事が自然と自明になり、
文脈上のあいまいさもありません。Schemeにはletの他にlet*やletrecもあり、
こういった束縛規則をコントロールできます。
Schemeの変数束縛はとても理に適った設計なのです。
0072デフォルトの名無しさん
2007/07/24(火) 22:50:08TMPという手もあるけど、それは今の流れ的にお呼びでなさそうだな
0073デフォルトの名無しさん
2007/07/24(火) 22:54:15だから変数の考え方が違うと何度言えば
0074デフォルトの名無しさん
2007/07/24(火) 22:58:300075デフォルトの名無しさん
2007/07/24(火) 22:59:37> struct _tag *next, *prev;
> } a = {&a, &a};
おれもこれは最初キモイなーと思ったけど、必要悪かな。
グローバル変数のテーブルの初期化とかでちょっとイイ思いができるとか。
(初期化でコードを書かなくて済む)
書き忘れさせないとか、消極的な理由。
今の言語にはコンストラクタがあるから、そういう事気にするのは減ったけど。
0076デフォルトの名無しさん
2007/07/24(火) 23:04:40そのオメエの考え方がそもそもキモイんだよ、というお話では
0077デフォルトの名無しさん
2007/07/24(火) 23:08:100078デフォルトの名無しさん
2007/07/24(火) 23:09:27classical int x = f(x) ; // エラー
int x = f(x) ; // OK
という風にclassicalキーワードを用意してみては
struct _tag {
struct _tag *next, *prev;
} a = {&a, &a}; // えらー 無効なaを参照した
0080デフォルトの名無しさん
2007/07/24(火) 23:16:150081デフォルトの名無しさん
2007/07/24(火) 23:18:36コンポーネント単位でインクルード出来てもいい。
0082デフォルトの名無しさん
2007/07/24(火) 23:23:10移植を繰り返して警告沢山出る様な引継ぎコードの一部だったりして、
しかもテスト環境がたまたまxが普通の値をとったりして、
とんでもない間違いにそのまま気付かないでデスマーチ突入とか
ありそうで笑える。
0083デフォルトの名無しさん
2007/07/24(火) 23:30:02即消して書き直すかな…
0084デフォルトの名無しさん
2007/07/24(火) 23:41:32int x = f(x);
と書いている時点で相当キモイ
こういうキモイ書き方を右辺のxがより広いスコープのxだと思って書く奴はもっとキモイ
そしてそれを期待する奴はどうしようもなくキモイ
そうなる様に言語仕様を変えろという奴は氏んでくれ
0085デフォルトの名無しさん
2007/07/24(火) 23:50:260086デフォルトの名無しさん
2007/07/25(水) 00:01:30お前が子ねカス
0087デフォルトの名無しさん
2007/07/25(水) 00:10:35DとかC#とかだとコンパイルエラーになったような気がする。
0088デフォルトの名無しさん
2007/07/25(水) 00:38:45同じ名前の変数を宣言したい事がよくある。
例えばこういう画面レイアウトの構造を定義したい時、
--------------------------
[button1] (空き) [button2]
--------------------------
[button3]
(空き)
[button4]
-------------------------
こんな感じの定義方法を思いついた。
{ void *resource; lay_t lay = layout_create();
{ lay_t vert = layout_push_vertical(lay);
{ lay_t vert2 = layout_push_vertical(vert);
layout_push_control(vert2, "button1");
layout_push_blank(vert2);
layout_push_control(vert2, "button2"); }
{ lay_t horiz = layout_push_horizontal(vert);
layout_push_control(horiz, "button3");
layout_push_blank(horiz);
layout_push_control(horiz, "button4"); }}
resource = layout_make_resource(lay);
layout_destroy(lay);
return resource;
}
この時、vert2の箇所をそのままvertとしてしまったり、
さらに階層が必要になった時、その変更を元に戻したくなった時、
定義した構造ブロックを他で使いまわしたい時、
などで修正が面倒になる。
まあ適当な構造記述言語でも作ればいいんだけど。
0089デフォルトの名無しさん
2007/07/25(水) 00:42:52--------------------------
[button1]
(空き)
[button2]
--------------------------
[button3] (空き) [button4]
--------------------------
0090デフォルトの名無しさん
2007/07/25(水) 00:54:31int g(int n)
{
namespace n1
{
int x = f(n);
namespace n2
{
int x = f(n1::x);
namespace n3
{
int x = f(n1::n2::x); //C++的名前空間ならn2::xでもいけると思う
return x;
}
}
}
}
俺はこんなの欲しくないけど。
0091デフォルトの名無しさん
2007/07/25(水) 08:56:14しかしそういうキモイ書き方使い方は見たことない。
0092デフォルトの名無しさん
2007/07/25(水) 09:23:20特別な事をしなくとも
#define letend }}
#define let1(type, var, init) \
{ type let_tmp = init; \
{ type var = let_tmp;
#define let2(type, var, init, type2, var2, init2) \
{ type let_tmp = init; type2 let_tmp2 = init2; \
{ type var = let_tmp; type2 var2 = let_tmp2;
実はこれだけでschemeのlet束縛を再現できます。(>>72おしい)
int f(int n) { return n + 1; }
int g(int x)
let2(int, x, f(x), int, y, x)
printf("x=%d, y=%d\n", x, y);
let1(int, x, f(x))
let1(int, x, f(x))
return x;
letend
letend
letend
ここでyの初期化式として使われるxはgの引数のままであり、
f(x)の影響を受けません。g(1)を実行するとx=2, y=1と
表示されることから、Schemeのletと同じ動作だと確認できます。
0093デフォルトの名無しさん
2007/07/25(水) 14:06:470094デフォルトの名無しさん
2007/07/25(水) 19:17:150095デフォルトの名無しさん
2007/07/25(水) 21:52:01それを拡張していけばいいのでは
0096デフォルトの名無しさん
2007/07/25(水) 21:54:00すでに拡張されてるけど
0097デフォルトの名無しさん
2007/07/25(水) 22:01:020098デフォルトの名無しさん
2007/07/25(水) 22:05:24D言語(gdc)やC++0x(g++)をベースに改良すればいいのに。
0099デフォルトの名無しさん
2007/07/25(水) 22:28:070100デフォルトの名無しさん
2007/07/26(木) 02:15:52D や C++ は太り過ぎだから
0101デフォルトの名無しさん
2007/07/26(木) 04:32:28百式ぐらいのをきぼんぬ
つーかシャアが乗ってそうなやつ
0102デフォルトの名無しさん
2007/07/26(木) 10:01:54int main() {
printf("Hello, World!\n");
return 0;
}
とりあえず、これの拡張版はどんな感じになる?
0103デフォルトの名無しさん
2007/07/26(木) 12:14:30int main()
{
System::Console::WriteLine("Hello, World!");
}
0104デフォルトの名無しさん
2007/07/26(木) 21:36:19List x = [1,2,3,4,5];
List y = [];
for (int i=0; i < x.length; i++) {
y = x.drop(i)::y;
}
// y = [5,4,3,2,1]
0105デフォルトの名無しさん
2007/07/26(木) 21:47:01void main(){
"Hello, World".writefln();
}
0106デフォルトの名無しさん
2007/07/28(土) 10:20:530107デフォルトの名無しさん
2007/07/28(土) 10:23:200108デフォルトの名無しさん
2007/07/28(土) 12:09:34は夏休みに入った中学生かなんかだろ
もしかして本当に新C言語ができちゃうかも
そうしたら俺の名前って有名にならね?とか
0109デフォルトの名無しさん
2007/07/28(土) 17:11:00拡張しやすいフリーのコンパイラは?
gccはなんかね・・。
C言語のコアの部分だけひっぱってきて。
0110デフォルトの名無しさん
2007/07/28(土) 18:05:580111デフォルトの名無しさん
2007/07/28(土) 18:34:53重要なもの
-クラス・テンプレートの追加(>>1)
-型推論と例外処理(>>47)
-マクロ強化(>>50,>>54)
-ヘッダファイルをやめる(>>80-81)
-#pragmaで新CとC++を切り替えられる(>>107)
-前方参照(>>110)
あまり重要じゃないもの
-変数名・関数名で日本語が使えるように(>>37)
-関数内でも名前空間が使えるように(>>90)
矛盾しそうなもの
-言語仕様をDやC++より軽く(>>100)
ああ、それとC言語+クラスだけでいいならObjective-Cで十分な気ガス。
あと、これらを実装するならg++かgdcをベースに要らない機能を削ってってそれを基にした方が良いと思う。
0112デフォルトの名無しさん
2007/07/28(土) 21:17:35これ今の仕様でもできるっしょ。
0113デフォルトの名無しさん
2007/07/28(土) 21:28:12Cで出来たっけ?C99ではできるのか?
0114デフォルトの名無しさん
2007/07/28(土) 21:28:590115デフォルトの名無しさん
2007/07/28(土) 21:32:370116デフォルトの名無しさん
2007/07/28(土) 21:58:19使う理由は英語スキルが低いので名前考えるのが面倒ってだけ。
0117デフォルトの名無しさん
2007/07/28(土) 23:03:47少なくとも処理系依存の範疇で可能なはず。
つまり、やれるようにしたところで規格違反にはならないということ。
それよりも個人的には全角空白を空白類文字として使用可能にしてほしい。
(もっと一般にUnicodeの空白系の文字全般を対象にすればいい)
掲示板で全角空白使ったコードをそのままコンパイルできないのは不便。
0118デフォルトの名無しさん
2007/07/28(土) 23:36:450119名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:23:18他か国語の環境での可読性とかで酷評されてたと思う。
やっぱり日本語変数とかは勘弁して欲しいと思う。
日本国内の環境でも
enum SMAP {中居, ...};
とかで「草薙」が表示できるかできないかとかで悩まなければならないのはまずいと思うし。
0120名無しさん@そうだ選挙に行こう
2007/07/29(日) 02:14:11>ああ、それとC言語+クラスだけでいいならObjective-Cで十分な気ガス。
残念ながら ObjC は動的型付けなので、十分とは言えない人間も居るのです。
0121名無しさん@そうだ選挙に行こう
2007/07/29(日) 06:08:46これってどういうの?
0122名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:38:52その際に、C++よりjavaを基にしてほしい。
多重継承なし。とか、
C++のクラス定義はきもい。スコープ演算子::とか?
0123名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:10:39class X X;のようにクラス名と同名の変数が作られたときに曖昧さが起こるから、
これを回避するために::を導入したとある (§3.11.3)。
0124110じゃないけど
2007/07/29(日) 18:02:20後ろで宣言したものでも使える。後方参照とも言う。
Dの例(前方参照あり):
void foo(){
bar();
}
void bar(){
}
Cの例(前方参照無し):
void bar(void);
void foo(void){
bar();
}
void bar(void){
}
0125名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:34:48どっちが一般的なんだろ
0126名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:54:230127名無しさん@そうだ選挙に行こう
2007/07/29(日) 18:58:490128名無しさん@そうだ選挙に行こう
2007/07/29(日) 19:17:20前方宣言 後方宣言
0129デフォルトの名無しさん
2007/07/29(日) 21:11:10「後ろで宣言した」と言うのが間違い。
コンパイラは「ソースを読み進めて行く」んだから、
ソースの下のほうが「前方」だよ。
勘違いしている人が多いので、後方参照とか書いてあるバカ本があったりする。
0130デフォルトの名無しさん
2007/07/29(日) 21:58:02視点はあくまでコンパイラ…と
0131デフォルトの名無しさん
2007/07/30(月) 00:29:290132デフォルトの名無しさん
2007/07/30(月) 21:29:180133デフォルトの名無しさん
2007/07/30(月) 22:13:520134デフォルトの名無しさん
2007/07/31(火) 00:32:44誤爆?
0135デフォルトの名無しさん
2007/07/31(火) 01:22:210136デフォルトの名無しさん
2007/07/31(火) 01:42:480137デフォルトの名無しさん
2007/07/31(火) 07:11:230138デフォルトの名無しさん
2007/07/31(火) 11:44:190139デフォルトの名無しさん
2007/07/31(火) 12:40:000140デフォルトの名無しさん
2007/07/31(火) 12:51:571. >>133 は煽っている
2. >>133 の煽りは煽りとしては特に不可解な所は無い
3. よって >>133 は誤爆ではない
俺は >>133 は煽りとして不可解だと感じたから、誤爆だろうと思った。
あまり知性も感じられない書き込みだし、よく誤爆する人間なんだろうと。
0141デフォルトの名無しさん
2007/07/31(火) 14:16:520142デフォルトの名無しさん
2007/07/31(火) 14:43:200143デフォルトの名無しさん
2007/07/31(火) 20:38:33>>140 が >>135 の意図した事と異なるのであれば、
>>135 がまともな日本語でないのが原因だよ。
まともに相手してあげた俺がバカだったみたいだね。
0144デフォルトの名無しさん
2007/07/31(火) 21:31:490145デフォルトの名無しさん
2007/07/31(火) 21:36:340146デフォルトの名無しさん
2007/07/31(火) 22:05:24最近の言語では、それは無くなってきていますね。
良いことか分かりませんが。
0148デフォルトの名無しさん
2007/07/31(火) 22:23:57> 最近の言語では、それは無くなってきていますね。
FORTRAN の時代からハードに近い部分は高級言語では書けなかったけど?
0149デフォルトの名無しさん
2007/07/31(火) 22:26:56自演つーか、明らかに全部俺だけど…
もしかして今まで気付いてなかったのか?
大丈夫?
0150デフォルトの名無しさん
2007/07/31(火) 22:44:19148という訳で、むしろCのほうが異例とさえ言える。
0151デフォルトの名無しさん
2007/07/31(火) 22:49:240152デフォルトの名無しさん
2007/07/31(火) 23:37:04Pascal, Oberon, Lisp, Smalltalk, C++, etc...
0153デフォルトの名無しさん
2007/07/31(火) 23:53:30http://kerneltrap.org/node/11754
http://lkml.org/lkml/2007/7/11/362
それでもまだアセンブラ(*.S)な部分があるのがなんだかなぁだが。
0154デフォルトの名無しさん
2007/08/01(水) 00:06:470155デフォルトの名無しさん
2007/08/01(水) 00:09:570156デフォルトの名無しさん
2007/08/01(水) 00:19:190157デフォルトの名無しさん
2007/08/01(水) 00:42:400158デフォルトの名無しさん
2007/08/01(水) 07:06:380159デフォルトの名無しさん
2007/08/01(水) 21:49:59間違ってると言うなら、ソースつきで反論どうぞ。
バカ本はダメだよ。(w
>>152
Pascal と Lisp には標準ではハードを直接触る機能はないと思ったけど。
Oberon, Smalltalk は使ってことないからよくわからんが。
0160デフォルトの名無しさん
2007/08/01(水) 23:22:13OSのアセンブラコードを吐くプログラム書けばいいじゃん
0161デフォルトの名無しさん
2007/08/01(水) 23:27:30任意のアドレスへジャンプもしくは関数呼出などができる機能を
持っている必要があるという制約が生じるね。
0162デフォルトの名無しさん
2007/08/01(水) 23:35:31実行ファイル吐く(略
0163デフォルトの名無しさん
2007/08/01(水) 23:42:030164デフォルトの名無しさん
2007/08/01(水) 23:48:230165デフォルトの名無しさん
2007/08/01(水) 23:49:53ブートキャンプしか知りません。
0166デフォルトの名無しさん
2007/08/02(木) 15:00:59本云々じゃなくて、お前の人間性な
0167デフォルトの名無しさん
2007/08/04(土) 00:49:02OSのアセンブラコードってなんだ?
自分用語は、ご自身のブログだけにしといてくれ。
>>166
反論できないから、人格攻撃か。
わかりやすい奴だな。(w
0168デフォルトの名無しさん
2007/08/04(土) 01:00:32どんなのを想定してたんだろう、この子。
0169デフォルトの名無しさん
2007/08/04(土) 01:43:29脊髄反射で何となく汚い言葉を並べているだけでしょう
だいぶ前から会話が成立していない様ですし
0170デフォルトの名無しさん
2007/08/04(土) 06:58:50じゃあさ、お前1冊でも本書いてみろよ
俺様が添削してやるから
0171pp
2007/08/04(土) 22:15:25反論できないから、人格攻撃か。
わかりやすい奴だな。(w
# 夜中まで乙。
>>170
指摘されたぐらいでそんなに熱くなるな。
0172デフォルトの名無しさん
2007/08/04(土) 22:25:250173デフォルトの名無しさん
2007/08/04(土) 22:32:12それはさておき、C に機能を追加する話題ばかりだったけど、
C から取り除いた方が良いと思われる機能は無いのかな。
0174デフォルトの名無しさん
2007/08/05(日) 10:43:00> 典型的な厨房でした。
反論できないから、人格攻撃か。
わかりやすい奴だな。
> 簡単な技術の話も出来ないなら他所へ行ったら良いのにな。
で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?
反論したければ、単に >>129 の解釈に対する反例をあげれば済む話なのに
できないからうだうだ言ってるんだろ?
0175デフォルトの名無しさん
2007/08/05(日) 11:17:420176デフォルトの名無しさん
2007/08/05(日) 11:26:58>で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?
俺じゃなくてさ、>>159 の書いてる事が素人っぽかったからね。
「Oberon, Smalltalk は使ってことない」らしいけど、Pascal と Lisp も
殆ど知らないんだろうなと思って。
0177デフォルトの名無しさん
2007/08/05(日) 12:26:28へ〜、君はもっと凄いことについてレスしてるつもりだったんだ。
詳しく説明してくれるかな?
>>176
> Pascal と Lisp も殆ど知らないんだろうなと思って。
そう思うなら、どこか素人っぽいか指摘すればいいだけ。
指摘もできないから、「知らないんだろうな」とか言う技術的じゃ
ないことしか書けないんだろ?
# まさか、「OSのアセンブラコードを吐く」なんて言うわけわかめ
# のことを言ってた奴が絡んでるのかなぁ...。(w
0178デフォルトの名無しさん
2007/08/05(日) 12:54:100179デフォルトの名無しさん
2007/08/05(日) 12:57:020180デフォルトの名無しさん
2007/08/05(日) 12:59:300181デフォルトの名無しさん
2007/08/05(日) 13:02:52人によってリアルモードのことだったり割り込みのことだったりしそう。
#リンカスクリプトを言語に統合まだー?
0182デフォルトの名無しさん
2007/08/05(日) 13:08:050183160
2007/08/05(日) 13:15:35「OSの」は余計って事か。ごめんね。
書いたときは>>152以前は読んでなかったから、OSでも書くつもりなのかと思ってたよ。
>>161には話通じてるみたいだし、スルーされたと思って放置してた。
どのみちファイルに出力できる言語なら何でもできるだろ、
って事を>>148みたいな人へ言いたかったんだけど。
0184デフォルトの名無しさん
2007/08/05(日) 13:24:180185デフォルトの名無しさん
2007/08/05(日) 13:41:400186デフォルトの名無しさん
2007/08/05(日) 13:50:23「技術的に指摘して」って言ったらこの様ですか...。
まあ、>>185 が言う通り 夏 なんだろうな。
>>181
> "ハードに近い"の定義がされてないのに何この荒れよう。
まあ、最低限として任意のメモリの読み書きができないとダメだろうな。
て言うか、リアルモードとか割り込みなんて事まで言い出すと特定プロセサ
シリーズ専用の言語になるから「標準」でと言うのはないだろうな。
>>183
単に茶化しただけだ、気にしないくれ。
そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
大変面倒なので実際的じゃないという意味) だろ?
て言うか、このスレ自体がネタスレだし...。
> どのみちファイルに出力できる言語なら何でもできるだろ、
>>161 が指摘してる通りそのファイルを実行する手段が必要。
標準の言語仕様としてその機能を持ってる言語ってそんなに多くないよ。
0187デフォルトの名無しさん
2007/08/05(日) 14:00:54餌欲しい?
0188デフォルトの名無しさん
2007/08/05(日) 14:09:42各arch毎に言語拡張すれば良くね?
0189デフォルトの名無しさん
2007/08/05(日) 14:37:07言語仕様に含まれてなくとも、大抵は処理系毎にFFIとかが整備されてるもんだよ。
C言語にしてもasmは標準ではないし、C言語で適当なバイト列を関数アドレスとして
キャストして実行できたりするのも処理系が「たまたま」許してるだけ。
そんな所を君がごちゃ混ぜに語っているのが、分かってないのでは
と言われる理由かと。
0190デフォルトの名無しさん
2007/08/05(日) 15:05:34>そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
>大変面倒なので実際的じゃないという意味) だろ?
大変面倒というのは君の主観でしかないよね。
そういうのは一度作ってしまえばその環境で使いまわせるし、
やることも極めて単純な変換作業だよ。
エミュレータやコンパイラ作ったりする人なら普通に思いつく発想。
で、
>て言うか、このスレ自体がネタスレだし...。
このスレは仮にも「新C言語を作ろう」なんだから、その程度を、
大変面倒と言ってしまうレベルの人間の横槍は遠慮してもらいたい。
0191デフォルトの名無しさん
2007/08/05(日) 15:10:02ないわけではないよ>>48-61。
>>188
似たようなこととして、DがCPU毎にインラインアセンブリを定めていたはず。
0192デフォルトの名無しさん
2007/08/05(日) 15:16:30D言語のインラインアセンブラはx86しか(ry
gdcは他のarchの為にasm(gasの文字列);に対応してるけど。
0193>>187 かわいそう...
2007/08/05(日) 15:51:36そう、実用的には処理系毎の定義と、何らかの言語拡張がなされているのが普通。
特に、ハード周りとかファイル関連はアーキテクチャやシステム毎の差異が大きいので
標準の言語仕様では定義してない方が多い。
C言語は、PDP + Unix と言うある意味特定環境用の言語として作られたから生い立ちと
して他の言語に比べてそこら辺の定義が比較的されていたんだ。
>>189 の言うキャストなんかも、アーキテクチャが決まっていたから許されていたが、
8086 + DOS みたいにメモリモデルによっては関数へのポインタとデータへのポインタで
ビット幅が違うなんて言う変態的なアーキテクチャだと破綻するので言語仕様からはず
されただけ。
>>189
そういう突込みを避けるために、わざわざ゛>>159 に「標準では」って
言う言葉を入れてあるんだが。
> そんな所を君がごちゃ混ぜに語っている
具体的に指摘よろしく。
>>190
まあ、ちょっと落ち着け。
そういう仕組みを作るのが面倒じゃなくて、単に「ハードに触る」だけで、ファイル作っ
てそれを実行して (必要に応じて結果を) 得るって言うことが面倒だ言ってるんだけど、
理解できてる?
0194デフォルトの名無しさん
2007/08/05(日) 15:55:050195デフォルトの名無しさん
2007/08/05(日) 16:19:14処理系毎じゃなくてarch毎に拡張の標準を決めるべきでね?
0196デフォルトの名無しさん
2007/08/05(日) 17:22:27>理解できてる?
何を言ってるのかさっぱりわかりませんがその前に、
「君の主観でしかないよね」って言葉は理解してるのかな?
ともかく、何が面倒なのかを焦点に議論するのは無駄でしょう。
重要なのはどういった手法であれ、目的が達成できるかどうか。
よりベターな方法なんて後からいくらでも考えればいい。
>具体的に指摘よろしく。
自覚がないなら遠慮しておきます。
それこそ「面倒」なんで。
0197デフォルトの名無しさん
2007/08/05(日) 17:24:43(defun addn (n) #'(lambda (x) (+ x n)))
「Cではaddnはどうなるだろう?ちょっとすぐには書けないだろう。
もっとも読者はこんなふうに思うかもしれない。大体こんなことをしたいなどと考え
たりするだろうか、と。しかし、そう考えたりしないのは、プログラミング言語が、それで
できないようなことは、やりたいと思わないように利用者を仕向けているからである。
プログラムを書く言語で考えなければならないのだから、それで書けないことをやり
たいとは考えにくい。私が初めてプログラムを書き始めたころ、それはBasicで書いて
いたのだが、再帰を使いたいなどとは考えなかった。そんなものがあることも知らな
かったのだ。私はBasicで考えていたのだ。
(中略)
(Lispを学習していく)努力の報酬として、上級のC++プログラマがBasicでの
プログラミングに感じるようなやりにくさを、C++に対して感じるようになるだろう。」
0198デフォルトの名無しさん
2007/08/05(日) 18:11:01例えば、86系用だと io 命令を拡張の標準にするとか?
ちょっとおもしろいかもしれない。
>>196
> 何を言ってるのかさっぱりわかりませんが
ああ、理解できてないなら別にもういいよ。
別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。
> 自覚がないなら遠慮しておきます。
> それこそ「面倒」なんで。
# 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w
0199デフォルトの名無しさん
2007/08/05(日) 18:13:34と思ってるそこのキミ。それはつまりキミが馬鹿なんです。
0200デフォルトの名無しさん
2007/08/05(日) 18:17:02> > 自覚がないなら遠慮しておきます。
> > それこそ「面倒」なんで。
> # 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w
>>196のこの部分は、
「ああ、理解できてないなら別にもういいよ。
別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。」
という意味のことを、それよりは少し短く言ってるだけだと思うよ。
0201デフォルトの名無しさん
2007/08/05(日) 18:17:510202デフォルトの名無しさん
2007/08/05(日) 18:28:030203デフォルトの名無しさん
2007/08/05(日) 19:21:10はいはい、言い訳はもう結構です。
0204デフォルトの名無しさん
2007/08/05(日) 20:37:330205デフォルトの名無しさん
2007/08/05(日) 20:48:27だな。主観で話してるお前が一番痛い。
0206デフォルトの名無しさん
2007/08/05(日) 20:57:42一番は俺だからな。
0207デフォルトの名無しさん
2007/08/05(日) 21:10:310208デフォルトの名無しさん
2007/08/19(日) 18:24:44そうだな
0209デフォルトの名無しさん
2007/08/19(日) 19:23:200210デフォルトの名無しさん
2007/08/19(日) 19:32:53君もエントリーするかい
0211209
2007/08/19(日) 19:43:53一応下記の至らぬスレの主です。
おら!Nをオトメに見つけて++Nを得るムを作らん?!
http://pc11.2ch.net/test/read.cgi/tech/1187428876/l50
0212デフォルトの名無しさん
2007/08/19(日) 20:05:210213デフォルトの名無しさん
2007/08/19(日) 20:10:54糞スレ立てるな
0214209
2007/08/19(日) 20:21:58何も成果物を作れないかもしれませんが、
気長に見てやってください。
スレ違い及び売名行為失礼しました。
逝ってきます。
0215デフォルトの名無しさん
2007/08/20(月) 18:32:130216デフォルトの名無しさん
2007/08/25(土) 12:46:57スコープとはいわば開発者に脳内スタックの確保を一段
強要する機能であり、開発の邪魔である。
変数は全て設計者が関数一覧表とそれに付随する変数一覧表にて管理する。
ローカルだからと適当に変数を作り捨てるようなことをするから
ゴミ変数が増え、バグとなる。
・ポインタの廃止。ポインタは労多くして功少なしの典型機能。
・キーワードを全て大文字化する。小文字は小さく目に悪い。
0217デフォルトの名無しさん
2007/08/25(土) 12:48:110218デフォルトの名無しさん
2007/08/25(土) 15:13:41COBOL でも弄ってろ無能。
0219デフォルトの名無しさん
2007/08/26(日) 17:08:28要約するとガベージコレクションを付けろってことだな
0220デフォルトの名無しさん
2007/08/27(月) 02:45:42異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな
0221デフォルトの名無しさん
2007/08/27(月) 18:09:12>異論の余地がないほど同意
本人だからか?
0222デフォルトの名無しさん
2007/09/06(木) 17:28:11BASICはできてもCはできなかった
0223デフォルトの名無しさん
2007/09/06(木) 17:39:30でもプログラミングはやってなかった
つかPC自体が珍しい時代だった
0224デフォルトの名無しさん
2007/09/20(木) 10:00:55あ、あとエクスポート可能なテンプレートかジェネリックスもね。
はっきり言ってクラスはなくても何とかなる。thisコールが結構べんりっちゃーべんりだけど。
0225デフォルトの名無しさん
2007/09/20(木) 10:25:33ローカル変数は無いと再帰処理が出来なくて悲惨だぞ。その再帰も深くなるとばぐっちゃうけどね。
ポインタはローレベル叩くとき必要だけど、普段はあんまり恩恵ないな。イテレータにしても実用上は問題ないかもね。
キーワードは、色つきエディタ使えば解決。え!?もってないの???VCが無料だって言うのに。
0226デフォルトの名無しさん
2007/09/20(木) 11:41:51int i; とかをグローバルにする知り合いがいたんだが、
void g(void) {
for (i = 0; i < Y; i++) 何かする;
}
void f(void) {
for (i = 0; i < X; i++) g();
}
みたいなことやってバグってハマってたな
0227デフォルトの名無しさん
2007/09/20(木) 13:09:15異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな
0228デフォルトの名無しさん
2007/09/20(木) 13:22:000229デフォルトの名無しさん
2007/09/20(木) 14:06:230230デフォルトの名無しさん
2007/09/20(木) 15:20:030231デフォルトの名無しさん
2007/09/20(木) 22:53:59*N88互換BASICを使っている人・・・・
ttp://pc11.2ch.net/test/read.cgi/tech/1189476569/l50 の 24 参照
0232デフォルトの名無しさん
2007/09/21(金) 18:11:30任意で実装って感じでさ。
あれこそ、コンピュータグラフィックスだよ。
0233デフォルトの名無しさん
2007/09/23(日) 21:37:443次元に拡張して、タートルがグリグリ動く奴でヨロ。
0234デフォルトの名無しさん
2007/12/24(月) 02:30:36#include<game.h>
int main()
{
CreateGame(CG_SHOOTING)
return 0;
}
これでシューティングゲームができる言語を作ってみそ
0235デフォルトの名無しさん
2008/01/27(日) 17:24:03#iconfile iconfilename
と書くと作成される実行ファイルにiconfilenameで指定したアイコンファイルが関連付けられる機能
0236デフォルトの名無しさん
2008/01/28(月) 18:42:16while(1) { /* ループ1 */
while(1) { /* ループ2 */
break2;
}
}
0237デフォルトの名無しさん
2008/01/28(月) 18:45:050238デフォルトの名無しさん
2008/01/28(月) 19:09:53UWSCで使えるけど便利だよね。
あと、forループで規定回数で抜けるのと途中で抜けるのとをスイッチするオプションがあれば・・・
あ、普通にフラグとスイッチ使えばいっか。
0239デフォルトの名無しさん
2008/01/28(月) 21:36:08数字はやだ、ラベルにしてくれ。
Loop:
while(1) { /* ループ1 */
while(1) { /* ループ2 */
break Loop;
}
}
0240デフォルトの名無しさん
2008/01/28(月) 21:37:480241デフォルトの名無しさん
2008/01/28(月) 22:57:110242デフォルトの名無しさん
2008/01/29(火) 17:27:37まんまD言語な件。いや、Javaでもあったかな。
0243デフォルトの名無しさん
2008/02/17(日) 19:38:46switch(VersionComparison(argv[1], argv[2])) {
case 1:
printf("%sの方がバージョンが新しいです。\n", argv[1]);
break;
case 2:
printf("%sの方がバージョンが新しいです。\n", argv[2]);
break;
default:
printf("%s, %sのいずれもバージョン情報を含んでおりません。\n", argv[1], argv[2]);
break;
}
return 0;
}
0244デフォルトの名無しさん
2008/04/09(水) 20:32:13#include "Windows.h"
extern "C" __declspec (dllexport) int isosmode(void);
int _tmain() {
switch(isosmode()) {
csae 0:
MessageBox(NULL, "現在のモードは、アドバンスモードです。", "モード判定", MB_ICONINFORMATION);
break;
case 1:
MessageBox(NULL, "現在のモードは、セーフモードです。", "モード判定", MB_ICONINFORMATION);
break;
case 2:
MessageBox(NULL, "現在のモードは、デバックモードです。", "モード判定", MB_ICONINFORMATION);
break;
default:
MessageBox(NULL, "CHKMODE.DLLは存在しません。", "ファイルの欠落によるエラー", MB_STOP);
break;
}
MessageBox(NULL, "なんちゃって、isosmode()もCHKMODE.DLLも実際には存在しません。", "注意", MB_ICONINFORMATION);
return 0;
}
0245デフォルトの名無しさん
2008/04/09(水) 20:36:34紳士言語
0246デフォルトの名無しさん
2008/04/09(水) 21:05:21ここではスレ違いの内容だよ
そういう書き込みは“適当に作ったC言語の関数を貼っていくスレ”の方で。
0247デフォルトの名無しさん
2008/06/19(木) 18:33:34関数の引数を増やしてそれをローカル変数代りにすればOK。
216が関数の引数もなくせ、と言っているなら知らんが...。
0248デフォルトの名無しさん
2008/06/19(木) 21:27:03if + goto + goto だと思うが。
0249デフォルトの名無しさん
2008/06/19(木) 21:52:07大抵のコンパイラは
goto L1
L2:
...
if(...) goto L2
に展開するから、goto + if + goto が正しいな。
って言うか、5ヵ月近く前のレスにレスするほどの内容か?
0250>>249
2008/06/19(木) 21:53:13goto L1
L2:
...
L1:
if(...) goto L2
0251デフォルトの名無しさん
2008/06/20(金) 22:40:22どうしてもレスつけたかったんです、勘弁してください。
0252デフォルトの名無しさん
2008/07/24(木) 01:36:50やる気があるなら、予約語を全部排除して、
全部自前で定義できるようにしてくれ。
そういう仕様なら乗ってやる。
0253デフォルトの名無しさん
2009/01/29(木) 00:57:56予約語を自前で定義して何の得があるんだよwwwww
0254デフォルトの名無しさん
2009/01/29(木) 01:56:38PL/I思い出した
0255デフォルトの名無しさん
2009/01/30(金) 21:43:19俺様専用の俺言語が定義できる。
0256デフォルトの名無しさん
2009/01/30(金) 23:44:010257デフォルトの名無しさん
2009/01/30(金) 23:47:480258デフォルトの名無しさん
2009/02/01(日) 05:23:02あと、複素数型とか、HLSLみたいにベクトル扱いやすくする機能も欲しい。
数値計算に特化すれば需要あるんじゃね?
0259デフォルトの名無しさん
2009/02/01(日) 05:48:44わざわざアセンブラで書く手間を減らすために
0260デフォルトの名無しさん
2009/02/01(日) 07:48:44_Bool と _Complex は C99 で追加されている。
0261デフォルトの名無しさん
2009/02/01(日) 11:35:510262デフォルトの名無しさん
2009/02/03(火) 22:31:14こんなのもあるんだな
1つ目のリンクは切れてるみたいだけど
0263デフォルトの名無しさん
2009/02/03(火) 22:47:48Cの良さを守りつつ、Cと同じ次元でより使いやすいCを作りたい。
名づけてC+
・オブジェクト指向(クラスその他)は導入せず。
・当然ガベコレなんてついてない。
・標準関数ライブラリは古くなってしまったので全面改訂。
・文字列を扱うstring型の追加。文字列の扱いに関しては全面強化。
・配列・ポインタは当然維持。ただし分かりにくい構文は改訂する。
(配列は int[] array; のように宣言を行うようにする。ポインタも long* x, y; だと*は型名に付いているとする。)
・malloc関数, free関数のキーワード昇格。
・namespace導入。
・ヘッダファイルは不要に。関数プロトタイプ宣言不要。
0264デフォルトの名無しさん
2009/02/03(火) 23:27:09+ は単項演算子じゃないから文法エラーとか
0265デフォルトの名無しさん
2009/02/04(水) 02:01:500266デフォルトの名無しさん
2009/02/04(水) 12:20:40>・当然ガベコレなんてついてない。
けど
>・文字列を扱うstring型の追加。
なのか。遅そうだな。
0267デフォルトの名無しさん
2009/02/04(水) 21:58:46なんかCycloneのサブセットな気が。
0268デフォルトの名無しさん
2009/02/15(日) 10:30:52ttp://cyclone.thelanguage.org/
0269デフォルトの名無しさん
2009/02/15(日) 13:36:480270デフォルトの名無しさん
2009/03/03(火) 01:54:470271デフォルトの名無しさん
2009/03/03(火) 09:57:340272デフォルトの名無しさん
2009/03/03(火) 20:25:41いっそのこと、ばっさり機能を削ぎ落とすのがよろしい。でも低レベルな操作は行いたい。
というわけで、新仕様を次のようにする。
--
void main()
{
asm文の繰り返しのみ;
}
--
以上。変数も条件文もgoto文も制御構造も何も無いので、覚えやすい。
0273デフォルトの名無しさん
2009/03/03(火) 22:51:49いや現状のCでも文字数で管理は可能だけど、標準ライブラリがnull終端前提じゃん
0274>>249
2009/03/03(火) 23:16:41ないから、現状のCでそういうことやるのは激しく困難だと思う。
0275デフォルトの名無しさん
2009/03/04(水) 11:56:02Pascalでよくね?
0276デフォルトの名無しさん
2009/03/04(水) 12:04:03各種ジャンプがあるだろ。
0277デフォルトの名無しさん
2009/03/04(水) 21:56:440278デフォルトの名無しさん
2009/03/05(木) 00:24:05pascal キーワードを導入すればいい。
string cstr = "This is a C string." ; // ヌル終端の標準C文字列型
pascal string pastr = P"This is a Pascal string."; // 先頭がバイト数のPascal文字列型
0279デフォルトの名無しさん
2009/03/05(木) 01:22:45その後は各自自分仕様の言語を作ると
0280デフォルトの名無しさん
2009/03/05(木) 01:41:250281デフォルトの名無しさん
2009/03/05(木) 19:05:08それは凶悪すぎるだろうww
0282デフォルトの名無しさん
2009/03/05(木) 20:34:090283デフォルトの名無しさん
2009/03/06(金) 01:17:520284デフォルトの名無しさん
2009/03/06(金) 04:22:430285デフォルトの名無しさん
2009/03/09(月) 11:45:370286デフォルトの名無しさん
2009/03/10(火) 23:55:370287デフォルトの名無しさん
2009/03/11(水) 14:03:580288デフォルトの名無しさん
2009/03/11(水) 16:23:26文法はCと非互換でよい。
現状のマクロをなんとかしたい。
短い記述で濃い内容を書きたい。
0289デフォルトの名無しさん
2009/03/11(水) 16:25:42グローバルに
puts("hoge");
って書けば
int main(){
 puts("hoge");
}
と同じ意味にしたい。
0290デフォルトの名無しさん
2009/03/11(水) 16:28:34前に書けるようにするか。
他言語ではbefore until after untilの構文どうなってるかな。
0291デフォルトの名無しさん
2009/03/11(水) 16:31:05は定型化してるから、もっと単純化できる。
いい構文ある?
0292デフォルトの名無しさん
2009/03/11(水) 16:34:28Pythonっぽくインデントでブロック作れてもいいよな。
いずれも問題点や文句言う奴がいるがうまく丸く収まんないかな。
0293デフォルトの名無しさん
2009/03/11(水) 16:41:24qsort,signalなんかで使えたらうれしいよね。
0294デフォルトの名無しさん
2009/03/11(水) 17:38:55強力な型システムやメタプログラミング能力を用意して、少なくとも無名関数くらいはGCのある言語に近い気楽さで書けるように
一番の問題はたぶんメモリ管理だけど、線形型を使ってなんとかできないだろうか
0295デフォルトの名無しさん
2009/03/14(土) 01:08:44予約語オーバーライドができる言語なら知ってるんだが
0296デフォルトの名無しさん
2009/03/14(土) 04:46:040297デフォルトの名無しさん
2009/03/14(土) 04:49:470298デフォルトの名無しさん
2009/04/16(木) 00:38:300299デフォルトの名無しさん
2009/05/31(日) 20:27:15c/Hello{
static v/main(str[] args) >> pub{
printw("Hello,World!");
}
}
0300デフォルトの名無しさん
2009/06/04(木) 18:49:17たぶんC言語では無理。
0301デフォルトの名無しさん
2009/06/04(木) 21:57:330302デフォルトの名無しさん
2009/06/04(木) 22:00:26LPC lpc;
char n[100];
RegQueryInfoKey(HKEY_CLASSES_ROOT, lpc);
wsprintf(n, "HKEY_CLASSES_ROOTの1つ下には%i個のサブキーがあります。", lpc.Subkeys);
MessageBox(NULL, n, "関数RegQueryInfoKey", MB_OK);
0303デフォルトの名無しさん
2009/06/18(木) 22:48:47かつ高尚で可読性に優れたものが書けるならいうことなしだ
そうするとおもいっきりModula-2になるわけだが。
だからあのキモイbegin〜end構文を{〜}の構文にして、
コンパイラの実装がしやすく、またプログラミング初心者も覚えやすいような
簡潔な文法があればいい。
あとこれは個人的意見だけど、できるだけソースコードは短く書けたほうがいい。
じぶんのキーボードの打ち方が間違ってるのだろうけど、腱鞘炎になりかけたことがあるから。
0304303
2009/06/19(金) 18:52:46ちなみにこれについてちょいと思い付いたので書いておく。
型宣言した時点でその型の初期値に初期化されるとして…
for((int i)++ < 5){
//....
}
0305デフォルトの名無しさん
2009/06/19(金) 22:13:540306デフォルトの名無しさん
2009/06/20(土) 21:50:33後でちょいと調べてみる。
ついでに>>236>>239について思いついたので書いておく。
nest(1)://"nest"とは入れ子という意味。
while(..){
nest(2):
while(..){
break(1);//nest(1)のループを抜ける
}
}
0307303 ◆pFphp4Ej4w
2009/06/24(水) 19:28:40これについては、
C言語文字列
nullStr
Pascal文字列
byteStr
とすればいい。
この用途のみでPascalキーワードが存在するのは許せない。
あと、306は私だ。
0308303 ◆pFphp4Ej4w
2009/06/29(月) 08:17:321.変数宣言
変数宣言はC言語のそれとは全く逆。
例)x int;
これは英語の文法にあわせて読みやすくしたため。
2.ポインタ
ポインタは次のように宣言。
例)p: point(int);
or
p: int:;
続きは家に帰ってから。
0309303 ◆pFphp4Ej4w
2009/06/30(火) 08:05:49代入演算子には
:=
を使用する。
例)
a int:=5;
3.比較演算子
比較演算子には
=
を使用する。
例)
if(x=0){
...
}
0310デフォルトの名無しさん
2009/06/30(火) 23:13:46例えば実行時のコンテキストとソースコード上のlexicalなコンテキストが同一で
あるところとかそういうモデルな部分に革新が必要なんじゃないか?
読みやすさも大事だと思うがそういうのはおれスクリプト言語でやってればよし。
0311303 ◆pFphp4Ej4w
2009/07/01(水) 07:45:40なるほどねぇ…
確かにそうかもしれない。
その抜本的な改革についてちょっと考えてみるよ。
それと、ポインタ型の宣言について、
p: point(int);
よりも
p point(int);
こっちの方がいいかな?
ただこうするとpがポインタ型と言うことが分かりにくくなってミスが増えるかも。
0312303 ◆pFphp4Ej4w
2009/07/01(水) 08:18:08匿名メソッドは必要かね?と言うかデリゲートは必要か?
0313デフォルトの名無しさん
2009/07/01(水) 13:13:15ポインタの実体化はDelphiのがいい。
関数の戻り値の型の書き方はC++0xやEMACScript4で提案されているような後置も特殊化用引数(テンプレート/ジェネリックパラメタ)を戻り値の型より前に持ってくるという点で一理あるが、読みやすさという点では従来の方が高い。まぁ難しい所だね。
0314303 ◆pFphp4Ej4w
2009/07/01(水) 16:16:39わし的には、
ベースはC言語
クラス、インタフェース、また必要であればデリゲートなどの匿名メソッドの導入(個人的にアレは嫌いだ)
強力な型推論の導入
メモリ管理にはガベージコレクタは用いず、malloc/new・free/delete演算子を使用
ポインタは廃止しない(廃止すると複雑なデータ構造がつくれなくなる。)
文法の抜本的な変更
nullchar/bytechar型の導入
を考えていたのだが…(ついでに名前はシーキューブ。C3またはCqbと書く)
D言語かぁ…
それもありだね。
そしたら名前はD++かな?
0315デフォルトの名無しさん
2009/07/01(水) 16:48:50D言語は
-class、interface、delegate全てある
-変数初期化時・関数の戻り値の型推論がある
-ポインタも当然ある。
-invariant(char)* (C言語の文字列)とinvariant(char)[] (Pascalの文字列)がある
まぁ違う所は
-メモリ管理はGC基本でマニュアル管理はカスタムアロケータがある
-文法はC言語由来が多い。
って所か。
0316303 ◆pFphp4Ej4w
2009/07/01(水) 18:28:42となるとD言語からGCを取り外しただけの言語になるわな。
なんか「これがほしい!」って言うのはないの?
0317デフォルトの名無しさん
2009/07/01(水) 18:52:260318303 ◆pFphp4Ej4w
2009/07/04(土) 20:53:44マクロは#〜で定義され複数行をサポートする。
例)
#hoge
...
#hoge end
0319デフォルトの名無しさん
2009/07/12(日) 23:56:480320303 ◆pFphp4Ej4w
2009/07/13(月) 18:50:340321303 ◆pFphp4Ej4w
2009/07/13(月) 21:45:52明日から4日ぐらいはずっと学校が休みなのでこのスレに張り付いていられると思います。
0322デフォルトの名無しさん
2009/07/14(火) 00:21:220323デフォルトの名無しさん
2009/07/14(火) 05:29:59忘れないで欲しいのが、パーサによる解析しやすさ、IDEによる入力支援の効きやすさ、他人による読みやすさ、データの流れの追いやすさ、書きやすさ。
0324デフォルトの名無しさん
2009/07/14(火) 12:29:10こんなこと考えるから C の宣言は判り難くなったんだ。
0325303 ◆pFphp4Ej4w
2009/07/14(火) 16:17:01了解です。今から書きます。
>>323
>>303でも書いたように
> コンパイラの実装がしやすい
言語にしたいと思ってはいるのでできれば解析はしやすくしたいと思っています。
しかし>>324さんが述べているように構文の読みやすさ、書きやすさなんかを
犠牲にするのはちょっとカンベン・・・
というわけでもしかしたらその点は犠牲になる可能性があります。
とりあえず今のところ(私の中で)決まっている言語仕様:
1.変数宣言
変数は次のようにして宣言される
x int;
利点:英語に従った文法なので初心者が読みやすくなる。
欠点:Cに慣れた人は確実に間違えてエラーを多発させる要因になる。
2.クラス・関数の定義
クラス・関数は次のようにして定義
c/hoge{
void hogehoge(){
...
}
}
クラスに内包されない関数も定義可能。
void hoge(){
...
}
int hogehoge(){
...
}
続く
0326303 ◆pFphp4Ej4w
2009/07/14(火) 17:06:23利点:c/〜とやると若干短くなる。
欠点:c/〜じゃ最初見た人は何かと思うかもしれない。
また実行時に実行される関数は
int main(){
...
returrn 0;
}
でOK。
3.演算子について
代入演算子
:=
比較演算子
=
!=
<
>
<=
>=
とする。(代入演算子にほんとうは<=を使いたいのだがこれじゃ間違える人が続出すると思うので今のところはこれで。今後変更の可能性大。)
利点:"==”は比較演算子ではないのでで初心者のミスが減る(一人よがりかなぁ?)
欠点:確実に間違えられる。
今日のところはここまで。
0327デフォルトの名無しさん
2009/07/14(火) 18:58:54クラス定義は、"c/"を識別子にするってことかな。そうだとすると変数でcを宣言した場合に厄介なことになる。識別子にしないとなるとlexerで分離できないので速度が低下する。
演算子についてはDelphi的なので言うことは無いかな。
0328デフォルトの名無しさん
2009/07/14(火) 19:08:550329303 ◆pFphp4Ej4w
2009/07/14(火) 19:41:05これはやだ・これを追加しろ・この構文はやだ等ご意見があればご自由に。
と書こうと思っていたら>>327さんがもう書いていらっしゃいました。素早い…
それはさておき、ご意見ありがとうございます。
パーサの速度にしたがってコンパイル速度も落ちるので、これは重大な問題です。しかもこれを解消するには構文を捨てないといけないという…
これについては今後なるべく早く議論して解決策を決定すべきでしょう。(この過疎スレで人が集まるかどうか…)
解決策の一つとしてはこの言語のみに特化したパーサを開発することですが、これじゃ焼け石に水です。
どうしましょうかねぇ…
0330デフォルトの名無しさん
2009/07/14(火) 19:45:55----
"c/" は、俺は否定的。
"c" + "/" として扱っても、"c/" としてまとめて扱っても、どちらにせよ 『 b := c/a; 』 が書きにくくなる。
トップレベルに書いた "c/" のみを特別扱いすれば問題ないとは思うけど、CP が悪いわな。
そんなに 100 も 200 もクラス定義するわけじゃないんだから、得られるものは少ないと思うよ。
----
変数宣言と関数宣言の型指定が正反対なのが気になるところ。
変数にあわせるならば 『 hoge() void { 〜 } 』 になるんじゃないかな。
C に慣れたひとも、VB or Pascal に慣れた人も、どちらも間違えると思うよ。
どちらかに統一すべきだと思う。
----
代入演算子、"<-" を使ってみたらどうかな。打ちにくいけど。
----
比較演算子で気になるのは、= と != の文字数が違うところかな。
細かいことだけど。
0331303 ◆pFphp4Ej4w
2009/07/14(火) 19:50:44>>329というわけでこの過疎スレに議論のために人を呼び込まねばなりません。ですから、これからはage進行で行きましょう。
ってなわけでage!
0332303 ◆pFphp4Ej4w
2009/07/14(火) 19:57:26すびません、リロードし忘れてましたorz
いま外出中で携帯から書き込んでるので家に帰りつくまでお待ちください。
0333デフォルトの名無しさん
2009/07/14(火) 20:16:45a<-5とかそれなりに使う気がするので止めてほしい。
:=も条件演算子との兼ね合いで(識別子として扱えば問題は無いものの)読みにくくなりそう。
0334デフォルトの名無しさん
2009/07/14(火) 20:18:42c -> newC
= :=
== = or !!=
!= !=
< < or !>=
<= <= or !>
> > or !<=
>= >= or !<
要は、!に否定と言う意味を持たせるなら演算子そのものも否定できたらどうかな、と。
# !の多重を認め出すと、!!!!!!!!!!=なんて書けてしまうのは実は問題かもしれないw
0335334
2009/07/14(火) 20:21:18--
c → newC
= → :=
== → = or !!=
!= → !=
< → < or !>=
<= → <= or !>
> → > or !<=
>= → >= or !<
0336デフォルトの名無しさん
2009/07/14(火) 20:22:21D言語には!>=とか普通にあるが<とは意味が違う(浮動小数点のNAN的な意味で)。
0337336
2009/07/14(火) 20:25:50http://www.digitalmars.com/d/2.0/expression.html#floating_point_comparisons
<>とか<>=とか!<>=とかもある
0338303 ◆pFphp4Ej4w
2009/07/14(火) 20:46:16・・・つついてみれば意外と人がいるもんですね。
>>330
については、そこまで頭回ってなかった私の問題です。申し訳ない。
というわけで改訂版。
2.クラス・関数の定義
クラス・関数は次のようにして定義
c/hoge{
hogehoge void(){
...
}
}
クラスに内包されない関数も定義可能。
hoge void(){
...
}
hogehoge int(){
...
}
あと"c/"について。
そうですか・・・。やっぱりclass{...}にしたほうがいいですかね?
ここは議論の余地があるようです。
>>334さんのは全面採用したいですね・・・
まぁ"!"は2文字以下でという限定をつければいいと思うので。
0339デフォルトの名無しさん
2009/07/14(火) 20:51:10hoge int() { ... }
って表記はどうなのかな。
変数宣言と合わせると LALR なら問題ないだろうけど、LL なら 3 くらいは欲しいよね。
0340303 ◆pFphp4Ej4w
2009/07/14(火) 21:42:41なんだか考えるべきことが大量に増えてきましたね…
私はそろそろ寝たいと思います。(風邪も治したいので。)では、おやすみなさい。
0341デフォルトの名無しさん
2009/07/14(火) 22:02:02C++の何が不満なのかまず説明してくれ
それが説明出来ないなら議論する価値もない
0342デフォルトの名無しさん
2009/07/14(火) 22:50:14別の書き方をしたら記述量が減るなら意味があるけど、
>>334 みたいなのにどういう利点があるのかいまいちわからない。
0343デフォルトの名無しさん
2009/07/14(火) 22:54:15Cっぽくない構文の言語なら珍しくはない。
0344デフォルトの名無しさん
2009/07/15(水) 01:43:31その程度の違いならC言語でいいじゃんと思ってしまう。
参考までに303 ◆pFphp4Ej4wが使えるプログラミング言語は何だい?
0345デフォルトの名無しさん
2009/07/15(水) 03:30:46Valaについて語りませんか
http://pc11.2ch.net/test/read.cgi/linux/1246771919/
0346303 ◆pFphp4Ej4w
2009/07/15(水) 09:11:34私が使えるのですか?
ObjectPascal
Java
C言語
C++
D言語は現在勉強中。
0347デフォルトの名無しさん
2009/07/15(水) 21:09:58たしかにそこは聞きたいな。C++でなくてもいいけど。
今あるCの後継的な雰囲気の言語のどこがまずいと考えていて、
どう直そうとしているのか。それによって何が良くなるのか。
誰(言語ユーザ、コンパイラ制作者、ライブラリ制作者、IDE、etc)が得するのかなどなど……。
0348デフォルトの名無しさん
2009/07/15(水) 21:26:490349303 ◆pFphp4Ej4w
2009/07/15(水) 22:01:26それいっちゃオシマイです…
それと、>>305についていまさらながら調べてみました。
LimbooというのはC言語の作者が設計したPascalライクなC言語のようです。
やはりC言語をつくった人にも思うとこがあったのですかねぇ…
0350デフォルトの名無しさん
2009/07/15(水) 22:25:00そんなに既存のcやその他追随してる言語に不都合な点があるのかな。
0351デフォルトの名無しさん
2009/07/15(水) 22:28:42Perlまで増やせとは言わんが、ECMAScript 3程度じゃ全然足りん。
0352デフォルトの名無しさん
2009/07/15(水) 22:33:240353デフォルトの名無しさん
2009/07/15(水) 22:36:330354デフォルトの名無しさん
2009/07/15(水) 22:39:240355303 ◆pFphp4Ej4w
2009/07/15(水) 23:18:57それじゃ関数型言語そっくりに…
どうもわたしは規制に巻き込まれたようです。
何もしてないんだけどな…
こういうもんなんですかね?
0356デフォルトの名無しさん
2009/07/15(水) 23:25:40ぶっちゃけ、既存の言語を超えようとしたり、改善しようとしたりするのが間違ってると思う。
自分が作りたいものを作りたいように作ればいいんじゃないかな。俺はそれで満足する。
0357デフォルトの名無しさん
2009/07/15(水) 23:35:13目的が自分が満足するためならそれでいいのだろうけど。
0358303 ◆pFphp4Ej4w
2009/07/15(水) 23:56:47確かに。それの見本がC++ですね。
0359デフォルトの名無しさん
2009/07/16(木) 06:25:30LimbooじゃなくてLimboだよ。w
Limbo は並行計算が目玉と思われ。Erlangよりずっと分かりやすい。
C言語の悪評極まる宣言についてはリッチー先生さすがに反省したようで
Pascal風に直してあるね。
Limboに先行してAlefという言語もある。
0360303 ◆pFphp4Ej4w
2009/07/16(木) 10:25:19すいません。おっちょこちょいなもんで…
0361303 ◆pFphp4Ej4w
2009/07/17(金) 22:43:224.基本構文
4.1for構文
for構文とは指定した回数だけその命令を繰り返す構文である。
for構文は次のように定義する。
(とりあえず3回繰り返す場合。)
for((i int)++ < 3){
...
}
0362303 ◆pFphp4Ej4w
2009/07/17(金) 22:47:18ま、間違えた…
4じゃなくて3だった…
あと、言いそびれてましたが変数は定義したときにその変数の初期値に初期化されます。
0363デフォルトの名無しさん
2009/07/17(金) 23:02:05<が出て来るということは、今のCのforみたいにwhileのような自由な条件指定を許すように思える。
それなのに、361の文章では、「指定した回数繰り返す」と言い切っている点が気になる。
単に、今のCのforみたいに、主に指定回数の繰り返しに使われるというのなら理解できるけど。
0364363
2009/07/17(金) 23:05:40比較演算子を使わずに繰り返しの構文を実現している。
(もちろん、どっちもwhileが別にある)
0365デフォルトの名無しさん
2009/07/17(金) 23:11:08for i = 1 : 1 :10
1ずつ増やしながら1〜10まで繰り返すみたいな
0366デフォルトの名無しさん
2009/07/17(金) 23:13:170367303 ◆pFphp4Ej4w
2009/07/17(金) 23:31:12ぬわぁ…
すみません。
毎回毎回勉強になるなぁ…
とりあえずここでは「主に指定した回数だけ繰り返される」とします。
これを踏まえて一つ質問を。
ある命令を指定した回数のみ実行するのみの構文は必要でしょうか?
0368デフォルトの名無しさん
2009/07/18(土) 00:11:15#リストlsの各要素を順に出力
ls = ["hoge", "foo", "bar"]
for x in ls:
print x
#0から2までを順に出力
for x in xrange(3):
print x
でもまあ、こんなところCのままでいいじゃないと思うけどね。
配列(のようなもの)の各要素に〜するって系統の関数を充実させれば、for/foreachの出番なんてぐっと少なくなるし。
0369デフォルトの名無しさん
2009/07/18(土) 00:11:390370デフォルトの名無しさん
2009/07/18(土) 02:15:20やはり似たような言語ばっかりだね。
limboがでてたけど、そんな感じの根本的に違う思想の
言語を一度勉強した方が参考になると思うよ。
特に関数プログラミング系は必須といっていいと思う。
listかschemeは当然だし、また実行効率の良さはMLとその派生も勉強になるものが多い。
C言語の拡張でいうとcycloneとかも見てみるといい。
あれはCの実行効率の良さを維持しつつ型安全性を組み入れてる。
そういうのみるとはっきり言って俺for文とかどうでもいい話に思えるよ。
バカにするつもりはないけどもう少し見聞を広げるべき。
0371デフォルトの名無しさん
2009/07/18(土) 02:37:16・Pascal
・Smalltalk
・Self
・Io
・Lisp, Scheme
・Haskell
・Prolog
・Erlang
・ConcurrentClean
・GHC/KL1
・BrainF*ck, Unlambda
・SKI combinator
これくらい見聞きすれば新しい世界が開けるよ
0372デフォルトの名無しさん
2009/07/18(土) 02:50:21その中で一つ選ぶならやっぱり Lisp だね。
常用する気にはなれないけど、学ぶ事は多かった。
0373デフォルトの名無しさん
2009/07/18(土) 02:56:43単純なスレッドむき出しじゃないやつで。
0374デフォルトの名無しさん
2009/07/18(土) 03:00:23D(メタプログラミング・関数乗っ取り対抗策など)とかC#(LINQ)とかCω(スレッド周り)とかECMAScript3/ECMAScript4(プロトタイプ思考)とかJava(命名規則など)とかも必要。
誰か言語の良い所・悪い所をまとめてほしいかも。んで良いとこ取りすればおk。
0375デフォルトの名無しさん
2009/07/18(土) 03:05:48とかそういうのが目的の言語であってほしい。
なんでもあり言語はPL/Iみたくなってうまくいかないでしょ。
0376デフォルトの名無しさん
2009/07/18(土) 03:12:26自分は、客観的な各言語の評価よりも、
303自身の主観でのCとその後に続く言語(>>346の中ではC++/Java/Dの)の評価を聞きたいな。
0377デフォルトの名無しさん
2009/07/18(土) 05:17:21PL/Iが普及しなかった理由はそういうことでは無いけど(MulticsはPL/Iで書かれている)、整理はされてて欲しいね。
0378303 ◆pFphp4Ej4w
2009/07/18(土) 07:28:01そうですねぇ…
Java
一番最初に使ったオブジェクト指向の言語です。
はっきり言ってしまうとかなりわかりやすく、簡単・便利で初心者に最適な言語だったと思います。
ただ、プログラマのもつ能力に足かせをはかせてるような感じがします。あと、私は結構パフォーマンスを気にするたちなので(ただの貧乏性)VMを使うせいで速度が遅い・メモリを触れないJavaはなんだか性にあいません。
C++
ポインタを理解するまでかなり時間を食いました。(C言語を始める前だった)
Javaだとそこら辺は巧妙にかくされてます。
ただ、C言語のようにプログラマのもつ能力を最大限生かせる点と速度がかなり速い点については最高だと思います。(これでコンパイルが速ければ…)
D言語
まだまだ学んでる途中なので細かいことは言えませんが、C++とJavaを足して2で割ったような言語です。
GCがついている以外に不満な点は特にありません。
つまりまとめちゃうと取りあえず私は、今あるC言語系の構文にこれといった不満をもっていません。
はっきりいうとこれまでだしてきた変数宣言や様々な構文は私が本心から考えているものではありません。ただ初心者に優しいであろうと思うもののみをあげているだけです。
ぶっちゃけJavaみたいに初心者に優しくて、Dみたくコンパイルが速くて、C++みたく柔軟な使い方ができて実行速度が速い言語なら私はそれでいいのです。
0379デフォルトの名無しさん
2009/07/18(土) 10:05:40こういう名前をつければ、スレッドの客寄せにはいいだろうが、
構想はまったくCと違う方向に進んでいる。
世の中で、C言語の改良版が欲しい人たちは、
Cとまったく違う変な構文なんて望んでいないはずだ。
まったく別の名前でまったく別の理念でやってくれ。
0380デフォルトの名無しさん
2009/07/18(土) 10:16:350381デフォルトの名無しさん
2009/07/18(土) 10:51:150382デフォルトの名無しさん
2009/07/18(土) 12:23:13自慰言語ですね。わかります
0383デフォルトの名無しさん
2009/07/18(土) 12:42:19単にこんな機能が欲しい!だけじゃダメだろ。
0384デフォルトの名無しさん
2009/07/18(土) 12:47:250385デフォルトの名無しさん
2009/07/18(土) 18:45:24専門は最適化なのでそっちしか興味ないんだけど、簡単なCへのトランスレータくらいだったら作ってみようかな〜
0386303 ◆pFphp4Ej4w
2009/07/18(土) 20:27:00ってなわけでじゃんじゃかC言語の悪いところを書き出してってください
>>385
ぜひともお願いします(まだ言語仕様さえも決まってませんが・・・)
0387デフォルトの名無しさん
2009/07/18(土) 20:41:330388デフォルトの名無しさん
2009/07/18(土) 20:43:120389デフォルトの名無しさん
2009/07/18(土) 21:00:07ちょっとここまでの進捗を3行でまとめて
0390デフォルトの名無しさん
2009/07/18(土) 21:02:45す
んでない
0391385
2009/07/18(土) 21:17:44とりあえずただCをパースしてCを吐くだけのやつを明日作ってみようか。でそのパーサなり何なりをいじって文法を修正していくと。
言語ががらっと変わるなら仕様を先に練る必要があるけど
0392デフォルトの名無しさん
2009/07/18(土) 21:24:31また来るね
ヘッダファイルを編集するだけの簡単なお仕事です
0393303 ◆pFphp4Ej4w
2009/07/18(土) 23:43:39どうもありがとうございます。よろしくお願いします。
明日は模試があるので顔をだせないかもしれませんが…
0394デフォルトの名無しさん
2009/07/19(日) 00:45:11けど 303 にその気が無いようで残念。
0395デフォルトの名無しさん
2009/07/19(日) 00:47:100396デフォルトの名無しさん
2009/07/19(日) 01:23:40そいつは残念だ。
0397デフォルトの名無しさん
2009/07/19(日) 01:26:420398デフォルトの名無しさん
2009/07/19(日) 01:49:26それはともかく、やりたい人間が自分で作ればいいじゃないか、JRubyのように。
0399394
2009/07/19(日) 02:03:01ポインタをサポートするなら JVM の上にさらに独自の VM 乗せることになって
そこまですることになるなら俺の能力を超えるなぁ、って考えていたところ。
Java じゃなくて、JavaScript でも似たようなことが起きるはず。
0400デフォルトの名無しさん
2009/07/19(日) 03:21:480401デフォルトの名無しさん
2009/07/19(日) 04:25:400402デフォルトの名無しさん
2009/07/19(日) 10:51:16runtimeなしで関数型言語作るのはかなり難しいだろう。
純粋関数型言語ならある程度可能だが。
0403303 ◆pFphp4Ej4w
2009/07/19(日) 16:24:49>>401
なるほど。
それはprivate,public修飾子を残した上で付け加えるということでよいでしょうか?
この他「これがいやだからこうしてほしい」等要望をなんなりと。
それから、取りあえず「新C言語」の名前を決めたいのですが、なんかありませんか?(時期尚早と言うなら取り下げます。)
0404デフォルトの名無しさん
2009/07/19(日) 16:51:31入れなくてもいいなら、「 Zig 」とかをさっきふと思いついたり。
あと、こうしたいああしたいっていう要望聞くのは良いんだけど、
上手く舵取りして取捨選択しないと、汚い言語ができるよ。
ちゃんと設計理念ってものを自分なりに考えていかなきゃねー
0406デフォルトの名無しさん
2009/07/19(日) 16:56:050407デフォルトの名無しさん
2009/07/19(日) 17:00:55mutable int x = 123;
みたいな感じか。
0408デフォルトの名無しさん
2009/07/19(日) 17:02:24俺言語を作ろうと思ったことがある奴、実際に作ったことがある奴、どのくらいいるんだ?
ノ
0409デフォルトの名無しさん
2009/07/19(日) 17:03:42とりあえずautoはC++0x同様の型推論で決定だな。
0410デフォルトの名無しさん
2009/07/19(日) 17:03:57どんどん言語っぽくなっていった。
0411デフォルトの名無しさん
2009/07/19(日) 17:19:110412デフォルトの名無しさん
2009/07/19(日) 17:21:310413385
2009/07/19(日) 18:36:40実装言語はバリアントがあるOCamlとかの方が楽だけど誰でも改造しやすいようにJavaとかにしたほうがいいのかな?
>>403
とりあえず名前だけでも決めてくれると嬉しい。
0414デフォルトの名無しさん
2009/07/19(日) 18:46:18いや、是非385自身が一番使いたい言語で実装してほしい。そっちに俺は1票を投じるぞ。
0415デフォルトの名無しさん
2009/07/19(日) 18:49:21SINCL: SINCL Is New C Language
0416デフォルトの名無しさん
2009/07/19(日) 18:58:360417303 ◆pFphp4Ej4w
2009/07/19(日) 19:47:12なるほど。いいですね。
>>413
よろしくお願いします。私はそっち方面は全くわからないのですごく助かります。
>>415
>>416
GNUですかww
他に名前の候補ありませんか?
0418デフォルトの名無しさん
2009/07/19(日) 19:52:560419デフォルトの名無しさん
2009/07/19(日) 20:00:19して、その心は?
0420デフォルトの名無しさん
2009/07/19(日) 20:02:350421デフォルトの名無しさん
2009/07/19(日) 20:10:300422デフォルトの名無しさん
2009/07/19(日) 20:19:00void引数の関数の()を省略できるとか
0423デフォルトの名無しさん
2009/07/19(日) 20:43:27関数ポインタとの区別をどうする?
という問題は置いといて、それは何が嬉しくなるの?
0424デフォルトの名無しさん
2009/07/19(日) 20:54:060425デフォルトの名無しさん
2009/07/19(日) 20:54:25あると逆に邪魔になるものが多いよ。
Java の拡張 for とか Haskell の do とかなら存在意義があるけど、
単に省略できるようにしたいだけなら、
引数 0 個の関数呼び出しでは、() を書いてはいけない
という仕様にしたほうが、まだ収まりが良いよね。
0426385
2009/07/19(日) 21:39:24>>414 に甘えてOCamlで実装することにしました。
名前が決まっていないみたいだから、とりあえず一番早かったSINCLで書いとく。
0427デフォルトの名無しさん
2009/07/19(日) 22:22:33以下2点が希望かな
関数のファーストクラス化
プリプロセッサの廃止とその代替機能の追加
プラスアルファするとしたら
名前空間またはモジュール機構
並列処理の考慮(メモリモデル等)
機能追加は最小限でいい
比較的小さなのがCの良いところ
0428385
2009/07/19(日) 23:05:03誰かに改良案考えてほしいな〜。
0429デフォルトの名無しさん
2009/07/19(日) 23:08:270430385
2009/07/19(日) 23:14:49ttp://www.syuhitu.org/other/cparse/cparse.html
がとても分かりやすい。
とりあえずここのとおりに実装してる。
0431デフォルトの名無しさん
2009/07/19(日) 23:26:23その1:typedef なんて無くせばいいよ!
その2:型名は大文字から始まることにすればいいよ!
その3:AST 作ってから識別子を解析すればいいよ!
くらいじゃないのかな。
文法に注意すれば、それが型名なのか変数名なのかが一意に決まるから、
とりあえず構文木作っちゃえば良いんじゃないかと思う。
0432303 ◆pFphp4Ej4w
2009/07/19(日) 23:47:33頑張ってください!
>>431
typedefの消滅はちょっと…(私的には。)
だから現実的にはその2かその3が解決策だと思います。
その他ご希望をなんなりと。新C言語の名称も引き続き受け付けます。
0433デフォルトの名無しさん
2009/07/19(日) 23:47:430434385
2009/07/19(日) 23:56:13typedefがstaticやexternなどと文法規則が同じだというがややこしい原因のようだ。
0435デフォルトの名無しさん
2009/07/19(日) 23:56:36typedefの宣言そのものが面倒のか、それともtypedefされた名前を使うのが面倒なのかどっち?
前者なら、typedefを別文法で実現すればいいはず(C#/C++0xのusingなど)。
後者は、Cっぽい文法を維持する限りどうしようもないよなあ。typedef禁止にしても
C++/Java/C#みたいにclass量産できれば同じような状況になるだろうし。
0436デフォルトの名無しさん
2009/07/19(日) 23:57:49ほむ。気分はわかる。
>>433
具体的に reduce/reduce 競合起こすのって、どことどこだっけ。
起こしたらその部分の文法を変えちゃえばいいんじゃないかなーと。
0437デフォルトの名無しさん
2009/07/20(月) 00:09:34変数宣言int (a);と関数呼び出しf(a);の区別が付かない
キャスト(int)(a)と関数呼び出し(f)(a)の区別が付かない
0438385
2009/07/20(月) 00:19:42つまり
typedef int x; などはOK
int typedef x; などはNG
にすればよい。
0439デフォルトの名無しさん
2009/07/20(月) 00:23:52とりあえず AST 作れるから、後はどうにでもなると思う。
0440デフォルトの名無しさん
2009/07/20(月) 00:33:10そういう誰も書かないやり方は新言語でも禁止してしまえ。
0441385
2009/07/20(月) 00:43:27int staticとか禁止。
void inline f(...) { ...}
とかも禁止でいいよね?
typedefやinline -> staticやextern -> intやdouble
という順番ということにして作ります。
0442デフォルトの名無しさん
2009/07/20(月) 01:01:29単に型名の別名を定義する構文にしちゃだめなのかな。
typedef struct FOO { 〜 } BAR;
みたいなのも禁止で良いんじゃないかなって思う。
struct FOO { 〜 };
typedef struct FOO BAR;
だけ使えれば良いんじゃないかと。
というか、型名 "struct FOO" が使える理由ってなんなんだろう。
これも無くしちゃって良いんじゃない?
0443デフォルトの名無しさん
2009/07/20(月) 01:04:14強いていればC/C++でconst char*派のほか、希にchar const*派がいるくらい。
あと、inlineは要らないと思う。registerみたいにオプティマイザの決めることになりつつある。
持っている言語も珍しいし。
0444385
2009/07/20(月) 02:36:19>>303
の意見を全く聞いていないですが、現状では「修飾子の並び順」のみの修正のみをしてみます。
異論があれば後で直します。
それから自分が汚いと思ってた文法。見た目でなく文法がね。
unsigned, signed, short,long,char,intがすべて同じ種類の構文要素。修飾子とそうでないものがごちゃ混ぜ。
配列、ポインタの構文。
Javaみたいに
int[3] x;
とかの方が宣言文の構文が
{型} {識別子} ;
と統一できるのに。
switch文の構文
case x:
expr1;
expr2;
は構文的には
[ case x: expr1 ] と [ expr2 ]
というくくりになるが、
[ case x: ] と [ expr1; expr2; ]
となるべきでは?
etc.
0445デフォルトの名無しさん
2009/07/20(月) 07:28:26意味わかって言ってんのか
> プリプロセッサの廃止とその代替機能の追加
むしろCPPは互換性ないと困るな
わざわざC言語を選択する理由には資産の活用がある
この手のスレは最終的にLISPに向かう事は判ってるんだから
LISPをどうやってLISPっぽくないよう変形するのかを考えた方が早いぞ
0446303 ◆pFphp4Ej4w
2009/07/20(月) 08:32:15全然聞かなくてOKですので。
0447デフォルトの名無しさん
2009/07/20(月) 08:42:20ネイティブに対応させればいいんじゃない?
Javaの良さは、javaDocだと思うけどな
0448デフォルトの名無しさん
2009/07/20(月) 08:47:09それ何てC#のunsafe?
0449デフォルトの名無しさん
2009/07/20(月) 09:06:11何というD言語
0450デフォルトの名無しさん
2009/07/20(月) 09:15:26unsafe有ってもvm外せんからネイティブに対応とはならん気ガス
>>449
GCのメモリコンパクションやジェネリックが無いのが残念だな
まぁジェネリックはテンプレートである程度代用はできるが
0451デフォルトの名無しさん
2009/07/20(月) 09:57:58単に実装がないだけで、言語仕様ではVMに依存していないよ。
http://www.ecma-international.org/publications/standards/Ecma-334.htm
0452385
2009/07/20(月) 12:08:46午前中までというの取り消し。
0453デフォルトの名無しさん
2009/07/20(月) 12:15:42おまえよりはわかっているから大丈夫
互換性は捨てるって言ってるんだから
負の遺産を残す必要性はない
0454303 ◆pFphp4Ej4w
2009/07/20(月) 13:43:01そうなんですよね。誰かネイティブコンパイラ実装したら面白そうですね。(使いませんけど…)
>>452
急がなくてかまいませんよ。
0455デフォルトの名無しさん
2009/07/20(月) 17:13:03C++テンプレートの型なし縮小版みたいなことね。
0456デフォルトの名無しさん
2009/07/20(月) 17:22:52独自警告設定ツールみたいなのを。
0457デフォルトの名無しさん
2009/07/20(月) 23:30:54C++も最初はCへのトランスレータだったし
0458385
2009/07/20(月) 23:46:09可変長引数とかビットフィールドとかいろいろ後回しにしてます。
Prettyprintを実装してトランスレータとして使えるようになったらうpします。どこがいいかな。
現状では文法はCのサブセットになってます。
さてこれをどういじりましょうか。
0459303 ◆pFphp4Ej4w
2009/07/20(月) 23:51:02激しく乙です。
これからどうしていくかはここでの議論で決まっていくでしょう。
というわけでみなさんアイデアをじゃんじゃかどうぞ。
0460デフォルトの名無しさん
2009/07/21(火) 11:11:00#lang C
void *do_something(void){
return NULL;
}
#endlang
#lang Delphi
(*よー知らん*)
#endlang
#lang D
void main(string[] args){
do_something();
}
#endlang
…perlにこんな機能有った気がする。
0461デフォルトの名無しさん
2009/07/21(火) 11:43:28文脈に関係なくコードをぶった切れるのは力だ。
0462デフォルトの名無しさん
2009/07/21(火) 18:25:12IDEにとって邪魔にならない?
C++やDのテンプレートやLispのマクロみたいに言語本体に組み込んだほうがいいと思うのだけど。
0463303 ◆pFphp4Ej4w
2009/07/21(火) 21:30:16こんなことしたらプログラマのミスがますます増えそうですが・・・
>>461
>>462
たしかにIDEにとっちゃすごく邪魔でしょうね。
これだとすごく「IDEがつかえない」言語になりそうです・・・
0464デフォルトの名無しさん
2009/07/22(水) 02:55:47そういやD言語がASTマクロを実装すると言ってたね。
これの45ページ目から。
http://s3.amazonaws.com/dconf2007/WalterAndrei.pdf
0465デフォルトの名無しさん
2009/07/22(水) 06:08:07基本は手動メモリ管理だけど解放忘れやdangling pointerをコンパイル時に弾く、って言語を考えてるんだが、
調べれば調べるほどGCで良いような気がしてきた
一応、GCの明確な欠点としては「予測不可能なタイミングで長時間実行が止まること」があるんだが、他にはないかな
0466デフォルトの名無しさん
2009/07/22(水) 06:56:400467デフォルトの名無しさん
2009/07/22(水) 07:02:45っ リージョン推論
その欠点だけならインクリメンタルGCやコンカレントGCが明確な解決方法になっちゃいそう。
欠点をもうひとつ言うならば、挙動を静的に解決できないってのが挙げられるかと思う。
0468デフォルトの名無しさん
2009/07/22(水) 07:38:06ありがとう。結構微妙な話みたいだな
確かに静的な情報は減るけど、malloc/freeだって断片化云々の話なんかになったら静的には挙動が分からないし
ところでリージョン推論って使い物になるの?
極端な例だけど、リージョン推論をする言語でLispのインタプリタを素朴に(GCのある言語で書くのと同じように)書いたとして、
それがリークなしで動作するとは思えない(もしリークなしで動作したら実質的にGCがあるってことだよな?)
リージョン推論をするという触れ込みのJHCというHaskellコンパイラは、少なくとも俺が試した時点では目に余るほどリークしたし
やっぱりmalloc/freeをどこに入れるかはプログラマが考えないとダメなんじゃないかと思うんだが
0469デフォルトの名無しさん
2009/07/22(水) 07:57:300470デフォルトの名無しさん
2009/07/22(水) 07:58:19GCを発生させない静的な区間を作る事はできるよ
言語で保証されてるわけでもなく、実装に詳しくないといけないけど
0471385
2009/07/22(水) 13:38:37>>468
詳しく読んでないですが少なくともCポインタのある言語でリージョン推論は実装できないと思われます。
メモリは基本的に一次元なので、ポインタが一つでもあればメモリ上の
あらゆるデータがアクセスされる可能性があります。
0472デフォルトの名無しさん
2009/07/22(水) 14:05:530473303 ◆pFphp4Ej4w
2009/07/22(水) 16:13:54すこしはレスを読んでください。
>>471
乙です。
>>465
俺様アプリをつくったとき、実行時のメモリ使用量をバージョンをあげるたびに減らしていくという楽しみが消失するから。
0475デフォルトの名無しさん
2009/07/22(水) 20:24:00どんどんLISPに近づくね
0476デフォルトの名無しさん
2009/07/22(水) 21:26:17でも、新C言語ってことは静的型になるわけだから、LISP風MLになる?
Cの場合、弱い静的型付けだけど、これを強くしたらどうなるんだろう。
替わりにパターンマッチを追加して。
でも、Cの利用場面を考えると型付けは弱くないとダメなのかな。
0477デフォルトの名無しさん
2009/07/22(水) 21:30:24コードの互換性が最低になる
0478デフォルトの名無しさん
2009/07/22(水) 23:17:24Cycloneではポインタの機能を制限してregion-inferenceを実現してるよ。GCあるけど。
JHCに関してはアルゴリズムが調整段階でメモリリーク起すって書いてるから、もしかしたらうまくいくはずなのかもしれない。
0479デフォルトの名無しさん
2009/07/22(水) 23:40:27——C++デストラクタ、C#のusing/IDisposable、scopeクラスみたいなもの——は必ず欲しい。
GC管理のメモリ以外のリソースのために。
0480デフォルトの名無しさん
2009/07/23(木) 00:11:06このスレの趣旨はなんだ?
0481デフォルトの名無しさん
2009/07/23(木) 00:31:04それって、loan patternで十分じゃない?
クロージャは必須になるが、どっちにしろクロージャは欲しいでしょ。
0482デフォルトの名無しさん
2009/07/23(木) 00:48:16コンスト/デストラクタはあったらいいけど
既存のfinallyみたいな構文は場所が離れ過ぎて読みにくすぎる
変数の前後とかにまとめて書ける形になるといい
{ void *pool = __cons__ { return malloc(1024); } __dest__ { free(pool); };
}
みたいな
0483デフォルトの名無しさん
2009/07/23(木) 00:51:25typedef void *pool_t = __cons__ { return malloc(1024); } __dest__(p) { free(p); };
{ pool_t a; // この時点で__cons__実行
} // __dest__実行
0484デフォルトの名無しさん
2009/07/23(木) 00:56:42setjmpも。内部的にデストラクタのチェインが必要になる
強制的に未処理の__dest__部を実行するunwindとか
0485デフォルトの名無しさん
2009/07/23(木) 01:00:16C# の using/IDisposable で必要十分なような。
0486デフォルトの名無しさん
2009/07/23(木) 01:03:190487デフォルトの名無しさん
2009/07/23(木) 01:19:07__cons__(size_t size, int c) { char *p=malloc(size); memset(p, c, size); return p; }
__dest__(void *p) { free(p); };
{ fillmem_t m(1024, 0xff);
}
この場合サイズがわからないから別管理だね
typedef struct {
void *p;
size_t size;
} *mem_t =
__cons__(size_t size, int c) {
mem_t p=(mem_t)malloc(sizeof(*p));
p->size = size;
p->p = malloc(size);
memset(p->p, c, size);
return p; }
__dest__(p) { free(p->p); free(p); };
この場合__cons__中のmem_tとかポインタ渡しで破綻するね
{ mem_t a(1024, 0xff), b = a; // bの実体は?
}
0488デフォルトの名無しさん
2009/07/23(木) 01:24:07初期のC++と同じ轍を踏むことになるね
0489385
2009/07/23(木) 01:33:18github.com/385
README読んで下さい。現状はCのコードをパースしてCのコードを吐くだけです。
型チェックなど一切してません。バグバグです。
まぁトイプログラムとして読んで下さい。
Cの文法の汚い部分を綺麗にしようといろいろいじりましたので、コンフリクトが沢山あります。
これらを解消するのは結構無理があるので完全にCの文法にするか、
一から文法を作り直した方がいいかもしれません。
文法をどうにかしたらクラスとか無名関数とか実装してみたいですね。
それが使いものになるかどうかは別にして個人的な興味として。
0491デフォルトの名無しさん
2009/07/23(木) 01:50:04__dest__相当のほうは、D言語のscope(exit)が構文的に参考になると思う。
>>483
そこまで書くと、C++のクラス定義の構文糖にしか見えない。
0492303 ◆pFphp4Ej4w
2009/07/23(木) 07:12:23乙です。
0493303 ◆pFphp4Ej4w
2009/07/23(木) 18:50:48> 一から文法を作り直した方がいいかもしれません。Cの文法をとる場合
C++やC#のコピーみたくなる。(個人的にはこっちのほうがいい。)
完全にCの文法を捨てる場合
簡単な文法になるかもしれないが、ほかのプログラマが使ってくれることはまずない。
どっちをとりましょうか。
0494303 ◆pFphp4Ej4w
2009/07/23(木) 19:08:390495デフォルトの名無しさん
2009/07/23(木) 19:14:130496デフォルトの名無しさん
2009/07/23(木) 20:12:35gotoは捨てて
指定数のループを脱出するbreak nを入れるのはどうか
0497デフォルトの名無しさん
2009/07/23(木) 20:30:010498デフォルトの名無しさん
2009/07/23(木) 20:31:38それってgoto
0499デフォルトの名無しさん
2009/07/23(木) 20:35:25そうするとGC必要かねえ
0500デフォルトの名無しさん
2009/07/23(木) 20:40:00gotoは必須
gccのラベル配列相当も入れるべき
アセンブラで書くしかない所を(やや)高級言語でも書けるという事に価値がある
0501デフォルトの名無しさん
2009/07/23(木) 20:43:49制御の流れを混乱させるだけ
continue ラベルなんてあったらどうよ
糞だろうが
0502デフォルトの名無しさん
2009/07/23(木) 20:45:000503デフォルトの名無しさん
2009/07/23(木) 20:47:59そうすると
case 0: case 1: case 2: case 3: case 4:
break;
みたいな楽ができない
どうせ入れるなら関数型のパータンマッチだろう
0504デフォルトの名無しさん
2009/07/23(木) 20:51:300505デフォルトの名無しさん
2009/07/23(木) 20:57:38条件分岐とジャンプさえあれば極端な話どうでもいいわけだ。
それよりもデータの生存期間の方が重要だ。
0506デフォルトの名無しさん
2009/07/23(木) 20:59:32break;
0507デフォルトの名無しさん
2009/07/23(木) 21:05:57{}を使えば制御出来るけどな
0508デフォルトの名無しさん
2009/07/23(木) 21:08:010509デフォルトの名無しさん
2009/07/23(木) 21:24:12その処理系のエキスパートが判っててやる場合もあるから
あとは飛んで終りなのか、コンストラクタとかとも連携さすのか
インテリジェントgotoと名付けよう
0510デフォルトの名無しさん
2009/07/23(木) 21:54:39継続は一旦その場所に行かないと得られない。
0511デフォルトの名無しさん
2009/07/23(木) 21:57:56#include <string>
void f()
{
goto l;
std::string s;
l:;
}
ただし、ブロックごと飛び越える場合は問題ない。
void g()
{
goto l;
{
std::string s;
}
l:;
}
0512385
2009/07/23(木) 23:03:50一から作り直すというのは、Cの文法を元に拡張していくのはつらいので、
一からC風文法を作り直すという意味です。
ほとんどJavaとかC#とかの真似になると思いますね。
0513303 ◆pFphp4Ej4w
2009/07/23(木) 23:10:20まぁ、基本的に条件分岐と例外処理の構文さえ用意してあればgotoっていらないんですけどね…。
>>500
ごもっともです。言語の幅を狭めることはプログラマの「出来ること」をも狭めてしまう傾向にありますからね。
0514303 ◆pFphp4Ej4w
2009/07/23(木) 23:14:45うにゃ。すいません。
意味を取り違えてたみたいです。
あ、あと、人が結構増えてきたのでこれからはまたsageますね。
0515デフォルトの名無しさん
2009/07/24(金) 03:02:56case (1 or 2 or 3 or 4 or 6..9) and not5($_) : hoge();
とか
int t = case /\d/: ( case 2 : hoge(); case 3 : 5);
とか書けると最初だけ嬉しいかも
この構文を拡張して case 文っぽいものを関数みたいに自分で定義できるとおもしろいかも
0516デフォルトの名無しさん
2009/07/24(金) 03:38:510517デフォルトの名無しさん
2009/07/24(金) 09:32:270518デフォルトの名無しさん
2009/07/24(金) 10:58:26てか、デジャブをえらく感じるスレだ
0519デフォルトの名無しさん
2009/07/24(金) 11:04:380520デフォルトの名無しさん
2009/07/24(金) 11:26:16Scalaのパターンマッチが参考になるかもね。
ユーザ定義型を、自由にcaseに書ける。
0521デフォルトの名無しさん
2009/07/24(金) 11:40:17match 3 with 1 -> 1 | 3 -> hoge();;
let a = match 3 with i when i=1 or i=2 -> i | _ -> hoge();;
let b = match 2 with i when i=1 or i=2 -> i | _ -> hoge();;
aはhoge(),bは2
0522303 ◆pFphp4Ej4w
2009/07/24(金) 16:31:24構文名:
-----------------------
構文例:
-----------------------
メリット:
デメリット:
-----------------------
備考:
0524デフォルトの名無しさん
2009/07/24(金) 23:56:47つまり提案しようがない
テンプレつーか一度方針をまとめてくれ
0525デフォルトの名無しさん
2009/07/25(土) 00:07:57LL的な構文の工夫より、
まずどんな問題を解決する言語であるのかを決めるべきだと思う。
おれ的にはとりあえず
- あくまでシステム記述言語であること
- 効率的なマルチコアプログラミングが書きやすいこと
であってほしい。
0526デフォルトの名無しさん
2009/07/25(土) 00:14:45まずはCへのトランスレータしか考えてないのでランタイムが必要な機能は無理です。
それから型推論とかですかねー
0527385
2009/07/25(土) 00:16:290528デフォルトの名無しさん
2009/07/25(土) 00:41:37マルチスレッドとかそういうのに対応するタイプのCってできないかね?
0529デフォルトの名無しさん
2009/07/25(土) 00:43:29型推論は地雷原だよー
foo(x) {
return x;
}
ためしに、この関数 foo の型を求めてみい。
0530デフォルトの名無しさん
2009/07/25(土) 00:54:24>>303は主に構文に不満があるんだろ
だから構文を真っ先に議論するのは自然
0531デフォルトの名無しさん
2009/07/25(土) 00:55:51何でそんなのが必要なの?
0532デフォルトの名無しさん
2009/07/25(土) 00:57:250533385
2009/07/25(土) 01:00:26関数型言語を作った事があるので分かります。
多相型をサポートしようとしたら確かに悲惨ですね〜。
ディクショナリパッシングとか考えたんですけど、Cではワード長が一定ではないので難しそうですね。
C++のtemplateのように型ごとに関数を展開するなら出来ないということもない気がしますが、ちゃんと考えてません。
0535デフォルトの名無しさん
2009/07/25(土) 01:04:09へいゆー自分にアンカー付けてるぜよ。
template で多相型をサポートするなら(問題山盛りにせよ)可能だと思います。
ただ template 周りの文法と、コード生成に失敗したときのエラー表示が難点かと。
0536385
2009/07/25(土) 01:12:24>>535
確かにその通りですね。
ただC++のテンプレートは展開しながら,型エラーになったところで初めてエラーメッセージを生成するからあんなことになるんだと思っています。
ちゃんと型検査を事前に行えるような仕様にして,型検査に通ってから展開するようにすれば多少マシにできないでしょうか。
0537デフォルトの名無しさん
2009/07/25(土) 02:02:33a'->a'
0538デフォルトの名無しさん
2009/07/25(土) 05:11:32C++だと戻り値の型推論は面倒だね (この場合は楽だけど)。
D言語だとこんな感じ。
import std.stdio;
auto foo(T)(T x){
return x;
}
void main(){
writeln(foo(10));
writeln(foo("str"));
}
0539デフォルトの名無しさん
2009/07/25(土) 10:08:27高階関数をサポートしないならa->aのみ
さもなければ多相型を含む最小の型は一意にきまるが(a->a)
この関数に適応する多相型は無限にある
型推論が全てのケースで動くなら
関数定義の際、引数と戻り値の型宣言も省略して
f(x){return x;}
g(x,y,z){return x(y(z));}
みたいにできるだろうね
C言語っぽくは見えないが
0540303 ◆pFphp4Ej4w
2009/07/25(土) 13:16:21お叱りごもっともです。
>>530
フォローありがとうございます。
しかし実際のところ、私は一つか二つ爆弾投下して逃げるつもりでした。その後なんだかズルズルとここまで来てしまったので、SINCL(仮称)の方針を明示する機会がありませんでした。
また、皆さんの「プログラミング言語に求めていること」を取り込んで言語仕様を提案しようと思っていたので、「もっとプログラマの意見を聞くべきではないか」と思っていました。
そのため、方針を示さなかったし、逆に示せなかったのです。それについて不快に思ったのであれば深くお詫びします。
さて、肝心の方針についてですが、385さんとまだコンタクトをとっていないので(すいません。近日中に連絡します。)深いことは決めていません。
0541303 ◆pFphp4Ej4w
2009/07/25(土) 13:17:35お叱りごもっともです。
>>530
フォローありがとうございます。
しかし実際のところ、私は一つか二つ爆弾投下して逃げるつもりでした。その後なんだかズルズルとここまで来てしまったので、SINCL(仮称)の方針を明示する機会がありませんでした。
また、皆さんの「プログラミング言語に求めていること」を取り込んで言語仕様を提案しようと思っていたので、「もっとプログラマの意見を聞くべきではないか」と思っていました。
そのため、方針を示さなかったし、逆に示せなかったのです。それについて不快に思ったのであれば深くお詫びします。
さて、肝心の方針についてですが、385さんとまだコンタクトをとっていないので(すいません。近日中に連絡します。)深いことは決めていません。
続く
0542303 ◆pFphp4Ej4w
2009/07/25(土) 13:20:07ただ、私のプログラミング言語に対する哲学としては「プログラミングは楽しむべき」だし、「やりかたはいくらでもある」べきです。
また、プログラマの能力を最大限サポートするよう柔軟であるべきだと考えています。ですからそのような言語方針が示されることになるでしょう。
…どうも私は木の根っこでなく葉っぱからはじめようとしていたようです。ごめんなさい。
続く
0543303 ◆pFphp4Ej4w
2009/07/25(土) 13:22:11どのようなものをサポートした言語仕様がいいでしょうか。
皆様の意見をお聞かせください。
0544デフォルトの名無しさん
2009/07/25(土) 14:17:210545デフォルトの名無しさん
2009/07/25(土) 16:57:41好き勝手言ってるだけだから、それらをぜんぶ取り入れたら無法地帯になるよね。
極端な話をするなら、C + Ruby + Lisp + Haskell + Java + Smalltalk のスーパーセットを作れば
みんな満足する素晴らしい言語ができると思うよ。素晴らしすぎて誰も使わないだろうけど。
そうじゃなくて、周りの意見を聞いたうえで 「さて何を取り入れようか」 を 303 には考えてもらいたい。
というより今までの流れの中で 「これだけは捨てられない」 ってポイントが、3点くらいはすぐに挙げられると思う。
そのポイントが「方針」だと思う。まずはそれを聞かせて欲しい。
0546303 ◆pFphp4Ej4w
2009/07/25(土) 18:28:39あぁ…それ忘れてた(;´д`)
> そうじゃなくて、周りの意見を聞いたうえで「さて何を取り入れようか」を303には考えてもらいたい。
> というより今までの流れの中で「これだけは捨てられない」ってポイントが、3点くらいはすぐに挙げられると思う。
そうですねぇ…
1.マルチスレッド周りの強化
2.後方参照の導入
3.ヘッダファイルの廃止
4.クラス、テンプレートの導入
ですね。なんか545さんの意見に便乗するようで悪いのですが、これが標準ということでよろしいですか?
0547デフォルトの名無しさん
2009/07/25(土) 18:33:41みたいなのもっとくれ
0548デフォルトの名無しさん
2009/07/25(土) 18:35:12まんまD言語じゃん。D言語からGC外すの頑張った方が良くね?
>1.マルチスレッド周りの強化
標準でTLS、推移的なimmutableやsharedあり
>2.後方参照の導入
(前方参照と言うのだがまぁいいとして)これも採用されている。
>3.ヘッダファイルの廃止
ヘッダファイルもない。
>4.クラス、テンプレートの導入
クラスもC++以上のテンプレートもある。
0549デフォルトの名無しさん
2009/07/25(土) 18:47:550550デフォルトの名無しさん
2009/07/25(土) 18:50:52それともまともなコンパイラがないだけなの?
0551デフォルトの名無しさん
2009/07/25(土) 18:56:54コンパイラのバグはまぁ多いかな。特に想定されてないと思われる組み合わせを使うとバグに遭遇しやすい。
仕様のバグもまぁぼちぼちあるが(配列リテラルのキャストとか)、直していける範囲だと思う。
0552デフォルトの名無しさん
2009/07/25(土) 19:03:38dmdのソース(GPL)を改造するならともかく。
0553デフォルトの名無しさん
2009/07/25(土) 19:19:31>>548でも指摘されてるけど向きはパーサ基準だから
画面の下方向が前方になるよ
0554303 ◆pFphp4Ej4w
2009/07/25(土) 19:37:46そうなんですよね…
いま現在のプログラミングの研究が進んだ社会ではC言語の後継を目指そうとオブジェクト指向を取り入れるとC#かD言語になってしまうのですよねぇ…
いっそのことオブジェクト指向はばっさりと切り捨ててしまいましょうか?
0555デフォルトの名無しさん
2009/07/25(土) 19:40:300557デフォルトの名無しさん
2009/07/25(土) 19:43:49新しいパラダイムか。いいねぇ。
イベント駆動のパラダイムを全面に出した言語が欲しいなぁ
0558303 ◆pFphp4Ej4w
2009/07/25(土) 20:11:59本当は、構造化プログラミングパラダイムであるC言語のパラダイムを受け継ごうという意味だったのだけど、それはいいなぁ…
ちょっと考えてみるね。
0559デフォルトの名無しさん
2009/07/25(土) 20:13:060560デフォルトの名無しさん
2009/07/25(土) 23:16:290561デフォルトの名無しさん
2009/07/25(土) 23:22:300562デフォルトの名無しさん
2009/07/25(土) 23:41:01kコンパイラ使ったわ
ほとんど覚えてないけど
0563デフォルトの名無しさん
2009/07/26(日) 10:33:460564303 ◆pFphp4Ej4w
2009/07/26(日) 21:26:470565デフォルトの名無しさん
2009/07/27(月) 01:47:01ライブラリの話だけど、文字列バッファやファイル、ソケットとかを
一緒くたにできるようにしてほしい。
文字列をFILE *にアサインしてfprintfとかで読み書きでけるとか。
FILE *fp = string_open(buf, size, "r+b");
みたいな。
まあソケットへの適用は微妙だね。ソケットに対してfgets、ungetc
とか使えると便利ではあるけど。
ライブラリ作るのも大変だ。
0566385
2009/07/27(月) 02:08:05メール読みましたが,別にメールで話すようなことでもないのでここに書きますね。
私は主に実装に興味があるので面白ければなんでもいいんですが、客観的に意見をいうと
「イベント駆動のパラダイムを全面に出した言語」というのがそもそもどういったものを
指しているのか良くわかりません。
イベント駆動のプログラムは大体どんな言語でも書けますし、結局のところ
コールバックを登録するだけなのだから、こんな構文があったらうれしいとかいうのも
想像できません。
並列処理のことなども考えるとイベント駆動について考えるのは重要だと思いますが、
言語の中心に据えるようなものなんでしょうか?
0567デフォルトの名無しさん
2009/07/27(月) 02:14:14それ、fmemopen。今はPosix止まりだけど、今度のCの規格改定(C1X)で入る予定。
ソケットも、Unix系はfdopen、Windowsは_open_osfhandleして_fdopenでFILE*にできるのが現状。
だから、新言語のライブラリでもそう大変ではないはず。
なんでもファイル読み書きの如く扱えるのが当然という言語は多いけど、
なんだかんだでCでもそうできている。
自分はWindowsの人間なんで使ったこと無いけど、funopenやfopencookieとかも。
0568デフォルトの名無しさん
2009/07/27(月) 04:00:14>「イベント駆動のパラダイムを全面に出した言語」
Reactive Programmingのこと言いたかったんじゃね?
似てるし。
0569303 ◆pFphp4Ej4w
2009/07/27(月) 09:11:06いったん勉強して、また出直します…
0570デフォルトの名無しさん
2009/07/27(月) 11:27:41スタック退避したりしてマルチタスクする、って本があった。
プリエンティブだったかどうか忘れたけど、
タスク切り替えのトリガは何だったかな。
0571デフォルトの名無しさん
2009/07/27(月) 12:06:05fiberのこと?
0572デフォルトの名無しさん
2009/07/27(月) 12:08:260573デフォルトの名無しさん
2009/07/27(月) 19:08:43やっぱり登り始めちまったようだな
LISPへの道を
この道は険しいから、相当の覚悟が必要だ
0574385
2009/07/27(月) 19:28:49何かできたらここに書くかもしれないし書かないかもしれません。では。
0575デフォルトの名無しさん
2009/07/27(月) 22:53:200576デフォルトの名無しさん
2009/07/27(月) 22:55:060577デフォルトの名無しさん
2009/07/28(火) 00:13:42死んでるんだぜ、スレ
0578デフォルトの名無しさん
2009/07/28(火) 00:58:09303 の悪いところは、良い所だけを考えて、それ以外の細かい部分を疎かにしていたこと、かな。
最後まで作りこんだ経験があればまた話は違ったのかもしれないけどね。
0579デフォルトの名無しさん
2009/07/28(火) 01:05:53思い立ったが吉日生活さー
0580デフォルトの名無しさん
2009/07/28(火) 11:04:160581デフォルトの名無しさん
2009/07/28(火) 13:07:34抽象化って言葉がバズワード化してる。
継続を得ると言っているのはおそらく
returnとかbreakとかcontinueのようなオブジェクトを得る
ということ。
0582デフォルトの名無しさん
2009/07/28(火) 20:03:210583デフォルトの名無しさん
2009/08/01(土) 20:23:03バズワード化なんてしてないと思うけど。
単にキミが頭悪いだけじゃないの?
>>510の2行目の表現はちょっと意味不明なところがあるが…
言っとくけど俺は>>510じゃないよ。
0584303 ◆pFphp4Ej4w
2009/08/02(日) 00:17:33あれから自分の頭を冷やし、他の言語の仕様を調べたり、関数型言語を軽く調べたり、学んだりしていました。
そのかいあってか、私の中ではかなり具体的にSINCLの言語仕様が固まってきました。
おそらく近日中にSINCLの言語仕様案をこのスレのなかで提示することが出来ると思っております。
またSINCLの言語としての方針もそのとき示すことができるでしょう。
とりあえず今日言いたかったことはこれだけです。それでは失礼いたします。おやすみなさい。
0585デフォルトの名無しさん
2009/08/02(日) 06:26:230586303 ◆pFphp4Ej4w
2009/08/07(金) 15:48:17申し訳ございません。(発表待ってる人いないと思うけどとりあえず。)
0587デフォルトの名無しさん
2009/08/07(金) 18:57:240588303 ◆pFphp4Ej4w
2009/08/13(木) 17:27:02いま携帯から書き込んでいるので今後のSINCL(仮称)の方針についてお話しするに留めておきます。
当分はC言語へのトランスレーター向けの言語仕様を策定していくつもりです。これがSINCL(仮称) version1となります。
恐らく言語仕様に盛り込まれるのは
テンプレート
名前空間
半端な型推論
となるでしょう。文法はあまりC言語とは変わらなくなると思います。(一部の変態的構文のみ廃止または改訂されます。)
SINCL version2(仮称)はコンパイラ向けの言語仕様になると思います。
SINCL(仮称) version3はオブジェクト指向が盛り込まれると思います。
SINCL(仮称) version4は返り値に関数が指定できるようになると思います。
…これらが今後のSINCL(仮称)について私が抱いている青写真です。
今後このプロジェクトがどのような方向に進むかわかりませんがどうか皆様よろしくお願いします。
それでは、失礼いたします。
0589デフォルトの名無しさん
2009/08/13(木) 20:11:570590デフォルトの名無しさん
2009/08/13(木) 23:21:000591デフォルトの名無しさん
2009/08/13(木) 23:29:44どうやって実装するつもり?
0592デフォルトの名無しさん
2009/08/14(金) 01:00:430593デフォルトの名無しさん
2009/08/14(金) 01:10:54あくまで新C言語なんだから。
0594デフォルトの名無しさん
2009/08/14(金) 01:31:43何かもうそれだとC++0xっで良くね?
0595303 ◆pFphp4Ej4w
2009/08/14(金) 10:37:17>>592氏が言っているようなやり方でできると思います。
まぁversion4での話ですから、言語仕様の策定は当分先、早くても2011年頃になると思います。
ですから今から実装の話をするのはちょっと早すぎるような…
そこらへんは385氏と話さないとなんとも言えませんね…
>>594
SINCL(仮称)はオブジェクト指向でないという点が違います。(version2まで)
0596デフォルトの名無しさん
2009/08/14(金) 13:09:300597303 ◆pFphp4Ej4w
2009/08/14(金) 14:33:45そういうことになるのかなぁ…
ただ、SINCL(仮称)=C++と言う訳ではないので同じものであるとは言えません。
ま、まだ先の話ですから。
0598デフォルトの名無しさん
2009/08/15(土) 06:58:020599303 ◆pFphp4Ej4w
2009/08/15(土) 14:31:17目的…それは今のC言語の特徴を残しつつ、それを越えたプログラミング言語(新C言語)を、実装・言語仕様共に皆様に提供することに他ならないと私は考えています。
0600デフォルトの名無しさん
2009/08/15(土) 18:54:470601デフォルトの名無しさん
2009/08/15(土) 19:53:00お前は何も作る気が無いと言ってるのと同じ
しかもまだ385に頼るつもりでいるのか?
別に誰も期待してないし、もう出てこなくていいよ
0602303 ◆pFphp4Ej4w
2009/08/15(土) 19:54:07重要度の高いものから順に
1.高い移植性
2.OSさえも(アセンブリ言語を一部使用しなければならないにしても)書けてしまうという高い柔軟性
3.高いパフォーマンス性能
0603デフォルトの名無しさん
2009/08/15(土) 20:34:56評論家みたいな抽象論だね。
1.と3.は要するに言語仕様に環境に依存する機能は含めない(環境の違いは
ライブラリで吸収)すること、2.は要するにポインタのことでしょ。
しかし、何もガラガラポンの全とっかえである必要は何もないと思うんだが。
Cのマズい仕様を変更し、不足している機能を補う、それで十分じゃないのか。
発展的継承って理論でもものづくりでも一番オーソドックスな進歩の方法でしょ。
0604デフォルトの名無しさん
2009/08/15(土) 20:37:14と、横槍
0605デフォルトの名無しさん
2009/08/15(土) 20:53:12おれはメモリ空間を超えられる言語がおもしろいと思うな。
OpenCLとかあるけど、仕様が現行GPUの都合で決められてて汚すぎ。
GPU以外にも例えばCell B/EのPPEとSPEがシームレスにプログラミングできるとか、
サーバクライアントのアプリががひとつのソースから作れるとか。
ランタイムをどれだけ最小限に抑えられるかがミソだと思う。
つうかこれ数年前に作り始めて途中で挫折したんだけどさ。
0607デフォルトの名無しさん
2009/08/15(土) 21:05:54C言語へのトランスレータだった時代のC++のサブセットを再発明して、その後C++0xのサブセットを再発明するとしか見えない。
がっかりだ。
0608デフォルトの名無しさん
2009/08/15(土) 23:18:21じゃあお前は何をつくれるんだ?
0609デフォルトの名無しさん
2009/08/15(土) 23:23:080610デフォルトの名無しさん
2009/08/15(土) 23:28:04建設的な話ができないやつは厨房って自覚した方がいいね。
0611デフォルトの名無しさん
2009/08/15(土) 23:32:15その結果がこれじゃぁね。
#あるコンパイラを弄ったことあるから協力するつもりで居たのに残念という意味合いが強い。まぁ期待しすぎただけだが。
0612デフォルトの名無しさん
2009/08/15(土) 23:34:22いって、使い道はあるんだろうかね。
0613デフォルトの名無しさん
2009/08/15(土) 23:35:440614デフォルトの名無しさん
2009/08/15(土) 23:36:280615303 ◆pFphp4Ej4w
2009/08/15(土) 23:58:58ここでつくられる言語がガッカリなものになるかどうかはここで皆様が下さる助言に少なからず関わってくると思います。
あ、あと、あまり私に過度な期待をかけないほうがいいと思います。
投げ出すつもりはありませんが、所詮はどこにでもいる高校1年生ですし。
0616デフォルトの名無しさん
2009/08/16(日) 00:04:10ちなみに女です
とか気を利かせろよ
0617デフォルトの名無しさん
2009/08/16(日) 00:18:13仕様制定のプロセスの問題について言いたいこともあるが、まぁいいや。
まずは既存の実装のソースを弄ることから始めてみるといいよ。そうしないと全体像掴めないだろうしね。C言語コンパイラのtccやD言語コンパイラのdmd辺りを弄るのがお手軽かな。
本当は分かりやすいC++実装があると良いのだけどね。
http://bellard.org/tcc/
http://ftp.digitalmars.com/dmd.2.031.zip (dmd2/src/dmd内)
#llvmのclang(cfe)とかgccとかは試してないので難しさは分からないけどざっと見ややこしそう。
#上の方で紹介されてたcycloneもソースあるようだけどもcyclone自身で書かれているようなので理解には向かない予感。
0618303 ◆pFphp4Ej4w
2009/08/16(日) 00:29:18> 仕様制定のプロセスの問題について言いたいこともあるが、まぁいいや。
言いたいことはじゃんじゃか言ってしまって結構ですよ。
とりあえず紹介して下さった実装のソースコードを見てみることにします。
0619デフォルトの名無しさん
2009/08/16(日) 00:40:52>言いたいこと
後でいいや。
>ソースコードを見てみることにします
忘れてたけどこれも張っとく。
ソースコードを読むための技術
http://i.loveruby.net/ja/misc/readingcode.html
構造が分かるようになれば面白くなってくるから頑張れ。
0620デフォルトの名無しさん
2009/08/16(日) 00:42:56別スレたててやれよ
0621デフォルトの名無しさん
2009/08/16(日) 00:46:220622303 ◆pFphp4Ej4w
2009/08/16(日) 18:46:00今後皆さんの要望があれば凍結が解除されると思いますが、これじゃそんなことはないだろうな(;´д`)
0623デフォルトの名無しさん
2009/08/16(日) 19:21:24頑張れ。技評の"要求を仕様化する技術・表現する技術"って本読んでおくと良いよ。プロセスの問題が分かるから。
0625デフォルトの名無しさん
2009/08/17(月) 23:31:16作例がCフラットとかいうのw
0626デフォルトの名無しさん
2009/08/18(火) 00:59:12日本屋
0627303 ◆pFphp4Ej4w
2009/08/18(火) 09:37:00そういえば今年はコンパイラ関係の本が次から次へと出版されてますよね。ドラゴンブックとか。
今年はコンパイラ本の当たり年なんですかね。
0628デフォルトの名無しさん
2009/08/20(木) 09:44:14Common Lisp と間違えそう
0629デフォルトの名無しさん
2009/08/20(木) 10:10:340631デフォルトの名無しさん
2009/08/20(木) 18:54:140632303 ◆pFphp4Ej4w
2009/08/20(木) 19:33:48いやいや。ここの人たちのアドバイスがなきゃ私は言語仕様作れませんし。
それじゃ株式会社ジェーンの二の舞に…
0633デフォルトの名無しさん
2009/08/20(木) 21:30:20303c、TB303みたいでかっこいいじゃん。
0634デフォルトの名無しさん
2009/08/21(金) 00:12:55さて、Bは何の略にしようか。
↓
0635デフォルトの名無しさん
2009/08/21(金) 06:19:030636デフォルトの名無しさん
2009/08/21(金) 08:42:07実務で変数とか関数にhogeとかつけてるとすぐにクレームが^^;
スレ主が決めちゃえばいいと思うんだけど「みんなで決めよう」ってことなら
開発用のコードネームをとりあえず決めちゃえばいいんじゃない?
SINCLでもいいと思うよ
仕様が決まり出してから正式名を決めれば?(アンケートとかで)
303好きな人が多いのでリアルタイム特化型にしたら
CR-303とかパチンコみたいな名前になるかも
0638デフォルトの名無しさん
2009/08/21(金) 12:15:27C言語のトランスレータだったら最適化フェーズはないんだろうけど。
それでもすごい。
コンパイラ構成論の勉強したの?
名前は美緒さんとかw
0639デフォルトの名無しさん
2009/08/21(金) 12:33:59ボタン電池みたいだな。
だがそれがいい。
0640デフォルトの名無しさん
2009/08/22(土) 04:23:40コンパ イラ
0641デフォルトの名無しさん
2009/08/22(土) 05:56:1430mm x 3mmですね。わかります
0642デフォルトの名無しさん
2009/08/23(日) 04:13:39Bool bool(a==b);
bool.
True([](){puts("Equal")}).
False([](){puts("Not Equal")});
こんなSmalltalkライクな構文も書ける訳だし。
0643デフォルトの名無しさん
2009/08/23(日) 09:40:350644デフォルトの名無しさん
2009/08/23(日) 10:58:310645デフォルトの名無しさん
2009/08/23(日) 11:23:59関数の引数として渡すのはOK
0646デフォルトの名無しさん
2009/08/23(日) 23:24:430647デフォルトの名無しさん
2009/08/24(月) 02:33:56要するに置き場所を選べるように作ればいい。
0648デフォルトの名無しさん
2009/08/24(月) 17:25:04寧ろそれは、3mmΦ*0.3mm厚じゃないのか?
例えばCR-2016は20mmΦ*1.6mm厚だぞ。
0649デフォルトの名無しさん
2009/08/27(木) 23:00:23s = hogehoge(s);
みたいなのを、
s *= hogehoge;
とかみたいに書けるってのはどうだろう。記号はともかくとして。
++がアリなら、こういうのもアリな気はする。
他の言語だとどんな文法使うんだろ。こういうのって。
0650デフォルトの名無しさん
2009/08/27(木) 23:11:53それ少しも複雑性が減ってるように思えないんだけど・・・
しかも代入演算子の書き方と少しもシンメトリックじゃないってどういうことだ
0651デフォルトの名無しさん
2009/08/27(木) 23:29:16a = b - a;
代入演算子を使えるのは前者のみ
0652デフォルトの名無しさん
2009/08/28(金) 00:39:57perlの正規表現みたいな感覚でもいいんだけど、
そういうのにふさわしい記号が思いつかない。
0653デフォルトの名無しさん
2009/08/28(金) 01:09:52s.hogehoge
ですな
追加のような単純な処理ではなく、
全体に変更を加えるような意図なら
演算子化は避けるべき
0654デフォルトの名無しさん
2009/08/28(金) 04:57:22hogehoge(&s);
0655デフォルトの名無しさん
2009/09/02(水) 22:12:36自分としては強力なマクロが欲しい
m4ぐらいの…
あまり無理せずにマターリと!
0656303 ◆pFphp4Ej4w
2009/09/02(水) 22:48:59どうもありがとうございます。自分なりにリファレンス書いたり実装をちょびちょび書いているのですが…もうすぐ学校の文化祭でして(10月)しばらく手がつけられなさそうです。
0657デフォルトの名無しさん
2009/09/02(水) 23:04:07理論は独学?
0658デフォルトの名無しさん
2009/09/02(水) 23:09:200659デフォルトの名無しさん
2009/09/03(木) 00:00:22いやいやただのトランスレーターですよ。
まぁそのうちコンパイラも…
0660303 ◆pFphp4Ej4w
2009/09/03(木) 00:04:27いやいや、ただのトランスレーターですよ。
まぁそのうちコンパイラも…
ただ最適化とかいれるとなると私の手におえなくなりますが…
第一こんなアホな発言ばっかりしてるのに大学生と思われてたってのは…何?
0661303 ◆pFphp4Ej4w
2009/09/03(木) 00:16:02二重投稿してしまった…
0662デフォルトの名無しさん
2009/09/03(木) 06:21:450663デフォルトの名無しさん
2009/09/03(木) 16:59:170664デフォルトの名無しさん
2009/09/05(土) 02:03:540665デフォルトの名無しさん
2009/09/05(土) 13:16:04技術者より経営者に向いてるかもよ!
0666デフォルトの名無しさん
2009/09/06(日) 07:26:280667デフォルトの名無しさん
2009/09/06(日) 07:37:40C言語て記号いろいろ使ってて、作るのめんどくなって途中で投げたんだ
printfと、if,elseまで作った時点でかなりソースが膨らんでてやる気がな・・・・
303がどこまで作れたのか興味深い
0668303 ◆pFphp4Ej4w
2009/09/06(日) 09:00:21まぁそうですが、最適化と実行ファイル生成とかがないだけ楽です。
>>666
http://github.com/385
で385氏がOCamlで書いたものが見れます…と思ったら無くなってますね…
とりあえずソースは手元にあるのでどこかうpろだ紹介してくださればそこにあげます。
>>667
C系の言語って他のプログラミング言語より圧倒的に演算子が多いですからね…
0669303 ◆pFphp4Ej4w
2009/09/06(日) 09:11:000670デフォルトの名無しさん
2009/09/10(木) 10:20:15That page doesn't exist!ってなってる
0671デフォルトの名無しさん
2009/09/10(木) 20:45:51>で385氏がOCamlで書いたものが見れます…と思ったら無くなってますね…
>とりあえずソースは手元にあるのでどこかうpろだ紹介してくださればそこにあげます。
0672デフォルトの名無しさん
2009/09/10(木) 22:23:36Wikiを作ってWikisourceみたいな使い方すればリファレンスも書けて一石二鳥
0673デフォルトの名無しさん
2009/09/10(木) 22:30:09http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1370.pdf
0674デフォルトの名無しさん
2009/09/12(土) 00:28:34っ[Wiki]
http://ja.project-sincl.wikia.com/
0675デフォルトの名無しさん
2009/09/12(土) 08:15:57ああああふぃぃいぃぃぃ 多いよ^^;
0677デフォルトの名無しさん
2009/09/12(土) 21:11:08ああそうか、わざわざ変な道を行くのがこのスレの趣旨でしたね
0678デフォルトの名無しさん
2009/09/12(土) 21:40:53MediaWikiで書きたいという需要が最近増えてるが、
atwikiだとMediaWiki互換機能はかなりあやしい。
0680デフォルトの名無しさん
2009/09/13(日) 03:42:410681デフォルトの名無しさん
2009/09/13(日) 08:37:13管理のしっかりしているサイトなら気にならないんだけど。
MediaWikiはカテゴリによって適当にやってもそれなりに階層構造ができているように見えるのがいい。
WikipediaやChakuWikiのような誰でも編集できるところはMediaWikiがあっていると思う。
0682デフォルトの名無しさん
2009/09/14(月) 22:48:09アレ以上何を拡張するんだか知らんが
0683デフォルトの名無しさん
2009/09/16(水) 22:30:300684デフォルトの名無しさん
2009/09/17(木) 00:51:42LLVM のフロントエンドを作りたいの?
0685303 ◆pFphp4Ej4w
2009/09/18(金) 21:11:39いずれはコンパイラを作ることになるので今のうちに読んでおこうかと。
0686デフォルトの名無しさん
2009/09/18(金) 21:40:500687デフォルトの名無しさん
2009/09/19(土) 01:59:07static int first = 1;
if(first){ ほげほげ first = 0; }
みたいなのを、
first{
ほげほげ
}
みたいに書けるとか。
0688デフォルトの名無しさん
2009/09/19(土) 02:05:110689デフォルトの名無しさん
2009/09/19(土) 02:33:55static int once = 1;
while(once--) { ikkaidake() };
0690デフォルトの名無しさん
2009/09/19(土) 07:20:42int hogehoge() {
何かの処理
once { huga1 }
何かの処理
once { huga2 }
}
みたいに複数書けるとさらにうれしいかも
0691ぅゅ ◆e6.oHu1j.o
2009/09/19(土) 14:04:30static int ikkai; \
if( !( ikkai || ikkai++ ) )
defineでやれるだろカス
てかこれ、バグの元になるってのわかってんの?
初心者はそこらじゅうに
static int first = 1;
if(first){ ほげほげ first = 0; }
こんなソース書きまくるが
それはさっさとやめさせてまともな設計を考えさせるべき
0692デフォルトの名無しさん
2009/09/19(土) 14:08:340693ぅゅ ◆e6.oHu1j.o
2009/09/19(土) 14:51:080694デフォルトの名無しさん
2009/09/19(土) 15:01:16>>691のマクロもマルチスレッド時を考慮していないように見えるのが残念。
Javaの静的初期化ブロック、C#の静的コンストラクタ、VistaのInitOnceExecuteOnceなど、
マルチスレッドプログラムで1度しか実行されない保証というのは需要がある。
だから、そのための構文を作るアイディアは悪くないと思う。
というより、上に例を挙げたように正直に言って珍しくもなんともない。
あとは、どういう構文にするか。
0695デフォルトの名無しさん
2009/09/19(土) 15:55:360696ぅゅ ◆e6.oHu1j.o
2009/09/19(土) 19:01:39>マルチスレッド時を考慮していないように見えるのが残念。
は?
この流れでマルチスレッドって発想は無かった
俺はもう一種類この手のマクロを持ってる
それはこのマクロで宣言されるstatic変数のアドレスを保存していって
初期化したくなったら、初期化関数を呼んで、またブロックを1回だけ通るようにするという仕組み
俺はマルチスレッドプログラムは組まないけど
Aスレッドが1個しか走らないプログラムなら
そのスレッドの終了時に初期化させればいいし
Aスレッドが同時にいくつも走るならスレッド作成時に識別子を与えれば普通に判定できるんじゃね
0697デフォルトの名無しさん
2009/09/20(日) 05:38:17バグの元になりそうなのでマクロじゃなく構文に入れようとしてるんだろ?
0698ぅゅ ◆e6.oHu1j.o
2009/09/20(日) 07:35:42じゃあ一つ385、303の書いてるソースもっていたら
static int first = 1;
if(first){ ほげほげ first = 0; }
こういう処理やってる場所を探し出してもらえませんか
ソース何処にあるか知らないけど
コンパイラとか作ってるならソース見なくても普通は無いと確信できる
0699ぅゅ ◆e6.oHu1j.o
2009/09/20(日) 07:38:08自分の好きなように作ればいいよ
その処理は悪用されると怖いってだけで自分も極まれに使う事はある
0700デフォルトの名無しさん
2009/09/20(日) 09:48:34トランスレータなりコンパイラなりを作ろうとしているんでバグが発生しやすいような
こういう処理やよく書く処理をこういう風に展開して欲しいとみんな言ってるのだと思う
0701デフォルトの名無しさん
2009/09/20(日) 12:40:110702デフォルトの名無しさん
2009/09/20(日) 13:28:21それよりも自称プロがなんかわざわざ難しく見えるコード書いて俺SUGEEしてる方が危険w
0703デフォルトの名無しさん
2009/09/20(日) 13:34:04トランスレーターの出力をある程度理解している人間じゃないと使えないから
結局統合される運命にある。
だからそのままリリースしておしまいってことにはならない。
もしそうなら開発者のオナニ−でしかいない。
LISPはその辺うまくできている。
0704デフォルトの名無しさん
2009/09/20(日) 13:52:220705デフォルトの名無しさん
2009/09/20(日) 13:55:56デバッグはそれなりに面倒だと思うけど…
0706デフォルトの名無しさん
2009/09/20(日) 23:37:23ってのがそもそも設計間違ってる可能性が高いと思うんだが。
関数に状態持たせるなよ。
0707デフォルトの名無しさん
2009/09/20(日) 23:53:57おいそれと JavaScript も書けんな…
0708デフォルトの名無しさん
2009/09/21(月) 00:09:28クロージャ採用は間違ってる可能性が高いと俺も思う
0709デフォルトの名無しさん
2009/09/21(月) 00:14:180710デフォルトの名無しさん
2009/09/21(月) 00:18:04そうだよ。
ただ、インスタンス的に関数を使うやり方なだけだからな。
0711デフォルトの名無しさん
2009/09/21(月) 00:18:28はぁ?
クロージャはモデルが違うだろ。
クロージャオブジェクトが関数と環境を持ってるんだよ。
言語スレの住人だったらメタモデルぐらい考えてみような。
0712デフォルトの名無しさん
2009/09/21(月) 00:18:34>新C言語だろ?
つうか Blocks 知らんのか…
0713デフォルトの名無しさん
2009/09/21(月) 00:21:34君は自分で自分の言ってる事が理解出来てるのかな?
0714デフォルトの名無しさん
2009/09/21(月) 00:29:02さぁね。
環境という言い方でわかる人はわかるはずだけどね。
0715デフォルトの名無しさん
2009/09/21(月) 00:35:120716デフォルトの名無しさん
2009/09/21(月) 00:37:36ジェネレータの話か?
0717デフォルトの名無しさん
2009/09/21(月) 00:38:34>>716
>>713
0718デフォルトの名無しさん
2009/09/21(月) 00:50:41>>707の突っ込みが的外れなわけで。
それを認めるのがいやで言葉尻をとらえようと必死になってる。
そういう構図。
0719デフォルトの名無しさん
2009/09/21(月) 00:55:020720デフォルトの名無しさん
2009/09/21(月) 04:44:270721デフォルトの名無しさん
2009/09/21(月) 09:35:19スキルの高そうな人たちがそれぞれの信念のもとに突っ込んできますね〜
書き込んでる人全員の意見を考慮し出したら前へ進まないので
作ろうとしている人たちが採用/不採用を決めればいいと思います
自分の意見としては
a:いろんなOS/アーキテクチャで使用できる
b:既存のC/C++のコードを最小限の変更(変更なしが望ましい)で流用できる
が最低限必要かと思います
a,bが満たされないとオナニー言語で終わってしまうかもしれません
逆に満たされると「スーパーコンピュータでも使えます」みたいな〜
C言語へのトランスレータが良いかも(異議は認める)
0722デフォルトの名無しさん
2009/09/21(月) 12:19:280723303 ◆pFphp4Ej4w
2009/09/21(月) 14:02:15>>708
クロージャ採用の話は凍結になったはずですが。
>>721
C言語へのトランスレーターである限りではどっちも満たせるんじゃないかと。
0724デフォルトの名無しさん
2009/09/21(月) 15:56:55なんかむかつく!
0725デフォルトの名無しさん
2009/09/22(火) 11:31:44×トランスレータは、既存言語の一部を仕様変更するために作成される (>>723)
303 の用語の使い方に、揚げ足取り。
0726303 ◆pFphp4Ej4w
2009/09/23(水) 20:07:43と言ってもPDFファイルとODTファイルですが…
0727デフォルトの名無しさん
2009/09/24(木) 01:40:590728デフォルトの名無しさん
2009/09/25(金) 22:56:070729デフォルトの名無しさん
2009/09/26(土) 07:41:060730デフォルトの名無しさん
2009/09/27(日) 07:58:110731デフォルトの名無しさん
2009/09/27(日) 11:52:04ジェネリックとオーバーロードと名前空間を足したCがあれば満足
クラスとかはいらんぽ
あとは型安全性の強化
0732デフォルトの名無しさん
2009/09/28(月) 01:03:07オーバーロードの機能をよく吟味すると、C++と同じ型ロジックが必要だとわかるよ
つまりC++使えって事
0733デフォルトの名無しさん
2009/09/28(月) 03:06:590734デフォルトの名無しさん
2009/09/28(月) 03:13:050735デフォルトの名無しさん
2009/09/28(月) 10:57:460736デフォルトの名無しさん
2009/09/28(月) 11:03:470737デフォルトの名無しさん
2009/09/28(月) 20:36:41現状報告をして下さい
0738303 ◆pFphp4Ej4w
2009/09/28(月) 21:08:42ジェネリックはテンプレートでどうにかなるかと。
でもC++みたいなテンプレートだと時間かかるんだよなぁ…
0739デフォルトの名無しさん
2009/09/28(月) 23:05:110740デフォルトの名無しさん
2009/09/29(火) 01:56:360741デフォルトの名無しさん
2009/10/01(木) 18:56:57実現できそうになるのに2年かかるから>>1はいなくなったと考えるのが普通。
0742デフォルトの名無しさん
2009/10/13(火) 01:00:130743デフォルトの名無しさん
2009/10/13(火) 04:34:45それはC++の実装というか仕様が糞なだけ。
0744303 ◆pFphp4Ej4w
2009/10/18(日) 02:13:02#年内にリリース出来たらいいなと希望的憶測でものを言ってみる。
0745デフォルトの名無しさん
2009/10/18(日) 02:25:470746デフォルトの名無しさん
2009/10/18(日) 04:46:05てかC99とC++のextern Cってどの程度同居できるの?
0747デフォルトの名無しさん
2009/10/19(月) 00:31:01名前修飾がC99とそれ以前と異なる処理系なんて見たことないぞ。
0748デフォルトの名無しさん
2009/10/20(火) 18:09:27@マークつきDLL関数ってCだとLoadLibraly使わないといけないけど
Basicだとそのまんま@マークつきで関数定義できちゃうよね。
そういう話じゃなくて?
0749デフォルトの名無しさん
2009/10/20(火) 22:22:480750デフォルトの名無しさん
2009/11/03(火) 17:40:080751デフォルトの名無しさん
2009/11/04(水) 21:33:06みたいなかんじで
C + CLOS -> 新C を妄想する
0752303 ◆pFphp4Ej4w
2009/11/04(水) 22:44:53githubにあった385氏の実装のコード置き場が復活していました。
(落ちる前にわしがフォローしていたから?)
ttp://github.com/303/SINCL
と言うわけで、385氏の実装をビルドする際はgithubからソースを取ってきてビルドすることを強く推奨します。
ではでは。
0753303 ◆pFphp4Ej4w
2009/11/12(木) 07:03:26利点:
コンパイルが速い
GC付き
並列処理を意識した設計
欠点:
パフォーマンスはCと比べ10%程悪い?(GCを採用しているからか?)
テンプレートがない
GCがある
構文はPascalとCを足して2で割ったような感じですね。D言語のスレで「将来的にDと競合するのでは?」なんて議論されてますが、むしろSINCLと競合するような気がしてなりません。被害妄想だと言われればそれまでですが。(まだ実装さえ出してないし)
Googleは何を目指してるんですかね…
…というわけで何が言いたいのかわからない雑文でした。
ついでにあげます。
0754デフォルトの名無しさん
2009/11/12(木) 08:38:59Pascal+Javascriptに見える
0755303 ◆pFphp4Ej4w
2009/11/14(土) 10:07:510756デフォルトの名無しさん
2009/11/14(土) 10:55:390757デフォルトの名無しさん
2009/11/14(土) 11:41:570758デフォルトの名無しさん
2009/11/14(土) 14:20:110759デフォルトの名無しさん
2009/11/14(土) 20:00:370760デフォルトの名無しさん
2009/11/15(日) 15:44:150761デフォルトの名無しさん
2009/11/16(月) 01:14:300762デフォルトの名無しさん
2009/11/16(月) 14:37:360763デフォルトの名無しさん
2009/11/19(木) 19:12:490764デフォルトの名無しさん
2009/11/25(水) 17:12:39http://pc12.2ch.net/test/read.cgi/tech/1258431145/
このスレで今「俺言語」が話題になってる。
「俺言語」の変換先言語を感がえてみては?
0765303 ◆pFphp4Ej4w
2009/12/09(水) 11:32:34typedef struct Hoge{
/* ... */
union piyo{
int foo;
char bar;
}u;
}Hoge;
Hoge hogege;
hogege.u.foo = 3;
って感じで共用体をを使う人ってどれくらいいます?
0766デフォルトの名無しさん
2009/12/09(水) 11:35:53unionは普通そういう使い方はしない。
構造体内でバイト列の読み替えをするのに定義することが多い。
union piyo {
int foo;
char bar[4];
short poo[2];
};
といった感じ。
0767303 ◆pFphp4Ej4w
2009/12/09(水) 11:44:40確かにそういう使い方もありますわな。(完璧に処理系依存で、ほめられた使い方じゃないですが)
…で今回聞きたいのはそういうことではなくて、「構造体の中で共用体を宣言してしまう」人がいるか聞いたのですが…
0768303 ◆pFphp4Ej4w
2009/12/09(水) 11:49:21> 「構造体の中で共用体を宣言してしまう」
じゃなくて
「構造体の中で、共用体の宣言と共用体の変数宣言を同時にやってしまう」でした…
0769デフォルトの名無しさん
2009/12/09(水) 12:41:07おいおい。処理系依存じゃないよ。char、short、long intは
それぞれ最低取りうる値の範囲がC言語の規格書で決められているぞ。
(ただし1バイトが8ビットかどうかは処理系定義と明記してあるが)
その意味ではintと書いて4バイトとみなすのは「処理系依存」だが、それならlong intと書けばいい。
せめてJISの規格書くらいは目を通そうな。
http://www.jisc.go.jp/app/pager?id=32303
>…で今回聞きたいのはそういうことではなくて、「構造体の中で共用体を宣言してしまう」人がいるか聞いたのですが…
Linuxカーネルのソースコード読んでみな。
0770303 ◆pFphp4Ej4w
2009/12/09(水) 13:08:58> その意味ではintと書いて4バイトとみなすのは「処理系依存」だが、
あ、そういう意味です。申し訳ない。
> Linuxカーネルのソースコード読んでみな。
やっぱ結構いるんですかねぇ…
なんでこんなことを聞いたかと言うと、struct hoge型の宣言と変数宣言を同時に行うことはSINCLでは出来ないので(同様に配列、共用体なども)、
struct Hoge{
/* ... */
};<-この";"(名前忘れたorz)はなくてもいいんでないかと考えたからです。(…typedefはどうしたって?
もうstructとかの名前の扱い方C++と同じでいいと思って…
でも、こうするとこんどはstructの一括代入が不可能なCでは色々とめんどくさいのですがそれはおいといて。)
0771303 ◆pFphp4Ej4w
2009/12/09(水) 20:41:38って配列関係ないわ。わし頭ダイジョブか?
0773デフォルトの名無しさん
2009/12/12(土) 01:12:330774デフォルトの名無しさん
2009/12/23(水) 07:39:030776デフォルトの名無しさん
2009/12/24(木) 14:14:21!
0777デフォルトの名無しさん
2009/12/24(木) 19:44:290778デフォルトの名無しさん
2009/12/24(木) 22:17:17#END
みたいなのを導入してマクロをスコープ付きにしてくれ
0780デフォルトの名無しさん
2009/12/25(金) 13:20:010781303 ◆pFphp4Ej4w
2009/12/25(金) 18:09:33プリプロセッサがどんどん高機能になっていく…
0782デフォルトの名無しさん
2009/12/26(土) 04:14:410783303 ◆pFphp4Ej4w
2009/12/26(土) 08:05:46…それしかないかもしれないけど、すごく読みにくそう…
#include <stdio.h>
#define(TEST) => (3){
int main(void){
int i = 10;
i += 2;
#ifdef("debug"){
printf("i..%d\n", i);
#}
i += TEST;
printf("i..%d\n", i);
return 0;
}
#}
こんな感じかな?
0784デフォルトの名無しさん
2009/12/26(土) 16:15:03速度より精度で勝負してみれば良いんじゃない?
0785デフォルトの名無しさん
2009/12/26(土) 16:48:250786303 ◆pFphp4Ej4w
2009/12/26(土) 20:21:07> 783:303 ◆pFphp4Ej4w (age)
> 2009/12/26(土) 08:05:46
> >>782
> …それしかないかもしれないけど、すごく読みにくそう…
>
> #include <stdio.h>
> #define(TEST) => (3){
>
> int main(void){
> int i = 10;
> i += 2;
> #ifdef("debug"){
> printf("i..%d\n", i);
> #}
> i += TEST;
> printf("i..%d\n", i);
> return 0;
> }
>
> #}
>
> こんな感じかな?
0787303 ◆pFphp4Ej4w
2009/12/26(土) 20:24:01> #define("TEST") => (3){
のほうがいいな。
0788デフォルトの名無しさん
2009/12/26(土) 22:18:050789デフォルトの名無しさん
2009/12/26(土) 23:38:44コードの自動生成もマクロの別解みたいなもんだし
いろんな言語にある eval もそうだ
超言語的変形は実際に便利だし
言語の枠内でやるとどんなに頑張っても1000行になるコードが
マクロ使えば50行になることもあるし
言語本体よりもプラットフォーム間で互換性の高い変形手段は必要だ
0790デフォルトの名無しさん
2009/12/27(日) 02:03:030791デフォルトの名無しさん
2009/12/27(日) 02:36:340792デフォルトの名無しさん
2009/12/27(日) 13:53:14C言語型のプリプロセッサでこれができると全く違うものになる気がする。
既存の__VAR_ARGS__という可変引数の「かたまり」のままでは無理。
carとcdrみたいに各パラメーターを分解できて個別に処理できないと
LISPのマクロ=構文と言わしめる芸当はできない。
0793303 ◆pFphp4Ej4w
2009/12/28(月) 10:32:42C言語のマクロは毒にも薬にもなりますからねぇ…
わたし的には現在のマクロに、スコープさえ入ってればいいかなぁと思っています。
0794デフォルトの名無しさん
2009/12/28(月) 18:46:52C99の可変長引数マクロなら各引数を取りだせるよ
ttp://chaos-pp.cvs.sourceforge.net/viewvc/chaos-pp/chaos-pp/chaos/preprocessor/tuple/elem.h?revision=1.11&view=markup
とか
0795sage
2009/12/30(水) 03:50:08function(a,b,c)がS式で(function (',' (',' a b) c))
にそれぞれ対応し、cが可変長引数部に出来るといいのではないかと思います。
0796303 ◆pFphp4Ej4w
2010/01/12(火) 20:48:38もしもSINCLにJavaDocみたいなのが入るとしたら、以下のうちのどれがいいですかね。
1)JavaDoc風のコメントでドキュメント生成
2)C#風のコメントでドキュメント生成
3)プリプロセッサと統合する。こんな感じ:
#doc
#author Hoge
#summary メイン関数。
#enddoc
int main(){
//....
return 0;
}
0797デフォルトの名無しさん
2010/01/17(日) 13:12:42C#はJavaDocの改良でxmlをコメント内に書くことになった感じ?
プリプロセッサに統合ということはプリプロセッサが関数やらclassを認識するのでしょうか?
それともプリプロセッサの変換結果、別なSINCL構文になるのでしょうか?
SINCLの関数説明用コメント構文とASTがどうなるのかを考えたほうがよさそう?
たとえばXMLとSINCLをE4Xのように統合されていてドキュメントも自然に書けたりするとか。
@doc <function>
<summary>メイン関数</summery>
<author>Hoge</author>
<return>0:正常終了 1:異常終了</return>
</function>
int main() {
XML xml=<b>hello world</b>;
printf("%XML doc %XML\n", xml, this.doc);
}
あと、ドキュメント生成は自由にカスタマイズできて
<sincle file="hello.c">
<function type="int" name="main">
<author>hoge</author>
<summary>メイン関数</summary>
<return>0:正常終了 1:異常終了</return>
</function>
</sincle>
とかいうxmlで取得できるといいかも。
0798デフォルトの名無しさん
2010/01/17(日) 19:09:180799303
2010/01/22(金) 22:47:25>>797
> C#はJavaDocの改良でxmlをコメント内に書くことになった感じ?
そういうことなのかなぁ…だれかC#の歴史に精通してるひとっていません?
> プリプロセッサに統合ということはプリプロセッサが関数やらclassを認識するのでしょうか?
Yes.
本音を言ってしまうとxmlっていちいち長ったらしくて(個人的偏見)エディタの支援がないと書くのが面倒かなぁ…と思ったからなのですが、
実際のところどうなのかな…
それと、sf.netにSINCLのプロジェクトページを立ち上げました。(ttp://sourceforge.net/projects/sincl/)
参加したいと言う方はこのスレで参加したい皆を宣言するか、sf.netの私のアカウントまでメールをお送りください。
注意)メールはめったに確認しないのでスレで宣言するほうがベターです。
なお、wikiのほうは当面の間公式wikiとして使っていきます。
0800デフォルトの名無しさん
2010/01/22(金) 22:58:110801デフォルトの名無しさん
2010/01/25(月) 14:35:04C言語のプリプロセッサが
#if #endif
のように書くから拡張して
ドキュメントの構文は#doc #enddocという風に書くことにしたんですよね。
JavaやC#等はプリプロセッサを捨てたのでコメントに書いているけど、
SINCLではプリプロセッサありで考えているのでプリプロセッサの役割になると。
プリプロセッサの機能を高機能にしてC言語のプリプロセッサのいろいろな問題を解決できたらいいですね。
#define a 3
ではなくて
#const int a = 3;
等と機能別に細分化して使うようにするとか。
Javaのアノテーションなども取り入れるとか。
0802デフォルトの名無しさん
2010/01/25(月) 18:42:39HTMLに埋め込んだコードがそのままコンパイラに通るとか
0803デフォルトの名無しさん
2010/01/26(火) 05:21:290804デフォルトの名無しさん
2010/01/26(火) 11:01:59どっかで見覚えがあるな
0805303 ◆pFphp4Ej4w
2010/01/26(火) 21:29:12なんかすみません…
>>802
本音:パースめんどい。(と言ってもパース処理は全部Boost.Spiritに丸投げしてるのでこんなこと言ったら罰当たりそうですが)
それと、なんか急に外人からメールが来まして、
最初はこんな文で、
subject:wanted to join
mail:can u just elaborate the your ideal my giving simple ex.
そいでSINCLの簡単なサンプルコードぶち込んで送り返したら、
subject:hi
mail:can we fix some time to talk... about Amatory prj..(let me now ur free time).
この場合"Amatory prj"をどう訳すべきですかね。そのまま訳すと「恋愛プロジェクト」になって、まぁ、こんなやつとメールしちゃいけない、と。
でも無理やり意訳すればSINCLプロジェクトのこととも取れますし…
0806デフォルトの名無しさん
2010/02/15(月) 01:32:58ものが欲しいかな・・・とは思っていました。
でも、もう言語仕様の方向性は決まっちゃったのかな(;´3`)
0807デフォルトの名無しさん
2010/02/15(月) 12:59:05MingWの上にeCというC上位互換OO言語(現在はトランスレータとして実装)と統合環境、
各種ライブラリを乗せたマルチプラットホーム言語っぽいね。ライセンスはBSDだそうな。
>>806
JWASMは? : ttp://www.japheth.de/JWasm.html
あるいはSphnix C--を改造 : ttp://www.dmoz.org/Computers/Programming/Languages/C/C--/
0808303 ◆pFphp4Ej4w
2010/02/17(水) 22:12:48決まっちゃいましたね…すみません。
そういや言語使用の方向性についてまだ言及してなかったので言及しておくと、当分は
C++、Javaなどがとるオブジェクト志向を避けながらどれだけ高級な書き方ができるかの実験
という名目でやっていくつもりです。
ですからオブジェクト指向を取り入れることは当分ありません。
>>807
ありがとうございます。ちょっと見てきます。
#何でか知らんがsctのコード書いてるとIDEが固まるんだが…これはIDEのバグなのかそれともBoostなんか使ってるからか…
0809303 ◆pFphp4Ej4w
2010/03/07(日) 20:32:460810デフォルトの名無しさん
2010/03/18(木) 21:26:50if (RegQueryInfoKeyStatic(HKEY_CURRENT_USER, keyinfo) == ERROR_SUCCESS) {
sprintf(view, "HKEY_CURRENT_USERのトップには、%d個のサブキーがあります。", keyinfo.SubKeys);
MessageBox(NULL, view, "テスト", MB_OK);
}
else {
MessageBox(NULL, "RegQueryInfoKeyStatic の実行に失敗しました。", "テスト", MB_OK);
}
0811デフォルトの名無しさん
2010/04/09(金) 21:25:45区切る事を許していた処理系がありました。
おいらこれで入門したものだから、まっとうなGCCで苦労した・・・読みにくくて読みにくくて。
ま、ちょっと考えれば簡単に回避出来たのだけど。
それでも、実装されると嬉しい。
0812デフォルトの名無しさん
2010/04/09(金) 23:18:400b0000\
1111\
0000\
1111
0813303 ◆pFphp4Ej4w
2010/04/10(土) 23:51:45そんなのあるんですね。確かに読みやすいし面白い。
でも実装するとしたら
int i = 0b0001; // OK
int j = 0b0000_0002; // NG
#pragma use_uscore_in_0b
int k = 0b0800_0000; // OK
とかになっちゃいそうですが。
0814デフォルトの名無しさん
2010/05/02(日) 23:41:260815デフォルトの名無しさん
2010/05/04(火) 16:05:08ところで、D言語は触ってみたことある?
0816303 ◆pFphp4Ej4w
2010/05/08(土) 19:13:16さらりと触ったことはあります。ただ、verupするたびどこかしらコンパイルが通らなくなるのでやめましたが…
0817デフォルトの名無しさん
2010/05/08(土) 22:05:52強力なtemplateおよびmixin機能が追加されていて、基本的にプリプロセッサが不要になっている。
(というか、無くなっている)
#ifdef/ifndef にあたるのはversionおよびstatic ifに置き換えられている。
プリプロセッサよりもこういった言語に統合された静的な制御機能の方が便利だと思うんだけど、どうだろう。
0818デフォルトの名無しさん
2010/05/09(日) 13:19:40#ifdef __GNUG__
// ...
#elseif __VISUALC__
// ...
#endif
なんてするより、
version(__GNUG__) {
// ...
}
version(__VISUALC__) {
// ...
}
としたほうがずっとスマートであることは確かです。
ただ、これをトランスレータ(コンパイラ)に任せるのでは若干実装に手間がかかりますし(めんどくさいだけ)、個人的に"version"というよく使われそうな単語を予約語に含めるのはいかがなものかと思います。
とりあえずstatic_assertは入れてもいいかなとは思っていますが…
0819デフォルトの名無しさん
2010/05/10(月) 17:13:010820デフォルトの名無しさん
2010/05/10(月) 17:26:42@言語
を連想する
0821デフォルトの名無しさん
2010/05/10(月) 19:55:22プリプロセッサはC言語と独立してるとこがメリットでもありデメリットでもあるわけで。
完全な置き換えは無理でしょ。
0822デフォルトの名無しさん
2010/05/10(月) 20:12:08であるからこそ、バグの温床であるとしてサポートしないのが今風。
0823デフォルトの名無しさん
2010/05/10(月) 20:22:46センスなさすぎ
0824デフォルトの名無しさん
2010/05/11(火) 17:32:37よけーに分かりにくい
0825デフォルトの名無しさん
2010/05/11(火) 19:33:52コンパイラがシンボルチェックに責任を持てるところが大きいんだよ。
ぱっと見は戸惑うかもしれないが、
これで連想配列的なversion設定値のチェック、設定、
static if / else / switch 構文相当が記述できるのでなかなかよくできてる。
C言語にも欲しいくらいだな、これは。
0826デフォルトの名無しさん
2010/07/24(土) 19:30:49作りたいのはC言語派生じゃなくて、もっと小さな計算モデル検証用の言語だけど。
そもそも何人が見ているのかわかんないけど。
0827デフォルトの名無しさん
2010/07/24(土) 20:12:37VMが500行ぐらい
ならおk
0828826
2010/07/24(土) 21:04:53そもそもコンパイル言語にはならなさそうだけど。
0829デフォルトの名無しさん
2010/07/24(土) 21:21:04ここは俺のチラシの裏にするんじゃぁ
0831デフォルトの名無しさん
2010/07/25(日) 09:28:370832デフォルトの名無しさん
2011/03/07(月) 09:18:20.47Cを関数型化した言語ってあるんでしょうか。
0833デフォルトの名無しさん
2011/03/07(月) 10:16:54.660834デフォルトの名無しさん
2011/03/07(月) 10:18:39.340835デフォルトの名無しさん
2011/03/07(月) 19:02:30.55元はscheme風だったがC風に改めさせられたJavaScriptさんがいる
0836天使 ◆uL5esZLBSE
2011/07/02(土) 18:49:30.28そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
うるさいゴミ
0837デフォルトの名無しさん
2011/07/02(土) 19:24:09.38{ foo ; bar ; baz } ← 最後だったら要らないのがデリミタ
{ foo ; bar ; baz ; } ← 最後でも要るのはターミネータ
0838天使 ◆uL5esZLBSE
2011/07/02(土) 20:53:23.30Rubyだとつけなくてよくなるんだけど
ゴミ量産機
0839天使 ◆uL5esZLBSE
2011/07/06(水) 05:16:26.52ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな
でもお前はゴミなのにねw
0840デフォルトの名無しさん
2011/07/06(水) 17:37:05.70C言語だとブロックの最後は要らなくない?
0841デフォルトの名無しさん
2011/07/06(水) 17:52:02.84<文> :== ... | <式文> | ...
<式文> :== <式> ";"
なので、いります。
0844デフォルトの名無しさん
2011/10/13(木) 07:29:00.460845デフォルトの名無しさん
2011/10/21(金) 10:23:05.060846デフォルトの名無しさん
2011/10/21(金) 10:24:56.640847デフォルトの名無しさん
2011/10/21(金) 19:56:38.050848デフォルトの名無しさん
2011/11/04(金) 07:30:15.41兄弟
0849デフォルトの名無しさん
2011/11/04(金) 07:30:35.020850デフォルトの名無しさん
2011/11/04(金) 07:31:04.870851デフォルトの名無しさん
2011/11/20(日) 11:47:34.860852デフォルトの名無しさん
2011/11/21(月) 17:57:44.570853デフォルトの名無しさん
2011/12/18(日) 14:46:44.660854デフォルトの名無しさん
2011/12/18(日) 14:49:45.020855デフォルトの名無しさん
2011/12/18(日) 14:50:52.620856デフォルトの名無しさん
2011/12/18(日) 14:51:55.870857デフォルトの名無しさん
2011/12/18(日) 14:52:50.090858デフォルトの名無しさん
2011/12/18(日) 14:53:32.000859デフォルトの名無しさん
2011/12/18(日) 14:54:05.480860デフォルトの名無しさん
2011/12/18(日) 14:55:15.930861デフォルトの名無しさん
2011/12/18(日) 14:59:09.640862デフォルトの名無しさん
2011/12/19(月) 14:46:10.58ワイが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な中国に戻るらしい
もう経済は破綻してて、取り戻すのは無理なんだそう
その世界ではごっつい有名な政府関係者筋から聞いた確かな情報や
まあお前ら頭の良い連中には、今さらなくらいのネタや、
お前らからすればもう常識的なくらいの知識や
君らのことだからこの情報ですでに財産は出してるはずだけど
■ このスレッドは過去ログ倉庫に格納されています