【IT】プログラマーだけではない、全ての人がPythonを学ぶべきたった1つの理由
■ このスレッドは過去ログ倉庫に格納されています
「Pythonはどうしてこんなにはやっているんですか」。プログラミングを最近学び始めた人と話をしていて、そんな質問を受けた。自分としてはPythonを学ぶ意義は自明だと思っていたが、プログラミングにあまり詳しくない人にはそうでないのかもしれない。
私は、2019年10月上旬に開催されたイベント「日経 xTECH EXPO 2019」で、「非プログラマーがPythonを学ぶ意義」と題して講演した。そこで今回のコラムでは、この講演のプレゼンテーションを基に、Pythonを学ぶべき理由を説明したい。
ただ、内容を少しだけ変えようと思う。講演では非プログラマーを対象にしていたが、今回のコラムではプログラマーを含めたすべての人を対象にする。Python以外の言語を使っているプログラマーにとっても有用な内容だと思うからだ。講演では、非プログラマーがプログラミングを学ぶ意義を最初に説明したが、その部分は省略する。
Pythonが得意とする分野
世の中にはたくさんのプログラミング言語がある。よく使われているものだけでも、C、C++、C#、Java、JavaScript、PHP、Python、Ruby、Swiftなど様々だ。マイナーな言語も入れると数え切れないくらいある。
プログラミング言語を「汎用プログラミング言語」と呼ぶこともある。どの言語を選んでも、理論的にはどんなロジックでも記述できるという意味だ。この特徴を「チューリング完全」と呼ぶ。チューリング完全でない言語は、普通はプログラミング言語とは呼ばない。
もっとも、言語ごとに得意分野は存在する。例えば、「ある分野で言語Aを使うと処理を一から書かなければならずシステムの開発が大変なのに対し、言語Bは豊富なライブラリーを持つため簡単にシステムを開発できる」といったことはよくある。また、「ある分野で言語Xを使うと高速に実行できるが、言語Yでは処理に時間がかかる」といったこともある。
具体的な得意分野を挙げよう。Javaはエンタープライズシステムの記述に多用されるし、JavaScriptはWebのクライアントソフトウエアの記述に主に使われる。Rubyで書かれたRuby on Rails(以下、Rails)というフレームワークは、Webアプリのサーバー側システムの開発に使われる。Swiftは、iOS向けのアプリ開発に使われている。
では、最近注目を集めているPythonの得意分野は何だろうか。それはずばり人工知能(AI)である。
以下ソース
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00682/111900020/ >>181
三進数や10進数や量子コンピュータもあるが 量子コンピュータって実際のところ何? NECもアニーリングに注力
量子コンピュータは量子ビットを活用して計算を実行するコンピュータ。従来のコンピュータ(古典コンピュータ)は0と1の2値で表現される“ビット”(古典ビット)で情報を取り扱う。
一方で、量子力学が取り扱うミクロな領域は物質の基本的性質として複数の状態を同時にとる「重ね合わせ」が起こる。
https://image.itmedia.co.jp/mn/articles/1901/21/mat2019-01-17nec_image03.jpg
https://monoist.atmarkit.co.jp/mn/articles/1901/21/news036.html 以下ソース、の前に「この先は会員の登録が必要です。」を引用しろや。 Python自体は簡単だけど
ライブラリごとに言語を学ぶ感じで奥が深い 普通の人にとってはスクリプトやバッチファイル程度の自動化で十分
そのくらいローカルマシンもモンスターパワー化した >>103
俺も最近その結論に達した
目的が先にあって、それにこのツール使うから、この言語の順
先に言語がああだこうだじゃねーんだよ >>16
GUIプログラミングがあるにはあるけど、文字列以上に相違点チェックが難しいぞ。
全く同じロジックでも、線を引く位置が違うだけで違う内容w つかプログラム言語って次々新しいの作るのやめろ
1つとはいわんけど3つもあればいいんだよ
次から次に出てくるのはIT土方を数年おきに入れ替えるためだろ >>191
闇を感じるね
資格ビジネスとおなじ
それだけ新規参入しやすい業界ともいえる >>191
新しい言語やフレームワークを作るのが楽しい、って奴が
後先考えずに次々作っている。 >>191
んなわきゃない
ここまで新しい言語が増える理由はプログラマの欲求そのものだ
短く書きたいとかバグ減らしたいとか理由は様々だがね
プログラミング言語が日本向けになんぞ作られているわけがないしな
レガシーな書き方しか知らない奴が脳筋プログラムをして死滅するのは当然の結果だ 一部の天才がつぎから次へと新言語開発してるってことか。 Perlが使えるとPythonを学ぶ動機がない
AI系のライブラリを使うときぐらいかな
Juliaに期待しよう
Pythonのライブラリも使えるし Perlはつかえないだろ
たまたま一時的に使われただけで
いまつかう意味あるか? >>1 まぁ〜たNikkeiBPの記事かー。スレ立てなくていいよ >>197
デベロッパーがゼロから学ぶとして有用なのを3つくらい選ぶとするとどれ? >>199
Coffeescript
Dart
Lua >>197
perl5 の代わりが務まる言語がない
正規表現再帰できるのは異端だし
\R でOSに関らず改行マッチできたりなど独自の拡張が便利 コボルと似たようなものでは?
最も嫌われているプログラミング言語は?--Stack Overflowが調査結果を発表
2017-11-02 14:50
Stack Overflowを利用している開発者の中には、プログラミング言語「Perl」を扱いたくないと思っている人が多くいることが明らかになった。
PerlはLarry Wall氏が開発したもので、生まれて30年近くになる。
Perlは1990年代にはよく使われていたが、今では「Python」の方が好まれることが多い。
https://japan.zdnet.com/article/35109803/ >>197
あんたはいつからインターネットしてるのよ?? 386の頃からやってるけど、今のPC演算力もメモリもアホみたいにあるんだから、Pythonでも困らないだろ。
もし定常的に発生する処理が重くて限界感じたらそこだけCでライブラリ作って呼び出せばOK。 >>206
わかる
混乱するよね
多少コード長くなってもいいから
ひとめみてわかりやすい方がいい たった一つの理由は『アメリカで広く利用されているから』じゃないの?
ライブラリも技術ブログなんかも多い※からだろ。
※全て英語 >>64
オマイの日本語が乱雑で
標準化されてないwww >>67
現役次代2年ほど日経ソフトウエアその他日系の雑誌読んだけど
役に立つものは何も無かったな。
工学社のI/Oに載ってたAPPLE][版「平安京エイリアン」の
マシン語を逆アセンブルして解析したほうが判り易く
役に立った。 >>170
COBOLも知ってるよ。
COBOLは四則演算に特化した給料、請求書用言語だ。 >>205
その文脈だとPythonの代わりはいくらでもあるな 複数言語学ぶの無駄、Webもサーバもブラウザも全てPythonにして欲しいわ >>212
そういうのって特化することによって何かメリットあるんかね?
ハードに金かけなくてもいいとかそんなとこ? 言語を増やすと、知の集積が分散してしまい、プログラミング界の発展を阻害する。
そして、いつまでたってもプログラマーの使い捨てがおこり、底辺から抜け出せない
経営層や資本家側の陰謀なのかも。 >>56
for(i=0; i<100; i++){
処理
}
は
マイコン揺籃期のBASIC以来綿綿と継承された
FOR I=0 TO 100 STEP 1
処理
NEXT I
のコンピュータが得意とする繰り返し処理パターンじゃん。 >>1
意識他界系の中で、
これやっておけば話にのっていけるってだけの言語なだけでしょw >>220
> >>56
MSX BASICからやってるので、
> FOR I=0 TO 100 STEP 1
> 処理
> NEXT I
が好き。
なんでおなじことやるのに、こういう書き方になってきたんだろう。
> for(i=0; i<100; i++){
> 処理
> }
シフト押す回数ふえるのでつかれる。
コロンとセミコロンも見分けがつかないし。
間違いの元。 Python遅いんだよな
プログラムの勉強ってPythonを学ぶっていうよりライブラリの使い方を習得する作業なんだよな >>218
BASICとかCの四則演算は有効数字何ケタで大体の結果がわかればいいというレベルだが
給料など金額は億、兆の桁数の多い数字数字で
1円でも間違ったらクレームが来るから
1バイト8ビットで0から255まで表わせる二進数の10から15を犠牲にして
1バイト8ビットで0から99までをコード化したBinary Coded Decimal=2進化10進数で計算するんだな。 確かにVB系の言語仕様は日本語の「てにをは」があるイメージがあるので論理が組みやすくて好きだな >>219
できるやつとできないやつの生産量はオーダーが違うからな
そうでないなら、言語やプラットフォームの共通化は意味あるかもしれんが ライブラリが豊富とかの理由でPythonに来るのやめてほしいわ。
なぜそうなるに至ったか、Pythonの長所の本質を理解できない
奴が書くコードってクソだから。
Javaかなんか書いてた奴がPythonに移ってきたのか、
全部でたかだが20~30行程度のちょっとしたことをやるスクリプトで
わざわざクラス化してたり、わざわざややこしく、読みづらくして
この人、バカじゃないのかな?と思うことはよくある。
その程度のものにオブジェクト思考なんか必要ねーんだよ。
Pythonの長所はコードの書きやすさと読みやすさにある。
だからこそ、開発者が増えてあれだけライブラリも豊富になった。
それがわからない理解できない感性がイカれている奴は
Python使うな。 わざわざクラス化
わかるわ。
再利用しないのに、クラス化、関数化。
気をつけなければ。 >>16
Scratchですら字は使われるからな。 >>225
VBすげー可読性高いのに何で廃れたのかな…
.NET Coreにも未だ対応されないし、アップデートでどんどんC#に置いて行かれてる >>227
プログラム自体に興味ない素人が大勢流入してきてるからね
Qiitaとか玉石混交で大変なことになってるし >>227
ライブラリが豊富以外のメリットが無いな
一時期の流行りだから逃げる人も多いだろ
出来ること少なすぎるし ガラクタ出力機 の異名も踏襲されそうだな
>素人が大量流入 >>233
玉石混交?
ゴミしか無いだろ
教科書の劣化コピペだらけだぞ
玉どこよ? Pythonは関数に何でも渡せるからコード書くのが楽だが、それが原因不明の動作につながることが多い >>233
Qiitaみてもなんか上達しないのはそうゆうことか。 ライブラリが豊富すぎてメジャーとカスの見分けがつかん ネット全体が、玉石混交の石多目になってきてるね。
ググればわかることを焼き増しで劣化させブログにしてアフィ目的。
やたら行間がおおい。情報量は少ない。 >>235
Pyなら出来ますってのが地雷になりそうだな
Cなら
VBなら
と同じ構造 >>240
雑談禁止なんだけどな
買収されて胡散臭くなってから辞めた
何に流用されるかわからん >>242
英文の一次情報当たるしかないんだよ
日本語になってる時点で一年遅れ とりあえず、Pythonしか知らないデータサイエンティストがドヤ顔でマウントしてくるのだけは勘弁 【IT】プログラマーだけではない、全ての人がPythonを学ぶべきたった1つの理由
https://t.co/2Dsb2K0BLq 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01) プログラムテクニック系の英語って簡単だしプログラムが書いてあるから
英語がダメな人でも問題ないんだよな
フレームワーク論やシステム論とかになると違うんだろうけど 【IT】プログラマーだけではない、全ての人がPythonを学ぶべきたった1つの理由
https://t.co/2Dsb2K0BLq 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01) >>218
むしろBCD演算ができるハードに対応したコードを吐けるのがCOBOLの強み。
その辺のx64やARM使うならCOBOLである必要性はない。 >>231
クソコード量産したくせに置いてけぼりくらう風習を踏襲しまくったから
VB.NETは悪くない言語だが扱う人間が石器使うしか頭がないような輩しかいない
未だに2.0で動かしてくださいみたいなクソ案件があるんだから廃れて当然 オブジェクト指向言語を1つ知ってれば言語は簡単に習得できる
機械学習を習得するためにライブラリと格闘する意思があるかってだけだろう やっぱり初心者が最初に学ぶべき言語は王道のC++なのかな? >>257
なにその王道
登山スターターにエベレスト薦めるような迫力がある C++は難しいとされるが
JavaでもC#でもPythonでもTypeSCRIPTでも
C++相当の文法、命令はあって大差ないとおもうが オブジェクト指向という面だとC++よりもJavaScriptやTypeScriptの方がそうだろ
こういうのもオブジェクト指向がらみだが
Node.jsの非同期処理のコールバック地獄を Promise、Generator、async/await を使って解決する - Qiita
無名関数を使えば引数に関数オブジェクトを直接指定できるので、同期処理と同じように簡潔に記述できます。
非同期で直列処理を行う場合、コールバック関数を連続して記述します。
しかし、そのまま書くとネストがどんどん深くなり、コールバック地獄と呼ばれる読みにくいプログラムになります。
https://qiita.com/Nossa/items/e712eac7404348f35881 プログラマーでないならオブジェクト指向不要ではないか >>186
名前変えたよね。
別言語ってことにするのか。
perl5 で大規模開発はつらいからな。
ちょこっと使うには便利な言語だが。 こういうのもオブジェクト指向、あらゆるものはオブジェクトという
Javascriptでクイックソート
Q = A => A.length<=1? A :[
...Q(A.filter((x,i)=> i>0 && x<A[0]))
,A[0],
...Q(A.filter((x,i)=> i>0 && x>=A[0]))];
https://ideone.com/yXp8GZ
Pythonでクイックソート
def Q(A):
if len(A)<2: return A
p = A[0]
return Q(filter(lambda x: x<p, A)) + \
filter(lambda x: x==p, A) + \
Q(filter(lambda x: x>p, A))
https://ideone.com/TSgpzy >>191
いくら頑張っても、万能汎用言語が作れないんだよ
だから、職人が道具を自作するように、目的にあった言語を作るのだ JavaScriptのオブジェクト指向が10%理解できる記事(実践編)
クラスベースとプロトタイプベース
言語機能の話に入る前に、少しだけオブジェクト指向の分類の話をします。
オブジェクト指向のプログラミング言語がクラスベースとプロトタイプベースに分類されるという説は古くから有名で、
JavaScriptは後者のプロトタイプベースに属する言語の代表格となっています。
JavaScriptには本来(ES2015まで)クラスという用語はありませんでした。
JavaScriptが採用していたプロトタイプベースでは、オブジェクトは他のオブジェクト(プロトタイプ)への参照を保持しており、
自身で処理できないもの(メソッドなど)はプロトタイプに移譲します。
その一方で、JavaScriptにはnewのようにクラスベース言語っぽい構文も持ち合わせており、
クラスベース的な考え方でコードが書けるようにもなっています。これがJavaScriptの難しいところです。
https://qiita.com/uhyo/items/ab8e273e1eb71d02e29a 素人でも抽象化とかを意識して作らないと
全体が出来上がってから
無駄なことやってるなと思って修正することになるんだよな >>264
社用でちょっとjavascriptいじってるんだけど
なんだっけec6
アローの使い方がいまいち理解できないのとIE11が未対応らしいので、古い書き方だわ。
閉じカッコの数
数えるのに必死だけど。 なんとAIでプログラマーと言う職種がなくなるとは、、 AIのためにデータ加工屋が必要だからプログラマはなくならない >>84
徹夜作業とかがなければ続けられる。
元に60代のプログラマは現場でも結構多い。
下手したら20代のプログラマより多いかも。 >>268
サーバーサイドと言われるnodejsで少々文法がちがうことはあるかと
あと一行、一文で書くことにこだわりみにくくはなっている >>264
そういう車輪の再発明やってて面白いのか?
C/C++なら、ポインタの配列を用意して_qsort()呼ぶだけ。
ポインタの並べ替えの対象はポインタで、ポインタが指すオブジェクトや構造体の
サイズやどんなメンバ変数を持っているかに関係なく、ポインタのサイズは同じ
であり、並べ替えにオブジェクト自身のコピーは一切発生しないから最も高速。
生ポインタが扱えない言語ではできない芸当。 >>1
おまえが記事を書かないでPythonのみで生計立てたら信用する 上のクイックソートは効率面は別にして
オブジェクト指向と再帰の勉強目的だ
これで大規模なやつをやろうとすると多分コピー多発で効率は悪い DBありきだとソートをプログラムで使うことはないけど
ネット情報を収集するスクリプトとかだとソートしないといけないときがあるから困る >>279
だいたいライブラリの方でソートが用意されてるだろ ■ このスレッドは過去ログ倉庫に格納されています