新C言語を作ろうat TECH
新C言語を作ろう - 暇つぶし2ch607:デフォルトの名無しさん
09/08/15 21:05:54
>>602
C言語へのトランスレータだった時代のC++のサブセットを再発明して、その後C++0xのサブセットを再発明するとしか見えない。
がっかりだ。

608:デフォルトの名無しさん
09/08/15 23:18:21
何ががっかりだよ。
じゃあお前は何をつくれるんだ?

609:デフォルトの名無しさん
09/08/15 23:23:08
何故そういう話になるんだか。

610:デフォルトの名無しさん
09/08/15 23:28:04
上から目線で否定してるのは確かにいらっとする。
建設的な話ができないやつは厨房って自覚した方がいいね。

611:デフォルトの名無しさん
09/08/15 23:32:15
建設的って。建設的な話題は手前の方で出したよ。
その結果がこれじゃぁね。
#あるコンパイラを弄ったことあるから協力するつもりで居たのに残念という意味合いが強い。まぁ期待しすぎただけだが。

612:デフォルトの名無しさん
09/08/15 23:34:22
作る本人は良いとして、これができたからと
いって、使い道はあるんだろうかね。

613:デフォルトの名無しさん
09/08/15 23:35:44
個人的に強力なジェネリックとかあると使ってみたい気はするが。

614:デフォルトの名無しさん
09/08/15 23:36:28
ネイティブ言語でのジェネリックは俺も興味あるな

615:303 ◆pFphp4Ej4w
09/08/15 23:58:58
>>607
ここでつくられる言語がガッカリなものになるかどうかはここで皆様が下さる助言に少なからず関わってくると思います。

あ、あと、あまり私に過度な期待をかけないほうがいいと思います。
投げ出すつもりはありませんが、所詮はどこにでもいる高校1年生ですし。

616:デフォルトの名無しさん
09/08/16 00:04:10
どうせ釣るんなら
ちなみに女です
とか気を利かせろよ

617:デフォルトの名無しさん
09/08/16 00:18:13
>>615
仕様制定のプロセスの問題について言いたいこともあるが、まぁいいや。
まずは既存の実装のソースを弄ることから始めてみるといいよ。そうしないと全体像掴めないだろうしね。C言語コンパイラのtccやD言語コンパイラのdmd辺りを弄るのがお手軽かな。
本当は分かりやすいC++実装があると良いのだけどね。
URLリンク(bellard.org)
URLリンク(ftp.digitalmars.com) (dmd2/src/dmd内)
#llvmのclang(cfe)とかgccとかは試してないので難しさは分からないけどざっと見ややこしそう。
#上の方で紹介されてたcycloneもソースあるようだけどもcyclone自身で書かれているようなので理解には向かない予感。

618:303 ◆pFphp4Ej4w
09/08/16 00:29:18
> >>615
> 仕様制定のプロセスの問題について言いたいこともあるが、まぁいいや。

言いたいことはじゃんじゃか言ってしまって結構ですよ。

とりあえず紹介して下さった実装のソースコードを見てみることにします。

619:デフォルトの名無しさん
09/08/16 00:40:52
>>618
>言いたいこと
後でいいや。

>ソースコードを見てみることにします
忘れてたけどこれも張っとく。
ソースコードを読むための技術
URLリンク(i.loveruby.net)
構造が分かるようになれば面白くなってくるから頑張れ。

620:デフォルトの名無しさん
09/08/16 00:42:56
いつから初心者が作るコンパイラスレになったんだ
別スレたててやれよ

621:デフォルトの名無しさん
09/08/16 00:46:22
実装知らんと仕様作れんだろjk

622:303 ◆pFphp4Ej4w
09/08/16 18:46:00
えーっと、とりあえずversion3とversion4については皆さんの反感がかなり強いので、このバージョンの言語仕様の策定・実装の提供は一時的に凍結いたします。

