新C言語を作ろう ..
[2ch|▼Menu]
223:デフォルトの名無しさん
07/09/06 17:39:30
自分は小学校でローマ字を習う以前に公文で英語やってたから小文字も読めた
でもプログラミングはやってなかった
つかPC自体が珍しい時代だった

224:デフォルトの名無しさん
07/09/20 10:00:55
C言語にGCとデリゲートとコルーチンっていうか、ファイバーっていうんだっけ?中断できるやつ。があれば割とすごいことになりそうな感じ。
あ、あとエクスポート可能なテンプレートかジェネリックスもね。

はっきり言ってクラスはなくても何とかなる。thisコールが結構べんりっちゃーべんりだけど。

225:デフォルトの名無しさん
07/09/20 10:25:33
>>216
ローカル変数は無いと再帰処理が出来なくて悲惨だぞ。その再帰も深くなるとばぐっちゃうけどね。
ポインタはローレベル叩くとき必要だけど、普段はあんまり恩恵ないな。イテレータにしても実用上は問題ないかもね。
キーワードは、色つきエディタ使えば解決。え!?もってないの???VCが無料だって言うのに。

226:デフォルトの名無しさん
07/09/20 11:41:51
>>216
int i; とかをグローバルにする知り合いがいたんだが、

void g(void) {
  for (i = 0; i < Y; i++) 何かする;
}

void f(void) {
  for (i = 0; i < X; i++) g();
}

みたいなことやってバグってハマってたな

227:デフォルトの名無しさん
07/09/20 13:09:15
>>216
異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな


228:デフォルトの名無しさん
07/09/20 13:22:00
同意するなら異論に反論してからにすれば

229:デフォルトの名無しさん
07/09/20 14:06:23
B    A    S     I      C

230:デフォルトの名無しさん
07/09/20 15:20:03
俺の専ブラが>>216をグロ判定したんだけど

231:デフォルトの名無しさん
07/09/20 22:53:59
暇があったら俺のじゃんけんプログラム倒してくれ。

*N88互換BASICを使っている人・・・・
スレリンク(tech板)l50 の 24 参照

232:デフォルトの名無しさん
07/09/21 18:11:30
タートルグラフィックを準標準に入れてくれないかねぇ。
任意で実装って感じでさ。
あれこそ、コンピュータグラフィックスだよ。

233:デフォルトの名無しさん
07/09/23 21:37:44
ただのタートルグラフィックじゃだめだな。
3次元に拡張して、タートルがグリグリ動く奴でヨロ。

234:デフォルトの名無しさん
07/12/24 02:30:36
よし、ゲーム向け言語


  #include<game.h>
  
  int main()
  {
    CreateGame(CG_SHOOTING)
    return 0;
  }


これでシューティングゲームができる言語を作ってみそ

235:デフォルトの名無しさん
08/01/27 17:24:03
無理だろうけど
#iconfile iconfilename
と書くと作成される実行ファイルにiconfilenameで指定したアイコンファイルが関連付けられる機能

236:デフォルトの名無しさん
08/01/28 18:42:16
break+数字で複数のループを抜ける。

while(1) { /* ループ1 */
   while(1) { /* ループ2 */
     break2;
   }
}

237:デフォルトの名無しさん
08/01/28 18:45:05
gotoでいいじゃん。


238:デフォルトの名無しさん
08/01/28 19:09:53
>>236
UWSCで使えるけど便利だよね。

あと、forループで規定回数で抜けるのと途中で抜けるのとをスイッチするオプションがあれば・・・
あ、普通にフラグとスイッチ使えばいっか。


239:デフォルトの名無しさん
08/01/28 21:36:08
>>236
数字はやだ、ラベルにしてくれ。

Loop:
 while(1) { /* ループ1 */
  while(1) { /* ループ2 */
   break Loop;
  }
 }

240:デフォルトの名無しさん
08/01/28 21:37:48
それ gotoって言うんだよ

241:デフォルトの名無しさん
08/01/28 22:57:11
そんなこと言い出したから、while だって、if + goto なわけだが。

242:デフォルトの名無しさん
08/01/29 17:27:37
>>239
まんまD言語な件。いや、Javaでもあったかな。

243:デフォルトの名無しさん
08/02/17 19:38:46
int main(int argc, char *argv[]) {
    switch(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;
}

244:デフォルトの名無しさん
08/04/09 20:32:13
あげもかねてC言語ネタ投稿 実際にはコンパイルできないソースファイル

#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;
}

245:デフォルトの名無しさん
08/04/09 20:36:34
printf("私は弱者を愛し、守っていきます。");

紳士言語

246:デフォルトの名無しさん
08/04/09 21:05:21
>>245
ここではスレ違いの内容だよ
そういう書き込みは“適当に作ったC言語の関数を貼っていくスレ”の方で。

247:デフォルトの名無しさん
08/06/19 18:33:34
>>225
関数の引数を増やしてそれをローカル変数代りにすればOK。
216が関数の引数もなくせ、と言っているなら知らんが...。

248:デフォルトの名無しさん
08/06/19 21:27:03
>>241
if + goto + goto だと思うが。

249:デフォルトの名無しさん
08/06/19 21:52:07
>>248
大抵のコンパイラは

 goto L1
L2:
 ...
 if(...) goto L2

に展開するから、goto + if + goto が正しいな。

って言うか、5ヵ月近く前のレスにレスするほどの内容か?

250:>>249
08/06/19 21:53:13
ラベル付け忘れた... orz

 goto L1
L2:
 ...
L1:
 if(...) goto L2

251:デフォルトの名無しさん
08/06/20 22:40:22
>>249
どうしてもレスつけたかったんです、勘弁してください。

252:デフォルトの名無しさん
08/07/24 01:36:50
>>1
やる気があるなら、予約語を全部排除して、
全部自前で定義できるようにしてくれ。
そういう仕様なら乗ってやる。

253:デフォルトの名無しさん
09/01/29 00:57:56
>>252
予約語を自前で定義して何の得があるんだよwwwww

254:デフォルトの名無しさん
09/01/29 01:56:38
>>252
PL/I思い出した

255:デフォルトの名無しさん
09/01/30 21:43:19
>>252

