2023年10月25日水曜日

Pythonコードが他のプログラミング言語よりも読みにくいのはなぜですか?

https://jp.quora.com/Python%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E4%BB%96%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%82%88%E3%82%8A%E3%82%82%E8%AA%AD%E3%81%BF%E3%81%AB%E3%81%8F%E3%81%84



並べ替え
 · 
フォロー

当たり前ですがPythonも正しく書けば非常に読みやすいです。正しく書くというのは例えば以下のような点です。

  1. 変数や関数の名前が適切につけられていて意図が分かるようになっている
  2. 関数が長すぎず、適切な単位で分割されている
  3. 関数の引数を直接変えるような書き方をせず、戻り値をきちんと使用している
  4. formatterでコードが統一的に整えられている
  5. linterで警告文が出てこない
  6. type hintを適切につけ、変数の型がAnyにならずにすべて解決できている

これらの事柄はもちろん他の言語で書く場合でも同じです。ただ、Pythonは単体ではこれらの事柄を強制することができず書き手にゆだねられている部分が大きいです。また、言語自体はかなり古い部類なのでformatterやlinter、そのおすすめ設定もいろいろ変遷しており、その上入門記事ではこういった設定は扱われることがほぼないので知らないまま書いている人が多いため、読みにくいコードが量産されているのだと推測されます。GoやRustなどであればそもそも静的型付け言語な上に標準でformatterやlinterもついてくるので特に意識せずともある程度読みやすいコードが書けるようになっています。

Pythonについては現在の私のお勧めは以下の通りです。

  • 依存ライブラリ管理: PDM
  • formatter: black + ruff
  • linter: pyright + ruff (vscodeから使用する場合はpyrightを内包しているpylanceを利用する)
  • test: pytest

これらの設定はすべてpyproject.tomlに書くことができ、他にもVSCodeで開発する場合の設定をテンプレート化したプロジェクトを公開していますので興味がある人はこちらを利用してください。GitHubのテンプレートプロジェクトなので新しくレポジトリを作る際に直接使用することができます。

GitHub - lucidfrontier45/python-pdm-template: A Project Template of Python with PDM
A Project Template of Python with PDM. Contribute to lucidfrontier45/python-pdm-template development by creating an account on GitHub.
広告
 · 
フォロー

有料版のChatGPT4の回答も貼った後、私の意見を書きます。


Pythonが他のプログラミング言語よりも読みにくいと感じるかどうかは主観的な問題であり、一般的な意見とは言えません。実際には、多くの開発者はPythonを他の多くの言語よりも読みやすいと感じることが多いです。Pythonの設計哲学の1つは「読みやすさは重要である」という原則に基づいています。

ただし、なぜある人々がPythonを読みにくく感じるのか、いくつかの考えられる理由があります:

  1. インデント: Pythonはブロックを表すためにインデント(空白)を使用します。これは、C言語やJavaなどの波括弧 {} を使う言語とは異なります。このスタイルに慣れていない人にとっては、最初は戸惑うかもしれません。
  2. 一部の省略: Pythonは、たとえばセミコロン ; で命令を終了させる必要がないなど、他の言語と比べてシンタックスが簡潔です。これにより、コードがクリーンになる一方で、他の言語の背景を持つ開発者には不慣れに感じることがあります。
  3. 動的型付け: Pythonは動的に型付けされており、変数の型を明示的に宣言する必要はありません。これによりコードが簡潔になりますが、一部の開発者は型の情報が欠落しているためにコードの意図を理解するのが難しくなると感じることがあります。
  4. 文化と慣習: Pythonコミュニティには独自の慣習やベストプラクティスがあります。これに慣れていない開発者は、Pythonicでないコードを読むのが難しく感じることがあります。

最終的には、Pythonの読みやすさは、個々の経験や背景に大きく依存します。多くの人々がPythonのシンタックスや設計哲学を高く評価していますが、それに慣れるまでには時間がかかる場合もあります。


以下、回答者の意見です。

型宣言が無いコードが多いってのと、IDEやエディタでの静的解析が弱いのが原因だと思いますけど、動的言語だと、共通する部分ではあります。Pythonだとconstが無いのも割とイヤですね。どこで変更されてるか、疑心暗鬼になります。個人的にはPythonは、運用とかの使い捨てコード、AIやデータ分析以外では、使ってほしくないですね。隔離したいです。

広告
 · 
フォロー

Pythonは一般に比較的読みやすい言語とみなされていますが、一部の例外があります。

