ホームページ  >  記事  >  バックエンド開発  >  誰もがプログラミングを学ぶべきだと言われていますが、どの言語を学ぶのが良いのでしょうか?

誰もがプログラミングを学ぶべきだと言われていますが、どの言語を学ぶのが良いのでしょうか?

WBOY
WBOYオリジナル
2016-10-09 08:33:141305ブラウズ

私はもうすぐ30歳ですが、現在の仕事は公的機関の会計士なので、日常生活でプログラミングは必要ありません。
でも、高校時代にゲームに飽きて、HTMLとphpの作り方を少し勉強して、収入を得ました。私の純粋な興味は、おそらくセミプロの仕事に変わりました。 4、5 年経つと、以前は主に CMS と SEO に頼っていましたが、PHP は入門レベルではなかったので、ノートブックを構築することができました。
今、社会の発展が早すぎて、私はまだ少し興味を持っていますが、仕事の空き時間を使って言語をしっかり学びたいと思っています。一方で、それは私の興味を満たしますし、さらに重要なことに、それは準備にもなります。将来的に役立つかもしれません。どの言語を学べばよいかわかりません。

返信内容:

公的機関の会計士…
公的機関の会計士が昔(2000年頃)に何を学んだかご存知ですか?
Visual FoxPro
以前は、多くの場合、必要に応じて自動処理スクリプトを作成する必要がありましたが、Visual FoxPro は非常に優れており、直感的でした。タイムリーなフィードバックが得られ、作業効率が向上しました(当時のxlsが簡単にインポートできました)。

以下の個人的な見解:
潜在的な仕事のニーズ: Excel の VBA (反復作業を大幅に軽減するツール)、Visual FoxPro (優先順位が低い、結局のところ、古すぎるが、存在するかどうかを言うのは難しい)これを必要とする古いデータに対処するため)
自分の興味や趣味の場合: Python を学んでクローラーを作成したり、Raspberry Pi をいじってスマート コントローラーを作成したり、携帯電話で簡単に実行できる小さなプログラムを作成したりすることは何でも可能です。自分自身で、記録するためにブログをいじってみてください。待て、待て、重要なのは、あなたが興味を持っていて、学ぶ意欲があるということです。 誰もがプログラミングを学ぶべきだと言われていますが、どの言語を学ぶのが良いのでしょうか? 会計士の皆さん、Excel の VBA をスムーズに使用すると、日常業務が大幅にスピードアップすると感じます。操作を 3 回以上繰り返してコードを記述し、コードを記述することでどれだけの作業が完了できるかを確認してください。 Python や golang を学びましょう。 ウェブサイトのフロントエンドを構築するときは、html、css、javascript の 3 つの古いものに固執しましょう。
次に python を学びます。なぜ最初に Python を学ぶのでしょうか? そのモジュールは完成度が高く、「すぐに結果が得られる」からです。

それでも「最下層」を探索したい場合は、C に進みます。 C++ に騙されないでください。楽しみのために C++ を学ぶのは問題ありませんが、それは大きな罠です。

C の「モジュール」や「基礎」も非常に成熟しています...しかし、一般的に、C を学習しても「結果はすぐには出ません」。なぜなら、C の「基礎」はオペレーティング システムのカーネルだからです。 C の「API」は基本的にシステム コール (つまり、「Unix 環境での高度なプログラミング」) です。この時点で、C コンパイラによって吐き出されたアセンブリが何であるかを理解できる必要があります。次に、オペレーティング システムのカーネル、コンパイラ、バイナリ ツールなどに問い合わせて、これらの「低レベル」のものがどのように機能するかを理解します (「プログラマの自己修養」、「コンピュータ システムの深い理解」、「Linux デバイス」を参照)ドライバー") "、"Linux カーネルの設計と実装"、"Linux カーネルの深い理解"、"Linux カーネル アーキテクチャの詳細"...)。このように、C の罠は実際には非常に大きいです (C++ にそれを奪わせないでください。それが意味するところです。C の哲学は、基本的にすべてが乾いたものです。噛むことができる限り... C++、これです)そうではないかもしれません。時間を費やすよりも、C++ での派手なトリックをすべて無駄にするよりも、無味乾燥なものを食べたほうが良いでしょう)... なぜなら、カーネルのソース コードを読む場合は、Makefile、シェル スクリプトなどを理解する必要があるからです。リンカー スクリプト、ASM、そしてもちろんハードウェア アーキテクチャなどについても少しは知っていますが、いずれにしても、カーネルの作成に関する書籍で言及されているので、関連する知識ポイントを自分で確認できます。それは時間の問題です。