俺様専用の俺言語が定義できる。

256:デフォルトの名無しさん
09/01/30 23:44:01
schemeでいいよ

257:デフォルトの名無しさん
09/01/30 23:47:48
D言語でいいよ

258:デフォルトの名無しさん
09/02/01 05:23:02
boolは欲しいな。あれ、追加されてたんだっけか。
あと、複素数型とか、HLSLみたいにベクトル扱いやすくする機能も欲しい。
数値計算に特化すれば需要あるんじゃね?

259:デフォルトの名無しさん
09/02/01 05:48:44
そんなのよりステータスレジスタを抽象化して見れるようにしてほしい
わざわざアセンブラで書く手間を減らすために

260:デフォルトの名無しさん
09/02/01 07:48:44
>258
_Bool と _Complex は C99 で追加されている。

261:デフォルトの名無しさん
09/02/01 11:35:51
>>259 無いプロセッサはどうすんだよw

262:デフォルトの名無しさん
09/02/03 22:31:14
URLリンク(d.hatena.ne.jp)
こんなのもあるんだな
1つ目のリンクは切れてるみたいだけど

263:デフォルトの名無しさん
09/02/03 22:47:48
C++のように無秩序に機能を増やすのではなく、
Cの良さを守りつつ、Cと同じ次元でより使いやすいCを作りたい。

名づけてC+

・オブジェクト指向(クラスその他)は導入せず。
・当然ガベコレなんてついてない。
・標準関数ライブラリは古くなってしまったので全面改訂。
・文字列を扱うstring型の追加。文字列の扱いに関しては全面強化。
・配列・ポインタは当然維持。ただし分かりにくい構文は改訂する。
 (配列は int[] array; のように宣言を行うようにする。ポインタも long* x, y; だと*は型名に付いているとする。)
・malloc関数, free関数のキーワード昇格。
・namespace導入。
・ヘッダファイルは不要に。関数プロトタイプ宣言不要。

264:デフォルトの名無しさん
09/02/03 23:27:09
> 名づけてC+

+ は単項演算子じゃないから文法エラーとか

265:デフォルトの名無しさん
09/02/04 02:01:50
互換性は捨てるのね…。


266:デフォルトの名無しさん
09/02/04 12:20:40
>>263
>・当然ガベコレなんてついてない。
けど
>・文字列を扱うstring型の追加。
なのか。遅そうだな。

267:デフォルトの名無しさん
09/02/04 21:58:46
>263
なんかCycloneのサブセットな気が。

268:デフォルトの名無しさん
09/02/15 10:30:52
cycloneってこれ?
URLリンク(cyclone.thelanguage.org)

269:デフォルトの名無しさん
09/02/15 13:36:48
GCと境界チェックさえつけてくれればおk

270:デフォルトの名無しさん
09/03/03 01:54:47
>>263 に型周りの強化(強力な型推論、総称型)が入れば十分かなと思う。

271:デフォルトの名無しさん
09/03/03 09:57:34
いろんな言語混在できる言語で。

272:デフォルトの名無しさん
09/03/03 20:25:41
いろいろつけるから、ごちゃごちゃして、使いづらくバグの温床になる。
いっそのこと、ばっさり機能を削ぎ落とすのがよろしい。でも低レベルな操作は行いたい。
というわけで、新仕様を次のようにする。

--
void main()
{
asm文の繰り返しのみ;
}

--
以上。変数も条件文もgoto文も制御構造も何も無いので、覚えやすい。

273:デフォルトの名無しさん
09/03/03 22:51:49
null終端文字列じゃなくて、文字数で管理するようにしようぜ
いや現状のCでも文字数で管理は可能だけど、標準ライブラリがnull終端前提じゃん

274:>>249
09/03/03 23:16:41
標準ライブラリ以前に、文字列定数が文字数で管理するような形になら
ないから、現状のCでそういうことやるのは激しく困難だと思う。

275:デフォルトの名無しさん
09/03/04 11:56:02
>>273
Pascalでよくね?

276:デフォルトの名無しさん
09/03/04 12:04:03
>>272
各種ジャンプがあるだろ。

277:デフォルトの名無しさん
09/03/04 21:56:44
perlのコードが混ざっててもエラーにならないように作ってくれ

278:デフォルトの名無しさん
09/03/05 00:24:05
>>273
pascal キーワードを導入すればいい。

string cstr = "This is a C string." ; // ヌル終端の標準C文字列型
pascal string pastr = P"This is a Pascal string."; // 先頭がバイト数のPascal文字列型

279:デフォルトの名無しさん
09/03/05 01:22:45
いっそのことコンパイラ作りに特化した仕様にしちゃえYO
その後は各自自分仕様の言語を作ると

280:デフォルトの名無しさん
09/03/05 01:41:25
これからの時代は予約語オーバーロードですよ

281:デフォルトの名無しさん
09/03/05 19:05:08
>>280
それは凶悪すぎるだろうww



282:デフォルトの名無しさん
09/03/05 20:34:09
C#からもってこれそうなのある?

283:デフォルトの名無しさん
09/03/06 01:17:52
予約語オーバーロード

284:デフォルトの名無しさん
09/03/06 04:22:43
組み込み型に対する演算子オーバーロード

285:デフォルトの名無しさん
09/03/09 11:45:37
匿名メソッド (関数ポインタ)

286:デフォルトの名無しさん
09/03/10 23:55:37
型水路

287:デフォルトの名無しさん
09/03/11 14:03:58
CMカット

288:デフォルトの名無しさん
09/03/11 16:23:26
既存のCのソースを利用したりCへ必ず変換できる言語にしたい。
文法はCと非互換でよい。
現状のマクロをなんとかしたい。
短い記述で濃い内容を書きたい。

289:デフォルトの名無しさん
09/03/11 16:25:42
スクリプトっぽく書けるようにしたい。

グローバルに
puts("hoge");
って書けば

int main(){
 puts("hoge");
}
と同じ意味にしたい。

290:デフォルトの名無しさん
09/03/11 16:28:34
do-whileって判定を後ろに書くのが人気無いよね。
前に書けるようにするか。
他言語ではbefore until after untilの構文どうなってるかな。

