C#、C ++、Java、Pythonのどちらが良いですか?

まず第一に、Pythonを除外すると、動的言語だけの理由はなくなります。いわゆる利点がいくつあっても、この欠点に直面しても、それらはすべて取るに足らないように見えます。

動的言語は、1970年代と1980年代に旧式のコンピューター用に設計されました。当時のコンピューターのオペレーティングシステムは、MS-Dos、Unix、Amigaなどの1 MB未満であったため、ほとんどの動的言語は旧式の言語でした。Pythonはその中でも比較的「若い」ですが、30年前のテクノロジーでもあります。

LuaやJuliaなどの非常に少数の90後を除いて、ほとんどの動的言語はスレッドを操作できません。その時代のCPUはシングルコアであったため、オペレーティングシステムはシングルスレッドであるだけでなく、一部のシステムはシングルプロセスでさえありました。

多くの動的言語が後でコルーチンに加わりましたが、それらは1つのスレッドしか操作できず、「一時的な解決」の問題でさえ、「根本原因の解決」は言うまでもなく、完全には解決されていません。多くの初心者は、これは「速い」と「遅い」の問題であり、ハードウェアのパフォーマンスが向上するにつれて徐々に改善されると考えていますが、逆に、ハードウェアのパフォーマンスが向上すればするほど、動的言語から切り離されます。これらの動的言語は効果的に再生できるCPUパフォーマンスのため、常にシングルスレッドの時代にとどまります。

当時の主な記憶媒体はフロッピーディスクで、これは最大容量がわずか1.44MBの小さな正方形のプラスチックカードでした。フロッピーディスクにインストールできるようにするために、すべての動的言語ステートメントは非常に短いものでした。今日のPythonサークルの言葉を借りれば、当時のほとんどすべてのプログラミング言語は非常に「エレガント」でした。

その後、ハードディスクの容量が大きくなり、ウィンドウが生まれ、コンピュータがグラフィックスの時代に入りました。プログラムはどんどん大きくなり、プログラムは数KBから数百MB、さらにはGBにまで成長しました。

それ以来、kbレベルのプロジェクトを作成する目的で設計された動的言語は、ソフトウェア作成タスクにとってますます困難になり、バックワードテクノロジーと見なされています。JSを除いて、ほとんどすべての主要なタスクは静的言語に置き換えられています。動的言語の一部が静的言語に置き換えられました。消滅し、存続する動的言語はスクリプトの記述にのみ使用され、その後、「エンジニアリング言語」および「スクリプト言語」という用語が使用可能になります。

動的言語は非常に小さなものを書くのにのみ適しています。プロジェクトが小さいほど、書くのがクールになり、プロジェクトが大きくなり、厄介になり、維持するのが非常に困難になります。Pythonがいかに洗練されているかを証明するために、インターネット上には100行未満のコードでさまざまな「小さなプロジェクト」があります。仕事に行くと、そのような「小さなプロジェクト」は今日3か所にしか存在しないことがわかります。

1.研修機関の教育計画において

2.さまざまなチュートリアルの場合

3.ファンの洗脳発言

実際の本番環境では、表示される「小さなプロジェクト」のコード行数は10,000単位です。Pythonコードがカプセル化されている場合、メンテナンスの難しさは人間の忍耐力の限界にほぼ挑戦します。もちろん、確かにPythonで書かれた個々の「大きなプロジェクト」ですが、例外なく、それらはすべて多数のコメントによってハードフィニッシュされています。コメントの行数は、コードの行数よりはるかに多くなります。現時点では「コードとコメントを書く」ではなく「コメントとコードを書く」であり、「コードの少ない長い中国語のマニュアル」を書くようなものですが、「読んだ後」は入れません私がかつて自分で書いた「長いマニュアル」、これらの「少量のコード」は理解しにくいです。

そして、コードを記述し、それを変更する必要がないことを確認した後、もう1つの作業があります。それは、膨大なコメントのほとんどを削除することです。そうしないと、コメントが多すぎて運用コストが高くなります。書き込みに多くのエネルギーを消費するプロジェクトは、書き込んだだけで1GBを超えます。コメントを削除した後、残りは100 MBを超え、数え切れないほどです。無数。

