プログラマーは何人のプログラミング言語で専門家になると期待されていますか?[閉まっている]


21

ほとんどのプログラマーは、単一のスタックに特化して他のものを残していますか、それとも複数の言語の専門家ですか?複数の場合、標準はいくつですか?

専門家とは、単に言語の構文を知っているだけではありません-専門家は、常に物事を調べたり本/チュートリアルを読んだりすることなく、自明でないプログラムを書くことができる十分な標準ライブラリ、ツール、環境、構文を知っています。


2
この質問に対する客観的な(または主観的な)答えはないと思います。あなたが専門家であるほど、それはあなたにとってより良いです-あなたが持っているより広い視野。「プログラマが理想的には専門家になるべきプログラミング言語パラダイムをいくつ」という意味ですか?
タロンクス

6
あなたの専門家の定義には同意しません。私にとって、ライブラリ関数を調べる必要があるかどうかは、その言語で慣用的なコードを書くことができるかどうかよりもはるかに重要ではありません。あなたが言語で考えることができるなら、あなたは少なくとも専門家に近いです。
Chinmay Kanchi

1
単語の大部分を辞書で調べて、それらの意味を知る必要がある場合、言語ではどう思いますか?
ブルーベリー

1
@blueberryfields:言語の流Fluさは単なる語彙以上のものであり、基本を超えて、語彙はそのほんの一部です。その知識で何かインテリジェントなことができなければ、関数が存在することを知るのは良くありません。インテリジェントな処理を行う方法を見つけるよりも、関数を検索する方がはるかに簡単です。与えられた関数が存在する場合にどこを探すべきかをすぐに知るのに十分なほどドキュメントを知ることは、十分なライブラリの知識であると言えます。その後、使用するものを正確に覚え、使用しないものを漠然と覚えます。
aaronasterling

2
@blueberryfields:言語/プラットフォームによって、少しの知識が危険なことになる場合があります。人の主張は、心で多くのライブラリ関数を知っているならば、私はその人にも知っていることを期待する、ドキュメントを読む必要はありません:私は何を意味しているすべてのラA、戻り値、例外条件、および落とし穴/警告をレイモンド・チェン心を込めて、本を書いてマイクロソフト/グーグルなどに講義をすることができます。それ以外では、人は多くの面白い小さな間違いをすることになります。
rwong

回答:


33

複数の言語を知ることの主な利点は、直接書くことではありません。他のすべての条件が同じであれば、C#でハッキングされた経験のある人よりも、C、Python、Lisp(たとえば)を知っているC#プログラマと一緒に仕事をしたいと思います。より多くの言語を知っている方が良いということではなく、複数のレベルで、複数の観点から問題について考えることができることは本当に役立つということです。

プログラミングについての考え方を変えないプログラミング言語は、知る価値がありません。-アラン・ペルリス

それは、もう1つの言語をチェックオフしたり、履歴書に載せたりすることではありません。基礎となる概念を十分に理解して、十分なメリットを得るためにプログラミングするだけで十分です。構文の基本を理解していても、それは得られません。

より直接的な答えは「依存する」です。

大企業では専門化することを期待/許可されていますが、上で述べたように、お気に入りのツールを超えて物事を理解することにはまだ利益があると思います。

小さい場所では、本当にそれで逃げることはできません。それ以外の場合は、通常、アプリを維持すると同時にビルドする必要があり、おそらく、実際にアプリをビルドするのと同じ言語を使用してログ/データ変更を実行することはないでしょう。技術的は単一の言語を理解することで逃げることができると思いますが、パフォーマンスが高く、厳密に型指定された(または少なくともアサーション対応)、おそらくコンパイルされた言語が重荷を担い、メンテナンス用のスクリプト言語を持つことの利点セットアップ/スクリプト作成タスクはかなり大きいようです。確かにそれなしではやりたくありません。


3
はい、それは同様に私の地平線を広げる-多くの言語で思考が問題に取り組むために
maz3tt

3
イナイマティが言ったすべてに+1。プログラミング言語をツールと考えてください。はい、私たちは非常によく私たちのツールを知っている必要がありますが、あなたが唯一のハンマーを使用する方法を知っているときにすべてのものは、爪のように見えるかもしれません
はLiviu T.

