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

Post on 05-Jul-2015

1.350 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Present by ぱろっと(@parrot_studio)

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

Profile:

ぱろっと

@parrot_studio

parrot-studio.com

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

比較的「言語」寄りの

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

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

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

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

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

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

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

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

“何を言ってるのか

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

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

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

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

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

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

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

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

だからPythonとか

GoとかDartとか

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

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

1. Perl

事例 : mixi / hatena

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

1. Perl

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

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

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

1. Perl

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

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

1. Perl

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

という文化があった

・ OSSとはまた違う感覚

1. Perl

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

きっちり整備されている

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

2. Java

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

Androidアプリ

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

2. Java

・ 特にSI系で根強い

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

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

2. Java

・ 利用者数ではTOPクラス

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

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

2. Java

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

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

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

3. Ruby

事例 : Twitter / cookpad / R天

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

3. Ruby

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

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

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

3. Ruby

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

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

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

3. Ruby

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

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

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

3. Ruby

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

SI系で嫌われる感

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

・ 実際は採用実績もある

4. PHP

事例 : Facebook / Wikipedia

WordPress系 / OpenPNE系

4. PHP

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

触れることが多い言語

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

4. PHP

・ レンタルサーバだと、

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

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

4. PHP

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

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

他と変わらないはず

5. C#

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

5. C#

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

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

・ もちろんWinアプリにも

5. C#

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

・ ISO標準だし、JISも採択

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

5. C#

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

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

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

6. Scala

事例 : Foursquare / (Twitter)

6. Scala

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

・ ゆるめの関数型

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

・ see : Gunma.web #5

6. Scala

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

・ 「Lift」はFoursquareも採用

・ TwitterのフロントはRuby

6. Scala

・ Javaが得意だから

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

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

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

7. JavaScript

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

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

7. JavaScript

・ HTMLを操作するために

使われることが多い

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

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

7. JavaScript

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

・ 実際はとても難しい

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

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

7. JavaScript

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

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

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

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

・ see : 「Software Design」 2011/09

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

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

“一番いい言語を頼む”

そんなものはない!

(ノ゚Д゚)ノ彡┻━┻

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

BESTは違うから、

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

(`・ω・´) b

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

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

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

個人で勉強のために

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

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

「ある原則」に従えば、

言語はあまり関係ない

REST

RESTfulな実装さえできれば、

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

些細な問題

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

最良の言語を思い、

自由に選択していけ”

参考文献:いっぱい

ありがとうございました

(´・ω・)っ旦~

【おまけ】

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

それが生まれた経緯と、

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

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

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

新しい言語となる

だからといって、

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

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

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

「今風のコード」が

書きやすいのは事実

書きやすい

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

=直観的である

=生産性が高い

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

see : Gunma.web #5

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

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

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

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

【さらなる蛇足】

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

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

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

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

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

(´・ω・`)

Ex. CoffeeScript

・ 美しいJavaScript

・ 「GoodParts」なJavaScriptに

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

・ see : Gunma.web #2

Ex. CoffeeScript

・ ある意味でRubyの親戚

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

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

Ex. CoffeeScript

・ Node.jsのコードも

CoffeeScriptで書ける

・ CoffeeScript自体がNode.jsで実装

・ 現在いろいろ試し中

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

top related