今後皆さんの要望があれば凍結が解除されると思いますが、これじゃそんなことはないだろうな(;´д`)

623:デフォルトの名無しさん
09/08/16 19:21:24
>>622
頑張れ。技評の"要求を仕様化する技術・表現する技術"って本読んでおくと良いよ。プロセスの問題が分かるから。


624:303 ◆pFphp4Ej4w
09/08/16 20:38:25
>>623
ちょいと図書館で探して見ます。

625:デフォルトの名無しさん
09/08/17 23:31:16
今日本屋に行ったら、コンパイラを作るって本が売ってたな。
作例がCフラットとかいうのw

626:デフォルトの名無しさん
09/08/18 00:59:12

日本屋

627:303 ◆pFphp4Ej4w
09/08/18 09:37:00
>>625
そういえば今年はコンパイラ関係の本が次から次へと出版されてますよね。ドラゴンブックとか。

今年はコンパイラ本の当たり年なんですかね。

628:デフォルトの名無しさん
09/08/20 09:44:14
ネーミング(仮)のSINCLなんだけど
Common Lisp と間違えそう

629:デフォルトの名無しさん
09/08/20 10:10:34
じゃあ間違えないようにCommonLisp処理系作ればいいよ

630:303 ◆pFphp4Ej4w
09/08/20 18:27:48
>>628
…いいかげん仮称じゃなくて正式名称をきめたいですねぇ…

631:デフォルトの名無しさん
09/08/20 18:54:14
もう、面倒だから"303c"でいいよ。

632:303 ◆pFphp4Ej4w
09/08/20 19:33:48
>>631
いやいや。ここの人たちのアドバイスがなきゃ私は言語仕様作れませんし。
それじゃ株式会社ジェーンの二の舞に…

633:デフォルトの名無しさん
09/08/20 21:30:20
どうせ作る気もないんだろ。
303c、TB303みたいでかっこいいじゃん。


634:デフォルトの名無しさん
09/08/21 00:12:55
CB-303とかパチモン臭強くした方がいい。

さて、Bは何の略にしようか。


635:デフォルトの名無しさん
09/08/21 06:19:03
C委員長

636:デフォルトの名無しさん
09/08/21 08:42:07
名前って結構悩むよね
実務で変数とか関数にhogeとかつけてるとすぐにクレームが^^;

スレ主が決めちゃえばいいと思うんだけど「みんなで決めよう」ってことなら
開発用のコードネームをとりあえず決めちゃえばいいんじゃない?
SINCLでもいいと思うよ

仕様が決まり出してから正式名を決めれば?(アンケートとかで)

303好きな人が多いのでリアルタイム特化型にしたら
CR-303とかパチンコみたいな名前になるかも

637:303 ◆pFphp4Ej4w
09/08/21 11:46:22
>>636
そうします。

638:デフォルトの名無しさん
09/08/21 12:15:27
高校1年生でコンパイラ作れるってすごいな。
C言語のトランスレータだったら最適化フェーズはないんだろうけど。
それでもすごい。
コンパイラ構成論の勉強したの?
名前は美緒さんとかw

639:デフォルトの名無しさん
09/08/21 12:33:59
>CR-303
ボタン電池みたいだな。
だがそれがいい。

640:デフォルトの名無しさん
09/08/22 04:23:40
名前は
コンパ イラ

641:デフォルトの名無しさん
09/08/22 05:56:14
>>639
30mm x 3mmですね。わかります

642:デフォルトの名無しさん
09/08/23 04:13:39
Cの当時からlambdaが導入されてりゃC++ももっと違う言語になってたろうな。

Bool bool(a==b);
bool.
 True([](){puts("Equal")}).
 False([](){puts("Not Equal")});

こんなSmalltalkライクな構文も書ける訳だし。

643:デフォルトの名無しさん
09/08/23 09:40:35
生存期間の問題がある

644:デフォルトの名無しさん
09/08/23 10:58:31
クロージャをコピー不可にすれば大丈夫じゃね?

645:デフォルトの名無しさん
09/08/23 11:23:59
↑クロージャへの参照(ポインタ)のコピーだった。
関数の引数として渡すのはOK

646:デフォルトの名無しさん
09/08/23 23:24:43
マルチスレッドですぐ破綻するクロージャなんてない方がまし

647:デフォルトの名無しさん
09/08/24 02:33:56
そういう使い方ならスタティックやヒープに置けば問題ない。
要するに置き場所を選べるように作ればいい。

648:デフォルトの名無しさん
09/08/24 17:25:04
>>641
寧ろそれは、3mmΦ*0.3mm厚じゃないのか?
例えばCR-2016は20mmΦ*1.6mm厚だぞ。

649:デフォルトの名無しさん
09/08/27 23:00:23
あんま関係なさそうな話だけど、

s = hogehoge(s);

みたいなのを、

s *= hogehoge;

とかみたいに書けるってのはどうだろう。記号はともかくとして。
++がアリなら、こういうのもアリな気はする。

他の言語だとどんな文法使うんだろ。こういうのって。

650:デフォルトの名無しさん
09/08/27 23:11:53
>>649
それ少しも複雑性が減ってるように思えないんだけど・・・
しかも代入演算子の書き方と少しもシンメトリックじゃないってどういうことだ

651:デフォルトの名無しさん
09/08/27 23:29:16
a = a - b;
a = b - a;
代入演算子を使えるのは前者のみ

652:デフォルトの名無しさん
09/08/28 00:39:57
>>650
perlの正規表現みたいな感覚でもいいんだけど、
そういうのにふさわしい記号が思いつかない。

653:デフォルトの名無しさん
09/08/28 01:09:52
むしろ
s.hogehoge
ですな
追加のような単純な処理ではなく、
全体に変更を加えるような意図なら
演算子化は避けるべき

654:デフォルトの名無しさん
09/08/28 04:57:22
>>649
hogehoge(&s);

655:デフォルトの名無しさん
09/09/02 22:12:36
興味あるので落ちないように上げとく
自分としては強力なマクロが欲しい
m4ぐらいの…

あまり無理せずにマターリと!

656:303 ◆pFphp4Ej4w
09/09/02 22:48:59
>>655
どうもありがとうございます。自分なりにリファレンス書いたり実装をちょびちょび書いているのですが…もうすぐ学校の文化祭でして(10月)しばらく手がつけられなさそうです。

657:デフォルトの名無しさん
09/09/02 23:04:07
高校生がC言語ライクなコンパイラ作れるってすげーな。
理論は独学?

658:デフォルトの名無しさん
09/09/02 23:09:20
高校生なの?凄いな最低でも大学生かと思ってたわ

659:デフォルトの名無しさん
09/09/03 00:00:22
>>657
いやいやただのトランスレーターですよ。
まぁそのうちコンパイラも…

660:303 ◆pFphp4Ej4w
09/09/03 00:04:27
>>657
いやいや、ただのトランスレーターですよ。
まぁそのうちコンパイラも…
ただ最適化とかいれるとなると私の手におえなくなりますが…

第一こんなアホな発言ばっかりしてるのに大学生と思われてたってのは…何?

661:303 ◆pFphp4Ej4w
09/09/03 00:16:02
だぁっ!
二重投稿してしまった…

662:デフォルトの名無しさん
09/09/03 06:21:45
>>303 は大学受験に落ちる


663:デフォルトの名無しさん
09/09/03 16:59:17
これが303の人生で最大の偉業になるかもな

664:デフォルトの名無しさん
09/09/05 02:03:54
トランスレータでも構文解析の知識はいるだろうに。

665:デフォルトの名無しさん
09/09/05 13:16:04
その辺もすべて385にやらせようとしてたみたいだが・・・
技術者より経営者に向いてるかもよ!

666:デフォルトの名無しさん
09/09/06 07:26:28
ソースはどこで見れんの?

667:デフォルトの名無しさん
09/09/06 07:37:40
俺も以前C言語作ろうとしたんだけど
C言語て記号いろいろ使ってて、作るのめんどくなって途中で投げたんだ
printfと、if,elseまで作った時点でかなりソースが膨らんでてやる気がな・・・・
303がどこまで作れたのか興味深い

668:303 ◆pFphp4Ej4w
09/09/06 09:00:21
>>664
まぁそうですが、最適化と実行ファイル生成とかがないだけ楽です。

>>666
URLリンク(github.com)

で385氏がOCamlで書いたものが見れます…と思ったら無くなってますね…
とりあえずソースは手元にあるのでどこかうpろだ紹介してくださればそこにあげます。

>>667
C系の言語って他のプログラミング言語より圧倒的に演算子が多いですからね…

669:303 ◆pFphp4Ej4w
09/09/06 09:11:00
あ。h抜き忘れた。

670:デフォルトの名無しさん
09/09/10 10:20:15
>>668
That page doesn't exist!ってなってる

671:デフォルトの名無しさん
09/09/10 20:45:51
>>668

>で385氏がOCamlで書いたものが見れます…と思ったら無くなってますね…
>とりあえずソースは手元にあるのでどこかうpろだ紹介してくださればそこにあげます。

672:デフォルトの名無しさん
09/09/10 22:23:36
>>668
Wikiを作ってWikisourceみたいな使い方すればリファレンスも書けて一石二鳥

673:デフォルトの名無しさん
09/09/10 22:30:09
俺はもうこれで良いや。特にクロージャの追加の所。

URLリンク(www.open-std.org)

674:デフォルトの名無しさん
09/09/12 00:28:34
>>672

っ[Wiki]
URLリンク(ja.project-sincl.wikia.com)

675:デフォルトの名無しさん
09/09/12 08:15:57
ちょwww
ああああふぃぃいぃぃぃ 多いよ^^;

676:303 ◆pFphp4Ej4w
09/09/12 14:13:26
>>674
作ってくださったのですか?ありがとうございます。

677:デフォルトの名無しさん
09/09/12 21:11:08
atwikiとかのが無難だろ
ああそうか、わざわざ変な道を行くのがこのスレの趣旨でしたね

678:デフォルトの名無しさん
09/09/12 21:40:53
ウィキペディアがいろいろと普及? したので、
MediaWikiで書きたいという需要が最近増えてるが、
atwikiだとMediaWiki互換機能はかなりあやしい。

679:674
09/09/12 23:05:18
>>677
atwikiだとソースコードモードで10000行200000バイトまでしかかけないのでMediaWikiかなと。


680:デフォルトの名無しさん
09/09/13 03:42:41
どちらかというとpukiwiki系の方が好きだな

681:デフォルトの名無しさん
09/09/13 08:37:13
Pukiwiki使っているところはページの階層構造が分かりにくいことが多いと自分は感じる。
管理のしっかりしているサイトなら気にならないんだけど。

MediaWikiはカテゴリによって適当にやってもそれなりに階層構造ができているように見えるのがいい。
WikipediaやChakuWikiのような誰でも編集できるところはMediaWikiがあっていると思う。

682:デフォルトの名無しさん
09/09/14 22:48:09
gccを適当に拡張して本家にマージさせたら楽そうだな
アレ以上何を拡張するんだか知らんが

683:デフォルトの名無しさん
09/09/16 22:30:30
gccフロントエンドは結構な鬼門のイメージがあるがな

684:デフォルトの名無しさん
09/09/17 00:51:42
え、何?
LLVM のフロントエンドを作りたいの?

685:303 ◆pFphp4Ej4w
09/09/18 21:11:39
>>625にあった「ふつうのコンパイラをつくろう」を学校のメディアセンター(図書室)に注文しました。
いずれはコンパイラを作ることになるので今のうちに読んでおこうかと。

686:デフォルトの名無しさん
09/09/18 21:40:50
コンパイラまで作る気あるんだ

687:デフォルトの名無しさん
09/09/19 01:59:07
よくある、関数で最初に1回だけ実行される部分を何かの書き方にするのはどうか。

static int first = 1;
if(first){ ほげほげ first = 0; }

みたいなのを、

first{
ほげほげ
}

みたいに書けるとか。

688:デフォルトの名無しさん
09/09/19 02:05:11
じゃあ2回だけ実行されるのも追加しないとな

689:デフォルトの名無しさん
09/09/19 02:33:55
first よりも once の方が良いかもね。

static int once = 1;
while(once--) { ikkaidake() };

690:デフォルトの名無しさん
09/09/19 07:20:42
なかなか便利そうですね

int hogehoge() {
何かの処理
once { huga1 }
何かの処理
once { huga2 }
}

みたいに複数書けるとさらにうれしいかも

691:ぅゅ ◆e6.oHu1j.o
09/09/19 14:04:30
#define Ikkai \
static int ikkai; \
if( !( ikkai || ikkai++ ) )

defineでやれるだろカス
てかこれ、バグの元になるってのわかってんの?

初心者はそこらじゅうに
static int first = 1;
if(first){ ほげほげ first = 0; }
こんなソース書きまくるが
それはさっさとやめさせてまともな設計を考えさせるべき

692:デフォルトの名無しさん
09/09/19 14:08:34
まともな設計をするときは、C++でやるお(^q^)

693:ぅゅ ◆e6.oHu1j.o
09/09/19 14:51:08
きーてねーよカス

694:デフォルトの名無しさん
09/09/19 15:01:16
>>687-690の構文は議論の余地があると思うけど、基本的にはあるべきと感じる。
>>691のマクロもマルチスレッド時を考慮していないように見えるのが残念。

Javaの静的初期化ブロック、C#の静的コンストラクタ、VistaのInitOnceExecuteOnceなど、
マルチスレッドプログラムで1度しか実行されない保証というのは需要がある。
だから、そのための構文を作るアイディアは悪くないと思う。
というより、上に例を挙げたように正直に言って珍しくもなんともない。
あとは、どういう構文にするか。

695:デフォルトの名無しさん
09/09/19 15:55:36
>>689は構文というか、現行のCで使える方法だよ。

696:ぅゅ ◆e6.oHu1j.o
09/09/19 19:01:39
>>694
>マルチスレッド時を考慮していないように見えるのが残念。
は?
この流れでマルチスレッドって発想は無かった

俺はもう一種類この手のマクロを持ってる
それはこのマクロで宣言されるstatic変数のアドレスを保存していって
初期化したくなったら、初期化関数を呼んで、またブロックを1回だけ通るようにするという仕組み
俺はマルチスレッドプログラムは組まないけど
Aスレッドが1個しか走らないプログラムなら
そのスレッドの終了時に初期化させればいいし
Aスレッドが同時にいくつも走るならスレッド作成時に識別子を与えれば普通に判定できるんじゃね

697:デフォルトの名無しさん
09/09/20 05:38:17
>>691
バグの元になりそうなのでマクロじゃなく構文に入れようとしてるんだろ?

698:ぅゅ ◆e6.oHu1j.o
09/09/20 07:35:42
そうなんですか?
じゃあ一つ385、303の書いてるソースもっていたら
static int first = 1;
if(first){ ほげほげ first = 0; }
こういう処理やってる場所を探し出してもらえませんか
ソース何処にあるか知らないけど
コンパイラとか作ってるならソース見なくても普通は無いと確信できる

699:ぅゅ ◆e6.oHu1j.o
09/09/20 07:38:08
スレ汚したな
自分の好きなように作ればいいよ
その処理は悪用されると怖いってだけで自分も極まれに使う事はある

700:デフォルトの名無しさん
09/09/20 09:48:34
なんか言っていることがよく解らないんだが…

トランスレータなりコンパイラなりを作ろうとしているんでバグが発生しやすいような
こういう処理やよく書く処理をこういう風に展開して欲しいとみんな言ってるのだと思う

701:デフォルトの名無しさん
09/09/20 12:40:11
>>698の意図がよく分からん。彼は何がしたかったんだろうか。

702:デフォルトの名無しさん
09/09/20 13:28:21
つーか、マルチスレッドはともかく、こんなの超安全な部類だと思うが。
それよりも自称プロがなんかわざわざ難しく見えるコード書いて俺SUGEEしてる方が危険w

703:デフォルトの名無しさん
09/09/20 13:34:04
トランスレーター系はバグが出たらかなりデバッグしにくい。
トランスレーターの出力をある程度理解している人間じゃないと使えないから
結局統合される運命にある。
だからそのままリリースしておしまいってことにはならない。
もしそうなら開発者のオナニ-でしかいない。
LISPはその辺うまくできている。

704:デフォルトの名無しさん
09/09/20 13:52:22
Lisp がどうかはさておき、そんな当たり前の話を上から目線で話されてもなあ…

705:デフォルトの名無しさん
09/09/20 13:55:56
ついでに言えば、CL だろうと Scheme だろうとマクロにバグがあったら
デバッグはそれなりに面倒だと思うけど…

706:デフォルトの名無しさん
09/09/20 23:37:23
関数で最初に1回だけ実行される
ってのがそもそも設計間違ってる可能性が高いと思うんだが。
関数に状態持たせるなよ。

707:デフォルトの名無しさん
09/09/20 23:53:57
つまり君は、クロージャを採用している言語は設計間違ってる可能性が高いと思う訳か。
おいそれと JavaScript も書けんな…

708:デフォルトの名無しさん
09/09/21 00:09:28
新C言語だろ?
クロージャ採用は間違ってる可能性が高いと俺も思う

709:デフォルトの名無しさん
09/09/21 00:14:18
世の流れに棹さすのも悪くないと思うけど、理由くらい言って行こうや。

710:デフォルトの名無しさん
09/09/21 00:18:04
>>706
そうだよ。
ただ、インスタンス的に関数を使うやり方なだけだからな。

711:デフォルトの名無しさん
09/09/21 00:18:28
>>707
はぁ?
クロージャはモデルが違うだろ。
クロージャオブジェクトが関数と環境を持ってるんだよ。
言語スレの住人だったらメタモデルぐらい考えてみような。

712:デフォルトの名無しさん
09/09/21 00:18:34
>>708
>新C言語だろ?

つうか Blocks 知らんのか…

713:デフォルトの名無しさん
09/09/21 00:21:34
>>711
君は自分で自分の言ってる事が理解出来てるのかな?

714:デフォルトの名無しさん
09/09/21 00:29:02
>>713
さぁね。
環境という言い方でわかる人はわかるはずだけどね。

715:デフォルトの名無しさん
09/09/21 00:35:12
つまり君は『状態』と『環境』の違いを知っていると言う訳だ?

716:デフォルトの名無しさん
09/09/21 00:37:36
つーか、クロージャの場合はそういう話ではないと思うが。
ジェネレータの話か?

717:デフォルトの名無しさん
09/09/21 00:38:34
何かこの会話には、暫く前にデザパタが流行った時と同じ空しさを感じるな…

>>716
>>713

718:デフォルトの名無しさん
09/09/21 00:50:41
そうだね。
>>707の突っ込みが的外れなわけで。
それを認めるのがいやで言葉尻をとらえようと必死になってる。
そういう構図。

719:デフォルトの名無しさん
09/09/21 00:55:02
さぁ盛り上がって参りましたw

720:デフォルトの名無しさん
09/09/21 04:44:27
もっと中身の無い口先だけの議論を見たかったのに~

721:デフォルトの名無しさん
09/09/21 09:35:19
いいスレですよね~
スキルの高そうな人たちがそれぞれの信念のもとに突っ込んできますね~

書き込んでる人全員の意見を考慮し出したら前へ進まないので
作ろうとしている人たちが採用/不採用を決めればいいと思います

自分の意見としては
a:いろんなOS/アーキテクチャで使用できる
b:既存のC/C++のコードを最小限の変更(変更なしが望ましい)で流用できる
が最低限必要かと思います

a,bが満たされないとオナニー言語で終わってしまうかもしれません
逆に満たされると「スーパーコンピュータでも使えます」みたいな~

C言語へのトランスレータが良いかも(異議は認める)

722:デフォルトの名無しさん
09/09/21 12:19:28
関数内スコープな関数が有用か否かって問題でそ

723:303 ◆pFphp4Ej4w
09/09/21 14:02:15
なんかとてもめんどくさい流れになってますね…
>>708
クロージャ採用の話は凍結になったはずですが。

>>721
C言語へのトランスレーターである限りではどっちも満たせるんじゃないかと。

724:デフォルトの名無しさん
09/09/21 15:56:55
303が調子に乗ってる
なんかむかつく!

725:デフォルトの名無しさん
09/09/22 11:31:44
○既存言語の一部を仕様変更する際に、トランスレータは有効である (>>721)
×トランスレータは、既存言語の一部を仕様変更するために作成される (>>723)

303 の用語の使い方に、揚げ足取り。

726:303 ◆pFphp4Ej4w
09/09/23 20:07:43
wikiに385氏の実装のソースコードあげました。
と言ってもPDFファイルとODTファイルですが…

727:デフォルトの名無しさん
09/09/24 01:40:59
変更したい症候群の方は一度LISPを使ってみるべき

728:デフォルトの名無しさん
09/09/25 22:56:07
LISPで下痢が治りました

729:デフォルトの名無しさん
09/09/26 07:41:06
gelips

730:デフォルトの名無しさん
09/09/27 07:58:11
まだかなあ

731:デフォルトの名無しさん
09/09/27 11:52:04
俺的には
ジェネリックとオーバーロードと名前空間を足したCがあれば満足
クラスとかはいらんぽ
あとは型安全性の強化

732:デフォルトの名無しさん
09/09/28 01:03:07
>>731
オーバーロードの機能をよく吟味すると、C++と同じ型ロジックが必要だとわかるよ
つまりC++使えって事

733:デフォルトの名無しさん
09/09/28 03:06:59
C++を使うならJavaかDの方がいいな

734:デフォルトの名無しさん
09/09/28 03:13:05
このスレ的にGC言語はお呼びでないだろ

735:デフォルトの名無しさん
09/09/28 10:57:46
つまりDでいいと

736:デフォルトの名無しさん
09/09/28 11:03:47
そもそもC++なんかでいいなら新C言語なんて発想はない訳で…

737:デフォルトの名無しさん
09/09/28 20:36:41
>>1
現状報告をして下さい

738:303 ◆pFphp4Ej4w
09/09/28 21:08:42
>>731
ジェネリックはテンプレートでどうにかなるかと。
でもC++みたいなテンプレートだと時間かかるんだよなぁ…

739:デフォルトの名無しさん
09/09/28 23:05:11
>>1は逃げたの?

740:デフォルトの名無しさん
09/09/29 01:56:36
1は最初からいねーだろw

741:デフォルトの名無しさん
09/10/01 18:56:57
>>739
実現できそうになるのに2年かかるから>>1はいなくなったと考えるのが普通。

742:デフォルトの名無しさん
09/10/13 01:00:13
っ[age]

743:デフォルトの名無しさん
09/10/13 04:34:45
>>738
それはC++の実装というか仕様が糞なだけ。

744:303 ◆pFphp4Ej4w
09/10/18 02:13:02
保守あげ。


#年内にリリース出来たらいいなと希望的憶測でものを言ってみる。

745:デフォルトの名無しさん
09/10/18 02:25:47
tamarimahenna

746:デフォルトの名無しさん
09/10/18 04:46:05
C++、Java、C#の類は新C言語じゃねーの?シンタックス的に。
てかC99とC++のextern Cってどの程度同居できるの?

747:デフォルトの名無しさん
09/10/19 00:31:01
extern "C"は通常、名前修飾に関する扱いがCと同じになるというだけだが、
名前修飾がC99とそれ以前と異なる処理系なんて見たことないぞ。

748:デフォルトの名無しさん
09/10/20 18:09:27
名前修飾?
@マークつきDLL関数ってCだとLoadLibraly使わないといけないけど
Basicだとそのまんま@マークつきで関数定義できちゃうよね。

そういう話じゃなくて?

749:デフォルトの名無しさん
09/10/20 22:22:48
Windows以外も触っとけよ

750:デフォルトの名無しさん
09/11/03 17:40:08
ほしゅ

751:デフォルトの名無しさん
09/11/04 21:33:06
C + Smalltalk -> Objective-C
みたいなかんじで
C + CLOS -> 新C を妄想する

752:303 ◆pFphp4Ej4w
09/11/04 22:44:53
どうも。303です。
githubにあった385氏の実装のコード置き場が復活していました。
(落ちる前にわしがフォローしていたから?)

URLリンク(github.com)

と言うわけで、385氏の実装をビルドする際はgithubからソースを取ってきてビルドすることを強く推奨します。
ではでは。

753:303 ◆pFphp4Ej4w
09/11/12 07:03:26
なんかGoなんてのが出てきたみたいですね…。
利点:
コンパイルが速い
GC付き
並列処理を意識した設計
欠点:
パフォーマンスはCと比べ10%程悪い?(GCを採用しているからか?)
テンプレートがない
GCがある

構文はPascalとCを足して2で割ったような感じですね。D言語のスレで「将来的にDと競合するのでは?」なんて議論されてますが、むしろSINCLと競合するような気がしてなりません。被害妄想だと言われればそれまでですが。(まだ実装さえ出してないし)

Googleは何を目指してるんですかね…

…というわけで何が言いたいのかわからない雑文でした。

ついでにあげます。

754:デフォルトの名無しさん
09/11/12 08:38:59
Cには似てない
Pascal+Javascriptに見える

755:303 ◆pFphp4Ej4w
09/11/14 10:07:51
GoとかD言語のスレは盛り上がっているのにここは全然盛り上がらない(´;ω;`)ブワッ

