ホームページ バックエンド開発 PHPチュートリアル 1 つのプログラミング言語を一生使い続けるのではなく、自分の仕事に適した言語を選択してください

1 つのプログラミング言語を一生使い続けるのではなく、自分の仕事に適した言語を選択してください

Dec 02, 2016 pm 12:02 PM
プログラミング言語

私たちプログラマーがプロジェクトを開始するときに行う必要がある重要な決定の 1 つは、システムの実装に使用する言語、または言語のセットを選択することです。この決定は、システムの実装だけでなく設計にも影響します。たとえば、オブジェクト指向言語を使用するべきですか、それとも手続き型言語を使用するべきですか?言語の選択は、プロジェクトと、プロジェクトに含まれるプログラムのライフサイクルに大きな影響を与えます。多くの場合、私たちは非常に気まぐれな要素に基づいて、あまり考えずに言語を選択します。つまり、この言語が私が普段使用している言語です。この種の体系的な言語を実装するために使用します。この言語は私のお気に入りの言語であり、プログラミングを楽しんでいます。

この決定は深刻かつ長期的な結果につながるため、この決定を下す際にはもっと現実的になるべきではないでしょうか?多くの場合、私たちは選択した言語によって盲目的に偏見を持っています。そして、場合によっては、その言語を選択したくない理由が、まさにその言語を選択する理由である可能性があります。

自分の偏見をオープンにして正直になれば、装飾するときに丸い穴に四角い釘をはめ込む苦労をいくらか和らげることができます。プロジェクトに最適な言語を選択するための秘訣はありませんが、より適切で適切な言語を選択するのに役立つ原則がいくつかあります。

完璧な言語などありません

これは初心者であっても誰にでも予想されることであり、私たちの多くは「もちろん、この言語は完璧な言語ではない」と認めますが、同時に、多くの人は私たちの中には今でも「この言語は最高のプログラミング言語だ」と言っている人がいます。ある言語がプロジェクトに最適な言語であると判断する鍵となるのは、プロジェクトのコンテキストです。つまり、最適な言語は特定の範囲内でのみ存在します。これが私たちの第一原則です:

完璧な言語はありません。どの言語にも長所と短所があります。

たとえば、通常 Java や Python などのランタイム言語を使用する多くの開発者は、メモリ管理などの低レベルの詳細に焦点を当てたり、コンパイル時の型を気にしたりするため、C や C++ は息が詰まると主張しています検査の粒度が厳しいその一方で、開発者には分散された責任が課せられます。これは、私たちが開発しているプロジェクトが、メモリ管理や単一ループで発生するコピー割り当ての数など、一見些細なタスクに焦点を当てていない限り当てはまります。

逆に、私たちがプロジェクト、またはプロジェクトの一部に取り組んでいる場合、コードがどれほど効率的であるべきか、プログラムがどれほど重要で安全であるかについて偏ったニーズがあるのは自然なことですが、これらの一見退屈に見える詳細は、まさに次のレベルである可能性があります。私たちが求めている粒度。この新しい状況では、Java や Python のランタイムの性質は、あまりにも無関心、またはあまりにもぼんやりしているように見えます。代わりに、メモリの割り当てと解放時に実行される移動代入とコピー代入の数を厳密に制御し、エラーをランタイムに漏らすのではなく、コンパイル時にできるだけ多くのエラーを捕捉できるようにしたいと考えています (次のように示します)。ランタイム異常)。

理論的には「完璧な言語はない」というのは明白に聞こえますが、開発者としての私たちの行動はしばしばこの概念から逸脱します。私たちは自分のお気に入りの言語が不完全であることを知っていると言いながら、開発するプロジェクトでは依然としてこの言語を使用し続けます。それが適切かどうかは関係なく。さらに、別の開発者が私たちの言語選択に疑問を抱いたとき、私たちはその反論の中に真実を見出すのではなく、私たちの選択を積極的に擁護します。どの言語にも長所と短所があることに注意してください。習得する言語の長所と短所を理解し、状況に応じて選択してください。

