ほとんどのプログラマーは、単一のスタックに特化して他のものを残していますか、それとも複数の言語の専門家ですか?複数の場合、標準はいくつですか?
専門家とは、単に言語の構文を知っているだけではありません-専門家は、常に物事を調べたり本/チュートリアルを読んだりすることなく、自明でないプログラムを書くことができる十分な標準ライブラリ、ツール、環境、構文を知っています。
ほとんどのプログラマーは、単一のスタックに特化して他のものを残していますか、それとも複数の言語の専門家ですか?複数の場合、標準はいくつですか?
専門家とは、単に言語の構文を知っているだけではありません-専門家は、常に物事を調べたり本/チュートリアルを読んだりすることなく、自明でないプログラムを書くことができる十分な標準ライブラリ、ツール、環境、構文を知っています。
回答:
複数の言語を知ることの主な利点は、直接書くことではありません。他のすべての条件が同じであれば、C#でハッキングされた経験のある人よりも、C、Python、Lisp(たとえば)を知っているC#プログラマと一緒に仕事をしたいと思います。より多くの言語を知っている方が良いということではなく、複数のレベルで、複数の観点から問題について考えることができることは本当に役立つということです。
プログラミングについての考え方を変えないプログラミング言語は、知る価値がありません。-アラン・ペルリス
それは、もう1つの言語をチェックオフしたり、履歴書に載せたりすることではありません。基礎となる概念を十分に理解して、十分なメリットを得るためにプログラミングするだけで十分です。構文の基本を理解していても、それは得られません。
より直接的な答えは「依存する」です。
大企業では専門化することを期待/許可されていますが、上で述べたように、お気に入りのツールを超えて物事を理解することにはまだ利益があると思います。
小さい場所では、本当にそれで逃げることはできません。それ以外の場合は、通常、アプリを維持すると同時にビルドする必要があり、おそらく、実際にアプリをビルドするのと同じ言語を使用してログ/データ変更を実行することはないでしょう。技術的には単一の言語を理解することで逃げることができると思いますが、パフォーマンスが高く、厳密に型指定された(または少なくともアサーション対応)、おそらくコンパイルされた言語が重荷を担い、メンテナンス用のスクリプト言語を持つことの利点セットアップ/スクリプト作成タスクはかなり大きいようです。確かにそれなしではやりたくありません。
非常に興味深い質問があります:
プログラマーが特定の言語の「専門家」であるべきだとは思いません。私は、プログラマーとして、プログラミング、アルゴリズムの設計、明確なステップで考えることの専門家になることを意図していると考えていますが、プログラミング言語は習得したものです。
「いい」プログラマー、いいかいというと、古典的な「これまで働いたことがない」の背後にあることを恐れずに開発プロジェクトを処理するということは、5営業日以内に言語を学ぶべきです。ベストプラクティス、ツール、およびライブラリは、主に2つの方法から学習します。1つは読書、2つは作業です。コードに対して頭をバウンスするか、たくさんの本を読んでください。
「優れたプログラマーはコードだけを書く」というC#コード、C ++コード、またはJavaコードのない前提に続いて、プログラムの開発を学んだ後、言語と技術はそれほど重要ではないことに気付くでしょう。もちろん、PHPよりもC#をうまく動かす方法を知っていますが、よく学べば、必要に応じてPythonを使いこなすことができます。
あなたのような私のアイデアを願っています!
おそらくあなたの性格に依存していると思います。主題の隅々まで掘り下げて楽しむ人がいます。あなたはおそらくあなたがどんなタイプの人格であるかを理解する必要があるでしょう。私はそれぞれが用途を持っている他の上に1つを置いていません。
前者として、あなたは専門家、第一人者、専門家になります。後者としては、より一般的な用途であり、さまざまな状況で使用される可能性がありますが、場合によっては対象に深く深く入り込むことはできません。
いずれかの言語の専門家ではないプログラマーがいる可能性が高いのですが、PHP、ASP.Net(C#のような)のようなサーバーサイドテクノロジーを知っている人もいるため、彼らはさまざまな環境を楽しんでおり、状況に応じてさまざまな言語を使用します.NetまたはVB.Net、またはJava、JavaScriptやFlashなどのクライアント側のスクリプト言語の2つ。これは、ここでWebのものを配置するために使用されるハードウェアには一切入りません。
同時に、12言語以上の専門家であるプログラマーがいる場合があります。ほとんどの場合、各言語内で多くのことを習得するためにかなり忠実に勉強しているからです。
これは良い質問ですが、標準があるとは思いません。通常、私が見たところでは、人々は1つの環境(windows / linux、mac、solaris)で1つの高レベル言語(C ++、Javaなど)の完全な専門家です。彼らは他の高水準言語を大体知っていますが、完全には理解していません。(たとえば、C ++、Javaの人々はおおよそお互いを知っています)。大まかに言って、彼らは、彼らが専門家である言語と他の言語で1つのタスクのパフォーマンスを比較できることを意味します。そして、彼らはいくつかのスクリプト言語で中程度です。(たとえば、Linuxの人はbashを、Windowsの人はVBAを、Webの人はPHPを知っています)。
私にとって重要なのは、言語よりもアルゴリズムの基本的な知識です。あなたの基礎が上手くいけば、どんな言語でも台無しになる可能性が少なくなります。
しかし、はい、時にはどの言語がどのタスクに適しているかを知ることが役立つ場合があります。たとえば、次のコードはCよりもPascalではるかに高速です。
strcat(A、 "Hello"); strcat(A、 "WOrld"); strcat(A、 "I say hi!");
これは、Pascalが最初の場所で文字列の長さを保存するため、最後の場所に簡単にジャンプできるためです。Cでは、文字列の終端は「\ 0」であるため、実際にはstrcat操作のために文字列全体を走査する必要があります。
プログラミングしている環境によって異なります。以前の仕事では、私の仕事のほとんどはPerlでした。そこにいる間、私はそれをかなり堪能しました。今は、構文をほとんど知らない3つの言語のレガシープログラムがある場所で働いています。新しいプロジェクトでの作業に加えて、それらを維持する予定です。私は今ではどの言語の達人でもありませんが、プログラミングの感覚が良くなったと思います。私はより抽象的に考える方法を学び、最初に全体像を見てから、構文とライブラリを調べて詳細を記入します。