11

タスクを自動化したり、特定の複雑さを隠したりする、より高度なコンパイラ、言語、およびフレームワークは、最終的に私たちを愚かなプログラマーにしますか?

Jim Cは、次の電卓のアナロジーを示しています。

最近、紙と鉛筆を使って平方根を引いた人はいますか? 計算機を使用するか、お気に入りのプログラミング言語で関数を呼び出すだけです。電卓の機能や機能を知っている人はどれくらいいますか?

では、子供たちに数学の学習を忘れるように言ってみませんか? そのために電卓があるのです。それは本質的に私たちの子供たちを愚かにするのではないでしょうか?

4

30 に答える 30

37

それらは優れたプログラマーを愚かにするのではなく、生産性を高めます。しかし、彼らは愚かな人々にプログラミングを可能にし、彼らが優れたプログラマーであると考えるようにします.

明確化: 私は愚かであることの正確な定義を持っていません. ダムとは、実際にはプログラマーであってはならない、または重要なことを学ぼうとするべきではない人々の一般的なことを意味します。実際にコーディングすることができず、あちこちからコピーするだけの人をたくさん見てきました。ソフトウェアの品質評価は簡単なことではありません。彼らは最終的に、仕事を失うことがないように (優れたツールの存在により) 何とか機能するくだらないソフトウェアを構築し、自分は優れたプログラマーであると考えているため、何も学ぼうとしないでください。信じてください。すべての優れた開発者に見られることが 1 つあります。「彼らは学習をやめることはなく、仕事を完了するために必要なコードの断片だけを学びに行くことはありません。」

これは、IDE が悪いという意味ではありません。私はそれらを愛し、可能な限り開発する必要があると考えています。

于 2009-01-09T15:53:40.693 に答える
17

彼らは愚かなプログラマーを許していると思いますが、彼らは愚かなプログラマーを作りません。

于 2009-01-09T15:54:45.153 に答える
14

自動化された機械を使用して作物を植え、収穫し、維持するので、農家は愚かですか?

優れたタスク自動化は、単にプログラマーをより効率的にするものであり、頭が鈍くなるものではありません。

では、子供たちに数学の学習を忘れるように言ってみませんか? そのために電卓があるのです。それは本質的に私たちの子供たちを愚かにするのではないでしょうか?

電卓は、特定のタスクを実行できるツールです。確かに、複雑な数学や多変数積分はできますが、数学を学ばなければ、特定の時間にそのタスクを実行する必要があることをどのように知ることができますか?

プログラミングと SDK についても同じことが言えます。事前定義されたコードを使用して多くの機能を追加できますが、問題を解決するために何かを記述する必要がある場合、世界中のすべてのツールと自動化は役に立ちません。あります(とにかく、AIはまだそれほど進んでいません;)。

于 2009-01-09T15:53:02.410 に答える
9

平均て、はい。:)

彼らは私たちを愚かなプログラマにするわけではありません。彼らがしていることは、より多くの愚かなプログラマーが存在することを可能にすることです (これは、平均して、私たちがより愚かであることを意味すると思います)。最終的には機能し、何か役立つことを行います。アセンブリで書くときはそれは不可能ですが、たとえばVBで書くときは可能です。(もちろん、経験の浅い人が大規模なアプリを作成し、最終的に貧弱なアーキテクチャの重みで崩壊する場合、WTF スタイルの大惨事が最終的に発生する可能性が高くなります。)

確かに、「ばか」は、ここで使用する刺激的な言葉です。知識が乏しいからといって、愚かになるわけではなく、経験が浅いというだけです。しかし、その点は理解されています。

于 2009-01-09T15:55:47.647 に答える
6

私は、より高速なマシンがプログラマーの能力を低下させると考えています.... 最近では、ほとんどのプログラマーが最適なコードを書くことにほとんど時間を費やしていません。コンパイラは、悪いコードを良いコードに最適化することはできません。

マシンが速いということは、悪いプログラマーが悪いコードで逃げることができるということです。昔は、実際に許容可能な方法で動作するのに十分な速さで実行できるように、コードに手を加えて改良する必要がありました。

トニー

