Python か Java か? 2020年、優秀なプログラマーが習得すべき7つのプログラミング言語

Python か Java か? 2020年、優秀なプログラマーが習得すべき7つのプログラミング言語

どのプログラミング言語が最適ですか?この質問には答えがないかもしれません。人によって好みは異なります。AI エンジニアや科学者は、プロジェクトのニーズに応じて、さまざまなプログラミング言語から最適なプログラミング言語を選択できます。

かつて誰かがプログラミングを料理に例えましたが、プログラミング言語は最初に準備する材料または調理器具です。

C: 包丁、フライパン、とても便利なコンロ、そして隣には野菜市場があります。

Java: 野菜チョッパー、野菜カッター、ミートグラインダー、生地ミキサー、オーブン、電子レンジ...

Python: 大きなスーパーマーケットの冷凍食品売り場には、完成品、半完成品、その他あらゆるものが揃っています。すぐにテーブルに食べられる料理を並べることができますが、味や調理時間を正しく決めるのは簡単ではありません。

C++: 肉を切ったり、スライスしたり、切り分けたりするための十数本のナイフが付いた最高級のキッチン用品セット。炒め物、蒸し煮、肉の揚げ物、オムレツ、スープ煮込み用の鍋もあります... 21日間でこのツールセットの使い方をマスターしようとする人もいますが、結局は怪我をしたり、キッチンを爆破したりしてしまうことがよくあります。

AI 開発を始めたばかりの頃のニーズを満たすプログラミング言語は数多くありますが、プロジェクトごとに目標が異なるため、特定のアプローチが必要になるため、AI プログラミングの問題をワンストップで解決できるプログラミング言語はありません。

料理をするときに慎重に選ぶのと同じように、「達人」になる過程で学ぶ必要があるのは、自分に最も適したプログラミング言語を見つけることです。

パイソン

Python は、読むことができる最も強力な言語です。 —ポー・デュボア

[[321333]]

Pythonプログラミング。画像出典: Unsplash.

Python は 1991 年に開発されましたが、世論調査によると、AI を開発する際には、開発者の 57% 以上が C++ ではなく Python を優先プログラミング言語として選択しています。 Python は学習が簡単なので、プログラマーやデータ サイエンティストが AI 開発の世界に参入しやすくなります。

Python は、プログラマーがどの程度の自由を求めるかを示す「実験」です。自由すぎると、誰も他の人のコードを理解できません。制限が多すぎると、表現力がなくなります。 —グイド・ヴァン・ロッサム

Python を使用すると、優れたコミュニティ サポートと幅広いライブラリ セットを利用できるだけでなく、柔軟性も得られます。おそらく、Python から得られる最大の利点は、プラットフォームの独立性と、ディープラーニングおよび機械学習のための幅広いフレームワークです。

Python でコーディングする楽しみは、多くの動作を少しの明確なコードで表現する、小さくて読みやすいクラスを見ることです (大量のコードで読者を退屈させるのではなく)。 ——グイド・ヴァン・ロッサム

Python コード スニペットの例:

よく使われるライブラリ

  • TensorFlow — 機械学習のワークロードとデータセットの操作に使用します。
  • scikit-learn — 機械学習モデルをトレーニングします。
  • PyTorch — コンピュータービジョンと自然言語処理。
  • Keras - 非常に複雑な数学的計算と操作のためのコード インターフェース。
  • SparkMLib - Apache Spark に似た機械学習ライブラリで、アルゴリズムやユーティリティなどのツールを通じて誰でも簡単に機械学習を行えます。
  • MXNet – ディープラーニングのプロセスを簡素化する Apache の別のライブラリ。
  • Theano - 数式を定義、最適化、評価するためのライブラリ。
  • Pybrain - 強力な機械学習アルゴリズム向け。

さらに、GitHub ライブラリの貢献により、Python は Java を上回り、世界で 2 番目に人気のある言語になりました。 Stack Overflow は、Python を「最も急速に成長している」主流のプログラミング言語と呼んでいます。

ジャワ

一度書けばいつでも実行できます。

Java は、過去 20 年間の使用実績からもわかるように、世界最高のプログラミング言語の 1 つとして広く認められています。

