web-dev-qa-db-ja.com

多くのプログラミング言語のビットを学ぶことは害になりますか?

プログラミングのキャリアは、9年生のときにBASICから始めました。足し算、引き算、印刷を行う簡単なプログラムを書くことで、少しBASICを学びました。それから私は大学に行き、コンピュータ情報とシステム工学を取りました。最初の年に私はCを教えられました、そして私はそれを上手に操縦します。

次に、2年目にC++を学びました。それは私にOOPのいくつかの知識を教えてくれました。現在、PHP(HTMLと共に)を行っています。C++、BASIC、PHPをマスターしていません。現在、モバイル開発に移行する予定です。しかし、私が学んだ言語.

それは本当に重要ですか?

37
user4124

私たちは皆、プログラミング言語のビットを学んでいるだけです。私は、言語の実装者を、言語の知識が10のうちの10であると考えています。

複数の言語とパラダイムを学ぶことは、好きなものと嫌いなものの「味」を開発する唯一の方法です。 1つの言語しか習得しなかった場合、reallyでさえ、好きかどうかを判断することはできません。

あなたは実際にそれを正しい方法で行っています。さまざまな構文、ライブラリ、フレームワークに触れながら、それぞれで習得した最も重要な基礎を再利用できます。

49
brian

まだ大学に通っているなら、あなたが知っている言語のすべてですべてをカバーしたと感じていなくても問題はないはずです。一般的な基本理論を理解する背後これらの言語ははるかに重要です。基本を理解したら、必要なときに他の言語の詳細を学ぶことができます。

プログラミングで最も重要なのは、さまざまなパラダイムを理解することです。

あなたの質問では、オブジェクト指向プログラミング(OOP)について言及しました。このトピックをマスターしている場合は、疑似コードと基本的にいくつかのグラフィカルモデリング表現(UMLクラス図など)のみを使用して説明できるはずです。

Java、C++、C#(...)のどちらを使用するかは、あなた次第ですが、あなたが働く会社次第ですが、本当に重要なのは、さまざまな問題を理解/認識することですそして、それらをsolveするための最良のモデルを決定します。プログラミングの問題を解決する非常に重要な方法は、この リファレンスブック で確認できる 設計パターン を使用することです。

組み込み言語に関しては、そのようなテクノロジーに関連するさまざまな問題を理解することが重要だと私は信じています。

比喩的に言えば、これを優れた科学書を書くことと比較します。重要なのは、公開する理論、解決するために管理する問題などです。本を英語で書いても、フランス語で書いても、日本語で書いても、結局はそれほど重要ではありません。

とはいえ、特定の言語を非常に効率的に活用するためにその言語に特化したい場合は、特定の言語の詳細を知ることも重要です。

11
SRKX

私の意見では、言語を頻繁に変更しても意味がありません。実際には決してgraspそれらのいずれかです。特にC++のように、10年かけて言語を記述しているにもかかわらず、コードがCのように見える人もいます。

言語でベストプラクティスを記述できない場合は、次に進みません。IMO。つまり、カップルをカバーするには数十年ではないとしても、何年もかかることになります。

4
DeadMG

さまざまな言語を少し習得しても問題はないと思いますが、同時に少なくとも1つまたは2つの言語を学ぶ必要があります。

4
Giorgio

AMOS Basic、Java、C++、PHP、VB6、Delphiなど、キャリアの中で多くの言語を使用してきました。今日は、C#、JavaScript、RubyといくつかのClojureを使用しています。また、Pyhton、Erlang、Common LISP、Schemeを使用しています。

しかし、この秋、私は自分のブログ用に特別なx-masカレンダーを作成したいと思い、24の追加言語で特定の問題に慣れ、解決することにしました。これは素晴らしい経験でした。私は多くのことを学びました。プログラミングの経験があったら、これを行うことを強くお勧めします。

私の答えは次のとおりです。いくつかの言語を非常によく学習します(まったく異なるはずです)が、必ずサンプルを取り、多くの言語に慣れるようにしてください。

今日、OOPとFP(関数型プログラミング))の両方をよく理解することが重要です。また、非常に静的な言語と非常に動的な言語の両方に慣れている必要があります。

PS: 私のブログ はノルウェー語ですが、私がカバーした言語のリストを表示したい場合は こちらをご覧ください です。

2
Torbjørn

