タグ

Cに関するkorinchanのブックマーク (15)

  • Why Is SQLite Coded In C

    Note: Sections 2.0 and 3.0 of this article were added in response to comments on Hacker News and Reddit. Since its inception on 2000-05-29, SQLite has been implemented in generic C. C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language at this time. The reasons why C is the best language to

  • como-lang-ng/vm/simple.c at master · analang/como-lang-ng

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    como-lang-ng/vm/simple.c at master · analang/como-lang-ng
    korinchan
    korinchan 2017/11/02
  • Nine ways to break your systems code using volatile – Embedded in Academia

    The volatile qualifier in C/C++ is a little bit like the C preprocessor: an ugly, blunt tool that is easy to misuse but that — in a very narrow set of circumstances — gets the job done.  This article will first briefly explain volatile and its history and then, through a series of examples about how not to use it, explain how to most effectively create correct systems software using volatile.  Alt

    korinchan
    korinchan 2017/06/26
  • How to C (as of 2016)

    How to C in 2016 This is a draft I wrote in early 2015 and never got around to publishing. Here’s the mostly unpolished version because it wasn’t doing anybody any good sitting in my drafts folder. The simplest change was updating year 2015 to 2016 at publication time. (Update: Many people have submitted revisions, notes, and improvements. All contributions have been incorporated throughout the pa

    korinchan
    korinchan 2016/01/09
  • GitHub - kmc-jp/c90-compiler: ISO C90のコンパイラ

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - kmc-jp/c90-compiler: ISO C90のコンパイラ
    korinchan
    korinchan 2015/11/22
  • C言語分かってなかった (I Do Not Know C) - Qiita

    Dmitri Gribenko氏によるBlog記事 "I Do Not Know C" より訳出。原文および訳文のライセンスは CC BY-SA 3.0 に従う。 この記事の目的は、皆に(とくにCプログラマに)「C言語分かってなかった」と言わせることです。 C言語の死角は思っているよりも身近にあり、よくある単純なコードですら 未定義動作(undefined behavior) を含む可能性があると示したいと思います。 記事は質問に対する回答の形をとります。全ての例示コードは別々のファイルに分かれていると考えてください。 (訳注:Qiita/Markdown表現の制約から、読中ネタバレ防止のため文章順序を変更しています。前半には質問のみを、後半には質問と回答の対を訳出しました。) 質問編 1.

    C言語分かってなかった (I Do Not Know C) - Qiita
    korinchan
    korinchan 2015/03/10
  • CC500: a tiny self-hosting C compiler

    Introduction I wrote this tiny compiler, which translates a subset of C into x86 machine code, for fun. It has no use, unless it counts as educational. I called it CC500 because I initally guessed it would take about 500 lines. It turned out to be about 600 lines even without the comments and blank lines. With the comments and blank lines it has about 750 lines. It could be made shorter, but I wan

    korinchan
    korinchan 2014/11/18
  • わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ

    Cコンパイラといえばとてつもなく複雑なプログラムというイメージがあります。ところが、このCコンパイラを(サブセットとはいえ)わずか500行ほどのCのソースコードで実現した「CC500」名付けられたプログラムが公開されています。 ソースコードは可読性を維持するためにつけられた空行やコメントを含めると、実際は750行ほどになるそうですが、それでもこれだけコンパクトなソースコードで実行可能なELFバイナリ(Linux用のバイナリ)を生成できるのは興味深いのではないでしょうか。 以下実際にLinuxでコンパイルしてみました。 自己コンパイルできる このコンパイラはC言語のサブセットで、自分自身のソースコードをコンパイルできるところがおもしろいところです。まず「cc500_1」という実行ファイルを生成します。 gcc cc500.c -o cc500_1 生成された実行ファイル「cc500_1」を使

    わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ
    korinchan
    korinchan 2014/11/18
  • Cコンパイラをスクラッチから開発してみた(日記)

    以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか

    Cコンパイラをスクラッチから開発してみた(日記)
    korinchan
    korinchan 2014/09/07
  • ポインタなしC言語の提案 - 最尤日記

    C言語はユーザからレジスタの自由を奪う事によって成立した。今度はポインタの番だ。 目標: C言語からポインタを取り除く事: これによりヌルポインタアクセス、バッファオーバラン、リークなどの問題から一切解放される。さらに多重参照(エイリアシング)の問題から解放される。またmalloc/freeなどのメモリ管理コードが不要になる事により行数が削減される。ガベージコレクション停止はない。 注意しなければならないのは、pythonrubyなどのLLやJavaでさえ、糖衣により見えにくくしただけでポインタの問題は解決できてないことだ。identity演算子、強/弱の参照の使い分け、エイリアシングによるバグ、ガベージコレクタによる停止などの形でポインタの問題はユーザを悩ませ続けている。 現在のC言語で出来る事は何でも出来る事: UNIXカーネルなども原理的には書き換え可能であること。 C言語で出来た

    ポインタなしC言語の提案 - 最尤日記
    korinchan
    korinchan 2014/08/28
  • 詳説 Cポインタ

    ポインタはC言語を習得する上での最大の壁と言われ、マスターすることが難しくポインタで挫折するプログラマも少なくありません。しかし、一方でポインタをひとたび理解すると、柔軟で効率的なプログラムを書くことができます。書はC言語のエキスパートとなるために避けては通れないポインタについて、図とコードを多用して、視覚的かつ直観的な理解を促します。また、プログラムが動作するためのメモリ構造と管理方法についても理解できるので、Cに限らず他の言語(JavaC++、C#など)のプログラマにも役立つ内容となっています。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の

    詳説 Cポインタ
    korinchan
    korinchan 2013/12/16
  • TechCrunch | Startup and Technology News

    Welcome back to TechCrunch’s Week in Review — TechCrunch’s newsletter recapping the week’s biggest news. Want it in your inbox every Saturday? Sign up here. Over the past eight years,…

    TechCrunch | Startup and Technology News
  • やさしいCプログラミング

    このは,これからプログラミングを学ぼうとする初心者のために, 基的な事柄について解説しています.書の目的は,プログラムの よい書き方(プログラミング書法またはプログラミングスタイルと 呼ばれる)を身につけるきっかけを提供することです.読者には, コンピュータやプログラミングについての特別な知識は期待して いません.書で使用するコンピュータ言語は,Cよりはプログ ラミングの教育に適したModula-2風の疑似言語です.この言語は C言語が持つ文字列を置き換える機能(マクロ定義)を使って見 かけを変えているだけで,C言語そのものです.初心者がModula-2風C を用いることの利点は, プログラムを読みやすく,文法を覚えやすくする, C言語特有のわかりにくさを緩和する, C言語特有の起こしやすいエラーを未然に防ぐ, C言語特有の落し穴をふさぐ, C言語特有の曖昧な制御構造を避ける, 等

    korinchan
    korinchan 2011/10/05
    こういうの話には聞いてたけど初めて見た。
  • studio.h - nyatla@hatena blog

    twitterのTLを流れていた、某番組で紹介されたインドのプログラム。 http://tv.dee.cc/jlab-maru/s/maru1288784023362.jpg studio.hを実装すればコンパイルできるようになるはずなので、実装してみた。 studio.h #ifndef _INC_STUDIO_H #define _INC_STUDIO_H //returnを書きかえるから先にmath.hをincludeしておく。 #define _USE_MATH_DEFINES #include <math.h> //printfを適当な点描画関数に置き換えるといいとおもうお。 #define printf(a,x,y) #define return }return 0;} const static int ZERO= #define main() int main(void){

    studio.h - nyatla@hatena blog
  • float vs. double

    唐突ですが, 下記のコードを実行したとき速いのはどちらでしょう. また演算結果はどうなると予想されますか. double calcd(int n) { double ret = 0; for (int i = 1; i < n; i++) { ret += 1 / double(i); } return ret; } float calcf(int n) { float ret = 0; for (int i = 1; i < n; i++) { ret += 1 / float(i); } return ret; } int main() { printf("calcf=%.15f\n", calcf(100000000)); printf("calcd=%.15f\n", calcd(100000000)); } float型は遅い? いえ

  • 1