他の3つは良い選択であり、それらはすべて静的言語です。中規模のプロジェクトを開発し、それを効果的に維持できることを望んでいる場合。静的言語を使用して開発し、狂気を避けることができます。

シャベルや掘削機と同じように、ペット用のトイレを掘ると、掘削機は習得が難しく、使いにくいようです。研究を始めるのに2年しかかかりません。多くの資格が必要で、熟練していません。 。シャベルは素晴らしく、毎分理解でき、手に取ると掘ることができます。掘削機は車を加熱していないので、シャベルで3〜5回掘ることができます。シャベルはあらゆる点で完璧で、掘削機は役に立たなかった。しかし、ダムを掘り、この工芸品に長い間頼って食べることを期待している場合は、まず中国の山東省に行ってLan Xiangを見つけ、「困難で困難な掘削機」について学ぶ必要があります。

もちろん、「不適切」と「できない」は2つの異なるものです。結局のところ、万里の長城は両手で万里の長城から持ち上げることができますが、シャベルでダムを掘り出すことができないのはなぜですか?Yugong Yishanの精神を持っている限り、ダイナミックな言語は、あなたが一生懸命遊んでコメントを追加する限り、もちろん大きなプログラムを書くこともできます。しかし、問題は、「学びやすい」という利点だけのために、長いキャリアの中で繰り返し「山を動かす」ことは価値があるのか​​ということです。

Pythonが言及されているので、もちろん、人工知能について言及する必要があります。これは、Pythonの最大の価値です。あなたが静的言語に堪能であるならば、あなたはそれを学ぶのに本当に時間がかかることができます。しかし、静的言語を習得しておらず、Pythonを学び、人工知能の開発に従事できることを期待している場合は、現実は次々とリンクしているため、本当に考えすぎです。人工知能ダムは非常にハイエンドですが、最初にダムを掘り起こす必要があります。そうしないと、畳み込みニューラルネットワークで水を節約できますか?人工知能は宇宙服のようなもので、確かにハイエンドな製品ですが、航空宇宙を開発するために考慮しなければならない優先事項は、ロケットの作り方です。宇宙船を作る方法は?宇宙飛行士を訓練する方法は?すべての条件が完了したら、宇宙服の問題を検討するのが適切です。そうしないと、カートが馬の前に置かれます。宇宙飛行士さえいない場合、誰が宇宙服を着ますか?宇宙船がなければ、宇宙飛行士はどうやって来ることができますか?ロケットがロケットなしで空に行くにはどうすればよいですか?

「なぜショベルの代わりに掘削機を使うのか」という質問が終わったので、「どの掘削機技術が強いのか」について話す時が来ました。

3つの静的言語の文法は非常に似ており、特にJavaとC#は非常に似ています。これらのいずれかを学習すると、もう一方の80%から90%を取得できます(文法部分のみ)。数日以内にある言語から別の言語に移行することは完全に可能です。したがって、3つの言語を同時に学習したい場合は、まったく難しいことではありませんが、基本的に時間の無駄なので、これはお勧めしません。

「言語を学ぶ」と「仕事ができる」との間には大きなギャップがあるからです。後戻りすることはほとんどありません。たとえば、Web開発にJavaを使い始めましたが、仕事の必要性から、「C#を使ってゲームを作る」ことを学ぶ必要があります。Javaを基盤として、C#言語を学ぶのに2、3日しかかかりませんでした。その後、1週間ほどかけてC#をWeb開発に使用する方法を学びました。しかし、C#を使用してゲーム開発に切り替えることにしたとき、私は2年間勉強し、小さなプロジェクトをほとんど作成しませんでした。

Web開発にJavaを使用し、Web開発にC#に切り替えることは、右利きの書き込みから左利きの書き込みに切り替えるようなものです。学ぶべき新しい知識はなく、ペンを握る習慣が変わるだけです。簡単ですが、時間の無駄です。書きたいのなら片手で十分だから。

その後、C#を使ってゲームを作る方法を学ぼうとしました。これは、書くことから描くことへの切り替えのようなものでした。ペンを持つ習慣は変わっていませんが、学んだ知識はまったく異なります。ですから、2年間使っても「今までわからなかった知識」を毎日学んでいたので、まったく無駄になりませんでした。

