新C言語を作ろう
..
780:デフォルトの名無しさん
09/12/25 13:20:01
#define中に#define書けて再帰定義できるといい
781:303 ◆pFphp4Ej4w
09/12/25 18:09:33
>>780
プリプロセッサがどんどん高機能になっていく…
782:デフォルトの名無しさん
09/12/26 04:14:41
もういっそプリプロセッサをCの構文完全互換にしたらどうだろう。
783:303 ◆pFphp4Ej4w
09/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;
}
#}
こんな感じかな?
784:デフォルトの名無しさん
09/12/26 16:15:03
10進数のPCを作れば、誤差は無くなる。
速度より精度で勝負してみれば良いんじゃない?
785:デフォルトの名無しさん
09/12/26 16:48:25
工夫すれば10進数表現できるからいらねぇ
786:303 ◆pFphp4Ej4w
09/12/26 20:21:07
>>783
> 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;
> }
>
> #}
>
> こんな感じかな?
787:303 ◆pFphp4Ej4w
09/12/26 20:24:01
ちょいと訂正。
> #define("TEST") => (3){
のほうがいいな。
788:デフォルトの名無しさん
09/12/26 22:18:05
むしろ、マクロは縮小・廃止した方がいい。
789:デフォルトの名無しさん
09/12/26 23:38:44
でも結局マクロ的なものはいるよ
コードの自動生成もマクロの別解みたいなもんだし
いろんな言語にある eval もそうだ
超言語的変形は実際に便利だし
言語の枠内でやるとどんなに頑張っても1000行になるコードが
マクロ使えば50行になることもあるし
言語本体よりもプラットフォーム間で互換性の高い変形手段は必要だ
790:デフォルトの名無しさん
09/12/27 02:03:03
もう関数型言語にしちゃいなよw
791:デフォルトの名無しさん
09/12/27 02:36:34
メタ言語=対象言語となると結局Lisp最強。
792:デフォルトの名無しさん
09/12/27 13:53:14
LISPのマクロは可変引数の各パラメーターを自在に取り出せる。
C言語型のプリプロセッサでこれができると全く違うものになる気がする。
既存の__VAR_ARGS__という可変引数の「かたまり」のままでは無理。
carとcdrみたいに各パラメーターを分解できて個別に処理できないと
LISPのマクロ=構文と言わしめる芸当はできない。
793:303 ◆pFphp4Ej4w
09/12/28 10:32:42
>>788-792
C言語のマクロは毒にも薬にもなりますからねぇ…
わたし的には現在のマクロに、スコープさえ入ってればいいかなぁと思っています。
794:デフォルトの名無しさん
09/12/28 18:46:52
>>792
C99の可変長引数マクロなら各引数を取りだせるよ
URLリンク(chaos-pp.cvs.sourceforge.net)
とか
795:sage
09/12/30 03:50:08
function(a,b,c ... d)がS式で(function a b c . d)
function(a,b,c)がS式で(function (',' (',' a b) c))
にそれぞれ対応し、cが可変長引数部に出来るといいのではないかと思います。
796:303 ◆pFphp4Ej4w
10/01/12 20:48:38
話しぶった切って投下。
もしもSINCLにJavaDocみたいなのが入るとしたら、以下のうちのどれがいいですかね。
1)JavaDoc風のコメントでドキュメント生成
2)C#風のコメントでドキュメント生成
3)プリプロセッサと統合する。こんな感じ:
#doc
#author Hoge
#summary メイン関数。
#enddoc
int main(){
//....
return 0;
}
797:デフォルトの名無しさん
10/01/17 13:12:42
そもそも、JavaDocはなぜ今の形なんでしょう?
C#は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で取得できるといいかも。
798:デフォルトの名無しさん
10/01/17 19:09:18
いっそのこと文芸的プログラミングとかどうだろう。
799:303
10/01/22 22:47:25
現在規制中により、郵便で送ります。
>>797
> C#はJavaDocの改良でxmlをコメント内に書くことになった感じ?
そういうことなのかなぁ…だれかC#の歴史に精通してるひとっていません?
> プリプロセッサに統合ということはプリプロセッサが関数やらclassを認識するのでしょうか?
Yes.
本音を言ってしまうとxmlっていちいち長ったらしくて(個人的偏見)エディタの支援がないと書くのが面倒かなぁ…と思ったからなのですが、
実際のところどうなのかな…
それと、sf.netにSINCLのプロジェクトページを立ち上げました。(URLリンク(sourceforge.net))
参加したいと言う方はこのスレで参加したい皆を宣言するか、sf.netの私のアカウントまでメールをお送りください。
注意)メールはめったに確認しないのでスレで宣言するほうがベターです。
なお、wikiのほうは当面の間公式wikiとして使っていきます。
800:デフォルトの名無しさん
10/01/22 22:58:11
xmlなんてアホだと思う
801:デフォルトの名無しさん
10/01/25 14:35:04
ActionScriptやScalaがxmlを統合してきているので、コメントにもXMLをいいかなと思ったのですけど。
C言語のプリプロセッサが
#if #endif
のように書くから拡張して
ドキュメントの構文は#doc #enddocという風に書くことにしたんですよね。
JavaやC#等はプリプロセッサを捨てたのでコメントに書いているけど、
SINCLではプリプロセッサありで考えているのでプリプロセッサの役割になると。
プリプロセッサの機能を高機能にしてC言語のプリプロセッサのいろいろな問題を解決できたらいいですね。
#define a 3
ではなくて
#const int a = 3;
等と機能別に細分化して使うようにするとか。
Javaのアノテーションなども取り入れるとか。
802:デフォルトの名無しさん
10/01/25 18:42:39
いっそのこと、クヌースみたいにドキュメントコード一体の「何か」を作ったら?
HTMLに埋め込んだコードがそのままコンパイラに通るとか
803:デフォルトの名無しさん
10/01/26 05:21:29
ソースのファイル単位での管理を脱却してRDBで管理できるようにできないかな
804:デフォルトの名無しさん
10/01/26 11:01:59
g++ "select code from source where src='c' or src='cpp'"
どっかで見覚えがあるな
805:303 ◆pFphp4Ej4w
10/01/26 21:29:12
>>801
なんかすみません…
>>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プロジェクトのこととも取れますし…
806:デフォルトの名無しさん
10/02/15 01:32:58
最近のCPUのアセンブラをそのまま記述出来る、C言語ライクな
ものが欲しいかな・・・とは思っていました。
でも、もう言語仕様の方向性は決まっちゃったのかな(;´3`)
807:デフォルトの名無しさん
10/02/15 12:59:05
これ開発の参考になりそうかな?Ecere SDK :URLリンク(www.ecere.com)
MingWの上にeCというC上位互換OO言語(現在はトランスレータとして実装)と統合環境、
各種ライブラリを乗せたマルチプラットホーム言語っぽいね。ライセンスはBSDだそうな。
>>806
JWASMは? : URLリンク(www.japheth.de)
あるいはSphnix C--を改造 : URLリンク(www.dmoz.org)
808:303 ◆pFphp4Ej4w
10/02/17 22:12:48
>>806
決まっちゃいましたね…すみません。
そういや言語使用の方向性についてまだ言及してなかったので言及しておくと、当分は
C++、Javaなどがとるオブジェクト志向を避けながらどれだけ高級な書き方ができるかの実験
という名目でやっていくつもりです。
ですからオブジェクト指向を取り入れることは当分ありません。
>>807
ありがとうございます。ちょっと見てきます。
#何でか知らんがsctのコード書いてるとIDEが固まるんだが…これはIDEのバグなのかそれともBoostなんか使ってるからか…
809:303 ◆pFphp4Ej4w
10/03/07 20:32:46
レキサー実装中。。。
810:デフォルトの名無しさん
10/03/18 21:26:50
querykeyst keyinfo; char view[66];
if (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);
}
811:デフォルトの名無しさん
10/04/09 21:25:45
その昔、方言だったけど2進数を0b0000_1111_0000_1111みたいにアンダースコアで
区切る事を許していた処理系がありました。
おいらこれで入門したものだから、まっとうなGCCで苦労した・・・読みにくくて読みにくくて。
ま、ちょっと考えれば簡単に回避出来たのだけど。
それでも、実装されると嬉しい。
812:デフォルトの名無しさん
10/04/09 23:18:40
0b0000\
1111\
0000\
1111
813:303 ◆pFphp4Ej4w
10/04/10 23:51:45
>>811
そんなのあるんですね。確かに読みやすいし面白い。
でも実装するとしたら
int i = 0b0001; // OK
int j = 0b0000_0002; // NG
#pragma use_uscore_in_0b
int k = 0b0800_0000; // OK
とかになっちゃいそうですが。
814:デフォルトの名無しさん
10/05/02 23:41:26
プ
815:デフォルトの名無しさん
10/05/04 16:05:08
>>303
ところで、D言語は触ってみたことある?
816:303 ◆pFphp4Ej4w
10/05/08 19:13:16
>>815
さらりと触ったことはあります。ただ、verupするたびどこかしらコンパイルが通らなくなるのでやめましたが…
817:デフォルトの名無しさん
10/05/08 22:05:52
色々違うところがあって一言では語れないが、
強力なtemplateおよびmixin機能が追加されていて、基本的にプリプロセッサが不要になっている。
(というか、無くなっている)
#ifdef/ifndef にあたるのはversionおよびstatic ifに置き換えられている。
プリプロセッサよりもこういった言語に統合された静的な制御機能の方が便利だと思うんだけど、どうだろう。
818:デフォルトの名無しさん
10/05/09 13:19:40
>>817
#ifdef __GNUG__
// ...
#elseif __VISUALC__
// ...
#endif
なんてするより、
version(__GNUG__) {
// ...
}
version(__VISUALC__) {
// ...
}
としたほうがずっとスマートであることは確かです。
ただ、これをトランスレータ(コンパイラ)に任せるのでは若干実装に手間がかかりますし(めんどくさいだけ)、個人的に"version"というよく使われそうな単語を予約語に含めるのはいかがなものかと思います。
とりあえずstatic_assertは入れてもいいかなとは思っていますが…
819:デフォルトの名無しさん
10/05/10 17:13:01
原点復帰してA言語つくろうぜ
820:デフォルトの名無しさん
10/05/10 17:26:42
原点と言えば
@言語
を連想する
821:デフォルトの名無しさん
10/05/10 19:55:22
>>817
プリプロセッサはC言語と独立してるとこがメリットでもありデメリットでもあるわけで。
完全な置き換えは無理でしょ。
822:デフォルトの名無しさん
10/05/10 20:12:08
>>821
であるからこそ、バグの温床であるとしてサポートしないのが今風。
823:デフォルトの名無しさん
10/05/10 20:22:46
今風ってD言語みたいな思いつきの寄せ集め実装がいいわけ?
センスなさすぎ
824:デフォルトの名無しさん
10/05/11 17:32:37
>>818
よけーに分かりにくい
825:デフォルトの名無しさん
10/05/11 19:33:52
>>824
コンパイラがシンボルチェックに責任を持てるところが大きいんだよ。
ぱっと見は戸惑うかもしれないが、
これで連想配列的なversion設定値のチェック、設定、
static if / else / switch 構文相当が記述できるのでなかなかよくできてる。
C言語にも欲しいくらいだな、これは。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4986日前に更新/197 KB
担当:undef