77
プログラマになれない あなたのための言語戦略 Present by ぱろっと(@parrot_studio) for Gunma.web #7 @ 2011/12/17

プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

Embed Size (px)

DESCRIPTION

Gunma.web #7の発表 一部内輪向けのスライド削除 詳しくは以下で http://d.hatena.ne.jp/parrot_studio/20111220/1324391867

Citation preview

Page 1: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

プログラマになれない あなたのための言語戦略

Present by ぱろっと(@parrot_studio)

for Gunma.web #7 @ 2011/12/17

Page 2: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

Profile:

ぱろっと

@parrot_studio

parrot-studio.com

Page 3: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

ところで・・・ by the way...

Page 4: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

比較的「言語」寄りの

プレゼンが多い私ですが・・・

Page 5: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

プログラミング言語は山ほどある

from: http://news.mynavi.jp/news/2011/11/14/012/

Page 6: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

キーワードもいろいろ(´・ω・)っ

コンパイル / インタプリタ / 中間コード / VM

手続き型 / オブジェクト指向 / 関数型

クラス / プロトタイプ / 多重継承

無名関数 / クロージャ / デリゲート

Page 7: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

“何を言ってるのか

さっぱりわからない・・・(lll゚Д゚)”

Page 8: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

とはいえ、Webで仕事をするなら、

「各言語の大雑把な特徴」

くらいは知っていた方がお得

Page 9: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

そう、プログラマでなくても(`・ω・´)

Page 10: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

というわけで・・・ with the reason to say...

Page 11: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

“私が読んだり書いたりしたことがあり、

Webシステムで使われている言語”

だからPythonとか

GoとかDartとか

APLはないのよ(´・ω・`)

Page 12: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

これを「7つ」見ていきましょう

Page 13: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 14: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

1. Perl

事例 : mixi / hatena

自作 : ダイス機能付きチャット

Page 15: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

1. Perl

・ 軽量言語(LL)としては古い部類

・ Webの黎明期を支えた重要な言語

・ Linuxに入ってないことがまずない

Page 16: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

1. Perl

・ なんだかんだで技術者がたくさん

・ 自分もWeb系言語では最初に触れた

Page 17: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

1. Perl

・ 「フリーでのスクリプト配布」

という文化があった

・ OSSとはまた違う感覚

Page 18: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

1. Perl

・ 古い言語だがフレームワークが

きっちり整備されている

・ 今でもやってる人が多いということ

Page 19: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 20: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

2. Java

事例 : ECサイトや基幹システム等

Androidアプリ

自作 : ギルド戦出欠管理システム for RO

Page 21: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

2. Java

・ 特にSI系で根強い

・ 大規模開発に「都合の良い」仕様

・ クリティカルな性能要求にも対応可

Page 22: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

2. Java

・ 利用者数ではTOPクラス

・ なんだかんだで実績がある

・ なんだかんだで安定して速い

Page 23: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

2. Java

・ 一般のWeb系も無縁ではない

・ Apacheのプロジェクトで使われまくり

・ Androidアプリ開発言語としても

Page 24: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 25: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

3. Ruby

事例 : Twitter / cookpad / R天

自作 : RDGC / Fragment of Stars / etc...

Page 26: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

3. Ruby

・ 新しめの会社がよく使っている

・ スタートアップでRailsとかありがち

・ 「とりあえず動くもの」が作りやすい

Page 27: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

3. Ruby

・ その気になればなんでもできる

・ 「全て」がプログラマに解放されている

・ 時に「黒魔術」と称されることも

Page 28: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

3. Ruby

・ 「あるべき姿」を常に追求するため、

仕様変更がそれなりにある

・ 1.8のコードはたいてい1.9では動かない

Page 29: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

3. Ruby

・ これらの特徴から、Java屋というか

SI系で嫌われる感

・ 「なんでもできてしまう」のが都合が悪い

・ 実際は採用実績もある

Page 30: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 31: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

4. PHP

事例 : Facebook / Wikipedia

WordPress系 / OpenPNE系

Page 32: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

4. PHP

・ 「技術がっつりじゃない人」も

触れることが多い言語

・ CMS等でよく使われているため

Page 33: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

4. PHP

・ レンタルサーバだと、

最初から入っているケースが

・ WP一式がプリインストールというプランも

Page 34: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

4. PHP

・ 決して「簡単」な言語ではない

・ 言語を「まともに」習得するコストは

他と変わらないはず

Page 35: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 36: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

5. C#

事例 : EC系サイトなど / MSのサイト

Page 37: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

5. C#

・ 立派にWebで使われている言語

・ Javaを今風に書き直したっぽいイメージ

・ もちろんWinアプリにも

Page 38: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

5. C#

