[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 17:51 / Filesize : 63 KB / Number-of Response : 307
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【超高速】C/C++に代わる低級言語を開発したい 2



1 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 09:24:04 ]
70年代、Cは生まれ、それから30余年、現代においてもなお、低レベルなシステム開発に広く使われている。

しかし、2010年の今、もしもCが発明されていなかったとして、低レベルなシステム開発のためのプログラミング言語を
新たに作るとしたら、Cとは違う言語になるだろう。少なくとも、全く同じにはならないはずだ。

そこで、このスレッドでは、
低レベルなシステム開発のためのプログラミング言語
を一から考えたい。

既存の言語を使って何かをすることが目的ではなく、新たなプログラミング言語を考えることが目的であるから、
「既存のXX言語を使えばいい。」という類の発言は無意味である。

「既存のYY言語のZZ機能は、WWと言う点で有用だから採用したい。」という発言は歓迎だ。

現代の一流のプログラミング言語研究者が、最先端の研究成果を盛り込んで、
一から低レベルなシステム開発のためのプログラミング言語を作るとしたら、どのような言語になるだろうか、
という観点で考えたい。

◆前スレ
【超高速】C/C++に代わる低級言語を開発したい
pc12.2ch.net/test/read.cgi/tech/1268843875/

98 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 10:23:06 ]
そろそろ新言語の話しようぜ

99 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:04:25 ]
まず名前からきめようか

100 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:07:00 ]
GOがあるじゃないか

101 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:13:19 ]
Goは、Cの代わりにならない。

102 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 11:36:00 ]
>>84
オブジェクト指向だから遅い → NO
クラス階層が広くて深いから遅い → NO
仮想関数使うから遅い → Yes(NOにできるかな?)
ガベージコレクションするから遅い → Yes
ヴァーチャルマシンをはさむから遅い → Yes
実行時の動的型決定を使うから遅い → Yes(NOにできるかな?)
短い関数を沢山書くから遅い → NO
毎回毎回いちいち動的にメモリ確保するから遅い → Yes(ただし、そうする必要もない)
なんでも実行時に決定させる設計だと遅い → NO
goto使わせないから遅い → NO
アセンブラを使わせないから遅い → NO
ポインタを使わせないから遅い → NO
モノリシックに書かないから遅い → NO
移植性を考えるから遅い → NO

103 名前:デフォルトの名無しさん [2010/04/04(日) 12:00:42 ]
Goは早くも下火になった
新物だったので一時的に話題を集めただけ
今ではD言語にも満たない

104 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 12:04:16 ]
>>32
Javaもエスケープ解析を有効にしたらスタックにオブジェクトをおけるんだけど、
エスケープ解析ってコンパイル時にできるものなのにクラスロード時にしちゃうから、
今度は起動速度に悪影響があるんだよなぁ。

105 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 12:22:48 ]
FORTRANにオブジェクト指向取り入れれば

106 名前:デフォルトの名無しさん [2010/04/04(日) 12:29:48 ]
>>105
確かとっくに取り入れられてなかったか?

ja.wikipedia.org/wiki/Fortran

Fortran2003で取り入れられているようだ



107 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 12:35:39 ]
じゃあ言語名はF++0xで

108 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:25:53 ]
そういやおまいらの中でドラゴン本タイガー本中田本読んだのってどれぐらいいるの?
あとC++の設計を語るのならD&EとかARMとかも読んでいると思うけど、そのへんもどうなの?


109 名前:デフォルトの名無しさん [2010/04/04(日) 13:50:34 ]
読んでねーだろこんなアイちゃんスレに書き込む輩は

110 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 13:51:16 ]
>>98
ラブプラス++

111 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:18:28 ]
O+++

112 名前:デフォルトの名無しさん [2010/04/04(日) 15:23:43 ]
>>108
全員読んでる。当たり前だろ。

113 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 15:32:38 ]
>>108
常識

114 名前:デフォルトの名無しさん [2010/04/04(日) 16:18:46 ]
>>99
「small」

プログラマーの言語仕様の学習不足によるヒューマンエラーを最小限にするために、
できるだけ小さな言語仕様にしたい。

115 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 16:35:45 ]
>プログラマーの言語仕様の学習不足によるヒューマンエラーを最小限にするために、
そんなコンセプトじゃ無いだろ。
第一、言語仕様が小さいからといってヒューマンエラーが減るわけじゃない。
もしそうだとしたらForth最強じゃないか。

116 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 16:38:18 ]
Forthはインタプリタの実装までを含めて仕様みたいなもんだから、
見た目ほど仕様が小さいわけでもないけどな。



117 名前:デフォルトの名無しさん [2010/04/04(日) 16:39:56 ]
>>115
> そんなコンセプトじゃ無いだろ。

じゃあ、どんなコンセプトなんだ?否定する前に意見を述べよう。

118 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 16:49:12 ]
Cにとって代わるというのがコンセプトだろ。

119 名前:デフォルトの名無しさん [2010/04/04(日) 16:51:52 ]
Cにとって代わるのに加えて、
「プログラマーの言語仕様の学習不足によるヒューマンエラーを最小限にするために、
できるだけ小さな言語仕様にしたい。」
という提案だろ?