例えば以下のものがあります。

  1. 記述の省略のために独特な記法や仕様をあえて選んでいる
  2. オランダ語の影響を受けた文法が存在する

[1] 記述の省略のために採用された独特の記法

これは例えばwith文によるtry-catch構文の省略などです。仕組みが分かれば非常に便利ですが、1行で何が起きているのか分かりにくいため、最初は理解しづらいかもしれません。

他にもmapやfilterなど、Pythonには配列に対する処理の優れた記法がたくさんあります。ラムダ式も書けますね。今では他の多くの言語でも似た機能が実装されていますが、当時は画期的でした。とはいえぱっと見複雑な数学の式にしか見えない(しかも大量に繋いで書ける)ため、初めは読み解くのに苦労するかもしれません。

[2] オランダ語の影響を受けた文法が一部存在する

有名なのはif文の省略記法ですね。

  1. # 普通のif文 
  2. if b > a: 
  3. print(“b”) 
  4. else: 
  5. print(“a”) 
  6.  
  7. # ワンライナーif文 
  8. print(“b”) if b > a else print(“=”) if b == a else print(“a”) 

いやいやいや、なんで省略記法になった途端に処理が条件より先に来るんだよ、と最初は私も頭を抱えました。

これは多くの人にとって同じようで、Pythonには「この文法(仕様)はオランダ人にしかわからない」という言葉があります。Pythonの生みの親がオランダ人(グイド・ヴァンロッサム)だからですね。ただこれはPythonを高レベルに使いこなす人々が言ってるので、むしろ親しみをこめたジョークだと思います。

コンピュータ言語も言語ですから使えるようになりたいなら慣れるしかありません。ちなみにこの回答に書いたポイントは、全部私自身がつまずいた箇所です。でも慣れたら案外悪くないですよ。勉強頑張ってくださいね。

Toshiharu Ito
 · 10月14日
今後pythonよりも処理速度が速い言語でAIのプログラムに特化したフレームワークが出現した場合、AI開発の主要言語がその言語に移っていくと思いますか?
Pythonはもともと「おしゃれで素敵な言語」を目指してきた言語です。発表は1991年で長い歴史があります Pythonはコンピュータ言語の中でも英語などの自然言語に近く、シンプルで読みやすいので、本職のプログラマーよりも科学者やアナリストなど比較的ライトなプログラマーに好まれる傾向がありました。数列処理の記述が便利などたまたま言語仕様がAI向きだったのもありますが。 ですから、プログラミング業界でのPythonはあくまで「C/C++の型にハマった世界に風穴を開けた、おしゃれで素敵なファッションリーダー」であって、さまざまな分野のプログラマーに長年ちゃんと愛され、使われてきたからこその現在の立ち位置なんです。AIはたまたま注目されるきっかけになっただけにすぎません。 Python「カワイイは正義!」(画像はBing Image Creatorで生成) とはいえ、すでに現在のPythonは言語的な特徴よりもはるかに実用的な理由で使用されています。 1. 超高速&なんでもできるC/C++製ライブラリの恩恵が容易に受けられる(※1) 2. Pythonコード本体の高速化も必要ならCへのトランスパイルが使える(※2) 充分な質と量のC/C++/Cython製のライブラリが揃った現在では、Python本体の速度が遅くてもそんなに困りません。人が集まればどんどん強くなるのが今どきのコンピュータ言語の特徴で、まさにPythonは一気に「AI分野で最も実用的な言語」としての地位を確立しました。 現在でもPythonでは多くのライブラリや支援システムが次々と流行っては消えていくため、華やかなPython界隈のトレンドについていくのは大変です。でも、よく調べて最新かつ人気のものを選び、今っぽく使いこなせれば、どんな開発にも「Pythonic」に取り組めます。シンプルなコードでスマートに開発できる(おしゃれで素敵)ということです。AI特需に伴って他の分野でもPythonのシェアは伸びているので、少なくともこの状況はしばらく続くでしょう。 他にもRとかMojoとか機械学習向けの専用言語はありますが、少なくともAIの分野でPythonを押しのけて勝ち上がることはないと思いますよ。 ※1 標準でC/C++によるPython用ライブラリを作れるだけでなく、既存のC/C++のライブラリを呼び出すためのブリッジライブラリも存在します。だから実行速度的に「Pythonistaはなるべくコードを書くな」=ライブラリを呼べと言われるほどです。 ※2 Cython=裏でCに変換してからコンパイルする、静的型付けが必要だけど超速いPython。AIでは欠かせない数列演算ライブラリの「NumPy」はCythonで書かれています。
Toshiharu Ito
 · 10月17日