ある言語が嫌いな理由は、その言語を使用すべき理由である可能性があります

直観に反するように思えるかもしれませんが、場合によっては、ある言語が嫌いな理由がその言語を使用する理由である可能性があります。上記の例でも、C++ 開発者としての私の経験では、追跡すべきさまざまな概念 (メモリ管理やオブジェクトの有効期間、C++ プログラミングの 3 原則など) が非常に多いため、プロジェクトを完了するまでに時間がかかりすぎることがよくあります。 .) 単純な関数は煩雑になる可能性があります。 C++ で開発を数週間続けた後、Python、Java、またはその他の「高級」言語を使用できるようになったのは天の恵みのように感じるかもしれません。しかし、本当にそうなのでしょうか?

場合によっては、私たちがその言語を好きではない理由が、それを使用する理由かもしれません。私がドライバーや安全性が重要なリアルタイム システムを開発している場合、上で述べた面倒な理由がこの言語の最大の利点になるかもしれません。たとえば、C++ は、オブジェクトのコピー時に実行されるロジックを表現するためのメカニズムを提供します。これは、効率と厳密性を重視する場合に非常に役立ちます。

これはすべて良くて素晴らしく見えるかもしれないので、嫌いな言語がより役立つ可能性がある文脈を正確に特定するのは困難です。では、どの言語が役に立たないのかをどのようにして知ることができるのでしょうか?これは私たちの 2 番目の原則につながります:

自分自身に正直になる: 自分がその言語が嫌いな理由を知り、嫌いな言語を独断的に考えないでください。

たとえば、上記の C++ の例では、私が長い間 C++ でプログラムするのが好きではない理由は、この言語が厳密な思考を必要とするためです。そうしないと、ジャングルに閉じ込められたのと同じように間違いを犯しやすくなります。 (森全体ではなく木々に焦点を当てすぎています)。この厳格さにより、開発者は、「オブジェクトをスタック上に作成しているのか、それともヒープ上に作成しているのか、あるいは部分的にスタック上に作成し、部分的にヒープ上に作成しているのか?」「このクラスを拡張可能にするには、テンプレートを使用する必要がある」などの疑問を抱くことがなくなります。それとも継承?」など。他の言語では、開発者はそれぞれオブジェクトを作成し、オブジェクト指向の継承を使用するだけでこれらのタスクを実行でき、言語 (より正確にはコンパイラーまたはインタープリター) がこれらのタスクを処理するため、次の機能に進むことができます。詳細。

しかし、自分に正直に言うと、C++ のこれらの機能が好きではない理由は、これらの詳細を表現する責任が私に課せられるからであると認めます。他の言語では、これらの詳細について私に責任がないだけでなく、それらを表現する責任もありません。それらは開発者から抽象化されています。これらの詳細が不可欠な状況では、私が C++ を好まない理由は、まさにこの言語を使用する必要がある理由です。

これは、私たちが眉をひそめたり、その言語にイライラするような機能を使用したりする必要があるという意味ですか?それも必要ありません。別の見方もできるかもしれません。これらの機能を欠点とみなすのではなく、仕事を遂行するための必需品として受け入れる必要があるのか​​もしれません。 「何という悲劇だろう」と言う代わりに、「この言語でこれができるのは神に感謝です」と言うべきです。状況によっては、これらの能力は賜物であり、別の場合には義務であることを覚えておいてください。言語の機能が気に入らない理由について自分に正直になってください。

他の言語に精通しているほど良いです

そのために、ここでお話したい 3 番目の原則があります:

もしあなたが持っている道具がハンマーだけなら、すべての問題は釘のように見えます。

