最初のプログラミング言語の選択

確かに、これはプログラミングについて話すときに私のメールボックスに最もよく寄せられる質問の XNUMX つです。 プログラミングを学び、世界中のフリー/オープンソース ソフトウェア コミュニティへの貢献という形で無料の知識を還元できる一連の記事を開始しようとしている場合、この基本的だがやや難しい質問に答える必要があります。 。 どのプログラミング言語を学べばよいでしょうか?

少し歴史

プログラミング言語を理解して選択するには、まずその言語の歴史、用途と機能、そして時間の経過とともに異なるニーズをどのように解決するかについて少し知る必要があります。

機械語(低レベル)

一般的に知られている アセンブリ、より一般的な言語の方言として定義できるプログラミング言語です...これは少し複雑に聞こえますが、例を挙げてみましょう...コンピューティングの世界共通言語は 電気、これは、最終的にコンピューターが読み取るものは 0sy 1これを次のように呼びましょう eコンピュータスペイン語。 この例では、スペイン語が基本ルールですが、よく知られているように、ラテン系アメリカ人が話すスペイン語はスペインで話されるスペイン語と同じではありません。さらに、ペルーのスペイン語とアルゼンチンのスペイン語は同じではありません。 明らかに私たちは皆、ほぼ同じ言葉を持っています (0sy 1s) ですが、その使用法と意味は文脈によって異なる場合があります。

これはプロセッサ レベルで発生します。 について話すとき コンピュータアーキテクチャ、 (amd64、intel、arm、…) その方言を指します。 コンピュータースペイン語。 というのは、会社によって順序や意味の捉え方が異なり、電流の流れや物を入れる順番など細部が異なる場合があるからです。 0sy 1s.

これらのプログラミング言語は、可能な限り最低レベルのプログラミングで動作するため、非常に高速ですが、アーキテクチャに大きく依存しており、確かに他の言語よりも学習が少し複雑です。 これらは通常、データを変換し、その上で有用なことを実行できるようにするために、より広範な概念ベースを必要とします。 ビデオ ゲーム愛好家にとっては、Assembly を使用してゲームをプログラムした SEGA コンソールがその例でしょう。 当然、当時は現在に比べてメモリの量が最小限であり、高速で軽いプログラムを作成できる言語を習得する必要がありました。

高レベルの言語

この大規模なグループは、その後に登場した言語について熟考しています。 アセンブリ。 移植可能なコードを入手する必要性から、と呼ばれる言語グループが誕生しました。 編集済み。 このうち、最初に利用したのは C で、70 年代以来オペレーティング システム レベルでプログラミングを支配してきました。

コンパイルされた言語

私が話していることの実際的な例を見てみましょう。 コード行を出力する非常に単純な C 言語プログラムを見てみましょう。

自分の。 クリストファーディアスリベロス

コンパイルすると次のようになります。

独自のデザイン。クリストファー・ディアス・リベロス

ここで、同じ結果をアセンブリ コードで複製するには何を記述する必要があるかを見てみましょう。

自分の。 クリストファーディアスリベロス

これは 3 行のコードの翻訳です simple.c、 ファイル simple.s コマンドによって作成されます gcc -S simple.c それは私たちのプロセッサが方言で理解できるものです アセンブリ。 明らかに、以下で構成される実行可能ファイルを作成するには、 0sy 1ファイルを処理する必要がある simple.s そしてそれをシステムの共有ライブラリに接続します。 これは、 アセンブラ (as) と conector (ld).

コンパイルされた言語には、低レベル言語に比べて大きな利点があります。 ポータブル。 移植性により、アーキテクチャごとに特定のコードを生成することなく、さまざまなプロセッサ上で実行できるコードが提供されます。 もう XNUMX つの明白な利点は、コードの読み取りと書き込みの簡素化です。 その主な欠点の XNUMX つは、非常に複雑であるということです。次に説明するタイプの言語と比較して、C が提供する自由は、制御方法を知らないと有害になる可能性があります。それは確かに、言​​語を手渡すようなものです。銃を使用する場合、経験がない場合、銃を掃除しようとして足を撃ってしまう可能性があります。

通訳された言語

このグループには多種多様な言語があり、その中でも最も重要なものには Python、Ruby、JavaScript、PHP などがあります。これらの言語の基本的な考え方は、プログラムを迅速に作成して実行する方法を提供することです。 , これは、難しい処理の多くがインタプリタ内で実行され、論理プログラミングがコード内に実装されているためです。 上記と同じ例を、今回は Python で記述した例を見てみましょう。

自分の。 クリストファーディアスリベロス

最も優れた点としては、最初の行がインタープリター (アプリケーションを実行するプログラム) の呼び出しを担当しており、後続のコードはすべての重い作業がインタープリターで行われるため、C バージョンよりも「単純」であることがわかります。

自分の。 クリストファーディアスリベロス

