回答:
私たちはみなプログラミング言語のほんの一部を学んでいます。言語の実装者は、言語の知識が10人中10人であると考えるだけです。
複数の言語とパラダイムを学ぶことが、好きなものと嫌いなものの「味」を開発する唯一の方法です。1つの言語しか学んでいない場合は、その言語が好きかどうかさえ本当に判断することさえできません。
あなたは実際にそれを正しい方法でやっています。さまざまな構文、ライブラリ、およびフレームワークに触れながら、それぞれで学ぶ最も重要な基礎を再利用できます。
あなたがまだ大学にいる場合、あなたが知っている言語のいずれかですべてをカバーしていると感じていないことはまだ重要ではないはずです。これらの言語の背後にある一般的な基本理論を理解することは、はるかに重要です。基本を理解したら、必要なときに他の言語の詳細を学ぶことができます。
プログラミングで最も重要なのは、さまざまなパラダイムを理解することだと思います 。
あなたの質問で、オブジェクト指向プログラミング(OOP)について言及しました。このトピックをマスターした場合は、擬似コードと基本的にグラフィカルなモデリング表現(UMLクラス図など)のみを使用して説明できるはずです。
Java、C ++、またはC#(...)の使用を決定するかどうかは、あなた次第か、あなたが働く会社次第ですが、本当に重要なのは、さまざまな問題を理解/認識し、それらを解決する最適なモデルを決定することです。プログラミングの問題を解決するための非常に重要な方法は、このリファレンスブックで発見できるデザインパターンを使用することです。
埋め込み言語に関しては、重要なことはそのような技術に関連するさまざまな問題を理解することだと思います。
比meta的な方法で、私はこれを優れた科学本を書くことと比較します。重要なのは、あなたが暴露する理論、解決できる問題などです。本を英語で書くか、フランス語で書くか、日本語で書くかは、最終的にはそれほど重要ではありません。
ただし、特定の言語を非常に効率的に活用するために、その技術に特化したい場合は、特定の言語の詳細を知ることも重要です。
AMOS Basic、Java、C ++、PHP、VB6、Delphiなど、私のキャリアの中で多くの言語を使用しました。今日は仕事でC#、JavaScript、Ruby、Clojureを使用し、Pyhton、Erlang、 Common Lispおよびスキーム。
しかし、この秋、私のブログ用に特別なクリスマスカレンダーを作成したかったため、24の追加言語で特定の問題に精通し、解決することにしました。これは素晴らしい経験であり、多くのことを学びました。プログラミングの経験があれば、これを行うことを強くお勧めします。
あなたへの私の答えはこれです:いくつかの言語を本当によく学んでください(それらはかなり異なっているはずです)が、多くの言語をサンプリングして慣れることを確認してください。
今日では、OOPとFP(関数型プログラミング)の両方をよく理解することが重要です。また、非常に静的な言語と非常に動的な言語の両方に慣れている必要があります。
PS:私のブログはノルウェー語ですが、ここで取り上げた言語のリストをご覧になりたい場合は、こちらをご覧ください。
複数のプログラミング言語を学ぶことは良い習慣であり、今日では必要です。多くの場合、常にすべての言語に選択した言語を使用できるとは限りません。
他の言語がどのように処理するかを見る利点は、プログラマーとして役立ちます。たまに飛び回っているときに、構文上の間違いを犯すことがあります(例:不等式のチェック!=
、~=
または<>
)。ただし、言語の構文だけでなく、言語内のベストプラクティスだけでなく、一般的な優れたソフトウェアエンジニアリングスキルを学ぶように注意する必要があります。Cを学習してからC ++を学習した場合、C ++コードを記述するときは、C ++コードのスタイルであることを確認する必要があります(いくつかの新しいキーワードを持つCだけではなく、複数のクラス/オブジェクトがあるため、参照を優先します) / smartポインターなどの生のポインターなど。
絶対にありません。もちろん、さまざまなスタイルの言語を学習していることを確認する必要もあります。C#とJavaの両方を学習しても、大きな意味で心が広がることはありませんが、JavaとHaskellを学習することはできます。
7週間の Book Seven Languagesをご覧ください。Ruby、IO、Scala、Erlang、Prolog、Clojure、Haskellの紹介をご覧いただけます。言語が好きなら、あなたはその本が好きになるでしょう。
CとC ++は、モバイルプログラミングに害を及ぼすことはありません。Cocoa TouchまたはAndroid NDKの両方で使用できますが、パフォーマンスのために必要な場合があります。また、複数のプラットフォームで実行されるコードを作成するために、必要な場合があります。その場合、サードパーティのフレームワークを使用しているだけではないと仮定すると、C / C ++でアプリを記述し、必要なネイティブ要素用のプラットフォーム固有のラッパーでコンパイルできます(たとえば、OpenGLコンテキストを取得する唯一の方法iPhoneでは、ネイティブCAEAGLLayerクラスを使用しています)。
だから、引き出しにあるツールが増えれば増えるほど、仕事を終わらせるための選択肢が増えるようになります。さまざまな種類のタスクを専門とするため、特定のタスクを優先することがあります。UIのみを行う場合、Cがこれまでのお気に入りではないかもしれません。やりたいことをもっと心配し、それをするために必要なツールを学びます。
それどころか、新しいプログラミング言語を学ぶことができない/できないと痛いものになると思います。時間の不足やその他の理由が原因である可能性があります。私の知る限り、プログラマー/ソフトウェア開発者は言語に挑戦し、より良いもの/製品を置きたいと思っており、いつも同じことをしているのを見ると気分が悪くなります。そのため、新しいチャレンジ、新しい言語、それによって新しい製品を学び、より多くの新しいものを求めています。
だから、新しい言語、新しいライブラリ、新しいアプローチ、新しいテクノロジーを追いかけることは私に興奮を与えてくれると思います。しかし、私はそれらすべてを手に入れる時間がないので、人々はいつも十分に深く行くことができないかもしれません。それで、それ以上学ぶことは痛い。しかし、より多くを学ぶために害はありません。
私はブライアン、FrustratedWithFormsDesign、SRKXに同意しますが、大学では複数のプログラミング言語とパラダイムで知識を広げることが、優れた専門家になるための望ましい方法であることを付け加えたいと思います。
あなたが形成されたプログラマーとして大学を卒業することは本当にありそうもないことです。プログラミングは難しい技術であり、優れたプログラマーと一緒に働き、優れたトレーニングプログラムやコミュニティミーティングに参加する業界での年数が必要になります。ほとんどの場合、習得する方法を学ぶまで、技術的な問題に直面し、多くの失敗を強いられますそれ。
複数のパラダイム、複数の言語を学び、私たちの地域の複数の問題を解決することで、業界の専門家として行動しながら、毎日自分で技術を学ぶための優れたサポート基盤が得られます。
Compilersクラスに参加することはできますが、言語のデザイナー、クリエーター、またはコンパイラーの開発者として出ることはありません。手順、プロセス、問題、基本的な解決策が得られます。これにより、この知識を幅広い問題に適応させることができます。
短い答え:いいえ。
長い答え:プログラマー、ソフトウェアエンジニア、またはデザイナーの仕事の多くは、特定の言語から独立していますが、特定の方法論に非常に依存しています。たとえば、オブジェクト指向プログラミングは、物事がメモリとランタイムのどこに存在するか、それらがどのようにアクセス可能であるか、そして後で使用する方法(継承とカプセル化)について非常に重要です。実装は異なります。たとえば、Javaは、好きかどうかにかかわらず最上位の継承クラスObjectを持ち、C ++は指定しないものを持ちません。
多くの言語は機能を共有しています(そして多くの言語が分かれています)。もちろん構文は異なりますが、命令型と関数型のようなまったく異なるパラダイムを比較するのは難しいです。しかし、文字列処理はどこに行っても同じです。構文、インデックス、および可変性の問題がわからなくなると、どこに行っても同じです。通常、静的型付けを使用する言語には、キャストと強制の何らかの方法がありますが、その方法と時期は言語設計者次第です。
言語はツールです。より多くのツールをベルトに入れているだけです。しかし、ツールはそれを振るう職人と同じくらい良いです。
さて、あなたが何人を学ぶかは個人的な選択です。新しい言語を学ぶために言語を学ぶことはありません。新しい言語を学ぶための選択は、コース要件(昨年、単一クラスのjs、php、Rを取得する必要がありました)、既存のプロジェクト要件(作業の90%がperl 6で行われる場合)あなたは雇われるので、残りの10%は後)またはアプリケーション固有の利益です(Rは、Javaが統計分析のためにいくつかの甘いライブラリと組み合わされたと言います)。
とは言うものの、あなたはそこにあり、利用可能なものを学びたいのです。私の大学は、このテーマ、プログラミング言語の概念に関するコースを教えました。厳密な数学やコーディング関連のコースではなく、理論的なコンピュータサイエンスではなく実用的と思われるものの基本をカバーする、広範な概要コースでした。それは素晴らしいコースであり、3〜4年目ではなく1〜2年目に提供されたものであったらいいのですが。テキストはプログラミング言語の概念でした。外に出てこの本を読む必要があるとは言わないが、それは確かに視野を広げるだろう。
まあ、私が見る方法は、あなたが言語のすべてのビットを学ぶ必要がないことです。しかし、他の言語でも必要となる非常に基本的な機能を学習してみてください。
たとえば、OOPSの概念は、Java、PHPなどのすべての言語で必要です。
メモリ割り当ての概念は、多くのプログラミング言語で非常に似ています。これらの種類のトピックをお見逃しなく。
どの言語にも文法と規則があり、プログラミング言語にも同じことが当てはまります。デニス・リッチー自身もその事実を受け入れました。そのため、その言語の文法を学ぶ必要があります。
しかし、私が見る方法は、2つのプログラミング言語間の非共通要因を学ぶ必要があるということです。それらは、どの言語が何を表しているのかを特定させます。
C ++はすべて基本的なOOP(Object Oriented Programming)であるため、OOPの概念を学習すると、PHPとJavaでも見られる文法を学習できます。
私の学習の流れだった:
Visual Basicの5(部分) - > HTML 2.0(部分) - > C(部分) - > CPP(部分) - > Javaの(部分)
、その後、私が学んだC言語が再び続くC ++は続いJAVA(今回完了します)その後、JavaとXMLに精通していたのでアンドロイドに移動しました(部分)そして平均時間でそれを学びました。最初の試みではあまり教えられませんでしたが、2回目の試みでは、次回に役立つすべてを学ぶようにしてください。