このルールはソフトウェア エンジニアリングには適用されませんが、多くのソフトウェア開発状況を明確に特徴付けています。多くの場合、私たちは言語、または言語をサポートするツール (Java の JMS、Python の ASYNCIO、Rails の Ruby など) が存在することを知っているので、そのツールを選択します。私たちが精通している唯一の言語が Java である場合、遭遇するすべての問題を Java のコンテキストに適応させることになります。たとえば、「通信アプリケーション用のルーティング フレームワークを作成する必要があります。Java でこれを行うにはどうすればよいですか?」これにより、使用できるツールが制限され、ジョブに適切なツールを選択する能力が人為的に制限されます。

この問題の解決策は、視野を広げ、他の言語の機能と複雑さを理解することです。 Andrew Hunt と David Thomas が「The Pragmatic Programmer」で示唆しているように、毎年新しい言語を学ぶのが良い方法です。それは思っているほど簡単ではありません。言語を学ぶことの意味は人によって異なります。もう 1 つの派生的な問題は、進行中のプロジェクトではこの 1 つの言語しか使用しないことが多く、別の言語を学習するのが無駄になってしまうことです。たとえば、私が Android 開発者で、基本的に毎日 Java のみを使用している場合、C# を学ぶのは時機を逸した時間の無駄のように思えるかもしれません。

幻想に騙されないでください。別の言語を学ぶ利点は、問題を別の視点から見ることができ、問題に最適なツールを使用できることです。これを行うには、他の言語に関連する注意点と、開発者が問題を解決するためにそれらの言語を使用する方法を学ぶ必要があります。たとえば、開発者が C++ でメタプログラミングを実行したい場合、C++ でテンプレート メタプログラミング (TMP) を使用できますが、Java でリフレクションを使用することもできます。他の言語が同様の問題をどのように解決するかを理解することで、それが役に立たないと判断するリスクが軽減されます。

別の例として、クラスの実行時の特性を変更できるようにする必要がある場合、C++ の複雑さに精通している C++ 開発者は、このコンパイル時言語の境界を拡張するソリューションをでっち上げたくなるかもしれません。また、Java の知識もある別の C++ 開発者は、「私は C++ が好きですが、この問題を解決するには Java のランタイム リフレクションの方が適しています

プログラミングはたくさんあるので、開発者は言語を選択できます。」と言うことができます。 , そのため、どの言語を学ぶか優先順位を付けることが重要です。今日最も人気のある言語から始めるのもよいでしょう (「Github で最も人気のある言語」、「Github の言語トレンド」、「最も人気のある 9 つのコンピューター言語」、「プログラマー向け Facebook によると」を参照してください) 」など)。

言語は目的ではなく手段です

これは 4 番目で最後の原則で、最も哲学的に聞こえるかもしれませんが、最も重要であるとも言えます:

プログラミング言語は手段であり、目的ではありません。

あなたが言語標準の作成者またはコンパイラの作成者でない限り、プログラミング言語を目的ではなく手段として扱うべきです。目的はプロジェクトを完了することです。最終的な目標はプロジェクトを完了することです。特定の言語を使用しないでください。これは、すべての開発者がその言語について好き嫌いを要求する権利がないという意味ではありません (実際、自分自身に正直であれば、これらの好き嫌いは有利に働く可能性があります。上記の 2 番目の原則) ですが、言語の機能がプロジェクトのニーズに本当に適合しない限り、「これは言語のこの機能を使用する素晴らしい機会だ」などという決断を下す必要はありません。

言語は、目前の問題を解決する方法を表現する単なる手段であることを覚えておくことが重要です。解決している問題領域を最もよく表現する言語を選択するようにしてください。

その他の考慮事項

言語を選択する際に考慮する必要がある追加の事項がいくつかあります:

その言語が他の言語とどのように相互作用するかを考慮します。たとえば、Python がほとんどのプロジェクトに最適な言語であると判断したものの、プロジェクト内に非常に高いレベルの粒度または効率を必要とする明確に定義されたコンポーネントがある場合 (C または C++ の方が適しています)、このプロジェクトでは Python を使用できないという意味ではありません。代わりに、Python を使用し、C または C++ で特定のコンポーネントを記述してから、Python C API を使用してこのコンポーネントに接続することを検討してください。このようなソリューションを定式化するには、Python に C API があることを知る必要があることに注意してください。したがって、最も一般的な言語の機能を知っておくと役立ちます。

ミドルウェアは複数の言語の使用を許可できます。たとえば、モバイル デバイスとサーバー アプリケーションなど、通信する必要がある 2 つのアプリケーションがある場合、それらが同じ言語を使用する必要があるという意味ではありません (もちろん、これが最善の決定であると判断した場合は、同じ言語を使用することもできます) )。モバイル デバイスが Android フォンで、サーバー アプリケーションが Python アプリケーションとして最適な場合、RabbitMQ などのメッセージ ブローカーを使用すると、両方の言語を同時に使用して通信できます。Android アプリケーションは Java RabbitMQ API を使用できます。 、サーバー アプリケーションは Python RabbitMQ API を使用できます。

他の言語の特徴を受け入れましょう。 Java 開発者であれば、パッケージを使用してソース コードの論理単位を分離します。Python 開発者であれば、Python のパッケージ構造を使用して同じことを行います。名前空間を使用するか、クラス名にプレフィックスを付けます (つまり、「DZone_MyClassName」)。自分が話している言語の特徴を理解し、それを受け入れてください。ローマでは、ローマ人と同じように行動してください。そうしないと、イタリア語の発音を好むためにイタリア語のアクセントでドイツ語を話すようなものになり、特徴のないものに聞こえてしまいます。もちろん、言語の機能が古くから存在している可能性もありますが、この場合は理由があるはずです。その理由を必ず理解してください。

英語の原文: Do Not Marry a Language: Selecting the Correct Language for the Job

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei の公式プログラミング言語 Cangjie の入門チュートリアルがリリースされ、ユニバーサル バージョン SDK の入手方法が 1 つの記事で学べます。 Huawei の公式プログラミング言語 Cangjie の入門チュートリアルがリリースされ、ユニバーサル バージョン SDK の入手方法が 1 つの記事で学べます。 Jun 25, 2024 am 08:05 AM

6月24日の当サイトのニュースによると、6月21日のHDC2024ファーウェイ開発者カンファレンスの基調講演で、ファーウェイ端末BGソフトウェア部門社長のGong Ti氏が、ファーウェイが自社開発したCangjieプログラミング言語を正式に発表した。この言語は 5 年間開発されており、現在開発者プレビューが利用可能です。ファーウェイの公式開発者ウェブサイトは、開発者がプロ​​グラミング言語を使い始めて理解しやすくするために、Cangjie プログラミング言語の公式入門チュートリアルビデオを公開しました。このチュートリアルでは、ユーザーが倉街を体験し、倉街を学び、倉街を応用することができます。これには、倉街言語を使用した円周率の推定、2024 年の各月の幹と枝のルールの計算、倉街言語で二分木を表現する N 通りの方法の確認、列挙の使用などがあります。代数計算を実装するタイプ、インターフェイスと拡張機能を使用した信号システム シミュレーション、Cangjie マクロを使用した新しい構文など。このサイトのチュートリアル アクセス アドレス: ht

5年間の研究開発を経て、ファーウェイの次世代プログラミング言語「Cangjie」が正式にプレビューを開始 5年間の研究開発を経て、ファーウェイの次世代プログラミング言語「Cangjie」が正式にプレビューを開始 Jun 22, 2024 am 09:54 AM

