Successfully reported this slideshow.

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

4

Share

Loading in …3
×
1 of 77
1 of 77

More Related Content

More from parrotstudio

Related Books

Free with a 14 day trial from Scribd

See all

プログラマになれないあなたのための言語戦略 (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

×