291:デフォルトの名無しさん
09/03/11 16:31:05
for(int i=0;i<n;++i)
は定型化してるから、もっと単純化できる。
いい構文ある?

292:デフォルトの名無しさん
09/03/11 16:34:28
JavaScriptっぽく;(セミコロン)の省略できたっていいよな。
Pythonっぽくインデントでブロック作れてもいいよな。

いずれも問題点や文句言う奴がいるがうまく丸く収まんないかな。

293:デフォルトの名無しさん
09/03/11 16:41:24
>>285
qsort,signalなんかで使えたらうれしいよね。

294:デフォルトの名無しさん
09/03/11 17:38:55
GCとかの実行時のサポートに頼らない範囲で、出来る限り高水準な言語を作るというのが面白そう
強力な型システムやメタプログラミング能力を用意して、少なくとも無名関数くらいはGCのある言語に近い気楽さで書けるように
一番の問題はたぶんメモリ管理だけど、線形型を使ってなんとかできないだろうか

295:デフォルトの名無しさん
09/03/14 01:08:44
>>283
予約語オーバーライドができる言語なら知ってるんだが

296:デフォルトの名無しさん
09/03/14 04:46:04
#define ですね、わかります

297:デフォルトの名無しさん
09/03/14 04:49:47
#define内で#defineや#ifとかが使えればいいのに

298:デフォルトの名無しさん
09/04/16 00:38:30
そうかなあ

299:デフォルトの名無しさん
09/05/31 20:27:15
いろんなとこから仕様はいただいて、テキトーに短くしたらこうなった

c/Hello{
static v/main(str[] args) >> pub{
printw("Hello,World!");
}
}





300:デフォルトの名無しさん
09/06/04 18:49:17
いじくるつくーるなら for(0,i<n) { (命令文) }; という構文がある。
たぶんC言語では無理。

301:デフォルトの名無しさん
09/06/04 21:57:33
D言語ならforeach(i;0..n)でおk

302:デフォルトの名無しさん
09/06/04 22:00:26
指定したハンドルのレジストリキーに関する情報をlpc構造体に渡すRegQueryInfoKey

LPC lpc;
char n[100];
RegQueryInfoKey(HKEY_CLASSES_ROOT, lpc);
wsprintf(n, "HKEY_CLASSES_ROOTの1つ下には%i個のサブキーがあります。", lpc.Subkeys);
MessageBox(NULL, n, "関数RegQueryInfoKey", MB_OK);

303:デフォルトの名無しさん
09/06/18 22:48:47
というかOSがかける程度に強力であり、
かつ高尚で可読性に優れたものが書けるならいうことなしだ

そうするとおもいっきりModula-2になるわけだが。

だからあのキモイbegin〜end構文を{〜}の構文にして、
コンパイラの実装がしやすく、またプログラミング初心者も覚えやすいような
簡潔な文法があればいい。
あとこれは個人的意見だけど、できるだけソースコードは短く書けたほうがいい。
じぶんのキーボードの打ち方が間違ってるのだろうけど、腱鞘炎になりかけたことがあるから。


304:303
09/06/19 18:52:46
>>291
ちなみにこれについてちょいと思い付いたので書いておく。
型宣言した時点でその型の初期値に初期化されるとして…
for((int i)++ < 5){
//....
}

305:デフォルトの名無しさん
09/06/19 22:13:54
Inferno って OS で使われてる limboo はどう?

306:デフォルトの名無しさん
09/06/20 21:50:33
>>305
後でちょいと調べてみる。

ついでに>>236>>239について思いついたので書いておく。
nest(1)://"nest"とは入れ子という意味。
while(..){
nest(2):
while(..){
break(1);//nest(1)のループを抜ける
}
}

307:303 ◆pFphp4Ej4w
09/06/24 19:28:40
>>278
これについては、
C言語文字列
nullStr
Pascal文字列
byteStr
とすればいい。
この用途のみでPascalキーワードが存在するのは許せない。
あと、306は私だ。

308:303 ◆pFphp4Ej4w
09/06/29 08:17:32
取りあえず考えてみた。
1.変数宣言
変数宣言はC言語のそれとは全く逆。
例)x int;
これは英語の文法にあわせて読みやすくしたため。
2.ポインタ
ポインタは次のように宣言。
例)p: point(int);
or
p: int:;
続きは家に帰ってから。

309:303 ◆pFphp4Ej4w
09/06/30 08:05:49
3.代入演算子
代入演算子には
:=
を使用する。
例)
a int:=5;
3.比較演算子
比較演算子には
=
を使用する。
例)
if(x=0){
...
}


310:デフォルトの名無しさん
09/06/30 23:13:46
C言語への不満ってそういうところじゃねーと思うが。
例えば実行時のコンテキストとソースコード上のlexicalなコンテキストが同一で
あるところとかそういうモデルな部分に革新が必要なんじゃないか?
読みやすさも大事だと思うがそういうのはおれスクリプト言語でやってればよし。

311:303 ◆pFphp4Ej4w
09/07/01 07:45:40
>>310
なるほどねぇ…
確かにそうかもしれない。
その抜本的な改革についてちょっと考えてみるよ。
それと、ポインタ型の宣言について、
p: point(int);
よりも
p point(int);
こっちの方がいいかな?

ただこうするとpがポインタ型と言うことが分かりにくくなってミスが増えるかも。


312:303 ◆pFphp4Ej4w
09/07/01 08:18:08
あと一つ質問。

匿名メソッドは必要かね?と言うかデリゲートは必要か?

313:デフォルトの名無しさん
09/07/01 13:13:15
今からなら新C言語はC言語をベースにするよりD言語からクラス抜いたものをベースにした方が良いと思われ。それにビットフィールドとかC99とかgccの拡張部分とか足してきゃいいよ。
ポインタの実体化はDelphiのがいい。
関数の戻り値の型の書き方はC++0xやEMACScript4で提案されているような後置も特殊化用引数(テンプレート/ジェネリックパラメタ)を戻り値の型より前に持ってくるという点で一理あるが、読みやすさという点では従来の方が高い。まぁ難しい所だね。