120 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:02:05 ]
>>119
言語仕様が小さくなったら、ヒューマンエラーは増えると思うが。

121 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:03:07 ]
えっ

122 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:04:18 ]
思うのは自由だ。

123 名前:デフォルトの名無しさん [2010/04/04(日) 17:20:02 ]
>>120
言語仕様が小さい方が、言語仕様を知らないことによる人間の失敗は少なくなるよね?
人間の記憶容量は有限だから。

124 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:32:30 ]
たとえば、C言語でオブジェクト指向っぽいことをやろうとした時の煩雑さとかどうよ。

言語の支援があったほうがよい機能を全部ユーザーがやるというのは無理がある。

125 名前:デフォルトの名無しさん [2010/04/04(日) 17:34:38 ]
直感的で一貫性のある仕様がいいね。

126 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:04:48 ]
教育用言語なら、再帰がない方が失敗が少なくなると言えなくもない。



127 名前:デフォルトの名無しさん [2010/04/04(日) 18:12:44 ]
再帰なんて、単に呼び出す関数がたまたま自分であったと言うだけであって、全く特別なものではない。
それを阻害するような例外(「ただし、自身を呼び出してはいけない」等)を仕様に付け加える方が混乱のもと。有害。

そんな例外は、仕様に絶対に含めるべきではない。

128 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:19:14 ]
>>127
auto変数とかいう特別な変数がある

129 名前:デフォルトの名無しさん [2010/04/04(日) 18:26:51 ]
どう特別?スタックに乗るだけでは?

130 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:31:10 ]
変数のためにわざわざスタックを使うのは、再帰があるからだよ
再帰が無いならすべてstaticかグローバル変数でOK

131 名前:デフォルトの名無しさん [2010/04/04(日) 18:33:48 ]
スタックを使わず、「staticかグローバル変数」にした場合のメリットは?

132 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:36:06 ]
>>131
超高速。

133 名前:デフォルトの名無しさん [2010/04/04(日) 18:36:58 ]
>>132
どういう理由で?

134 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:56:59 ]
「staticかグローバル変数」にしたら関数の外からでも参照できて危ないとしか思えんのだが

135 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:02:02 ]
スタックポインタに足し算するのに何百クロックもかかる変なマシンを使ってる人が
ここにも登場w グローバル変数は速いと言い張るバカwwwwww

136 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:03:57 ]
古い言語ではローカル変数をスタックに取ったりはしない。



137 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:04:40 ]
>>134
関数の中でもstaticつかえるよ

138 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:05:05 ]
で?

139 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:06:59 ]
関数の中のstaticと関数の外のstaticは全く別の物だからな。
同じキーワードを使いまわしてるのは、ほとんど設計ミス。

140 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:07:44 ]
>>123
ヒーマンエラーを減らすためにいろいろな機構があるのに。

141 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:08:26 ]
グローバル変数が高速wwwwwww

142 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:16:52 ]
静的に一度だけ確保され初期化がされるstaticと、
静的にメモリに配置されアプリケーション終了まで変わらないstatic?

ってあれ?グローバルに置かれた変数の方の staticって、
そうでない物と何が違うの?

143 名前:デフォルトの名無しさん [2010/04/04(日) 19:20:48 ]
>>140
その機構が、直感的で一貫性があればいいけどね。
特殊な例外の積み重ねで、プログラマーが勘違いすると、プログラマーの意図と違う結果になるのは避けたい。

144 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:25:34 ]
>>142
名前空間がファイル単位になるんじゃなかったっけ

145 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:34:18 ]
たぶんそれは名前空間じゃなくてスコープだと思う。

146 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:34:53 ]
すまん、無名名前空間の話とごっちゃにしてた



147 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:43:06 ]
file1.cpp ---
int a = 1234;
static int b = 6789;

file2.cpp ---
extern が無いと a も b も見えない。

------------
file1.h
int a = 1234;
static int b = 6789;

もしも file1.h が複数回includeされていても、b は安泰だが a はエラー


148 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:44:35 ]
>>147
初心者スレでやれ

149 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 19:53:39 ]
まぁ初心者云々はともかくC++におけるstaticの多義性が
>>143の「特殊な例外の積み重ね」であることは間違いないなw

150 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 20:18:23 ]
そもそもCPUが何してるか知らない奴多くね?

151 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 20:33:28 ]
論理回路の知識がなくてもプログラミングに差し支えはないだろ。
差し支えるようなプログラミング言語というのもあるかもしれんが。

152 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 20:53:19 ]
仕事する上ではそれほど必要ないかもしれんが
低級言語作りたいって言うんだったら必要だろう

153 名前:デフォルトの名無しさん [2010/04/04(日) 20:58:10 ]
>>150
なぜそう思ったの?

154 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:00:13 ]
Javaでプログラミングするとしても、パフォーマンスを考えるためにある程度の知識は必要だろ。

155 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:05:47 ]
>>153
自分がCPUが何をしているか知らないから、それを知っていることが凄いとでも思っちゃったんじゃないの。

