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システムを開発

推薦する

AIのブラックボックス問題をどう解決するか?ニューラルネットワークモデルアルゴリズムが答えを導きます

AIが特定のタスクを完了することは目新しいことではありません。結局のところ、AIは産業、医療、農業な...

...

8日間の国慶節と中秋節の休日、ドローンが楽しい時間をお過ごしください

国慶節と中秋節が重なり、長い休暇を利用して旅行する気分が盛り上がっています。関連データによると、今年...

Python と Keras でシンプルな音声認識エンジンを作成する

音声認識とは、機械またはプログラムが話し言葉の単語やフレーズを認識し、機械が読み取り可能な形式に変換...

基数ソートのヒント 1 つ、ソート方法 2 つ、ソートアルゴリズム 3 つ

[[421174]]基数ソートコンセプト基数ソートは、整数をビットごとにソートする非比較整数ソート ...

5 つの主要分野をカバーする、知っておくべき 21 のオープンソース機械学習ツール

この記事では、まだ使ったことがないかもしれないオープンソースの機械学習ツールを21個紹介します。各オ...

RangePerception: Range View3D 検出への新しいアプローチ!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

期待する! 2020年までに中国の人工知能は世界の先進レベルに達するだろう

最近、北京は「科学技術革新の加速と人工知能産業の育成に関する指導意見」を発表し、北京の人工知能発展ス...

人工知能はモノのインターネットにおける次のブレークスルーとなるでしょうか?

AIoT は、モノのインターネットとそれに接続されたデバイスのネットワークをクラウドから解放し、イ...

画像セグメンテーションのためのディープラーニング: ネットワークアーキテクチャ設計の概要

この論文では、画像セマンティックセグメンテーションに CNN を使用する際のネットワーク構造の革新に...

ChatGPTを忘れてください。この新しいAIアシスタントは人々の働き方を永遠に変えるでしょう

翻訳者 |ブガッティレビュー | Chonglou私はしばらくの間ChatGPTとBardを使用して...

星が輝くとき - WOT グローバル テクノロジー イノベーション カンファレンス 2021 が間もなく開催されます

【51CTO.comオリジナル記事】​​​ 100年前、シュテファン・ツヴァイクは彼の有名な著作「星...

【コレクション】貢献度が最も高い GitHub コレクションとディープラーニング フレームワーク 16 選

ディープラーニングは、データの経験的学習に基づく機械学習手法であり、近年発展し、人気が高まっています...

...