ハッピーメモメモ

私的備忘録

プログラミング・パラダイム

プログラミング・パラダイム

・命令型プログラミング(Imperative Programming)

・宣言型プログラミング(Declarative Programming)

 

パラダイム

f:id:n-moeko1966:20220310140641p:plain

パラダイムとは? 語源、用法、具体例、身に付けておきたい4つのポイント - カオナビ人事用語集

 

命令型プログラミング(Imperative Programming)

・最終的な出力を得るために状態を変化させる連続した文によって記述されるプログラミングスタイルのこと

・ステップ順に指示にしたがっていけば、お目当ての料理ができあがるレシピと同じ

・目の前のことだけ考えてひとつずつ積み上げていけばいいので、プログラミング初心者にとっても敷居が低い

・代表例)

  手続き型プログラミング(ProceduralProgramming)

  オブジェクト指向プログラミング(Object-Oriented Programming)

 

 

宣言型プログラミング(Declarative Programming)

・出力を得る方法ではなく、出力の性質・あるべき状態を文字通り宣言することでプログラムを構成する

・代表例)

  SQL

 

 

 

参照:りあクト!【1.言語・環境編】

 

 

 

 

【JavaScript】プロトタイプベースのオブジェクト指向

オブジェクト指向(p78)

・クラスベース

・プロトタイプベース

 

クラスベース

・クラスは実体を持たない抽象概念

・例)Java

 

プロトタイプベース

・プロトタイプは実体のあるオブジェクト

・そもそもオブジェクトの抽象としてのクラスが存在しない

・オブジェクトは直接、他のオブジェクトを継承する

・継承元になったオブジェクトのことを『プロトタイプ』と呼ぶ

・プロトタイプへ直にメソッドを追加したり削除したりできる上に、その変更がすでに生成済みのインスタンスにも即時反映される

・例)JavaScript

 

 

参照:りあクト!【1.言語・環境編】

【JavaScript】関数の定義

関数の定義(p66)

JavaScript では、関数は文、式どちらによっても定義できる

 

『文(Statement)』

・何らかの手続きを処理系に命令するもの

・変数に代入できない

例)ifは文であり、値として評価されない

f:id:n-moeko1966:20220309102225p:plain

HaskellScala のような関数型言語ではifは式である

 

『式(Expression)

・評価された後に値として存在するもの

・変数に代入できる

例)三項演算子による評価は式

f:id:n-moeko1966:20220309102316p:plain

 

関数宣言文と関数式(p67)

・推奨:const を使った関数式

 (関数宣言はvar による変数宣言と同じ問題を抱えている)

JavaScript における関数式とは実際のところ、Function オブジェクトを生成するリテラルである

f:id:n-moeko1966:20220309103645p:plain

 

第一級オブジェクト(First-Class Object)

・関数は配列や狭義のオブジェクトなどと同じく、Object を祖先に持ったオブジェクトである

JavaScript では関数は組み込みオブジェクトFunctionのインスタンスであり、第一級オブジェクトでもある

 

第一級オブジェクト

・他のオブジェクト型の値と同様に、変数へ代入したり、配列の要素やオブジェクトのプロパティ値にしたり、他の関数に引数として渡したり、別の関数の戻り値として設定できたりする

・オブジェクトのプロパティとなってる関数のことを『メソッド』と呼ぶ

 

 

 

 

参照:りあクト!【1.言語・環境編】

 

【JavaScript】データ型

真偽(p58)

・falsy

false、0、NaN、''(=空文字)、null、undefined

 

・truthy

上記以外すべて

 

NaN

Number 型でありながら、数値ではない(Not a Number)ことを示す値のこと

例)

f:id:n-moeko1966:20220309095553p:plain

 

プリミティブ値のリテラルとラッパーオブジェクト(p60)

・プリミティブ型はインスタンスメソッドを持たない

・プリミティブ型≠オブジェクト

 

Q.メソッドが使えるのはなぜ?

A.JavaScript には、プリミティブ型の値に対してアクセスするとき、その対応するラッパーオブジェクトに自動変換するという仕様がある

 

・null とundefined を除くすべてのプリミティブ型には、それらの値を抱合する『ラッパーオブジェクト(Wrapper Object)』というものが存在している

 

①プリミティブ型の値に対してアクセス

②対応するラッパーオブジェクトに自動変換される

③ラッパーオブジェクトのインスタンスメソッドが実行される

 

参照:りあクト!【1.言語・環境編】

NULL

・ヌルはドイツ語で0(ゼロ)を表しているが、プログラミングでは0ではなく、何も無いという意味になる

 

・データ表現以外では、変数や関数などのメモリアドレスを格納するポインタがどのアドレスも指し示さない特殊な状態であることを「ヌルポインタ」(null pointer)と呼ぶ

 

データベースにおけるNULL

・初期値はNULL(データがない状態)

・空文字「’’」は長さが0の文字列(データが登録されている状態)

 

【JavaScript】できること

クライアントサイドとサーバサイド

クライアントサイドの言語

Webサーバーにアクセスして得られた結果をブラウザで処理する際に使われる

ex)CSSJavaScript

 

サーバサイドの言語

ブラウザに結果を渡すためにサーバ内の処理を行う

ex)PHPRubyPython

 

 

 

参照 りあクト!【1.言語・環境編】第1 章 1-1. 基本環境の構築