現代のWEBアプリ開発はPHP vs django vs node js どれで行うべきでしょうか?もちろんプロジェクト規模によって異なるでしょうが。
正直なところほとんど差はありませんので、あなたの好きなものを選んでください。 (画像はBing Image Creatorで生成したものです) 実は現代のコンピュータ言語やフレームワークは、お互いの良いところをかなり素早く吸収し合っているため、同じ用途で開発された言語やフレームワークに機能的な差異はほとんどありません。 長い歴史を持つフレームワークすら、旧バージョンとの互換性を捨てて新時代の開発手法に準拠した設計で開発し直すのが当たり前の時代です(開発屋的には困ってますが…)ので、最新版の言語やフレームワークを使う限り、自分が使いやすく手に馴染んだ道具を使って開発する方がメリットが大きいのです。仮想サーバーを束ねれば大概の性能差はカバーできる時代ですしね。 私個人のWeb仕事では、メインがPHP(Laravel/Symfony)で小規模ながらPython(Djangoの開発言語)やJavaScript(Node.js)を使っています。ごりごりのWebアプリのフロントエンドも書きますし、たまに巨大なSQLも書きます。以前はJavaやPython、Perl、Web向きではないものではC++もかなり使ってきました。 私の勝手なイメージで各言語の性格を説明すると、 * Python = おしゃれなクラスメイト * NodeやDeno = スピード狂のバイク乗り * Perl = ニヒルなマッドサイエンティスト * Java = お堅い風紀委員 * PHP = ハイスペック地味子 * C++ = 会うたびに若返るのじゃロリBBA って感じでしょうか。皆良い子たちですよ。 言語紹介系の回答まとめました。たまに増えます。 C++ C PHP Python JavaScript (jQuery) ChatGPT (AI) システムの発注を考えている方向け 学生さんやプログラマーを学んでいる人向け 「どの言語を最初に学ぶべきか」論争 プログラマー不要論 プログラミングの勉強法 フリーランス プログラミングが楽しくない人へ 開発環境 プログラマー向け Vim (neoVim) 効率化 見積もり インデント 例外処理
広告
 · 
フォロー

どこからどこまでがブロックなのか文字列検索では追えないから

 · 
フォロー

Pascal,C等をやっていた人は、

BEGIN,END、{,}等を用いず、「インデント」のみでブロックを表すのは可読性が悪いと思います。

 · 
フォロー

個人の感想です。また、自分がPythonに゙習熟していないというのも大きな要因です。

  • importの構文が統一が取れておらず読みにくい。
  • 変数への初回代入が変数定義と宣言を兼ねており、ある変数のスコープがどこからかを局所的に知ることが出来ず読みにくい
  • 内包表記が読みにくい。特にネストした時
  • 無名関数が読みにくい。かつ複数行にまたがれず書きにくい。
  • メソッドチェーンが書きづらい
  • 関数型サポートが弱くfor文が多用される傾向があり読みにくい
  • 結果代入文の羅列になって、変数名が増え、似た変数が並ぶので読みにくい
  • 上に加え、再代入禁止の変数がないので代入文多用の結果、「変数に今何が入っているか」を常に意識しなければならず読みにくい。
  • インデントでブロックを表現するのがわかりにくい。たとえば、関数定義が1画面で表示されている時、最下行の次の行を見ないと関数が終わっているかどうかがわからない。ブロックとじの記号がある言語であれば、閉じていれば終わっている、閉じていなければ終わっていないことが一目瞭然でわかるが、Pythonではブロックや函数が終わっているかは、画面外の次の行が同じインデントか減っているかどうかで変わってしまう。

上記の一部はMojoが改善しているということなので、ぜひ普及してCPythonを駆逐いただきたい。

Mojo入門 (2) - Mojo言語の基本|npaka
以下の記事が面白かったので、かるくまとめました。 ・Mojo language basics 前回 1. Mojo言語の基本 「Mojo」は、「Rust」「C++」などの他のシステム言語と多くの共通点がありますが、「Pythonのスーパーセット」になるよう設計されているため、「Python」の機能や概念の多くは、「Mojo」にうまく反映されています。 (1) Pythonパッケージからコードをインポートして実行することが可能。 (2) Pythonと同様に REPL や Jupyte Notebook でトップレベルでのコード実行が可能。 ただし、「M
Mojo 🔥
先日プログラミング言語 Mojo と呼ばれるもののアナウンスメントがあった。この言語のデザインが私のスイートスポットに刺さる感じだったので、今のうちから注目している。使いたいなというか、将来使うことになりそうな言語なので簡単に何ができそうかを調査してまとめておきたい。 https://www.modular.com/mojo ウリとしては「C 並のパフォーマンスが出る Python」といったところだろうか。 k0kubun さんからコメントを裏でもらって、これって要するに並列化とか SIMD 化とか入れたら35,000倍のパフォーマンスが出るようだけど、これは Python の部分とは呼べなくて、素の Python 動かして本当にそういえるかは怪しくない?とのことで、判断保留します 🙇🏻‍♀️ k0kubun さんありがとう 言語のデザインとしては、AI 開発に向けたプログラミングを提供できるよう設計されていると感じる。表側は Python だが、細かくシステムプログラミング言語寄りの操作ができるように設計されている。これが言語仕様として一気通貫していることによって、従来の Python による AI プログラミングが抱えていた問題を解消できることを狙ったのだと思う。通常の Python とは異なり型付けがしっかり静的になされるようであるし、また Python を利用する上での最大のボトルネックである GIL もなくなる。Python との移植性もかなり意識されている。メモリ管理については Rust と同じでボローチェッカーを採用していると思われるが [1] 、個人的には Rust を書いていた際に感じていた、ムーブセマンティクス周りで不明瞭だと思うポイントやムーブせマンティクス中心の言語設計からくる辛さを上手に回避できるデザインになっているのではないかと感じている。 現在は Playground への入場が waitlist 方式で管理されているようで、全員が触れる状態ではない。GitHub リポジトリにも何かコードが公開されているわけではないようで、今のところ Doc 以上の情報がない。私も waitlist には申し込んだもののまだ入れていない。というわけで、触れてもいない言語について書いているのでよくわかっていないことが多いです。 正直 Python に対する不満は文法というよりはツール周りや型付け、スピードなどに起因することが多いと思う。私も現場で Python を書いていてウッとなるのは文法そのものよりもそうした部分だ [2] 。文法のわかりやすさは、これだけ世の中に広まってソフトウェアエンジニアでない人であっても利用するところから、「わかりやすい」の市民権を得ていると言ってもいいと思う。Mojo は、Python のよいところを残して使えるようにしつつ、課題点を改良するバランスの良さが面白いポイントかもなと思った。 このスクラップを残し始めたのは単にドキュメントに Owned とか Borrowed とかの字面が見えて、いわゆる所有権システムを別の言語で実現した新たな例なのかなと思ったのがきっかけです。 脚注 調べてみて徐々にわかり始めたが、どうやらムーブとコピーとは別のメモリ管理をしていそうな感じがする。Swift みたいに値型と参照型を分けて管理している可能性がありそう。正直なところ、Playground に入って何が起きているかを確かめてみないとよくわかりません。 ↩︎ 昔はインデントベースの文法にウッとなったこともあったが、最近は VSCode を使うようになって自動でフォーマットしてくれるようになったしまったので、もう慣れてしまった。それよりはパッケージ管理とか配布方法にウッとなることが多い。 ↩︎

どうやら Mojo には関数定義が2パターンあるらしい。

  • def: Python と完全互換ができる。動的性をもつ関数定義。
  • fndef の "strict mode" にあたる。より pedantic で strict な(要するに安全側に倒した)def が fn になるらしい。

たとえば下記のような違いがある。逆にいうと def にはこれらが求められない:

  • 関数のボディ部分はデフォルトでイミュータブルになるらしい。内部の変数宣言とか操作とかが全部イミュータブルになるっていうことかな?で、可変な操作が関数内部にある場合やコピー不可能な型を引数として使用できるようになるらしい。
  • 引数には型の指定が必要になる。戻り値の型指定も厳密寄りになる。指定しないと None を返してると見なすようになる。
  • ローカル変数をちゃんと let と var を用いて宣言して使用する必要が出てくる。
  • def も fn も例外をサポートしているが、fn 側では raises を使用して明示的に宣言する必要がある。
広告
 · 
フォロー

慣れている言語次第で変わります。

Rubyに慣れている人であれば、似た特徴が多いこともあり読みやすいはずです。一方、BasicやCやJavaに慣れている人から見れば、それなりに理不尽な記述を要求するので可読性は低く感じるのでは?

