タグ

programmingとProgrammingに関するtztのブックマーク (522)

  • プログラミング言語 C の新機能

    7. 文法一般 この章では C 言語に新たに加えられた指示付きの初期化子や複合リテラルといった文法や、暗黙時の宣言に関する変更といった、変更された文法について説明します。 7.1 暗黙の関数宣言 現在の C 言語の規格では、ある関数から他の関数を呼び出す時、とくにその関数のプロトタイプを宣言しなくても使用することができました。例えば stdio.h を読み込まずに、printf を使用するといったことです。しかし、今度の C 言語ではそのような場合、その関数の呼び出しは規格上未定義の動作となります。ただ実際には多くの処理系では警告を出してコンパイルするよう実装されることでしょう。この辺の機能は C++ に近くなっていますね。 7.2 宣言時の暗黙の型 手続き型言語では、一般的に変数や関数などを宣言して使用する必要があります。もちろん C 言語も例外ではありません。しかし C 言語では特に型

    tzt
    tzt 2010/02/05
    restrict ポインタ
  • JPCERT C Secure Coding Standard 日本語版 - プリプロセッサ (PRE) (#c01)

    CERTコーディングスタンダードの利用条件/著作権・免責事項 00. はじめに 01. プリプロセッサ (PRE) 02. 宣言と初期化 (DCL) 03. 式 (EXP) 04. 整数 (INT) 05. 浮動小数点 (FLP) 06. 配列 (ARR) 07. 文字と文字列 (STR) 08. メモリ管理 (MEM) 09. 入出力 (FIO) 10. 環境 (ENV) 11. シグナル (SIG) 12. エラー処理 (ERR) 13. Application Programming Interface (API) 14. 並行性 (CON) 49. 雑則 (MSC) 50. POSIX (POS) AA. 参考情報 BB. Definitions CC. 未定義の動作 DD. 未規定の動作 XX. お問い合わせ Top へ 00はじめに このページでは、JPCERTコーディネーショ

    JPCERT C Secure Coding Standard 日本語版 - プリプロセッサ (PRE) (#c01)
  • EXP39-C. 適合しない型のポインタを使って変数にアクセスしない

    EXP39-C. 適合しない型のポインタを使って変数にアクセスしない 適合しない型のポインタ (unsigned char 以外) を通じて変数を変更すると予期せぬ結果を引き起こす可能性がある。多くの場合、これは別名付け (aliasing) の規則に違反することにより引き起こされる。C 標準 [ISO/IEC 9899:2011] セクション 6.5 のパラグラフ 7 には、オブジェクトの別名付けが行われる、または行われない状況について記載されている。 オブジェクトに格納された値に対するアクセスは,次のうちのいずれか1つの型を持つ左辺値によらなければならない。 オブジェクトの有効型と適合する型 オブジェクトの有効型と適合する型の修飾版 オブジェクトの有効型に対応する符号付き型または符号無し型 オブジェクトの有効型の修飾版に対応する符号付き型または符号無し型 メンバの中に上に列挙した型の1

    EXP39-C. 適合しない型のポインタを使って変数にアクセスしない
  • 猫科研究所 - gcc option

    MinGW上で頻繁にgccを利用しているくせにすぐに忘れるのでメモ。-D,-I,-i,-L,-l等の一般的で分かり切ってるものは書かない。随時追加。 なお、正確にはGCCのオンラインマニュアルが存在するのでそちらを参照すべき。オプションの一覧(リンク先は4.5.xのもの)もある。だが、あまりに膨大すぎるのでこの記事では「よく使用するが意味を忘れがちなオプション」に関してのメモとする。 -f(no-)strict-aliasing 厳密な別名規約(aliasing rule)に則っているとみなすか、則っていないとみなすか。intの変数に対してshort*でアクセスするような行儀の悪いコードが無いと宣言できるなら-fstrict-aliasingにする。 #include <stdio.h> int main(int argc, char* argv[]){ int x = 0; short*

    tzt
    tzt 2010/02/05
    「-Wstrict-aliasing=2とすれば曖昧なケースも警告」
  • ホワット・ア・ワンダフル・ワールド strict aliasing rule

    来週からは後期スタートだというのに,生活ペースはメチャクチャ.昨日は 17 時に起きてしまい,今日は 22 時半ごろに起きてしまった今日この頃,皆様いかがお過ごしでしたでしょうか ? まぁ,順調に 6 時間ずつズレているので,明日には元に戻るかなと. しっかし,なんで夜型の方には一瞬で 6 時間とか 12 時間とか平気でズレるのに,朝方の方には意識しないと絶対にズレないんでしょうかね ? まぁ,朝の 3 時とかにバリバリ活動しているってのは,ある意味朝型と言えなくもないような (ことはない). 僕は夜はあんまり生産的な方面にやる気が出ない人なので,夜型になると研究がさっぱり進まないと言う.いろいろ危機です. あと,Debian にテキトーなパッケージをいっぱい突っ込んでいたら,何故か日語の TTF (フォント) が表示されなくなってしまいました.そんなこんなで今はビットマップな生活なんで

  • type punning と strict aliasing - memologue

    /.JのGCC-3.4リリースの話題を追っていたら、GCC3では-O2で-fstrict-aliasingが有効だから注意せよというポスト(http://slashdot.jp/comments.pl?sid=175355&cid=537217)があった。 strict aliasing については、Radium Software Developmentさんが詳しい。これは気にしておいたほうがよさそうだ。GCCの -fstrict-aliasing の説明は次。 コンパイルされている言語に適用可能な別名規則(aliasing rule)のうち最も厳密なものをコンパイラが前提することを許します。これによって、 C(およびC++)では式の型に基く最適化を動作させることになります。例えば、ある型のオブジェクトが別の型のオブジェクトと同一アドレスに位置することは、それら2つの型がほとんど同一でない

    type punning と strict aliasing - memologue
  • OBB vs AABB - Radium Software Development

    This domain may be for sale!

  • lambdacs.com

  • 非同期シグナルとanti-pattern - memologue

    sigsafeというUNIX向けの小さなライブラリがあります。これは、「シグナルを正確に取り扱うのは非常に難しい、俺たちのライブラリを使うと随分楽になるよ」といった趣旨の、アセンブラとCで書かれたライブラリで、それなりの種類のOS、CPUがサポートされています。 このライブラリ自体の使い方、使い勝手、あるいはどう実装されているかについてはまだ把握しきれていないのですが、ドキュメントに有用な部分があるのでご紹介します。 http://www.slamb.org/projects/sigsafe/api/patternref.html です。非同期シグナルを使用したコーディングを行う際の、一種のアンチパターン集になっています。 悪い例1: signal safe ではない関数をシグナルハンドラから呼んでしまう void unsafe_sighandler_a(int signum) { pri

    非同期シグナルとanti-pattern - memologue
  • RAIIもどき in C __attribute__((cleanup(fn)))

    gccの__attribute__((cleanup(fn))) が便利すぎる件について。 C++でコードを書くときは、RAIIとか呼ばれているイディオムを使えば、ご存じの通り、ロックしたmutexを手動で開放する必要もないですし、newしたオブジェクトを手動でdeleteする必要もないです。 void Baz::boo() const { boost::mutex::scoped_lock lock(mutex); // ... return; // lock変数のデストラクタで自動開放。手動での開放不要 }でもC言語だと、当然ながら手動で開放しないといけません。複数箇所でreturnしている場合など、タイプが面倒臭すぎ。 int foo() { pthread_mutex_lock(&mutex); // ... if (hogehoge) { pthread_mutex_unlock

    RAIIもどき in C __attribute__((cleanup(fn)))
  • いやなブログ - RAII と setjmp/longjmp

    RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

  • 性能解析 - Wikipedia

    ソフトウェア工学における性能解析(せいのうかいせき)または性能分析(せいのうぶんせき)(英: performance analysis)とは、動的プログラム解析の一種であり、プログラムの実行を通して情報を収集することでプログラムの性能を解析することを言う。逆にプログラムを実行せずに行う解析を静的コード解析と呼ぶ。性能解析の目的は、実行時間やメモリ使用量を最適化するためにプログラムのどの部分を改良すべきかを決定することである(ボトルネック、アムダールの法則参照)。 プロファイラ(英: profiler)は性能解析ツールであり、プログラム実行時の各種情報を収集する。特に、関数呼び出しの頻度やそれにかかる時間を計測する。出力は記録したイベントの羅列(トレース)の場合と、観測したイベント群の統計的要約(プロファイル)の場合がある。プロファイラがデータを収集する技法は様々で、ハードウェアの割り込みを

    tzt
    tzt 2010/02/05
    ツールのリンク集が有用。
  • 2010-02-03

    この動画を見るとSafariもMailも写真管理もiPad専用になっていることがわかる。 でかくなったiPodTouchと紹介されている所が多いけど、それは評価を間違っているのではないだろうか。 店頭で実機を見るのが楽しみだ。 Java基礎文法最速マスター - いろいろ解析日記を参考に、Objective-Cのものを書いてみた。 まだまだ歴が浅いので間違っている所があるかもしれません。 [2012-08-03追記] ARCやリテラル表記など新しい記法が導入され、このページに記載されていることは多少古くなりつつあります。ただ、とっかかりとしてかるく読んでみる程度で良いと思います。今や色んな人が解説記事を出しているので、そちらも是非参考になさってください。 追記おわり 基礎 デバッガコンソール出力 Xcodeのデバッガ出力を行うにはNSLog関数を使います。 printfと同様のフォーマット文

    2010-02-03
  • プログラミング基礎文法最速マスターまとめ - ネットサービス研究室

    現在73エントリー。新たな基礎文法最速マスター記事を見つけ次第随時追加していきます。 リンク切れしているものはURLを記載しておくので、Internet Archive Wayback Machineなどで過去の履歴を閲覧してみてください。 基礎文法最速マスター ActionScript 3.0(http://blog.livedoor.jp/takaaki_bb/archives/51374100.html) awk(http://gauc.no-ip.org/awk-users-jp/blis.cgi/awk_fastest) Bash Brainf*ck(http://d.hatena.ne.jp/shunsuk/20100130/1264842323) Bシェルスクリプト(http://chaichan.web.infoseek.co.jp/src/BSH.htm) C++0x C

    プログラミング基礎文法最速マスターまとめ - ネットサービス研究室
  • PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開 : candycane development blog

    アメリカ時間の昼ごろにTwitter上が一つのニュースで埋め尽くされました。 PHPC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。 原文 http://developers.facebook.com/news.php?blog=1&story=358 Facebookにおいて重要なことのひとつが動作の速さです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。 今日、私は2年に渡って作業して

  • Java変態文法最速マスター - プログラマーの脳みそ

    Java基礎文法最速マスター - いろいろ解析日記をリスペクト。 Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 エンクロージング型内部classの作成 外部classのインスタンスに紐付くインスタンスを生成します。外部クラスのインスタンス - 内部クラスのインスタンス間に、クラス - インスタンスのような関係を持たせることができます。 public class Outer { public class Inner { } } というようなクラスを作った場合、 Outer o = new Outer(); Inner i = o.new Inner(); となります。new

    Java変態文法最速マスター - プログラマーの脳みそ
  • ソースコード、読んでいますか

    他人の書いたソースコードを読むことはプログラミング能力の向上に役立つ、と聞いたことがある人は多いだろう。例えば、Rubyの開発者として有名なまつもとゆきひろ氏は、自らが監訳者の一人である書籍「Code Reading -- オープンソースから学ぶソフトウェア開発技法」(毎日コミュニケーションズ発行)の序文で、「ソースコードこそソフトウェアのすべての知識の源」であり、「効率よくソースコードを読むことは、効率よく自分の能力を向上させることにつながります」と書いている。 一方で、ソースコードを読むための環境も整った。オープンソースが一般化することで、入手できるソースコードは質、量ともに、一昔前とは比べ物にならないほど充実した。 しかし、自らのスキルアップを目指して、実際にオープンソースなどのコードを読んでいる人は、さほど多くないだろう。他人の書いたソースコードを読むのは、既存プログラムの保守や追

    ソースコード、読んでいますか
  • すぐに使えるソースコードの読み方を指南 - 吉岡メソッド追記

    奈良先端科学技術大学院大学は1月30日、東京・三田のキャンパスイノベーションセンターで「ソースコードリーディングワークショップ2010」を開催した。バージョン1.0と2.0のソースコードを用意し、その差分(パッチ)を適用して問題がないか否かを参加者全員に判断してもらうハンズオンのほか、楽天の吉岡弘隆氏、電通国際情報サービスのひがやすを氏、日IBMの細川宣啓氏らを招き、講演やパネルディスカッションを実施した。当日は定員の60人全員が参加し、スキルアップに対する強い意欲がうかがえた。 コードレビューのベンチマークを作成し、工数の見積もり精度を向上 今回のワークショップの目的は、「開発関係者同士で同じソースコードを読み、その感想を述べ合うことで交流の機会を作ること」(森崎氏)。当日は簡単な趣旨説明の後、2時間強に及ぶハンズオンが行われたが、その後の参加者同士によるグループディスカッションではど

    すぐに使えるソースコードの読み方を指南 - 吉岡メソッド追記
  • Scheme プログラミング入門

    back (技術評論社 Software Design誌 2000年 7月号 に掲載された、「Scheme への招待 〜 GNU標準のスクリプト言語入門」の 記事を加筆修正したものです *1) はじめに みなさんは Lisp をご存じでしょうか。Lisp は 1950年代後半*2に John McCarthy によって 開発されたプログラミング言語で、 おもに記号処理などの分野で今も利用されています。 Scheme は Lisp から派生した言語のひとつで、 Guy Lewis Steele Jr. および Gerald Jay Sussman によって 1975年に開発されました。Scheme はよく 「Lisp の方言」などと呼ばれますが、Lisp よりも簡単な仕様 で、それでいて複雑なプログラミングが可能なように設計されています。 どのプログラミング言語にも長所と短所がありますが、S

  • はてな的プログラミング言語人気ランキング - Cube Lilac

    この記事で更新していた「基礎文法最速マスター」のまとめは,現在,プログラミング言語「基礎文法最速マスター」ランキング にて更新しています.この記事の更新は停止していますので,最新の結果はそちらを参照下さい. ここ最近,「○○○ 基礎文法最速マスター」と言う記事が流行っていたようです.この各記事の被ブクマ数を見ていると,プログラミング言語毎の(はてな界隈での)人気がよく表れているなーと思ったので被ブクマ数の多い順に列挙してみました*1.尚,調査する際には Perl基礎文法最速マスター - Perl入門〜サンプルコードによるPerl入門〜 の「このエントリーを含むエントリー」と 基礎文法最速マスターぞくぞくキターーー! - 燈明日記 を利用しました. JavaScript 基礎文法最速マスター - なんとなく日記 PHP 基礎文法最速マスター - Shin x blog Perl 基礎文法最速

    はてな的プログラミング言語人気ランキング - Cube Lilac