CoffeeScriptを使ってみたい

CoffeeScriptを使ってみたいと思いました. なのでとりあえず環境を整えようと思います.

Node.jsをインストール

まずCoffeeScriptの実行環境にNode.jsが必要っぽいので入れます.

とりあえずQiitaのこの記事を参照しました.

Node.js - Mac OSXにnodebrewをインストールする - Qiita

特にこれまでNode.jsをインストールしたことは無かったので

$ brew update
$ brew install nodebrew
$ nodebrew install latest

でnodebrewを入れました. 最後のコマンドでそこそこ時間がかかります.

次に最新バージョンを確認しましょう.

$ nodebrew list
v0.12.0

current: none

v0.12.0みたいですね. ここに出てきたバージョンを有効にしましょう.

$ nodebrew use v0.12.0
use v0.12.0
$ nodebrew list
v0.12.0

current: v0.12.0

有効にした後再びnodebrew listすると, currentのところがnoneではなく, そのバージョンに変わっているはずです.

次にPATHを通します.
上の記事には

$ echo 'export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin' >> ~/.bashrc

とありましたが, 僕はbashじゃなくてzshを使っているので, 最後だけ書き換えて

$ echo 'export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin' >> ~/.zshrc

としました. 自分が使ってるシェルに合わせて書き換えてください.
直接.zshrc等に

export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin

を追加するのでも大丈夫です.

これで一安心, 早速インストールしたNode.jsのバージョンを確認してみましょう.

$ node -v
zsh: command not found: node

............あれ?
ああそうだ, 設定ファイルにPATHを追加しただけでまだそれが有効になってませんね.
通したPATHを有効にするためにログインシェルを再起動してやりましょう.

$ exec $SHELL -l

これでnodeコマンドが使えるかと思います. バージョンを確認してみましょう.

$ node -v
v0.12.0

やった!できました! ここまでがNode.jsのインストールです.

CoffeeScriptをインストール

ここからは特にどこを見ても同じだと思います.

まずはnpmを入れましょう.

と思ったけど

$ npm -v
2.5.1

............入ってた.

nodebrewやら入れた時についてきたんですかね... ?

まあいいやってことで, 早速CoffeeScriptを入れてしまいましょう.

$ npm install -g coffee-script
$ coffee -v
CoffeeScript version 1.9.0

バージョンも確認して, めでたしめでたし.

HelloWorld

HellowWorldしてみましょう.

helloworld.coffee

helloworld = -> console.log "Hello, World!"
helloworld()
$ coffee helloworld.coffee
Hello, World!

幸せです.

---追記---

ちなみにCoffeeScriptJavaScriptコンパイルするには

$ coffee -c helloworld.coffee

です.
これで同名のjsファイルが吐き出されます.

静的型付けと動的型付け

おはようございます, やまじゅんです.

この記事はklis Advent Calendarの記事になります.
やるやる言いながら25日大幅に過ぎてからの更新ですみません.

klis Advent Calendar 2014 - Adventar

遅くなったので余ってる所埋めるつもりでいきます.
元々僕はブログなど持っていなかったのですが, Advent Calendarに記事を書かないかと誘われ, せっかくだし一つくらいアウトプットの場があっても良いなと思い軽率にブログ開設した次第です.
これからちょくちょく更新していきたいなと思うのでよろしくお願いします.

誰だお前は

形式的にはklis14のやまじゅんです. 三年次編入で入ってきたので実質klis12として活動しています.

  • あまりプログラミングはしない人間です.
  • 元々は電気情報工学科に居ました. 電気回路, 電子回路, 電磁気などやっておりました.
  • 画像を対象とした機械学習(特にDeep Learning)について研究する予定です.
  • 詳しくはTwitterでも.

はじめに

型システムに関してはちゃんと勉強したわけではないので適当な事言ってるかもしれません, 言ってたらすみません.
そういうところは優しく指摘してくださると助かります.

静的型付"""き"""言語

日頃TLを見ているとよく「静的型付け言語」や「動的型付け言語」といった言葉を目にするような気がしますが, 最近知りましたがこれは誤植だそうですね(単純に日本語の話).
Twitterで「静的型付け言語」などとつぶやくと下のようなbotに星をぶつけられることもあるようです. 怖いですね.

「静的型付け」「動的型付け」みたいに「言語」を付けなければ問題ないっぽいです.

静的型付き言語と動的型付き言語の違い

まずはここからですね. Wikipediaから引用すると,

静的型付け

静的型付け(せいてきかたづけ、英: static typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型が、コンパイル時など、そのプログラムの実行よりも前にあらかじめ決められている、という型システムの性質のことである。

動的型付け

動的型付け(どうてきかたづけ、英: dynamic typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型を、コンパイル時などそのプログラムの実行よりも前にあらかじめ決めるということをせず、実行時の実際の値による、という型システムの性質のことである。

らしいんですけど, まあ要は静的型付けはコンパイル時に型エラーがないかチェックしますよー, 動的型付けは特にチェックはせずにいきなり実行しますよー(型エラーが出たらその時吐く), みたいな感じだと思ってます(僕は).
なんでだいたい静的型付き言語では変数宣言時に型名を書きますし動的型付き言語では書かないですね.
(ただしOCamlなど「型推論」がある静的型付き言語は型を書かなくてもコンパイラがその後の挙動から勝手に型を推論してくれます. ただしこれは動的型付け的なものではなくて, あくまでコンパイル時に型チェックしてますしその時点で型エラーがあれば吐きます.)

それぞれの型付けの利点

静的型付けと動的型付けで感じる利点を簡単に言ったら

静的型付け

  • 型エラーを早期に検知できる
  • コードの安全性を保証できる
  • メソッドの特性がわかりやすい

動的型付け

  • 型書かなくていい
  • 修正への対応が容易

ぐらいしか思いつかない(プログラミングしないので).
欠点はそれぞれ相手の利点を逆にした感じですね.

静的型付き言語は大規模な開発だとかより厳格な整合性が求めれられる開発(OSなど)に向いていて,
動的型付き言語はそれ以外に向いてるってイメージです.

静的型付き言語は最初の型定義で間違えると後から修正するのが大変だとか, 仕様変更に伴う修正が大変だとかも言われてるみたいですが, 最近は型推論による型名省略でそこらへんの欠点が補われてるらしいですね.

最後に

型システムについてもっと勉強したいならこの本とかいいらしいです.

Amazon.co.jp: 型システム入門 −プログラミング言語と型の理論−: Benjamin C. Pierce, 住井 英二郎, 遠藤 侑介, 酒井 政裕, 今井 敬吾, 黒木 裕介, 今井 宜洋, 才川 隆文, 今井 健男: 本

筑波大学附属図書館で借りるならこっち

http://www.tulips.tsukuba.ac.jp/mylimedio/search/book.do?target=local&bibid=1478785

書くことが思いつかなすぎて特に詳しくもないこんな話題に手を出してしまいました. すみませんでした.