756:デフォルトの名無しさん
09/11/14 10:55:39
速いは正義

757:デフォルトの名無しさん
09/11/14 11:41:57
動くものが正義だよ。

758:デフォルトの名無しさん
09/11/14 14:20:11
かわいいは正義

759:デフォルトの名無しさん
09/11/14 20:00:37
正義すぎる市議

760:デフォルトの名無しさん
09/11/15 15:44:15
SBのCEOは正義

761:デフォルトの名無しさん
09/11/16 01:14:30
孫なこと聞いてねーよ

762:デフォルトの名無しさん
09/11/16 14:37:36
孫に関わると皆損する


763:デフォルトの名無しさん
09/11/19 19:12:49
ちんぽ切ると皆損する

764:デフォルトの名無しさん
09/11/25 17:12:39
「コンパイラ・スクリプトエンジン」相談室14
スレリンク(tech板)

このスレで今「俺言語」が話題になってる。
「俺言語」の変換先言語を感がえてみては?

765:303 ◆pFphp4Ej4w
09/12/09 11:32:34
すみません、
typedef struct Hoge{
/* ... */
union piyo{
int foo;
char bar;
}u;
}Hoge;

Hoge hogege;
hogege.u.foo = 3;

って感じで共用体をを使う人ってどれくらいいます?