14

非常に興味深い質問があります:

プログラマーが特定の言語の「専門家」であるべきだとは思いません。私は、プログラマーとして、プログラミング、アルゴリズムの設計、明確なステップで考えることの専門家になることを意図していると考えていますが、プログラミング言語は習得したものです。

「いい」プログラマー、いいかいというと、古典的な「これまで働いたことがない」の背後にあることを恐れずに開発プロジェクトを処理するということは、5営業日以内に言語を学ぶべきです。ベストプラクティス、ツール、およびライブラリは、主に2つの方法から学習します。1つは読書、2つは作業です。コードに対して頭をバウンスするか、たくさんの本を読んでください。

「優れたプログラマーはコードだけを書く」というC#コード、C ++コード、またはJavaコードのない前提に続いて、プログラムの開発を学んだ後、言語と技術はそれほど重要ではないことに気付くでしょう。もちろん、PHPよりもC#をうまく動かす方法を知っていますが、よく学べば、必要に応じてPythonを使いこなすことができます。

あなたのような私のアイデアを願っています!


+1「優れたプログラマーはコードを書くだけです。言語と技術はそれほど重要ではありません」-非常に真実です。
10

Thks、そしてあなたはそれを正解:11年とカウント... :)
デビッドコンデ

3

1つですが、他の人を無視できるという意味ではありません。それらを使用しない理由を正当化するのに十分な知識があるか、制限を知っている必要があるので、適切なときに助けを求めることができます。


3

おそらくあなたの性格に依存していると思います。主題の隅々まで掘り下げて楽しむ人がいます。あなたはおそらくあなたがどんなタイプの人格であるかを理解する必要があるでしょう。私はそれぞれが用途を持っている他の上に1つを置いていません。

前者として、あなたは専門家、第一人者、専門家になります。後者としては、より一般的な用途であり、さまざまな状況で使用される可能性がありますが、場合によっては対象に深く深く入り込むことはできません。




1

SOのポッドキャストでJoelが言ったように、多くの言語を知っており、タスクに適切な言語を使用する方法とタイミングを知っている方が良いでしょう。ある言語で他の言語よりも速くできることがあります。たとえば、命令型言語と関数型言語を知っておくといいと思います。多くの場合、より難しいまたはより難解な言語を学習することで、脳は全体的に優れたプログラマーになるように訓練されます。


1

いずれかの言語の専門家ではないプログラマーがいる可能性が高いのですが、PHP、ASP.Net(C#のような)のようなサーバーサイドテクノロジーを知っている人もいるため、彼らはさまざまな環境を楽しんでおり、状況に応じてさまざまな言語を使用します.NetまたはVB.Net、またはJava、JavaScriptやFlashなどのクライアント側のスクリプト言語の2つ。これは、ここでWebのものを配置するために使用されるハードウェアには一切入りません。

同時に、12言語以上の専門家であるプログラマーがいる場合があります。ほとんどの場合、各言語内で多くのことを習得するためにかなり忠実に勉強しているからです。


1

1つですが、他のいくつかの言語で時々書かれている重要な実世界のプログラムを読むことができなければなりません。ある意味では、プログラマーが専門家であるものは母国語に似ていますが、他の言語を学習して話すことは、プログラマーが他の考え方を理解できるという点で非常に優れています。母国語と同じくらい流fluentに複数の言語で考えることができれば、それは素晴らしいことです。


1

これは良い質問ですが、標準があるとは思いません。通常、私が見たところでは、人々は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操作のために文字列全体を走査する必要があります。


0

プログラミングしている環境によって異なります。以前の仕事では、私の仕事のほとんどはPerlでした。そこにいる間、私はそれをかなり堪能しました。今は、構文をほとんど知らない3つの言語のレガシープログラムがある場所で働いています。新しいプロジェクトでの作業に加えて、それらを維持する予定です。私は今ではどの言語の達人でもありませんが、プログラミングの感覚が良くなったと思います。私はより抽象的に考える方法を学び、最初に全体像を見てから、構文とライブラリを調べて詳細を記入します。

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