関数の誕生(ジャンプ命令)

関数の誕生 関数を利用=「関数にジャンプ」してから「呼び出し先の最後で呼び出し元に戻る」 呼び出し元に戻るのもジャンプ命令。つまりどちらもジャンプ命令 前者はジャンプ先は固定なので実装はシンプルだが、後者は実行毎に異なるので実装に工夫が必要。…

命令アーキテクチャとマイクロアーキテクチャ

命令アーキテクチャは外側から見たインタフェースの話で、マイクロアーキテクチャは内側の話。 命令アーキテクチャ プロセッサがどのような命令を実行するのか,そして実行した結果がどのようになるのかなどの「プロセッサの働き」を詳細に規定したものを「…

1月20日の学び(機械学習の用語整理)

転職の面接で聞かれるかもしれないので....。 qiita.com 正則化 正則化(せいそくか、英: regularization)とは、数学・統計学において、特に機械学習と逆問題でよく使われるが、機械学習で過学習を防いだり、逆問題での不良設定問題を解くために、追加の項…

1月14日の学び

Kaggle実行環境の整理 PC以降に伴い基本的に全てDockerに統一とする。 ローカル環境のData以下のファイルをDockerにマウントする Dockerめっちゃ便利。技術の進化の恩恵を受けている気がする!!! docker run -d -p 8888:8888 -v /Users/mofuneko/SoftwareD…

1月9日の学び

とりあえず機械学習を進めるなら以下3つを進めていく方針で。 ライブラリの使い方を学ぶ(scikit-learnの本) 機械学習の手法を学ぶ (パターン認識と機械学習とか) 統計を学ぶ(数学の本) 機械学習の手法 大きく分けて「分類」「回帰」「クラスタリング」…

1月6日の学び

Kaggleを行うにはjupiter notebookはデファクトスタンダードだとか。 pppurple.hatenablog.com

1月4日の学び

最近はGithubに直接Haskell関連は記載するようになった。 結合法則 集合Sに二項演算○が定義されているとき、(a ○ b) ○ c = a ○ (b ○ c ) がSの任意の元a, b, cに対して成り立てばこの演算は結合的(結合法則を満たす)であるという。 加算や乗算は結合的。 …

12月26日/27日の学び

プログラミングHaskellのほうが断然わかりやすい。すごしずつHaskellの文法が見えてきた感じ。 用語整理 型 型とはお互いに関連する値の集合 Haskellではすべての式は型を持つ Bool型もChar型もInt型も全てお互いに関連する値の集合 リスト型もタプル型も全…

12月22日(型コンストラクタ)

値コンストラクタと型コンストラクタの違いがよくわからない。どちらも新しい型を返すのは共通で、何を引数にとるのかが異なるのか? 型コンストラクタ:型を引数にとって新しい型を返す

12月22日(抽象データ型)

ユーザに必要なだけの操作方法は提供するが、実装の詳細は隠蔽されているデータ型のことを抽象データ型と呼ぶ。

12月12日の学び

データ型の定義 新しいデータ型Shapeの作成は以下の通り 等号"="の後ろの部分を値コンストラクタと呼ぶ 値コンストラクタはフィールドを引数にとってデータ型を返す関数 Prelude> data Shape = Circle Float Float Float | Rectangle Float Float Float Floa…

12月11日の学び

そもそも型は、変数がメモリにアクセスする場合にint型ならXXXバイト、char型ならXXXバイトというようにアクセスするサイズを決めるために用いられると思っていたけど、それだけではないらしい。 型を用いることである種のバグが存在しないことにも繋がるら…

12月9日&10日の学び

