# 「モダンからはじめる プログラミング生活！」

{% hint style="info" %}

**本としてダウンロード**

[**Releases**](https://gitlab.com/DevLifeFromModernWay/devlifefrommodernway.gitlab.io/-/releases/permalink/latest) から以下のファイル形式でのダウンロードも可能です。

- PDF

- EPUB

- MOBI

**link: <https://gitlab.com/DevLifeFromModernWay/devlifefrommodernway.gitlab.io/-/releases/permalink/latest>**

{% endhint %}

{% hint style="danger" %}

**注意**:

本リポジトリは余裕をもって、片手間にでも読み進めることを想定しています。

いますぐ即戦力になるような教材では**ありません**。

興味を持ったところから、気軽に読み進めてください。

{% endhint %}

本リポジトリはゲーム感覚で現代的で実践的なプログラマになるための教材です。

## 構成と目的

多くのプログラミング教材が** (たった) 一つの**プログラミング言語 (あるいは _framework_) の文法や機能を説明することに重点を置いています。

しかしここではそれらを最小限に抑え、
様々な領域の開発を通じて**プログラミングと開発**を広く学びます (プログラミング**言語**を広く学ぶわけではないのです！) 。

- 低レイヤプログラミング

- ゲーム開発

- Web アプリケーション開発

などを実践的に解決していく形式をとります。

その過程での副産物として、

- Google 検索の方法 [^2]

- `Git` (あるいは `GitHub`) の使い方

- プログラミングにまつわる思想 / 文化

- 複数のプログラミング言語を書く力

  - `JavaScript / TypeScript`

  - `Rust`

  - `C#`

など、プログラミングとは切り離せない周辺分野の知識さえも得られます。

## なぜ複数の言語を学ぶのか

例えば、[Twitter の GitHub][1] [^1] を見てみると、 **Top languages** (プログラミング言語のランキング) は

- `Scala`

- `Java`

- `Python`

- `JavaScript`

- `C`

となっています。他にも同サービスには `Rust` や `TypeScript` なども利用されています。

このように現代的な開発環境において、複数の言語や framework を組み合わせて利用することは珍しくありません。
実際のところ、多くのプログラマは 3 つ以上のプログラミング言語を容易に使いこなします。

プログラミング言語はマスタすることが最善手ではありません。
それは多くの言語間に共通する考え方 / 書き方があるからで、複数の言語を習得することは実際には**まったくの困難を伴いません**。
しかし、「一つの言語でもマスタしている」と断言できるプログラマはそう多くないはずです。
それはプログラミング言語は、**ある程度のレベルに**達すると、**ある程度のレベルで*実用的に***使いこなせるようになるからです。

プログラミング言語の文法や機能を完全に理解することは深淵と向き合うことですから、
一つの言語について深く学ぶことは最初にやるべきタスクではありません。
むしろ広範な領域に手を出して目一杯遊び疲れてから、愛着を持った言語などから深く学ぶべき言語を選ぶほうが効率的だからです。

[1]: https://github.com/twitter
[2]: https://x.com/

[^1]: [X (Twitter)][2] は、イーロン氏以降に _Open Source_ 化が進んでいます。

## このリポジトリの使い方、読み進め方

### 用語の表記について

プログラミングの周辺分野用語は、Googleablity [^2] を考慮して英語表記を優先しています。
初出で重要なキーワードは _Italic_ 体で表記しています。

> プログラミング言語 (あるいは _framework_) の文法や機能を &hellip;

[^2]: Google での検索しやすさ。C 言語は `C` と検索せず、 `C-language` `C-lang` などとすると Googleablity が高い。