・ Windows「専用」と誤解されやすい

・ ISO標準だし、JISも採択

・ Linux等で動かす環境がちゃんとある

Page 39: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

5. C#

・ 公式な開発環境があるのがでかい

・ 大規模開発では環境の統一がわりと重要

・ 無料版もあるし、有料版は高機能

Page 40: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 41: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

6. Scala

事例 : Foursquare / (Twitter)

Page 42: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

6. Scala

・ 大規模な並列処理に向いている

・ ゆるめの関数型

・ Javaと関数型のいいとこ取り

・ see : Gunma.web #5

Page 43: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

6. Scala

・ Webフレームワークもちゃんとある

・ 「Lift」はFoursquareも採用

・ TwitterのフロントはRuby

Page 44: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

6. Scala

・ Javaが得意だから

Scalaも簡単・・・とはならない

・ そもそも関数型的な設計は難しい

・ RubyやC#あたりで慣らした方が・・・

Page 45: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Page 46: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

7. JavaScript

事例 : ほとんどのWebサイト

自作 : (´・ω・`)としたー

Page 47: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

7. JavaScript

・ HTMLを操作するために

使われることが多い

・ 知らないWebプログラマはまずいない

・ 少なくとも、書くだけは書ける

Page 48: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

7. JavaScript

・ 「誰にでもできそう」と誤解される言語

・ 実際はとても難しい

・ jQuery等で書くのが楽になるが、

設計が楽になるわけではない

Page 49: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

7. JavaScript

・ 「Node.js」によりサーバサイドにも

・ イベント駆動型サーバで大量の接続に対応

・ 各言語に似た実装はあるが

JSには「ある利点」があった

・ see : 「Software Design」 2011/09

Page 50: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

・・・そろそろお疲れでしょう(´・ω・)? perhaps you are tired...

Page 51: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

たぶん、あなたが聞きたいのはこれ

Page 52: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

“一番いい言語を頼む”

Page 53: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

そんなものはない!

(ノ゚Д゚)ノ彡┻━┻

Page 54: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

「文化」や「環境」によって

BESTは違うから、

選択肢を増やしておくのが大事

(`・ω・´) b

Page 55: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

「言語で仕事を選ぶ」のではなく、

「仕事に合わせた言語を選ぶ」のが

“プロ”グラマー(ドヤァ

Page 56: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

個人で勉強のために

何か作る時は別よ(´・ω・)?

Page 57: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

とはいえ、Webである限り、

「ある原則」に従えば、

言語はあまり関係ない

Page 58: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

REST

Page 59: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

RESTfulな実装さえできれば、

言語とかフレームワークとか

些細な問題

Page 60: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

“お前は常にシステムにとって

最良の言語を思い、

自由に選択していけ”

Page 61: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

参考文献:いっぱい

Page 62: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

ありがとうございました

(´・ω・)っ旦~

Page 63: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

【おまけ】

Page 64: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

言語の特徴を知るためには、

それが生まれた経緯と、

設計思想を知る必要がある

Page 65: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

前の言語の良い部分を引き継ぎ、

ダメな部分を整理したのが

新しい言語となる

Page 66: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

だからといって、

古い言語がダメということはない

その理屈だともうCはいらない子に(´・ω・`)

Page 67: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

ただし、新しい言語の方が、

「今風のコード」が

書きやすいのは事実

Page 68: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

書きやすい

=シンプルでわかりやすい

=直観的である

=生産性が高い

Page 69: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

最近だと関数型風のコード

see : Gunma.web #5

Page 70: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

一方で実績やライブラリが欠けていたりということも

新しいパラダイムを理解するコストもかかる

Page 71: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

結局、フレームワークの完成度にもよるが、

新しい言語の方が構造化の難易度は比較的低い

Page 72: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

【さらなる蛇足】

Page 73: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

HaskellとかErlangの本は持っているけど、

ここで挙げられるほど詳しくなかったので除外

Page 74: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

CoffeeScriptは入れようと思ったけど、

「コードが美しい」というのは

プログラマ視点過ぎるので外した

(´・ω・`)

Page 75: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

Ex. CoffeeScript

・ 美しいJavaScript

・ 「GoodParts」なJavaScriptに

コンパイルされるので安心

・ see : Gunma.web #2

Page 76: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

Ex. CoffeeScript

・ ある意味でRubyの親戚

・ もっと正確にはLispの孫(?)

・ Rails3.1からデフォルトで使われている

Page 77: プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)

Ex. CoffeeScript

・ Node.jsのコードも

CoffeeScriptで書ける

・ CoffeeScript自体がNode.jsで実装

・ 現在いろいろ試し中

http://d.hatena.ne.jp/parrot_studio/20111207/1323245393