本サイトは6月21日、本日午後のHDC2024 Huawei Developer Conferenceで、Huawei Terminal BG Software部門のGong Ti社長がHuaweiが自社開発したCangjieプログラミング言語を正式に発表し、HarmonyOSNEXT Cangjie言語の開発者プレビュー版をリリースしたと報じた。ファーウェイがCangjieプログラミング言語を公的にリリースするのはこれが初めてである。 Gong Ti 氏は次のように述べています。「2019 年に、Cangjie プログラミング言語プロジェクトが Huawei で誕生しました。5 年間の研究開発の蓄積と多額の R&D 投資を経て、今日、ついに世界の開発者と出会うことができました。Cangjie プログラミング言語は、最新の言語機能、包括的なコンパイルの最適化、ランタイム実装を統合しています」すぐに使用できる IDE ツール チェーンのサポートにより、開発者にとって使いやすい開発エクスペリエンスと優れたプログラム パフォーマンスが実現します。「レポートによると、Cangjie プログラミング言語はあらゆるシナリオに対応するインテリジェンス ツールです。

ファーウェイ、HarmonyOS NEXT Cangjie プログラミング言語開発者プレビュー ベータ募集を開始 ファーウェイ、HarmonyOS NEXT Cangjie プログラミング言語開発者プレビュー ベータ募集を開始 Jun 22, 2024 am 04:07 AM

6月21日の当サイトのニュースによると、ファーウェイが自社開発した倉街プログラミング言語が本日正式に発表され、公式はHarmonyOSNEXT倉街言語開発者プレビューベータ募集の開始を発表した。このアップグレードは、開発者プレビュー バージョンへの早期導入アップグレードであり、開発者が倉街言語を使用して HarmonyOSNext アプリケーションを開発、デバッグ、実行するための倉街言語 SDK、開発者ガイド、および関連する DevEcoStudio プラグインを提供します。登録期間: 2024 年 6 月 21 日から 2024 年 10 月 21 日まで 応募要件: この HarmonyOSNEXT Cangjie 言語開発者プレビュー ベータ募集イベントは、次の開発者のみが参加できます: 1) Huawei Developer Alliance 認定資格を実名で取得していること。 2) H を完了していること。

天津大学と北杭大学はファーウェイの「Cangjie」プロジェクトに深く関与しており、国産プログラミング言語をベースにした初のAIエージェントプログラミングフレームワーク「Cangqiong」を立ち上げた。 天津大学と北杭大学はファーウェイの「Cangjie」プロジェクトに深く関与しており、国産プログラミング言語をベースにした初のAIエージェントプログラミングフレームワーク「Cangqiong」を立ち上げた。 Jun 23, 2024 am 08:37 AM

6月22日のこのサイトのニュースによると、ファーウェイは昨日、ファーウェイが自社開発したプログラミング言語Cangjieを世界中の開発者に紹介した。 Cangjie プログラミング言語が公に公開されるのはこれが初めてです。当サイトの問い合わせによると、ファーウェイの「蒼傑」の研究開発には天津大学と北京航空航天大学が深く関与していた。天津大学:倉街プログラミング言語コンパイラ 天津大学知能計算学部のソフトウェアエンジニアリングチームは、ファーウェイの倉街チームと協力して、倉街プログラミング言語コンパイラの品質保証研究に深く参加しました。報告によると、Cangjie コンパイラは、Cangjie プログラミング言語と共生する基本ソフトウェアです。 Cangjie プログラミング言語の準備段階では、それに匹敵する高品質のコンパイラが中心的な目標の 1 つになりました。 Cangjie プログラミング言語が進化するにつれて、Cangjie コンパイラは常にアップグレードおよび改善されています。過去5年間、天津大学

Microsoft Teams で言語を切り替える方法 Microsoft Teams で言語を切り替える方法 Feb 23, 2024 pm 09:00 PM