PowerShellなんかは、Pythonに似た特徴があるので他のMS系のスクリプトや言語に慣れていると戸惑う部分が多いですね。

 · 
フォロー

慣れです。私はPerlとかPHPは読みにくいと感じます。Cなんかも読みにくい部類になりますよ。

 · 
フォロー

覚えなければならない標準の組み込み関数や型が多いからです。

特にmap()は「なぞなぞ」のような使い方が多い。

 · 
フォロー

アンダーバーだらけ、だからだと思います。

もちろん、極端に長いコードは読みにくいですが、それは何もPythonに限ったことではないでしょう。

Pythonは完全にオブジェクト指向で設計されていることを知らないプログラマーが多いんです。

例えば

  1. a = 1 

というコードを書いたとします。

一般的なスクリプト言語では a という整数型変数を用意して、整数値 1 を代入する。という処理を行います。

Pythonでは 1 という整数型(クラス)のオブジェクトを作り、 a というリファレンスで紐づけするという、関数型ではなく完全にオブジェクト指向型の処理を行うのです。

だからリスト型のオブジェクトの中に複数の型を混在させたり、階層化するのも容易でとても柔軟性が高い設計が可能なのですが、こういうオブジェクトを介したデータのやり取りではキチンとしたドキュメントをプログラム内に書いておかないと混乱が生じると思います。

だけど、普段からPythonを使っている人達は、このドキュメントを作ることが当たり前化しているPython環境でコードを書く人が多いのでそんなに困ったことにはなりません。

 · 
フォロー

「他のプログラミング言語」が Python以外の全てを意味しているなら、この質問は暴言といってもよいのではないでしょうか。例えば、他の特定の言語と比べて読みにくいということなら、単に Pythonの流儀に慣れていないだけのような気がします。そうでもないのであれば、よっぽどサンプリングが偏っているのではないでしょうか。

さておき

リスト内包表記は便利なんですけど、初めて見る人には戸惑いがあるかもしれません。あと、変数のスコープに関しては紛らわしいと感じるかもしれません。まあ、結局どのプログラミング言語にしても慣れだと思いますけどね。

 · 
フォロー

読みやすいか、読みにくいかは属人的なので、賛同は得にくいと思います。

実際、私はC、C++、C#、Java、Pascal、PHP、Rubyなどいろいろな言語を用いますが、Pythonは比較的読みやすい方と感じています。

当然、見やすいコードを書く人とそうでない人がいるので、書く人の性格にも依存する話です。

少なくともC言語よりは遙かに読みやすいと思います。

 · 
フォロー

Pythonで代表的なWebアプリケーションフレームワークであるFlaskで、Webアプリをデバッグモードで開発サーバで起動すると、例外時にブラウザ画面にスタックトレースが表示されます。

そこまでは普通です。

驚くのはここからです。

ブラウザで表示されているスタックトレースの各行の右端に、ちいさなターミナルのアイコンが表示されています。何の気なしにクリックすると、起動時にコンソール側に表示されるDEBUG PIN値というものの入力プロンプトが表示されるので、入力してみると。

あれ不思議、ブラウザに表示されているその例外行の直ぐ下が、REPLとして入力可能になって、スタックトレースのその段階でのスコープでの、各変数の値や、式の計算やメソッド呼び出しができます。

初めに知らずにやって見たときはびっくりしました。

理想のデバッグ方法ぢゃないか。

たぶん、JupyterでもやっているようなPythonインタプリタとブラウザの接続をデバッガインターフェイスでやってるんでしょうが、これはすごい便利。デバッグ効率が格段に高まります。

 · 
フォロー

それはPythonの上っ面しか眺めていないからです。

 · 
フォロー

あえて一つ挙げるとすれば、コードの読み書きが簡単という点かと思います。

もし、Pythonなどのご興味ありましたら、Udemyでオンラインコースで講師をしておりますので、以下のリンクから無料サンプルなど見ていただけますと幸いです。

Python 3入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする

Pythonは、pythonicで書くべきだと言われているように、他の読み手が読みやすいようにインテンドを言語のルールとしております。読みやすい書きやすいということは、開発のスピードも非常に上がるうえ、新しい開発メンバーが参加しても保守やメンテナンスが容易になり、障害のない良いシステムを提供できることにも繋がるかと思います。また習得も容易なので、Pythonを知らない人にも比較的習得しやすいことかと思います。

その他にいくつか挙げると