したがって、言語を選択するための鍵は言語自体ではなく、どの業界で働くかについて明確に考える必要があります。言語の変更はとても簡単です。しかし、業界を変えることはそれほど簡単ではありません。

これらの3つの静的言語の中で、Javaは最も多くのユーザーと最も多くのポジションを持っていますが、競争圧力も最大です。Javaの仕事はほとんどすべてインターネット業界に集中しているため、主にWeb開発にsshを使用しています。Androidプロジェクトもいくつかありますが、それらは非常に少なく、基本的に無視できます。良いことは、インターネット業界が最大の主流であるということです。あなたがうるさくない限り、仕事を見つけることは問題ではありません、そしてこの状況は長い間あまり変わらないはずです。悪い面は、インターネット業界に大きく依存していることです。他の業界の仕事の数はゼロに近いため、Javaを選択する限り、Webサイトの構築に専念する必要があります。インターネットの急速な成長に伴い、Javaの雪だるまはますます大きくなっています。しかし、いつの日かインターネット業界が失敗した場合、Javaは葬式の準備が整い、他の業界に移行する可能性はわずかです。これが、私がC#の学習に切り替えた理由でもあります。基本的な目的は、「プログラミング」と「Webサイト」の間の分離を実現することです。「プログラミング」にもっと多くのことをさせましょう。さもなければ、あなたが「ウェブサイトプロデューサー」ではなくプログラマーであることをどのように証明しますか?Javaの親父である「JapanCompany」がまだ生きていた頃、彼は熱心なJavaファンでした。卒業後、sshの追加、削除、チェック、変更の仕事を見つけました。7〜8年の仕事の後、Javaは後にオラクルが偽装したデータベースIT企業の法律事務所が買収された後、それは進歩することに消極的になり始めました。一日中法廷に出廷し、法廷闘争で大きな力を発揮することを除けば、私たちはインターネットの人気に追いつくことしかできません。何年もの間、インターネット以外の分野での使用を少しでも拡大することはできませんでした。Javaは私が最も長く使っている言語で、高校時代から学んでいるので、コンピュータサイエンスに応募することにしました。私は一生Javaを書くと思っていました。しかし、それを去った後、私は「なぜ早く去らなかったのか」と自問し始めました。

C#は私の新しいお気に入りです。少なくとも今のところ、私はそれが本当に好きです。最も重要な理由は、Java、PCデバイス統合、ゲーム開発、iOSおよびAndroid開発、シリアルデバイス通信、GIS、産業用制御、aoおよびerpシステム、およびWeb開発よりもはるかに多くの作業を実行できることです。効率と開発効率非常に高いです。最小の学習コストを使用し、最大の技術的利益を得たい場合は、それが最良の選択でなければなりません。クロスプラットフォームではなく、インターネットの台頭の機会を逃したため、仕事はJavaのようなインターネット業界に集中せず、あらゆる分野に分散しています。不利な点は、ポジションが散らばっていることです。実際には、Javaよりわずかに少ないポジションがたくさんありますが、すべての人生の歩みに分散された後、存在感がないようです。それは上司ではありません。すべての業界、特にインターネット業界は非常に弱く、Javaの一部がない場合もあります。C#の名前は良くありません、それは常に人々にC ++を思い出させます、それは非常に古い言語であると思います、実際、C#は00以降であり、年功序列はGo言語に似ています、それはまだの段階にあります「小さな子供」、ポジションの数はそうすることができますスケールは実際にはかなり注目に値します。ワンジンオイルは、どの業界にも頼らずに、どの業界でも活躍できるというメリットがあります。いつの日かインターネット業界が失敗すれば、さまざまな業界への転換が容易になります。さらに、ゲーム開発の主流です。Unity、Frost 3、CE5、およびその他の多くのゲームエンジンは、C#を使用してゲームを開発しています。近年、インターネットの改善は悪くありません。.NetCoreを使用すると、最終的にクロスプラットフォームになります。利点は、パフォーマンスが非常に優れており、一般的なバックエンドフレームワークの中で最速であるということです。詳細については、TechEmpowerのパフォーマンステストを参照してください。欠点は、.NetCoreのリリースが遅すぎることです。その技術的な利点にもかかわらず、市場は着実にJavaで占められているため、短期的にはJavaが唯一の主流になるはずです。しかし、それは私には関係ありません、犬と同じくらい多くの言語があります。「何でもできる」というのがC#を選んだ理由です。私は一生C#を書くかもしれないと思います。正しい?

