タグ

Cに関するy_uukiのブックマーク (22)

  • History of the C Language

    C.markdown The Development of the C Language Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 07974 USA dmr@bell-labs.com Copyright © 1993 Association for Computing Machinery, Inc. This electronic reprint made available by the author as a courtesy. For further publication rights contact ACM or the author. This article was presented at Second History of Programming Languages conferen

    History of the C Language
  • Notes on Programming in C - bell labs - pikestyle | /sys/doc/ Documentation archive

    Rob Pike February 21, 1989 Introduction Kernighan and Plauger's The Elements of Programming Style was an important and rightly influential book.  But sometimes I feel its concise rules were taken as a cookbook approach to good style instead of the succinct expression of a philosophy they were meant to be.  If the book claims that variable names should be chosen meaningfully, doesn't it then follow

  • 『C言語、知ってるつもり? | POSTD』へのコメント

    ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

    『C言語、知ってるつもり? | POSTD』へのコメント
  • お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今回はC/C++用文字検索ライブラリmie_stringを紹介します。 mie_stringはテキストの中から複数文字のいずれかが存在する場所を高速に検索する関数を提供します。 文ではその使い方と性能を紹介します。また後半ではSIMD命令を使うときに悩ましい端数処理について詳解します。 準備 mie_stringではCのintrinsic関数(SSE4.2)を使ったものとアセンブリ言語で書いたものの二つを用意しました。 intrinsic関数を使う場合はMIE_STRING_INLINEを定義してからmie_string.hをincludeしてください。 これ以外のファイルは不要です。C/C++のどちらからも使えます。 includeするだけでつかえるので簡単ですね。 なお、コンパイルオプションにはgcc/clangなら-msse42や-mavx、Visua

    お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Rust と C言語 をコールバックで行き来する(Cブリッジが必要なVer)

    { topic = [".NET", "PowerShell", "Ubuntu", "LibreOffice", "Arduino", ...] } Rustは C FFI が強いので、はっきりしたstructとCの関数を呼び出すなんていうケースでは、それっぽいstructとexternでの関数の定義を書けば呼び出せる。コールバックもできる。 →他言語関数インターフェイス しかし、以下のようなケースではちょっとやりにくい。 必要な関数の呼び出しにCマクロが必要 opaqueなstructの下のほうのメンバにアクセスが必要 要はC言語を解釈してもらえると楽だよねという話なので、「Cでラッパー書いてautotoolsだMakefileだなんだかんだ、ようやくつなげる」となるかと思いきや、このようなCラッパーが必要な状況についてもRustには補助がある。今回はそのやりかたについて紹介する。 自

    y_uuki
    y_uuki 2016/06/20
  • 論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記

    ICSE 2016勉強会に参加するために論文リストを確認していたら、40年間のC言語のプラクティスの変遷を追った論文がおもしろかったので紹介する。 対象の論文 論文: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 論文中で使われれたデータ: https://github.com/dspinellis/unix-history-repo 要約 過去40年間のUnixのソースコードを分析し、コーディングスタイルの変化を調査した。その結果、以下のことが分かった。 新しい言語機能は価値のあるものならば採用される レジスタ割り当てをコンパイラに任せるようになる スペースをどこにいれるかなどのコードの書き方が統一されていく 分析対象 1972年以降にリリースされた計66個

    論文紹介: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973–2015 - みずぴー日記
    y_uuki
    y_uuki 2016/06/08
    おもしろい
  • GitHub - jserv/facebooc: Yet another Facebook clone written in C

    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 - jserv/facebooc: Yet another Facebook clone written in C
  • はじめての80386記号プログラミング - Articles Advent Calendar 2010 Sym

    こんにちは。id:TAKESAKOです。 そろそろ単純な「Hello, world!」に飽きてきた頃なので、フィボナッチ数列を数えるプログラムをC言語で書いてみたいと思います。 C言語でフィボナッチ数列を数える それではまず最初に、Cの文字列領域にフィボナッチ数列を数えるx86の32bit実行コードを書いて、それを無理やり関数呼び出しの形式にして実行してみたいと思います。 #include <stdio.h> char x86[] = { 0x8B, 0x4C, 0x24, 0x04, // mov ecx,[esp+0x4] 0x31, 0xC0, // xor eax,eax 0x99, // cdq 0x49, // dec ecx 0x7F, 0x04, // jg 0xe 0xE0, 0x01, // loopne 0xd 0x40, // inc eax 0xC3, // re

    はじめての80386記号プログラミング - Articles Advent Calendar 2010 Sym
    y_uuki
    y_uuki 2016/04/21
  • 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
    y_uuki
    y_uuki 2016/03/10
  • C言語の代表的なウェブリソース10選 - YAMDAS現更新履歴

    Top 10 C Language resources that will turn you into a better programmer - C and C++ Programming Resources 今更 C 言語かと言われそうだが、Linux カーネルだって、我々が利用している LL 言語の多くだってこの言語で書かれているのである。ワタシ自身は未だどの言語よりCを愛している。 以下に C 言語に関してウェブに公開されている代表的なリソースを挙げていく。さすがに更新が長らく止まっているものが多いが、それでも有用な情報源には違いない。ネタ元は Hacker News。 C Programming Notes Programming in C - UNIX System Calls and Subroutines using C. C Lesson by Chris Sawtell

    C言語の代表的なウェブリソース10選 - YAMDAS現更新履歴
    y_uuki
    y_uuki 2016/02/22
  • 2016年、C言語はどう書くべきか (後編) | POSTD

    (前編はこちら: 2016年、C言語はどう書くべきか (前編) ) (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) システム依存の型 まだ「32 bitのプラットフォームでは32 bitのlong型、64 bitのプラットフォームでは64 bitのlong型がいい」という不満があるようですね。 プラットフォームに依存する2つの異なるサイズを使うため、 故意に コードを難しくすることを考えたくなければ、システム依存の型のために long を使おうとは思わないでしょう。 この状況では、プラットフォームのためにポインタ値を保持する整数型、 intptr_t を使うべきです。 モダン32-bitプラットフォームでは、 intptr_t は int32_t です。 モダン64-bitプラットフォームでは、 intptr_t は int64_t です。 int

    2016年、C言語はどう書くべきか (後編) | POSTD
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • ポインタレス(Pointer-less)・プログラミング - Qiita

    プログラミング言語Cの特徴ってなんでしょうか?この質問に対して「ポインタ(Pointer)」を挙げる人はそれなりに居るでしょう。…たぶん居るよね。居ることにします。 他のプログラミング言語にもポインタに相当する概念(「参照(Reference)」と呼ばれることが多い)はありますが、とりわけC言語のポインタは難しいと言われること多いようです。時にはこんなコーディング規約を持ち出して、ポインタ使用が禁止されることもあるそうです。 (俺がコードを理解できないから)ポインタの使用は禁止する。 なんだか心の声が漏れ聞こえる気もしますが、そこは大人な対応で迎えましょう。ええまあ、この記事は大人げないんですけど。ルールがポインタを使うなと言うなら、私だってちゃんと従いますよ。*とか&とか危なくて使えませんよね。 準備編 ここから題。この記事では、プログラミング言語Cでポインタを一切利用しない「ポインタ

    ポインタレス(Pointer-less)・プログラミング - Qiita
    y_uuki
    y_uuki 2016/01/17
    ポインタ警察
  • mill - Go-style concurrency in C

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

  • Notes on Programming in C - Rob Pike

  • C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog

    はじめに こんにちは、Go界のシャールト・コプリーです。気がついたら最後のエントリから3ヶ月も経ってました。 Goを始めると「なんでこういう書き方になってるんだろう」とか、「そもそもなんでこういう仕様になってるんだろう」とか思うことがちらほらあると思います。これは大いにGoの作者の一人であるRob Pike氏の思想に依るところがあるのが見受けられます。彼のプログラムに対する考え方が25年前に公開され「Pike Style」として知られていますが、いまもその考え方は大きくは変わっていないと思われます。せっかくなので翻訳しました。文はC言語に関する文章ですがその質は言語に依らないものだと思います。 Notes on Programming in C (追記)25年前なのでコンパイラの動作に依存する部分(includeに関する記述)などは古い部分もありますが、プログラミングスタイルに関する部

    C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog
    y_uuki
    y_uuki 2014/12/22
  • C言語で可変長引数をとる関数を、型安全に書く方法

    C言語の可変長引数は、型安全でない(まちがった型の引数を渡してもコンパイルエラーにならない)とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数「sumf」を例にあげて説明します。 C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a

    y_uuki
    y_uuki 2014/12/13
  • Go言語からC言語の関数を呼び出す - schima.hatenablog.com

    随分久しぶりの更新です。どうにか進路は決まったらしいです。 さて、つい最近登場し注目を集めたGo言語ですが、C言語のライブラリをリンクして呼び出せる機能があり、この機能を使えば、Cで書かれたライブラリのGoラッパー(Goバインディング)が作れます。わかってしまえば比較的簡単にできますが、猛烈に苦労したので今回はその悪戦苦闘の軌跡の前半戦ぐらいを記しておきます。 なお、Goに限りませんが、英語ではいわゆるラッパーのことをFFI(Foreign Function Interface)という呼び方が良くされています。ググる際は使ってみましょう。 Goのインストール 以下のページを参照。 http://golang.jp/install 出たばかりなのにこんなに日語の情報が揃ってる言語なんてなかなか無いのではないでしょうか。Googleの圧倒的な注目度を痛感しますね。とはいえ、やはり生まれたてと

    Go言語からC言語の関数を呼び出す - schima.hatenablog.com
    y_uuki
    y_uuki 2013/07/07
  • Index

    The new location of my blog is here: https://llbit.github.io/

    y_uuki
    y_uuki 2013/05/25
  • Valgrind でメモリリークをデバッグ - tomykaira makes love with codes

    2013-01-28 Valgrind でメモリリークをデバッグ C++ C/C++ でメモリリークをデバッグするツールはいくつかある。代表的なものだと mtrace ccmalloc dmalloc LeakTracer valgrind など。 OpenCV と X11 を使ったプログラムのデバッグにおいて、 valgrind が役にたった。 使い方を他のツールのものもあわせてメモしておく。 紹介しているブログ記事や、それぞれのツールの example では通常短いプログラムを例に出している。 短いプログラムでそれなりの結果がでるのはあたりまえで、ライブラリを使って長時間動く複雑なプログラムにどれだけ対処できるかが腕のみせどころである。 今回は再現が簡単で、実行時間もせいぜい10分もとれば十分だったので、ケースとしてはそんなに難しくなかったが、規模が大きくなると解析結果を見ることすら困