良い点

  • オブジェクト指向で書ける
  • ライブラリも豊富で、少ないコードで実装しやすい
  • WEBフレームワークも充実
  • テストフレームワークも充実
  • インタラクティブシェルが便利
  • CやC++のライブラリと連携が可能
  • Raspberry Pi、データー解析など流行りのアプリケーションに多く使用されている
  • アメリカシリコンバレーの上場企業も使用している (Google, Splunk, Yahoo etc)

悪い点

  • 遅い
  • モバイル開発には向かない
  • マルチスレッドには向かない

などなどありますが、私はやはりコードの読み書きが簡単という点が最も優れていると思います。

最近は、Pythonの遅さを補うGo Langなど速い言語も流行ってきております。そのため、速さが必要なアプリケーションであればGo Langでも良いかと思いますが、速さをそれほど求めないアプリで、とにかくはやくアプリを完成させたい場合は、pythonなどを使うというのも良いのかもしれません。

例えばの例ですが、中国のWebサーバーでは数億人の人がアクセスするため、pythonではなく、Go langのWebアプリケーションなどが流行っているそうです。しかし、日本でアクセスがさほどない一般的なサイトであれば、DjangoなどのPythonのフレームワークを使えば、すぐにサイトを開発して運営ができます。あまり速度を求めないのであれば、最も読み書きしやすいPythonは開発スピードも保守運用にも優れていると思います。

広告
 · 
フォロー

何をしたいかによって「最も書くのが簡単」な言語は色々です。前提を置かずに「もっとも簡単」を評価することは困難だし、それに値するのがpythonであるともないとも答えることはできません。

たとえばテキスト加工ならawkの方がpythonよりは遥かに簡単です。あるいはperlの方が簡単です。

画像の加工ならImageMagickを利用したシェルスクリプトあたりを組むのが簡単でしょう。

楽譜の作成ならABC、組織図やマインドマップのようなものならdot言語などの専用言語があり、pythonでえっちらおっちら 書くよりも数十倍簡単でしょう。

 · 
フォロー

基本的には、LISPからマクロ機能を取り除き、他のオブジェクト指向言語に似た構文を採用し、ブロックをインデントで表現する言語と考えればよいかと。

最初に習うべきかと言われると、疑問がある点が多いが、便利な言語ではあるね。

自由度が高い。これはある意味リスクを抱える。変数の概念がなく、値に型があってラベルを付けて管理するあたりは、昔の機械語ニーモニックのコーディングスタイルに近いものがある。

新旧の要素が混ざった様な面白いプログラム言語

プログラム言語自体の研究の素材としては最高です。目的は無いけどなんとなくプログラム言語に触ってみようという目的ならPythonはベストチョイスになる。

日本にある多くの開発現場でやってる様な仕様を先にガチガチに固めて、確実に動くプログラムを作るのならPythonじゃなくJavaの方が良い。業務システムならJavaだね。

Pythonはどちらかというとプログラマーのアイデアをそのまま形にするという使い方に向いている。研究者やベンチャー企業によく使われる。

Googleも設立当初はPythonの少ないコードで動くプログラムを作れる点に着目して急速にサービスを増やした会社として有名ですね。

 · 
フォロー

プログラミング言語の人気をどう定義しましょうか。おそらく一意に決まる人気測定法はありません。たとえばインターネットでの検索数をベースにしたTIOBEインデックスというプログラミング言語人気ランキングがありますし、Stackoverflowでの言及数をベースにしたランキングもあります。あるいはDice.comのような求人サイトでの求人数をベースにしたランキングもあり、それぞれかなり異なった順序になっています。また、それぞれのランキングにおいても国ごとに順位はかなり異なります。

基本的に人気ランキングなど話のタネ以上の価値はないんですが、それにしてもなんのためにランキングを知りたいかが自覚できると、どのランキングを調べればよいのか解ると思います。

 · 
フォロー
  1. データ分析
  2. 機械学習
  3. データ可視化
  4. webアプリケーション
  5. ネットワークプログラミング
  6. データベースプログラミング
  7. ゲーム
  8. 業務アプリケーション
  9. スクリプティング
  10. 数値計算

汎用プログラミング言語といって差し支えないのではないでしょうか。

 · 
フォロー

YES/NOで答えるならNOです。

言語に意味があるわけではないです。

今後のビジネスマンは英語を学んだ方がいいと思いますか?

と同義な質問だと思いますよ。

そりゃ知ってらいいにこしたことはないけど、知らなくても普通に食べていけます。

 · 
