プログラマーとして、低レベルおよび高レベルのプログラミング言語を知っている必要がありますか?[閉まっている]


18

TCP / IPを介してLEDディスプレイをリモートコントロールする作業を行うように連絡を受けましたが、私の経験と準備は主に高レベルのプログラミング言語に関するものです。私はそれについて仕事について私に連絡した人に言って、彼は私に言った:

「自分をプログラマと呼ぶなら、これらすべてを知っておくべきだ」

プログラマは、低レベルプログラミングの詳細を本当に知っているべきですか?または、低レベルのプログラミングは私の専門知識ではないことを念頭に置いて、それを理論的な知識としてブラックボックスの概念として扱うことができますが、必ずしもそれを実行したり、低レベルの言語ソリューションを実装したりする必要はありませんか?


8
高レベルでプログラミングする場合、抽象化の低レベルをマスクする必要あります。そうしないと、何も実行されません。ただし、下位レベルで作業できることは非常に便利ですが、抽象化のすべてのレベルのすべてを一度に実行しようとしないでください。必要はありませんが、必要でない場合は、低レベルの仕事に応募しないでください。

1
@delnan:高レベルで作業する場合、もちろん低レベルの詳細をマスクする必要があります。ただし、プログラミングしているマシンが下位レベルでもどのように機能するかをすべてのプログラマーが知っている必要があると思います。知識はあまり詳細である必要はありません-基本的なコンピューターをゼロから構築する方法を知るだけで十分です。
スケジュール

4
「自分をプログラマーと呼ぶなら、これらすべてのことを知っておくべきです」彼らがあなたをあまりにもひどく望んでいて、彼らがあなたのバックグラウンドの欠如を呪ったなら、何かが非常に間違っています。私は彼らのコメントを全く意味をなさないと無視します。彼らはあなたにあなたの背景を望んでいるか、彼らはあなたを望んでおらず、あなたが持っていない背景のためにあなたを呪うべきではありません。
-S.ロット

3
もう1つのケースは、「うーん、あの弾丸を見逃してよかった!」あなたは本当にそのようなスノッブのために、または一緒に働きたくないですか?
エドワードストレンジ

2
@Schedler-そして、彼らが自分のボードを燃やしていないなら、彼らは完全な初心者です。
エドワードストレンジ

回答:


37

あなたの連絡先は、彼らが何について話しているのかを知りません。多くの言語、方法論、技術などがあり、一人では必要な詳細をすべて十分に知ることはできません。プログラマーとして知っておくべきことは、どのプログラミング言語を使用する必要があるとしても、仕事を成し遂げるために必要なことを学び、解決策に到達するために適用できる問題解決のアプローチを持つ方法です。

知らないことを認めることは大丈夫ですが、直面しているものに関係なく、あなたが望む結果を達成するのに十分なことを学べることを証明することもできます。優秀なプログラマーは、さまざまなプログラミング言語でソリューションを実装できる優れた問題解決者です。

私はあなたのコンタクトがする態度を持っている人のために働いていません。


4
+1:そもそもコメントは意味をなしません。
-S.ロット

アセンブリ専用の開発者がたくさんいて、時間ごとに彼に喜んで請求するでしょう。
エリックReppen

22

「自分をプログラマと呼ぶなら、これらすべてを知っておくべきだ」

私はこの声明に強く反対します。これは、シェフに何かを調理するように頼むようなものであり、運転手にあらゆる種類の自動車を操作するように、または医師にすべての病気を知るように頼むようなものです。

プログラマーになるためには、自動化された方法でタスクを実行するために、何らかの言語でソフトウェアを作成する方法を知っている必要があります。言語とタスクは、シェフが調理方法を知っている料理、ドライバーが操作方法を知っている料理、または医師が診断方法を知っている料理のように、プログラマーごとに異なります。専門家が各職業になりたい方法によって異なります。


2
ええ、抽象化が崩れ、コードがパフォーマンスの問題を示している理由、外部ライブラリがデータをクラッシュ/破損させている理由などについて手掛かりがありません。私の経験では、高レベル言語しか知らないプログラマーはあまり良くありません両方を行うことができる人としての仕事で。
エドS.

4
あなたのポイントがありません。はい、高レベルのプログラマーは低レベルの側面を理解できるはずですが、Linksysルーターのファームウェアアップグレードの書き方を知っている必要がありますか?
maple_shaft

7
しかし、どうやって見つけるかを知っておくべきだと思います。最新のプログラミングの大部分は、何を覚え、何をリファレンスとして登録するかを知ることです。
マイケルK

8

自分の人生でコード行を書いたことがない人のように話されます。これは、引用の半分の時間でそれができるはずだと感じる人と同じ人になります。バカと議論しないでください。

自分の限界を知ることで、はるかに多くの知識と性格を示しました。この人は、彼が何も知らないことについて話します。

すべての大工は、華麗な家具を彫る方法を知っているべきだと思います。パイロットが1機の飛行機を飛行できる場合、パイロットはそれらをすべて飛行できます。


あなたは医者なので、心臓切開手術の仕方を知っておくべきだと言っているので、私は同意します。しかし、実際には、彼はそれを行うにはスペシャリストでなければならないことを知っていますが、プログラミングでは、「すべての強力なプログラマ」として外から見たときに区別が難しいのが違います。
仕事

