>_

Project C-Mastery

Pythonの裏側を理解し、Vimを作る1ヶ月

Target: High School Dev

AI時代だからこそ、
低レイヤを制する。

AIモデルを構築するのはPythonですが、その計算を支えるNumPyやPyTorchのコアはC/C++で書かれています。 「AIを使う人」から「AIを実装・最適化できるエンジニア」へ進化するための、メモリ管理と計算機資源の効率化を学ぶ1ヶ月の集中プログラムです。

最終目標: 自作テキストエディタ "MyVim"

  • Linuxシステムコール (`open`, `read`, `write`) の理解
  • 生の端末制御 (Raw Mode) の実装
  • 動的メモリ管理とデータ構造の実践

Abstraction Level vs Performance

C言語はハードウェアに近い場所で動作します

1ヶ月学習ロードマップ

週ごとのテーマを選択して、詳細な学習内容と重要キーワードを確認しましょう。

Select a Week

WEEK 1

Description goes here.

Daily Schedule

Days Theme Key Concept (vs Python) FE Exam Keyword

💡 Deep Dive

Select a week to view concepts.

user@linux: ~/myvim

Terminal Lab

第2週の重要課題:端末制御(Termios)。
通常の「カノニカルモード」と、エディタに必要な「Rawモード」の違いを体験してください。

Mode:

Enterを押すまで入力は確定しません。

Key Buffer State

OSが保持している入力バッファ

Welcome to Virtual Terminal. Type something to test the input mode... $

C Starter Code: editor_starter.c

エディタ開発の最初の難関「Rawモード制御」を実装済みの雛形コードです。第2週からこのコードを拡張していきます。

#include <termios.h> #include <unistd.h> // 元のターミナル設定を保存 struct termios orig_termios; void enableRawMode() { tcgetattr(STDIN_FILENO, &orig_termios); atexit(disableRawMode); struct termios raw = orig_termios; // 入力フラグをオフ (ECHO, ICANON etc) raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG); tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw); }
Includes: termios.h, unistd.h Start Week 2

Thinking in C: FE Exam Concepts

Dynamic Memory (Heap) Week 3

malloc / free / realloc vs Python Garbage Collection

Algorithmic Complexity Week 4

O(n) Search / Data Structures for Text

Pointer vs Reference Week 1

Direct Memory Access vs Abstraction