フォロー

必要が無ければプログラム言語なんて習得する必要はありません。

日常の細々とした作業をスクリプトを書いて便利に処理したいというだけなら Python だけで十分だと思います。何も考えずにスクリプトを書たら数ギガバイトのテキストファイルをそのまま普通に処理してくれたりするのでそれだけでも便利だと思います。もう、テキストエディタで開けるかどうか悩まなくても済みますよ。

もし、仕事で Python 以外の言語が必要になっても、Python をある程度身に付けた経験が役に立つでしょう。

とりあえず、スクリプトに任せられる作業を Python で書いて実行させる事から始められたら如何でしょうか?

それ以上は、これから起こる事次第です。

 · 
フォロー

例えば、pythonインタプリタがないと動作できない。処理速度を向上させたいということで Go言語が作成されています。

 · 
フォロー

どの言語を押さえるべきかは、プログラミングスキルをどの方向に生かすつもりかを確定した後で考えるべきことです。

どのプログラミング言語にも向き不向きがあり、どのようなソフトウェアを開発する必要があるかによって使うべき言語は変わります。そして、ひとつプログラミング言語をマスターすれば、他の言語の習得はそれほど難しい話ではありません。

pythonをそれなりに理解したという自信が得られたのなら、次は、プログラミング言語自体の勉強よりも、アルゴリズムとか数学とか論理学とか、そういうのの理解を深める勉強をした方がいいと思います。

 · 
フォロー

・人工知能開発

・デスクトップアプリの製作

・WEBアプリの製作

・ネットから情報の自動取り寄せ

・Androidのアプリの開発というのを聞いたことはあるが経験がないのでわからない

・ローカルサーバー構築

