Pythonとプログラミング
by
Tomohiko Himura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Pythonͱϓϩάϥϛϯά 2016-11-12 PyCon mini Hiroshima 2016
Slide 2
Slide 2 text
Րଜ ஐ • 0x20 • ౡҭͪɺౡੜ·ΕͷϓϩάϥϚ • ͖ͳPythonͷػೳ แදه • Twitter: eielh • GitHub: eiel
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
広島に来たら我馬へ
Slide 7
Slide 7 text
すごい広島
Slide 8
Slide 8 text
すごい広島 • エンジニアが集まっている • 雑談とか • 自分の作業とか • 毎週水曜日 19時
Slide 9
Slide 9 text
LT駆動開発
Slide 10
Slide 10 text
LT駆動開発 • 毎月発表して勉強する勉強会 • 毎月発表するのは大変 • とても勉強になる • 毎月 第一土曜日 or 日曜日
Slide 11
Slide 11 text
ITエンジニア合同忘年会 広島ITエンジニア合同忘年会2016 12月10日(土) 18:00
Slide 12
Slide 12 text
Pythonͷࢥ͍ग़
Slide 13
Slide 13 text
Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期
Slide 14
Slide 14 text
Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby
Slide 15
Slide 15 text
Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby • /usr/bin/pythonを置き換えてしまった
Slide 16
Slide 16 text
Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby • /usr/bin/pythonを置き換えてしまった ZVNಈ͔ͳ͘ͳΔʂʂ
Slide 17
Slide 17 text
ࠓͷ͓
Slide 18
Slide 18 text
「いろいろなプログラミング言語 を適材適所で使うということがピ ンと来ない」という人たちがいる
Slide 19
Slide 19 text
そういうことで 「広島でいろいろなプログラミ ング言語に関心を持っている人」 である火村さん
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
「最新」ばっか 追いかけててもだめだよ
Slide 22
Slide 22 text
「最新」ばっか 追いかけててもだめだよ ͳΜౖ͔ΒΕͦ͏ͩͳʜ
Slide 23
Slide 23 text
1ZUIPOͷݞΛ࣋ͭ
Slide 24
Slide 24 text
広島 プログラミング言語 火村 Pythonの肩を持つ
Slide 25
Slide 25 text
あじぇんだ • プログラミング言語の使い分け • いろんなプログラミング言語を学ぶ理由 • 雑なプログラミング言語紹介 • 例になるのかよくわかないけど例 多相 • まとめ
Slide 26
Slide 26 text
お詫び Pythonとプログラミングという タイトルをつけましたが、そん なにタイトルにあった内容に なりませんでした。僕自身が楽し んで話せるように進めていきた いと思います。
Slide 27
Slide 27 text
ϓϩάϥϛϯάݴޠ͍͚
Slide 28
Slide 28 text
なぜプログラミングするのか
Slide 29
Slide 29 text
プログラミングする主な理由
Slide 30
Slide 30 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた
Slide 31
Slide 31 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事
Slide 32
Slide 32 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい
Slide 33
Slide 33 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化
Slide 34
Slide 34 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化 • プログラミングやコンピュータへの理解を深める
Slide 35
Slide 35 text
プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化 • プログラミングやコンピュータへの理解を深める • 学習・知的好奇心
Slide 36
Slide 36 text
アプリケーション作成
Slide 37
Slide 37 text
プログラミング言語より ϓϥοτϑΥʔϜ
Slide 38
Slide 38 text
• Windows • C# VB • Mac iOS • Objective-C Swift • Webフロントエンド • JavaScript
Slide 39
Slide 39 text
選ぶ余地などない
Slide 40
Slide 40 text
プログラミングは手段
Slide 41
Slide 41 text
プログラミングは手段 త͕͋Δͱ͖ͦͦ·ͳ͍
Slide 42
Slide 42 text
webバックエンド
Slide 43
Slide 43 text
• Python • PHP • Java • Ruby • Scala • Elixir
Slide 44
Slide 44 text
たいていの場合、PHPが正解 状況によってはJava
Slide 45
Slide 45 text
我々はプログラミング言語 に使われているんだ…
Slide 46
Slide 46 text
r 1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO
Slide 47
Slide 47 text
深さに到達するために 余計につまづく必要はない
Slide 48
Slide 48 text
状況に適したものを選択する
Slide 49
Slide 49 text
自分の目的へ向かうための自動化
Slide 50
Slide 50 text
好きなもの使いやすい
Slide 51
Slide 51 text
1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO
Slide 52
Slide 52 text
適用範囲が広い 強い(確信)
Slide 53
Slide 53 text
1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO
Slide 54
Slide 54 text
素直なので 学びやすい
Slide 55
Slide 55 text
他と比較しやすい
Slide 56
Slide 56 text
私がよく使う プログラミング言語
Slide 57
Slide 57 text
最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP 仕事 仕方ないんだ
Slide 58
Slide 58 text
最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP 仕事 仕方ないんだ 1ZUIPOͳ͍͡ΌΜʂʂ
Slide 59
Slide 59 text
最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP 仕事 仕方ないんだ 1ZUIPOͳ͍͡ΌΜʂʂ 1ZUIPOৄ͘͠ͳ͍Ͱ͢
Slide 60
Slide 60 text
• 楽に解決したい • 学びたい プログラミング言語の使い分け
Slide 61
Slide 61 text
͍ΖΜͳϓϩάϥϛϯάݴޠ ΛֶͿཧ༝
Slide 62
Slide 62 text
プログラミングそのものを 理解を深めるため
Slide 63
Slide 63 text
No content
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
No content
Slide 66
Slide 66 text
No content
Slide 67
Slide 67 text
ԁபͰ͢Ͷ
Slide 68
Slide 68 text
一方向からみてるだけでは 全体像は把握できない
Slide 69
Slide 69 text
言語に問わない知識を 見つけ出すために さまざまなプログラミング言語を試す
Slide 70
Slide 70 text
プログラミングという概念を 理解することが目的
Slide 71
Slide 71 text
もっと楽に プログラミングがしたい
Slide 72
Slide 72 text
構造化定理 • 全てのアルゴリズムは3つの基本構造を組 み合わせてつくることができる • 順次 • 繰り返し • 選択
Slide 73
Slide 73 text
言語の持つ多くの機能は なくてもなんとかなる
Slide 74
Slide 74 text
プログラミングは 小さな部品を組み合わせて 大きな部品を構築する
Slide 75
Slide 75 text
大きな部品を使えば 見通しがよくなる
Slide 76
Slide 76 text
ࡶͳݴޠհ
Slide 77
Slide 77 text
本内容は個人の主観と偏見で 満ちています。なるべく間違っ たことを言わないように気を つけてはいますが、すべてを 知っているわけではありませ ん。気軽な指摘や反論はご自 由にお願いします。
Slide 78
Slide 78 text
覚えて損はないGoogle言語
Slide 79
Slide 79 text
Python • 人類をPerlの闇から救った • 文法がニュートラルな言語 • 利用範囲が広い • 非プログラマにも多く利用されている • 計算機を活用したいなら覚えるべき
Slide 80
Slide 80 text
Java • 硬いPython。比較的似ている気はする • ビッグデータの活用に活躍している • Python利用者であれば • Jythonがある • Java利用者であれば • Groovyを覚えるほうが現実的かもしれない
Slide 81
Slide 81 text
Go • Pythonの思想をC言語の得意な世界で • Pythonとはちょっと違った非同期 • Go製のコマンドラインツールが増えてる • GoとPythonが使えると強い
Slide 82
Slide 82 text
JavaScript • Pythonと似てきている • await/async • ジェネレータ • モジュールシステム • 非プログラマでも使えるべき • ブラウザを使うなら覚えるべき言語
Slide 83
Slide 83 text
async/awaitで使うloopが初めから動 いてる感じの言語 loop = asyncio.get_event_loop()
Slide 84
Slide 84 text
Pythonと立ち位置が近い言語
Slide 85
Slide 85 text
Perl • Pythonが闇に葬った言語 • Pythonを利用しているなら • 必要がないなら覚える必要はない
Slide 86
Slide 86 text
PHP • Pythonが使えるなら覚える理由はあまりない • 世界に追いついていく言語 • Pythonも使えると幅が広がる • クロージャがPythonよりも丁寧に扱える
Slide 87
Slide 87 text
# Python def hoge(): n = 1 def goro(): n + 1 # n͕ࢀরͰ͖Δ return goro() hoge() # => 2
Slide 88
Slide 88 text
// PHP function hoge() { $n = 1; $goro = function() use ($n) { // use ($n) ͕ඞཁ return $n+1; }; return $goro(); } hoge(); // => 2
Slide 89
Slide 89 text
Ruby • Pythonの良きライバル • Lispが好きならRubyのほうが楽しい • 世界に高階関数を浸透させた功績
Slide 90
Slide 90 text
Lisp • ポール・グレアムがPythonにはクロージャ がないがLispにはある • python3には nonlocalがある • マクロが強力 • docstringがある
Slide 91
Slide 91 text
特定のプラットフォーム
Slide 92
Slide 92 text
Swift • Pythonに似ているといえば似ている • というか最近の言語にいろいろい似ている • Appleに興味がなければ覚えなくてもいい • 言語という点には学べる点が多い
Slide 93
Slide 93 text
C# • async/awaitはここからきた • ひとつの標準言語
Slide 94
Slide 94 text
おまけ
Slide 95
Slide 95 text
Haskell • 文法的にはPythonに似ている言語 • 使い勝手は全然違う • どんな言語と比べても学びが多い • Pythonより強力な内包表記がある
Slide 96
Slide 96 text
Scala • Pythonにはそんなに似てない • どちらかというとRubyに似ている • forがリストの内包表記として使える • Replにペーストモードがある
Slide 97
Slide 97 text
# Python [ (x, y) for x in range(1,10) if x % 2 == 0 for y in range(1,10) if y % 3 == 0 ] // Scala for { x <- 1 to 9 if x % 2 == 0 y <- 1 to 9 if y % 3 == 0 } yield (x, y)
Slide 98
Slide 98 text
Erlang • Pythonと縁は少ない • バイナリの内包表記という機能がある • 分散・リアルタイムシステム • 学べる点が多い • 個人的には • ScalaのAkkaとの違いを学ぶために勉強している
Slide 99
Slide 99 text
%% erlang όΠφϦͷแදه << <> || <> <= <<1,2,3,4,5>>, X rem 2 == 0>>.
Slide 100
Slide 100 text
Elixir • erlangがRubyっぽくなりました • これからのwebの有力候補
Slide 101
Slide 101 text
Julia • 科学計算処理でPythonを脅かしている • 実行が早い • CythonやNumPyなら負けないとか • Haskellでデータ処理がんばってた人が • Julia使いになってた
Slide 102
Slide 102 text
Rust • 今後オープンソースの世界で活躍するはず • Haskellを使う人が「良い」と言う言語
Slide 103
Slide 103 text
C • 標準であるけどニュートラルではない • Pythonのソースをよむためにも覚えよう
Slide 104
Slide 104 text
C++ • 闇のPython • さらなる進化を続けている
Slide 105
Slide 105 text
Re: θϩ͔Β͡ΊΔϓϩάϥϛϯά • JavaScript • Python • Ruby
Slide 106
Slide 106 text
࣮Ͱૺ۰͍͢͠ • C#/VB • Java • PHP • JavaScript • C/C++
Slide 107
Slide 107 text
ϓϩάϥϛϯάͱ͍͏֓೦Λ ֶͼ͍ͨͳΒ • Erlang • Haskell • Lisp
Slide 108
Slide 108 text
文法的な部分を中心に話をしましたが コミュニティやエコシステムの違いも 本来は言語の違いになると思います
Slide 109
Slide 109 text
言語機能 多相
Slide 110
Slide 110 text
No content
Slide 111
Slide 111 text
まとめ
Slide 112
Slide 112 text
プログラミングは 多くの場合 手段
Slide 113
Slide 113 text
目的のために 楽な手段を選択すべき
Slide 114
Slide 114 text
多くの場合、言語は 使い分けさせられる
Slide 115
Slide 115 text
もしプログラミングが 目的するなら
Slide 116
Slide 116 text
得意な言語を軸に 他のプログラミング言語を学ぶことで プログラミングという概念が学べる
Slide 117
Slide 117 text
素直な言語なので Pythonと比較するのはおすすめ
Slide 118
Slide 118 text
Haskell は 面白い機能がたくさんある
Slide 119
Slide 119 text
まとめ • 言語の使い分け • ほとんどプラットフォーム • 楽できるものを使う • いろんな視点をみることで • プログラミングの本質がみえる • プログラマーとして一歩前に出たいなら • すこし特徴的な言語にも挑戦してみて