766:デフォルトの名無しさん
09/12/09 11:35:53
>>765
unionは普通そういう使い方はしない。
構造体内でバイト列の読み替えをするのに定義することが多い。

union piyo {
int foo;
char bar[4];
short poo[2];
};

といった感じ。

767:303 ◆pFphp4Ej4w
09/12/09 11:44:40
>>766
確かにそういう使い方もありますわな。(完璧に処理系依存で、ほめられた使い方じゃないですが)

…で今回聞きたいのはそういうことではなくて、「構造体の中で共用体を宣言してしまう」人がいるか聞いたのですが…

768:303 ◆pFphp4Ej4w
09/12/09 11:49:21
あ、間違えた。

> 「構造体の中で共用体を宣言してしまう」

じゃなくて
「構造体の中で、共用体の宣言と共用体の変数宣言を同時にやってしまう」でした…

769:デフォルトの名無しさん
09/12/09 12:41:07
>>767
おいおい。処理系依存じゃないよ。char、short、long intは
それぞれ最低取りうる値の範囲がC言語の規格書で決められているぞ。
(ただし1バイトが8ビットかどうかは処理系定義と明記してあるが)

その意味ではintと書いて4バイトとみなすのは「処理系依存」だが、それならlong intと書けばいい。

せめてJISの規格書くらいは目を通そうな。
URLリンク(www.jisc.go.jp)

