タグ

Cに関するakakitのブックマーク (53)

  • 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
  • Microsoft Checked C

  • Microsoft open-sources a safer version of C language

    Microsoft open-sources a safer version of C language Checked C proposes to reduce programming errors by adding safety features to the C language, but whether it'll be used outside of a lab setting is another story Microsoft has open-sourced a research project called Checked C to add new syntax and typing to the C language. The primary goal is to neutralize some hazards of C programming, such as th

    Microsoft open-sources a safer version of C language
  • Cython

    強力なライブラリを豊富に備え、科学計算から統計分析、金融工学まで利用が広がるPython。スクリプト言語とは思えない高速性の秘密が、NumPyやSciPyなどのPythonパッケージで広く使われているCythonです。CythonはPythonプログラムの実装を高速化するコンパイラであると同時に、C/C++で書かれたライブラリをPythonから利用できるようにするブリッジとしての役割も果たします。書はPythonの表現力とC/C++の速さを備えたCythonを使って、高速なシステムを効率的に開発する手法を示します。科学技術計算や統計分析の分野では恒常的にある「Pythonを高速化したい」というニーズに応える一冊です。 はじめに 1章 Cythonの基 1.1 Python、C、Cythonの比較 1.1.1 関数呼び出しのオーバーヘッド 1.1.2 ループ処理 1.1.3 算術演算 1

    Cython
  • C言語の開発者によるgoto文の使い方を対象とした実証研究の結果、「goto文は無害だと考えられる」 | スラド デベロッパー

    Edsger Dijkstra氏がgoto文の危険性を主張したのは1968年。それから50年近く経過した現在もgoto文は使われ続けているが、Dijkstra氏が懸念したようなgoto文の無制限な使用が行われているのかどうかという点や、それがバグの原因となるような有害なものなのかどうかといった点については、よくわかっていなかったという。こういった点に関する実証研究が家/.で紹介されている。 家/.「Empirical Study On How C Devs Use Goto In Practice Says "Not Harmful"」より 200万近いC言語のファイルと1万1千件を超えるプロジェクトからランダムに抽出した統計的に有効なサンプルを質的および量的に分析したところ、開発者はほとんどの場合gotoの使用を適切に制限しており、Dijkstra氏が懸念したような無制限な使用は行わ

  • コンピュータのしくみがよくわかる! C言語プログラミングなるほど実験室

    このの概要 書はC言語の実験プログラムを通して,コンピュータとプログラムのしくみを解説します。C言語のプログラムの作り方ではなく,実験プログラムを実行させた結果をもとに,コンピュータの内部でどのようなことが行われているか,プログラムがどんなしくみで処理をしているかを紐解いていきます。C言語をマスターしている人はもちろん,そうでない人でも「なるほど!」と納得できる内容です。 こんな方におすすめ プロのプログラマを目指して勉強している人 プログラミングのスキルをもっと向上させたい人 書のサンプル 書の一部ページを,PDFで確認することができます。 サンプルPDFファイル(1,080KB) 第1章 2進数に関する実験 1-1 10進数を2進数に変換する 1-2 2進数を10進数に変換する 1-3 符号ありデータと符号なしデータ 1-4 2の補数表現 1-5 異なるデータ型の代入 第2章 

    コンピュータのしくみがよくわかる! C言語プログラミングなるほど実験室
  • Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱

    二十五日半狂乱、6日目(の分...orz)の記事 Cのエラーハンドリングを毎回やるのは面倒だ! 前回も言ったが、Cではエラーハンドリングに戻り値とerrnoを用いる. それはそうと例外設計において"無視"は大罪である. だから、関数を呼び出したら戻り値は漏らさずチェックすべきだ. ということで、例えば以下のように逐一戻り値をチェックする. if(send(sockfd, buf, len, 0) < 0){ ERROR("send"); exit(1); } あぁ、面倒だ. 一体コードのどの部分が正常系の処理なのか? ほとんどエラーハンドリング*1で埋め尽くされるじゃないか. そもそもエラーハンドリング部分に書くのは毎回同じコードだし、コードの繰り返しは防ぎたい. エラー処理部分をラッピングして楽をする unpv12eの中でラッパーを被せることによってこの面倒を回避する方法を知った. in

    Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱
  • 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コンパイラをスクラッチから開発してみた(日記)
  • Pike Programming Language

    Currently we allow the following HTML tags in comments: Single tags These tags can be used alone and don't need an ending tag. <br> Defines a single line break <hr> Defines a horizontal line Matching tags These require an ending tag - e.g. <i>italic text</i> <a> Defines an anchor <b> Defines bold text <big> Defines big text <blockquote> Defines a long quotation <caption> Defines a table caption <c

  • Cに似たプログラミング言語「Pike」

    Dr.Dobb'sに掲載された記事「Pike Programming Language|Dr Dobb's」が「Pike」と呼ばれるプログラミング言語を紹介した。「Pike」はC言語風のシンタックスを採用したプログラミング言語で、オブジェクト指向機能、ガベージコレクション、強い型付け、Webプログラミングに活用できる強力な文字列編集機能、ネットワーク機能、C言語で開発された共有ライブラリを動的に利用する機能などを備えていると説明がある。 説明によると「Pike」はPerlのように文字列やテキストの処理に高度に最適化されているほか、Javaのようなポータビリティを持ち、Haskellのように関数型プログラミングやラムダ処理に適しており、Pythonのように多目的で利用できる柔軟性を持ち、Adaのような厳密な型の機能を持ち、さらに並列処理にも適しているとされている。すでに商用で利用されていて実

  • パスワードとmemset関数 - yohhoyの日記

    C言語プログラム上で高機密性情報(パスワード文字列など)を消去するケースで、memset関数の単純利用では機密情報がメモリ上に残存してしまい、セキュリティ上の脆弱性につながる可能性がある。 void secure_operation() { // パスワード文字列を取得 char passwd[128]; get_password(passwd, sizeof(passwd)); //... // メモリ上の高機密データを消去... memset(passwd, 0, sizeof(passwd)); // ?? } 上記コードではパスワード文字列が格納された変数passwdを使用後にゼロクリアしているが、コンパイル時の最適化によりmemset関数呼び出しが削除される可能性がある。この(プログラマの意図に反する)最適化は、C言語の言語仕様上も許容されるコンパイラの振る舞いとなっている。*1

    パスワードとmemset関数 - yohhoyの日記
  • The Rust Programming Language

    A language empowering everyone to build reliable and efficient software. Performance Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages. Reliability Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to elim

    The Rust Programming Language
  • 数理科学2012年3月号No.585 特集:「量子を操る」 - 拡がりゆく量子の不思議な姿 - 株式会社サイエンス社

    内容詳細 好評の「数値計算入門」の姉妹編.同書を基に,汎用性のあるC言語によるプログラムを載せ,実行例も示した.また,必要な場合にはプログラムの簡単な説明も記した.FortranのプログラムもWebで公開. 第1章 数値計算の基礎 1.1 アルゴリズム 1.2 漸化式 1.3 丸め誤差と打ち切り誤差 1.4 桁落ちと情報落ち 第1章の章末問題 第2章 非線形方程式その1 2.1 2分法 2.2 2分法の変形 2.3 ニュートン法の原理 2.4 ニュートン法の特徴 第2章の章末問題 第3章 非線形方程式その2 3.1 テイラー展開とニュートン法 3.2 連立非線形方程式 3.3 代数方程式 第3章の章末問題 第4章 連立1次方程式その1 4.1 ガウスの消去法(1) 4.2 ガウスの消去法(2) 4.3 ガウスの消去法のプログラム 4.4 掃き出し法 第4章の章末問題 第5章 連立1次方程式

    数理科学2012年3月号No.585 特集:「量子を操る」 - 拡がりゆく量子の不思議な姿 - 株式会社サイエンス社
  • 詳説 Cポインタ

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

    詳説 Cポインタ
  • トップ

    ENGINEER エンジニア ハンダ吸取器 SS-02 半田吸い取り器は基は電動式のものを使うのだが、電動式のものはスイッチ入れてから使えるようになるまで、数分かかる。かといってずっと待機させておくとなると場所もとるしコテ先も焼けるしでわずらわしい。手動式のものは力が弱いのが難点なのだが、これを試しに買ってみたらかなり強い。片面基盤ならこれで十分。 IKococater 安定化電源 直流安定化電源 0-30V 0-10A デジタル回路の制作が主になって、安定化電源のお世話になることも減ったのでずっと持っていなかったのだが、久しぶりに必要になったので購入。子供の頃はまだスイッチング電源がなくて、10Aも取れるものは巨大で高価だったものだが、今はこんなにコンパクト、安価になった。この手の廉価なものは調整ツマミが可変抵抗で経年変化でガリって使い物にならなくなるのだが、驚いたことにロータリーエン

    akakit
    akakit 2013/12/01
    「モダンC言語プログラミング」
  • 『モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用』(KADOKAWA/アスキー・メディアワークス)販売開始しました! - 達人出版会日記

    モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用【電子書籍】花井志生 KADOKAWA/アスキー・メディアワークス 発行日: 2013-10-02 対応フォーマット: PDF 詳細を見る ※現在、書をSafariでダウンロードしようとすると正常にダウンロードできない現象が発生しております。お手数ですがFirefoxやGoogle Chromeなど、他のブラウザでダウンロードいただければ幸いです。 ↑こちらは先ほど修正いたしました。ご迷惑をおかけして申し訳ございませんでした。 書は花井志生さんによる、Cを使った現代的な開発のための書籍です。花井さんは宇野るいもというペンネームで、JavaRubyなどのをたくさん書かれていますが、書は花井さん名義になっています。 書は長いサブ

    『モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用』(KADOKAWA/アスキー・メディアワークス)販売開始しました! - 達人出版会日記
    akakit
    akakit 2013/12/01
    「モダンC言語プログラミング」
  • モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用

    モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用 花井志生 アスキードワンゴ 2,464円 (2,240円+税) C言語開発をモダンにしよう! 書は、統合開発環境、デザインパターン、XP、テスト駆動開発、リファクタリング、継続的インテグレーションなどのモダンな開発スタイルを組込み開発に適用する方法を解説します。 関連サイト書の詳細ページが用意されています。 モダンC言語プログラミング - アスキードワンゴ内容紹介それではアプリケーション開発の自動化というのは、まったくの夢物語なのでしょうか? そんなことはありません。開発作業の中には「単純な作業」がいくつも残っています。紺屋の白袴とか医者の不養生といった諺を持ち出すまでもなく、アプリケーション開発の現場というのは、思いの外コンピュ

    モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用
    akakit
    akakit 2013/12/01
    「モダンC言語プログラミング」
  • 「モダンC言語プログラミング」を読んだ!C言語の組込みエンジニアのためのモダンテクニックが満載

    とてもエキサイティングなに出会い、一気に読んでしまいました。感想を書こうと思います。 モダンC言語プログラミング - 花井志生 https://amzn.to/3DKnQHT ターゲット読者層は組込み分野!# こののターゲット読者はズバリ、組込みエンジニア。ソースコードのサンプルも、ズバリ組込みな内容を扱っています。C言語を使う人=組込みの人と決めつけているよう。書籍のあちこちで、このアプローチを組込み開発で適応するためにはどうすればいいかという考察が入るのがよい。 TIOBEというプログラミング言語の統計を見ると、C言語を利用している人がプログラマの2割程度いることがわかる。自分はこのデータを初めて知ったけれども、まずこの事実をしれたことは嬉しい事だ。C言語はいかに重要なのかという論題が冒頭で熱く語られる。 www.tiobe.com/content/paperinfo/tpci/i

    「モダンC言語プログラミング」を読んだ!C言語の組込みエンジニアのためのモダンテクニックが満載
    akakit
    akakit 2013/12/01
    「モダンC言語プログラミング」
  • 今、Cで開発するためのスタンダードを知るための本 - L'eclat des jours(2013-09-30)

    _ 今、Cで開発するためのスタンダードを知るための 例によってアスキーの鈴木さんから、をもらった。花井さんのモダンC言語プログラミングだ。なお、似たような題の洋書があって、しかも花井さんは翻訳もするので、そのの翻訳書と勘違いされる可能性もありそうだが、完全にオリジナルだ。 Cは、Unixと共に(というか少し遅れて)生まれたということは、すでに40年以上の歴史があり、それだけの年月がたてば、COBOLなどと同じく老害言語と言われてもこれっぽっちもおかしくはない。 ところが、COBOLと異なり開発者市場がどんどん先細り(あるいは固定化)されるということはなく、むしろ増えている。それどころか最近の調査では最も利用されている(TIOBE 2013)。 一方、C++が先鞭をつけたビジネスプログラミングへのオブジェクト指向プログラミングの適用は、Java、Objective-C、C#と種類を増や

    akakit
    akakit 2013/12/01
    「モダンC言語プログラミング」
  • C言語は今でも価値のある言語か?

    Couchbaseの作者Damien Katz氏は,C言語はバックエンドプログラミングにおいて現在でも優れた言語である,という意見を持っている。しかし他の開発者は,C言語はあまりにも欠陥が多いとしてC++Javaを支持するもの,あるいはいずれも好まないというものなどさまざまだ。 CouchDB の開発者であるDamien Katz氏は,The Unreasonable Effectiveness of C と題した先日のブログ記事において,C言語がバックエンドのための優れた言語であると断言した。氏はC++Java,さらにはErlangやRubyのようなより現代的な言語よりも,今後もC言語を支持していくつもりだという。ただし単純に,C言語を他のどれよりも優れた言語だと言っている訳ではない。"言語自体のパフォーマンスと信頼性が重視される場面においては,C言語に比類する言語は皆無である",別

    C言語は今でも価値のある言語か?