コンピューター上でプログラムを動作する際に必要になるのがメモリです。プログラム自体をメモリに読み込む必要があるのはもちろん、プログラムが行う動作はほとんど「メモリから値を取りだして計算し、メモリに保存する」であるといっても過言ではありません。プログラムが動作する際にメモリがどのように管理されているのかについて、ベテランプログラマーのサム・ローズさんがブログで解説しています。 Memory Allocation https://samwho.dev/memory-allocation/ C言語の標準ライブラリには「malloc」と「free」という2つの関数が用意されています。この2つはなんと1979年のUnix v7から存在している歴史ある関数で、mallocがメモリの割り当てを担当し、freeがメモリの解放を担当しています。サム・ローズさんの解説は「この2つの関数の中身を自分で実装する」
QDくん⚡️Python x 機械学習 x 金融工学 @developer_quant 東工大が無料公開しているPython解説サイト chokkan.github.io/python/index.h… 初心者の目線に合わせた丁寧な説明で、かゆいところに手が届く教材。 基本的な文法、データ構造、ファイル入出力やオブジェクト指向、NumpyとMatplotlibの使い方などをひと通り学べる。 pic.twitter.com/XyBBslyeBa 2022-10-08 22:01:21 🎍QDくん🎍Python x 機械学習 x 金融工学 @developer_quant 東工大が無料公開しているPython解説サイト chokkan.github.io/python/index.h… 初心者の目線に合わせた丁寧な説明で、かゆいところに手が届く教材。 基本的な文法、データ構造、ファイル入出
『Sonny Boy』というアニメが放送されています。学校が異次元に漂流してしまい、超能力に目覚めた生徒たちがサバイバルしながら、さまざまな奇妙な現象の裏にあるルールを解き明かし、元の世界に変える方法を探す、というストーリーです。ルールが分かったあとで何度も見直したくなります。 anime.shochiku.co.jp さて今回、『Sonny Boy』に、プログラムを寄稿しました。プログラムでおもしろいCGを作ったとかではなく、プログラムの実行の様子そのものが『Sonny Boy』の5話の中で放送されました。 こういうプログラムです。 nankai.rb このプログラムがどういうものだったかを解説します。 どんなプログラム? 実行すると、「難解」という文字がほどけてなくなるアニメーションをします。 起動したらまず、プログラム自身が画面に表示されます。 しばらくしたら「難解」が左から右へほど
#define FLOAT_TYPE /* old declaration */ #if defined (FLOAT_TYPE) float #else int #endif add(); /* old definition */ #if defined (FLOAT_TYPE) float #else int #endif add(a, b) #if defined (FLOAT_TYPE) float a; float b; #else int a; int b; #endif { return a + b; }
はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz
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
組込み界では今時のプログラミング界隈の常識の多くが通用しない。最初にあなたが相手にするのはRAM 1kB, ROM 4kB、クロック 20MHzなどというMCUである。 使用する言語はC99かアセンブラである。幸か不幸かC++を使わされることもある。既にC++で書かれたプロダクトに係わってはならない。 当然フロントエンド界隈などのようなイミュータブルインスタンスを大量に使い捨てる富豪的な言語やアプローチの採用は難しいだろう。 トラブルが起きたときにプログラムだけでなく回路図を読んでハード側に問題があるこを示せないと極めて立場が悪くなる。 むしろプログラムし易いコンポーネントの選択や回路構成に積極的に口を出していかないと動かない責任だけがソフト担当者に投げられて割を食う。 開発環境はWindows上のEclipseベースの統合環境が使えれば上等であり、運が悪ければMCUメーカーお仕着せのクソ
学生時代、UNIXでC言語を独学していた頃。 ちょっとした事(たしかグローバル変数とローカル変数の挙動の違いとか、そんな事だったと思う)を試してみようと思って、20行くらいのプログラムを作ったんだ。 でも、動かないの。 どんな短いプログラムでも意図しない挙動をしてしまうことはあるものだが、そんなレベルの話ではない。 ただ、計算した結果を画面に出すだけのつもりなのに、何も表示されないんだ。 で、少しずつコメントアウトしていったのに、それでも何も表示されない。 しまいには、"A" って画面に出すだけのコードになったのに、それでも何も表示されないんだ。 (この日記の言及先を見れば、ネタは一目瞭然なんだろうけど) で、もう一本別のコードを test2.c という名前で作ったら、ちゃんと "A" と表示された。 一番始めに作ったコードも、すんなり動いた。 そうさ。最初のコードは test.c という
1990年代初頭から記者としてまた起業家として30年以上にわたりIT業界のハードウェアからソフトウェアの事業創出に関わる。シリコンバレーやEU等でのスタートアップを経験。日本ではネットエイジ等に所属、大手企業の新規事業創出に協力。ブログやSNS、LINEなどの誕生から普及成長までを最前線で見てきた生き字引として注目される。通信キャリアのニュースポータルの創業デスクとして数億PV事業に。世界最大IT系メディア(スペイン)の元日本編集長を経て現在に至る。 創業20周年を迎えた楽天。本社のある東京・世田谷区の楽天クリムゾンハウスの入り口に、これまでの成長の歴史を伝える資料などが展示されています。その中に代表取締役会長兼社長 三木谷浩史 氏が書いたとされるプログラムのソースコードが展示されています。 拡大してみると「三桁毎にカンマを入れるプログラム」というタイトルの下に確かに三木谷会長の名前が記載
(注:2017/04/27、いただいたフィードバックを元に翻訳を修正いたしました。) この記事では、皆さん(特にC言語のプログラマ)に「自分はCを分かっていなかった」と気付いてもらうことを目標にしています。 Cの落とし穴は、思っているよりもずっと身近なところにあります。ちょっとしたコードにも 未定義の動作 が潜んでいることを以下で示しましょう。 この記事はQ&A形式になっており、それぞれの例題は独立したソースコードとして扱ってください。 1. Q: これは正しいコードでしょうか? (変数の二重定義エラーが発生するでしょうか。上述の通り、これは独立したソースファイルであり、関数本体や複合ステートメントの一部ではありません) 解答 A: 正しいコードです。1行目は仮定義であり、2行目でコンパイラが処理した後に “定義” になります。 2. extern void bar(void); void
!!!??? どうなってるの??? これ、"_" の場所を変えたりしたらマッチするようになるんですよ。 なぜか? わからない。わかりたくもない。 こんなファッキンなバグが、gcc 4.9.2 まで残ってるんですよ。 4.9.3 では直っていました。 その2 今度は、これをgcc 4.9.2 で実行してみましょう。 文字クラスにマッチさせるだけの簡単な正規表現です。 string s("~"); smatch m; regex re(R"([~\-_])"); if (regex_search(s, m, re)) { cout << m[0] << endl; } else { cout << "Not matched" << endl; }
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く