314:303 ◆pFphp4Ej4w
09/07/01 16:16:39
>>313
わし的には、
ベースはC言語
クラス、インタフェース、また必要であればデリゲートなどの匿名メソッドの導入(個人的にアレは嫌いだ)
強力な型推論の導入
メモリ管理にはガベージコレクタは用いず、malloc/new・free/delete演算子を使用
ポインタは廃止しない(廃止すると複雑なデータ構造がつくれなくなる。)
文法の抜本的な変更
nullchar/bytechar型の導入
を考えていたのだが…(ついでに名前はシーキューブ。C3またはCqbと書く)

D言語かぁ…
それもありだね。
そしたら名前はD++かな?


315:デフォルトの名無しさん
09/07/01 16:48:50
>>314
D言語は
-class、interface、delegate全てある
-変数初期化時・関数の戻り値の型推論がある
-ポインタも当然ある。
-invariant(char)* (C言語の文字列)とinvariant(char)[] (Pascalの文字列)がある
まぁ違う所は
-メモリ管理はGC基本でマニュアル管理はカスタムアロケータがある
-文法はC言語由来が多い。
って所か。

316:303 ◆pFphp4Ej4w
09/07/01 18:28:42
>>315
となるとD言語からGCを取り外しただけの言語になるわな。

なんか「これがほしい!」って言うのはないの?

317:デフォルトの名無しさん
09/07/01 18:52:26
D言語は細かい所がなおざりだから、改善すべき点は文法も含め多いと思うよ。

318:303 ◆pFphp4Ej4w
09/07/04 20:53:44
そういえば、マクロのこと書きそびれてた。
マクロは#〜で定義され複数行をサポートする。
例)
#hoge
...
#hoge end

319:デフォルトの名無しさん
09/07/12 23:56:48
303 はもういないの?

320:303 ◆pFphp4Ej4w
09/07/13 18:50:34
ごめん。この間まで期末テストで今は風邪でダウン中。

321:303 ◆pFphp4Ej4w
09/07/13 21:45:52
追記:

明日から4日ぐらいはずっと学校が休みなのでこのスレに張り付いていられると思います。

322:デフォルトの名無しさん
09/07/14 00:21:22
とりあえず現状どうなってんのか、まとめみたいなのがほしいかな

323:デフォルトの名無しさん
09/07/14 05:29:59
構文変えるなら利点と欠点まとめてほしい。
忘れないで欲しいのが、パーサによる解析しやすさ、IDEによる入力支援の効きやすさ、他人による読みやすさ、データの流れの追いやすさ、書きやすさ。

324:デフォルトの名無しさん
09/07/14 12:29:10
>パーサによる解析しやすさ
こんなこと考えるから C の宣言は判り難くなったんだ。

325:303 ◆pFphp4Ej4w
09/07/14 16:17:01
>>322
了解です。今から書きます。

>>323
>>303でも書いたように
> コンパイラの実装がしやすい
言語にしたいと思ってはいるのでできれば解析はしやすくしたいと思っています。
しかし>>324さんが述べているように構文の読みやすさ、書きやすさなんかを
犠牲にするのはちょっとカンベン・・・
というわけでもしかしたらその点は犠牲になる可能性があります。

とりあえず今のところ(私の中で)決まっている言語仕様:
1.変数宣言
変数は次のようにして宣言される
x int;
利点:英語に従った文法なので初心者が読みやすくなる。
欠点:Cに慣れた人は確実に間違えてエラーを多発させる要因になる。
2.クラス・関数の定義
クラス・関数は次のようにして定義
c/hoge{
void hogehoge(){
...
}
}
クラスに内包されない関数も定義可能。
void hoge(){
...
}
int hogehoge(){
...
}
続く

326:303 ◆pFphp4Ej4w
09/07/14 17:06:23
続き
利点:c/〜とやると若干短くなる。
欠点:c/〜じゃ最初見た人は何かと思うかもしれない。
また実行時に実行される関数は
int main(){
...
returrn 0;
}
でOK。

3.演算子について
代入演算子
:=
比較演算子
=
!=
<
>
<=
>=
とする。(代入演算子にほんとうは<=を使いたいのだがこれじゃ間違える人が続出すると思うので今のところはこれで。今後変更の可能性大。)

利点:"==”は比較演算子ではないのでで初心者のミスが減る(一人よがりかなぁ?)
欠点:確実に間違えられる。
今日のところはここまで。


327:デフォルトの名無しさん
09/07/14 18:58:54
int foo[][] vs. int[][] fooな論争があるが、foo int[][] (foo is int of array of array)にしちゃうのかぁ。パーサに先読みが必要になるのでかなり速度が低下するのと、IDEの補完的にマイナス…いやこれは既に定義された名前を避けるという意味では問題ないか。
クラス定義は、"c/"を識別子にするってことかな。そうだとすると変数でcを宣言した場合に厄介なことになる。識別子にしないとなるとlexerで分離できないので速度が低下する。
演算子についてはDelphi的なので言うことは無いかな。

328:デフォルトの名無しさん
09/07/14 19:08:55
それと、識別子に使える記号の数は少ないので、アルファベット+記号を識別子にすること自体は賛成かな。

329:303 ◆pFphp4Ej4w
09/07/14 19:41:05
追記:
これはやだ・これを追加しろ・この構文はやだ等ご意見があればご自由に。
と書こうと思っていたら>>327さんがもう書いていらっしゃいました。素早い…
それはさておき、ご意見ありがとうございます。
パーサの速度にしたがってコンパイル速度も落ちるので、これは重大な問題です。しかもこれを解消するには構文を捨てないといけないという…
これについては今後なるべく早く議論して解決策を決定すべきでしょう。(この過疎スレで人が集まるかどうか…)
解決策の一つとしてはこの言語のみに特化したパーサを開発することですが、これじゃ焼け石に水です。
どうしましょうかねぇ…


330:デフォルトの名無しさん
09/07/14 19:45:55
幾つか意見を言わせて貰うね。

----

"c/" は、俺は否定的。

"c" + "/" として扱っても、"c/" としてまとめて扱っても、どちらにせよ 『 b := c/a; 』 が書きにくくなる。
トップレベルに書いた "c/" のみを特別扱いすれば問題ないとは思うけど、CP が悪いわな。