Java は、その使いやすさ、柔軟性、プラットフォームの独立性により、次のようなさまざまな方法で AI の開発に関わってきました。

  • TensorFlow – API を備えた Java も、TensorFlow でサポートされているプログラミング言語に含まれています。 Java は完全にサポートされている他の言語ほど機能が豊富ではありませんが、サポートされており、急速に改善されています。
  • Deep Java ライブラリ - Java でディープラーニング機能を作成および展開するために Amazon が開発したライブラリ。
  • Kubeflow — Kubeflow を使用すると、Kubernetes 上での機械学習スタックのデプロイと管理が容易になり、すぐに使用できる ML ソリューションも提供されます。
  • OpenNLP – Apache の OpenNLP は、自然言語処理用の機械学習ツールです。
  • Java 機械学習ライブラリ - Java-ML は、開発者にさまざまな機械学習アルゴリズムを提供します。
  • Neuroph - Neuroph は、Java オープン ソース フレームワークを使用して、Neuroph GUI の助けを借りてニューラル ネットワークを設計します。
  • Java がガベージコレクションされた場合、ほとんどのプログラムは実行時に自分自身を削除することになります。 ——ロバート・シーウェル

Java コード スニペットの例:

R

ロス・イハカとロバート・ジェントルマンは 1995 年に R 言語の最初のバージョンを公開しました。現在、R 開発コア チームによって管理されている R は、統計ソフトウェアの開発とデータ分析に使用される S プログラミング言語の実装です。

R の基本的な特徴は、大量のデータの処理に優れていることです。Python の不完全な NumPy パッケージと比較すると、R はより良い選択肢です。R を使用すると、関数型プログラミング、ベクトル コンピューティング、オブジェクト指向プログラミングなど、さまざまなプログラミング パラダイムを処理できます。

R 用の AI プログラミング パッケージ:

  • Gmodels - モデルをフィッティングするためのツールセットを提供します。
  • Tm - テキストマイニングアプリケーション用のフレームワーク。
  • RODBC – R 用の ODBC インターフェース。
  • OneR - 機械学習モデルに適した、単一ルールの機械学習分類アルゴリズムを実装するために使用されます。

データ マイナーと統計学者の間で広く使用されている R の機能は次のとおりです。

  • 拡張機能のためのさまざまなライブラリとパッケージ。
  • アクティブなサポートコミュニティ。
  • C、C++、Fortran で作業できます。
  • 機能拡張に役立ついくつかのパッケージ。
  • 高品質なグラフィックスの生成をサポートします。

プロローグ

ロジックプログラミングの略語。 Prolog は 1972 年に初めて登場し、人工知能、特に自然言語処理の開発に適しています。 Prolog はチャットボットの作成に最適であり、ELIZA は Prolog を使用して作成された最初のチャットボットです。

最初の成功したチャットボット。

Prolog を理解するには、Prolog の動作をガイドするいくつかの基本的な用語に精通している必要があります。

  • 事実は真実の陳述を定義します。
  • ルールは条件が付加されたステートメントを定義します。
  • 目標は、知識ベースに従ってステートメントを送信する場所を定義します。
  • クエリは、ステートメントを正しくする方法と、事実とルールの最終的な分析を定義します。

Prolog は、長い間存在し、データ サイエンティストや研究者の間でよく知られている AI 実装の 2 つのアプローチを提供します。

  • 記号的手法には、ルールベースのエキスパート システム、定理証明、制約ベースの手法が含まれます。
  • 統計的手法には、ニューラル ネットワーク、データ マイニング、機械学習などがあります。

リスプ

Lisp を使用して、n 入力と m ユニットを持つ 1 層パーセプトロンを作成します。

リスト処理の略。これは Fortran に次いで 2 番目に古いプログラミング言語です。 AIの創設言語の1つとしても知られ、1958年にジョン・マッカーシーによって作成されました。

Lisp は不可能を可能にする言語です。 ——ケント・ピットマン

プログラミングのための実用的な数学表記法である Lisp は、すぐに開発者が選ぶ AI プログラミング言語になりました。 Lisp は、次のような独自の機能を備えているため、機械学習 AI プロジェクトに最適な選択肢の 1 つです。

  • ラピッドプロトタイピング;
  • 動的オブジェクトを作成します。
  • ガベージコレクション。
  • 柔軟性。

他の競合プログラミング言語が大幅に改善されるにつれて、他の言語にも Lisp の独自の機能がいくつか取り入れられるようになりました。 Lisp に関連する有名なプロジェクトには、Reddit や HackerNews などがあります。

Lisp といえば、少なくとも Haskell が登場するまでは、世界で最も美しい言語でした。 ——ラリー・ウォール

ハスケル