于 2009-01-09T15:57:15.880 に答える
6

Does Visual Studio Rot the Mind? -- Charles Petzold

于 2009-01-09T16:02:24.013 に答える
4

いいえ、

優れたコンパイラーにより、優れたプログラマーは、優れたソフトウェアの設計など、本当に重要なことに集中できます。

于 2009-01-09T15:53:15.373 に答える
4
s/make/allow/

少し口下手: それらはツールです。 道具は何の役にも立たないし、職人を良くも悪くもしない。強力なツールもそうではありません。それらは、特定の職人の能力 (または能力の欠如) を増幅するてことして機能するだけです。

一部のプログラミング ツールは、ソフトウェア エンジニアリングの専門家ではないにしても、少なくともアプリを実行するための参入障壁を下げる効果がありました。動作する (または「動作する」) アプリを作成するために必要な思考の量を短縮することは、両方の方法をカットします: 有能な専門家はスカット作業から解放され、素晴らしいことを行うかもしれませんが、手探りの初心者は、決して決して悪いコードを本番環境に入れることはありません。 「スマート」ツールがなくても機能していたでしょう。後者の効果は、BASIC、VB、PHP、および最近の Web 用の MVC 高速開発フレームワークの評判を形作る上で、おそらく前者よりも大きな影響を与えました。

于 2009-01-09T16:07:21.743 に答える
3

スマートとは、自動化を意味します。繰り返しの仕事をしても頭が良くなるわけではないので、答えはノーです。

電卓の例を使用して拡張してみましょう。紙とペンで平方根を計算する方法は、習得できるプロセスにすぎません。このプロセスを知ったからといって頭が良くなるわけではなく、電卓がなくても平方根を計算できるようになるだけです。

さて、平方根を計算するアルゴリズムを発見したなら、それはあなたを賢い人にします。

私たちのプログラミングツールも同じです。メモリ管理を代行してくれる言語があなたを愚かにするわけではなく、自分でメモリ管理ができるからといって頭が良くなるわけでもありません。

于 2009-01-09T16:57:20.753 に答える
2

スキルの低いプログラマーがこの分野に参入しやすくなる、それだけです。それは良いプログラマーを愚かにするわけではありません。効率を向上させる可能性のあるツールを無視したら、彼らはばかになります。

于 2009-01-09T15:55:37.053 に答える
2

コンピュータは強化装置です。バカはますますバカになり、スマートはよりスマートになります。

于 2009-01-09T15:56:06.600 に答える
2

許可した場合のみ。

難しいもの (私の Tandy 102 ラップトップなど) で学んだ場合は、よりスマートなツールを使用しても、そのモードで考えます。

確かに、ツールに頼って仕事をするのは簡単です。その多くに感謝しています。

たとえば、テーブルソーやボール盤を使って木工を行う方法を人々に教えるのではなく、手鋸やオーガー、または小さなハンドドリルから始めます。そうすれば、電動工具に移行するときに、Something Stupid(tm) を実行しません。

ツールに頼ることは素晴らしいことですが、ツールなしでそれを行う方法を知ることも重要です。

于 2009-01-09T15:57:26.053 に答える
1

平均して、はい、彼らはプログラマーをより愚かにします。しかし、それは単に、プログラミングが私たちほど賢くない人々にとってより親しみやすいものになり、平均的な「賢さ」が低下するためです。

:-)

最新の開発環境の便利さを否定する賢いプログラマーは、おそらくそれほど頭が良いわけではありません。

于 2009-01-09T16:41:31.143 に答える
1

ばか?必ずしも。前に述べたように、よりスマートなツールを使用すると、開発者はアプリケーションを適切に機能させるなど、より重要なことに集中できます。私自身のキャリアからの関連する逸話:

私は熟練した数学者ではありません。私は計算前の計算から抜け出し (もちろん、宿題をしたことがなかったからです)、いくつかの本当に基本的な物理学の公式 (たとえば、摩擦の計算) については少しさびています。これは、私がまったく実践していないためであり、単に使用したことがないためです。