そんなに 100 も 200 もクラス定義するわけじゃないんだから、得られるものは少ないと思うよ。

----

変数宣言と関数宣言の型指定が正反対なのが気になるところ。

変数にあわせるならば 『 hoge() void { 〜 } 』 になるんじゃないかな。
C に慣れたひとも、VB or Pascal に慣れた人も、どちらも間違えると思うよ。
どちらかに統一すべきだと思う。

----

代入演算子、"<-" を使ってみたらどうかな。打ちにくいけど。

----

比較演算子で気になるのは、= と != の文字数が違うところかな。
細かいことだけど。

331:303 ◆pFphp4Ej4w
09/07/14 19:50:44
追記:
>>329というわけでこの過疎スレに議論のために人を呼び込まねばなりません。ですから、これからはage進行で行きましょう。
ってなわけでage!

332:303 ◆pFphp4Ej4w
09/07/14 19:57:26
>>330
すびません、リロードし忘れてましたorz
いま外出中で携帯から書き込んでるので家に帰りつくまでお待ちください。

333:デフォルトの名無しさん
09/07/14 20:16:45
>代入演算子、"<-"
a<-5とかそれなりに使う気がするので止めてほしい。
:=も条件演算子との兼ね合いで(識別子として扱えば問題は無いものの)読みにくくなりそう。

334:デフォルトの名無しさん
09/07/14 20:18:42
個人的な案。
c -> newC
= :=
== = or !!=
!= !=
< < or !>=
<= <= or !>
> > or !<=
>= >= or !<
要は、!に否定と言う意味を持たせるなら演算子そのものも否定できたらどうかな、と。
# !の多重を認め出すと、!!!!!!!!!!=なんて書けてしまうのは実は問題かもしれないw


335:334
09/07/14 20:21:18
失礼。醜かったので書き直し。
--
c → newC
= → :=
== → = or !!=
!= → !=
< → < or !>=
<= → <= or !>
> → > or !<=
>= → >= or !<

336:デフォルトの名無しさん
09/07/14 20:22:21
>>334
D言語には!>=とか普通にあるが<とは意味が違う(浮動小数点のNAN的な意味で)。

337:336
09/07/14 20:25:50
これな。
URLリンク(www.digitalmars.com)
<>とか<>=とか!<>=とかもある

338:303 ◆pFphp4Ej4w
09/07/14 20:46:16
今家に帰り着きました。
・・・つついてみれば意外と人がいるもんですね。

>>330
については、そこまで頭回ってなかった私の問題です。申し訳ない。
というわけで改訂版。
2.クラス・関数の定義
クラス・関数は次のようにして定義
c/hoge{
hogehoge void(){
...
}
}
クラスに内包されない関数も定義可能。
hoge void(){
...
}
hogehoge int(){
...
}

あと"c/"について。

そうですか・・・。やっぱりclass{...}にしたほうがいいですかね?
ここは議論の余地があるようです。

>>334さんのは全面採用したいですね・・・
まぁ"!"は2文字以下でという限定をつければいいと思うので。

339:デフォルトの名無しさん
09/07/14 20:51:10
>>338
hoge int() { ... }

って表記はどうなのかな。
変数宣言と合わせると LALR なら問題ないだろうけど、LL なら 3 くらいは欲しいよね。

340:303 ◆pFphp4Ej4w
09/07/14 21:42:41
>>339
なんだか考えるべきことが大量に増えてきましたね…
私はそろそろ寝たいと思います。(風邪も治したいので。)では、おやすみなさい。

341:デフォルトの名無しさん
09/07/14 22:02:02
>>1
C++の何が不満なのかまず説明してくれ
それが説明出来ないなら議論する価値もない

342:デフォルトの名無しさん
09/07/14 22:50:14
a = a + b を a += b と書けるように、
別の書き方をしたら記述量が減るなら意味があるけど、
>>334 みたいなのにどういう利点があるのかいまいちわからない。

343:デフォルトの名無しさん
09/07/14 22:54:15
まあでも代入と比較が:=と=なのは趣味の問題、別に構わないと思う。
Cっぽくない構文の言語なら珍しくはない。

344:デフォルトの名無しさん
09/07/15 01:43:31
ちょっと視野が狭すぎやしないか?
その程度の違いならC言語でいいじゃんと思ってしまう。
参考までに303 ◆pFphp4Ej4wが使えるプログラミング言語は何だい?

345:デフォルトの名無しさん
09/07/15 03:30:46
GNOME 用の C 言語拡張みたい

Valaについて語りませんか
スレリンク(linux板)

346:303 ◆pFphp4Ej4w
09/07/15 09:11:34
>>344
私が使えるのですか?
ObjectPascal
Java
C言語
C++
D言語は現在勉強中。

347:デフォルトの名無しさん
09/07/15 21:09:58
>>341
たしかにそこは聞きたいな。C++でなくてもいいけど。
今あるCの後継的な雰囲気の言語のどこがまずいと考えていて、
どう直そうとしているのか。それによって何が良くなるのか。
誰(言語ユーザ、コンパイラ制作者、ライブラリ制作者、IDE、etc)が得するのかなどなど……。

348:デフォルトの名無しさん
09/07/15 21:26:49
代入演算子変えるなら、もはや「新C言語」じゃないのでは?

349:303 ◆pFphp4Ej4w
09/07/15 22:01:26
>>348
それいっちゃオシマイです…
それと、>>305についていまさらながら調べてみました。
LimbooというのはC言語の作者が設計したPascalライクなC言語のようです。
やはりC言語をつくった人にも思うとこがあったのですかねぇ…

350:デフォルトの名無しさん
09/07/15 22:25:00
演算子なんてjavascript程度が用意してるので十分だと思うんだよね。
そんなに既存のcやその他追随してる言語に不都合な点があるのかな。

351:デフォルトの名無しさん
09/07/15 22:28:42
>>350
Perlまで増やせとは言わんが、ECMAScript 3程度じゃ全然足りん。

352:デフォルトの名無しさん
09/07/15 22:33:24
演算子いらね, 結局 (+ x y) の 2 引数関数じゃん


353:デフォルトの名無しさん
09/07/15 22:36:33
もっと三項演算子を増やせとな?

354:デフォルトの名無しさん
09/07/15 22:39:24
宣言以外の文を無くして全部式にしようぜ

355:303 ◆pFphp4Ej4w
09/07/15 23:18:57
>>354
それじゃ関数型言語そっくりに…

どうもわたしは規制に巻き込まれたようです。
何もしてないんだけどな…
こういうもんなんですかね?


356:デフォルトの名無しさん
09/07/15 23:25:40
そういうもんです。

ぶっちゃけ、既存の言語を超えようとしたり、改善しようとしたりするのが間違ってると思う。
自分が作りたいものを作りたいように作ればいいんじゃないかな。俺はそれで満足する。

357:デフォルトの名無しさん
09/07/15 23:35:13
>>356
目的が自分が満足するためならそれでいいのだろうけど。

358:303 ◆pFphp4Ej4w
09/07/15 23:56:47
>>356
確かに。それの見本がC++ですね。

359:デフォルトの名無しさん
09/07/16 06:25:30
>>349
LimbooじゃなくてLimboだよ。w
Limbo は並行計算が目玉と思われ。Erlangよりずっと分かりやすい。
C言語の悪評極まる宣言についてはリッチー先生さすがに反省したようで
Pascal風に直してあるね。
Limboに先行してAlefという言語もある。

360:303 ◆pFphp4Ej4w
09/07/16 10:25:19
>>359
すいません。おっちょこちょいなもんで…


361:303 ◆pFphp4Ej4w
09/07/17 22:43:22
なんか規制解除されてるかわかんないので携帯から書き込みます。

4.基本構文
4.1for構文
for構文とは指定した回数だけその命令を繰り返す構文である。
for構文は次のように定義する。
(とりあえず3回繰り返す場合。)
for((i int)++ < 3){
...
}

362:303 ◆pFphp4Ej4w
09/07/17 22:47:18
>>361
ま、間違えた…
4じゃなくて3だった…

あと、言いそびれてましたが変数は定義したときにその変数の初期値に初期化されます。

363:デフォルトの名無しさん
09/07/17 23:02:05
指定した回数繰り返すと言うのなら、<演算子を使う必要はないのでは?
<が出て来るということは、今のCのforみたいにwhileのような自由な条件指定を許すように思える。
それなのに、361の文章では、「指定した回数繰り返す」と言い切っている点が気になる。
単に、今のCのforみたいに、主に指定回数の繰り返しに使われるというのなら理解できるけど。

364:363
09/07/17 23:05:40
例えば、BasicのFor i = 0 To 2やRubyの3.timesなんかが
比較演算子を使わずに繰り返しの構文を実現している。
(もちろん、どっちもwhileが別にある)

365:デフォルトの名無しさん
09/07/17 23:11:08
MATLABの構文もそんな感じだったな
for i = 1 : 1 :10
1ずつ増やしながら1〜10まで繰り返すみたいな

366:デフォルトの名無しさん
09/07/17 23:13:17
fortranっぽい配列使えるようにしてくれ

367:303 ◆pFphp4Ej4w
09/07/17 23:31:12
>>363
ぬわぁ…
すみません。
毎回毎回勉強になるなぁ…
とりあえずここでは「主に指定した回数だけ繰り返される」とします。
これを踏まえて一つ質問を。
ある命令を指定した回数のみ実行するのみの構文は必要でしょうか?

368:デフォルトの名無しさん
09/07/18 00:11:15
どういう方向性か知らないけど、foreachがあればforなんてなくてもなんとかなるよ。Pythonのforがそう。

#リストlsの各要素を順に出力
ls = ["hoge", "foo", "bar"]
for x in ls:
  print x

#0から2までを順に出力
for x in xrange(3):
  print x

でもまあ、こんなところCのままでいいじゃないと思うけどね。
配列(のようなもの)の各要素に〜するって系統の関数を充実させれば、for/foreachの出番なんてぐっと少なくなるし。

369:デフォルトの名無しさん
09/07/18 00:11:39
逆に何でそれがいるのかが聞きたい

370:デフォルトの名無しさん
09/07/18 02:15:20
>>346
やはり似たような言語ばっかりだね。
limboがでてたけど、そんな感じの根本的に違う思想の
言語を一度勉強した方が参考になると思うよ。
特に関数プログラミング系は必須といっていいと思う。
listかschemeは当然だし、また実行効率の良さはMLとその派生も勉強になるものが多い。
C言語の拡張でいうとcycloneとかも見てみるといい。
あれはCの実行効率の良さを維持しつつ型安全性を組み入れてる。
そういうのみるとはっきり言って俺for文とかどうでもいい話に思えるよ。
バカにするつもりはないけどもう少し見聞を広げるべき。

371:デフォルトの名無しさん
09/07/18 02:37:16
・C/C++
・Pascal
・Smalltalk
・Self
・Io
・Lisp, Scheme
・Haskell
・Prolog
・Erlang
・ConcurrentClean
・GHC/KL1
・BrainF*ck, Unlambda
・SKI combinator

これくらい見聞きすれば新しい世界が開けるよ

372:デフォルトの名無しさん
09/07/18 02:50:21
>>371
その中で一つ選ぶならやっぱり Lisp だね。
常用する気にはなれないけど、学ぶ事は多かった。

373:デフォルトの名無しさん
09/07/18 02:56:43
やっぱり並列プログラミングが安全で簡潔に書ける言語がほしいね。
単純なスレッドむき出しじゃないやつで。

374:デフォルトの名無しさん
09/07/18 03:00:23
>>371
D(メタプログラミング・関数乗っ取り対抗策など)とかC#(LINQ)とかCω(スレッド周り)とかECMAScript3/ECMAScript4(プロトタイプ思考)とかJava(命名規則など)とかも必要。
誰か言語の良い所・悪い所をまとめてほしいかも。んで良いとこ取りすればおk。

375:デフォルトの名無しさん
09/07/18 03:05:48
つーかC言語の後継であるなら、OSが書ける、デバドラが書ける、
とかそういうのが目的の言語であってほしい。
なんでもあり言語はPL/Iみたくなってうまくいかないでしょ。

