残業プログラマのためのスキルアップリンク集
もくじ
プログラミング
プログラミング言語
関数型言語
Haskell
Lisp
Ocaml
ML
SICP
プログラマ
検証
QuickCheck
Coq
モデル検査
形式手法
CSP
そのほか
ツール
コンテスト
研究室
学会
プログラミング系のブログ
更新ログ
オススメ本
プログラミング言語
『プログラミングの基礎 (Computer Science Library)』

プログラミングの基礎をOCamlで解説。特定のプログラミング「言語」の基礎を教える本は多くあれど、「プログラミングの基礎」を語る本は少ない。この本は数少ないその一冊だろう。プログラミングを始める人にまず薦められる本だ。丁寧で、プログラミング初心者にもってこい。全部で270ページあるのだが、175ページめ引用「本の半ばを過ぎたところで最初の完動プログラムを作ることができました。皆さんはすでに立派なプログラミングの中級者です。」とある。なにっ?唐突に中級者になれるのだ(笑)しかし、笑ったけど、ほんとにそうかもしれないと思う。なぜなら、この本は関数型言語の機能を使ったり、デザインレシピという道具を使ったりして、プログラミングの作り方の基本がしっかり身につけられるようになっている。この本を読んだ読者からすると、多くのプログラマがあまりに基本を身に着けていないことに気づくだろう。プログラミング言語の入門書を何冊か読んだだけのビギナーより、この本の読者のほうが数段上の力がある、とぼくには思える。そして、第24章「まとめ -プログラミングとは-」の264ページも引用。「本書を読み終えた皆さんはプログラミングの上級者であるばかりでなく、すでにOCamlの上級者でもあります。」プログラミングの基礎を勉強しているはずが、いきなり上級者になって、しかもOCamlの上級者になってしまった!wwwww。ドラゴンボールの亀仙人の修行か!(笑)ちょっと大げさだけど、すごくいい本なんだ。ぼくがだれかにプログラミングを教えるとしたら、この本を使うだろう。もっと早くこの本が出版され、学生時代に読んでいたら、と思う。ぜひ、みんなに読んでもらいたい。もっと早くこの本が出版され、学生時代に読んでいたら、と思う。ぜひ、みんなに読んでもらいたい。
プログラミング言語研究への誘い「職人プログラマ」と「ソフトウェアの専門家」の差とは?
百年の言語 --- The Hundred-Year Languageプログラミング言語に力の差はあるのか?
言語の世界Ruby作者まつもとゆきひろによる
どう書く?orgお題をいろんな言語で実装して、投稿するサイト
The Computer Language Benchmarks Game プログラミング言語の性能比較。
TIOBE Software: Tiobe Indexプログラミング言語ランキング。検索エンジンの検索数から算出。
僕やはてながPerlを選ぶ理由 2005-05-18 - naoyaのはてなダイアリー引用「そんな僕の物作りの過程においては、コンパイラにやたらと怒られたり、変数の型を気にしたり、変数に入れるオブジェクトが何者だったりするかをいちいち意識しなければならない静的型付けの言語は性に合わなかったんですね。一方で簡単なことは簡単に、難しいことでもそれなりにできる Perl という言語は、僕のやり方に合っていたし、なんとなく"Hackしている"という気分にも浸ることができたんです。」。ちょっと動的型付け、静的型付けって問題かは、わからないな。Haskellでもハックしてる気になれるけどなあ。
プログラミング言語ヒエラルキー
関数型言語、関数型プログラミング
なぜ関数プログラミングは重要か
「関数型言語」に関するFAQ形式の一般的説明(on demandに加筆修正します) - Qiita東北大学の住井先生による関数型言語の解説。
関数型言語 - 関数型プログラミング言語の定義&実装の仕方の例 - Qiita同じく住井先生。
なぜ次に学ぶ言語は関数型であるべきかOcamlで具体的に説明されています。これだけではない気もする。
『関数プログラミングの楽しみ』まだ読んでないけど、時間をつくって読みたいな。
関数プログラミングへの招待書評など、日本語のページでは珍しく豊富なページ。
関数型言語の技術マップ
Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜私はAdvanced Beginnerぐらいかな。
関数型言語を独学で勉強している学生です への答
遅延評価ってなんなのさ
函数プログラミングのエッセンスと考え方
Functional Jobs // Dream Jobs for Functional Programmers関数型言語プログラマのための求職情報。関数型言語って範囲で共有している知識(ラムダ?)があるから、こういうサイトができる。それはすばらしいことだと思う。
ATSプログラミング入門TBD。依存型とか関係ありそう。
Try F#: Learnブラウザ上で、F#を実行し、学習できるよう。
ニコニコ生放送の配信基盤改善Erlangの話。
Lambda calculus in JS syntax
JavaScript で Lisp の処理系 (と REPL) を実装してみた - mooz deceives you
JavaScriptで読む「ラムダ計算基礎文法最速マスター」 - 貳佰伍拾陸夜日記
MiSPLismall lisp implementation written in javascript
The Implementation of Functional Programming Languages - Microsoft ResearchSimon Peyton Joneによる著作のPDF。
Haskell
やさしい Haskell 入門 (バージョン98)WEBで始めるならここか。
『プログラミングHaskell』ぱらぱら見たらあんまりと思っていたがAmazonで評判がよい。読んでみたい。
プログラミング Haskell 講義スライド愛知県立大学の情報科学部2年対象の計算機言語論で、『プログラミングHaskell』を教科書で使ってます。日本語のスライドあり。
Learn You a Haskell for Great Good!
『ふつうのHaskellプログラミング』わかりやすい入門書。遅延評価などをおさえており、関数型言語の楽しさに入門できる。モナドは説明不足?
『Real World Haskell』
『Real World Haskell』の草稿英語の原著の草稿を公開。レビューコメントつき。
Haskellの楽しみ:手続き操作型というパラダイム
モナモナ言わないモナド入門
QAで学ぶMonad - あどけない話
CS240h: Functional Systems in Haskellスタンフォード大のHaskellの授業。Phantomとか。
DanoMoi と HaskellHaskellと副作用の話。
Haskell アクション 超入門 - QiitaHaskellと副作用の話。こんなに解説が乱立するとは。説明がたくさんあるってどういうことだろう。難しいってこと?
副作用の話 - モナドとわたしとコモナドHaskellと副作用の話。
HaskellのモナドIO - HaHaHa!(old) - haskellHaskellと副作用の話。ちょっと古い。
Haskellには副作用がないのか? - あどけない話Haskellと副作用の話。
Haskell の Monad とは言語内DSLのフレームワークである - あどけない話Haskellと副作用の話。じゃなかったか。。。
Parallel and Concurrent Programming in Haskell並行、並列プログラミングをHaskellで。
オンライン版をフリーで読めるっぽいです。


