タグ

C言語に関するch1248のブックマーク (67)

  • なぜC言語は、B言語を継承して、1から設計し直さなかったのでしょうか?

    回答 (3件中の1件目) なかなか理解しづらい話だと思いますが、当時のベル研究所において、Unixのグループは濃密な知のルツボだったのです。B言語が発明されるとすぐに、十数人の人々が使い始め、良かったところと悪かったところのフィードバックが集まりました。デニスは数日後にはインタプリタ言語だったB言語をコンパイラ化し、古いバージョンを分かりやすいところに置いていました。B言語のユーザーは、バグを見つけるとデニスにメールし、バグが直るまで古いコンパイラを使っていました。 B言語をC言語に改名した主な理由は2つあります。まずB言語(とBCPL)は、CPUのアドレスがバイト単位ではなくてワード...

    なぜC言語は、B言語を継承して、1から設計し直さなかったのでしょうか?
    ch1248
    ch1248 2023/04/22
    偉人が出てきた…….
  • 並行プログラミング入門


    RustCCPUπasync/awaitAArch64x86-64GitHub    
    並行プログラミング入門
    ch1248
    ch1248 2022/12/04
    主にRustを使った並行処理プログラミング。
  • C++のライブラリをC言語でくるんでRustから使うまで - 秋津早苗の備忘録


    AmusementCreatorsAdventCalendarACAC20 www.adventar.org  akitsu-sanae.hatenablog.com C++CRust使2 Rust C++Visual Studio 2015(v140) Rust rustup 0.6.5 (88ef618 2016-11-04) rustc 1.15.0-nightly (2217bd771 2016-11-25) nightly-i686-pc-windows-msvc cargo 0.16.0-night
    C++のライブラリをC言語でくるんでRustから使うまで - 秋津早苗の備忘録
  • C言語がコンパイル~実行されるまで - Qiita

    記事の内容 以下のソースコードがコンパイル~実行されるまでに、何が行われるのかを理解する。 細かいオプションや処理の詳細は追わない。 #include <stdio.h> #define MESSAGE "hello world\n" int main(int argc, char *argv[]) { printf(MESSAGE); return 0; } ]$ uname -rm 3.10.0-957.10.1.el7.x86_64 x86_64 ]$ gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions

    C言語がコンパイル~実行されるまで - Qiita
  • 侍エンジニア塾のC言語のサンプルがヤバすぎる。

    C言語はもうかれこれ10年くらい書いていないけど、流石にこれはヤバい。 正直な感想として、ブランド毀損するくらいの危険性をはらんでいると思う。 当該記事からコピーしてきた。 #include <stdio.h> #include <stdlib.h> // 構造体の宣言 typedef struct { int num; char *str; } strct; int main(void) { // 実体を生成 strct *entity; // 動的メモリの確保。確保したメモリをstrct型ポインタにキャスト。 entity = (strct*)malloc(sizeof(strct)); // メンバの初期化 entity->num = 0; entity->str = (char*)malloc(sizeof(32)); // メモリに文字列を代入 sprintf(entity->s

    侍エンジニア塾のC言語のサンプルがヤバすぎる。
    ch1248
    ch1248 2018/10/17
    危ういなあ……と思いながら読んでたらsizeof(32)でファッ!?となった。
  • メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog


    κeen RustRust   /使 164bitOS2^64 byte 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ 2^64 byte
    メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog
    ch1248
    ch1248 2017/04/30
    Cのheap管理を「手でやるのでバグります」と言い切るのはどうだろう。1つのプロセスを小さくし、こまめに終了させ、メモリをOSに回収させるという方針はあるが……。
  • 2017年にC/C++はCOBOLのように死す | ソフトアンテナ


    CC++使 trevor jimC and C++ are dead like COBOL in 2017CC++COBOL2017 CC++""COBOLC/C++CC++
    2017年にC/C++はCOBOLのように死す | ソフトアンテナ
    ch1248
    ch1248 2017/01/29
    「死す」が「新たに学習する意義が無くなる」という意味だとしても微妙なライン。
  • コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記


    C CCC++ C++C "C" #ELVMhttps://t.co/kKiLU3rLFX  (@kw_udon_) 20161118 ()  Hacker News1LLVMC++Bjarne Stroustrup
    コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記
  • TechCrunch | Startup and Technology News

    Welcome back to TechCrunch’s Week in Review — TechCrunch’s newsletter recapping the week’s biggest news. Want it in your inbox every Saturday? Sign up here. Over the past eight years,…

    TechCrunch | Startup and Technology News
    ch1248
    ch1248 2016/10/13
    亡くなったのか……。/2011年の記事かよ!
  • C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)


    C++?! C++CC // -*- coding: sjis -*- // strange.c struct ThreeNums { int x; //  int y; int z; }; int total(struct ThreeNums nums) { return nums.x + nums.y + nums.z; }  $ type tdm-gcc tdm-gcc is aliased to `/c/Installed/TDM-GCC-64/bin/gcc.exe' $ tdm-gcc --ve
    C/C++のとんだ落とし穴(ハマっちまったよ) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ch1248
    ch1248 2016/04/16
    えええ、そんな事があるの……。
  • 2016年、C言語はどう書くべきか (前編) | POSTD


    (2016/3/2) (Mattx86-64 Unix/Linux/POSIX( 8-bit10CPUWin/Linux)) 201520152016 
    2016年、C言語はどう書くべきか (前編) | POSTD
  • Web界から組み込みに向けられた刺客「mruby」はこう使われている


    RubymrubyWebmrubymrubyRuby201020124MITRubymruby3170mruby V1.2.0201511 RubyWeb使
    Web界から組み込みに向けられた刺客「mruby」はこう使われている
  • 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

  • 大学院生のためのLLVM | POSTD


    (2017/07/06)  LLVM 使LLVM使 LLVM LLVMCC++ LLVMJIT使C App Store ) LLVM
  • code

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

  • グラディウスの思い出

    ※初出2012-01-07 このブログを読んで思い出した。 スーパーマリオ3Dランドが素晴らしいわけ - はてなポイント3万を使い切るまで死なない日記 グラディウスは1985年にコナミから発売されたアーケードゲーム。ゼビウス(1983年)が大ヒットした後、しばらくそれに並ぶヒット作がアーケードゲームに登場しなかったが、グラディウスはそれに並ぶヒットといえよう。ゼビウスのヒットは異常なレベルなので、完全に並んだとは言えないけれど。 グラディウスが良くできていたのは、難易度の調整。下手なプレイヤーでもそこそこ遊べるし、上手なプレイヤーはさらに楽しめる。パワーアップアイテムで自機を強化していくのだが、こちらが強くなると、敵もたくさん弾を撃ってくる。 やられてしまうとパワーアップがゼロの状態からスタートになるが、その状態でも「頑張れば」クリア可能に設定されている。つまり四苦八苦して進んでいけば再び

    グラディウスの思い出
    ch1248
    ch1248 2015/08/23
    面白い。にしても、初代ダライアスってC言語で作ってたのか。
  • Practical Scheme

    Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ

    Practical Scheme
  • C言語分かってなかった (I Do Not Know C) - Qiita


    Dmitri GribenkoBlog "I Do Not Know C"  CC BY-SA 3.0  CCC (undefined behavior)   Qiita/Markdown  1.
    C言語分かってなかった (I Do Not Know C) - Qiita
    ch1248
    ch1248 2015/03/14
    6,7,9は解けたが、タイムトラベルとかコンマ演算子とか全然わかってなかった。C++に比べればまだかわいい感じある。
  • Cにおける識別子の有効範囲と変数の生存期間

    #include <stdio.h> #include <stdlib.h> double add(const double a, const double b) { // a = 0.3; エラー return a + b; } int main(void) { double x = 0.1; double y = 0.2; double sum = add(x, y); printf("%f\n", sum); // 0.300000 return EXIT_SUCCESS; } 仮引数aには0.1が、bには0.2が入ります。関数addの中ではaとbの値を変更することができません。これには2つのメリットがあります。 誤ってaとbの値を変更してしまうようなコードを書いてしまうことがない(たとえ書いてしまってもコンパイラが検出してくれる) 関数addの実装を知らない人にも、関数add内でa

    Cにおける識別子の有効範囲と変数の生存期間
  • C++を鍛え直す - nokunoの日記

    関数全体をtryで囲む int main() try { // 関数内のすべての例外をキャッチできる ... } catch () { ... } 無名名前空間C言語ではグローバル変数にstaticを付けるとファイル内変数になりましたが、C++では無名名前空間を使うことで同じ事を明示的に書くことができます。 namespace { // この中の変数は他のファイルから参照できない int i; } newのバリエーションデフォルトのnew演算子はメモリ確保に失敗するとstd::bad_alloc型の例外を投げるようになっていますが、std::nothrowを使うとNULLを返すようにできます。これは便利! int* p = new(std::nothrow) int; delete p; ※Effective C++によると、nothrow型のnewはメモリ確保に失敗しても例外を投げないも