また、もちろん、データ構造とアルゴリズムの基礎をここで確立する必要があります。データ構造は、バイナリ ツリー、赤黒ツリーを検索し、グラフを構築するために少なくとも作成できます。アルゴリズム、基本的な並べ替え、マージ 並べ替え、クイック 並べ替え、順列と組み合わせを生成するには、DFS と BFS のこれらの基本的な検索を理解する必要があります。

C すぐには効果がありません。一般的に、しばらくは Web クローラーについては絶対に書きません。しかし...もしかしたらそれだけの価値があるかもしれません。

Cの再帰をクリアします。関数スタック フレームを作成および破棄する方法、それをアセンブリ コードに変換する方法、再帰をスタック構造 + ループ不変式に変換する方法。次に、任意のループは再帰によって表現できるが、再帰はスタック構造のないループでは表現できないという結論を導き出すことができます。つまり、再帰は (スタック構造のない) ループよりも強力な計算能力を備えています。再帰関数の計算能力はチューリング マシンの計算能力と同等です。さて、私たちはここにいます - 伝統的に言えば、私たちはコンピューターサイエンス/アートの扉に入りました。

始めたら気軽に遊べます。

最初にインタプリタを作成して遊んでみることができます。このためには、オートマトンの基本的な理論的知識 (「オートマトンの理論、言語、および計算入門」) を準備し、次に読むためのコンピレーション本 (「コンパイルの原理」) を見つける必要があります。1 冊では不十分な場合は、追加してください。もう少し (「コンパイルの原則」、「原則と実践」、「コンパイラのアーキテクチャ」) を参照すると、おそらく完全に説明されます。 「Homemade Programming Language」など、インタプリタの書き方を学べる別の本を探してください。次にコピーします。コピー後、コンパイル原則を読んで再度コピーしてください。このようなもの。
これは、趣味が悪くても、実装が不十分であっても、十分に複雑なコンピューター言語を自分で作成できることを意味します。

それからカジュアルにプレイしてください。

たとえば、Lisp システムを使用している場合は、最初にスキームを試してみることをお勧めします。
Prolog、Haskell、Ruby、io、Erlang、... 時間があるときに遊んでください。
とにかく、現時点ではどの言語を学ぶにも、一般的にはそれほど時間はかかりません。ただ始めたいだけであれば、現時点では言語を学ぶ必要はありません。一時的に学習してスタイルを真似すれば、基本的にはまともに書けるようになります。つまり、これが本当の遊びなのです。
とにかく、言語は自分で書くことができます。この時は「味覚」を養うことです。

それでは、たとえばカーネルについてはあまり熟練していないとしても、コンパイル理論でコードの特定の部分を探せば、そのコードがどこにあるのかを見つけることができます。実際には、より一般的またはより洗練されたものを書くことができます。特定のデータ構造とアルゴリズムの実装は、それをどのように書くかを考え、他の人が書いたものと比較するのが非常に興味深いです。

そうですね、実際には、どれだけ楽しく遊んでも、それだけでは十分ではありません。このレベルでは、非常に低いとは言えませんが、おそらくそれほど高くはありません。まだまだ未知のことがたくさんあります。しかし、人生の喜びはそこにあるのかもしれない。 パイソンをお勧めします

php、java、python、javascriptなどの言語を学ぶことはお勧めできません。専門的なソフトウェアとして仕事を見つけたい場合、これらの言語が良くないというわけではありません。エンジニアであれば、これらの言語を学ぶしかありません。多くの企業があり、仕事は簡単に見つかります。


ただし、質問者は会計士であり、私は主に仕事への興味と実際的な助けのためにプログラミングを学んだので、Windowsを学ぶことをお勧めします システムの下にある .net テクノロジー システムと、.net プラットフォームの下にある優先言語 c#


.net プラットフォームと c# を学ぶ理由


質問者は、プログラミングを学ぶ理由の 1 つは興味のためだと言いました。 興味があるので、就職を考える必要はありません。最もクールで強力な言語を学ぶのが最適です。ソフトウェア開発業界には非常に多くのプログラミング言語があります。最もクールな構文、最も便利で最も強力な機能を備えた言語を見つけたいなら、それは C# です。