>…で今回聞きたいのはそういうことではなくて、「構造体の中で共用体を宣言してしまう」人がいるか聞いたのですが…
Linuxカーネルのソースコード読んでみな。

770:303 ◆pFphp4Ej4w
09/12/09 13:08:58
>>769
> その意味ではintと書いて4バイトとみなすのは「処理系依存」だが、

あ、そういう意味です。申し訳ない。

> Linuxカーネルのソースコード読んでみな。

やっぱ結構いるんですかねぇ…

なんでこんなことを聞いたかと言うと、struct hoge型の宣言と変数宣言を同時に行うことはSINCLでは出来ないので(同様に配列、共用体なども)、
struct Hoge{
/* ... */
};<-この";"(名前忘れたorz)はなくてもいいんでないかと考えたからです。(…typedefはどうしたって?
もうstructとかの名前の扱い方C++と同じでいいと思って…
でも、こうするとこんどはstructの一括代入が不可能なCでは色々とめんどくさいのですがそれはおいといて。)

771:303 ◆pFphp4Ej4w
09/12/09 20:41:38
>>769
って配列関係ないわ。わし頭ダイジョブか?

772:303 ◆pFphp4Ej4w
09/12/09 20:42:41
>>771
しかも指定するレス番号間違えた…orz

773:デフォルトの名無しさん
09/12/12 01:12:33
セミコロン

774:デフォルトの名無しさん
09/12/23 07:39:03


775:303 ◆pFphp4Ej4w
09/12/24 13:35:54
>>774
?

776:デフォルトの名無しさん
09/12/24 14:14:21
>>774


777:デフォルトの名無しさん
09/12/24 19:44:29
結局今年も何の成果もなかったな!

778:デフォルトの名無しさん
09/12/24 22:17:17
#BEGIN
#END
みたいなのを導入してマクロをスコープ付きにしてくれ

779:303 ◆pFphp4Ej4w
09/12/25 12:42:25
>>777

そーっすね。。。申し訳ない。

>>778

#undefのとき便利そう?

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