156 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:10:17 ]
vbプログラマとかCPUのことよくわかってないの多いぞ



157 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:10:40 ]
そんなに必要な機能があるなら、C99に取り込まれているだろう。

158 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:15:58 ]
>>156
お前がそういうコミュニティーに属しているというだけだ

159 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:27:08 ]
この流れじゃ、例えPart 3まで行っても何も決まらないだろうな

160 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:39:55 ]
新言語とかどうでも良くてJAVAを叩ければそれで満足なカスが多すぎる

161 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:40:53 ]
それって、Part3までに決めろよってことだろw
おまえ、ワクワクし過ぎw

162 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 21:42:18 ]
は?

163 名前:デフォルトの名無しさん [2010/04/04(日) 21:43:18 ]
>>160
Javaなんて別に叩くほどの言語でも無いだろ。どうでもいい。

164 名前:デフォルトの名無しさん [2010/04/04(日) 21:58:22 ]
Javaは使えない言語だが貶すほどでもない

165 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 22:01:06 ]
言い方を変えるか
とにかく何でも叩きたいだけの生産力絶無のカスが多すぎる

166 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 22:02:56 ]
普及している言語をカスといっているヤツは、その理由がわかっていないカスだから相手にしなくていい。



167 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 22:09:45 ]
歴史的理由にすぎない
とかいっているヤツはどうする

168 名前:デフォルトの名無しさん [2010/04/04(日) 22:17:08 ]
どうでもいい。

169 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 22:59:43 ]
CPUどころか、OSが何してるのか知らない奴が多い。

170 名前:デフォルトの名無しさん [2010/04/04(日) 23:00:21 ]
>>169
なぜそう思ったの?

171 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:01:34 ]
>>169がそういうコミュニティーに属してるんだろw

172 名前:デフォルトの名無しさん [2010/04/04(日) 23:09:09 ]
>>1
TMPできるようにして

173 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:16:07 ]
世間一般はGUIの出来でOSの評価してるからな

174 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:21:07 ]
OSどころか、コンパイラが何してるのか知らない奴が多い。

175 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:27:35 ]
そりゃ利用者はコンパイラのことなんか知る必要ないからな。

176 名前:デフォルトの名無しさん [2010/04/04(日) 23:32:15 ]
>>174
なぜそう思ったの?



177 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:36:39 ]
ネイティブじゃないからと中間言語を批判しているやつは、コンパイラがなにやっているかわかっていないような気がする。

178 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:38:01 ]
気がするのは自由だよ。

179 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:40:43 ]
断定するのも自由だ

180 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:41:53 ]
ということで、新言語の話をどうぞ。

181 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:53:44 ]
お前らホントに>108読んでるのか?

Javaにこだわるやつらは何考えているんだ?
低レベルなシステム開発向け言語というんだったらForthとかPIRとかRTLとかがターゲットじゃないの?


182 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:56:34 ]
PIR、RTLって何?

183 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 23:58:41 ]
>>181
スレタイ嫁

184 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:02:18 ]
Java bytecodeやCILに代わるものをやるわけではない

185 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:05:01 ]
PIR: Parrot intermediate representation
Parrotで使っている中間言語
RTL: Register Transfer Language
GCCで使っている中間言語

さすがにそこまでいくと凄いことになるな。


186 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:07:11 ]
プログラマーが三人集まると何も決まらないというのは本当ですな。
先ずは音頭を取るやつがいないと。誰か一人コテつけて幹事を名乗り出るんだ。



187 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:07:41 ]
ここで開発する言語のコンパイラがRTL吐くってことだよね?

RTLに代わるものを作るわけじゃない。

188 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:16:14 ]
よし、じゃあ何か作ろうぜ。
まず、


int main(void)
{
 // ↓続きよろしく





189 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:19:46 ]
DはC++と異なり、Cとのソースコード互換性を棄ててるから、レガシー排除したC++にあたる。
Cに代わるものは、Dのサブセットから構成できるのではないか。

190 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:22:58 ]
>>189
具体的にサブセットに含まれる機能を提示してもらえると議論しやすい

191 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:24:31 ]
このさい、基本データ型からきめようよ

192 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:44:51 ]
>>189
互換性を捨てたものが普及した試しなんてあるの?Dは互換性捨てたから駄目なんだね。

193 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 00:47:36 ]
C自体もそれ以前と互換性がないわけだが

194 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 01:41:17 ]
ここの奴らは前スレ埋める事すらしないゴミクズばっかだなw

195 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 01:57:30 ]
基本データ型はbyteのみ

196 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 14:07:29 ]
最近じゃエンディアンすらしらねえクズが仕事してるしな

ところでポインタがないから最適化できねえとか本気で書いてんのか
アホすぎ



197 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 14:35:26 ]
いまエンディアンを知る必要性なんてほとんどないだろ
昔は通信時なんかで考慮必要だった時もあったけどな

198 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 14:40:06 ]
プログラム組む上で気にしなくてもいいけど知っとくべきだとは思うな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<63KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef