プログラマーは少なくともいくつの言語に集中すべきですか?[閉まっている]


21

私にとっては、C#とJavaの人です。これらの2つの言語は非常に似ているので、互いに簡単にクロスオーバーできます。他の異なる言語を取り上げるのが良い考えかどうかはわかりません。何かご意見は?


採用プロセスは履歴書のキーワードを探すので、あなたは尋ねていますか?
ブライアン

@ 0A0Dいいえ、それは個人的な興味のためでした。プログラマーでもある:)
Digital Dude

回答:


43

私は言語を学ぶ少なくとも5つの理由を考えることができます、そして、あなたは最終的にこれらのそれぞれのために1つを学ぶべきであるように思われます。

  1. 最初の仕事を得るための1つの言語-おそらくJava / C#/ C ++
  2. 物事を成し遂げるための1つの言語-おそらくBash / Perl / Python / Ruby
  3. あなたの心を曲げる1つの言語-おそらくHaskell / Clojure / Scala / F#
  4. ドメイン固有の理由による1つの言語-おそらくJavaScript / Objective C
  5. 手を汚す1つの言語-おそらくC /アセンブリー

17
それらをすべて支配している言語は何ですか?
テスター101

4
アセンブリがすべてを支配します。それが最後にリストされている理由です。最後のベストを保存しました。
WernerCD

9
Tester101:英語?; o)
ジョンフィッシャー

6
もちろん、最初の仕事を得るための言語が、物事を成し遂げるために使用する言語ではないことは驚くべきことではありません。

4
...そして暗闇の中で、それらを縛ってください!
tchrist

53

学習する言語の数ではありません。新しい概念を学ぶことです。多くの概念を教えることができる言語もあれば、1つだけを教えることができる言語もあります。

C#を知っていれば、おそらくJavaを学習してもそれほど新しいことを学ぶことはないでしょう。しかし、Haskellを学べばそうでしょう。

したがって、学習する新しい言語を選択するときは、まだ知らない概念を教えてくれるものを選択してください。


23
+1「プログラミングについての考え方に影響を与えない言語で、知る価値はありません」
アランペルリス-Inaimathi

20
@Inaimathi:知らない限り、請求書の支払いに役立ちます。
Kramii復活モニカ

5
ほんの一言:Haskell をC#とは根本的に異なる以外の理由で提案しませんでした。私のアスベストを身に着けているトリックスターは、「OOを学ぶことができるようにSmalltalkを学ぶ」と言いたかったのです!
フランクシェラー

10
@Digital Dude:それが難しいという事実は、一種のポイントです。あなたの額の後ろの痛みは悪いことではありません-それはあなたの脳が成長していることの兆候です。同じことを何度も繰り返し学習したい場合は、Java、C#、Ruby、C ++(うわー、ガベージコレクターなし-怖い!)、C(クラスなし-怖い-怖い!)、そして多分本当に夢中になって、Objective-Cを試してください!(Ooooh-2日前、私はMacのスペルができませんでしたが、今では1つをプログラムできます!)同じ道をたどると、同じ場所に行くことができます。
ボブジャービス-モニカを

4
@Kramii @Inaimathiなるほど、しかし、あなたが手形を支払うことができます言語は、プログラミングについての考え方に影響
SLF

22

最も重要なことは、速く学ぶ能力だと思います。つまり、さまざまな目的に使用されるさまざまな言語を知ることが重要です。たとえば、私は知っています:

1)スクリプト言語カテゴリのPythonおよびPerl

2)「フレームワーク」言語としてのC ++

3)モバイルアプリケーション用のJava

4)C 巨大なレガシーコードの量

5)私が若かった頃に知っていた古い言語(Basic、Pascal、Clipperなど)

少なくともメイン言語とスクリプト言語が必要だと思います。C#を知っている次にPython、Perl、またはRubyを学ぶ必要があると思います。(私はPythonを使いますが、それは好みの問題です)。