たとえば、導関数を考えてみましょう。関数の導関数を見つけるように言われたら、TI-89 に手を伸ばします。ただし、これはより重要であると私は主張しますが、使用方法は知っています。それがどこで役立つか、なぜそれを使用すべきかなどを知っています。内積は別の例です。3D 空間でサーフェスの鏡面反射光を計算するためにそれを使用する方法は知っていますが、手動で計算する必要がないため、計算する方法はわかりません。

私はそれで自分をばかだとは言いません。練習不足かもしれませんが、同じくらい有能です。

于 2009-01-09T16:57:51.017 に答える
1

いいえ、しかし、より良いプログラムとコードを作成します。

高レベル言語ではスキルが異なります。抽象化についてもっと考える必要があり、心配する API がたくさんあり、人々はソフトウェアに高レベルの品質を期待しています。上記の結果として、プログラマーはさまざまな課題に直面しており、ツールはそれらの課題に対応しています。

于 2009-01-09T15:54:31.737 に答える
1

それらは必ずしもプログラマーを愚かにするわけではありませんが、プログラマーを怠け者にする可能性があります。私は、最初から正しく行うのではなく、いくつかのコードを急いで実行し、コンパイラーに頼ってすべての間違いを見つけられるようにするだけであることに気づきました。

ちなみに、これは推奨される方法ではありません。通常はもっと時間がかかります。

于 2009-01-09T16:10:03.453 に答える
1

私は違うと思いますが、違う考えの人(非常に賢明な人)はたくさんいます

私は本当にこの講義をお勧めします、それは非常に興味深い意見と非常に良いエッセイです

于 2009-01-09T23:41:49.407 に答える
1

わかりました、私が最初に所有した 2 台のコンピューターは、自分で組み立てました。当時は賢明だったが、それが今の自分の時間を有効に使えるかどうかは定かではない. 私は 80 年代初頭にアセンブラーと BASIC を組み合わせてプログラミングしました。

ここで私が理解しているのは、コンテキストが変化したということです。コンピューティングでは、知識の深さを知識の幅と交換する必要があり、それには必要な「ダミングダウン」が伴います。「今日のコンピューティング」がカバーする非常に複雑で幅広いアプリケーションをサポートするために、私たちはより高いレベルの抽象化で作業することも余儀なくされています。一方では、高度に抽象化されたツールを使用して非常に優れたソリューションを提供するドメイン アプリケーション スペシャリストが見られ、他方では、コンピューティング テクノロジ/プログラミングの専門家が、コンピューティング業界全体を前進させる能力を持つ優れたコードを作成しているのが見えます。どちらかの側を愚かだと呼ぶことは扇動的であり、おそらく議論の中で唯一の愚かなビットです.

この文脈で馬鹿にすることは、より多くの聴衆が最新のコンピューターの効果的なツールを利用できるようにすることです。これは良いことであり、筋金入りのプログラマーはそれを脅威と感じるべきではありません。

于 2009-01-09T16:38:41.477 に答える
1

いいえ、それはステロイド(および他のパフォーマンス向上薬)に似たものです-それらは素晴らしいアスリートをさらに良くしますが、私のような人が薬局の薬を全部食べたとしても、100mを10秒未満で走らせることはできません. したがって、神の IDE、言語、またはフレームワークがあれば、より優れたプログラマーになることができます。

于 2009-01-09T17:56:20.773 に答える
0

それどころか、よりスマートなコンパイラーは、コンピューターとの戦いが少なくなり、何かをしようとしている方法についてより多くのことを考えられるようになることを意味します。

アセンブラに苦労している場合は、匿名メソッドを気にすることはほとんどありません。

于 2009-01-09T16:48:42.970 に答える
0

コンパイラー、言語、およびフレームワークの改善により、プログラマーは、十分な学歴または十分な意味理解を持っていると仮定して、より効率的になります。

于 2009-01-10T00:34:20.453 に答える
0

複雑さから抽象化のレイヤーを得ることができるように、よりスマートなツールが必要だと思います。しかし、これらの抽象化レイヤーにアクセスできるように変更できる必要があると思います。プログラマーの生産性は向上しますが、多くの基本概念の概念を簡単に失います。それはトレードオフです... 優れたプログラマーは、プログラミングの基本を理解し続けている人です。残りは「コピー&ペースト」とレゴのプレーヤーになります。