376:デフォルトの名無しさん
09/07/18 03:12:26
>>374
自分は、客観的な各言語の評価よりも、
303自身の主観でのCとその後に続く言語(>>346の中ではC++/Java/Dの)の評価を聞きたいな。

377:デフォルトの名無しさん
09/07/18 05:17:21
>>375
PL/Iが普及しなかった理由はそういうことでは無いけど(MulticsはPL/Iで書かれている)、整理はされてて欲しいね。

378:303 ◆pFphp4Ej4w
09/07/18 07:28:01
>>376
そうですねぇ…
Java
一番最初に使ったオブジェクト指向の言語です。
はっきり言ってしまうとかなりわかりやすく、簡単・便利で初心者に最適な言語だったと思います。
ただ、プログラマのもつ能力に足かせをはかせてるような感じがします。あと、私は結構パフォーマンスを気にするたちなので(ただの貧乏性)VMを使うせいで速度が遅い・メモリを触れないJavaはなんだか性にあいません。
C++
ポインタを理解するまでかなり時間を食いました。(C言語を始める前だった)
Javaだとそこら辺は巧妙にかくされてます。
ただ、C言語のようにプログラマのもつ能力を最大限生かせる点と速度がかなり速い点については最高だと思います。(これでコンパイルが速ければ…)
D言語
まだまだ学んでる途中なので細かいことは言えませんが、C++とJavaを足して2で割ったような言語です。
GCがついている以外に不満な点は特にありません。

つまりまとめちゃうと取りあえず私は、今あるC言語系の構文にこれといった不満をもっていません。
はっきりいうとこれまでだしてきた変数宣言や様々な構文は私が本心から考えているものではありません。ただ初心者に優しいであろうと思うもののみをあげているだけです。
ぶっちゃけJavaみたいに初心者に優しくて、Dみたくコンパイルが速くて、C++みたく柔軟な使い方ができて実行速度が速い言語なら私はそれでいいのです。


379:デフォルトの名無しさん
09/07/18 10:05:40
とりあえず、「新C言語」という名前をやめてほしい。
こういう名前をつければ、スレッドの客寄せにはいいだろうが、
構想はまったくCと違う方向に進んでいる。

世の中で、C言語の改良版が欲しい人たちは、
Cとまったく違う変な構文なんて望んでいないはずだ。
まったく別の名前でまったく別の理念でやってくれ。

380:デフォルトの名無しさん
09/07/18 10:16:35
G言語

381:デフォルトの名無しさん
09/07/18 10:51:15
新C言語としてOCamlを開発すればよい

382:デフォルトの名無しさん
09/07/18 12:23:13
>>380
自慰言語ですね。わかります

383:デフォルトの名無しさん
09/07/18 12:42:19
コンパイル速度まで評価対象になるのなら、実装方法もコミで考えてかないと。
単にこんな機能が欲しい!だけじゃダメだろ。

384:デフォルトの名無しさん
09/07/18 12:47:25
つーか、Cでのちょっとした不満とか良くないところの改善っていう目的を忘れたらあかん。

385:デフォルトの名無しさん
09/07/18 18:45:24
コンパイラ屋さんの俺が来ましたよ。
専門は最適化なのでそっちしか興味ないんだけど、簡単なCへのトランスレータくらいだったら作ってみようかな〜

386:303 ◆pFphp4Ej4w
09/07/18 20:27:00
>>384
ってなわけでじゃんじゃかC言語の悪いところを書き出してってください

>>385
ぜひともお願いします(まだ言語仕様さえも決まってませんが・・・)

387:デフォルトの名無しさん
09/07/18 20:41:33
とりあえず文法を FIX しよう。話はそれからだ。

388:デフォルトの名無しさん
09/07/18 20:43:12
あと、名称も FIX しないとね。

389:デフォルトの名無しさん
09/07/18 21:00:07
はじめてきたんだけど
ちょっとここまでの進捗を3行でまとめて

390:デフォルトの名無しさん
09/07/18 21:02:45


んでない

391:385
09/07/18 21:17:44
>>386
とりあえずただCをパースしてCを吐くだけのやつを明日作ってみようか。でそのパーサなり何なりをいじって文法を修正していくと。
言語ががらっと変わるなら仕様を先に練る必要があるけど

392:デフォルトの名無しさん
09/07/18 21:24:31
進んでないのか
また来るね

ヘッダファイルを編集するだけの簡単なお仕事です

393:303 ◆pFphp4Ej4w
09/07/18 23:43:39
>>391
どうもありがとうございます。よろしくお願いします。
明日は模試があるので顔をだせないかもしれませんが…

394:デフォルトの名無しさん
09/07/19 00:45:11
Java に乗っけたいね。JSR223 対応させて。
けど 303 にその気が無いようで残念。

395:デフォルトの名無しさん
09/07/19 00:47:10
Javaにのせたい気持ちがわからない

396:デフォルトの名無しさん
09/07/19 01:23:40
わかんない?
そいつは残念だ。

397:デフォルトの名無しさん
09/07/19 01:26:42
それはC言語の役割ではない

398:デフォルトの名無しさん
09/07/19 01:49:26
むしろJavaScriptで作ってブラウザ上に、というほうがまだ分かる。
それはともかく、やりたい人間が自分で作ればいいじゃないか、JRubyのように。

399:394
09/07/19 02:03:01
いや、作る気が無いわけじゃないんだけど、
ポインタをサポートするなら JVM の上にさらに独自の VM 乗せることになって
そこまですることになるなら俺の能力を超えるなぁ、って考えていたところ。

Java じゃなくて、JavaScript でも似たようなことが起きるはず。

400:デフォルトの名無しさん
09/07/19 03:21:48
Cくらい軽量で低水準な関数型言語が使いたいなー

401:デフォルトの名無しさん
09/07/19 04:25:40
それなら、とりあえず全変数は読み取り専用、書き換え可能な変数はmutable修飾子を付けるという方向にしよう。

402:デフォルトの名無しさん
09/07/19 10:51:16
>>400
runtimeなしで関数型言語作るのはかなり難しいだろう。
純粋関数型言語ならある程度可能だが。