HRR: Quick startDB操作系?SQL系のHaskellライブラリらしい。
Extending Query, Relational, Typeful, Composable - khibinoの日記HRRの説明?
GHC(STG,Cmm,asm) illustrated for hardware personsHaskellの代表的コンパイラGlasgow Haskell CompilerことGHCのアーキテクチャとか解説。
xmonad | the tiling window manager that rocksキーボードだけでがんばれるウインドウマネージャーらいいです。BSDとLinuxしかないぽい。
Haskell-mode for EmacsEmacs用のHaskell開発環境。
本物のプログラマはHaskellを使う
Yesod Web Framework for Haskell

ぜんぜんわかっていないけど、Yesodを勉強すると、わからないからこそ、自分のHaskell世界が広がる気がする。
Web アプリケーション・フレームワークYesod
Yesod勉強会『HaskellとWeb開発』田中英行さんの説明資料。
(祝) Yesod 1.0 勉強会
Haskell web programming A Yesod tutorial
Yesodを支える技術
Haskellが使えるホスティングサービス @ val it: α → α = fun
できる!Template Haskell
Pandoc a universal document converterHaskellで書かれたドキュメントフォーマットのコンバータ。マークダウン記法からHTMLのスライドショーが作れるのがいいね。texとかにもなるよ。「If you need to convert files from one markup format into another, pandoc is your swiss-army knife.」
Haskell Advent Calendar 2011
モナドのすべて
Haskell - Wikibooks, collection of open-content textbooks
HaskellでWebアプリを作ってみた Vol.1(ライブラリ使わない編)
Go言語の型宣言をHaskellから理解する
どっぐらいふ・ろぐHDBC-sqlite3の使い方など。cabelでインストールする必要もあるよ。
Haskell で OAuth API利用Tweetしてみた - HaskellでTwitterクライアント開発blog(仮)twitter関係では、OAuthの使い方もコードにべたっと書いてあって、勉強になる。
Conduit で Twitter Streaming API を扱う - KrdLab's blog
Haskellのコード150行で, Twitterに投稿するだけのクライアントを作ったよ - プログラムモグモグうえにコードが似てる。あまり参考にしていない。
HaskellでOAuthとTwitter API - kenkov diary
Haskell で OAuth - EAGLE 雑記
作ってみよう Enumerator - http-enumerator で Twitter API ぺろぺろ - ごったく
haskell で twitter の timeline を取得してみる - プログラマのネタ帳hs-twitterって、ライブラリは結局、使えないぽい。あまり参考にならないか。
haskellでtwitter APIを使う - tsurushuuの日記古い時代の言語設定を読む例。JSONの扱い方は参考になるかも。
HaskellでJSON Web APIを作ると幸せになれるかもよ - Fujimura
HaskellでTwitterにpostする - yunomuのブログWeb.Authenticate.OAuthとか使って、エレガントだけど、WEBアプリだったら、どう使うのか、不明。
HaskellでRSSを読み込む
(Haskell) Simple BroadcatcherこれもRSS読む系。
HaskellでFTPクライアント | hippos-lab::blog
本物のプログラマはHaskellを使う - 第39回 一般向けの「Haskell Platform」とインストール・ツールの「ca...:ITpro テキストI/OのUnicode対応文字化けに悩まされることがあります。未熟じゃ。
windowsでHaskellのIOまわりで日本語を文字化けなく表示させる方法 - プログラミングお勉強きろくこれも文字化け参考めも。
Haskell のお勉強「まとまった日本語の解説がほとんど無いので、 簡単な解説記事を書いてみました。」とのこと。
CS240h: Functional systems in Haskellstanford.eduの授業?
EclipseFPHaskell開発環境のEclipseプラグイン。コンテンツ・アシスト、コンパイルエラー検知。Eclipse自体、最近重いから、つかってない…
Try Haskell! An interactive tutorial in your browserブラウザ上でHaskellをちょっといじれる。IE非対応?
Haskell 脳の恐怖ネタ。
OCaml
『プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~』
数理科学的バグ撲滅方法論のすすめ東北大学の住井先生による連載。未読。Ocamlで説明してあるらしいのでここに分類。
Try OCamlブラウザ上で、OCamlを実行し、学習できるよう。
Js_of_ocaml「Js_of_ocaml is a compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser.」
ウェブブラウザで関数型プログラミング! js_of_ocaml
Ocamljs開発止まっているぽいです。「Ocamljs is a system for compiling OCaml to Javascript.」
ocamljs を使おう : OCamlからJavaScriptへの変換
型付きWebフレームワークで遊んでみた // Speaker DeckOCamlのWeb FWの話。
OCaml toplevelWeb上のOCaml処理系
Effective ML 9ヶ条
ML
プログラミング言語SML#解説C言語とのシームレスな連携などが特徴ときいております。
『プログラミング言語 Standard ML入門』SML#の開発者大堀先生が書かれた本。