Haskell は 1990 年に作成され、有名な数学者 Haskell Brooks Curry にちなんで名付けられました。 Haskell は、遅延評価と短いコードに適した、純粋に機能的で静的に型付けされたプログラミング言語です。

Haskell は他のプログラミング言語に比べてエラーが少ないため非常に安全なプログラミング言語であり、エラー処理の柔軟性が高くなります。エラーが発生した場合でも、ほとんどの非構文エラーは実行時ではなくコンパイル時に検出できます。 Haskell が提供する機能は次のとおりです。

  • 強い抽象能力。
  • 組み込みのメモリ管理。
  • コードの再利用性;
  • わかりやすいです。

私が知る限り、タイピングではなく考えることに時間を費やせるプログラミング言語は、SQL、Lisp、Haskell だけです。 ——フィリップ・グリーンスパン

Haskell の機能はプログラマーの生産性の向上に役立ちます。 Haskell は他のプログラミング言語と非常に似ていますが、ごく一部の開発者によってのみ使用されています。課題はさておき、開発者コミュニティでの採用が拡大するにつれて、Haskell は AI 向けの他の競合言語と同様に優れていることが証明される可能性があります。

ジュリア

Julia は、ほぼすべてのアプリケーションを作成できる高性能な汎用動的プログラミング言語ですが、数値解析と計算科学に最適です。 Julia で使用されるその他のツールは次のとおりです。

  • Vim や Emacs などの人気のエディター。
  • Juno や Visual Studio などの IDE。

Julia ソースコードの構成。

Julia には、AI プログラミング、機械学習、統計、データ モデリングに最適な機能がいくつかあります。これらの機能は次のとおりです。

  • 動的型システム。
  • 組み込みパッケージマネージャー。
  • 並列および分散コンピューティングが可能。
  • マクロおよびメタプログラミング機能。
  • 複数のディスパッチをサポートします。
  • C 関数の直接サポート。

Julia は他のプログラミング言語の弱点を解消するように構築されており、TensorFlow.jl、MLBase.jl、MXNet.jl などの他のツールと統合することで機械学習に使用でき、Julia のスケーラビリティを利用してさらに多くのことを行うことができます。

Google トレンド - Julia の使用傾向。

要約する

AI エンジニアや科学者は、プロジェクトのニーズに応じてさまざまなプログラミング言語を選択できます。すべての AI プログラミング言語には長所と短所があります。これらの言語が改良され続けるにつれて、AI 開発はより快適な体験となり、より多くの人々がこのイノベーションの波に参加できるようになります。優れたコミュニティ サポートにより、新しい人にとって物事が容易になり、パッケージや拡張機能へのコミュニティの貢献により、全員の仕事が容易になります。

<<:  自己教師あり学習:AI技術の将来の方向性

>>:  フェイフェイ・リー氏のチームは、一人暮らしの高齢者のCOVID-19症状を監視する家庭用AIシステムを開発

ブログ    
ブログ    
ブログ    

推薦する

...

...

...

新人機械学習エンジニアが犯しがちな6つの間違い

機械学習やデータサイエンスのプロジェクトに取り組む際に、初心者がよく犯す間違いにはどのようなものがあ...

...

医療機器製造における3つの大きなトレンド

医療製造にロボット工学と自動化を導入したダヴィンチ ロボット手術システムが発売されてから 20 年が...

ディープラーニングを使って心臓病を診断する方法

[[204301]]概要: この論文では、心臓磁気共鳴画像 (MRI) データセットからの画像内の右...

...

新薬研究開発の方向性は?人工知能はどのように発展するのでしょうか?トップ科学者の意見

昨日は第4回世界トップ科学者フォーラムの2日目でした。世界トップの科学者たちがオンラインとオフライン...

インスパー・シャオ・シュエ:人工知能はモノのインターネットを「スマート」にする

「人類の発展以来、テクノロジーの継続的な進化により、接続性、インタラクション、オンライン機能が絶えず...

Google の 130 億パラメータの多言語モデル mT5 が利用可能になり、101 言語への容易な移行が可能になりました。

Facebook は多言語機械翻訳モデル「M2M-100」をオープンソース化したばかりだが、今度は...

...

ロボティック プロセス オートメーションの導入を成功させるための 8 つのヒント

RPA は、企業が導入できる、リスクが低く価値の高い自動化アプローチの 1 つです。 RPA ツール...

【ビッグコーヒーがやってくるエピソード5】ビッグデータミドルプラットフォームの構築方法

今回、「ビッグネームがやってくる」のライブ放送にゲストとして参加したのは、iResearch CTO...