VS codeのMarkdownプレビューの改行とタブの設定をした
VS codeでmarkdownを書くとき、改行でプレビューも改行して欲しかったのと、タブをmarkdownを書くときだけスペース2個分に設定したかったので、その方法を記述する。
改行の設定
以下の設定をsetting.jsonに追加
(もしこの設定が聞かない場合はout/markdownEngine.jsの編集が必要かも)
VS Code 標準Markdown Extensionsで、改行を有効にする
"markdown.preview.breaks": true
タブの設定
以下の設定をsetting.jsonに追加
"[markdown]": { "editor.tabSize": 2 }
プログラミング言語の分類
高級言語と低級言語
高級言語:
構文の抽象度を上げることで人間が理解しやすいようにした言語。(世間で言われているプログラミング言語はほぼコレ)
抽象度を上げるとは、構文に英単語などの自然言語を利用し汎用的にすること
命令型プログラミングと宣言型プログラミング
命令型プログラミング:
コンピュータに処理させる命令を記述していく方式
例: 「ボタンが押されたら、 カウンターの数字を+1しなさい」
宣言型プログラミング:
対象の定義・性質を記述していく方式
例: 「ネズミは指数的に増えます」
ざっくり言うと「問題の解き方」を記述するのか、「問題の性質」を記述するのかの違いです。
ちなみに、上記の考えに基づいて設計された言語を、命令型言語/宣言型言語と言います。
命令型言語で処理を記述したからと言って必ずしも命令型プログラミングをしなければいけないわけではありません。
命令型言語: C, C++, Javaなど
宣言型言語: Haskell, Prolog, Lispなど
======追記=======
プログラミングパラダイム
プログラミング言語は様々なパラダイム(概念)に基づいて設計されている。
代表的なパラダイムをざっくりといくつか紹介する。
手続き型プログラミング
命令型プログラミングの一種。
手続き(コンピュータにさせる処理記述)を上から順に実行していくイメージ。
オブジェクト指向
ひとかたまりのコードをオブジェクト(モノ)として考え、それを組み合わせてプログラムを構築していくイメージ。
クラスという設計図を基にオブジェクトを生成(インスタンス化)する。
コードを部品化することで再利用性を高めている。
関数型プログラミング
数学で言う関数を定義して組み合わせていくことでプログラムを構築していくイメージ
手続き型等はどのように処理するかを記述するが、関数型は性質(法則のようなもの)を記述する。
純粋関数言語と非純粋関数言語が存在し、純粋型は変数への値の再代入を禁止することで副作用を生まないようにしている。
副作用とは処理を実行することで、他の処理に影響のある変数の中身を変化させてしまうこと。
副作用を生まないようにすることで、処理は入力に対して決まった出力を提供する。(参照透過性)
論理型プログラミング
数理論理学を使用してプログラムを構築していくイメージ
証明や言語処理などが得意
なんか、関数型だけ説明がながくなってしまった。。。
プログラミング言語とは
プログラミング言語とは
コンピュータへの命令を記述するための言語
コンピュータは機械語(2進数)を扱うが、人間には扱いづらいためプログラミング言語が開発された
なんで機械語は2進数なのか
コンピュータは論理回路によって構成されている
よって、データや命令を電源のon/offで扱うため、コンピュータは2進数を扱う
最古のプログラミング言語は?
最古の高級言語としてFORTRANが有名だが、古さで言うとアセンブラの方が古い
アセンブリ言語は機械語を人間に理解しやすくした低水準言語
しかし、記述がCPUの種類に依存するため後に高級言語としてFORTRANが誕生
プログラミング言語を"機械語を人間が扱いやすくするための言語"と定義すると最古のプログラミング言語はアセンブリ言語?
次回は、言語の大まかな分類などを調べてみる