『プログラミング言語ML』むかし読んだが、わかりやすかったと思います。
Lisp
Lisp関連書籍まとめ
Practical Schemeプログラミング言語Schemeの紹介、海外エッセーの翻訳、「普通のやつらの上を行け」等。
Scheme手習い - The Little Schemer -
Let Over Lambda 50 Years of LispLISPのマクロってすごいらしい。
『初めての人のためのLISP』LISP入門の名著。復刊。
Gauche - A Scheme Implementationプログラミング言語Schemeのスクリプト処理系である。R5RS準拠。多バイト文字列を組み込みでサポート。
JAKLD Javaアプリケーション組み込み用のLispドライバ Javaで記述されたSchemeのインタープリタ。湯淺太一先生が作られたようです。
TUTScheme,TUTScheme/Tkの処理系
Lispの名言が凄すぎる「私が知る中で、書く人がタイピングよりも考える事に費やす時間が長い言語は、SQL, Lisp, Haskellだけだ。 - Philip Greenspun」とあるが、タイピングが多いプログラマほど、肉体労働に近いわけだな、ふむふむ。
How to Design Programsデザインレシピを使った設計方法の説明の本らしいです。電子ブック本文あり。読んでみたい。Lispを使って説明していあるらしいので、とりあえずここに分類。
マンガで分かるLisp(Manga Guide to Lisp)ミクちゃんが説明してくれる!
魔法言語 リリカル☆Lispノベルゲーム風のLispチュートリアル。すすんでるな。。。
Web系女子がLispと出会って統計学に目覚めるまでのお話
Schemeプログラマのレベル10
SICP
Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)タイトルの頭文字をとってSICPとか、魔術師本と呼ばれてます。ソフトウェアの設計、構成法の本質を学ぶなら、この一冊かもしれない。表示の魔術師の絵がなんとも魅力的。プログラミング言語の説明本はたくさんあるけど、プログラムの部品の作り方、組み合わせてプログラム全体を構成する方法を説明した本は数少ない。この本がまずは決定版ではないだろうか。まだ私も7割がたしか読んでませんが、オススメです。
Welcome to the SICP Web Site (Structure and Interpretation of Computer Programs )SICPのオンラインページ。この本は英語ならこのサイトで全文読めます。
『計算機プログラムの構造と解釈』
ぺた語義:京大における Lisp を使ったプログラミング教育 京大でLISPを教えているのは、LISPプログラマを養成するためではないそうです。「プログラミングというのは、単に与えられた問題をコーディングする技術でなく、計算機科学の成果であるさまざまな概念や機能を駆使できる能力である。この意味で、講義で採用しているSICPは、きわめて適切な教科書である。」SICPでLISPの方言であるSchemeで解説しているので、LISPを使っているというわけです。本文では、「SICPは、これらを単に概念として紹介するのではなく、Lispでどのように実現されているかを具体的に解説している。」とあります。Lispってのは、シンプルにいろんなことを実現できるので、仕組みの説明にすごく向いていると思います。この記事は、プロ組ラング言語を理解してだけでは、プログラミングには不足なのだと言っている、いい記事ですね。計算機科学の成果をしっかり学ぶことが大事だという点、同感です。
CS 61A Home PageUniversity of California BerkeleyではSICPの内容をプログラミング言語をPythonに変えて教えてるみたいです。講義ノートもあります。
6.S184 - Zombies drink caffeinated 6.001
6.01 Homepage / Spring 2012もともとSICPだった講義は内容も改められ、やはりプログラミング言語をPythonになっているようです。
本当のプログラミング初心者がSICPを読んではいけない三つの理由
いまSICPを読むのは時間の無駄ほんとかなあ
本の虫: MITがSICPを教えなくなった理由こちらはSICPの教師によるコメントだから説得力があるがSICPの価値はそれでも価値はあると思う。
プログラマ
『ハッカーと画家 コンピュータ時代の創造者たち』プログラマの気骨を語っているエッセイ。おすすめです。
ぼくはこうしてプログラミングを覚えたフェイスブックのエンジニアで史上ベスト3に入るといわれるEvan Priestley氏へのインタビュー。
歴史に残るハッカー10人
名前くらいは知っておきたい伝説のプログラマーたち - UEI shi3zの日記
マンガ『ビル・ゲイツ物語』:すがやみつるblog
プログラマの区分 Memoized Recursionファンタジーのキャラっぽく分類。おもしろい。
落ちこぼれだった私が、プログラマとして企業を越えて自由に生きる「夢を叶える方法」fukamachiさんの方法と経緯。プログラムを書き続けたことがポイントな気がする。
Twitter 社採用面接受験記
一度は食べたい至高のプログラマー焼きとん 新宿ささもと - UEI shi3zの日記
若い女はどうか知らんが、おばちゃんプログラマーは重宝する。 | ライフハックちゃんねる弐式
60%の人間はプログラミングの素質がない
QuickCheck
QuickCheckでデータ駆動型テストを行う
QuickCheck - Wikipedia, the free encyclopediaHaskell以外でも使えるようです。
HowTo:QuickCheck
QuickCheckも動かす:test-framework - nabeyangの日記
404 Blog Not Found:バカはバカにならない - 書評 - ファジング:ブルートフォースによる脆弱性発見手法QuickCheckにも言及あります。
The Coq Proof Assistant
The Coq Proof AssistantCoq本家。
Proof GeneralEmacs上のCoqフロントエンド。Generalの顔が怖い!
fm-forum @ ウィキ - Coq参考資料
名古屋大学の講義資料「数理解析・計算機数学 III」下の方。
Asai Laboratory, Ochanomizu UniversityCoqゼミのコーナーがあります。
プログラミング Coq 絶対にバグのないプログラムの書き方大学生によるCoqチュートリアル。
Coq Pukiwikiインストールのしかた、とか。
Coq クィックリファレンス日本語のリファレンス。途中。
Software FoundationsTAPLのBenjamin C. Pierceさんの電子ブック。教科書らしい。このコースは以下のことをするとのこと。
「It develop basic concepts of functional programming, logic, operational semantics, lambda-calculus, and static type systems, using the Coq proof assistant.」
読んでみたい。
モデル検査
Spin - Formal Verificationポピュラーなモデル検査器。
The SMV Systemこれまたポピュラーなモデルチェッカー。
LTSA - Labelled Transition System AnalyserCSPを先祖にもつFSP記法がまあまあシンプルで好きです。Spinよりさくっと美しく書ける。規模が大きいとなるとSpinのが実用的かも。アップデートがJune 2006で止まっているけど、まあまあ使えるレベルまでいったということかもしれません。
PAT: Process Analysis Toolkitシンガポール発の、モデル検査ツール(シミュレーションとかもできる)。CSPの拡張(グローバル変数相当もサポート)していて、実用的にしているようで興味深い。他にも確率、リアルタイム性に関する検証ができるようだ。
形式手法
B methodコード詳細化が特徴。いまでもコード詳細化って重要なのかが興味あるところ。
高信頼ソフトウェア構築技術に関する動向調査 調査報告書パリ地下鉄14号線の信号システムが「Bメソッドを適用」、「これまでにバグがない」。
CSP
Communicating Sequential Processes (CSP)ホーア(Tony Hoare)による、CSPの教科書の電子版(free)。
WoTUGCSPの応用、普及しているフォーラム。
CSPコンソーシアム日本のCSPの団体。存在を知らなかった。
PAT: Process Analysis Toolkitシンガポール発の、モデル検査ツール(シミュレーションとかもできる)。CSPの拡張(グローバル変数相当もサポート)していて、実用的にしているようで興味深い。他にも確率、リアルタイム性に関する検証ができるようだ。
圏論
プログラマのための圏論の基礎(仮題)
圏論によるプログラミングと論理(灘校パソコン研究部 文化祭2013)
2013年 圏論勉強会 資料
スピヴァックの圏論教科書
ツール
NTEmacs JP
color-theme homepageEmacsのテーマがえ。色がえ。
codepadオンラインのコンパイラ、インタープリタ。
Meadowエディタ。もとにしているEmacsが古いので、CoqとかHaskellモードが使えないので使わなくなった。(2011/11/3時点)
Happy Hacking Keyboard Professional BT 日本語配列/墨 PD-KB620B