もちろん、現在の関数型プログラミング言語の一部は構文の点で C# を打ち負かすことができますが、それらは実際にはプロ以外のプレイヤーが遊ぶのには適していないと思います。関数型プログラミング言語を学ぶことは、学ぶことよりも難しいことです。通常のプログラミング言語は非常に大きいので、単純なものを完璧にするためにこのエネルギーを使う方が良いのです。結局のところ、プログラマーではない人の主な仕事はプログラミングではありません。ただし、関数型プログラミングに興味がある場合は、.net プラットフォームの f# も良い選択です。


2 番目のポイントは、役立つ必要があるということです。対象者はもう30歳で、長年経理の仕事に就いていますが、転職してプログラマーになるのは不可能だと思います。 つまり、IT 業界で最も人気のある言語を学ぶ必要はありません。 実践的な学習を選択することです。C# が第一の選択肢であることは間違いありません。 Microsoft テクノロジーを使用したソフトウェア開発の特徴の 1 つは、異なるプラットフォームであってもプログラミングの概念が同じであることです。つまり、C# を使用して Web サイトを開発できるようになれば、C# を使用した Windows クライアントの開発にスムーズに移行できます。ターミナル アプリケーション、Windows10 uwp アプリケーション (Windows を含む) さらに驚くべきことに、Microsoft の .net に加えて、C# を使用して Android および iOS アプリケーションを開発することもできます。と C#、誰がそれを行うことができますか? .net と C# を学んでいれば、将来どんなソフトウェアでも開発できますし、仕事ができるふりをすることもできます。


Python と Java が .net よりも多くのライブラリを持っている可能性があることは否定できませんが、.net がデフォルトで提供するライブラリのほとんどは、想像できるあらゆる関数を開発するのに十分です。何年もの間、ライブラリが不足するという問題に遭遇したことはありません。 さらに、Python と Java ライブラリの最大の問題はバージョンの問題です。Python と Java を使用する過程で最もよく遭遇する問題は、オンラインでダウンロードしたライブラリのバージョンがローカルにインストールされている動作環境と一致しないことであり、その結果、さまざまな問題が発生します。不可解な数秒のエラー、これらの問題は .net では発生しません。また、.net のドキュメントも非常に充実しており、どんなに些細なことでもすべて msdn に記録されています。


もう 1 つの問題は開発環境です。他の言語でプログラムを開発する場合、実行環境、IDE、サーバー、さまざまな設定など、たくさんのものをインストールする必要があります。これはプロのプログラマーにとっては重要ではありません。質問は初心者ではありませんが、それでもこれらのことを行うには多大なエネルギーが必要です。ただし、.net インストール環境は非常に使いやすく、インストール パッケージを 1 つ実行してマウスをクリックするだけで、必要なものがすべて揃って使用できます。 さらに、他の言語を学習する場合、Linux の使用方法を学習する必要があることがよくありますが、専門家ではない人にとってはさらにプレッシャーになります。.net と C# の使用方法を学べば、この点に関して心配する必要はありません。 Windows PCと何ら変わりません。

最後に、コードを書くには経験も必要であり、コードを入力するのにも精力が必要です。したがって、どの IDE を使用するかが非常に重要です。市場の IDE について議論するとしたら、世界でナンバー 1 は Microsoft の Visual Studio でしょう。コーディングとデバッグを使用するのは他の IDE の追随を許さないほど楽しいです。


それでは、ためらわずに .net と C# の学習を始めてください

私は議論するためにここにいるわけではありません...英語を勉強することをお勧めします... 私は今 Python コードを書いています。実際、どの言語を使用するかはあなた次第です。
PHP の知識がある場合は、PHP を続けることがより適切です。 最下位レベルが好きなら、C とアセンブリを学習してください。マイクロコントローラーの開発版、回路設計の本を数冊、コンポーネント、はんだごて、オシロスコープを購入すれば、いくつかのガジェットを作ることができます。 (安全性に注意)

SchemeやHaskellなど、より高度な関数型プログラミングを学びましょう。しっかり学べば、機能愛好家たちのハイエンドの輪に加わることができます。

js と py を学ぶ方がより実践的です。 Web サイトを構築するには、クローラーを作成するだけで十分です。

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