タグ

cに関するemergentのブックマーク (92)

  • 表紙 - 本物のC

    このサイトは「物の C 言語」について学習する機会の提供を目的としています。 「物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

    emergent
    emergent 2022/03/02
  • Cello - もはや別物、C言語で高レベルプログラミングを実現するライブラリ | ソフトアンテナ

    C言語は機械語やアセンブリ言語といった低水準言語に近く、最近流行のPythonRubyといった高水準言語で利用できるさまざまな便利な機能を使用することができません。例えば文字列にも専用の型が存在せず、さまざまな落とし穴に注意しつつ慎重に使用する必要があるのです。 日紹介する「Cello」は、このなにかと不便なC言語で、高レベルプログラミングを実現するユニークなライブラリです。 Cellは以下の機能を実現するC言語用ライブラリです。 一般的なデータ構造 ポリモーフィック関数 インターフェイス/タイプクラス コンストラクタとデストラクタ オプションのガベージコレクション 例外 リフレクション 作者のDaniel Holden氏は、Ubisoft Montrealのアニメーション研究員で、C言語の可能性を追求するためのファンプロジェクトとしてCelloの開発を始めたと開発の動機を説明していま

    Cello - もはや別物、C言語で高レベルプログラミングを実現するライブラリ | ソフトアンテナ
    emergent
    emergent 2019/04/19
  • Cello • High Level C

    #include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage

    emergent
    emergent 2019/04/18
    おもろい
  • サウンドプログラミング入門

    サウンドプログラミング入門 ■ サウンドプログラミング入門 - 音響合成の基とC言語による実装 - 青木 直史 著 A5判 288ページ 定価3,129円(税込) ISBN-10: 4774155225 ISBN-13: 978-4774155227 技術評論社 2013年3月10日初版第1刷発行 2017年9月16日初版第2刷発行 2020年11月17日初版第3刷発行 ■ リンク ◆ 技術評論社 ◆ Amazon ◆ サウンド処理のプログラミング ■ 目次 はじめに 書の構成 第1章 サウンドプログラミングの基礎知識 1.1 サンプリング 1.2 標化 1.3 量子化 1.4 メディアの規格 1.5 WAVEファイル 1.6 C言語によるサウンドプログラミング コラム1 サウンドレコーダー 第2章 サイン波を鳴らしてみよう 2.1 サイン波 2.2 波形と周波数特性 2.3 12平

  • ソート/qsortを使って文字列のポインタのソートを行う - C言語のお勉強

    qsortを使って文字列群をソートする † 以下のサンプルソースにより文字列のポインタ配列が示す文字列をソートすることができます。 qsort_str.c (改行コードLF) #include <stdio.h> #include <stdlib.h> int string_compar(const void *a, const void *b) { return(strcmp(*(char**)a, *(char**)b)); } int main(void) { int i; char *data[5]; data[0] = "debian"; data[1] = "redhat"; data[2] = "ubuntu"; data[3] = "centos"; data[4] = "linuxmint"; printf("===== BEFORE =====\n"); for(i=0

    emergent
    emergent 2019/01/03
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

    emergent
    emergent 2018/11/01
  • 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

    emergent
    emergent 2018/05/06
    知らない間に色々お作法が変わっている…今書きかけのコードもC11の作法に則るよう修正するか。
  • はてなブログ | 無料ブログを作成しよう

    ハリイカの焼売と中華炒め ハリイカをよく、見かけるようになりましたよ。生け簀で、泳いでいたものを一杯購入しました 立派な大きな墨袋や肝は冷凍保存して 柔らかな身は季節のお豆、お野菜と合わせて中華の炒めものに。新鮮なにんにくの茎は刻み、香り高く欲そそられますね 下足はミンチにし…

    はてなブログ | 無料ブログを作成しよう
  • Splint Home Page

    Secure Programming Lint SPecifications Lint First Aid for Programmers Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint.

    emergent
    emergent 2018/05/05
  • C2 Programming Language

    Another problem solved.. (2023-09-10 by Bas vd Berg) One of the big changes between C and C2 is macros. C has them, C2 doesn't. Also every C program larger than Hello World seems to need them. Replacing macros with something else is not trivial. Macro functionality can be split up in several areas: Constants Feature Selection Generics Code reuse Constants Constant macros are easily replaced by nor

    emergent
    emergent 2018/03/14
  • かんたんCMS 「Tokyo Promenade」を使おう - mixi engineer blog

    先日、待望の長女が誕生したmikioです。あまりにかわいいから育児ブログでもつけようという魂胆ではありませんが、今回は自作のCMSであるTokyo Promenadeについて語ります。 Tokyo Promenadeとは 以前の記事で、Tokyo Cabinet(TC)を使ったCMSを作ることを予告しましたが、Tokyo Promenade(TP)がまさにそれです。TCのテーブルデータベースを使って記事を管理する軽量なコンテンツ管理システム(CMS)の実装です。例によってC言語のみで記述され、libc以外の全実装が "made by mikio" な製品です。 読み方は「東京プロムナード」です。プロムナードとは散歩道のことですが、東京メトロの広告に出てくる宮崎あおい的なキャラが写真付きブログを書いちゃうようなユースケースをイメージして名づけました。まあ実装はそんな洒落た感じとはほど遠いです

    かんたんCMS 「Tokyo Promenade」を使おう - mixi engineer blog
  • C++ランゲージクイックリファレンス

  • Home - Noppiのおぼえがき

    Noppiのおぼえがき

    emergent
    emergent 2009/10/09
    []
  • VC++2008 ExpressEdition で atlbase.h を使えるようにする - 毛のはえたようなもの

    研究で必要になったのでメモ。 VC++2008 ExpressEditionでatlbase.hは標準で入っていないようです。 調べてみるとPlatformSDKに入っているらしいのですが、別の場所で「VC++2008 ExpressEditionはPlatformSDK標準装備」とのこと。 つまり、どうやらPlatformSDKにATLに関連するものは入っていないとのことでした。 困ったのでTwitterに投げると@macchaさんから「WDKを入れるといいらしい」とご返答。 インストールすると何とかコンパイルできました!ありがとうございます #結局プログラム自体は別のDLL不足で動きませんでしたが!

    VC++2008 ExpressEdition で atlbase.h を使えるようにする - 毛のはえたようなもの
    emergent
    emergent 2009/10/09
    [][][windows]
  • 「C++ は難しいから」と言う定説 - Cube Lilac

    雑記. C++ は難しいから Java から始めた方が・・・ ここ最近(と言うか以前からずっとですが),上記のようなアドバイスを見かける機会が多かったせいか「C++ の何を指して(Java と比べて)難しいと言っているのだろう?」と言う事を単純に疑問に思うようになりました.Java 自体はほとんど使ったことないのですが*1,感想としては「どちらも大して変わらない」と言うものだったので余計に気になっています. 以下,現状で私が「これが要因かなぁ」と思っている事を列挙してみます. C++ には XXX と言うクラス/関数がない 可能性として一番高いのはこれかなぁと思っています.C++ の標準ライブラリは必要最低限のものしか(必要最低限のものさえも?)用意されていないので,他の言語と比べてライブラリの貧弱さは目立ちます.Boost を含めればかなりマシになりますが,それでもキツいかなと言う印象を

    「C++ は難しいから」と言う定説 - Cube Lilac
    emergent
    emergent 2009/07/09
    [][][blog]
  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • 技術情報 | 株式会社きじねこ

    ここでは、当サイトに来られた方々に有益と思われるさまざまな技術情報を公開していきます。サイドメニューに、どのような技術情報を公開しているかのリストが表示されていますので、ご興味をもたれたページを是非ご覧ください。 技術情報に含まれる多くのページは、コメントを投稿できるようにしています。今後の改善のための参考とさせていただきますので、ご感想、ご意見、ご指摘などを残してくださると助かります。なお、当サイトに関わりない投稿、または不適切な表現が含まれる投稿に関しては、予告なく編集または削除させていただくことがございますので、あらかじめご了承ください。 当サイトに掲載しているソースコードは、ご自由に利用していただいてかまいません。ただし、何ら保証はありませんし、当サイト掲載ソースコードの使用および使用不可によって生じたいかなる損害に対しても、弊社は責任を負いかねます。すべて自己の責任においてご利用

  • 100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog

    例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機能を駆使して、たった100行のCプログラムでWebチャットシステムを実装してみます。 古式ゆかしいWebチャットシステム 10年くらい前にCGIスクリプトでチャットシステムを作るのが流行していたのを覚えている方も多いと思います。チャットログは現在のようにデータベースサーバに転送して格納するのではなく、ローカルファイルシステム上のファイルにCSVやTSVなどのフォーマットで格納したり、同じくローカルのDBMファイルに格納するのが主流でした。2ちゃんねるの「datファイル」もそのようなデータファイルの一種と言えるでしょう。 その頃から、CGI

    100行のCプログラムでWebチャットを実装する方法 - mixi engineer blog
  • bitsliceによる超高速ビット演算 : DSAS開発者の部屋

    bitslice とは Hack the Cell '09 に参加して知った、Cellに限らず一般的に使えるビット演算の高速化手法について紹介します。 Bitslice と呼ばれる手法では、ビット順を90度回転します。言葉で説明するよりもコードを見たほうが早いので、回転させるコードの例を見てください int x[32], y[32]; // x が元のデータ、y が回転後のデータ. for (int i = 0; i < 32; ++i) { int t = 0; for (int j = 0; j < 32; ++j) t |= ((x[j] >> i) & 1) << j; // x[j] の i ビット目を y[i] = t; // y[i] の j ビット目にする } この変換をすることで、y[0] には x[0] - x[31] の最下位ビットが、 y[1] には 2番目のビット

    bitsliceによる超高速ビット演算 : DSAS開発者の部屋
  • textdrop.net - このウェブサイトは販売用です! - textdrop リソースおよび情報