Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

インクルードするだけで使えるNon-movingで正確なGCをC言語用に作りました。 行数がコメントを除いて100行に満たない非常に小さなライブラリです。 GCのアルゴリズムとしてはCheneyのコピーGCを採用しています。 通常のCheneyのコピーGCではメモリ空間のうち半分が無駄になってしまいメモリ効率が悪かったり、 GC発生時にオブジェクトが移動してしまいC言語のようなポインタを直接触れる言語との相性が悪いという欠点がありました。 今回はヒープ全体を二重連結リストとして管理することでそのような問題を解決しています。 ちなみにこれはTreadmill GCのアイデアと同じです。(が、アルゴリズム自体はTreadmill GCではありません。) APIはLinuxのlist.hに非常に近い見た目になっています。 ある構造体をgcで管理したい場合はstruct gc_head型のメンバを
_ 今、Cで開発するためのスタンダードを知るための本 例によってアスキーの鈴木さんから、本をもらった。花井さんのモダンC言語プログラミングだ。なお、似たような題の洋書があって、しかも花井さんは翻訳もするので、その本の翻訳書と勘違いされる可能性もありそうだが、完全にオリジナルだ。 Cは、Unixと共に(というか少し遅れて)生まれたということは、すでに40年以上の歴史があり、それだけの年月がたてば、COBOLなどと同じく老害言語と言われてもこれっぽっちもおかしくはない。 ところが、COBOLと異なり開発者市場がどんどん先細り(あるいは固定化)されるということはなく、むしろ増えている。それどころか最近の調査では最も利用されている(TIOBE 2013)。 一方、C++が先鞭をつけたビジネスプログラミングへのオブジェクト指向プログラミングの適用は、Java、Objective-C、C#と種類を増や
注意:邪悪で汚らわしいC形式のキャストは、いやしくもC++プログラマたる者は、使うべからず C++では、玉虫色のC形式のキャストの機能を、三つに分割した。static_cast、reinterpret_cast、const_castである。しかし、この三種のキャストでは、C形式のキャストを完全に代替できないという声をよく聞く。曰く、「どうしても書けないキャストがある」と。 それはよく聞く話だが、では実際にどのようなキャストなのかということは、誰も審らかにしない。誰も知らないキャストであれば、特に使えなくても問題ないはずだ。ただし、「C形式のキャストならばできるキャストが、新しいキャストを組み合わせてもできない。どんなキャストかは知らないが、とにかくできないと聞いている。故に新しいキャストはクソだ」などという論調で、C++の改良されたキャストを使わぬC畑の外道がしゃしゃり出てくるのも困る。そ
ソースコード // filename: dtob.c // convert decimal to binary #include <stdio.h> const int BitSize = sizeof(int) * 8; // 整数型のビットサイズを算出 void dtob(int x) { int bit = 1, i; char c[BitSize]; for (i = 0; i < BitSize; i++) { if (x & bit) c[i] = '1'; else c[i] = '0'; bit <<= 1; } // 計算結果の表示 printf("2進数: "); for ( i = BitSize - 1; i >= 0; i-- ) { putchar(c[i]); } printf("\n"); } int main() { int
このページの目的は、「独自のプログラミング言語を作る」ことです。 「プログラミング言語を作る」というのは、 やったことのない方からすれば、ずいぶん無謀な目標に見えるのかもしれません。 でも、いくつかの基礎知識さえ修得すれば、技術的には、 実はそんなに難しいものでもありません。 だったら、ひとつぐらい作ってみたいと思いませんか? なにしろプログラミング言語を作るなんて、 いかにもかっこ良さげじゃないですか。 私は作ってみたいと思いました。だから作ります。 プログラミング言語なんてもう山ほどあるのに、 今さら新しい言語なんて付け足して何をしたいんだよ! などというツッコミは入れてはいけません。 「なぜプログラミング言語なんか作るんですか?」 と聞かれたら、その答は そこにyaccがあるからだ。 で充分だろうと私は思います(yaccが何かは後述します)。 というわけで―― ただ私なんぞが新言語を
例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機能を駆使して、たった100行のCプログラムでWebチャットシステムを実装してみます。 古式ゆかしいWebチャットシステム 10年くらい前にCGIスクリプトでチャットシステムを作るのが流行していたのを覚えている方も多いと思います。チャットログは現在のようにデータベースサーバに転送して格納するのではなく、ローカルファイルシステム上のファイルにCSVやTSVなどのフォーマットで格納したり、同じくローカルのDBMファイルに格納するのが主流でした。2ちゃんねるの「datファイル」もそのようなデータファイルの一種と言えるでしょう。 その頃から、CGI
Cのソースコードに m = 195; とか n = 0xffffffff; とか書いたときの定数(右辺)の型って、なんであるかご存じでしょうか? また、C90(1990年版のISO C言語規格)とC99(1999年版のそれ)ではその型が微妙に異なったりすることがあるんですが、ご存じでしょうか? さらには、お使いのマシンがILP32であるかLP64であるかLLP64であるかによっても、微妙に型が違ってきたりするんですが、それについてはどうでしょうか? えーもちろん、普段は「Uがついてなかったらint, Uがついてたらunsigned intジャネーノ?」くらいの理解でも殆ど不自由しないわけですが、詳細な理解がないとハマるケースも稀にあります。 私はというと、上に書いたような事は、C90/99の差違を除いてはだいたい理解しているつもりだったのですが、C90/99の差異について無頓着だったがため
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
2008年12月17日12:30 カテゴリLightweight Languages いきなりCの方がよっぽど難しい さすがにJavaやPHPはなかったけど、高級言語を先に学ぶというのは今にはじまったことじゃない。 304 Not Modified: プログラミング初心者はギークから学べるのか そんな私が学んできてずっと思っていたことは、私はC言語から学び、Java、PHPと進んできたが、今の人はいきなりJavaやPHPから学ぶのである。構造化プログラミング言語からオブジェクト指向言語へと順を追うのではなく、いきなりオブジェクト指向言語を学ぶのだ。はっきりいって理解できるのか非常に疑問にう。404 Blog Not Found:初心者向け言語もいろいろComputer Scienceをきちんと教えている学校の多くは、最初の一年の前半に scheme を教えて、後半に C と assembl
kur.jp バイオリンと自転車をこよなく愛する大学院生のチラシの裏.たまーに技術的なことも書いたりするかも知れません. Home About Me Link 先日,とある一部上場企業で,「技術系新入社員の方にC言語を教える」と言う,とても楽しいイベントがありました. この講義では,Windows環境にCygwinのインストールから始まって,関数やポインタや構造体等を学び,10日かけてC言語を一通り使えるようになってもらおうと言うものです.さすがに業務として受講しているからか受講生は真剣そのもの.教えるほうにも,ついつい熱が入ります. ところで,この講義では,座学の時間よりも演習の時間をたっぷり取って,受講生に,自分の手を動かしてプログラムを組んでもらっています.具体的には,講義時 間の3分の2以上を演習と,その解説に当てています.演習時間中は,教室の中を歩き回って,どんなプログラムを書い
なぜ、私はC言語を学習することに対して躊躇してしまうのか。『C言語撃退講座 ~K&Rは置いて、俺の話を聞け』を読んで思ったことなど。(ちなみにCの経験なし) 『C言語撃退講座』「なぜ習得が困難か(p44)」の自分的要約 難しいのは言語の理解より、レジスタ・メモリ・ビットやバイトの理解。 言語仕様による開発効率の低下による難易度の上昇。(特定用途に特化した言語に比べて) 言語と(拡張)ライブラリとの区別がついてないから。 それ以前に自分的困難な(躊躇する)理由は Cはプログラムが長い やっぱりポインタ? お固い の3つだと思われる。 1.Cはプログラムが長い たとえばHellow World!でさえ(Wikipediaから引用) C # include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } Pyth
HOMMEZ(オムズ)は男性の心と身体の健康を支援し、一人でも多くの人が子供を得る幸せや男性としての喜びを享受できる社会の実現を目指しています。男性の妊活、活力にまつわる情報や商品の力で性や妊活に悩む男性が効率的に納得感を持って活動できる機会を創出します。
最近の家 #2 最近の家の話です。 1記事にするほどでもないような、こまごました話や家の雰囲気を記録するゆるいシリーズです。 過去の「最近の家」記事はこちら 最近の家 #1 - ダイナミック気晴らし 猫がいつも エレファントスツール(右の黒い椅子)の下で寝ている。かまくらみた…
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く