ホームページ >バックエンド開発 >Python チュートリアル >すべての開発者が学ぶべき5つのプログラミング言語(前編)
プログラマーがコードを記述する一般的なプログラミング言語は数多くありますが、エンタープライズ ソフトウェアを使用するほとんどのプログラマーは、通常、退職するまでに 1 つのプログラミング言語しか使用しません。ただし、日常の業務で複数のプログラミング言語を使用する機会があるプログラマーもいます。たとえば、プログラマーが Flatter ネイティブ モジュールを使用している場合、Dart、Kotlin (または Java)、Objective-C (または Swift)、C/C++ などを使用する機会があります。
ほとんどのプログラマーは、何十年も 1 つの言語で作業してきたため、技術的なスキルが制限されています。 .NET や Java の専門家がたくさんいることがよくあります。しかし、複数の言語を習得するプログラマーを見かけることはまれです。複数のプログラミング言語を学習すると、さらに多くのメリットが得られます。ただし、人気のあるプログラミング言語をすべて学習するのは賢明な選択ではありません。
このストーリーでは、すべてのプログラマーが学ぶべき 5 つのプログラミング言語を紹介します。また、例を使用して、これらのプログラミング言語を学習する利点を説明します。
C 言語は、ほぼすべての基盤となるソフトウェア コンポーネントの基本言語です。 C の抽象化はハードウェアに近く、C はプログラマに最小限の構文 (32 個のキーワードが予約されています) を提供します。他の最近の人気のあるプログラミング言語と比較すると、C の構文はアセンブリ言語に近いです。その結果、C コンパイラーは C ソース コードを効率的に機械語に変換し、軽量で非常に高速なバイナリ実行可能ファイルを生成できます。
C は C の拡張機能であるため、C 言語にはない C の機能 (クラス、名前空間など) を使用できます。 C/C を学ぶことは、あらゆるプログラマーにとって多くの利点があります。 C/C は自動ガベージ コレクションを提供しないため、C/C は最適化されたコードを記述するように求めます。
C は、事前に構築されたデータ構造やフル機能の標準ライブラリを提供しないため、問題解決能力と基本的なコンピューター サイエンス スキルを向上させます。たとえば、C でスタックが必要な場合は、独自のスタックを構築する必要があります。
同様に、C/C を学ぶことは、コンピューター サイエンスの知識とスキルの向上に役立ちます。次の話は、プログラマが最初に C を学ぶべき理由を説明します。
どの言語でもプログラミングを始めることができますが、他にもたくさんの言語がありますC から始めるメリット!
世界には約 700 のプログラミング言語があります。ただし、開発者はエンタープライズ ソフトウェアを構築するために約 20 の異なるプログラミング言語を使用します。言い換えれば、プログラミング言語はたくさんありますが、一般的な汎用プログラミング言語はわずかしかありません。開発者は通常、学校、大学、またはキャリアの初期にコーディングを開始します。
コーディングを開始するとき、すべての開発者は、次の 1 つの疑問を抱くことになります。最初にどのプログラミング言語を学べばよいでしょうか?大学でコンピュータ サイエンスを学ぶ場合、シラバスは通常 C プログラミング言語から始まります。
C 言語でのプログラミングは、ハードウェア関連のソフトウェア プロジェクトで今でも頻繁に使用されています。
しかし、Java、C#、JavaScript、Go、Python、Ruby、PHP、Kotlin などの言語が現代のソフトウェア業界を支配しています。これは、
一方、C は現代のコミュニティではあまり使用されていません。他の一般的な言語は、C よりもフレンドリーでシンプルかつ柔軟な環境を提供します。はい、ハードウェア関連のプロジェクトには C の方が適していますが、ほとんどの開発者は Web およびモバイル関連のプロジェクトに取り組んでいます。
C を学ぶことが最良の選択である理由を説明しましょう。
###ほとんどすべてのプログラムは、論理アルゴリズムを必要とするコーディング問題を解決するための組み込みメソッドまたはライブラリ メソッドを提供します。たとえば、特定の項目を 2 番目の配列にコピーする必要がある場合は、JavaScript の組み込みフィルター メソッドを使用できます。 Java を使用している場合は、java.util.stream パッケージのフィルター メソッドを使用できます。文字通り、一般的なプログラミング言語には、配列をフィルタリングするための組み込みメソッドまたはライブラリ メソッドが備わっています。ただし、C を使用する場合は、C には組み込みまたはライブラリのフィルタリング メソッドがないため、自分で実装する必要があります。
これらのシナリオが見つかった場合は、解決する必要がある問題に直面することになります。アルゴリズムの問題を練習することは、優れた問題解決者になるための素晴らしい方法です。私たちは、お気に入りのエンタープライズ プログラミング言語の標準ライブラリと組み込み機能のみを含む単純なタスクに常に取り組んでいるわけではありません。私たちは問題解決スキルを必要とするタスクを扱うことがよくあります。したがって、最初のコードを C で作成すると、より優れた問題解決能力が得られます。
また、競技プログラミング ハカソンに参加する開発者は、問題解決に C を使用することがよくあります。
Python、C#、Java などのプログラミング言語は、非常にユーザーフレンドリーな言語です。ただし、これらの言語は物理ハードウェアからは非常に抽象的です。言い換えれば、C でプログラミングを開始するまで、コンピューター ハードウェアの動作を体験することはできません。最新のプログラミング言語はハードウェア関連のエクスペリエンス全体を隠し、まったく新しいサンドボックス環境を提供します。ほとんどの場合、このサンドボックス環境は仮想マシンを使用して作成されます。
残念ながら、開発者はメモリ管理、ファイル処理、コードの最適化などの主要なハードウェア関連のトピックをスキップしています。これらのトピックは C で始まっていないためです。最新のプログラミング言語は、ガベージ コレクターによってメモリの割り当てと割り当て解除を自動的に処理します。一方、C プログラミング言語では、開発者は高度に最適化されたコードを作成してメモリを管理します。
C で最初のコードを書くと、すべてのコンピューター科学者が経験すべき忘れられないハードウェアの旅が得られます。
プログラミング言語が非常に人間らしい抽象化を提供すると、特定のプログラミング言語の柔軟性が低下します。すべての標準ライブラリ メソッドとお気に入りのプログラミング ライブラリの組み込みメソッドは、ハードコーディングされたブラック ボックスとして機能します。言い換えれば、最新のプログラミング言語は低レベルのコードを隠し、開発者にクリーンだが限定されたインターフェイスを提供します。最新のプログラミング言語では、直接動的メモリ割り当てを行うことは事実上不可能です。同時に、C ではすべての低レベル コード アクセスが公開されるため、真の自由が得られます。
C コンパイラは、非常に高速なアセンブリ コードを生成します。したがって、C 開発環境自体が、高パフォーマンスのコードを作成する動機になります。 C では、変数の宣言、メモリの割り当て、メモリのクリーンアップ、リソースへのアクセス、リソースの解放を慎重に行う必要があります。 C から始めた場合は、現在のプログラミング言語で大量のメモリ、不要なリソース、間違ったデータ構造を使用していない可能性があります。
現代のプログラミング言語とは異なり、C では多くの行のコードを記述する必要があります。これは、C では必要なものすべてへの低レベルのアクセスが提供され、高度に抽象化された標準ライブラリが提供されないためです。コード内の行数が増えると、コードの複雑さも増加します。したがって、乱雑なコードを取り除くために、クリーンで一目瞭然のコードを作成する必要があります。
業界レベルのソフトウェア プロジェクトに取り組む場合、クリーンなコードを書くことは非常に必要なスキルです。実際、C ベースのプロジェクトに取り組んだことがあれば、きれいなコードを書くのは簡単です。
C プロジェクトの活発な開発により、C は C のサブセットになりました。確かに C は、フル機能の標準ライブラリを備えた最新のプログラミング言語です。したがって、C の学習は C の学習とは異なります。ただし、直接メモリ操作機能と低レベル アクセス機能は引き続き利用できます。ほとんどすべての最新のプログラミング言語は、新しい構文、セマンティクス、および標準ライブラリ メソッドを導入することで相互に競合します。ただし、Go のような言語は、標準ライブラリとコミュニティ主導のライブラリを拡張するだけです。
開発者が Python、JavaScript、C#、Java などの最新のプログラミング言語にすぐに飛びつくと、C プログラミング言語が提供する貴重な経験を逃すことになります。 C でプログラミングを始めることは、プログラミング言語がハードウェアとどのようにインターフェイスするかを理解するための優れた方法です。
まずはC言語でのハードルートを選択します。お気に入りのプログラミング言語のエキスパートになるのに役立ちます。
*元のリンク: https://betterprogramming.pub/why-every-developer-Should-start-programming-with-c-39b3a87392bf。
Bash は、Unix 系オペレーティング システム用に構築されたコマンド言語およびコマンド ライン インタプリタです。 Bash インタープリタ プログラムは、ほぼすべての Unix 系オペレーティング システムにプレインストールされています。さらに、多くの GUI ターミナル ソフトウェアは、デフォルトのコマンド インタープリタとして Bash を使用することがよくあります。したがって、さまざまな Unix 系オペレーティング システム用の移植可能な Bash スクリプトを作成できます。
プログラマーは、日々のプログラミングの効率を向上させるために、さまざまな実践に従っています。多くのプログラマーは、反復的な手動プロセスのために独自の Bash スクリプトを作成することがよくあります。たとえば、TypeScript プロジェクトの出力をビルドしてコピーするための簡単な Bash スクリプトを作成しました。 Bash を学習することが、学習プロセスの自動化に向けた第一歩であることは間違いありません。プロセスの自動化は確かに生産性を向上させる方法です。
Bash はプロセスをネイティブにサポートします。つまり、名前を指定するだけで別のプログラムを実行できます。したがって、自動化スクリプトをすばやく作成してプログラミングの効率を高めることができます。次のストーリーでは、GUI 要素を Bash スクリプトに追加する方法について説明します。
Bash スクリプトは、Unix で実行できる Bash コマンド言語で書かれた一連の命令で構成されています。シェルインタープリタ。私たちは bash スクリプトを使用して、手動で実行すると明らかに時間がかかるいくつかのタスクを自動化します。しかし、現代のコンピューティングと比較すると、ユーザーとの対話はすべてコマンド ライン インターフェイスを通じて行われるため、bash スクリプトは時代遅れのものです。一部の開発者が、コンソール インターフェイスで重要なコンテンツを強調するために、人目を引くロゴや色を使用していることはわかっています。特定の古い bash スクリプトが高度に技術的なユーザーによって使用されている場合は、問題ありません。しかし、一般のユーザーが使用する場合は、ユーザーフレンドリーなインタラクションがあることが明らかに良いことになります。
実際には、Zenity コマンド ライン ツールを使用して、GUI (グラフィカル ユーザー インターフェイス) ベースの入出力コンポーネントを次の bash スクリプトに組み込むことができます。これは、GTK ダイアログ ボックスを表示するのに役立ちます。さらに、ネイティブ GUI 通知は、notify-send コマンド ライン ツールを使用して表示できます。これら 2 つのツールは通常、一般的な Linux ディストリビューションに付属しているため、いかなる種類の事前インストールも必要ありません。
ネイティブ メッセージ ボックスを使用してユーザーにタスクの完了を表示する方が、コンソールに生のテキストを出力するよりも優れていることは明らかです。 Zenity を使用すると、エラー、情報、問題、警告タイプのメッセージ ボックスを簡単に生成できます。
情報メッセージ ボックス: zenity --info。
#警告メッセージ ボックス: zenity --info。
#エラー メッセージ ボックス: zenity --error。
#エラー メッセージ ボックス: zenity --question。
ユーザーの許可を得て一連の命令を実行する必要がある場合は、質問タイプのメッセージを使用できます。たとえば、ディスクからファイルを削除します。これは、単純な if 条件または $? を使用して実行できます。最後の戻り値を格納する特別な変数。 通知は、長時間実行されるバッチ命令のステータスを表示するのに最適です。これは、ユーザーがコンソールで何が起こっているかを確認するのではなく、他の作業を行っている場合でも通知を受け取ることができるようにするために非常に重要です。ネイティブ通知は、notify send コマンド ライン ツールを使用して簡単に生成できます。 以下の簡単な例を考えてみましょう... Zenity には通知を送信する機能もありますが、通知送信を使用するとより自由に調整できます。 。 Zenity は、さまざまな入力要素を提供することで、ユーザー入力の収集を適切にサポートします。以下の種類の入力ボックスがあります。 カレンダー入力ボックス zenity --calendar。 これは、コンソールからユーザーに yyyy-mm-dd 形式で希望の日付を入力するよう求めるよりも、ユーザーが入力した日付を取得するより良い方法です。 文字列入力ボックス zenity --calendar。 通常、コンソールから文字列入力を取得するには read コマンドを使用します。一般的なキーストローク (ホーム/エンド キーなど) や単純なコピー & ペースト機能も受け入れる GUI テキスト フィールドを提供することで、非技術者に対する bash スクリプトの使いやすさを高めることができます。 非常によく似た zenity --password を使用して、パスワードや PIN などのユーザーの秘密文字列を取得できます。さらに、パスワードを入力すると、ユーザー名フィールドを有効にすることができます。ユーザー名とパスワードが | 文字で区切られて返されます。 ファイル選択ダイアログ zenity --file-selection。 #ネイティブの保存/開くダイアログ ボックスをスムーズに表示できます。 Neutralinojsでもこの機能を使用しています。 通常のコンソール入力を使用してユーザーにいくつかの選択肢を求める場合、ユーザーが希望する選択肢に対していくつかの短縮キー入力を実装できます。たとえば、ユーザーは 1 つのオプションを受け入れるには文字 A を入力するように求められ、一方、別のオプションをアクティブにするには文字 B を入力するように求められます。ユーザーの観点から見ると、このアプローチは GUI ベースのリスト選択を表示することで若干改善できます。 メイン ソフトウェア プログラムとの 2 要素認証のためにどのヘルパー プラグインをインストールする必要があるかを尋ねるインストール スクリプトを作成していると仮定します。 前述したように、常に生のテキストを使用する代わりに、bash スクリプトで使用できる GUI 入力要素がいくつかあります。さらに、これらのネイティブ GUI 要素を使用して実装されたより高度な例を示します。 *元のリンク: https://medium.com/swlh/how-to-modernize-your-bash-scripts-by-adding-gui-cba613a34cb7。 通知
入力要素
以上がすべての開発者が学ぶべき5つのプログラミング言語(前編)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。