新しいことを学ぶ必要があるときに、特定の言語で何を学ぶ必要があるかを学びます。言語をさらに深く掘り下げる必要があることを私に告げる「トリガー」は、特定のコードのコードが醜くまたは不器用に見えるか、保守できないように見えるか、テストまたはコメントするのが難しいことです。多くの場合、これらのトリガーは、特定のプログラミングイディオム、スタイル、データ構造などに関する知識の欠如を示しています。

1
David Pointer

複数のプログラミング言語を学ぶことは良い習慣であり、今日では必要です。多くの場合、選択した言語を常にすべてに使用できるわけではありません。

他の言語がどのように機能するかを確認することの利点は、プログラマーとして役立ちます。時々ジャンプしているときに構文上の間違いを犯したとしても(たとえば、不等式をチェックしている!=~=または<>)。ただし、言語の構文だけでなく、言語内のベストプラクティスや一般的な優れたソフトウェアエンジニアリングスキルも学ぶように注意する必要があります。 Cを習得してC++を習得した場合は、C++コードを作成するときに、C++コードのスタイルであることを確認する必要があります(いくつかの新しいキーワードを含むCだけではなく、複数のクラス/オブジェクトがあり、参照を優先してください)生のポインタを介した/ smartポインタなど.

1
dr jimbob

少なくとも、異なるプログラミングパラダイムから言語を学ぶのは良いことです。手続き型、宣言型、関数型、オブジェクト指向、プロトタイプ、および動的言語-プログラミングの各クラスは、問題を整理して解決する方法について、独自の洞察を提供します。最終的に、最も生産的で満足できる1つ以上のパラダイムを発見し、それを使用します。

1
rgordon0

絶対にありません。もちろん、異なるスタイルの言語を学習していることも確認したいものです。 C#とJavaの両方を学ぶことは大きな意味であなたの心を広げませんが、JavaとHaskellはそうします。

本をチェックしてください Seven Languages in Seven Weeks 、Ruby、IO、Scala、Erlangの概要を説明します、Prolog、Clojure、Haskell。あなたが言語を楽しむならば、あなたはその本を好きになるでしょう。

1
Zachary K