インタープリタ言語は、より厳格なセキュリティ管理を備えているため (最適な言語でも間違いを犯す可能性があるため、完璧ではないことに注意してください)、開発者に強力なセキュリティ層を提供し、気付かないうちに武器を発砲するリスクに悩まされることがなくなります。最初の試行時にインタプリタがアラートをドロップし、実行がキャンセルされるためです。 主な欠点は、プログラムを実行すると明らかになります。コードが動作することを保証するための処理量が増えるため、バイナリの対応するプログラムよりも遅いからです。 プログラムが極端に短い期限を必要としない場合、違いは気づかれない可能性がありますが、XNUMX 秒あたり数千または数百万のデータについて話している場合、コンパイル言語では違いが急激に顕著になります。

タイピング

これはプログラミング言語の特性であり、次のことが考えられます。 強く 弱く 入力した。 メモリがプログラムにどのように保存されるかを理解することは必要であり興味深いものであるため、このトピックは別の投稿に残すつもりですが、今のところ区別する必要があるのは、厳密に型指定された言語とは、型を知る必要がある言語です。変数または定数で処理されるデータの 弱く 型はそのような方法で変換を実行できます 暗黙 そしてすべては、言語に続く変換階層に依存します。 (今理解できなくても問題ありません、後回しにしておきます)

パラダイム

GNU/Linux の世界のあらゆるものと同様、プログラミング言語はパラダイムに基づいており、その周りにコミュニティが生成されます。 たとえば、 パイソン財団 o ルビー o PHP または Bash (この場合は GNU コミュニティ)。 ここで私が言いたいのは、それぞれの言語に多くの長所と短所があることを表現することはできませんが、無料のプログラミング言語があるところには、学習して参加できるコミュニティがあるということだけは言えます。 すべてではないにしても、多くの言語インタプリタは C またはそれに近い派生言語で書かれており、その開発は通常、すべての言語ユーザーに影響を与える決定を担当するコミュニティの小規模なグループによって実行されることは言及する価値があります。 C の場合のように、言語の正しい開発を保証する機関を設立することもできます。

どちらを選ぶべきですか?

言語についてはもう十分話しましたが、最も重要なことにはまだ答えていません 😛 。 しかし、この小さな記事を読んだ後は、どの言語を選択すればよいかを私が言う必要がないことを願っています。なぜなら、この情報があれば、好奇心をそそられる言語を見つけることができるからです。 言語でプログラミングを学びたい場合は明らかに アセンブリ 何かを機能させるまでには多くの時間がかかりますが、コンパイル言語を選択すると、その時間は大幅に短縮されます。*NIX システムでの移植性に加えて、C または派生言語に触れることで、オペレーティング システムが一般的にどのように動作するかを何らかの形で学ぶことができるため、同じシステムの動作に関する情報を学ぶことができます。 最後に、何か軽いことを学び、多くを理解することなく多くのことを実行できるようにしたい場合は、インタープリター言語はプログラミング スキルを学び、開発するための楽しい方法です。

刺激的なもので学ぶ

これが私があなたにできる最高のアドバイスです。何かを学びたいなら、まず何か刺激的なものを見つける必要があります。そうしないと、プログラミング言語の典型的な学習曲線を克服するのは非常に困難になります。 彼らがシステムを管理していると仮定すると、その場合、システムを管理するための理想的な言語を学ぶ必要があるかもしれません。 スクリプト記述 (解釈されています)、その中には Perl、Python、Bash などがあります...ゲームが好きなのかもしれません。作りたいゲームの種類に応じて、JavaScript、Lua、C++ などの言語でのプロジェクトがたくさんあります。 おそらく、システム レベルでツールを作成したいと思うかもしれません。なぜなら、いくつかは繰り返されているのがわかるように、C、Python、Perl があるからです。これは、多くの言語が多くのタスクに使用できるためです。そのため、次の定義が行われます。 多目的言語 これらのほとんどで。

プロジェクトを開始する

これは、次のコンパイラや次のプログラミング言語を作成するという意味ではありません。お気に入りのプログラムの小さなバグを修正するプロジェクトかもしれませんし、ドキュメントの改善に役立つかもしれません。 なぜ文書化するのか? ソフトウェアがどのように動作するかを学ぶには、ドキュメントを読んで作成を手伝うことより良い方法はないからです。ソース コードは、プログラムに関する最大の情報源だからです。 プロジェクトのコードを読んで、そこから得られる機能と値を理解する方法については、また別の機会に見ていきます。