C ++の優れている点は、非常に高速に実行され、理論的にはC#よりも多くのことを実行できることです。恥ずかしいのは、何をしてもC ++を書くだけでなく、一緒に使うには専門的な知識が必要なことです。言語レベルとアプリケーションレベルは別々に勉強する必要があります。たとえば、市場に出回っているほとんどのC ++ジョブは、さまざまなデバイスを処理する必要があります。コードを書くことができることに加えて、あなたはまた、電子回路、電磁気学、および計装を理解する必要があります。私の大学の学生は、ほとんどの学生時代にC ++を好む傾向がありました。学生は鬼に焦点を合わせ、次善の学生はopencvが得意であり、学生である学生はMFCとQTも得意です。彼らが学生であろうと学生であろうと、仕事は彼ら全員がひざまずきます。変圧器工場の設備開発職、蓄電池工場の技術研究開発部門、あるいはヘリコプターを製造する軍事企業でさえ、すべて設備の知識が必要です。Kingdeeソフトウェア会社が金融ソフトウェア開発の仕事を募集することはまれです。それは機器の知識を必要としませんが、数学的なスキルと計算を必要とします。十数人の学生が並んでいましたが、彼らは現在2人を募集し、数日後にもう1人を解雇し、最終的に1人だけを残しました。残りの学生のほとんどすべてが転職し、営業をしたり、レストランを開いたりしました。ナンセンスな話をする勇気がなくても、私はこの道を歩みませんでした。

私は個人的にお勧めします、

インターネット業界に長く入り込みたいが、途中で飛び降りる可能性がない場合は、Javaを選択してください。初期段階では、MVCモデルとデータベースの追加、削除の理解に重点が置かれています。中期的な焦点はサーバーの負荷分散とCNDオフロードの高速化であり、後の段階ではデータベースの最適化に焦点が当てられます。

より多くの可能性を生み出したい、C#を選択し、.NetCore(クロスプラットフォームバックエンド開発)とUn​​ity3D(VR、AR、ゲーム開発)に焦点を当て、Azure(クラウドコンピューティング)、WPF(デスクトップ)に焦点を当てることを選択します。業界のソフトウェア開発)、Blazor(Webフロントエンドフレームワーク)、ML.Net(人工インテリジェンスフレームワーク)、Focas(産業用ロボットプログラミング)、MasterCAM(数値制御マシン制御)、Xamarin(AndroidおよびIOSクロスプラットフォーム開発)およびその他の技術開発と詳細。

あなたがマスターであり、電気、電気機械、その他の専門知識のバックグラウンドを持ち、生きて学び、C ++を学ぶ決意を持っている場合。

Pythonの場合、最善の方法はトレーニングに参加することです。また、操作、保守、テストなどのその他のタスクを実行することもできます。プログラマーとして、一流の都市には希望がありません。田舎に行って試してみてください。運が良ければ、石炭のボスに会い、Djangoを使ってファッジし、技術監督者になることができます。Flaskに関しては、トレーニングを除いて、JavaのHttpClientまたはhttp://Asp.Netの一般的な処理プログラムと同等ですが、実際には役に立ちません。

著者の記事が好きで、c / c ++プログラミングを学びたい友人は、著者のWeChatパブリックアカウントをフォローできます:C言語プログラミング学習ベース、またはQグループ648778840を追加して、一緒にコミュニケーションできます。グループには、入手できる学習資料がたくさんあります。無料で!プログラミングの初心者には特に便利です!また、作者はQグループでビデオティーチングも行っており、興味のある方はどなたでもご参加いただけます!

おすすめ

転載: blog.csdn.net/sempre20/article/details/112991478