コンピューター言語の多言語になる価値はありますか?[閉まっている]


14

プログラマーは自分自身を改善するために多くの異なる言語を学ぶべきだとよく耳にします。私はまだ学校に通っていて、大きなプログラミングの経験はありません(1年以上)。しかし、プログラミングスキルを向上させるという高貴な意図は、ある種のOCDに変わりました。比較的知られているプログラミング言語をすべて習得するまで落ち着かないと感じています。

そして、ここに質問自体があります:プログラミング言語の多言語は実際にあなたを助けますか(そして、私は通常、「プログラマーは少なくともすべてのパラダイムを知っているべきです」という意味ではなく、あなたが通常耳にするすべての言語を意味します)?誰か同じような経験がありますか?仕事/スキル/キャリアに役立ちますか?どのくらいの頻度でこれらのスキルを適用できますか?


3
人々が他の人に新しい言語について学ぶように勧めるとき、それは言語を学ぶことよりも新しいパラダイムを学ぶことについてのことだと思います。私の2つの主な言語はPythonとC ++です。Haskellを学ぶことは私にとって素晴らしい経験でした。
Vitor Py

4
すべての主要なパラダイムを知ることは本当に多くの助けになります。独自の言語を設計している場合は、興味深い言語のすべてに少なくとも少し触れておくと多少役立ちます(言語指向プログラミングのパラダイムに入るとすぐにそうなります)。
SKロジック

4
「プログラミングについての考え方に影響を与えない言語は、知る価値がありません。」(アランペルリス)。アーメン。

2
@Jobは、10のプログラミング言語を知っているため、1つの話し言葉の基礎を習得するのに必要な労力はほんのわずかです。
SKロジック

2
@ SK-logicによって異なります。6歳の子供にスペイン語を早く話すように教えるよりも、Pythonを教える方がいいと思います。
レイノス

回答:


10

「プログラマーは少なくともすべてのパラダイムを知っているべきです」

それが役立ちます

よく耳にする言語は本当にすべてです

それは役に立ちません。すべてのパラダイムを知ったら、週に1つの言語を学ぶことができます。

その言語が必要なときに、その言語を学習するのに1週間を費やす方が単純に最適です。

良いプログラマーは怠laなプログラマーです

サイドノート:

一般的な言語や一般的な言語を学習することは、「すべてのパラダイム」を学習するほど有用ではありません。前者は後者をカバーしていません。たとえば、Selfの学習は、プロトタイプのオブジェクト指向を理解するのに非常に役立ちます。これは一般的な言語でも人気のある言語でもありませんが、すでにルビを知っているときにPythonを学ぶよりもはるかに便利です。

言語設計:

新しい言語を作成/設計する場合、ほとんどの言語を知っていると役立ちます。そのため、堅実なユースケースがありますが、かなりニッチです。

代わりに行うことをお勧めします:

コードの読み取り2を少なくとも3回完了します

言語は「人気のあるもの」に応じて左右に行き来します。テクノロジーは、テクノロジーカーブがどのようなものかによって、数か月または数年後に非推奨になります。(Webでは、6か月ごとにテクノロジーが廃止されます)。

プログラミング手法とコンピューターサイエンス理論は常に同じです。


しかし、言語には多くの興味深いマイナーな機能があり、すでに知られているパラダイムから新しい言語を学ぶことさえあなたの心を吹き飛ばすことができます(例えば私にとってはSmalltalkでした)
アントンバーコフスキー

@AntoBarkowskiは虚偽の記述です。SmallTalkを他のオブジェクト指向言語と比較しないでください。Java / C ++ / C#/など。実際のオブジェクト指向言語ではありません。もちろん、SmallTalkは学習する価値がありますが、同じパラダイムではありません;)
Raynos

6
人々は「週に1語を学べます」と言い続けますが、それは事実ではありません。確かに、あなたはその言語で構文的に正しいコードを書くことができますが、それだけではありません。たとえば、C#とJavaは構文的に非常に似ており、どちらもオブジェクト指向言語です。ただし、C#でJavaコードを記述しても、C#プログラマーになるわけではありません。
R0MANARMY

3
@ R0MANARMY「<良いプログラマー>は1週間で言語を学ぶことができます」。言語には、ライブラリ、フレームワーク、およびAPIは含まれません。しかし、優秀なプログラマーの私の定義は非常に高いかもしれません。
レイノス

1
@ R0MANARMY、あなたが言及したその小さくて重要でないセマンティックビットのうち、理解するのに1時間以上かかることがあるものはどれですか?
SKロジック

4

多数の言語でコーディングする方法を知ることではなく、あなたが言うように、パラダイムについてです。あなたが知っているより多くのオプションが良い。複数の言語を理解することは確かに役立ちますが、同じ種類の言語を学習し続けると、すぐに行き詰まります。

重要なのは、プロジェクトの一部を実装するのに最適な言語/システムを知ることです。(ほとんどのプロジェクトがそうであるように)1つのメイン言語を決定したとしても、記述しなければならないあらゆる種類のツール、スクリプト、自動化、およびビルドサポートがあります。通常、他のさまざまな言語またはツールは、メイン言語よりも優れています。

明確にするために、実際に聞いているすべての言語を試して学ぶのは愚かなことです。これらの言語は何百もあり、多くの場合、他の言語のわずかなバリエーションです。


3

私見、そうではありません。第一に、1年以内に言語を学ぶことができないからです。コードを記述できるようになるには2日かかりますが、流givenで適切な形式のコードを特定の言語で記述するには多くの経験が必要です。GCがそのように機能する理由、メモリを割り当てる場所、より高速な構造、文字列を正しく連結する方法、言語の危険なコーナーなど。

多くのJava開発者がひどいC ++コードを書くように、私はひどいJava / .NETコードをC ++開発者として書いています。

他の言語を学習することの最大の利点は、新しいパラダイムを学習し、具体的な問題に対してより良いツールを使用できることです。たとえば、非常に高速で非公開のGUIアプリが必要です。そこでは.NETはかけがえのないものです。

ただし、.NETで構造体を使用しないように、またはC ++ですべてのオブジェクトをリークしないように言語を学習するには、多くの時間がかかります。デザインの原則、プラットフォーム、選択した言語の学習に費やす方が良いと思います。

しかし、これは私の意見です。


2
「1年もたたないうちに言語を学べないから」False。言語の学習と、公開されている一般的なフレームワークの学習を混同しないでください。また、最後にリストに「一般的なプログラミング手法」を追加します。
レイノス

@Raynos:それが彼の言っていることだと思った。
スティーブンジュリス

1
新しい言語で遊ぶ私のお気に入りの方法は、適切なサブセットのコンパイラを実装することです。合計で言語を理解し、その言語から最良の機能を特定して盗むことができるようになるまでに2〜4時間かかります。ほぼ1年も、1日もありません。
SKロジック

1
大規模なC ++プロジェクトに参加していて、「私は10年間Javaでプログラミングをしてきましたが、過去6か月間C ++に費やしたので、その言語を知っています」などの言葉を聞きました。あなたがその仕事のために高給のシニア開発者の地位を得ることを疑います。だから、いや、まだ1か月ほどで言語を学べないと思う。
コーダー

2
@Coder、大規模なC ++プロジェクトに参加していて、「C ++を含めて10年間20言語でプログラミングをしている」などの言葉でインタビューを受けたなら、おそらく仕事に就くでしょう。
SKロジック

2

それらを知ることは実用的ではありませんがそれらについて知ることは非常に有用です。つまり、新しい問題が発生したとき、「[他の言語]はこのような問題を解決する優れた方法を持っていたことを漠然と覚えています。調べてみるべきです」と言うことができます。


SE Radioのようなポッドキャストはそのために良いと思います。彼らは通勤中に通勤するのに適切な長さであることが多く、そのように多くを学ぶことができます。しかし、その形式はなぜ<X>興味深いのですか。
ザカリーK

1

ドメイン知識を構築し、多くのプログラミング言語を学習することで、あなたのキャリアをさらに支援します。言うまでもなく、あなたの言語でプロファイラーを使用する方法、デバッガーのためのプロファイラー、最高のGUIフレームワーク、そしてそれを使って素早くプログラムする方法、トレードオフを伴う一般的なサードパーティのライブラリなど、追加のツールを学ぶ必要がありますおよび言語固有のイディオム。

また、同じことを行う多くの方法よりも、より多くのことを行うことを学ぶのが賢明です。


1

コンポーネントが複数の言語で記述されたいくつかのシステムで作業しました(最悪の犯罪者はAda 83、C、Fortran 77、SQL、およびDCLで記述されたコードを提供する必要がありましたが、私の最後の仕事はC ++およびJavaコードを提供する必要がありました)。!だから、ええ、あなたが複数の言語を知っている必要があり、現実世界の例は、生産性=熟達は、(その中に生産的であることが十分にありますが、あなたはC ++での深い専門家でするつもりはないし、 Javaの ...あなたがない限り「フリークです」。

それを超えて、複数の言語を学ぶのに時間をかけることのポイントは、実装から概念を分離するのを助けることです。私にとって、OOPは、複数のOOPLで作業するまで意味がありませんでした。また、キャリアのある時点で、ギアをすばやく切り替えて、まったく新しい、なじみのないものに取り組み始める必要あります。知っておくべきことを超えてストレッチするために少し時間をかけることは、それが起こったときにその移行を容易にするのに役立ちます。


1

可能性のあるすべての言語を学習する必要性に着手する前に、いくつかの異なる言語を学習し、少なくとも1つの言語を学習する方が良いと思います。最低限の幅を確保したら、開発者としての進歩にとって深さが非常に重要になります。私は、1つまたは2つの言語に精通している人と、すべての人にまみれている人よりも数人の人にまみれている人を見たでしょう。深さを得ることは、別のパラダイムを学ぶようなもので、プログラミングに対する考え方を変え、本当に複雑でエキサイティングなプロジェクトへの扉を開きます。


0

多くの言語を話すことを学ぶようなものです。それらをすべて有用になるまで学習することはほぼ不可能です。使用する可能性が高いものに固執すると、より良い結果が得られます。C ++、C#、およびJavaを非常によく習得できましたが、Perl、Python、VB(VB.NETではない)、Ruby、およびJavaScriptを同時にプロフェッショナルレベルに絞り込もうとするのは愚かなことです。すべてのスキルを一度に維持するのに十分な時間はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.