6

学校のほとんどのCSプログラムでは、低レベルのプログラミングの知識が得られます。たとえば、8088プロセッサを使用したアセンブラクラスがありました(OK ...それで少し日付がわかりました)。しかし、私は、最近の多くの貿易学校がその知識を迂回していると思います-それが真実でないなら、コメントでパイプアップしてください。

要するに、チップレベルで何が起こるかを知ることは常に良いことです-さらに、あなたの高レベル言語は実行されると最終的にそこに行き着きます。

ただし、現在、低レベルのプログラミングが無知であることを知らないため、プログラマーではないことを誰かに言わせてください。現在のプロジェクトでこれらのスキルが必要な場合は、必要なスキルを習得してそれを適用するのに十分な知性または動機が必要です。

クライアントが既にそのようにあなたに話しかけている場合、私はそのプロジェクトを受け入れないことを真剣に検討しなければなりません。


6

人々が「自分をプログラマーと呼ぶにはXを知る必要がある」と言うとき、私は本当にそれを軽deします。本当に?まあ一部の人々は一日中COBOLで働き、それを愛しています。彼らはそれと問題の領域に非常に優れているので、彼らの隣に私たちはすべて偽装者です。

真剣に、人々が直面している問題をクールで面白い方法で解決することを尊重してください。優れた問題解決は背景の多様性に起因することを理解してください。全員が同じ方法で考えることができるように、全員が知っているはずのスキルの想定「チェックリスト」を習得したかどうかではありません。それは私たちが望むものの正確な反対です。皆の「チェックリスト」は異なっていて、そうあるべきです。異なるほど良い。プログラミングは最近の問題解決です。うまくやっている人を尊重し、みんながさまざまな強さでテーブルに来ることを理解してください。これが、チームとしてお互いが効果的に機能するための唯一の方法です。「C」または何かを知っているからといって、この男が本当に素晴らしい人になるのに役立つからといって、それはあなたが


3

これを読むことをお勧めします:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

説明したように、抽象化を使用する場合、下位レベルが常に何をしているのかに影響します。これは、パフォーマンス面、障害の原因、セキュリティ上の理由などになります。

間違いなく、これらのものについて今すぐすべきです。特にasmまたはCPUアーキテクチャの専門家ではありません。しかし、あなたがより多くを知る必要があるときに自分自身を文書化するのに十分なことを知っていることは、確かに、必要です。


たぶん、TCP / IPの仕組みを知っていることを明確にする必要があります=)、私のポイントはTPC / IPを介したソケットのようなものを実装することは私の知識を超えている、私はその場で学ぶことができますか?もちろん、私はそれを学びたいですか?主に、最終的な結果が実稼働環境で完全に証明されるか、所定の時間内にすべての要件を満たしていると確信していないためです。当時、私は高級言語の専門知識のレベルに到達するのに時間がかかったと思います。そして、与えられた時間はすべての落とし穴を知るのに十分だとは思いません。
仕事

これがポイントです:あなたは専門家である必要はありません。しかし、基本を知る必要があります。したがって、使用している抽象化の制限は何であるかを知ることができます-それが最小であり、制限に達したときに自分自身を文書化する方法を知っています。
deadalnix

2

彼の議論は、真のスコットランド人の論理的誤acyの良い例です。

ただし、低レベルと高レベルのプログラミングの違いは言語ではなく、アプリケーションの知識ドメインです。値をtrueに割り当てると、LEDをオンにするか、ウィジェットでマウスクリックイベントを有効にすることができます。言語は気にしません。

たとえば、arduinoでLEDマトリックスを操作するためのこのライブラリをご覧ください。ここではロケット科学ではありません。実際、プログラマーは「低レベルのオハイオ州」を設置しなければ、少しの労力でそれを理解することができます。精神ブロック。


1

各プログラミング言語には、長所と短所があります。いくつかを学べば、プロジェクトを指定したときに何を使用し、どのようにそれを効果的に使用するかについて大きな認識が得られます。

プログラマーとして、特定のPLに特化して、問題を解決する唯一のツールとして使用することができます。また、多くのPLを知ることもできますが、これらの両極端の間に何もないことに特化できます。

「フレーズ」は欲求不満だと言った人かもしれませんが、おそらくあなたが彼と話した唯一の連絡先ではなかったでしょう。

問題を理解し、問題を効果的に解決するために必要なスキルセットを知ることは、プログラマーの優れた特徴の1つです。悲しいかな、あなたには必要なスキルセットがないので、おそらく必要なスキルセットを持つ別のプログラマーに連絡先を紹介することができます。

乾杯、

ward病な


1

理論的な知識を持つことは良いことです。必要なときに低レベル言語を学習できることは非常に重要です。

しかし、「自分をプログラマーと呼ぶなら、これらすべてのことを知っておくべきです」と言えば、誰もがすべてを知ることができますか?彼らがやる前に?


-2

言い換えます

「自分をプログラマと呼ぶなら、これらすべてを知っておくべきだ」

「自分をプログラマーと呼ぶなら、これらすべてのことをすぐに学べるほど十分に知っておくべきです」

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