最近Haskellばかり書いているな。。 メモ 述語とは真理値を返す関数 map関数 関数とリストを受け取り、その関数をリストの全要素に適用して新しいリストを生成する。 Prelude> map (+3) [1, 5, 3, 1, 6] [4,8,6,4,9] Prelude> map (map (^2)) [[1, 2], [3, 4…

12月8日の学び

ソフトウェアを以下の3通りに分類して考えるのはとても的を得ていると思う。そして大多数のソフトウェアエンジニアが最後の「一般 アプリケーションに従事している」というのもまさにそのとおり。 「基盤系・学術系」 「組み込み系」 「一般アプリケーション…

12月7日の学び

カリー化の例としては、以下のような『2つ引数をとるmaxを以下のように定義しなおす』ことがわかりやすい。 # 引数を1つわたすと、その次の引数を1つ受け取る関数を返す function _max(x){ return function(y){ return x > y ? x : y; } }

12月6日の学び

型(データ型)と型クラス 両者は別の概念 型クラスのインスタンスが型(データ型) Javaで例えるなら「型のSuperクラスが型クラス」というイメージ 数の型クラスである'Numクラス'のインスタンスが'Int' 'Integer' 'Float' 'Double' Prelude> :t 20 20 :: N…

12月4日の学び

ファイルの読み書きは直感的にできる ファイルの書き込み Prelude> writeFile "test.txt" "Hello, Haskell!" ファイルの読み込み Prelude> let str = readFile "test.txt" Prelude> str "Hello, Haskell!" Prelude> :t str str :: IO String

12月3日の学び

式と文に明確な定義があるのかは不明だが、少なくとも「式は値を持つ」が「文は値を持たない」と思う。 式の型の確認 :t で型を確認できる :: の記号は「〜の型を持つ」と読む Prelude> :t 'a' 'a' :: Char 関数headは「任意の型のリストを引数に取り、その…

12月2日の学び(プログラミング言語の分類)

プログラミング言語の分類の助けになりそうな概念をつらつらとまとめてみた。 オブジェクト指向とか関数型言語とかは大丈夫そうなのでパス。 自分は型推論がない言語でないとやってられない! 型推論 周囲の文脈から型を推論すること 変数に対する型の記載が…

12月2日の学び①(関数型言語)

関数型言語のメリット 関数型言語だと「関数は当然値を返すだけ」なので、以下のような関数同士を組み合わせて別の関数の作成は容易である。 同じことを手続き型言語でやろうとすれば、できなくはないけどここまで綺麗にはかけない。 doubleMe x = x + x dou…

12月1日の学び(Haskell)

Haskell関連の用語整理 Stack Haskellのパッケージ管理やビルドを実行 パッケージ管理においては下のcabal-installの差し替えとして機能 ビルド実行においてはCabalをバックエンドで利用 動作としてはJavaのMavenに近い? Cabal ビルドシステム cabal-instal…

11月30日の学び(セッション①)

セッションは端末と関連している概念らしい。 やっぱり自前のLinux環境がないと辛い。 セッション セッションはセッションIDという値を共有するプロセスの集まりである 1つのプロセスグループ内のプロセスは同じ値のセッションIDを共有する つまりセッション…

11月29日の学び(プロセスグループ)

リペアレンティング Linux/Unixでは親プロセスが死ぬと子プロセスは「孤児プロセス」として取り扱われる 孤児となってしまったプロセスは即座にinitプロセスの配下に紐付けられ生き続けることができる この動作をリペアレンティングと呼び、カーネルによって…

11月26日の学び(trapコマンド)

trapコマンド 実行中のプロセスに対して送出されたシグナルを補足し、予め指定していた処理を実行するコマンド 使い方としてはシェルスクリプト内部にtrap処理を記載し、実行中のシェルスクリプトに外部からシグナルを送信した際の動作を指定できる trap 'コ…

11月23日の学び

たまにしか使わないのでいつも迷います。。。 リダイレクト 標準入力・標準出力・標準エラー出力の向き先を変更する 1> で標準出力のリダイレクト、2>で標準エラー出力のリダイレクト 1>の1は省略可能 $ ls 存在しないファイル 2> test.txt $ cat test.txt l…

11月21日の学び(React)

Reactを実行した。やはり手を動かさないとわかったという資格はない。 全てコマンドを打つだけで実行できるところに感激した。 「reacのアプリ」と「公開するwebページ」の差分がいまいち見えない。前者は後者の一部にすぎないのでは??? npmをインストー…

11月21日の学び(AWSインスタンス)

AWS

AWSのインスタンスの種類 オンデマンドインスタンス:従量課金・1時間単位で課金される リザーブドインスタンス:全て前払い・1年/3年単位・サーバ用途向け スポットインスタンス:入札形式・安いときはとにかく安い・安価になるけれど、利用するインスタン…

11月18日の学び(React.js)

フロントエンドはそこまで深く踏み込む気はないが動作概要だけでも知っておくこと。 React.jsとは JavaScriptでの開発に用いられるUI用の汎用ライブラリ 比較対象として挙げられるBackbone.jsやAngular.jsとも併用できます。 SPA シングルページアプリケーシ…

11月18日(Node.js)

フロントエンドにはそんなに踏み込む気はないが、簡単にでも手を動かす・動かさないで全然異なるため軽くでも触っておく。 まぁ確かに画面作るのにわざわざJava + Tomcatとかは面倒。。。 Node.jsの概要 JavaScriptで動作するサーバ環境(一般的にはWebサー…

11月17日(Maven)

Mavenプロジェクトを作成するとフォルダ構成やconfigファイルなどが自動で作成される。 Mavenとは 以下のように複数の機能を持つJavaのビルドツール。 プログラムのビルド:コンパイルからjar/warファイルの作成に関する全ての作業 -プログラムのテストと実…