・ゲーム作成(しかしこれは Pygameというゲーム作成するためのライブラリを使っても2Dのファミコンのようなゲームしか作れないためオススメできない。だが、 PythonはC言語系と連携できるので、描画や動作処理はC#などにしてイベント処理等を Pythonで行うのは良いかもしれない)

 · 
フォロー

言語によるのではなくプロジェクトによります。

ちゃんと開発規約があって、コメントの書き方が決められていて、コードレビューがしっかり行われてるなら良いですが、そうでなければ…

 · 
フォロー

AIの基礎知識

まずは、AIとはどういった技術なのか、AIの基礎知識について説明します。

AIとは

AIとは、「Artificial Intelligence」の略称で、人間が行う知的活動をコンピュータプログラムとして実現することを意味します。しかし、現時点ではAIの厳密な定義は定められておらず、その解釈や認識については企業や研究機関によってさまざまです。いずれにせよ、「人が実現するさまざまな知覚や知性を人工的に再現するもの」という意味合いで広く理解されていることを覚えておくと良いでしょう。

AIプログラミングでなにを開発できる?

AIプログラミングで開発できる分野としては「過去のデータから予測する回帰分析」「機械で画像を認識できる画像解析」「コミュニケーションを可能にする自然言語処理」などが挙げられます。

回帰分析の代表サービス:AI資産運用サービスや株価予測ツールなど。

画像解析の代表サービス:自動運転技術や、メルカリのクラウドAI分析サービスなど。

自然言語処理の代表サービス:iPhoneに標準搭載されているSiriや、LINEのチャットボット機能など。

AIを活用したサービスの作成手順

ここからは、サービスにAIを導入するまでの基本的な流れを説明します。

1.必要なデータを収集してAIに機械学習させる

まずは、AIに学習させるために必要なデータを利用目的に合わせて収集します。ただし、収集したデータが整理されていなかったり、不必要なデータが混ざっていたりすると機械学習は実行できません。そのため、データを機械学習に適したかたちに加工した上で取り込むようにしましょう。

2.学習済みモデルを作成する

次に、収集したデータを元に学習済みモデルを作成します。学習モデルとはいわゆるプログラムのことで、プログラミング言語を使って作成します。

3.プログラミング言語でAIを組み込む

モデル作成が終了したら、プログラミング言語を用いてAIをシステムに組み込み、動作状況を確認します。この際、テスト用データを用いて、AIの判別具合の精度もチェックすることが重要です。精度が低い場合には再度データの収集をするなど、見直しを行ってください。

AIプログラミングにおすすめの言語8選

プログラミングでAIを開発する際に使用する言語は多岐に渡ります。ここからは、AIプログラミングにおすすめの言語を8つ紹介します。

Python

AIプログラミングに最も使われている言語の1つがPythonです。シンプルなコードで読みやすい点が特徴で、AI開発だけではなくWeb開発など、幅広い用途で使用することができます。

Java

Javaは実務に活用されており、世界的に見ても需要が高いプログラミング言語です。処理速度もC++の次に速く、プラットフォームに依存しないことから、Windows・Linux・iOSなど、どのOSでも起動可能です。

Julia

近年、人気を集めているプログラミング言語がJuliaです。Juliaは2009年に開発が開始され、2012年にはオープンソースとして公開されました。その歴史は数あるプログラミング言語の中では圧倒的に浅いものの、JITコンパイラという技術によってスクリプト言語とは思えないほどの高速処理を実現しています。結果、爆発的な人気となり、現在では世界中で開発が進められています。

JavaScript

JavaScriptは、WebサイトやWebアプリケーション開発によく使われるスクリプト言語です。機械学習用のライブラリが豊富に用意されている点が特長で、既存のWebシステムにAIを搭載する際には、ライブラリを使用して簡単に扱えます。

C++

C++は、コンパイル言語を用いたプログラミング言語です。現在実用的に使われている言語の中では最高水準の速度を出せるので、C++を活用できるようになれば、コンピュータのeb性能を100%発揮できるようになります。ただし、メモリ管理の難しさや、言語仕様の大きさといった問題から、初心者にはあまりおすすめできません。

R言語

R言語は、AIプログラムの開発に向いている言語として有名です。もともとは統計学やデータ解析に使用されており、主に学術分野で用いられていました。R言語でWebアプリなどを作ることはできませんが、統計や機械学習に関するプログラムはPythonよりも簡単に記述できます。

Matlab

Matlabは科学技術計算や数値解析に強みを持つプログラミング言語です。使用時には、ライセンスを購入しなければなりません。しかし、ツールボックスを購入して追加することにより、多彩な機能を使用できるようになります。

Haskell

Haskellは、純粋関数型言語のひとつです。間違いが発生しないことや数学と相性が良いことから、主に金融投資関係、株や為替の自動取引(システムトレード)などの場面で使われています。

AIプログラミング言語はPythonがおすすめ

Pythonは、プログラミング言語界において長年人気のトップを占め続けています。なぜこれほどまでにPythonが人気なのか、その理由について見ていきましょう。

コードが分かりやすい

Pythonの最大の魅力は、なんといっても書式と文法がシンプルで分かりやすく、プログラミング初心者でも学びやすい点にあります。これほどまでにわかりやすい構文構造で、可読性が高いプログラミング言語は類を見ません。

ライブラリやフレームワークが充実している

Pythonには開発をサポートするライブラリやフレームワークも充実しています。これにより、少ないコードで機能を実装することができ、開発のスピードと質の向上に寄与しています。

世界的に流行していて需要が高い

前述の通りPythonはAIプログラミング開発分野において最大シェアを誇っており、求人でも需要が高いため、最初に学ぶプログラミング言語として最適です。

ユーザーコミュニティが活発

Pythonはユーザーコミュニティが活発であるため、ライブラリに関する意見や問題点が提起されやすく、開発者の機能更新・改善が早いことも利点となっています。

データ分析のサポートが充実している

PythonにはWebからのデータ収集に必要なパッケージである「BeautifulSoup」や「Requests」、「Selenium」が集約されています。また、分析ライブラリには、タスクをサポートする機能が数多く用意されているため、データ分析に費やす時間を大幅に削減可能です。

Webアプリの開発に強い

Webアプリケーション開発に適したフレームワークが豊富に揃っている点もPythonの強みです。実際に、世界的なサービスであるYouTubeやInstagramといったアプリケーションは、Pythonで構築されています

AIプログラミング言語を覚えるのは難しい?

習得することでさまざまな恩恵を享受できるプログラミング知識。しかし、AIに関する分野は非常に専門性が高く、未経験者が独学でマスターすることは、現実的には容易ではありません。

「UMWELT」ならプログラミング不要でAIが活用できる!

「プログラミング言語をいちから学ぶには時間がない」「すぐにでも業務でAIを活用したい」などでお悩みの方には、TRYETINGの「UMWELT」がおすすめです。UMWELTは、数多くのアルゴリズムを搭載したノーコードAIであるため、AIのスキルを持った人材がいなくとも、自社に必要なアルゴリズムを簡単に組み立てることができます。

SB - agaroot

広告

0 コメント:

コメントを投稿