私にとっては、C#とJavaの人です。これらの2つの言語は非常に似ているので、互いに簡単にクロスオーバーできます。他の異なる言語を取り上げるのが良い考えかどうかはわかりません。何かご意見は?
私にとっては、C#とJavaの人です。これらの2つの言語は非常に似ているので、互いに簡単にクロスオーバーできます。他の異なる言語を取り上げるのが良い考えかどうかはわかりません。何かご意見は?
回答:
私は言語を学ぶ少なくとも5つの理由を考えることができます、そして、あなたは最終的にこれらのそれぞれのために1つを学ぶべきであるように思われます。
学習する言語の数ではありません。新しい概念を学ぶことです。多くの概念を教えることができる言語もあれば、1つだけを教えることができる言語もあります。
C#を知っていれば、おそらくJavaを学習してもそれほど新しいことを学ぶことはないでしょう。しかし、Haskellを学べばそうでしょう。
したがって、学習する新しい言語を選択するときは、まだ知らない概念を教えてくれるものを選択してください。
最も重要なことは、速く学ぶ能力だと思います。つまり、さまざまな目的に使用されるさまざまな言語を知ることが重要です。たとえば、私は知っています:
1)スクリプト言語カテゴリのPythonおよびPerl
2)「フレームワーク」言語としてのC ++
3)モバイルアプリケーション用のJava
4)C 巨大なレガシーコードの量
5)私が若かった頃に知っていた古い言語(Basic、Pascal、Clipperなど)
少なくともメイン言語とスクリプト言語が必要だと思います。C#を知っている次にPython、Perl、またはRubyを学ぶ必要があると思います。(私はPythonを使いますが、それは好みの問題です)。
毎年1つの新しいプログラミング言語を学ぶのは良いことです。しかし、すでに知っていることと似たようなことを学ぶのではなく、ScalaやF#のような根本的に異なることを学ぶことをお勧めします。それはあなたに物事をする新しい方法を示し、最終的にあなたのプログラミングスキルを豊かにします。
あなたがしていることに必要な言語に集中するべきです。本当に言語を学ぶことは練習から来るので、練習しているときにその言語の恩恵を受けることができます。空き時間に新しい言語を学習する場合は、複雑さを増すタスクに実装して、実際にその言語を理解できるようにします。
何にも集中しません。クリーンなコードの学習と作成に焦点を当てます。明確で、表現力があり、シンプルで、最も重要なのは、複製されないことです。
そのタイプのプログラミングの原則、基本(たとえば、OOPのカプセル化、意味とは何か)、およびいくつかの原則を学ぶ
これにより、仕事が楽になります。これにより、あなたと一緒に仕事をする人やあなたの後に仕事をする人も簡単になります。
ya、あなたもかなりよく構文を知っている必要があります。しかし、それはあなたの焦点を長く取るものではありません
そして、あなたもあなたが使う技術をかなりよく理解しなければなりません。ただし、ビジネスに必要な複雑さのレベルに応じて優先順位を付けることができます。
最後の2つは主な焦点ではなく、ある程度の焦点です
あなたの仕事をするのに必要なだけ。
しかし、C#とJavaは、英国英語と米国英語に近いものです。フィンランドやナバホに行くことで何か新しいことを学ぶかもしれません。
他の言語を十分に理解していなくても、その言語を「外部から」そのまま見ることができるとは限りません。それぞれの異なる言語はテーブルに何か他のものをもたらし、それらがもたらす概念は、あなたが働く主な言語に戻すことができるものです。
そのため、他の言語を商業的に使用する予定がない場合でも、他の言語の使用方法の学習に費やす時間は無駄になりません。
古い格言は毎年言語を学ぶことであり、最初の10年間は必ずそうする必要があります。それを超えて、すでに知っているものをより深く掘り下げる(おそらく数年前に学んだものの知識を更新する)か、単に新しい言語を無限に蓄積するのではなく、特定のライブラリで作業するかを選択できますが、異なる言語での作業を通じてプログラミングの実践を探ることは、確かにプログラマーとしての開発の助けになります。
C#やJavaのような人気のあるプログラミング言語を使用すると、ほとんどの場所で有利に雇用できますが、問題を解決する新しい方法を学ぶのに十分な違いはありません。一緒に食べる言語(仕事に使う言語)と遊ぶ言語がいくつかあると思います。両方とも目的があります。
新しいプログラミング言語を学ぶことで、問題を解決するための新しくてエレガントな方法も学んだことがわかりました。それは言語の数や、それらを拾う頻度ではありません。学習する価値のある各プログラミング言語には独自の視点があり、新しい考え方で問題に取り組む必要があります。多くの場合、価値はその考え方を学ぶことからもたらされます。
Smalltalkで遊んだことがあり、とても気に入りました。言語は、一緒に開発する喜びでした。イディオムに慣れると、コードの表現力が向上します。Java / C ++ / C#の静的型付けを見逃すことはありませんでした。静的型付け言語で私たちが住んでいるジェネリックは、静的型付けが課す制限を回避するための実際の構造です。
私はRubyとRuby on Railsを定期的に使用していますが、今は仕事にお金を払うためではありません。Rubyの設計原則は、「プログラマーの幸福度を高める」ことでした。あなたはその感情を愛さなければなりません、そして大部分はそれが実現すると思います。
最終的にはJavaはLispとSmalltalkの道を進み、C#はそれに追随するでしょう。彼らに取って代わるものは何なのかはまだ分からない。結局のところ、問題を解決する方法を知っていて、問題を切り刻むいくつかの方法があれば、仕事を見つけて、そのために必要な言語を選ぶことができます。
スキルを最新かつ柔軟に保つことになると、少なくとも半年ごとに少なくとも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つは、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を知っているだけでは説明や理解が難しい難しい新しいことができるからです。
まず第一に、ほとんどのプログラマーにとって避けるのが非常に難しい言語がいくつかあります。javascript、sql、cなどです。そのため、それらに習熟することもできます。
また、アヒル型のスクリプト言語を知っておくのもよい考えです。たとえば、perl、python、ruby、luaなどの1つです。これらは、日々のつまらない作業の多くを自動化するなど、さまざまな問題に非常に役立ちます。
良くも悪くも、ある時点でc#やjavaにも遭遇する可能性があります。
いずれにせよ、人為的に制限しないでください。おもしろいツールを取り上げることを明示的に避けているコーダーは、世界観を覆い、影響を制限しているようです。
これはある意味で、別のスペシャリストとジェネラリストの議論になる可能性があります。一部の人々は、1つの言語を深く理解するのに長い時間を費やすかもしれません。他の人々は、彼らのためにうまくいくたくさんの異なる言語について少し知りたいかもしれません。ほとんどの人はこれらの両極端の間にいます。
言語の提案を探求したい場合、ここにいくつかのアイデアがあります。
関数型プログラミング-HaskellまたはLispがここでの例であり、パラダイムシフトはある程度までは少し頭を動かすことができます。
データベース固有-PL / SQLまたはT-SQLは、一部の機能にデータベースを必要とするシステムでより多くのバックエンド作業を行いたい場合に役立つものとして思い浮かびます。
UI Web言語-ActionScriptまたはJavascriptは、リッチインターネットアプリケーションで使用される言語の例です。ただし、AIRは、Twitter APIを使用するTwhirlのようないくつかのケースで、デスクトップアプリケーションでWeb呼び出しを使用できます。
これらは単なるアイデアであり、どこに行きたいかによって、役に立つか役に立たない場合があります。どんな選択をしても幸運です。
プログラマーは、C、英語、およびその他の3つの言語を知っている必要があります。
Cは非常にコア言語であり、マシンに近く、いくつかの高水準言語に共通の構文規則を持っています。Cは、Javaとは非常に異なる方法でデータ構造のようなものについて考えることを強制します。また、PythonとRubyのvmsは両方ともCで構築されており、速度を上げたい場合は、Cを両方の言語にインライン化できます。
英語はプログラミングの共通言語です。ほとんどの書籍、テクニカルレポート、テクニカルWebサイト、およびジャーナルペーパーは、最初に英語で、場合によっては英語のみで発行されます。さらに、英語が母国語でない場合、英語を学習すると概念を操作するためのツールキットが拡張されます(これはもちろん、他の言語を学習する英語の話者にも当てはまります)。
Something Elseは、手続き型でないか、静的に型付けされていないか、オブジェクト指向が強いか、何らかの方法でC. Haskell、Scala、Python、Ruby、Lisp方言などとは根本的に異なる言語でなければなりません。
その後、C#やJavaなど、特定の状況で必要なものは何でも学習できます。