for Gunma.web #7 @ 2011/12/17プログラマになれないあなたのための言語戦略Present by ぱろっと(@parrot_studio)
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_...
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
Upcoming SlideShare
Loading in …5
×

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

1,801 views

Published on

Gunma.web #7の発表
一部内輪向けのスライド削除

詳しくは以下で
http://d.hatena.ne.jp/parrot_studio/20111220/1324391867

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,801
On SlideShare
0
From Embeds
0
Number of Embeds
523
Actions
Shares
0
Downloads
4
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. for Gunma.web #7 @ 2011/12/17プログラマになれないあなたのための言語戦略Present by ぱろっと(@parrot_studio)
  2. 2. Profile: ぱろっと @parrot_studio parrot-studio.com
  3. 3. ところで・・・ by the way...
  4. 4. 比較的「言語」寄りのプレゼンが多い私ですが・・・
  5. 5. プログラミング言語は山ほどある from: http://news.mynavi.jp/news/2011/11/14/012/
  6. 6. キーワードもいろいろ(´・ω・)っコンパイル / インタプリタ / 中間コード / VM手続き型 / オブジェクト指向 / 関数型クラス / プロトタイプ / 多重継承無名関数 / クロージャ / デリゲート
  7. 7. “何を言ってるのかさっぱりわからない・・・(lll゚Д゚)”
  8. 8. とはいえ、Webで仕事をするなら、 「各言語の大雑把な特徴」 くらいは知っていた方がお得
  9. 9. そう、プログラマでなくても(`・ω・´)
  10. 10. というわけで・・・with the reason to say...
  11. 11. “私が読んだり書いたりしたことがあり、Webシステムで使われている言語” だからPythonとか GoとかDartとか APLはないのよ(´・ω・`)
  12. 12. これを「7つ」見ていきましょう
  13. 13. 1. Perl 事例 : mixi / hatena 自作 : ダイス機能付きチャット
  14. 14. 1. Perl・ 軽量言語(LL)としては古い部類 ・ Webの黎明期を支えた重要な言語 ・ Linuxに入ってないことがまずない
  15. 15. 1. Perl・ なんだかんだで技術者がたくさん・ 自分もWeb系言語では最初に触れた
  16. 16. 1. Perl ・ 「フリーでのスクリプト配布」 という文化があった ・ OSSとはまた違う感覚
  17. 17. 1. Perl・ 古い言語だがフレームワークが きっちり整備されている ・ 今でもやってる人が多いということ
  18. 18. 2. Java事例 : ECサイトや基幹システム等 Androidアプリ自作 : ギルド戦出欠管理システム for RO
  19. 19. 2. Java ・ 特にSI系で根強い ・ 大規模開発に「都合の良い」仕様 ・ クリティカルな性能要求にも対応可
  20. 20. 2. Java ・ 利用者数ではTOPクラス ・ なんだかんだで実績がある ・ なんだかんだで安定して速い
  21. 21. 2. Java・ 一般のWeb系も無縁ではない ・ Apacheのプロジェクトで使われまくり ・ Androidアプリ開発言語としても
  22. 22. 3. Ruby事例 : Twitter / cookpad / R天自作 : RDGC / Fragment of Stars / etc...
  23. 23. 3. Ruby・ 新しめの会社がよく使っている ・ スタートアップでRailsとかありがち ・ 「とりあえず動くもの」が作りやすい
  24. 24. 3. Ruby・ その気になればなんでもできる ・ 「全て」がプログラマに解放されている ・ 時に「黒魔術」と称されることも
  25. 25. 3. Ruby・ 「あるべき姿」を常に追求するため、 仕様変更がそれなりにある・ 1.8のコードはたいてい1.9では動かない
  26. 26. 3. Ruby・ これらの特徴から、Java屋というか SI系で嫌われる感 ・ 「なんでもできてしまう」のが都合が悪い ・ 実際は採用実績もある
  27. 27. 4. PHP事例 : Facebook / Wikipedia WordPress系 / OpenPNE系
  28. 28. 4. PHP ・ 「技術がっつりじゃない人」も 触れることが多い言語 ・ CMS等でよく使われているため
  29. 29. 4. PHP・ レンタルサーバだと、 最初から入っているケースが ・ WP一式がプリインストールというプランも
  30. 30. 4. PHP・ 決して「簡単」な言語ではない ・ 言語を「まともに」習得するコストは 他と変わらないはず
  31. 31. 5. C#事例 : EC系サイトなど / MSのサイト
  32. 32. 5. C#・ 立派にWebで使われている言語 ・ Javaを今風に書き直したっぽいイメージ ・ もちろんWinアプリにも
  33. 33. 5. C#・ Windows「専用」と誤解されやすい ・ ISO標準だし、JISも採択 ・ Linux等で動かす環境がちゃんとある
  34. 34. 5. C#・ 公式な開発環境があるのがでかい・ 大規模開発では環境の統一がわりと重要・ 無料版もあるし、有料版は高機能
  35. 35. 6. Scala 事例 : Foursquare / (Twitter)
  36. 36. 6. Scala・ 大規模な並列処理に向いている ・ ゆるめの関数型 ・ Javaと関数型のいいとこ取り ・ see : Gunma.web #5
  37. 37. 6. Scala・ Webフレームワークもちゃんとある ・ 「Lift」はFoursquareも採用 ・ TwitterのフロントはRuby
  38. 38. 6. Scala・ Javaが得意だから Scalaも簡単・・・とはならない ・ そもそも関数型的な設計は難しい ・ RubyやC#あたりで慣らした方が・・・
  39. 39. 7. JavaScript 事例 : ほとんどのWebサイト 自作 : (´・ω・`)としたー
  40. 40. 7. JavaScript・ HTMLを操作するために 使われることが多い ・ 知らないWebプログラマはまずいない ・ 少なくとも、書くだけは書ける
  41. 41. 7. JavaScript・ 「誰にでもできそう」と誤解される言語 ・ 実際はとても難しい ・ jQuery等で書くのが楽になるが、 設計が楽になるわけではない
  42. 42. 7. JavaScript・ 「Node.js」によりサーバサイドにも ・ イベント駆動型サーバで大量の接続に対応 ・ 各言語に似た実装はあるが JSには「ある利点」があった ・ see : 「Software Design」 2011/09
  43. 43. ・・・そろそろお疲れでしょう(´・ω・)? perhaps you are tired...
  44. 44. たぶん、あなたが聞きたいのはこれ
  45. 45. “一番いい言語を頼む”
  46. 46. そんなものはない!(ノ゚Д゚)ノ彡┻━┻
  47. 47. 「文化」や「環境」によって BESTは違うから、選択肢を増やしておくのが大事 (`・ω・´) b
  48. 48. 「言語で仕事を選ぶ」のではなく、「仕事に合わせた言語を選ぶ」のが “プロ”グラマー(ドヤァ
  49. 49. 個人で勉強のために何か作る時は別よ(´・ω・)?
  50. 50. とはいえ、Webである限り、 「ある原則」に従えば、 言語はあまり関係ない
  51. 51. REST
  52. 52. RESTfulな実装さえできれば、言語とかフレームワークとか 些細な問題
  53. 53. “お前は常にシステムにとって最良の言語を思い、自由に選択していけ”
  54. 54. 参考文献:いっぱい
  55. 55. ありがとうございました (´・ω・)っ旦~
  56. 56. 【おまけ】
  57. 57. 言語の特徴を知るためには、 それが生まれた経緯と、設計思想を知る必要がある
  58. 58. 前の言語の良い部分を引き継ぎ、 ダメな部分を整理したのが 新しい言語となる
  59. 59. だからといって、古い言語がダメということはない その理屈だともうCはいらない子に(´・ω・`)
  60. 60. ただし、新しい言語の方が、 「今風のコード」が 書きやすいのは事実
  61. 61. 書きやすい=シンプルでわかりやすい=直観的である=生産性が高い
  62. 62. 最近だと関数型風のコードsee : Gunma.web #5
  63. 63. 一方で実績やライブラリが欠けていたりということも新しいパラダイムを理解するコストもかかる
  64. 64. 結局、フレームワークの完成度にもよるが、新しい言語の方が構造化の難易度は比較的低い
  65. 65. 【さらなる蛇足】
  66. 66. HaskellとかErlangの本は持っているけど、ここで挙げられるほど詳しくなかったので除外
  67. 67. CoffeeScriptは入れようと思ったけど、 「コードが美しい」というのは プログラマ視点過ぎるので外した (´・ω・`)
  68. 68. Ex. CoffeeScript ・ 美しいJavaScript ・ 「GoodParts」なJavaScriptに コンパイルされるので安心 ・ see : Gunma.web #2
  69. 69. Ex. CoffeeScript・ ある意味でRubyの親戚 ・ もっと正確にはLispの孫(?) ・ Rails3.1からデフォルトで使われている
  70. 70. Ex. CoffeeScript・ Node.jsのコードも CoffeeScriptで書ける ・ CoffeeScript自体がNode.jsで実装 ・ 現在いろいろ試し中 http://d.hatena.ne.jp/parrot_studio/20111207/1323245393

×