ここまで来ていただき、誠にありがとうございます。いつものように、あなたのコメントは、より良いコンテンツを作成し、どこに注目すべきかを知るのに役立ちます。よろしくお願いします。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   匿名の

    いつものように 10 です !!!!!! 記事をありがとうございます。 ご挨拶など、これからも続きます!!!!

    1.    クリスADR

      どうもありがとうございます 🙂 書き続けるのにとても励みになります。 ご挨拶

  2.   ルベン

    「どの言語を選ぶべきか?」という質問は間違いだと思います。 私は、言語は重要ではなく、プログラミングの基礎を学び、「計算的に考える」ことが重要だと考える人の一人です。 構文、その型指定、OOP をサポートするかどうか、そのユーティリティなどを選択します。 それはスタジオでは自然に身につくものだと思いますし、結局のところ、すべてのプログラマーは 1 つ、2 つ、3 つ以上の言語を知っています...そして、彼らが持っているプログラミング概念 (構文ではなく) のおかげで、プログラミングすることができます。まだ経験のない言語で。
    ただし、初心者にとっては、そのシンプルさから Python が良い言語になると思いますが、何よりも、もう少し進んでアルゴリズムを勉強し、物事が「内部」でどのように機能するかを知る必要があります。

    よろしくクリスADR

    1.    クリスADR

      こんにちはルーベン、共有してくれてありがとう。
      プログラミングの世界では、私が時間をかけて学んだことがあります。それは、「多くのことをカバーする人は、あまり絞り出さない」ということです。この有名なフレーズで私が意味しているのは、何度も、特に最も熱心な人は、決定を下すということです。何でも少しずつ試してみることができ、プログラミングの学習方法に関しては非常に早い回転を示します。 私は、これが私の個人的な意見ですが、優れた開発者はコンパイラ言語とインタプリタ言語を理解し、習得し、アセンブリ言語の概念を理解している必要があると信じています。
      その理由は次のとおりです。プロトタイピングは常にシンプルかつ高速で、簡単に生成できるものであり、通常は結果が表示されるものである必要がありますが、それでも十分でない場合は、通訳が到着したときに頼れる「プラン B」が必要です。その限界。
      アセンブリの方言を知ることは自信を与えるだけでなく、「計算的に」考えることを教えてくれます。しかし明らかにこの部分がすべての中で最も難しく、すべてのプログラマーが達成できるわけではありません。
      しかし、本題に戻りますが、私が思う主な考え方は、「言語を選んで、たくさん練習する」ということです。なぜなら、プログラミングが上達する唯一の方法は、コードを読み書きすることです。これは、私が大学から学んだことだからです。カーネル コミュニティでは、同じ構文を長期間維持すると、フォームが見えなくなり、背景が気になり始めます。 最初から言語または構文を選択するという考えは、プログラムの構文ではなくプログラムの意味を読み始めることができるように読み書きに慣れることができるということです。
      これがこの投稿の中心的な理由であり、各人が自分の言語を選択して、次の投稿で概念を説明できるようにするためです。おそらくこれで疑問が解消されるでしょう 🙂
      ご挨拶と、共有してくれてありがとう。

  3.   デイビス・コントレラス

    投稿ありがとうございます、良かったです。

    よろしく

    1.    クリスADR

      こんにちは、Deibis さん、共有してくれてありがとう 🙂 よろしく

  4.   ホルヘFS

    私のアドバイス: PHP 以外のものなら何でも。 20 年前、CGI を使用して別の言語で Web をプログラムするという高度な複雑さのため、PHP の存在にはある程度の意味がありました。 しかし現在では、Python の Django、Java の Spring、Ruby の Rails など、強力な言語で Web 開発をさらに楽しくするさまざまなフレームワークが存在します。 現在、PHP はあらゆる言語の人気リストに載っていますが、私の考えでは、PHP は時間の経過とともにその関連性を失うと考えています。
    プログラミングの現実を理解するには、C/C++ から始めることを強くお勧めしますが、学習には非常に時間がかかります。
    ご挨拶。

    1.    クリスADR

      こんにちは、Jorge さん、シェアしてくれてありがとう。Laravel はかなり堅実なフレームワークであることを思い出しました 🙂 私は個人的に Web 開発には Spring や Java が好きではありませんでした。非常に面倒だと思います。しかし、それは市場に登場してきた時間の長さの一部だと思います。当時は先駆者であり、確かに今日の最新の代替手段 (Js、Python、Ruby) は、それほど手間をかけずに読み取り可能で変更可能なコードを表示する方法を改善することに成功しました。
      私も、人生のある時点で人々に C/C++ を学んでもらいたいと考えています。私は Java から始めましたが、それがプログラミングの美しさだと思います。好きなものから始めても構いません。一貫性を保てれば必ず報われます。 🙂 ご挨拶

    2.    ルベン

      私はこれ以上あなたに同意できません。 私は何年も前に C と VB から始め、その後 (Web 開発に重点を置いていたため) PHP と JS に集中し、その後勉強中に主に C/C++ と Java を学びました。
      PHP には、この記事では紹介しきれなかった多くの利点があります。 PHP7 は高速で (Python よりも高速です...hhvm、さまざまなキャッシュ、Phalcon などのフレームワーク、Python の場合はバイトコードを使用せずに)、膨大な数のライブラリとフレームワークがあり、使用できる直接実装された関数が多数あります。非常に C に似た構文により、いつでも他の言語への移行が非常に簡単になります。
      世界中の Web サイトの 30% が WordPress (PHP) で作られており、それは変わっていないようで、Wikipedia がそれを使用し、Facebook (hhvm を使用) と多数のサイトが合計 80% を占めています。

      Ruby on Rails は、Django と同様に 12 歳であることを思い出してください。 今回彼らはどのようなノルマを達成したのでしょうか? そしてもちろん、私たちは実質的に独占を持ち、断片化の種類が存在しない 2 つのフレームワークについて話しています。 他にどのような深刻な代替手段があるでしょうか? PHP が関連性を失うだろうと言うのはほとんど意味がありません。

      Python が今流行っているのは、学習曲線が速く、シンプルな言語であるためです。また、Google や現在、履歴書で自分自身を差別化するために新しい言語 (Go、Dart など) を探すという流行があります (あるいは、Javascript のフレームワークが毎日 20 個誕生するのと同じです!) が、状況が変わるわけではありません。

      Ruby は非常に興味深い言語ですが、確立されたパターンをあまりにも破ってしまうため、PHP よりも人気が高まったとは信じがたいです。 もちろん、Ruby はプログラミングを始めるのに最悪の言語だと思います。
      Python は、無数の特徴を持つ Ruby であってもプログラミングするのは楽しい、ということはわかります...でも、Spring と Java はどうでしょうか? 本当? Java にはさまざまな機能がありますが、Python や PHP よりも楽しいでしょうか?

      Python から始めるのは素晴らしいことですが、Python だけを使い続けると、(たとえ Python が非常に得意だったとしても) プログラミングのレベルが「深くない」と多くの企業に思われるリスクがあります。 これは、C++ や Java などの他の「多目的」言語と競合するためです。 ポインターとは何なのか、ビット単位の演算、ガベージ コレクターの仕組みなどの違いを知らなくても、Python でプログラミングすることができます。
      Python はおそらく、存在する中で最も「古典的なプログラミング」に似ておらず、「子供向け言語」 (比喩を理解してください) と見なすことができ、それが利点でもあり欠点でもあります。

      1.    ホルヘFS

        「Python はおそらく、存在する「古典的なプログラミング」に最も似ておらず、「子供向けの言語」 (比喩を理解してください) と見なすことができ、それが長所でもあり短所でもあります。」 (笑)、これは私がこれまでに見た Python に関する発言の中で最も面白いものの XNUMX つです。 Python を真剣に学んだことがありますか?
        PHP 以外の世界に普及してからどれくらい経ちますか?
        友人のPHPが死産しました。 PHP(\d+) は、初期設計が非常に悪いために多くの影響を及ぼしており、ユーザー コミュニティを維持するために、初期設計のエラーを徹底的に引きずり続けています。 PHP はモジュール性を持たずに誕生し、多くの C スタイルの機能を備えています (ちなみに、どこで入手したのかわかりませんが、その構文は C に似ているため、他の言語に簡単に移植できます)。 PHP がそうあるべき高級言語には、公式サイトにリストされているこの関数の痕跡と同じくらい醜いものがあります。 http://php.net/manual/en/indexes.functions.php、これはモジュール性なしで誕生したため、すべてが汚く混在しており、名前空間がないためです。
        これは PHP コードの塊です。
        "stream_notification_callback");
        stream_context_set_params($ctx, $params);
        var_dump(stream_context_get_params($ctx));
        ?>
        ある時点で、これらすべての「ストリーム」機能がどこからインポートされたかを特定できますか? いいえ、そうするとそれらは組み込み関数であると言えますが、ではエコシステム全体が組み込み関数なのでしょうか? そのため、PHP コードにはゴミがたくさんあります。このようなひどい設計の複雑さと役に立たないことが理解できないのであれば、ご容赦ください。それでも、まだ見るべき世界はたくさんあります。
        Wordpress は優れたソフトウェア ソリューションですが、優れた技術基盤があるという意味ではありません。 石をハンマーで叩き、歯で釘を抜くこともでき、優れた大工仕事をすることができますが、もちろん、優れたハンマーを使用する他の大工よりもはるかに多くの労力がかかります。

        一方で、「Python を使って 20 時間でプログラマーになって、それに取り組む」という愚かさは見たことがありません。 Web プログラミングの仕組みやプログラミング自体の知識がなくても、PHP で Web サイトを 20 時間で作成できます。 実際、これが PHP が非常に人気がある理由です。なぜなら、この世界に参入した初心者は、PHP に急速な開発のポイントがあると考えるからです (これが、多くの PHP コードが非常に困難である理由です)。
        Python の欠点に関して、彼が正しかったのはポインタの操作だけでしたが、いずれにせよ、Python は (Java と同様に) 高級言語であり、構文レベルでこれらを利用しません。 でもビット単位の演算って、マジで? つまり、これは x << y, x >> y のことです。 https://wiki.python.org/moin/BitwiseOperators。 私はガベージ コレクターのことをあまり理解していませんでした。 https://docs.python.org/3/library/gc.html.
        PHP の欠点:
        -PHP のオブジェクト指向プログラミング (OOP) 設計は非常に貧弱です。
        - 演算子をオーバーロードすることはまだできません。
        -サプライズ、 function overloading PHP の概念は、この概念から自然に期待されるものではありません。
        ……そして、ちょっと飽きてきたんです、ふふ。
        ご挨拶。

        1.    ルベン

          「メタファーを理解する」という括弧を付けましたが(同じ作業環境での Python と C++/Java の比較のため)、あなたがそれを理解していないことは明らかです。 C/C++ プログラマーの平均給与が Python プログラマーよりも高いのは当然のことであるのと同様に、C++ プログラマーは Python プログラマーが C++ を学習するよりもはるかに早く Python を学習できると言えます。
          他の例を挙げて、図を使って説明することもできます。 しかし、あなたは私が言ったことを文脈から切り離して嘲笑することだけに焦点を当てているようです。

          私は PHP が世界で最高の言語であるとか、PHP の設計が模範的であるなどとは一度も言ったことはありません。どこからそんなことを言っているのかわかりません。 他人の知識を判断する前に、自分の読解力を向上させる必要があると思います。 真実は (メッセージで言いましたが)、フレームワーク、ライブラリ、ユーティリティのエコシステム全体に加えて、それを使用した開発は非常に機敏であるということです。
          また、どのような比較をするのでしょうか? Python は多目的言語としてですか、それとも Web 用ですか? では、なぜ PHP と比較するのでしょうか? PHP には特定の分野があり、この分野では Python (シェアは 0.2%、今年を通じて変化がありません) が PHP に次いで見劣りします。
          次に、PHP のトレンドを見ていきます。 82,4 年 2017 月の 83.1% から 2018 年 XNUMX 月の XNUMX%: https://w3techs.com/technologies/history_overview/programming_language

          Python は PHP の座を奪うものなのでしょうか? 何年に? どのような光沢で? 十年?
          Python は他の多くのタスクに使用される可能性があり、PHP よりも広く使用されるようになる可能性もありますが、Web 開発言語としての Python が意味を持つようになるまでには数光年かかり、0.2% 対 83.1% (今年は増加) で停滞しています。

          また、あなたは、私が PHP の外には目を向けていないと言って、長い間 PHP でプログラミングしていないのに、PHP しか知らないことをほのめかして、物事を当然のことと思っています (笑)。 現在は労働問題の関係で主にJavaでプログラミングをしています。
          また、Python でプログラミングするからといって、ビット単位、ガベージ コレクター、ポインターに関する知識が必要になるとも言いません。 むしろ、Python が何であるかを知らなくても、Python でプログラミングすることができます。 しかし、C++ プログラマにそれが当てはまるかどうかは非常に疑わしいです。 そして明らかに、私が比較するのは、Web プログラミングではなく、Python が「多目的言語」の分野に参入した場合です。

          20 時間でプログラマーになれるというのは単なる冗談、誇張です。 ただし、同様のことを約束するオンライン教育プラットフォームやコースに関するさまざまなリンクをここに置くことはできます。 私を責めるのではなく、「エキスパート プログラマー」になるには 20 時間のコースを受講する必要があると考えている労働市場を非難してください。 そして、Python は最も人気のある言語の XNUMX つであり、学習曲線も最も早いため、白とボトルに入っています。

          あなたのメッセージは、PHP がどれほど悪いかを述べていることに基づいていると私は主張します (これにはある程度同意します)。 私にとっては正しいように思えますが、私のメッセージはそのことに関するものではなく、なぜ PHP は今後も使用され続けるのか、そしてあなたが考えているように明日には消滅しないのかということです。

          拝啓

  5.   誰も

    C -> Go -> (Lisp|Haskell|Java|何でも)

    1.    クリスADR

      最近、読者が私の電子メールに Go 本に関するお勧めを送ってきました。確かに将来的に考慮すべき言語であり、おそらくここに投稿されるでしょう 🙂 共有してくれてありがとう

  6.   mvr1981

    さて…それで、何をプログラムすればいいでしょうか? すでに優秀で経験豊富なプログラマーがたくさんいるのに、なぜプログラミング言語を学ぶ必要があるのでしょうか? 他の人がまだ解決していない問題で、より効率的な方法で私が解決できる問題は何ですか?...簡単に言うと、今日のプログラマーであることはどれほど独創的でしょうか? 知識や経験の不足を理由に排除されたり、自己排除されたりせずに、他の人と協力するにはどうすればよいでしょうか?

    1.    クリスADR

      mvr1981 さん、こんにちは。本当に興味深い質問です 🙂 最後から最初まで順番に見ていきましょう。

      知識や経験の不足を理由に排除されたり、自己排除されたりせずに、他の人と協力するにはどうすればよいでしょうか?

      蹴られたくないなら、最初のステップはプロセスを学ぶことです。自分のやり方だけで物事を進めたい、コミュニティが自分たちの希望に適応することを望んでプロジェクトに参加する人の数は想像もできません。 それは確かに、私があなたの家に来て、散らかし、あなたの家族を軽視し始めているようなものです(それはよくあることです)。 このようなことが起こらないようにするには、投稿のガイドラインとその手段に細心の注意を払い、不完全なものを送信しないでください。助けが必要な場合はいつでも連絡する方法がありますが、仕事の完成度が低いと、おそらく悪い第一印象を与えるでしょう。 自分を排除したくないなら、それはあなた次第です。自分が何をしているのか分かっていない役に立たないプログラマーと見ることも、優秀なプログラマーへの道を進んでいるプログラマーと見ることもできますが、それは次の場合にのみ起こります。練習して、途中で間違いを犯すことは確かにあります。 私は Gentoo で開発者ステータスを取得するまでに何度も間違いを犯しましたが、「タイミングが悪かった」にもかかわらず、挑戦をやめることはできませんでした 🙂 。

      今、プログラマーであることはどれくらい独創的ですか?

      -これは独創性の問題ではありません。今日では必需品です。次のことを考えてください。20 年か 30 年前は、タイピングは必需品であり、多くの仕事でそれを知っているか、少なくともできると推測されていました。 今日、Office Automation が必要不可欠であることは認識されており、Office Automation ドキュメントに直面しない仕事は事実上ありません。 明日、もうすぐプログラミングが必須になります。 そして、これは個人的な観点からも当てはまります。お金、健康、家族と同じくらい重要なものを預けているプログラムで何が起こっているかを知ることは、私にとって論理的なことです。なぜなら、その限界を知ることができるのは、それがどのように行われるかを知っているからです。仕事をするためには、プログラミングの方法を知る必要があります。

      他の人がまだ解決していない問題のうち、より効率的な方法で解決できる問題は何ですか?

      あなたはその金額に驚くでしょう 機能を使用 実を言うと、コミュニティに世界最高のプログラマがいるかどうかは問題ではありません。作業は常に開発者の作業能力を超えています。これは Gentoo で確認できます。カーネルを開発している人、Google や Sony で働いている人など…私たち全員に共通する唯一のことは、保留中の作業をすべてやりたいほど多くの時間を持っている人はいないということです。

      すでに優秀で経験豊富なプログラマーがたくさんいるのに、なぜプログラミング言語を学ぶ必要があるのでしょうか?

      -これは XNUMX 番目の質問で答えられています 😉 しかし、ここで、すでに開発された作品を世代がサポートできなければならないと付け加えておきます。これは、これらの「経験豊富な」開発者が徐々に姿を消し、 「最年少」 » 開発者は責任を負い、サイクルを維持するのに役立ちます。若くて経験の浅い人々がいないコミュニティは、まさに知識を伝達する機会がないため、時間の経過とともに消滅する傾向があります。

      そして何のプログラムですか?

      -これはおそらく答えるのが最も難しいですが、例を挙げてみましょう 🙂 最近、GNOME 24 とその Wayland への接続で、Shutter などのプログラムがスクリーンショットを撮るのを妨げる問題が発生し始めました。 これは私にとって問題です。なぜなら、記事を書くときに自分が何を言っているかを示す必要があるからです 🙂 少し検索したところ、控えめに言っても「ミニマリスト」な GNOME Screenshot アプリを見つけました。 その機能の中に、画面の領域を撮影する機能がありますが、写真がうまく撮れなかった場合はどうなりますか? そうですね、プログラムを終了して再入力する必要がありますが、確かに面倒です。「再取得」などのボタンがあれば、終了して再入力することなく新しいキャプチャを取得できるので非常に役立ちます。 ... これは小さなプログラミング プロジェクトです。私は GNOME フレームワークで何もプログラムしたことがないので、新しいボタンを付けた「パッチ」を送信する前に学ぶべきことがたくさんありますが、途中でプログラミングを学び、できればと思っています。これは 簡潔な 全員が利用できるようになれば、複数の人にとって役立つでしょう。

      これは一例であり、単純なものであり、他の「専門家」プログラマーならすでにそれを実行できたかもしれませんが、明らかな時間が不足しているため、そのようにはなりませんでした。今、実際にスーパープログラマーでなくても、それを実行できる可能性があるのは私です。

      頻繁に使用するソフトウェアで自分の生活を「シンプル」にするものを見つけるのはあなた次第です。その素晴らしい点は、次の記事で私が提供するアドバイスに従えば、言語は関係ありません。なぜなら、彼らは読んだコードを理解し始め、それを変更して希望どおりに実行できるようになるための基本を知っているからです。それは非常に特別な感覚です 🙂

      ご挨拶とありがとう

      1.    誰も

        gnome キャプチャ プログラムは一度しか開いたことがないように思います。最も簡単な方法は、キーボード ショートカットに移動し、すべてのウィンドウをキャプチャするために print、アクティブなウィンドウをキャプチャするために alt-print、および選択を行うために super print の XNUMX つの組み合わせを割り当てることです。キャプチャ領域に、利用可能なショートカットが追加されるので、それらを割り当てるだけです。

        1.    クリスADR

          それが、これを例と呼ぶ理由です 🙂 なぜなら、そのボタンのような小さなものはプログラミングであり、他の人には気付かれない可能性があるため、一部の人には役立ちますが、プログラミングを学習し、新しい機能に道を譲るという主な目的は確実に満たしています。このボタンを押すと、セッション管理や、撮影したすべての写真のプレビュー画面など、さまざまなことが開始できます。つまり、できることはたくさんあります。 アイデアは、あなたが興味をそそられる何かを見つけるということです。システム上で実行されるソフトウェアには、時間や人員の不足のためにまだ実装されていない改善や新機能が必要になる可能性があります 🙂

      2.    mvr1981

        おかげさまで。 とても良い答えです。

    2.    ビル

      そうですね、その分野のプロフェッショナルになろうとしない人にとっては、管理タスクと管理タスクの両方で、どのような環境で働いているかを確認する必要があります。たとえば、Python/Basic やそのノウハウなどを知るのは興味深いかもしれません。 LibreOffice や MS Office などのオフィス スイートでマクロをプログラムします。 これにより、あなたや周囲の他の従業員の何時間もの作業が節約され、反復的なタスクの実行を依頼できる場合があります。ダッシュボードを作成して、データベースに接続した後、会社の主な比率をすばやく計算し、実行することができます。いくつかの SQL クエリ。
      すべてのことと同様、自由に使えるツールを知っていれば、それを最大限に活用する方法を考えることができます。 すべてが発明されたわけではありません。

  7.   マルセロ

    ギレルモ、「すべてが発明されたわけではない」、そして発明されたものは変更可能だ、という意見に完全に同意します。 ツールを最大限に活用し、ニーズに最も適したものを使用する必要があります。

  8.   リカルド

    プログラミングにとって、最初に学ばなければならない言語は英語であり、次に彼らが最も興奮し、最も美しく見える言語です。

    1.    クリスADR

      私はそれを書いていませんでしたが、それは本当です 🙂 ほとんどの言語は同じ言語で書かれているため、英語を知っていることは非常に役立ちますが、ほとんどの直接の情報も含まれるため 🙂 共有してくれてありがとう

  9.   ルーベン・サルガド

    素晴らしい記事であり、モチベーションも上がります。

    1.    クリスADR

      とても親切でした、ありがとうございました 🙂 よろしくお願いします

  10.   ゴンサロ・マルティネス

    プログラミングとは、推論し、その推論を命令に変換する方法を知ることです。

    この記事に関する XNUMX つの説明:

    1) プログラミング教師としての約 10 年間の経験に基づくと、学習する言語は重要ではなく、学習方法とその複雑さが重要です。

    Java のような言語を最初から始めるよりも、体系的に学習してから他のより複雑な言語に進むことができる言語の方が簡単だと思います。

    C または Pascal の Hello World のようなものをベースとして学習する方が、数行 (Pascal の場合は PROGRAM、または #include) で学習するよりも簡単です。 C) の場合は、アルゴリズムの開発を開始し、そのロジックを使用してプログラムを直接コーディングできます。Java では、それ自体にクラス、メソッド、その他のものが必要ですが、初心者にとっては不必要な情報が多すぎます。それを無視して他のことに移ることもできますが、それらはそこに存在する概念であり、特に言語によってそれらの使用を強制される場合、物事を無視することは良い学習方法ではないと思います。 それは、初めて M-16 を使って射撃練習を始め、ピストルのように両手でハンドルを握り、半自動モードで何ヶ月も射撃を続けるようなものです。

    2) 言語が解釈されるかコンパイルされるかは、言語自体ではなく、その実装に依存します。 たとえば、wsgi (Apache の mod_wsgi、Nginx の uwsgi) を使用する Web アプリで Python が使用されている場合、対応するモジュールの開始時に Python コードがコンパイルされ、.pyc ファイルが生成されます。

    Java 用のバイナリ ファイル ジェネレータ (バイトコードの代わりにネイティブ バイナリを生成する) や、PHP スクリプトを純粋なバイナリに変換するコンパイラもあります。

    PHP について彼らが言うことに関しては、それは単に別の時代に、他のことを考慮して、当時存在しなかった側面を考慮せずに設計された言語です。 それが最もよく使われているからといって、それが世の中の何かにとってより良いものになるわけではないことは明らかですが、現実はあります。それは、すべてのプログラミング分野で仕事を得る可能性が最も高い言語であるということです。 どんなに嫌いでも、知っていて損はありません。

    数年間システム管理者として働き、開発者としての仕事を辞めた私でも、時々、何かに PHP コードを組み込む必要があります。

    1.    クリスADR

      こんにちはゴンサロ、共有してくれてありがとう。

      確かに、不必要な情報のオーバーロードについて言えば、同じ言語が解釈またはコンパイルできることを知ることは、この段階では必要ありません 🙂 確かに実装は重要ですが、このレベルでそれを言うと、混乱が生じるだけです。 同様に、オブジェクト指向プログラミングの問題や、人々をめまいさせないように徐々に適用する必要があるその他の概念については取り上げられていません。

      スペースが減ったので、この投稿の主な目的は、プログラミングをしたい読者に、言語には XNUMX つの素晴らしい世界があり、「伝統的に」解釈された言語はより「単純」で、「伝統的に」コンパイルされた言語は少し「複雑」であるが、よりしっかりとした理解を得るにはそのレベルの複雑さには価値があり、プログラミングのアプローチに応じて、好きなプロジェクトを選択できると同時に、何を理解できるようになるので、言語を選択するのは各人次第であることを示すことです。彼らは読んだり書いたりします 🙂

      改めまして、ご挨拶申し上げます。

      1.    ゴンサロ・マルティネス

        それは、これはエラーであり、コンパイル言語やインタプリタ言語は存在せず、言語ごとに異なるケースに応じてインタプリタとコンパイラが存在するということです。

        今それを言及するのは情報過多ではなく、むしろそのような主張をするのは間違いです。 私の意見では、情報を詰め込みたくないのであれば、通訳を省略した方がより生産的であったと思います。

        1.    クリスADR

          説明していただきありがとうございます。本題に戻るときに考慮します。 ご挨拶

  11.   アレス

    php が人気がなくなったことを考慮して、サーバー側にはどの言語をお勧めしますか?
    データベースについても同様で、mySQL よりも優れた最新のものが存在するかどうかはわかりません。

    1.    クリスADR

      PHP は人気が衰えたわけではありません...どの言語にもライフサイクルがあり、php は確かにすでに「成熟した」レベルに入っている言語であり、安定性が何よりも重要であるエンタープライズ レベルで役に立ちます...一部の銀行では、Java が依然として Java で開発されているように、Java は PHP よりも「成熟」しており、確実に支持者と批判者がいます...そして COBOL は言うまでもありません...

      統一性と最新性を求めているのであれば、JavaScript は自称「フルスタック開発者」のお気に入りの XNUMX つになりつつありますが、Ruby パラダイムや Python の「シンプルさ」も良い参考になります... ニーズに応じて Perl もオプションになる可能性があります:)

      最近では、リレーショナル データの処理に関して ORM (オブジェクト リレーショナル マッパー) が大幅に強化されています。 SQL 構文からクラスと属性の処理まで、ほぼすべての言語 (すべてではないにしても) が何らかの ORM を処理します。

      。 Mongo DB はリレーショナル データベースの代替手段として非常に重要になっていますが、その長所と短所を理解し、特定のニーズに応じて最適なソリューションであるかどうかを検証する必要があります。

      お役に立てば幸いです、よろしく 🙂

      1.    アレス

        ありがとう、確認してみます。

      2.    アレス

        忘れてた。

        Linux で JAVA を使用するには何を推奨しますか?
        無料とクローズドをより適切に区別できれば。

        1.    クリスADR

          Eclipse と NetBeans はオープン ソースです。純粋なフリー ソフトウェアがあるかどうかはわかりません。コードの量によって IDE 全体を使用すると遅くなり、ランタイム エラーが発生しやすくなることがあるため、私は vim の使用に慣れています。 よろしく 🙂

        2.    ポールゼタ

          Linux で Java を使用するには、IntelliJ を使用することをお勧めします。

          1.    クリスADR

            PS、IntelliJ は独自のソフトウェアです 🙂

  12.   je

    みなさんも覚えておいてください…私は銀行で働いていますが、プログラミング言語は後回しになって、SQL とストアド プロシージャが先に渡されるようにしていると話しています。

    1.    ゴンサロ・マルティネス

      ストアド プロシージャを考慮する必要がありますが、少なくとも私の経験では、エンジン間で移植可能な言語を使用しないことにより、他に選択肢がない限り、ストアド プロシージャを避けることが常に問題になります。