403:303 ◆pFphp4Ej4w
09/07/19 16:24:49
どうも。やっと模試が終わりました。死んだ…

>>401
なるほど。
それはprivate,public修飾子を残した上で付け加えるということでよいでしょうか?

この他「これがいやだからこうしてほしい」等要望をなんなりと。

それから、取りあえず「新C言語」の名前を決めたいのですが、なんかありませんか?(時期尚早と言うなら取り下げます。)

404:デフォルトの名無しさん
09/07/19 16:51:31
「C」という文字を入れるか入れないか、それが問題だ。
入れなくてもいいなら、「 Zig 」とかをさっきふと思いついたり。

あと、こうしたいああしたいっていう要望聞くのは良いんだけど、
上手く舵取りして取捨選択しないと、汚い言語ができるよ。
ちゃんと設計理念ってものを自分なりに考えていかなきゃねー

405:401
09/07/19 16:52:12
>>403
いや、構文的にはCのconst/volatileの位置を考えている。

406:デフォルトの名無しさん
09/07/19 16:56:05
C言語のautoやregisterはキーワードとして再利用しても大丈夫だろう

407:デフォルトの名無しさん
09/07/19 17:00:55
const int x = 123;
mutable int x = 123;

みたいな感じか。

408:デフォルトの名無しさん
09/07/19 17:02:24
ここでふと聞いてみたい。
俺言語を作ろうと思ったことがある奴、実際に作ったことがある奴、どのくらいいるんだ?



409:デフォルトの名無しさん
09/07/19 17:03:42
>>406
とりあえずautoはC++0x同様の型推論で決定だな。

410:デフォルトの名無しさん
09/07/19 17:03:57
言語ってか、ADVツクールみたいなの作ろうとしたら、
どんどん言語っぽくなっていった。

411:デフォルトの名無しさん
09/07/19 17:19:11
Cの実行モデル的にmutablは無駄にコードを長くするだけだと思うな…

412:デフォルトの名無しさん
09/07/19 17:21:31
mutableね タイポ

413:385
09/07/19 18:36:40
そんじゃ夜から何か作り始めるよ。
実装言語はバリアントがあるOCamlとかの方が楽だけど誰でも改造しやすいようにJavaとかにしたほうがいいのかな?

>>403
とりあえず名前だけでも決めてくれると嬉しい。

414:デフォルトの名無しさん
09/07/19 18:46:18
>>413
いや、是非385自身が一番使いたい言語で実装してほしい。そっちに俺は1票を投じるぞ。

415:デフォルトの名無しさん
09/07/19 18:49:21
新C言語だから・・・

SINCL: SINCL Is New C Language

416:デフォルトの名無しさん
09/07/19 18:58:36
QINC Is Not C-language.

417:303 ◆pFphp4Ej4w
09/07/19 19:47:12
>>405
なるほど。いいですね。
>>413
よろしくお願いします。私はそっち方面は全くわからないのですごく助かります。
>>415
>>416
GNUですかww
他に名前の候補ありませんか?

418:デフォルトの名無しさん
09/07/19 19:52:56
開発コードネームはLouiseがいいです

419:デフォルトの名無しさん
09/07/19 20:00:19
>>418
して、その心は?

420:デフォルトの名無しさん
09/07/19 20:02:35
だって可愛いらしくて素敵な名前じゃないですか

421:デフォルトの名無しさん
09/07/19 20:10:30
Lowrise?

422:デフォルトの名無しさん
09/07/19 20:19:00
省略記法をたくさん作ってくれ
void引数の関数の()を省略できるとか

423:デフォルトの名無しさん
09/07/19 20:43:27
>>422
関数ポインタとの区別をどうする?
という問題は置いといて、それは何が嬉しくなるの?

424:デフォルトの名無しさん
09/07/19 20:54:06
省略が多いほうがタイプ楽でええやん

425:デフォルトの名無しさん
09/07/19 20:54:25
構文糖は、劇的にコード量が変わったり新たな意味が付与されるものでない限り、
あると逆に邪魔になるものが多いよ。

Java の拡張 for とか Haskell の do とかなら存在意義があるけど、
単に省略できるようにしたいだけなら、

 引数 0 個の関数呼び出しでは、() を書いてはいけない

という仕様にしたほうが、まだ収まりが良いよね。

426:385
09/07/19 21:39:24
帰宅したので今から作ります。
>>414 に甘えてOCamlで実装することにしました。
名前が決まっていないみたいだから、とりあえず一番早かったSINCLで書いとく。


427:デフォルトの名無しさん
09/07/19 22:22:33
新Cを作るのなら

以下2点が希望かな
 関数のファーストクラス化
 プリプロセッサの廃止とその代替機能の追加

プラスアルファするとしたら
 名前空間またはモジュール機構
 並列処理の考慮(メモリモデル等)

機能追加は最小限でいい
比較的小さなのがCの良いところ

428:385
09/07/19 23:05:03
Cは識別子の管理が激しくめんどい。
誰かに改良案考えてほしいな〜。

429:デフォルトの名無しさん
09/07/19 23:08:27
識別子の管理ってどこが面倒なんだっけか。

430:385
09/07/19 23:14:49
識別子の意味が文脈で変わるんだよ。
URLリンク(www.syuhitu.org)
がとても分かりやすい。
とりあえずここのとおりに実装してる。

431:デフォルトの名無しさん
09/07/19 23:26:23
typedef 周りか。解決策といったら……

その1:typedef なんて無くせばいいよ!
その2:型名は大文字から始まることにすればいいよ!
その3:AST 作ってから識別子を解析すればいいよ!

くらいじゃないのかな。
文法に注意すれば、それが型名なのか変数名なのかが一意に決まるから、
とりあえず構文木作っちゃえば良いんじゃないかと思う。


432:303 ◆pFphp4Ej4w
09/07/19 23:47:33
>>426
頑張ってください!
>>431
typedefの消滅はちょっと…(私的には。)
だから現実的にはその2かその3が解決策だと思います。

その他ご希望をなんなりと。新C言語の名称も引き続き受け付けます。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4976日前に更新/197 KB
担当:undef