トップページ⇒tech
862コメント256KB

新C言語を作ろう

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/07/21(土) 18:27:03
これまでの古いC言語から新しいC言語を作りましょう。
C言語に足りない、欲しい機能を追加して最終的には標準化しましょう。

いまここに新C言語作成委員会の発足を宣言します。

とりあえず必要と思われる機能は
・クラス
・テンプレート
などでしょうか?
0153デフォルトの名無しさん2007/07/31(火) 23:53:30
c言語+gcc拡張で書き直されたosのsetup codeの例
http://kerneltrap.org/node/11754
http://lkml.org/lkml/2007/7/11/362

それでもまだアセンブラ(*.S)な部分があるのがなんだかなぁだが。
0154デフォルトの名無しさん2007/08/01(水) 00:06:47
個人的には、コンパイラに強く依存するくらいならアセンブラで書いた方が良いな
0155デフォルトの名無しさん2007/08/01(水) 00:09:57
アセンブラはCPUに強く依存しないか?
0156デフォルトの名無しさん2007/08/01(水) 00:19:19
それがアセンブラで書くべき局面なら躊躇無くアセンブラで書くよ
0157デフォルトの名無しさん2007/08/01(水) 00:42:40
移植性がなくても、可読性や保守性の点で高級言語を使う利点もあるでしょ。
0158デフォルトの名無しさん2007/08/01(水) 07:06:38
コンサバじゃないGC
0159デフォルトの名無しさん2007/08/01(水) 21:49:59
>>151
間違ってると言うなら、ソースつきで反論どうぞ。
バカ本はダメだよ。(w

>>152
Pascal と Lisp には標準ではハードを直接触る機能はないと思ったけど。

Oberon, Smalltalk は使ってことないからよくわからんが。
0160デフォルトの名無しさん2007/08/01(水) 23:22:13
頭固い奴だな
OSのアセンブラコードを吐くプログラム書けばいいじゃん
0161デフォルトの名無しさん2007/08/01(水) 23:27:30
それを実行時にやるというなら、生成したコードを実行するために、
任意のアドレスへジャンプもしくは関数呼出などができる機能を
持っている必要があるという制約が生じるね。
0162デフォルトの名無しさん2007/08/01(水) 23:35:31
頭固い奴だな
実行ファイル吐く(略
0163デフォルトの名無しさん2007/08/01(水) 23:42:03
ようするにブートストラップという概念を知らんのね。
0164デフォルトの名無しさん2007/08/01(水) 23:48:23
Lisp も弄った事無いで話してそうだな
0165デフォルトの名無しさん2007/08/01(水) 23:49:53
>>163
ブートキャンプしか知りません。
0166デフォルトの名無しさん2007/08/02(木) 15:00:59
>>159
本云々じゃなくて、お前の人間性な
0167デフォルトの名無しさん2007/08/04(土) 00:49:02
>>160
OSのアセンブラコードってなんだ?

自分用語は、ご自身のブログだけにしといてくれ。

>>166
反論できないから、人格攻撃か。

わかりやすい奴だな。(w
0168デフォルトの名無しさん2007/08/04(土) 01:00:32
>>147に対する「ソース付きの反論」って
どんなのを想定してたんだろう、この子。
0169デフォルトの名無しさん2007/08/04(土) 01:43:29
恐らく本人も良く分かってないのではないかな
脊髄反射で何となく汚い言葉を並べているだけでしょう
だいぶ前から会話が成立していない様ですし
0170デフォルトの名無しさん2007/08/04(土) 06:58:50
>>167
じゃあさ、お前1冊でも本書いてみろよ
俺様が添削してやるから
0171pp2007/08/04(土) 22:15:25
>>168-169
反論できないから、人格攻撃か。

わかりやすい奴だな。(w

# 夜中まで乙。

>>170
指摘されたぐらいでそんなに熱くなるな。
0172デフォルトの名無しさん2007/08/04(土) 22:25:25
以上、言い負けてから先が威勢の良い典型的な厨房でした。
0173デフォルトの名無しさん2007/08/04(土) 22:32:12
簡単な技術の話も出来ないなら他所へ行ったら良いのにな。

それはさておき、C に機能を追加する話題ばかりだったけど、
C から取り除いた方が良いと思われる機能は無いのかな。
0174デフォルトの名無しさん2007/08/05(日) 10:43:00
>>172-173
> 典型的な厨房でした。

反論できないから、人格攻撃か。
わかりやすい奴だな。

> 簡単な技術の話も出来ないなら他所へ行ったら良いのにな。

で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?

反論したければ、単に >>129 の解釈に対する反例をあげれば済む話なのに
できないからうだうだ言ってるんだろ?
0175デフォルトの名無しさん2007/08/05(日) 11:17:42
そんな下らない事で息巻いてたのか…
0176デフォルトの名無しさん2007/08/05(日) 11:26:58
>>174
>で、おまえ等 (一人かも知れんが) のレスのどこに技術の話があるんだ?

俺じゃなくてさ、>>159 の書いてる事が素人っぽかったからね。
「Oberon, Smalltalk は使ってことない」らしいけど、Pascal と Lisp も
殆ど知らないんだろうなと思って。
0177デフォルトの名無しさん2007/08/05(日) 12:26:28
>>175
へ〜、君はもっと凄いことについてレスしてるつもりだったんだ。
詳しく説明してくれるかな?

>>176
> Pascal と Lisp も殆ど知らないんだろうなと思って。

そう思うなら、どこか素人っぽいか指摘すればいいだけ。

指摘もできないから、「知らないんだろうな」とか言う技術的じゃ
ないことしか書けないんだろ?

# まさか、「OSのアセンブラコードを吐く」なんて言うわけわかめ
# のことを言ってた奴が絡んでるのかなぁ...。(w
0178デフォルトの名無しさん2007/08/05(日) 12:54:10
この人、リアルでは孤独なんだろうな。。
0179デフォルトの名無しさん2007/08/05(日) 12:57:02
おやまあ
0180デフォルトの名無しさん2007/08/05(日) 12:59:30
シャープマンはそろそろおとなしくしてね
0181デフォルトの名無しさん2007/08/05(日) 13:02:52
"ハードに近い"の定義がされてないのに何この荒れよう。
人によってリアルモードのことだったり割り込みのことだったりしそう。
#リンカスクリプトを言語に統合まだー?
0182デフォルトの名無しさん2007/08/05(日) 13:08:05
自分でやれよwwwwwwwww
01831602007/08/05(日) 13:15:35
>>177
「OSの」は余計って事か。ごめんね。
書いたときは>>152以前は読んでなかったから、OSでも書くつもりなのかと思ってたよ。
>>161には話通じてるみたいだし、スルーされたと思って放置してた。
どのみちファイルに出力できる言語なら何でもできるだろ、
って事を>>148みたいな人へ言いたかったんだけど。
0184デフォルトの名無しさん2007/08/05(日) 13:24:18
ホントにどんな事にでも噛み付いてくる奴は居るもんだな
0185デフォルトの名無しさん2007/08/05(日) 13:41:40
夏だからな
0186デフォルトの名無しさん2007/08/05(日) 13:50:23
>>178-180, >>184-185
「技術的に指摘して」って言ったらこの様ですか...。

まあ、>>185 が言う通り 夏 なんだろうな。

>>181
> "ハードに近い"の定義がされてないのに何この荒れよう。

まあ、最低限として任意のメモリの読み書きができないとダメだろうな。

て言うか、リアルモードとか割り込みなんて事まで言い出すと特定プロセサ
シリーズ専用の言語になるから「標準」でと言うのはないだろうな。

>>183
単に茶化しただけだ、気にしないくれ。

そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
大変面倒なので実際的じゃないという意味) だろ?

て言うか、このスレ自体がネタスレだし...。

> どのみちファイルに出力できる言語なら何でもできるだろ、

>>161 が指摘してる通りそのファイルを実行する手段が必要。
標準の言語仕様としてその機能を持ってる言語ってそんなに多くないよ。
0187デフォルトの名無しさん2007/08/05(日) 14:00:54
>>186
餌欲しい?
0188デフォルトの名無しさん2007/08/05(日) 14:09:42
>>186
各arch毎に言語拡張すれば良くね?
0189デフォルトの名無しさん2007/08/05(日) 14:37:07
>>186
言語仕様に含まれてなくとも、大抵は処理系毎にFFIとかが整備されてるもんだよ。
C言語にしてもasmは標準ではないし、C言語で適当なバイト列を関数アドレスとして
キャストして実行できたりするのも処理系が「たまたま」許してるだけ。
そんな所を君がごちゃ混ぜに語っているのが、分かってないのでは
と言われる理由かと。
0190デフォルトの名無しさん2007/08/05(日) 15:05:34
>186
>そもそも、>>160 の書き込み自体洒落 (=原理的には可能だけど、実施が
>大変面倒なので実際的じゃないという意味) だろ?

大変面倒というのは君の主観でしかないよね。
そういうのは一度作ってしまえばその環境で使いまわせるし、
やることも極めて単純な変換作業だよ。
エミュレータやコンパイラ作ったりする人なら普通に思いつく発想。
で、

>て言うか、このスレ自体がネタスレだし...。

このスレは仮にも「新C言語を作ろう」なんだから、その程度を、
大変面倒と言ってしまうレベルの人間の横槍は遠慮してもらいたい。
0191デフォルトの名無しさん2007/08/05(日) 15:10:02
>>173
ないわけではないよ>>48-61。


>>188
似たようなこととして、DがCPU毎にインラインアセンブリを定めていたはず。
0192デフォルトの名無しさん2007/08/05(日) 15:16:30
>>191
D言語のインラインアセンブラはx86しか(ry
gdcは他のarchの為にasm(gasの文字列);に対応してるけど。
0193>>187 かわいそう...2007/08/05(日) 15:51:36
>>188
そう、実用的には処理系毎の定義と、何らかの言語拡張がなされているのが普通。

特に、ハード周りとかファイル関連はアーキテクチャやシステム毎の差異が大きいので
標準の言語仕様では定義してない方が多い。

C言語は、PDP + Unix と言うある意味特定環境用の言語として作られたから生い立ちと
して他の言語に比べてそこら辺の定義が比較的されていたんだ。

>>189 の言うキャストなんかも、アーキテクチャが決まっていたから許されていたが、
8086 + DOS みたいにメモリモデルによっては関数へのポインタとデータへのポインタで
ビット幅が違うなんて言う変態的なアーキテクチャだと破綻するので言語仕様からはず
されただけ。

>>189
そういう突込みを避けるために、わざわざ゛>>159 に「標準では」って
言う言葉を入れてあるんだが。

> そんな所を君がごちゃ混ぜに語っている

具体的に指摘よろしく。

>>190
まあ、ちょっと落ち着け。

そういう仕組みを作るのが面倒じゃなくて、単に「ハードに触る」だけで、ファイル作っ
てそれを実行して (必要に応じて結果を) 得るって言うことが面倒だ言ってるんだけど、
理解できてる?
0194デフォルトの名無しさん2007/08/05(日) 15:55:05
もっと毒吐けよwwww
0195デフォルトの名無しさん2007/08/05(日) 16:19:14
>>193
処理系毎じゃなくてarch毎に拡張の標準を決めるべきでね?
0196デフォルトの名無しさん2007/08/05(日) 17:22:27
>>193
>理解できてる?
何を言ってるのかさっぱりわかりませんがその前に、
「君の主観でしかないよね」って言葉は理解してるのかな?
ともかく、何が面倒なのかを焦点に議論するのは無駄でしょう。
重要なのはどういった手法であれ、目的が達成できるかどうか。
よりベターな方法なんて後からいくらでも考えればいい。

>具体的に指摘よろしく。
自覚がないなら遠慮しておきます。
それこそ「面倒」なんで。
0197デフォルトの名無しさん2007/08/05(日) 17:24:43
ANSI Common Lispという本の導入、クロージャを紹介する所でこんなのがある。

(defun addn (n) #'(lambda (x) (+ x n)))

「Cではaddnはどうなるだろう?ちょっとすぐには書けないだろう。
もっとも読者はこんなふうに思うかもしれない。大体こんなことをしたいなどと考え
たりするだろうか、と。しかし、そう考えたりしないのは、プログラミング言語が、それで
できないようなことは、やりたいと思わないように利用者を仕向けているからである。
プログラムを書く言語で考えなければならないのだから、それで書けないことをやり
たいとは考えにくい。私が初めてプログラムを書き始めたころ、それはBasicで書いて
いたのだが、再帰を使いたいなどとは考えなかった。そんなものがあることも知らな
かったのだ。私はBasicで考えていたのだ。
(中略)
(Lispを学習していく)努力の報酬として、上級のC++プログラマがBasicでの
プログラミングに感じるようなやりにくさを、C++に対して感じるようになるだろう。」
0198デフォルトの名無しさん2007/08/05(日) 18:11:01
>>195
例えば、86系用だと io 命令を拡張の標準にするとか?

ちょっとおもしろいかもしれない。

>>196
> 何を言ってるのかさっぱりわかりませんが

ああ、理解できてないなら別にもういいよ。

別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。

> 自覚がないなら遠慮しておきます。
> それこそ「面倒」なんで。

# 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w
0199デフォルトの名無しさん2007/08/05(日) 18:13:34
「俺はまともなんだが、どうにも馬鹿が多くて話が進まないなぁ」
と思ってるそこのキミ。それはつまりキミが馬鹿なんです。
0200デフォルトの名無しさん2007/08/05(日) 18:17:02
>>198
> > 自覚がないなら遠慮しておきます。
> > それこそ「面倒」なんで。
> # 指摘できない言い訳を2行も書くのは面倒じゃないんだ...。(w
>>196のこの部分は、
「ああ、理解できてないなら別にもういいよ。
別に君の意見に反対する気はないし、そういう人に何を言っても無駄だ
と言うことも知ってるから。」
という意味のことを、それよりは少し短く言ってるだけだと思うよ。
0201デフォルトの名無しさん2007/08/05(日) 18:17:51
その典型的な例がシャープ
0202デフォルトの名無しさん2007/08/05(日) 18:28:03
できない言い訳に、他人の無能さを持ち出す人って饒舌だからね
0203デフォルトの名無しさん2007/08/05(日) 19:21:10
>>200
はいはい、言い訳はもう結構です。
0204デフォルトの名無しさん2007/08/05(日) 20:37:33
何を話してるのかはさっぱりわからんが、誰が痛いかはよくわかる。
0205デフォルトの名無しさん2007/08/05(日) 20:48:27
>>204
だな。主観で話してるお前が一番痛い。
0206デフォルトの名無しさん2007/08/05(日) 20:57:42
いや、そいつは二番目だ。
一番は俺だからな。
0207デフォルトの名無しさん2007/08/05(日) 21:10:31
いやいや俺だ
0208デフォルトの名無しさん2007/08/19(日) 18:24:44
>>207
そうだな
0209デフォルトの名無しさん2007/08/19(日) 19:23:20
ここは誰が一番痛いか競うスレですかそうですか。
0210デフォルトの名無しさん2007/08/19(日) 19:32:53
そうだよ
君もエントリーするかい
02112092007/08/19(日) 19:43:53
よろしくお願いします。
一応下記の至らぬスレの主です。

おら!Nをオトメに見つけて++Nを得るムを作らん?!
http://pc11.2ch.net/test/read.cgi/tech/1187428876/l50
0212デフォルトの名無しさん2007/08/19(日) 20:05:21
ワロタw
0213デフォルトの名無しさん2007/08/19(日) 20:10:54
>>211
糞スレ立てるな
02142092007/08/19(日) 20:21:58
>>212-213
何も成果物を作れないかもしれませんが、
気長に見てやってください。

スレ違い及び売名行為失礼しました。
逝ってきます。
0215デフォルトの名無しさん2007/08/20(月) 18:32:13
酷いスレだな
0216デフォルトの名無しさん2007/08/25(土) 12:46:57
・変数スコープをなくし、全てグローバルとする。
スコープとはいわば開発者に脳内スタックの確保を一段
強要する機能であり、開発の邪魔である。
変数は全て設計者が関数一覧表とそれに付随する変数一覧表にて管理する。
ローカルだからと適当に変数を作り捨てるようなことをするから
ゴミ変数が増え、バグとなる。

・ポインタの廃止。ポインタは労多くして功少なしの典型機能。
・キーワードを全て大文字化する。小文字は小さく目に悪い。
0217デフォルトの名無しさん2007/08/25(土) 12:48:11
全部ボツ
0218デフォルトの名無しさん2007/08/25(土) 15:13:41
>>216
COBOL でも弄ってろ無能。
0219デフォルトの名無しさん2007/08/26(日) 17:08:28
>>216
要約するとガベージコレクションを付けろってことだな
0220デフォルトの名無しさん2007/08/27(月) 02:45:42
>>216
異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな
0221デフォルトの名無しさん2007/08/27(月) 18:09:12
>>220
>異論の余地がないほど同意
本人だからか?
0222デフォルトの名無しさん2007/09/06(木) 17:28:11
小学校でローマ字を習うまでは大文字しか読めなかったから
BASICはできてもCはできなかった
0223デフォルトの名無しさん2007/09/06(木) 17:39:30
自分は小学校でローマ字を習う以前に公文で英語やってたから小文字も読めた
でもプログラミングはやってなかった
つかPC自体が珍しい時代だった
0224デフォルトの名無しさん2007/09/20(木) 10:00:55
C言語にGCとデリゲートとコルーチンっていうか、ファイバーっていうんだっけ?中断できるやつ。があれば割とすごいことになりそうな感じ。
あ、あとエクスポート可能なテンプレートかジェネリックスもね。

はっきり言ってクラスはなくても何とかなる。thisコールが結構べんりっちゃーべんりだけど。
0225デフォルトの名無しさん2007/09/20(木) 10:25:33
>>216
ローカル変数は無いと再帰処理が出来なくて悲惨だぞ。その再帰も深くなるとばぐっちゃうけどね。
ポインタはローレベル叩くとき必要だけど、普段はあんまり恩恵ないな。イテレータにしても実用上は問題ないかもね。
キーワードは、色つきエディタ使えば解決。え!?もってないの???VCが無料だって言うのに。
0226デフォルトの名無しさん2007/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();
}

みたいなことやってバグってハマってたな
0227デフォルトの名無しさん2007/09/20(木) 13:09:15
>>216
異論の余地がないほど同意
cなんかよりBASICのほうが1億光年優れてるよな
0228デフォルトの名無しさん2007/09/20(木) 13:22:00
同意するなら異論に反論してからにすれば
0229デフォルトの名無しさん2007/09/20(木) 14:06:23
B    A    S     I      C
0230デフォルトの名無しさん2007/09/20(木) 15:20:03
俺の専ブラが>>216をグロ判定したんだけど
0231デフォルトの名無しさん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:44
ただのタートルグラフィックじゃだめだな。
3次元に拡張して、タートルがグリグリ動く奴でヨロ。
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:16
break+数字で複数のループを抜ける。

while(1) { /* ループ1 */
   while(1) { /* ループ2 */
     break2;
   }
}
0237デフォルトの名無しさん2008/01/28(月) 18:45:05
gotoでいいじゃん。
0238デフォルトの名無しさん2008/01/28(月) 19:09:53
>>236
UWSCで使えるけど便利だよね。

あと、forループで規定回数で抜けるのと途中で抜けるのとをスイッチするオプションがあれば・・・
あ、普通にフラグとスイッチ使えばいっか。
0239デフォルトの名無しさん2008/01/28(月) 21:36:08
>>236
数字はやだ、ラベルにしてくれ。

Loop:
 while(1) { /* ループ1 */
  while(1) { /* ループ2 */
   break Loop;
  }
 }
0240デフォルトの名無しさん2008/01/28(月) 21:37:48
それ gotoって言うんだよ
0241デフォルトの名無しさん2008/01/28(月) 22:57:11
そんなこと言い出したから、while だって、if + goto なわけだが。
0242デフォルトの名無しさん2008/01/29(火) 17:27:37
>>239
まんまD言語な件。いや、Javaでもあったかな。
0243デフォルトの名無しさん2008/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;
}
0244デフォルトの名無しさん2008/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;
}
0245デフォルトの名無しさん2008/04/09(水) 20:36:34
printf("私は弱者を愛し、守っていきます。");

紳士言語
0246デフォルトの名無しさん2008/04/09(水) 21:05:21
>>245
ここではスレ違いの内容だよ
そういう書き込みは“適当に作ったC言語の関数を貼っていくスレ”の方で。
0247デフォルトの名無しさん2008/06/19(木) 18:33:34
>>225
関数の引数を増やしてそれをローカル変数代りにすればOK。
216が関数の引数もなくせ、と言っているなら知らんが...。
0248デフォルトの名無しさん2008/06/19(木) 21:27:03
>>241
if + goto + goto だと思うが。
0249デフォルトの名無しさん2008/06/19(木) 21:52:07
>>248
大抵のコンパイラは

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

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

って言うか、5ヵ月近く前のレスにレスするほどの内容か?
0250>>2492008/06/19(木) 21:53:13
ラベル付け忘れた... orz

 goto L1
L2:
 ...
L1:
 if(...) goto L2
0251デフォルトの名無しさん2008/06/20(金) 22:40:22
>>249
どうしてもレスつけたかったんです、勘弁してください。
0252デフォルトの名無しさん2008/07/24(木) 01:36:50
>>1
やる気があるなら、予約語を全部排除して、
全部自前で定義できるようにしてくれ。
そういう仕様なら乗ってやる。
■ このスレッドは過去ログ倉庫に格納されています