于 2009-01-09T16:34:35.010 に答える
0

私はそうは思わない。より洗練されたツールは、私たちの心を解き放ち、より興味深い問題に集中させます。

于 2009-01-09T15:55:01.050 に答える
0

過去に上記のタスクを実行することを学んだ、または上記の複雑さについて学んだ私たちにとって、それは私たちをより効率的にすると信じています. 私たちは、他の/より重要なことについてより自由に心配することができます. 「当時はどれだけ大変だったか」を忘れるか、今日の新しいプログラマーがどれほど幸運であるかを不平を言う傾向があるかもしれません。

始めたばかりでそのような詳細を学んでいない私たちにとって、それは単に私たちを別の品種にするだけだと思います. ばかげているのではなく、さまざまな問題をさまざまな観点から見ているだけです。

しかし、それはエントリーのハードルを下げるので、プログラミングは大衆にとってよりアクセスしやすくなっています. それが良いことか悪いことかは議論の余地があります。

于 2009-01-09T15:55:01.703 に答える
0

はい、でも構いません。最近、紙と鉛筆を使って平方根を引いた人はいますか? 計算機を使用するか、お気に入りのプログラミング言語で関数を呼び出すだけです。電卓の機能や機能を知っている人はどれくらいいますか?

物事がどのように機能するかを知っておく必要があります。プログラマーが上手になればなるほど、または他のことをしたいのであれば、もっと知っておくべきです。しかし、一日の時間は限られています。

より良いツールは私たちをより良くします。トレードオフは、プロセスをほとんど制御できなくなることです。

于 2009-01-09T15:58:08.047 に答える
0

ある意味で

たとえば、演算子のオーバーロードを作成するツールを持っているため、演算子のオーバーロードを作成する方法を知りません。P/invoke がどのように機能するかを覚えておく必要さえありません。私が持っているツールは、C++ dll プロジェクトを自動的に作成[DllImport]し、C# プロジェクト内に を作成するからです。ClickOnce がほとんどなので、プロジェクトの自動更新プログラムを作成する必要はありません。(そして、それが「ボンネットの下」でどのように機能するかはわかりません。)

そうです、C++ プログラマーが知っている多くの低レベルのことについて手がかりがないので、私はあまり賢くありません。それでも、私はより多くのことを成し遂げることができるので、勝者側にいると思います。プレゼンテーション、品質管理、および顧客が本当に必要としている機能により多くの時間を割くことができます。また、.NET フレームワークを深く掘り下げるにはある程度の学習が必要なので、多少のトレードオフがあります。

于 2009-01-09T15:59:05.097 に答える
0

それらが必ずしもプログラマーを愚かにするというわけではありませんが、私が言いたいのはこれです。今日の時代に開発を始めた人は、私たちのために行われている舞台裏でどれだけ多くのことが行われているのかを十分に理解していません. 最近のプラットフォームには非常に多くのライブラリが組み込まれているため、今日始めたばかりの人は、ある時点でこれらすべてを手動で行う必要があったことを理解していません。

ただし、Intellisense なしでは 1 行のコードを書くことには戻れません :)

于 2009-01-09T16:01:14.187 に答える
0

いいえと思います。

よりスマートなプログラミング システム (コードを自動的に修正するツールのようなものではなく、より高いレベルの抽象化を考えています) IMNSHO は実際には使いにくいです。私が思いついた類推は、それらが長いてことして機能するということです。ショートエンドを強く押して、少し動かすだけで大きな変化が起こります。

何をする必要があるかを理解するのは難しいですが、最終的にそれを行うときにそれを台無しにするのもはるかに困難です.

于 2009-01-09T19:29:54.547 に答える
0

よりスマートな言語、コンパイラ、およびフレームワークにより、プログラミングが可能になります。つまり、まだアセンブリ言語の使用に制限されていた場合のプログラミングの状態を想像できますか? 一体、それをスクラッチします。C または C++ に制限された場合のプログラミングの状態を想像できますか?

于 2009-01-10T00:04:03.887 に答える