Microsoft Teams では選択できる言語がたくさんありますが、言語を切り替えるにはどうすればよいですか?ユーザーは、メニューをクリックし、[設定] を見つけて、そこで [全般] を選択し、[言語] をクリックして言語を選択し、保存する必要があります。この言語切り替え方法の概要では、具体的な内容を説明します。以下は詳細な概要です。見てください。バー! Microsoft Teams で言語を切り替える方法 回答: [設定]-[一般]-[言語] で特定のプロセスを選択します: 1. まず、アバターの横にある 3 つの点をクリックして設定を入力します。 2. 次に、内部の一般オプションをクリックします。 3. 次に、言語をクリックし、下にスクロールしてその他の言語を表示します。 4. 最後に、「保存して再起動」をクリックします。

Golang のバイトコードを解き明かす: プログラミング言語の本質を探る Golang のバイトコードを解き明かす: プログラミング言語の本質を探る Feb 26, 2024 pm 02:36 PM

Golang (Go 言語とも呼ばれる) は、Google によって開発され、エンジニアの生産性と開発効率を向上させるために 2007 年に初めてリリースされたオープンソース プログラミング言語です。 Golang は、使いやすさを考慮しながら、プログラミング言語の複雑さを単純化し、効率的な実行速度を提供することを目的としています。この記事では、Golang の特性を深く調査し、そのバイトコード メカニズムを分析し、具体的なコード例を通じてその動作原理を明らかにします。 1. Golang の特徴と利点はシンプルで効率的です。Golang は簡潔な文法構造と豊富な文法構造を持っています。

Microsoft Edge ブラウザーで画像が表示されない場合はどうすればよいですか? - Microsoft Edge ブラウザーで画像が表示されない場合はどうすればよいですか? Microsoft Edge ブラウザーで画像が表示されない場合はどうすればよいですか? - Microsoft Edge ブラウザーで画像が表示されない場合はどうすればよいですか? Mar 04, 2024 pm 07:43 PM

最近、多くの友人が、Microsoft Edge ブラウザーで画像が表示されない場合の対処法を編集者に尋ねました。次に、Microsoft Edge ブラウザーで画像が表示されない問題を解決する方法を学びましょう。皆様のお役に立てれば幸いです。 1. 以下の図に示すように、まず左下隅をクリックして開始し、「Microsoft Edge ブラウザ」を右クリックします。 2. 次の図に示すように、[詳細] を選択し、[アプリの設定] をクリックします。 3. 次に、下の図に示すように、下にスクロールして「写真」を見つけます。 4. 最後に、下の図に示すように、写真の下のスイッチをオンにします。以上が、Microsoft Edge ブラウザーで画像が表示されない場合の対処法について編集者がお届けする内容です。

ファーウェイが自社開発したCangjieプログラミング言語の公式Webサイトと開発ドキュメントがオンラインになり、Hongmengエコシステムに初めて統合される ファーウェイが自社開発したCangjieプログラミング言語の公式Webサイトと開発ドキュメントがオンラインになり、Hongmengエコシステムに初めて統合される Jun 22, 2024 am 03:10 AM

6月21日のこのサイトのニュースによると、HDC2024 Huawei Developer Conferenceの前に、Huaweiが自社開発したCangjieプログラミング言語が正式に公開され、Cangjieの公式ウェブサイトがオンラインになりました。公式ウェブサイトの紹介文によると、Cangjie プログラミング言語は、「ネイティブ インテリジェンス、自然なオール シナリオ、高性能、強力なセキュリティ」に焦点を当てた、オール シナリオ インテリジェンスのための新世代プログラミング言語です。 Honmeng エコシステムに統合して、開発者に優れたプログラミング エクスペリエンスを提供します。このサイトに付属する公式 Web サイトでは、AgentDSL を組み込んだネイティブのインテリジェント プログラミング フレームワーク、自然言語とプログラミング言語の有機的な統合、マルチエージェントの連携、簡素化された記号表現、パターンの自由な組み合わせ、さまざまなインテリジェント アプリケーションの開発をサポート、と紹介されています。あらゆるシーンに対応する本質的に軽量でスケーラブルなランタイム、モジュラー階層設計により、メモリがどれほど小さくても、あらゆるシナリオのドメイン拡張に対応できます。

See all articles