プロならキーボードもこだわろう。仕事で使っている。プライベートでもほしいところ。妻は許すだろうか。。静電容量で省スペース、打鍵感もよい。Bluetoothでゲーブルもない。和田英一先生の言葉です。
アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうとも、鞍は自分で担いで往く。馬は消耗品であり、鞍は自分の体に馴染んだインタフェースだからだ。いまやパソコンは消耗品であり、キーボードは大切な、生涯使えるインタフェースであることを忘れてはいけない。
Happy Hacking Keyboard | 和田先生関連ページEmacsを開発したリチャード・ストールマンも使っている。ノートPCの上におくスタイルは尊師スタイルと呼ばれているらしいwww

社畜ちゃん台詞メーカー
Infer | A static analyzer for mobile apps | Infer
プログラミング関係のブログ
sumiiの日記
あどけない話
ヒビルテ
結城浩の日記
keigoiの日記
にわとり小屋でのプログラミング日記
檜山正幸のキマイラ飼育記
大学、研究室
小林研究室東京大学 大学院情報理工学系研究科 コンピュータ科学専攻。高階モデル検査とか。
小林・住井研究室 東北大学型システムなどの手法を利用したプログラム解析の研究
五十嵐 淳さんプログラミング言語の基礎理論、特に、型システム、並行/分散プログラミング言語、型推論、オブジェクト指向言語の型理論など。
Jacques Garrigue : Home PageLabel-selective lambda-calculus and Transformation calculusなど
IIJ Innovation Institute [山本 和彦 主幹研究員]Mewを作られた方。Haskellも書かれてます。
学会
ICFP (The International Conference on Functional Programming) 関数型言語の国際学会
International Symposium on Functional and Logic Programming
日本ソフトウェア科学会 プログラミング論研究会 (PPL)
プログラミングコンテスト
Top Coderプログラマのメジャーリーグ。コンペティションに参加すると、レーティングされ、プログラミング能力を証明する。世界中から参加。
ICFP Programming Contest 国際的なプログラミングコンテスト?