1
私もあなたに同意します。言語を知っているプログラマーは、少なくともスクリプト言語の1つを学んでそれを使用する必要があります。あなたがいくつかのテストをしたいとき、それは非常に重要で便利です。特にゲーム開発など。私は追加の言語としてpythonを選ぶと思います:)
デジタルデュード

2
速く学ぶ能力のためのカルマ
アユシュゴヤル

スクリプト言語に加えて、シェルスクリプト言語を知っていることも大きな助けになります。システム上の特定の一般的な雑用は、Pythonのようなスクリプト言語よりもシェル言語で解決する方が簡単です。
CodexArcanum

C#を知っていることは、その言語の専門家であることとは異なります
ブライアン

1
パスカルはほとんど時代遅れの言語ではありません。最近、Delphiで開発されているものが山ほどあります。
メイソンウィーラー

8

毎年1つの新しいプログラミング言語を学ぶのは良いことです。しかし、すでに知っていることと似たようなことを学ぶのではなく、ScalaやF#のような根本的に異なることを学ぶことをお勧めします。それはあなたに物事をする新しい方法を示し、最終的にあなたのプログラミングスキルを豊かにします。


ありがとう!私はあちこちを少し知っていますが、1つの言語を完全に習得できないことに気付きました。常に新しいことが行われています。.:/
Digital Dude

2
@Digitalすべての言語を習得する必要はありません。概念に精通している必要があります。それにより、言語が最も役立つ問題が発生した場合に、その決定を下すことができます。また、主要言語で使用できる概念にさらされる場合があります。
KeithB

8

あなたがしていることに必要な言語に集中するべきです。本当に言語を学ぶことは練習から来るので、練習しているときにその言語の恩恵を受けることができます。空き時間に新しい言語を学習する場合は、複雑さを増すタスクに実装して、実際にその言語を理解できるようにします。


7

何にも集中しません。クリーンなコードの学習と作成に焦点を当てます。明確で、表現力があり、シンプルで、最も重要なのは、複製されないことです。

そのタイプのプログラミングの原則、基本(たとえば、OOPのカプセル化、意味とは何か)、およびいくつかの原則を学ぶ

これにより、仕事が楽になります。これにより、あなたと一緒に仕事をする人やあなたの後に仕事をする人も簡単になります。

ya、あなたもかなりよく構文を知っている必要があります。しかし、それはあなたの焦点を長く取るものではありません

そして、あなたもあなたが使う技術をかなりよく理解しなければなりません。ただし、ビジネスに必要な複雑さのレベルに応じて優先順位を付けることができます。

最後の2つは主な焦点ではなく、ある程度の焦点です


ええ、私は最近C#essentialを取り上げました。これは読むのに非常に良い本であり、それを最大限に活用する方法がわからないことがたくさんあります。私が聞いた他の本C#の詳細もお勧めです。学ぶべきことがたくさんあります...だからこそ、私はいくつかの言語に集中しなければならないことについてこの投稿を始めました。
デジタル男

目的に応じて優先順位を付けます。仕事をもっと簡単にしたいですか?あなたは自分がどこにいて何をすることに満足していますか?きれいなコードを探してください。別のテクノロジーを使用する別の会社で働きたい場合は、それを学んでください。多様性のためだけにテクノロジーを変えたいなら、そのために行きましょう。あなたの目標を選択し、それに従って行動する
Belun


6

あなたの仕事をするのに必要なだけ。

しかし、C#とJavaは、英国英語と米国英語に近いものです。フィンランドやナバホに行くことで何か新しいことを学ぶかもしれません。


1
または!Xóõ:en.wikipedia.org/wiki/Taa_language(アフリカの「クリック」言語)。
Jaredアップダイク

hehe、フィンランド語またはナバホ語について言及した後。私は...私はプログラミングの私の第四の代わりに...十分のための日本語のために行くだろうと思う
デジタルデュード

1
@Jared、私はその名前を言うために、カットアンドペーストを必要とする言語は、...最初から望ましくない習慣を奨励することだと思う

5

他の言語を十分に理解していなくても、その言語を「外部から」そのまま見ることができるとは限りません。それぞれの異なる言語はテーブルに何か他のものをもたらし、それらがもたらす概念は、あなたが働く主な言語に戻すことができるものです。

そのため、他の言語を商業的に使用する予定がない場合でも、他の言語の使用方法の学習に費やす時間は無駄になりません。

古い格言は毎年言語を学ぶことであり、最初の10年間は​​必ずそうする必要があります。それを超えて、すでに知っているものをより深く掘り下げる(おそらく数年前に学んだものの知識を更新する)か、単に新しい言語を無限に蓄積するのではなく、特定のライブラリで作業するかを選択できますが、異なる言語での作業を通じてプログラミングの実践を探ることは、確かにプログラマーとしての開発の助けになります。


しばらくしてから、ある言語で学んだ概念を別の言語で使用することもできます。たとえば、Haskellを使用して関数型プログラミングを学習した後、C#で使用できる関数型プログラミングの概念を確認してみてください。関数プログラム全体をC#で記述したくない場合もありますが、その方法の方が理にかなっている場合があります。
キースB

3

C#やJavaのような人気のあるプログラミング言語を使用すると、ほとんどの場所で有利に雇用できますが、問題を解決する新しい方法を学ぶのに十分な違いはありません。一緒に食べる言語(仕事に使う言語)と遊ぶ言語がいくつかあると思います。両方とも目的があります。

新しいプログラミング言語を学ぶことで、問題を解決するための新しくてエレガントな方法も学んだことがわかりました。それは言語の数や、それらを拾う頻度ではありません。学習する価値のある各プログラミング言語には独自の視点があり、新しい考え方で問題に取り組む必要があります。多くの場合、価値はその考え方を学ぶことからもたらされます。

Smalltalkで遊んだことがあり、とても気に入りました。言語は、一緒に開発する喜びでした。イディオムに慣れると、コードの表現力が向上します。Java / C ++ / C#の静的型付けを見逃すことはありませんでした。静的型付け言語で私たちが住んでいるジェネリックは、静的型付けが課す制限を回避するための実際の構造です。

私はRubyとRuby on Railsを定期的に使用していますが、今は仕事にお金を払うためではありません。Rubyの設計原則は、「プログラマーの幸福度を高める」ことでした。あなたはその感情を愛さなければなりません、そして大部分はそれが実現すると思います。

最終的にはJavaはLispとSmalltalkの道を進み、C#はそれに追随するでしょう。彼らに取って代わるものは何なのかはまだ分からない。結局のところ、問題を解決する方法を知っていて、問題を切り刻むいくつかの方法があれば、仕事を見つけて、そのために必要な言語を選ぶことができます。


2

スキルを最新かつ柔軟に保つことになると、少なくとも半年ごとに少なくとも1つの完全に新しいプログラミング言語を習得するようにしてください。そして、私は非常に異なる言語を意味します。

そのため、C#またはJavaフレームワークを使用しながら.netフレームワークの詳細を学習すると、柔軟性を保つのに役立ちますが、Haskell、Smalltalk、Scala、ClojureまたはRubyを学習すると、テクニックが拡張され、さまざまな方法で考えることができます。メイン言語に戻ります。Javaが丘の王であるのをやめた場合、そのいくつかは先に進むのに役立つかもしれません。

Cを一度も学習したことがない場合は、構文がJavaに組み込まれていますが、考え方はまったく異なる場合があります。手続き型のように見えるこの言語でオブジェクト指向コードをどのように書くことができるかを理解することは価値があります。

Bruce Tateの著書「Beyond Java」を読むことをお勧めします。この本は、C ++の盛衰に注目して、1つの言語のみに存在することの危険性を強調しています。C ++はまだ死んでいるわけではなく、何十年も残っていますが、他の言語の生産性向上の恩恵を受けられない状況でのみ使用することがますます制限されています。対照的に、RubyフレームワークであるSinatraでは、約6/7行のコードで簡単なWebサービスを構築できますが、C ++の同等物はこれよりも1桁大きい場合があります。


1

英語を母国語としない人は、少なくとも英語の向上に集中する必要があります。私の経験に基づいて言っています。その言語を理解することは私を大いに助けました。

プログラミング言語、テクノロジー、および新しい概念を学習するためのすべての優れた資料(書籍、記事、コードなど)は、英語で書かれています。


1

言語は仕事を成し遂げるためのツールです。ある種の問題に適した言語もあれば、一般的にあらゆる種類の問題解決に優れた言語もあります。新しい言語が出たらすぐに学ぶことをお勧めします。今月流行のものに夢中になってはいけませんが、何ができるか、何が得意かを学びましょう。私のアドバイスは、毎年1つの新しい言語です。それらはそれより速く出ますが、あなたはブロックのファッショナブルな新しい子供ではなく、ツールボックスに新しいツールを入れたいと思っています。

言語の違いについて語っているエッセイの1つは、Paul Grahamの「Beating the Averages」です。読むことをお勧めしますが、重要な部分の1つがここにあります(お気に入りの言語が何ができるかについて議論しないように、彼は仮想言語として「Blub」を使用しています)。

または、Perl 4はどうですか?Perl 4とPerl 5の間で、言語に語彙的クロージャーが追加されました。ほとんどのPerlハッカーは、Perl 5がPerl 4よりも強力であることに同意するでしょう。しかし、一度それを認めると、ある高レベル言語が他の高レベル言語よりも強力になる可能性があることを認めました。そして、特別な場合を除いて、容赦なくあなたが得ることができる最も強力なものを使うべきであるということです。

ただし、この考えが結論に至ることはめったにありません。一定の年齢を過ぎると、プログラマーが自発的に言語を切り替えることはほとんどありません。人々がたまたまどの言語に慣れていても、彼らは十分に良いと考える傾向があります。

{スニップ}

架空のBlubプログラマーがパワーの連続性を見下ろしている限り、彼は見下ろしていることを知っています。Blubよりも強力ではない言語は、以前使用していた機能が欠けているため、明らかに強力ではありません。しかし、私たちの仮想Blubプログラマーは、パワーの連続性を超えて別の方向を見ると、彼が見上げていることに気付きません。彼が見ているのは、単に奇妙な言語です。彼はおそらくそれらをBlubと同等のパワーであると考えていますが、他のすべての毛むくじゃらのものも同様に投げ込まれています。彼はBlubで考えているので、Blubは彼にとって十分です。

しかし、パワーの連続性を高める言語のいずれかを使用するプログラマーの視点に切り替えると、彼は順番にBlubを見下ろすことがわかります。Blubで何かを行うにはどうすればよいですか?yもありません。

帰納法により、さまざまな言語間の力の違いをすべて見ることができるプログラマーは、最も強力な言語を理解しているプログラマーだけです。(これはおそらく、Eric RaymondがLispを使ってより良いプログラマーにしたことを意味するものです。)他の人の意見は、Blubパラドックスのために信用できません。彼らは使用する言語に満足しています。彼らがプログラムについて考える方法。

http://www.paulgraham.com/avg.html

私たちが出荷するアプリケーションのほとんどは、C#またはVBで書かれています。アプリケーションにスクリプトを追加する必要があるとき、Pythonを選択しました(次点はLuaでした)。F#を学習しているのは、C#/ Java / VBを知っているだけでは説明や理解が難しい難しい新しいことができるからです。


0

まず第一に、ほとんどのプログラマーにとって避けるのが非常に難しい言語がいくつかあります。javascript、sql、cなどです。そのため、それらに習熟することもできます。

また、アヒル型のスクリプト言語を知っておくのもよい考えです。たとえば、perl、python、ruby、luaなどの1つです。これらは、日々のつまらない作業の多くを自動化するなど、さまざまな問題に非常に役立ちます。

良くも悪くも、ある時点でc#やjavaにも遭遇する可能性があります。

いずれにせよ、人為的に制限しないでください。おもしろいツールを取り上げることを明示的に避けているコーダーは、世界観を覆い、影響を制限しているようです。


0

これはある意味で、別のスペシャリストとジェネラリストの議論になる可能性があります。一部の人々は、1つの言語を深く理解するのに長い時間を費やすかもしれません。他の人々は、彼らのためにうまくいくたくさんの異なる言語について少し知りたいかもしれません。ほとんどの人はこれらの両極端の間にいます。

言語の提案を探求したい場合、ここにいくつかのアイデアがあります。

  1. 関数型プログラミング-HaskellまたはLispがここでの例であり、パラダイムシフトはある程度までは少し頭を動かすことができます。

  2. データベース固有-PL / SQLまたはT-SQLは、一部の機能にデータベースを必要とするシステムでより多くのバックエンド作業を行いたい場合に役立つものとして思い浮かびます。

  3. UI Web言語-ActionScriptまたはJavascriptは、リッチインターネットアプリケーションで使用される言語の例です。ただし、AIRは、Twitter APIを使用するTwhirlのようないくつかのケースで、デスクトップアプリケーションでWeb呼び出しを使用できます。

これらは単なるアイデアであり、どこに行きたいかによって、役に立つか役に立たない場合があります。どんな選択をしても幸運です。


0

プログラマーは、C、英語、およびその他の3つの言語を知っている必要があります。

Cは非常にコア言語であり、マシンに近く、いくつかの高水準言語に共通の構文規則を持っています。Cは、Javaとは非常に異なる方法でデータ構造のようなものについて考えることを強制します。また、PythonとRubyのvmsは両方ともCで構築されており、速度を上げたい場合は、Cを両方の言語にインライン化できます。

英語はプログラミングの共通言語です。ほとんどの書籍、テクニカルレポート、テクニカルWebサイト、およびジャーナルペーパーは、最初に英語で、場合によっては英語のみで発行されます。さらに、英語が母国語でない場合、英語を学習すると概念を操作するためのツールキットが拡張されます(これはもちろん、他の言語を学習する英語の話者にも当てはまります)。

Something Elseは、手続き型でないか、静的に型付けされていないか、オブジェクト指向が強いか、何らかの方法でC. Haskell、Scala、Python、Ruby、Lisp方言などとは根本的に異なる言語でなければなりません。

その後、C#やJavaなど、特定の状況で必要なものは何でも学習できます。


匿名の批評家であるあなたがこの回答に投票した理由についてコメントをいただければ幸いです。
哲学者

英語はアイデアを教えてくれません。アイデアを表現するための唯一の方法です。
サガルマータ

@sagarmatha:これが真実であったとしてもそうではありませんが、フィールドのデフォルトのコミュニケーション言語で自分を表現できるということだけは「ありません」。英語を上達させれば、英語を話す人にはっきりと自分自身を表現することができ、さらに重要なことには、英語をより速く読んで理解することができます。Matiasが指摘しているように、プログラミングの本や技術記事は最初に英語で出てくる傾向があり、時には英語のみで出てくることもあります。
哲学者

あなたがなぜ投票されたのかはわかりませんが、英語を知ることは主要なプログラミング言語を知ることと同じくらい重要であることに同意します。@sagarmatha:あなたは自分自身に矛盾しました。アイデアが英語で表現されている場合、英語を確実に理解することで、これらの新しいアイデアを学ぶことができます。あなたがそれをどの程度学習し、応用するかは、あなたの英語とプログラミングのスキルを理解する能力に依存します。
チロックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.