【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/ >>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 だいたいライブラリの方でソートが用意されてるだろ >>279 C#とかならLINQで終わりとか Scalaも似たようなのあるし Pythonでもそれに近い芸当できないっけ C++はコンパイルエラー分かりにくいのが辛い リフレクションのない言語の宿命なのかもしれんけどなんとかならんのかな Java勉強したけど、教えてくれる人が上手かったからか理解しやすかった 転職につなげたいけど、もういい年だからプログラマーになるのは難しいんだろうな プログラミングの知識って、プログラマーになる以外には、活かせる仕事ってないのかな AI用Scratchを作ればオケ もうテキストエディッタは止めようよ プログラマーじゃないならプログラミング言語なんて一切触る必要ない そんなこと気にしなくていいからせめてExcelの関数一つでも覚える努力しとけ >>2 個人が買えるパソコン程度で、人工知能(のせめて片鱗)が動いたりするの? 今は素のままの言語をコーディングするのってあまり無いよね。大抵の土方はフレームワーク使ってる 自分が若い頃はネラーの殆んどは、スクリプトなんて当然のごとく知ってたよなぁ >>291 CGIやSSIって言ったらみんなPerlだった思い出 import numpy as np A = np.random.randint(0,100,12) print(A) print(np.sort(A)) >>131 最近の言語を軒並み使ったことが無さそう。 microsoftすらnuget用意してるのに。 >>1 たった一つの理由を語るだけなのに記述量が多すぎる言語だということはわかった。 不合理だわ。 Python本体はVBの書き方を更に簡素化させたものってイメージが強いなぁ おれはみんなが C言語を習い C言語のように考え C言語のように行動する ことを望む!!! まあ、Pythonを極めるのであれば、Cも必要なんでしょうね。 Cが土台の言語だから。計算量や速度がそんないらないなら、 Pythonだけでも良いんだろうけど。 >>1 Pythonの強みと言えば、やはりAI分野の外部ライブラリーが豊富な点。 ここがすごい。 すべての人が学ぶべきたったひとつの理由 教える自分が儲かるから 1つしか理由がないんじゃやる気おきんな せめて10個くらいないと なんかさ!py屋がrに対抗してstatやりだして、その延長でDLはやってみんながつかいだしたから、おすすめみたいな流れが作られた感がやだな 日本のIT関係者は幼稚な印象 アカデミックな姿勢で冷静に技術を語り合えない印象 最初はどういうプログラムを作ればいいか初心者の俺に教えてくれよ hello worldを表示させるだけとかメモ帳に打つのとなんも変わらん そもそもプログラムってexeファイルになるんやないんけ? 手でやるとめんどくさい作業をプログラムにやらせるのがいい。 例えば、Excelで毎日の気温を入力して保存していたとする。これはVBAでもできるし、pythonでExcelを操作させることもできる。 >>317 exeはwin専用で、ダブルクリックで実行可能な形式のバイナリファイルのことだよ。exeをつくる前に、テキスト形式のプログラムを書いて、実行可能なバイナリに変換することもあるし、バイナリに変換しないで実行できるものもある。 cqt access.log | grep error | awk '{print $4}' | sort | uniq | wc -l みたいのは、手が勝手に動く感じ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる