ある外国人プログラマーの感想: C、Python、Java を同時に使用することはできません。1 つのプログラミング言語をよく学ぶことに集中してください。

王林
リリース: 2023-04-30 15:01:06
転載
982 人が閲覧しました

一位国外老程序员的反思:C、Python、Java 不可兼得,专心学好一门编程语言就行!

最近、有名なゲームプログラマーであり id Software の共同創設者である John Carmack 氏はインタビューで、プログラマーはプログラミング言語をよく学ぶことに集中すべきであると述べました。これには少し驚きました。私は個人的にこのアドバイスに強く同意しますが、この見解は今日のプログラマ界では物議を醸しています。

私は、世間で言うところの「老プログラマー」だと思います。私は若くはありませんし、ずっとプログラミングに携わっており、社会に出てからもこの専門的な仕事に携わってきました。時々、私は多くのプログラミング言語の開発を目撃してきたプログラミング言語愛好家のような気分になります。このエキサイティングな歴史を振り返ると、プログラミング言語をいくつか知っておくのは決して悪いことではないという(間違った)結論に達せずにはいられません。プログラミング言語の歴史的な発展は非常に刺激的ですが、今日の開発状況は比較的平和です。

この記事では、過去の歴史を振り返り、経験と教訓を要約し、どのプログラミング言語が最適な標準言語であるかを見ていきたいと思います。

先史時代 (1950 年代から 1980 年代)

コンピューティング ハードウェアと専門分野としてのコンピューター サイエンスの台頭により、コンピューター プログラミング (プロセッサ自体の命令に加えて)外)もゆっくりと発展し始めました。最初の数十年間、プログラミング言語は主に学術界の領域であり、少数の研究者グループを惹きつけていました。プログラマーの選択肢は限られており、主に分野によって異なります。

ビジネス プログラミングでは COBOL が使用され、科学的プログラミングでは Fortran が使用され、その他のいくつかの言語は特定の分野、研究、またはハードウェアによく使用されます。

ほとんどのプログラマーにとって、プログラミングのキャリア全体または長期間にわたって、1 つのプログラミング言語の学習に集中するだけで済みます。プログラミング言語の設計に興味を持っている人もいましたが、当時はこの分野はまだ非常に若いものでした。いくつかの興味深い革新にもかかわらず、優れたプログラミング言語の設計に何が必要なのかはまだ十分に理解されていません。

専門化(1980年代から1990年代)

コンピュータハードウェアの数が増加し、その用途がますます多様化するにつれて、プログラミング言語の数も増加し始め、プログラミング言語の選択は人気のトピックになっています。人々はプログラミング言語を分類し始めました。プログラマーのタイプと達成したい専門知識のレベルに基づいて、プログラマーがどの言語を選択するかがわかります。

パーソナル コンピュータ プログラミング愛好家は、ますます人気が高まっている BASIC を使用します。これは非常に不条理で原始的なプログラミング言語ですが、広く使用されており、(私を含む) 何世代ものプログラマーにとってのガイドとなっています。 Pascal は構造化プログラミングを導入し、大きな影響を与えました (Pascal は Turbo-Pascal と Delphi で繁栄したコミュニティを構築しましたが、最終的には消滅しました)。

C は UNIX に由来し、システム プログラミング言語になりました。 C は C の後継となり、Smalltalk からオブジェクト指向プログラミングを借用し、プロのアプリケーションおよびサービス開発者向けの言語になりました。最終的に、Visual Basic (BASIC とは何の関係もありません) が「ビジュアル プログラミング」を普及させ、(Windows の出現で急速に成長した) アプリケーション開発のニーズを満たし、大衆の最初の選択肢となりました。しかし、一般に、VB プログラマーはパートタイムのプログラミングの仕事をしているドメインの専門家であり、C と C は「プロの」プログラマーであると考えられています。

現段階では、人々はプログラミング言語の設計をまだよく理解していないため、多くの人気のあるプログラミング言語の設計の多くの側面が理想的とは言えません。 C 言語はシンプルで強力ですが、習得するのが難しく、問題が発生する可能性が多すぎます。 Cは良い意図はあったものの、デザインも使用感も悪いものになってしまいました。 Visual Basic は楽しくてシンプルでしたが、当時の技術的状況を考えると少し扱いに​​くく、優雅さや効率性に欠けていました。 Smalltalk と LISP はどちらも興味深くエレガントな言語でしたが、特殊なハードウェアと高価なツールに結びついていたため、最終的には人気がなくなりました。

成熟期 (90 年代から 2000 年)

その後、インターネットが登場しました。インターネットがプログラミング言語に与える影響の程度は不明ですが、重要な要素であることは間違いありません。一昔前は、プログラミング言語は珍しいもので、通常は研究室や大規模な営利企業で生まれましたが、今では誰でも独自のプログラミング言語を開発できるようになったようです。一時期、PERL はシステム管理から Web プログラミングまであらゆるものをカバーする人気の汎用言語になりました。

その後、Python は科学研究用の言語から、シンプルで学びやすい汎用言語へと変化し、最初はゆっくりと発展しましたが、最終的には全世界を席巻しました。 Netscape の Brandan Eich は、JavaScript を (非常に限定されたブラウザ拡張言語として) わずか数日で開発したと言われています。これはアイヒが天才であることを証明するだけでなく、当時の人々がプログラミング言語の設計を十分に理解していたことも証明しています。

この期間には他にも多くのプログラミング言語が登場しましたが、その中で最も有名なのは Java です。言語自体には特別な点はありませんが、言語が提供する JVM は「一度書けばどこでも実行できる」を実現するユニバーサルなランタイム環境です。つまり、この言語は非常に汎用的であり、特定のハードウェア、オペレーティング システム、または制限事項に限定されません。ターゲット環境の。厳密に言えば、初期の JVM は目立ったものではありませんでしたが、言語ランタイムとデプロイメント オプションがますます成熟する時代の到来を告げました。

急速な開発 (2000 ~ 2010 年)

JVM 以来、プログラミング言語は興味深い方向に急速に発展し始めました。 Self 言語から派生したジャストインタイム コンパイラ (JIT) (Smalltalk の後継。優れているものの非常に失敗しました) がさらに研究され、その結果 Java の HotSpot が誕生し、Microsoft は Java に対抗するために .NET CLR を立ち上げました。 .NET はさらに一歩進んで、C# だけでなく、複数の言語のユニバーサル ランタイムとして CLR (Common Language Runtime) を使用します。今にして思えば、これは分岐点でした。プログラミング言語の選択は重要ではなくなりました。

これは、Microsoft がこの選択をした主な理由ではないかもしれません (当時、Microsoft はまだ非常に人気のある Visual Basic と C# のサポートを継続しようとしていた)、その期間中に Microsoft が閉鎖されたことと相まってライセンスの問題により、最終的に CLR は最も人気のあるオペレーティング環境にはなりませんでした。しかし、2000 年代に入ってから最初の 10 年間で、プログラミング言語はさらに多くなり、どこにでも存在するようになりました。

一方で、プログラマーの数も爆発的に増加しました。ソフトウェアの需要が急速に高まり、ツールや知識がより広く利用できるようになったことで、世界中で何百万人もの人々がプログラマーになりました。これらのプログラマーは人間であり、グループとしての強いアイデンティティを求めています。一般の人がスポーツ チームに対して強くて不合理な意見を持つのと同じように、プログラマーもプログラミング言語の選択に関してどちらかの側に立つようになり始めています。多くのプログラマーは、新しくてユニークな特別なプログラミング言語を選択する必要があります。

たとえば、関数型プログラミングが王者であり、Python よりも Ruby の方が優れており、Scala はデータサイエンスを完全に変えるだろうし、Clojure を選ばなければ損だ、と主張する人もいます。この時点で、プログラミング言語は線形開発から混沌としたダーウィンの適者生存の時代に入りました。

ハイパー標準化 (2010 年から現在)

私は、この時期の人々は、一部のプログラミング言語は開発を維持するにはクレイジーすぎることに気づくだろうと思いました。しかし、そうではなく、事態は思わぬ方向へ進んでいきました。多くのアプリケーションやサービスがインターネット上の多数の分散ノードに展開される「クラウド」コンピューティングの時代では、どのプログラミング言語が使用されるかはもはや重要ではないようです。プログラマーは相互に通信する独立したコンポーネントを開発しているのに、なぜわざわざプログラミング言語を使うのでしょうか?コンポーネントは、お互いがどの言語で書かれているかを知る必要はありません。プログラマが X 言語でコンポーネントを作成したい場合は、この言語を使用してください。誰が気にする。

同じことが、異なるマシン上で実行されているコンポーネントにも当てはまります。Docker のリリースにより、単一のマシン上で実行されるアプリケーションであっても、オーケストレーション ソフトウェアを介してマシンのクラスター上で実行されるアプリケーションであっても、コンテナーの人気が高まりました。共同して実行されるソフトウェアはすべて、同じパラダイムを使用して簡単に管理できます。

現在も人々は新しいプログラミング言語を開発しており、その多くは将来性があり、大いに期待されています。ドメイン固有のもの (モバイル アプリの Swift、Kotlin、Dart、イーサリアム スマート コントラクトの Solidity) もあれば、より一般的なものもありますが、各言語は数十年にわたって学んだ教訓から恩恵を受けています (クラウド プログラミングの Go、システムの Rust)プログラミング、TypeScript、JavaScript のスーパーセットなど)。

同時に、プログラミングの世界は新たな成熟レベルに達しており、すべての新しいトレンドを追いかけたり、すべての新しい言語を採用したりする必要はなくなりました。私たちは皆成長しました。

プログラミング言語の学習に集中する

いくつかのプログラミング言語が確かに優れていることは間違いありませんが、他のプログラミング言語は特定のユースケースの処理に適しています。しばらくプログラミングをしたことがある人なら、新しい言語を学ぶのはまったく難しいことではないことを知っています。ほとんどのプログラマーは、午後わずか 1 時間で新しい言語の基礎を簡単に学習でき、数日間使用すると、多かれ少なかれ生産性が向上します。新しいプログラマーは、主要なプログラミング言語のいずれかから始めて、プログラミングの知識を他の言語に簡単に適用できます。

ただし、主に 2 つの理由から、プログラミング言語が頻繁に変更されることは良いことではありません。まず、プログラミング言語を学ぶことは、チェスを学ぶことに似ています。ルールをすぐに覚えることはできますが、だからといって経験豊富なプレイヤーに勝てるわけではありません。戦略を学ぶ必要があり、それには時間と練習が必要です。これは、ベスト プラクティス、落とし穴、最適化テクニック、ライブラリ、ツール、コミュニティのエコシステムです。次に、プログラミングは簡単ですが、エラーが発生しやすいです。

一般的なプログラミング経験と最高のツールがあっても、アイデアをコンピューター コードに変換するのは直感的な行為ではありません。プログラマがどのような直感を培っても、繰り返し使用し、即時にフィードバックし、エラーを修正するというサイクルを経る必要があります。プログラミング言語を変更するたびに、代償が発生します。したがって、私の経験では、プログラミング言語の選択は重要ですが、一度選択したら、長期的にはその言語を使い続ける必要があります。

プログラミング言語の選び方

2022年までに、プログラミング言語を選択する際には次の点を考慮する必要があります。

まず第一に、最も重要な考慮事項は、言語の適用範囲です。特定のドメインであり、ドメイン固有の言語を使用する必要がある場合は、最も一般的に適用可能な言語が優先されます。幸いなことに、Java は「一度書けば、どこでも実行できる」ことを提案して以来、ランタイムとデプロイメントはもはや問題ではなく、コストとライセンスも制約ではなくなりました。現在では、すべてのプログラミング言語、ランタイム、各種ツールが基本的に無料で入手できます。ある言語が特別な機会に適していない場合、それはその言語が十分に人気がなく、すべての人に普及していないか、またはその言語が実際にはその任務に適していないいくつかの基本的な要因が原因であるとしか言えません。

人気は重要です。強力なコミュニティ、豊富な情報源、一緒に働いたり雇ったりできる他のプログラマーが多数いる言語を選択する必要があります。人気のない言語は選択する価値がありません。特別な状況に遭遇した場合、選択はさらに難しくなります。すべてのシナリオに適した 1 つの言語はありませんが、理想的には、共通の主流言語でほとんどのシナリオに十分であるはずです。

最後に、私たちが選択するプログラミング言語は、他のほとんどの言語よりも優れている必要があります。 2022 年になっても、学習や使用が難しく、プログラマーをトラブルに陥れやすいひどいプログラミング言語がいくつかあります。

上記の記述を考慮すると、実際にはあまり選択肢がないと思います。それでは、これらの最高のプログラミング言語を見てみましょう。

最高のプログラミング言語

JavaScript / TypeScript

プログラミング言語の世界における JavaScript は、人間が言語を理解するために使用する英語のようなものです。通信する。これは最も人気があり汎用性の高いプログラミング言語であり、さまざまなシナリオ (ブラウザ/フロントエンド、システム/バックエンド、多くの環境に拡張言語として埋め込まれている) に適しています。 JavaScript のランタイム (V8/Node/Deno) は非常に効率的で、多くの優れたツールと大規模なコミュニティがあります。

TypeScript は、強力な型指定と標準ツールを導入した JavaScript のスーパーセットであり、すぐに JS プログラミングのデフォルトの選択肢になりつつあります。

Rust

Rust は C/C のすべての機能を備えており、より使いやすく、トラップが多すぎません。 Rust のコミュニティとエコシステムは強力で成長しており、ツールは使いやすいものです。 Rust が必要な機能をすべて備えているのであれば、それが最良の選択であることは間違いありません。以前は C または C しか使用できませんでしたが、Rust を選択できるようになりました。さらに、Rust は WebAssembly 用の独自のユニバーサル言語も構築しています (WebAssembly は、究極の「一度書けば、どこでも実行できる」ランタイムであると言えます)。

強力な競争相手

Python

私は 20 年以上 Python を使用してきましたが、残念ながら 2022 年の時点でも Python はまだ機能していません。まさに汎用プログラミング言語です。理由の 1 つは、Python が依然として非常に非効率であり、パフォーマンスを重視する多くの状況では使用できないことです。もう 1 つの理由は、Web ブラウザや携帯電話など、主流のユーザー向け環境に導入されていないことです。それにもかかわらず、Python は依然として優れたプログラミング言語であり、データ エンジニアリング/データ サイエンス/機械学習で重要な位置を占めているため、これらの分野で働く場合、Python は間違いなく知って愛する価値のある言語です。現状では、Python はデータ サイエンスの汎用言語として発展し続ける可能性がありますが、この分野を突破することはできないかもしれません。

Go

Go は、「クラウド」プログラミングに非常に適した言語です。 Go 言語はエレガントで、習得と使用が簡単で、優れたコミュニティ、エコシステム、ツールを備えています。これはクラウド ネイティブ領域のコア製品で広く使用されているため、今後も定着します。残念ながら、Go は普遍的に適用できるわけではなく、インターネット サーバーの外では使用できません。さらに、Go の設計上の選択により、C/C++ の世界ではパフォーマンスが良くありません。 Go は優れていますが、どちらかを選択する必要がある場合、Rust は Go で実現できるすべての機能を実装できます。時間が経つにつれて、Go は主流のシステム プログラミング言語に取って代わられる可能性があります。

C#/Java

C# とそのエコシステムは優れており、それを使用してさまざまなことができます。 Java はあらゆる面で C# ほど優れているわけではないので、なぜそれを好む人がいるのかわかりませんが、Java は本当に人気があります。 C# はシステムおよび「ビジネス」言語としてだけでなく、現在ではモバイル アプリケーションやブラウザーにも広く使用されています。強力なランタイム、優れたエコシステム。ただし、C# のカスタマイズされたランタイムおよびツール機能が必要でない限り、C# が短期的に JavaScript や Rust と競合することは困難です。

C/C

リンディ効果によると、C と C は今後数十年間人気があり続けるでしょう。これら 2 つの言語の専門家であれば、仕事を見つけることについて心配する必要はありません。この分野での必要性がある場合は、両方の学習に時間を費やすことも良い選択です。それ以外の場合は、Rust を選択する方が適切です。

佳作

Swift / Kotlin / Dart

これらの言語は特定の分野で活躍します。モバイル UI プログラミングが必要な場合、これらは良い選択です。しかし、JavaScript はより汎用的に適用でき、モバイル開発にも適しているため、JavaScript をもっと選択する必要があります。

LISP (ラケット/Clojure)

LISP は非常に特殊なので、日常業務で必要がない場合でも、学習する必要があります。 Racket は最先端の非常に複雑な言語です (実際には言語構築ツールキットです)。 Clojure は、JVM をターゲットにしており、Java ライブラリを使用できるため、強力であると噂されています。しかし、このセールスポイントがどれほど役立つかはわかりません。

Haskell / F# / Scala

関数型言語は重要です。場合によっては、それらが優れた選択肢となります。 Haskellは関数型プログラミングの代表格です。 F# は CLR 上で実行され、.NET ライブラリを使用できるため、一般的な適用性が高くなります。 Scala は純粋に機能するものではありませんが、非常に汎用的であり、JVM 上で実行されます。

Julia/R/MATLAB

Julia は数学の分野に非常に適しています。 R と MATLAB はどちらも特定の状況に適しています。しかし、Pythonが主流のデータエンジニアリングの分野では、これらのプログラミング言語が生き残るのは難しいかもしれません。

PowerShell

シェル プログラミングに興味がある場合は、PowerShell が最適な選択肢です。これはすべてのオペレーティング システムで動作するため、他のシェルを使用する理由はありません。 PowerShell は汎用プログラミング言語と考えることもできますが、実際には、システム管理以外の目的で PowerShell を使用する人はいません。

晩年

PHP / RUBY / PERL

これらの言語にも、主に Web の「バックエンド」として栄光の時代がありました。言語。これらの言語についてどう考えても、もう努力を無駄にするべきではありません。彼らは皆死につつある。

Visual Basic / VBA

VB は世界を変えましたが、現在は汎用言語としても、他のプログラムの拡張としても、脇に追いやられています。遠い過去には VB で実現できた機能が、今では他の最新の言語でより適切に実現できるようになりました。

概要

私はプログラミング言語が大好きで、常に新しい言語に興味を持っています。ただし、現時点では TypeScript が C の第一の選択肢であり、パワーと低レベルのアクセスが必要な場合は Rust が 2 番目になります。 2022 年にはほぼすべてのプログラマーが私と同じような見方をしていると思います。

以上がある外国人プログラマーの感想: C、Python、Java を同時に使用することはできません。1 つのプログラミング言語をよく学ぶことに集中してください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!