まあ、私がそれを見る方法はあなたが言語のすべてのビットを学ぶ必要がないということです。しかし、他の言語でも必要になる非常に基本的な機能を学習してみてください。
たとえば、OOPSの概念はすべての言語で必要ですJava[〜#〜] php [〜#〜]、またはその他の言語。
メモリ割り当て概念は、多くのプログラミング言語で非常に似ています。あなたが見逃してはならないこれらの種類のトピック。
どの言語にも文法とルールがあり、プログラミング言語にも同じことが当てはまります。デニス・リッチー自身もその事実を受け入れた。したがって、その言語の文法を学ぶ必要があります。
しかし、私が見る方法では、2つのプログラミング言語の間の非一般的な要素を学ぶ必要があります。それらはあなたにどの言語が何を意味するのかを識別させるでしょう。 C++はすべて基本的なOOP(オブジェクト指向プログラミング)なので、いったん[〜#〜] oop [〜#〜]の概念を学ぶと、文法を学ぶことになりますPHPおよびJavaも参照してください。
私の学習フローは:
Visual Basic 5(部分)-> HTML 2.0(部分)-> C(部分)-> CPP(部分)-> Java(部分)
次に、C言語を学び、次にC++を続け、次にJava(今回は完了)を学び、次に-に移動しましたAndroidJavaおよび[〜#〜] xml [〜#〜](部分的)に精通していて、それを平均的に学びました。最初の試みは私にあまり教えませんでしたが、次の試みでは、次回あなたを助けるすべてを学ぶようにしてください。

0
instinct

ブライアン、FrustratedWithFormsDesign、SRKXに同意しますが、大学でこれを追加したいと思います。これは、複数のプログラミング言語とパラダイムで知識を広げることが、優れたプロフェッショナルになるための望ましい方法です。

あなたが形成されたプログラマーとして大学を卒業することは本当にありそうもないことです。プログラミングはハードクラフトであり、優れたプログラマーと共に働き、優れたトレーニングプログラムやコミュニティミーティングに参加する業界での年月が必要であり、習得する方法を学ぶまで、ほとんどの場合、クラフトの問題に直面し、多くのことを失敗する必要があります。それ。

複数のパラダイム、複数の言語を学び、私たちの領域の複数の問題を解決することで、業界の専門家として行動しながら、自分で工芸品を学ぶための優れたサポート基盤が得られます。

Compilersクラスに参加することはできますが、言語デザイナー、クリエーターとして、またはコンパイラ開発者として出ることはできません。ステップ、プロセス、問題と基本的な解決策が得られます。これにより、Edgeはこの知識を幅広い問題に適応させることができます。

0
Spidey

短い答え:いいえ。

長い答え:プログラマー、ソフトウェアエンジニア、デザイナーの仕事の多くは特定の言語に依存していませんが、特定の方法論に大きく依存しています。たとえば、オブジェクト指向プログラミングは、物事がメモリ内および実行時に存在する場所、それらへのアクセス可能性、およびそれらを後で使用するためにどのように利用できるか(継承とカプセル化)に大きく依存しています。 Java必要かどうかに関わらず、トップレベルの継承クラスObjectが存在することや、C++に指定されていないものが存在しないことなど、実装は異なります。

多くの言語が機能を共有しています(多くの言語は分岐しています)。もちろん、構文は異なります。命令型と関数型のようにまったく異なるパラダイムを比較すると、よりトリッキーです。しかし、構文、インデックス、および可変性について少し疑問を持たなければ、文字列処理はどこに行ってもほとんど同じです。静的型付けを使用する言語には、通常、キャストおよび強制変換の方法がいくつかありますが、実行方法とタイミングは言語デザイナー次第です。

言語はツールです。ベルトにツールを追加するだけです。しかし、道具はそれを使う職人と同じくらい良いだけです。

今、どれだけ学ぶかは個人的な選択です。新しい言語を学ぶために言語を学ぶことは決してありません。新しい言語を学ぶための選択は、コース要件(昨年、単一クラスのjs、php、Rを選択する必要があった)、既存のプロジェクト要件(90%の作業が以前にPerl 6で行われた場合)によって促されます。あなたは雇われるので、残りの10%は)またはアプリケーション固有の利点(RとはJava統計分析のためにいくつかの甘いライブラリを組み合わせたものです)。

とは言っても、そこに何があり、何が利用できるのかを知りたいのです。私の大学はこのテーマについてコースを教えました、プログラミング言語の概念。厳密な数学やコーディングに関連するものではなく、広い概観コースであり、理論的なコンピュータサイエンスではなく、実用的と見なされる可能性のあるものの基礎をカバーしていました。それは素晴らしいコースでしたし、3年目から4年目ではなく1年目から2年目に提供されるものであったと思います。テキストは プログラミング言語の概念 でした。この本を読んで読む必要があると言っているわけではありませんが、それは確かに視野を広げることでしょう。

0
Justin Reeves

まあ、CとC++はモバイルプログラミングに害を及ぼすことはありません。 Cocoa TouchとAndroid NDKの両方で使用できます。また、パフォーマンスのために必要な場合もあります。また、いくつかのプラットフォームで実行されるコードを記述したい場合もあります。その場合、サードパーティのフレームワークを使用しているだけでなく、C/C++でアプリを記述し、必要なネイティブ要素のプラットフォーム固有のラッパーでコンパイルできます(たとえば、iPhoneでOpenGLコンテキストを取得する唯一の方法は、ネイティブCAEAGLLayerクラスを使用)。

引き出しにあるツールが多ければ多いほど、仕事をこなすためのオプションが増えます。さまざまな種類のタスクに特化しているため、特定のタスクを好みます。 UIに関することだけをしているのなら、Cはいつものお気に入りではないかもしれません。やりたいことをもっと心配して、そのために必要なツールを学びました。

0
Rab

それどころか、新しいプログラミング言語を習得できない、または習得できない場合、私はそれが痛いと思います。時間の不足やその他の理由が考えられます。私が見る限り、プログラマー/ソフトウェア開発者は言語に挑戦し、より良いもの/製品を置くことに夢中です。そして、あなたがいつも同じことをしているのを見ると、あなたは気分が良くありません。したがって、新しい課題、新しい言語、新しい何かを学び、それによってより多くの製品を投入する必要があります。

新しい言語、新しいライブラリ、新しいアプローチ、新しいテクノロジーをフォローすることにワクワクすると思います。しかし、私はそれらすべてを手に入れる時間がありません、そして人々はいつも十分に深く行くことができないかもしれません。ですから、もっと学ぶ必要はありません。詳細については問題ありません。

0
Yasin Okumuş

実際には、フランス語、スペイン語、英語、アラビア語、ヒンディー語、中国語を少し習得するのと同じくらい便利ですが、どれもよく知りません。

0
user541686