ハチのブログ

日常系、技術系色々

comelang version 0.9.2リリース

です。

 

リファクタリングをちょっと頑張りました。無駄な構造体のフィールドや無駄なコードは消しました。完璧じゃないと思いますが。

 

だいぶソースがシンプルになったと思います。あとファイル名をわかりやすくしました。

comelangのソースがLLVMでのCコンパイラの作成の参考にでもなれば。

 

Thinkpad&Debianの方はだいぶ馴染んできました。最近だとWindowsいりませんね。Linuxで十分っていうか。ビデオチャットなどもでき、Officeがないだけで特に

僕にはWindowsは必要ありませんね。まあ、欲を言えばAndroidのアプリが使いたい

っていうか。それがChromeOSなのかもしれません。

 

僕はvi使いですけど、最近emacsって良いなって思ってます。emacs+gdb

-gオプションでコンパイルしたLinuxをソースファイルを見ながらステップ実行

できるとか。Linuxハッカー目指したいならemacsですね。

そういえば有名なプログラマーemacs多いです。まつもとゆきひろさん

Linusさん(micro emacs自分改造)、ストールマンさんにPythonの作者なども

emacsと聞きます。viって使っていて面白いですけどgdbと連携考えるとemacs

のほうが良いのかもしれませんね。

 

Rustに対するCのアドバンテージですが、Linux自体がC言語で書かれている。

Rustでも低レイヤーを書く場合は変数の寿命の保護の恩恵が得られずめんどくさい。

C言語はRustより言語仕様がシンプルであまり難しくないというところですかね。

 

C言語はメモリの保護がありませんが、-gオプションでコンパイルしてセグフォしたらgdbを実行。不正なメモリのアクセスはvalgrindで検出すれば、それほど難しくありません。特にvalgrindはあまり知られてないと思いますが、C言語ではものすごく頼もしいツールです。valgrindをするとandroidのtermuxでandroidのCライブラリの不正なメモリのアクセスなどが検出できたりします。cursesメモリリークしまくってんなぁとか。

 

第一C言語はメモリ構造が自由にかけて自由度が高く書いていて楽しいです。

クィックソート、ベクター、リスト、マップ、タプル、何でも書けます。

僕はC言語を30年やってますが、マップ、ベクター、リストは諳んじて書けます。

クィックソートは前書いたソースが必要ですが。マージソートも前書いたソースがあれば書けます。

アルゴリズムを本当に学びたいならC言語がベストだと思います。

 

もし、ベクターやリスト、マップなどをその都度書くのはめんどくさいならC++がありますがC++は複雑過ぎて使いづらいです。その点僕のcomelangはシンプルなのでC言語を学びたい人におすすめできます。comelangにはRubyのような文字列処理やC++のようなリスト、ベクター、マップがあり、3.times { puts("HELLO"); }のようなメソッドブロック。[1,2,3].map { return xsprintf("%d", it); } => [ "1", "2", "3" ]のような型推論があります。よかったら使ってみてください。サンプルコードとして僕の愛用するviクローンvinがcomelang/vinに、作りかけのPythonクローンがcomelang/yappyにあります。

感想お待ちしてます。

 

https://github.com/ab25cq/comelang