タグ

cに関するtyageのブックマーク (24)

  • プログラマがC言語にこだわるべきでない0番目の理由 by Inquisitor

    新しいプログラミング言語を作りたいと思ったら、そのプロトタイプはCのような低級言語ではなく、高級言語で実装したほうがいいのではないでしょうか。もちろん実行時のパフォーマンスなどのために、最終的にC言語で実装するということはあるかもしれませんが(相対的な話ではありますが、C言語を低級あるいは低水準と呼ぶのが許せないという人は、K&Rの1ページ目を参照してください。日語訳では「はじめに」のp.2です。)。 Cは比較的“低水準”の言語である。この性格付けは非難の意味を込めているのではない。これは単に、Cが普通のコンビュータで扱う種類の、すなわち文字、数、アドレスを扱えるようになっているという意味である。もちろん、これらのデータを組み合わせて、現実の機械で実行されるような普通の算術論理演算でいろいろな処理を行なうことができる。(p. 2) 以下、題 プログラマがC言語を学ぶべきたった一つの理由

    プログラマがC言語にこだわるべきでない0番目の理由 by Inquisitor
    tyage
    tyage 2012/01/06
  • 史上最高に愚かしいCのバグとは何か - YAMDAS現更新履歴

    The most stupid C bug ever | elpauer 先日は徳丸浩さんによる PHP5.3.7 の crypt 関数におけるバグの解説を読み、世界的に有名なオープンソースソフトウェアでもこんな初歩的なミスをやらかすのかとすごく親近感が湧いてしまったが、Pau Garcia Quiles が語るこれまでで最も愚かしい C のバグとは何か? 彼はテンポラリファイルを tmpfile() で作る Unix アプリケーションの移植をやっていた。 else if (code == 200) { // Downloading whole file /* Write new file (plus allow reading once we finish) */ g = fname ? fopen(fname, "w+") : tmpfile(); } マイクロソフトの tmpfile

    史上最高に愚かしいCのバグとは何か - YAMDAS現更新履歴
    tyage
    tyage 2011/08/29
  • 配列とポインタ

    10-2.配列とポインタ 10-1.変数とポインタとの違いに気を付けてください。 ポインタは、変数のアドレスを格納するよりは、配列のアドレスを格納する方がずっと使用頻度は高くなります。 (1)配列とアドレス (変数)と(配列)の違いに注意してください

    tyage
    tyage 2011/08/03
  • C Programming Puzzlers

    These questions originally appeared as an article on programmersheaven.com, written by Ashok K. Pathak, a researcher at Bharat Electronics Limited (CRL), Ghaziabad.  They are reproduced here with minor modifications. The questions test advanced knowledge of the C language, including some rarely-used features.  Effective C programming requires a strong understanding of concepts like undefined behav

    tyage
    tyage 2011/06/21
  • [C, JavaScript] 1行でswapを実装する : Way to Apple

    最近、こんな記事を見ました。 JavaScriptプログラムのバイトサイズ縮小テクニック – 強火で進め JavaScriptにおけるプログラムを短くするテクニックが紹介されていました。 その中に、JavaScirptでswap(変数の入れ替え)を行う方法が紹介されていました。 こんな感じです a = [b, b = a][0]; すごいでしょ!? 正直驚きでした。 かと言ってswap自体使い道が…(まあそれはさておき) ところで、今日はプログラミングの授業がありました。 何人かで話していたときに、コレをCでも組めないか、という話になりました。 最終的にこうなりました。 b = (b -= a = (b = a * MAX + b) % MAX) / MAX; /* MAXはint型の自然数 */ いやー、すごい! Cでも出来るじゃないですか。 ただしこれは、 a, b はi

  • 静的ライブラリのリンク時にundefined referenceエラーが出る(gcc)

    静的ライブラリのリンク時にundefined referenceエラーが出る(gcc) 概要 gccでリンク時にundefined referenceエラーが出る場合がある。 通常はオブジェクトやライブラリの指定忘れが原因であるが、 静的ライブラリをリンクする順番に間違いがあって出る場合もある (自分でMakefileを書く場合にこのミスをすることが多い) リンクの順番には依存性があり、あるオブジェクトが静的 ライブラリ内の関数を呼び出すときには呼び出される側の ライブラリは「後で」リンクする必要がある。 例えば foo.o が静的ライブラリ libfoo.a 内の関数を使用している、つまり foo.o → libfoo.a という依存関係があるとき、 g++ -o foo libfoo.a foo.o とするとundefined referenceエラーが出る。従って g++ -o fo

    tyage
    tyage 2011/06/03
  • 闇プログラマーに喧嘩を売ってしまった昼下がり~条件分岐篇~

    ※このまとめに含まれるプログラムは一種のパズル的な遊びです。 くれぐれも用法用量を守った上で正しくご利用ください>< 実用するならば、“言うまでもなく” if か ?: を利用すべきです。 やばい連中に喧嘩を売ってしまった……。 続きを読む

    闇プログラマーに喧嘩を売ってしまった昼下がり~条件分岐篇~
  • どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。

    確かにCでしか書けない類のプログラムは存在する(例を挙げるならKernel)が、それはCの存在を赦す理由にはならない。確かにCに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならC++)が、それはCの存在を赦す理由にはならない。確かにCでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはCの存在を赦す理由にはならない。結論:C死ね。 そもそも計算機にできて算盤にできないことなど存在しない。存在しないんだぞ。なのに何故人はプログラムを書くのか。それはオートメーションのためなのであり、奴隷的使役から人類の尊厳を開放して、この地上に楽園を築くためである。まあそこまで大上段に振りかぶって普段から書いてる輩はいないにせよ、プログラミングとは楽をするため、豊かな人生を実現するため、誰かの幸福のために行うものだ。違うか?じゃあなぜプログラ

    どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。
    tyage
    tyage 2011/05/18
  • PCC 1.0.0 リリース | スラド デベロッパー

    PCC(Portable C Compiler) 1.0.0リリース版が4月1日に公開された(pcc portable c compiler、 リリース情報、リリース版のFTPディレクトリ)。 i386およびAMD64プラットフォーム上の各種BSD、LinuxWindowsではある程度の動作確認ができているが、 他のターゲットにはバグが残っている可能性が高いとのこと。近いうちに細かなバグフィクスを含むパッチを公開し、遠くない将来に1.1を公開する予定らしい。 GCC は4.6.0が出ているが、 コンパイル時間の短縮で省エネになる (?) PCC も試してみてはいかが?

    tyage
    tyage 2011/04/05
  • Welcome to nginx!

  • 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現更新履歴
  • PyPyがCより速いケース - karasuyamatenguの日記

    パイパイ(この名前ちょっとヤバいね)は場合によってはCより速いコードを生成することがあるという例。決してPyPyが一般的にCより速いと主張しているわけでないない。 http://morepypy.blogspot.com/2011/02/pypy-faster-than-c-on-carefully-crafted.html どうしてこういうことになるかというと、Cはモジュール(.o)の壁を越えて関数をインラインすることができないからだ。JITはそんなものおかまいなしにインラインすることができる。動的最適化の利点だ。 Python x.py def add(a, b): return a + by.py: from x import add def main(): i = 0 a = 0.0 while i < 1000000000: a += 1.0 add(a, a) i += 1 m

    PyPyがCより速いケース - karasuyamatenguの日記
    tyage
    tyage 2011/02/16
  • [開発][C言語]超テキトー図解ポインタ - chocolate holic

    まだ途中。書き次第随時追記していきまする。間違いとか分かりにくい表現があったら遠慮無く指摘してくだしあ。

    tyage
    tyage 2010/11/08
  • Aznyan AA

    tyage
    tyage 2010/11/07
  • C/C は永久に不滅です!----目次:ITpro

    皆さん,お待たせしました! “プログラミング言語の王道”C/C++言語の特集です。「Visual Basicでプログラミングを始めたけど,いつかはC/C++をマスターしたいと思っていた」「以前にCを勉強したことがあるけど,ポインタで挫折しちゃった」「当はVisual C++に興味があるのだけれど,なかなか手が出せなくて…」「言語仕様も大事だけど,コンパイラの仕組みもきちんと教えてやってほしい」──そんな皆さんの思いや期待に応えます。あなたもプログラミングの王道を極めましょう。 Part1 C/C++は永久に不滅です! Part2 C/C++の疑問にまとめてお答え Part3 ゼロから始めるVisual C++ 2005入門 Part4 誰もがつまずくポインタを詳細解説 Part5 ウラから見たコンパイラ~リンカー~ローダーの仕組み Part6 クラス/継承/多態性をサンプルで理解

    C/C は永久に不滅です!----目次:ITpro
    tyage
    tyage 2010/10/04
  • RubyとCの x = y + y = x について - 西尾泰和のはてなダイアリー

    Rubyで x = y + y = x と書くとこれは x = y + x と y = x を行ったのと同じ振る舞いをする。 > x = y = 1 => 1 > x = y + y = x => 2 > [x, y] => [2, 1] > x = y + y = x => 3 > [x, y] => [3, 2] > x = y + y = x => 5 > [x, y] => [5, 3] > x = y + y = x => 8 > [x, y] => [8, 5] なぜかというと、まず x = y + y = xの y = x が実行されてその代入式の値はxになるから x = y + xところで、これはCでも動くと思って試してみたがしたのようなエラーになってしまう。 error: lvalue required as left operand of assignmentこれはおそ

    RubyとCの x = y + y = x について - 西尾泰和のはてなダイアリー
    tyage
    tyage 2010/09/12
  • C - は「LLですが、なにか?」 - Fabrice Bellard on tcc : 404 Blog Not Found

    2010年08月02日02:30 カテゴリLightweight Languages C - は「LLですが、なにか?」 - Fabrice Bellard on tcc LL Tigerが明けた直後で、文字通りの後の祭りもいいところですが… うれしいものはうれしいので、LLEvalでもサポートはじめました。 #!/usr/bin/tcc -run #include <string.h> char *fizz(int n){ return n % 3 ? "" : "Fizz"; } char *buzz(int n){ return n % 5 ? "" : "Buzz"; } char *fizzbuzz(char *buf, int n){ strcpy(buf, fizz(n)); strcat(buf, buzz(n)); if (!strlen(buf)) sprintf(bu

    C - は「LLですが、なにか?」 - Fabrice Bellard on tcc : 404 Blog Not Found
    tyage
    tyage 2010/08/02
  • C - で私も素数を数えてみた : 404 Blog Not Found

    2010年07月26日18:30 カテゴリMath C - で私も素数を数えてみた 世間は夏休みだそうだし、連日の猛暑で体調も底だし、というわけで私も素数を数えてみた。 10兆までの素数のリストを作ってみませんか? - 記者の眼:ITpro もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 プライムナンバーズ David Wells / 伊知地宏監訳 / さかいなおみ訳 [原著:Prime Numbers: The Most Mysterious Figures In Math] といっても原田記者と同じように書いても芸がないので

    C - で私も素数を数えてみた : 404 Blog Not Found
    tyage
    tyage 2010/07/28
  • Lisp は「C 言語並みに速い」「C 言語より速い場合がある」

    だそうです。 On LispOn Lisp 後注より Gabriel, Richard P. Performance and Standardization. Proceedings of the First International Workshop on Lisp Evolution and Standardization, 1988, p.60ある処理系で triangle を試していて, Gabriel は次のことを発見した:「プログラマが C コンパイラにレジスタ割り当ての指示を与えたときと比べても, C 版の反復による実装よりも Lisp 版のほうが 17% も高速だった.」彼の論文では Lisp で実装したほうが C より高速になるプログラムが他にもいくつか挙がっており, なかには 43% も高速になったものもある. Lisp:よくある誤解Lisp:よくある誤解 「Lisp

    Lisp は「C 言語並みに速い」「C 言語より速い場合がある」
    tyage
    tyage 2010/06/21
  • code

    CODE < ^ > << new | old >> / 2023-03-27