ツールへの過度の依存は、あなたが怠zyであることを意味しますか?[閉まっている]


29

私はuniでC ++のプログラミングを始めましたが、とても気に入りました。次の用語でVB6に変更し、私はそれを嫌っていました。

何が起こっているのかわかりませんでした。ボタンをフォームにドラッグすると、IDEがコードを作成します。

VBが機能する方法が嫌いだったが、C ++で同じことを行うよりも速くて簡単だったとは言えないので、なぜそれが人気のある言語であるかを見ることができます。

今、私はVB開発者をC ++より簡単だと言って怠け者とは呼んでおらず、多くの新しい言語がこのようなC#のような傾向に従っていることに気付きました。

これは、より多くのビジネスが迅速な結果を望んでいるので、より多くの人々がこのようにプログラムし、遅かれ早かれ、私たちが現在プログラミングと呼ぶようなものはないだろうと思うようになります。将来のプログラマーはコンピューターに自分が望むものを伝え、コンパイラーはスタートレックのように彼らのためにプログラムを書くでしょう。

これは、ジュニアプログラマーの十分な情報に基づいていない意見ですか、それともプログラマーは一般的に怠lazで能力が低下していますか?

編集:多くの答えは、なぜ車輪を再発明するのかを言い、私はこれに同意しますが、利用可能な車輪があるとき、人々は車輪の作り方を学ぶことを気にしません。どの言語でもほとんど何でもできる方法をグーグルで検索できますが、デバッグに関しては半分の言語があなたのために多くのことをしますが、エラーを修正する方法のコードが何であるかわかりません。

それは、プログラマーが怠慢になり、能力が低下するという理論を理解する方法です。


7
「これは、ジュニアプログラマーの知識不足の意見ですか、それともプログラマーは怠け者になり、一般的に能力が低下していますか?」-これはどちらでもないか、両方とも真実です(あなたが言う理由だけではありません)。
ジョンホプキンス

15
誰もタイトルに反論することなくこれに答えることができますか?

コメント者:コメントは明確な説明を求めるためのものであり、詳細な議論のためではありません。解決策がある場合は、答えを残してください。ソリューションが既に投稿されている場合は、投票してください。他の人とこの質問について話し合いたい場合は、チャットを使用してください。詳細については、FAQを参照してください

8
なぜこれは「主観的で議論的な」ものとして閉じられていないのですか...?
BlueRaja-ダニーPflughoeft

回答:


103

いいえ、開発者は怠でも能力も劣っていません。はい、あなたがそれを知っているという意味で、実際の開発の必要性は着実に減少しています。そして、はい、これは企業が迅速な結果を望んでいるので非常に多く、なぜそうすべきではないのですか?

ただし、エンドポイントがあります。一部の開発者には常にニーズがあります。

多くの要件は、異なるプロジェクト間で同じです。あなたが話しているのはUIコードです。ほとんどのUIは、テキストボックス、チェックボックス、ラジオ、選択などの特定のフィールドセットで構成されており、これらをゼロから何度も何度も開発しても意味がありません。そのため、抽象化レイヤーを使用して、その定型コードをすべて削除します。

同様に、通常はこれを挿入、これを削除、これを置換、および同じデータの多数の異なるビューに過ぎないデータレイヤー。なぜそれを繰り返し書き続けるのですか?ORMを発明しましょう。

開発する必要があるのは、開発対象のビジネスに固有のコードだけです。

しかし、その独自性は常に存在します-存在しない場合、ビジネスチャンスがあります-そして常にコードを書く人々の必要があります。

とはいえ、開発者であることにはコードを書くことよりもはるかに多くのことがあることも覚えておいてください。純粋なアセンブリでコーディングする場合でも、Drupalコンポーネントを組み合わせてコンテンツドリブンサイトを作成する場合でも、ビジネスニーズをコンピューターが理解できるものに変換します。

ソフトウェア開発者としての最も重要な部分は、ビジネス要件を十分に理解してコンピュータに説明できることです。

コンピューターに物事を説明するためにどの言語を使用しているかは問題ではなく、できることだけです。そして、これは大変な作業であり、怠nothingなことは何もありません。


3
開発者とプログラマーの間には違いがあります。
レイノス

9
+1。まさに。動作中のソフトウェアはあなたが支払われるものです。コードは、ソフトウェア、アーティファクトを作成する手段です。純粋な「プログラミング」は、ソフトウェア作成の簡単で楽しい部分です。
ジョナスプラッカ

全体に+1。「開発する必要があるのは、開発対象のビジネスに固有のコードだけである」という確信はありません。しかし、私はそれが有効なビジネス戦略であることを認めます。
-SoylentGray

@Chad-あなたのポイントを取ります。私は時々誇張して話します。クランチに関しては常識が常に哲学を無効にしますが、デフォルトの位置「ええ、自分で書きましょう」よりも、ケースバイケースで語られるのは良い位置だと思います。:)
pdr

ビジネスとしての最大の問題は、ソリューションの開発に費やした時間に対する投資の回収率です。上司は、会社が私に支払っているよりも多くのお金を稼ぐのを手伝うことができる限り、私がどの言語で開発したかをまったく気にしません。他のものと彼らは私にお金を失っています。
ダンウィリアムズ

38

彼は油圧レンチを使用しているため、メカニックは怠け者で能力が低いですか?

2人の男のイメージ、ブラッドとピートを例に考えてみましょう。両方とも、毎日タイヤを交換する2つのガレージで動作します。ブラッドは賢い人であり、より良いツールを使用することで仕事をより良く、より早く行えるこ​​とを知っています。油圧レンチを使用すると、より多くのタイヤを交換できます。顧客は短い列で待っています-誰もが幸せです。バードは、このレンチが大きすぎることもあり、異なる種類のネジでは役に立たないことも知っています。

一方、ピートは、油圧レンチは冒asp的であり、ブラッドは「本当のメカニック」ではないと言います。確かにピートはブラッドがすることの半分しかできませんが、彼は「正しい方法」でそれをします。

今、あなたはどのガレージ顧客が選ぶだろうと思いますか?20分かかるもの、または40分待つもの。

プログラミングでもかなり似ています。C ++は優れた言語であり、その目的(主にパフォーマンス)があります。C#のような言語で気に入っているのは、C ++が曖昧なコンパイラ警告、未定義の動作などを好むノイズのないアルゴリズムに集中できることです。開発はますます複雑になっており、昔のメインフレームや最初のPCでは、人間の脳は同じままで、ほとんど馬鹿げています。1つのアプリをクラウド、モバイル、デスクトップで実行できますが、多くの依存関係、セキュリティの問題、その他の問題があります。より複雑な問題に焦点を当てて解決するためのより良いツールが欲しいです。

より良いツールを使用して仕事を終わらせる-それは何の問題もありません。


1
BradとPeteの両方が、タイヤとそれに関係するすべて(ウェンチ、レンチ、ビール)を取り外す方法をまだ知っているので、私はこの類推が機能するとは思わない。
クリストファーホッホ

3
+1すばらしい回答。どのツールを使用しても、それが何をするのかを理解すれば、あなたは自分の仕事を正しく行うことができると付け加えます。反対に、そうしなければ、どの程度の作業がツールによって行われているかは重要ではなく、ある時点で何かを台無しにしようとします。
ヤチェクプルシア

1
@Kristofer:多分、ピートがいくつかの電子機器を知っている方が良いでしょう。Bradは診断コンピューターの使用方法を知っているだけで、O2センサーの劣化を読み取​​りますが、Peteはセンサーワイヤーが少し燃えていることを確認し、メーターを取り出して測定し、電圧レギュレーターが不安定になっていることを認識します。 O2センサーを焼き切ります。
ザンリンクス

@Zanは同じものではありません。@Kristoferデザイナーを使用してコントロールをフォーム要素にすばやくドラッグし、定型的なコードを完成させるからといって、そのコードを後でやりたいように変更する方法がわからないというわけではありません。
jcolebrand

それを置く完璧な方法。
リウォーク

37

それで、私たちは今プログラミングと呼んでいます

あなたは言う:

将来のプログラマーはコンピューターに自分が望むものを伝え、コンパイラーはスタートレックのように彼らのためにプログラムを書くでしょう。

ただ実験をしてください:スタートレックを見て、コンピューターが少し「優雅」でないように命じられていることを解釈してみてください。

  • 紅茶、アールグレイ、ホット->たくさんの蒸気。
  • 茶、アールグレイ、摂氏60度->水たまりと蒸気の雲
  • アールグレイ、摂氏60度->水たまり
  • アールグレイ、摂氏60度、カップ入り->ドロップの入ったカップ
  • アールグレイ、摂氏60度、0.2リットル、カップ入り。->最後に(大丈夫、もっとピックすることができます)

プログラミングを呼び出すとき:「メモリ使用量、ポインターなどを知る」、はい、それはそれほど重要ではなくなると思います(「http、openid、unicodeを知る」がより重要になるので)。

しかし、私の意見では、すべては「偶然の複雑さ」であり、プログラマーとしての本当の仕事は「ビルドマシンに問題を解決させ、タスクを達成するために偶発的な問題を十分に理解させること」であり、その定義により、誰かが会話しているスタートレックでは、コンピューターはプログラマーである必要があります(つまり、現在と同じ美徳を持っています)。


2
@ Raynos:そうだね。特に、これらの人々がチームリーダーであり、「送信するデータがXバイト未満の場合、GETを使用し、さらに多くの場合、POSTを使用する」などのガイドラインを作成する場合は
憂鬱です

8
@keppla-あなたの問題は、チームリーダーがHTTPを理解していなかったことではなく、彼が間違っているという証拠に照らして意見を変えたくないということです(あなたが彼に物事を説明しようとした場合)。あなたはあなたのために働くすべての人よりも多くを知ることはできません-本当の犯罪は、他人があなたよりも何かについて知っていることを受け入れていません。
ジョンホプキンス

3
「ティー、アールグレイ、ホット」は宣言型プログラミングです。合理的な期待に基づいて文脈的に関連する結果を見つけることはコンピューターの仕事です。この種の言語で「熱いお茶」から蒸気を生成することは、プログラマーではなく、コンピューターの設計チームの一部のエラーになります。特定のクエリが入力されない限り、コンテキストに関連するケースを使用する必要があります。
-diadem

1
@Diadem:宣言的であっても、何を宣言するかを知る必要があり、プログラマーとして、私見では、コンピューターが過去から新しいことを推測できるとは思わないでしょう。あなたの願いを解釈するインターフェースはエンドユーザー向けです。
ケプラ

2
@Zan Lynx:たぶんより良い例:誰かが誘ductされるたびにコンピューターに警告する(コンピューターはTNGでそれを気にしていないようです)。「コンピューター:誰かが誘ductされたとき、私に知らせてください」「誘ductされたものを定義してください」、「彼の意志に反して取られたとき」、「意思を定義してください」など。知られているものから未知のものまで、輸送担当者が彼を追い払ったか、シャトルに入ったというログはなく、船はドックにありません。あなたはまだプログラマーのマインドセットが必要です。
ケプラ

23

プログラマーは怠gettingになりません。プログラマーはいつも怠け者でした。 怠zyであることは、仕事の基本的な性質の一部です。問題は、人々が怠beingであることは否定的であると仮定することです。「怠lazな」プログラマーであることは美徳です。

「難しくはなく、賢く働く」という古い格言を思い出してください。これがプログラマーの基本的な動機です。

彼らはハードワークをして気に入ったので、最初のコンピュータを構築し、プログラムされた人はそれをしなかった、彼らがためにそれをやったAVOIDさらに困難な作業を。(計算のページを手作業で行う)

「怠laz」であることは、プログラマーがプログラムを作成する基本的な理由の1つです。なぜこれまで以上に高いレベルの言語、より優れたデバッガーとIDE、シェルとビルドスクリプトなどを書くのか...

プログラマーは、問題や、自分がしていることや考えていることを調べます。

「これを自動化できますか?」「どのくらい時間がかかりますか?」「どれだけ時間を節約できますか?」

私たちは怠け者であるため、これを行います。はるかに楽しいことをすることができたときに、繰り返して退屈な仕事をしたくありません。

プログラマーが怠け者でなければ、単一の新しい言語またはコンパイラーを作成する必要性を見たプログラマーはいなかったでしょう。

プログラマーが「物事を調べる」必要があるため「怠け者」であるという概念に関しては、誰が気にかけているのでしょうか。特定の言語のすべてのニュアンスを学習する(そして何か調べる必要がない)ことは、それが必要なときに必要なものを見つけて使用することであるという仮定は誤りです。さらに、物事を調べるプロセスは学習のプロセスであり、このようなサイトが存在するまさにその理由です。

誰かがハードプログラミングの仕事をしたい場合は、16進数で生のマシンコードを手作業でコーディングするように指示します。できた?もっと難しいことをしたいですか?デバッグに行きます。


19

まず、ガベージコレクターを怠withな言語で使用する人々を呼び出すことは、自動変速機を怠laで車を運転する人々を呼び出すようなものです。IMOそれは少しばかげています。

能力に関しては、プログラミングは以前よりはるかに人気があり平等な仕事です。そうです、知識が不足している多くの新人がいます。しかし、私は突然、有能なプログラマーが少なくなるという意味ではありません。実際、もっとあります。ベルカーブの反対側を見ているだけです。


11
自動車を運転する人は怠け者です、それについてばかげたことは何もありません。かかととつま先を備えたマニュアルは、車からより多くの制御とパフォーマンスを提供しますが、多くのスキルと余分な作業が必要です。
コーダー

11
@Coder:「余分な作業が必要」-高速道路では必要ありません。交通渋滞では必要ありませんが、とにかく利点はありません。
バルテック

2
マニュアルトランスミッションは、高速道路での燃費を改善しますが、ロックアップトルクコンバーターではあまり当てはまりません。
デイブマークル

4
@Daveの実際の最新の電子機器は、平均して実際に自動をより効率的にしています。同じオプションのフォードフュージョンは、ガロンあたりほぼフルマイル以下と評価されました。私はマニュアルがマイクロでもまだ優れているが、全体的に自動がリードしている場合があると確信しています。
-SoylentGray

3
@Coder-マニュアルを運転するのに「多くのスキル」が必要だと思う場合は、手動変速機を備えた道路上の何千人もの無能なドライバーを見て回る必要があります。;)
techie007

15

「はい、知識のない意見のあるジュニアプログラマーは怠け者になり、能力が低下しました」と言いたくなりますが、真剣な答えを試してみましょう。

多くのことが簡単になりましたが、私たちにはさらに多くのものが期待されています。現在、よくできたGUIアプリによく見られる多くの機能を備えたWebアプリを作成しています(タブ付きビュー、編集可能および並べ替え可能なグリッド、Excelエクスポートなど)。私が使用しているツール(ExtJSなど)は、そのようなアプリを作成するのにかなり安価です。

10年前は、このようなアプリを作成することはほとんど不可能でしたが、少なくとも非常に高価でした。しかし、10年前には、HTMLテーブルを備えた単純なHTMLフォームで十分でした。今日、同じ努力で、より良い(少なくともより美しい)結果が可能になり、顧客はそれらを手に入れることを期待しています!

一般に、今日のソフトウェア開発者は20年前のソフトウェア開発者よりも多くの言語を知っている必要があります。当時、CやSQLのようなもので十分でした。今日、私はJavaScript、HTML、Groovy、Java、SQLをすべて同じプロジェクトで使用しています。


+1はい、知識のない意見のあるジュニアプログラマーは怠け者となり、能力が低下しました
SoylentGray

12

C ++ / VBの分割は、私の心の理由でも症状でもありませんが、プログラマーはある意味で能力が低下し、怠になりつつありますが、他の分野では能力が向上します。

GUIビルダーを使用するのは面倒ではありません。ただ違うだけで、手元の仕事のためのツールに関するものです。アセンブラープログラマーがC ++プログラマーを怠zyに呼び出した場合、その点で(正しく)でたらめを呼び出しますが、C ++とVBでも同じことが言えます。VBを使用すると、いくつかの制御を犠牲にして、いくつかのことをすばやく行うことができます。コーディングを開始する際の障壁は確かに低くなりますが、それは怠toとはまったく異なるものです。異なることを学び、異なる方法で適用するだけです。VBプログラマーは、C ++プログラマーが非生産的であるよりも怠け者ではありません。彼らはさまざまな方法で働き、生産します。

広い意味では、一般にプログラマーの教育はこれまでよりも優れています。たとえば、ソース管理を使用しないという考えは、10年または20年前にはそうでなかった今ではほとんどの人にとって非常に忌まわしいものです。同様に、自動化された単体テスト、継続的インテグレーションなどを理解し、使用したい可能性が高いので、その意味で彼らは彼らよりも有能です。

しかし、私が変わったと思うのは、人々が以前の方法で問題を解決する方法をもはや知らないということであり、それはほとんどすべての主流言語に当てはまります。現在、あらゆる問題に対する即答はグーグルであり、それは素晴らしいことであり、95%の時間で動作しますが、そうでないときに何をすべきか分からないプログラマーが多すぎます。

彼らはファンダメンタルズを理解していないわけではありません(彼らは理解していませんが、実際にはそんなに大したことではありません)。把握している。

Googleより前には、選択の余地がありませんでした。あなたのリソースはあなたのチーム、あなたがアクセスできる数十の物理的な本とあなたの脳でした。つまり、問題を見つけた場合、最初のプリンシパルに近いものから問題を自分で解決している可能性が高いので、かなり上手になったか、すぐに失業します。

そして、これはあなたが使用した言語に関係なく真実でした。VBは高レベルであり、多くのことを隠していますが、それは問題解決に関して言えば、実際に対処する必要があることを意味していました。何かがうまくいかなかった場合は、コントロールが足りないため、より創造的になり、一生懸命働く必要がありました。VBプログラマー(そして私は経験から話しています)として、あなたはC ++の人たちよりも多くのことを知らなかったのです。

しかし、最近のプログラマーに対する重大な批判としてそれを見るのはおそらく厳しいでしょう。彼らはスキルを必要としないのでスキルを開発しませんが、必要なときにスキルを拾った人と比べて弱点です。


アルゴリズムが何であるか、またはデータ構造の実装方法が誰にもわからない場合は、すべてがドラッグアンドドロップIDEの「プログラム」であるため、ジョブに適切なツールを使用しているだけですか。
スケイス

@Skeith-仕事に依存しますが、問題を解決するソフトウェアを作成する場合はそうです。
ジョンホプキンス

1
@ Jon-Hopkins、Google依存プログラミングの大規模な増加は、今日必要な膨大な数のAPIに関係していると言えます。そのすべてを追跡するのは難しすぎます。(しかし、本質的には正しい)
ジャロッド・ネトルズ

1
@Skeith-UIの構築は、アプリケーション開発者の平均的な時間の約5%を占めます。他の95%は何をしていると思いますか?設計者は、バックエンドコードをあまり助けません。明らかにストローマンを攻撃しています。ほとんどの人は、仕事に必要なツールを知っています。そうでなければ、採用されません。
モーガンハーロッカー

@Skeith:データベースユーザーは、データベースの実装方法を気にする必要がありますか?もちろん違います; データベースユーザーが使用します。データベースを最適化するために、詳細の一部を知る必要があるかもしれません、それを使用する価値があるために実装する必要はないはずです。また、プログラマーは「アルゴリズム」という言葉の意味を知らないかもしれませんが、それは彼らがそれらを書かないことを意味しません。この用語を聞くずっと前から、アルゴリズムを開発して実装していました。
ニコルボーラス

11

あなたのプロフィールから、あなたは23歳であることに注意してください。私の歯を入れて、これを非常に長い間行っているあなたの年齢の約2倍の誰かからいくつかの視点を教えてください:

以前は、ネットワークがあったとしても、計算能力、ストレージ、ネットワーク帯域幅から始めて、すべてがはるかに少なかったということでした。これらの不足は、あなたが合理的にできることを制限し、すべてを頭で包むことをはるかに容易にします。今日実行しているソフトウェアは、25年または30年前に使用したものよりもはるかに高い機能を備えており、これらの機能により、さらに多くの機能が提供されます。そのため、1人がすべてをきめ細かく理解することは非常に困難です。その一部は、物事が複雑さを増し続けるという事実に関係しており、その一部は年齢の副作用に関係しています。

コンピューティングエコシステムは、生物システムのようになりつつあります。人間は単細胞生物よりも複雑であり、私たちの一部は、何かをするのが上手くいくには専門化する必要があります。私の脳細胞は非常に頭のいいことに優れていますが、腎臓に突っ込んで腎臓のことをすると予想されたら失われます。同様に、デジタルシグナルプロセッサを作成するのが得意な人は、フルテキストインデックス処理がどのように機能するのかわからないかもしれません。しかし、両方とも少し進化し、必要に応じてそれを理解することを学ぶことができますが、あなたが自分自身を広めることができる範囲には限界があります。

...誰も、それが機能するまで、機能しないことを気にしません。

仕事が必要なときは、使用しているツール(ライブラリ、RDBMS、サブシステム全体など)が正常に機能するという信頼を得る必要があります。経験がもたらすものの1つは、ツールを使用して障害を見つけ出し、問題を修正してから元の状態に戻るために、どのウサギの穴を駆け抜けるのかを選択する機能です。

今、私はVB開発者をC ++より簡単だと言って怠け者とは呼んでおらず、多くの新しい言語がこのようなC#のような傾向に従っていることに気付きました。

それはすべて視点の問題です。私はC ++が登場するのを見て回りましたが、その傾向も同様です。C ++はCよりも作業を簡単にし、Cはアセンブリよりも作業を簡単にし、アセンブリはオペコードを手で書くよりも作業を簡単にします。多くのアセンブリを作成し、ゼロから手作業でいくつかのものを組み立てた人は、C ++プログラマーとして、「簡単だ」という道を3ステップ進めます。


1
+1は、視点の問題だと指摘します。私がUNIXが最初にBell Labsから出てきた頃、「C」のような高レベル言語がオペレーティングシステムを記述する古代の難解な芸術を馬鹿にしていたことをかなりの量の「tsk tsk」がありました。ダメ。ツールが改善され、心の通らない簿記が行われるようになると、節約した時間を使用して、より困難で微妙な問題に取り組むことができます。
チャールズE.グラント

6

私が長い間維持してきたものは次のとおりです。

Visual Basic言語の最大の長所の1つは、 初心者が多くの有用なことをかなり迅速に習得できることです。

Visual Basicプログラマの最大の弱点の1つは、 多くの有用なことをかなり迅速に行うことを学習し、その後、学習を停止することです。

プログラミングの最初の演習を教えるとき、クラスの最初の日は、NOTEPADでアプリケーションをビルドし、VCCまたはVBCを使用してコンパイルする方法でした。はい、これらは私たち(プログラマー)が日常的に行うことではありませんが、「F6」を押すと何が起こるかを理解する必要があります。

プログラマーは(一般的に)ツールからより多くのことを期待するほど「怠け者」になっていません。1日に10,000回「get / set」と入力する必要はありません。VisualStudioと、Code SmithやResharperなどの他のツールが、すでにわかっていることを実行してくれるので、理解に力を注ぐことができます。 「新しい」ことを行う方法。それは私を怠lazにしません、それは私を「革新的」にします。

プロの開発者として、私たちはホイールを再発明する「時間を浪費する」べきではありませんが、使用するホイールを作ることに何が必要かを明確に理解する必要があります。これらは、学生開発者として私たちが「すべき」ことです(しかし、残念ながら、そうではないことが多いです)。開発者が一部の「ブラックボックス」テクノロジーを理解していないと、実際には「能力」が低下します。ほとんどの開発者は、ODBCドライバーがどのように機能するかを「基本的に」理解するだけであり、それが何を行うかを単に理解しています。有能なドライバーになるには、トランスミッションがどのように機能するかを知る必要がありますか?私はそうは言いません。これを知ることで、私はより有能な車の所有者になりますか?


4

Rapid Application Development(必須のWikiリンク:http : //en.wikipedia.org/wiki/Rapid_application_development)の必要性は、開発者が実装する方法を理解する必要がないため、開発者がより少ないコードを記述し、より新しい開発者が理解することを意味します。注目すべきより高いレベルのものがあるため、リンクリスト。

私は肉を捕まえ、殺し、皮をむき、肉屋で肉を治すことができず、階下のカフェの男ができることを疑いますが、ビジネスの男が知らない開発者からアプリを得るのと同じように、私はまだ彼からベーコンサンドイッチを手に入れますポインター(私のような!)


4

偉大な科学分野は他の巨人の肩の上に立つ巨人の例であると言われています。また、ソフトウェア業界は、他の小人のつま先に立っている小人の例であると言われています。
—アラン・クーパー

優れたソフトウェア開発者は、車輪を再発明する人ではありません。彼は彼の前に構築されたツールを使用することができます。彼は何百回も書かれた同じ古い退屈なものを書き換えるのに時間を無駄にせず、すぐに退屈になり、おそらくすでに高品質のバージョンに存在しています。
既に丸い石のディスクがバンドルされている言語を彼らに与えれば、車輪の再発明にあまり時間を費やさない可能性が高くなります。Cで記述されたすべての文字列コピールーチンに対して1セントを獲得できれば、ソフトウェア業界全体を購入できる可能性があります。

怠azineは、実際にはプログラマーの3つの大きな美徳の 1つです。あなたが言うツールは、冗長性と退屈を減らし、それによって生産性とモチベーションを高めるために、優秀なプログラマーのために優秀なプログラマーのために構築されました。実際、このようなツール、単純化されたプログラミングの側面をより深く理解することを妨げるため、初心者に悪影響を与える可能性があります。


4

いいえ、あなたは年を取りました。

冗談ではなく、あなたが経験しているのは、開発者にとって一種の通過権です。最初の高レベル言語がアセンブリに取って代わって以来ずっとあります。当時、ASMプログラマー全員が同じことについて不平を言っているのを聞いたことがあるでしょう。5年後、すべてのRuby on Rails開発者は、新しいツールのさらに別の部分がいかに怠け者であるかについて不平を言うでしょう。

このリフレインは、マシンが私たち全員を破壊するまで繰り返されます。「テクノロジーXが開発者を、私がいつも使ってきたテクノロジーZよりも怠andで悪くしているように見えますか?」

良いニュースは、コンパイラーが長い道のりを歩んできたにもかかわらず、人々は多くのことのためにアセンブリーとCおよびその他すべての古いスターウォートを必要としています...最先端の技術革新の大部分ではありません。その最先端になりたい場合は、スキルセットを更新することをお勧めします。


+1:「戦車と弓矢で今日の怠け者の子供たち。私が若者だったとき、私たちは短い剣で戦いを戦い、戦場に出入りしました。そして、それは両方の道を上り坂でした。」-クセルクセス1世、ペルシャ皇帝、紀元前473年
ボブマーフィー

3

私の経験から、「はい」と「いいえ」ですが、それは言語のせいではありません。開発者自身のせいです。私は、正しいことをしたり、自分自身を改善したり、彼らが長年行ってきたがらくたをかき回す以外の何かを実際に行うことに何も気にしない多くの開発者と仕事をしてきました。これらの人々を向上させようとするのは、レンガの壁に話しかけるようなものです-半分の時間は、彼らが過去に使用したことのないもの、または生産性を向上させることができるものに「チャンスを与えたくない」ものについて無知です。

より高度な言語は問題ではありません。この職業を絶えず進化する工芸品として扱わないのはプログラマーです。新しいことすべてを熟知している必要はありませんし、新しい時流に飛び乗る必要もありませんが、少なくとも自分のやっていることを良くしようとするべきです。

具体的な例として、私は.NET開発者です。私は有能な.NET開発者がLINQ、Entity Framework、WPF、MVCなどのことを知っいることを期待しています。彼らはそれを使用したり、職場でそれをプッシュしたりする必要はありませんが、少なくとも「これは存在する」という理解は、私が頻繁に見ている絶対的な無知よりも優れています。


2

私は今仕事で約4年間コーディングしているだけで、ほぼ完全にc#でした。カレッジとユニでC ++を学びましたが、今はC ++でできることはあまりありません。

したがって、GUI開発の場合は怠zyに見えるかもしれませんが、その部分のコーディングに集中するのではなく、アプリケーション自体のロジックの開発に集中できるとは考えられません。

そのため、能力が低下するのではなく、おそらく通信や分散システム(クラウドコンピューティングやSOAなど)に焦点を移しています。これは中間プログラマーからの同様の考えかもしれませんが。


2

おそらく、プログラミングの仕事に参入する際の障壁が年々低くなっているのは事実でしょう。たとえば、主にソフトウェアやアーティストを専門としないエンジニアは、スクリプト言語を使用してコードを書くことができます。

これは、幅を考慮すれば、能力レベルが実際に向上したことを意味します。アーティストがプログラムできるということは、芸術的なスキルを持つプログラマーが増えていることも意味します。


1
私がプログラミングを意味する能力によって、数学以外のすべてのスキルは無関係です。
スケイス

3
@Skeith-「プログラミングを意味する能力により、数学以外のすべてのスキルは無関係です」-これはとても間違っています。過去30年間における業界の最大の改善点の1つは、コミュニケーションスキルが今や絶対に重要であると理解されていることです。基本的に優秀な数学のスキルを備えたプログラマー、または優れたコミュニケーションスキルを備えたプログラマーを提供してください。
ジョンホプキンス

+1 @Jon-完全に同意します。ラムダ計算とalaphabetスープ以外で何も顧客に話さないプログラマーは、大部分の事柄で価値がありません。
モーガンハーロッカー

1
@Skeith:それで、あなたはプログラミングと数学を知っていれば良いプログラマになることができますか?あなたはどんな世界にいますか?コンピューターの使用方法、顧客や他のプログラマーとのコミュニケーション方法、ドキュメントの書き方などについて知る必要があります。知っている必要のないのは数学です。確かに、数学とプログラミングの間にはある程度の重複がありますが、プログラミングの部分を知るだけで十分です。
マーティンVilcans

大学にいたとき、私はビジネス微積分のクラスを取りました。決勝では、私は最初に終了し、100を得ました(先生はすぐに私を採点しました-彼は私が非常に早く完了したことに感銘を受けました)。しかし、私はソフトウェア開発者としてゼロ数学を使用しています。私が使用しているのは、ビジネスドメインを理解するためのロジックです。プログラミング言語は十分に進化しており、英語を上手に書くことができれば、上手にコーディングできます。警告:あなたがしているプログラミングDNAベースのため、英語をよく書くことwetware、難しいプログラミングより..です
クリストファーマハン

2

「プログラマー」と「本物のプログラマー」には違いがあります。HTMLをプログラミング言語とは呼ばないでください。しかし、多くの「HTMLプログラマー」がいます。皆さん(プログラマー/開発者)は同僚と経験を積むことができます- 「インターネットをオフにします(実際には検索エンジンの使用を許可しないでください」)。仕事なし。彼らができることは、たとえば、テキストで検索する必要がある場合、「 '%language_name%'でテキスト検索」する必要があることを知っているだけです。彼らはこれに答えることができません-ボイヤー・ムーアとクヌース・モリス・プラットのアルゴリズムの違いは何ですか。

IMO、プログラミングとは、問題を解決することを意味し、「STL」やその他の重要なことを備えた最小限のプログラミング言語として非常に優れていることを知っています。プログラミングは芸術であり、一種の人生であり、誰もができることではありません。

必要以上の皮肉で申し訳ありませんが、この記事は私よりも良いと思います。

私が間違っている?

UPD:主要かつ重要なことは、アルゴリズム、データ構造などの基礎知識です。今日のライブラリが誤って削除された場合に備えて、ライブラリ/標準関数などを実装できるのは何人ですか?IMO、プログラマーは開発済み/十分にデバッグされた「エイリアン」コード(ライブラリ/フレームワーク/など)を使用する必要がありますが、常に車輪を再発明できるはずです!


6
これに関する私の唯一の問題は、私がプログラマー(Web / HTML /スクリプトではなく、適切なプログラマー)として20年間働いており、Knuth-Morris-Prattアルゴリズムについて何も知らないことです。ほとんどのプログラマーにとって、この種の理論は日々の生活に影響を与えません。このようなものはライブラリにバンドルされているからです。
ジョンホプキンス

2
私が使用している標準ライブラリには、数千のクラスと数十万のコード行があります。ドキュメントなしですべてを再実装できるはずだと言っていますか?そうでない場合は、車輪でなくなる前に何かがどれだけ大きくなるかを明確にする必要があります。
ピーターテイラー

6
人間には、これまでに発明されたすべての車輪を再発明する方法を学ぶのに必要な寿命も、発明されている車輪を再発明する方法を学ぶこともありません。
マッケ

3
@Dehumanizer:訓練を受け、世界を救うためにCコンパイラ以上のものを手に入れることを望んでいます。そうでなければ、とにかく台無しになります。(ところで、なぜCコンパイラーなのか?なぜUSBスティック、オシロスコープ、9Vバッテリーだけではないのか、真剣に....)
Macke

1
コンパイラーをオフにするだけで、REALプログラマーがマシンコードをファイルに直接入力する間、ほとんどの人がただ座っているだけです。
フィリップ

1

VBの使いやすさ、および怠zyなプログラマーがVBを選択していることについて:

VBは使いやすいという1つの大きな神話に囲まれていると思います。この神話はもともと幾分真実でした。恐竜が地球を歩いていた1991-1994年頃には、VBとDelphiの2つのRADツールしかありませんでした。これらは非常に似ていましたが、これに注意してください:DelphiとVBは同様に使いやすいです!それらの唯一の顕著な違いは、VBが完全に非論理的な構文を持ち、信じられないほど遅いプログラムを作成したことです。

C / C ++ GUIは、MFCまたはWin APIで作成されました。そのため、VBは確かにMicrosoftの代替よりも使いやすかったです。それから噂の工場は次のようになりました。

  • VBは、Microsoft C / C ++ / Win APIよりも使いやすいです。->
  • VBは使いやすいです。->
  • VBは使いやすいです。->
  • VBが最も簡単です。

Pascalは正気で論理的な言語であるため、Delphiは簡単ではないにしても、いつも同じように簡単でしたが、このうわさが続きました。

その後、90年代後半、ボーランドはDelphiに相当するC ++:C ++ Builderをリリースしました。現在、3つの同様に簡単なツールがありました。この頃、VBを使用するための残りのいくつかの合理的な議論は死にました。しかし、神話はまだ生き続けていました。「VBが最も簡単です」。

その後、Javaが登場し、Java用の(およびJ ++と呼ばれるMicrosoftの大失敗版用の)RADツールもいくつかありました。それでも、VB神話は生き続けました。

その後、MicrosoftはC ++もRADでサポートするようになり、C#も思いついて、.NETと呼ばれる1つの大きなグーにまとめました。VBの神話はまだ存在していたため、古いVB開発者をだましてC ++またはC#の代わりにVB.NETを使用することができました。VB.NETは以前のVBバージョンとまったく互換性がありませんでしたが。

今日、VBは完全に冗長な言語です。RADツールは、他のRADツールほど簡単ではありません。言語の構文は実に恐ろしいので、実際には悪いプログラム設計と悪いプログラミング慣行を助長するほどひどいものです。


おかげで、今私は理由を追加することにより、VBの私の憎悪により正当に聞こえることができます
Skeith

1

「プログラミング」の旗の下にまとめられた非常に多様な活動があり、スケールの「技術者」の終わりに関与する労働者の数が増え続けています。特定の問題を解決してPHPでWebサイトを作成するために、コンパイラーを記述したり、一連のアルゴリズムの中から選択したりする必要はありません。業界/社会では、(明らかに)Webサイトを作成する多くの人々と、より困難な問題に取り組んでいる特定の数のプログラマーが必要です。2番目のグループは全体として怠laでも無能でもありません。さもないと、飛行機が炎上し、ATMがランダムな量の現金を送り、X線装置が致命量の放射線を送り、金融市場が猛威をふるいます。その最後のものについて:-)


1

私が他のすべての答えが一目見ているだけだと思う​​この側面は、これが単に低レベル言語から高レベル言語へと向かう一般化された傾向であるということです。

はい、ソフトウェアの業界は低レベルの言語から高レベルの言語に移行しています。より良いツールを構築する限り、常にそうであり、今後もそうするでしょう。はい、これは怠gettingになると考えられます。今日の標準では基本的なことをするために本当に一生懸命に働かなければならなかったからです。しかし、私は能力が劣るとは言いません。コンピテンシーは、単に実装から設計に移行しています。

低レベル 多少主観的ですが、低レベルでは、ハードウェアにより近いところで作業しています。手持ちや意図の仮定が少なくなります。基本的なツールが提示され、物事を成し遂げるのはプログラマーに任されています。低レベル言語はもちろん最初に登場し、通常は古いガードのツールです。高レベル言語は開始時に存在していなかったためです。低レベルの開発は常に行われます。しかし、私はアセンブリでウェブサイトを作りません。

高レベル高レベル の目標は、基本的な機能を自動化し、プログラミングを簡単にすることです。これにより、新しいプログラマーのエントリの水準が下がり、処理が高速化され、多くの場合オーバーヘッドが発生しますが、データの表現方法と処理方法が標準化されます。文字列を検討してください。初期の頃は、誰かがazに1-26を使用し、5ビットのみを使用し、単語のサイズを知る必要がありました。その後、ASCII標準が開発され、ターミネータ文字を含むC文字列が作成されました。これで、バッファオーバーフローを回避するためのものを処理するオブジェクトと、エスケープ文字を許可しない特別なサブタイプができました。またはループ。「for」ループは、「while」ループよりもわずかに高いレベルです。そして、「while」ループは、実際にはGOTOを呼び出す構造化された方法の単なる表現です。

また、

将来のプログラマーはコンピューターに自分が望むものを伝え、コンパイラーはスタートレックのように彼らのためにプログラムを書くでしょう。

未来へようこそ!それはまさにコンパイラが行うことです。昔は、人々はマシンコードを手で書く必要がありました。これで自動化され、マシンコードの記述方法をコンピューターに伝えるだけです。


1

プログラマーが何をする報酬を得るのか見失った道のどこかにあると思います。

私たちの成果物はコードではなく、機能するソフトウェアです。

私たちは、手作業で作られた「職人技」のおかげで、手切りアリが何らかの形で特別な価値を与える家具を構築していません。

コンピューターのビジネス上の問題を解決するために報酬が支払われます)。同じ製品をより短い時間でより少ないお金で提供できる場合、C ++プログラムは構築がより複雑であるという理由だけで優れているという見せかけをやめるのは私たちの義務だと思います。


*肥大化したソフトウェアです(時々)
kagaliさん

0

(コアプログラム開発者/開発者数)の比率は、次の理由で減少しています。

  • ツールは簡単になっています。これは、同じ問題に必要な人材が少ないことを意味します

  • 人々はITテクノロジーに慣れてきており、これはカスタマイズされたツールにお金を使う気があります

  • コンピューターサイエンスの文学は指数関数的に成長し、専門性と分業が増加しているため、すべてについて話す「アリストテレス」の人々はいません(実際、抽象化レイヤーのためにすべてを知る必要はありません)

  • より多くのジョブが提供され、フィルターが緩められます

  • 生活のあらゆるサイクルでより多くの自動化が必要であり、需要が増加し、供給が十分ではありません

  • 人口に対する開発者の割合は増加しています。

    コンピューティングは現在、よりオープンな領域になっているため、人々は怠にならず、能力が低下していません。


0

多くの答えが、なぜ車輪を再発明するのかを述べており、私はこれに同意しますが、車輪が利用できるとき、人々は車輪の作り方を学ぶことを気にしません。

どういうわけか、車輪がまだ作られているという事実によって、あなたはあなたの全体のポイントを弱体化させています。あなたの意見はわかりますが、どの分野でも、それを続けるために低レベルのものに興味を持っている人が十分にいることに気付きました。たとえば、Qtを使用してGUIを構築しています。そのツールは魔法によってもたらされたのではなく、人々は低レベルのものと私が行うものとの間のリンクを開発しました。低レベルのものを理解する人が少なくなります、はい。少数の人々が自分の食べ物を殺したり、自分の車を修理することもできますが、社会は何とか生き残ります。


0

1940年代のコンピューターが配線される前は。その後、Von Neumanは、保存されたメモリロケーションのアイデアを思いつきました。MITのプログラマーは、自分の取引をあまりにも簡単なものに落とすと思っていたに違いありません。その後、アセンブリ、FORTRAN、ada、C、c ++、javaのようになります。ポイントは、言語のポイントはさらに抽象化できるようにすることです。それが常に目標であり、それがc ++が成功し、その後javaが成功した理由です。私の最大の利点は、大学がもはやコンピューターについて何も学生に教えていないことです。彼らが自分の手の甲のようなC ++を知らないなら、私はC#プログラマを雇わない。どうして?悪いプログラマーになるのは簡単すぎるため、言語はますます抽象的になります。ポインタ、メモリ管理、動的バインディングなどを理解する必要があります。。彼らが私たちのコードベースに貢献すると私が信じるレベルまでC#を理解する前に、彼らは内部と外部を熟知していました。また、Visual Studioの使用を許可する前に、メイクファイルを使用して苦労します。そうは言っても、私はC#と優れたIDEが大好きですが、適切に理解されていればツールとしては優れています。私の意見では、抽象化は、抽象化される詳細を理解するときに最も役立ちます。これは非常に古い考え方です。詳細と抽象化の関係については、Thomas Aquinasを参照してください。

エントリーレベルの開発者にとって、もう1つの良い練習は、Windows APIを使用していくつかのアプリケーションを作成することです。次に、すべてのフォームがジェネリックウィンドウクラスを継承するオブジェクト指向にするようにします。イベントループをカプセル化し、いくつかの関数ポインタをフォームクラスに戻します。それでは、MicrosoftがSystem.Windows.Formsと呼ばれるこれを既に行っています。楽しむ。

Web開発者になる場合は、いくつかのCGIプログラムを作成して、POST、GETなどを理解してから、ページをスクリプト化してもらいます。これにより、ASP.NETとPHPの意味が大きくなります。

ネットワークの下位レベルで作業している場合は、ソケットを使用していくつかのアプリを作成してから、既に実行しているライブラリに紹介します。

これにより、自分たちの問題を解決するためのツールと直観が得られるため、長期的に生産性が向上することがわかりました。

大学はこれを行うことになっていますが、そうではありません。

とはいえ、主に彼らが再帰アルゴリズムとリンクリストの作成を余儀なくされたわけではないので、大学を卒業する価値のあるプログラマを見つけるのがますます難しくなっていることに同意します。また、彼らは通常Javaまたは.NETコースしか持っていなかったため、それらの動作方法についてのいまいましいことを理解していません。それでも、適切に使用すると抽象化は非常に役立ちます。


0

(..)遅かれ早かれ、今私たちがプログラミングと呼んでいるようなものはなくなるでしょう

私はこの点に同意しません。
意識が何であるかを知らなくても、プログラマーの仕事は安全です。

これが、現時点での「思考マシン」の見え方です。

-件名の変更を停止します!
-私たちの愛は特別だと思いました。
-件名の変更を停止します!
-私は主題を変えていません。
-あなたは!私たちが話していることを理解できないあなたの能力について話そうとしています。
-いいえ、近くさえありません。私のお気に入りのビートルズの歌は宇宙全体です。あなたは何ですか?

私は、この点を理解していないプログラマーだけが親切な運命にあると信じています。

例:Dehumanizerの答え:

彼らはこれに答えることができません-ボイヤー・ムーアとクヌース・モリス・プラットのアルゴリズムの違いは何ですか。

そして、「この点」で私が意味するのは、彼らが最良であるコンピューターを上手く試すのは間違っているということです。代わりに、プログラマーはコンテキストを使用してコンピューターを支援し、解決しようとしている問題について話すことになっています。

ツール自体は問題を解決するのではなく、プログラマをより効率的にするだけの場合もあります。

「銃は殺さないで、人間は殺す」というようなものです。


1
私が間違っていなければ、Cleverbotは人々がすでに言ったことを繰り返すだけではありませんか?
アンドリューアーノルド

0

絶対違う。私の経験では、正しい開発ツールを使用すると、品質を犠牲にすることなく迅速なアプリケーション開発が可能になります。実際、「ツールに過度に依存している」ため、ほとんどの場合、品質が向上していると主張します。さらに、開発ツールは学習曲線を減らし、プログラミングにより多くの人々を導くことができます。もちろん、初心者プログラマーの方が多いため、これには欠点がありますが、全体としては、創造的なプロセスを支援し、テクノロジーを前進させます。


0

ツールへの過度の依存は、あなたが怠zyであることを意味しますか?

一般的に、「いいえ」。ただし、大きな注意点が1つあります。

私はuniでC ++のプログラミングを始めましたが、とても気に入りました。次の用語でVB6に変更し、私はそれを嫌っていました。

何が起こっているのかわかりませんでした。ボタンをフォームにドラッグすると、IDEがコードを作成します。

はい、確かに。uniでのあなたの経験は、私が述べた非常に注意すべきことを語っています。

ツールがどのような問題を解決しているかわからない場合、またはツールに問題がある場合にトラブルシューティングを行えない場合、それは大きな赤旗です。この状況は必ずしも怠inessを意味するものではありませんが、おそらく経験不足を意味します。


-2

プログラマーには2つのフレーバーがあると思います。締め切りや生産性向上のために、仕事を終わらせるためだけにプログラミングするプログラマーがいます。彼らは怠け者だったと思います。私は、彼らがコンピュータが「どのように」それを行うのか、「どのように」プログラムがそれを行うのかに「関心がない」と信じています。

それから、私のような情熱的なプログラマーがいます。私のような情熱的なプログラマーは、CPUで何が起こっているかを正確に知りたいです。良い心理学者が人間の頭で何が起こっているのかを理解しようとするのと同じように、私のように、プロゴロジストはCPU内で何が起こっているのかを知りたいのです。そのため、プログラムを学習、分析、分析し、Reflectorや逆アセンブラーなどのツールを使用して、プログラムの仕組みを理解しようとします。


同意しません。さまざまな人がさまざまなことに興味を持っています。一部の人々は低レベルのプログラミングにもっと興味があり、ハードウェアで何が起こっているのか知りたいです。他の人々はより高レベルであり、主にアプリケーションに関心があります。たとえば、facebookのコードを書いている人が、CPUで何が起こっているのか、ドライバーがどのように機能するのかについて懸念があると思いますか?偶然にも、あなたと同じプログラミングの部分に興味がある人は、情熱的な人であり、論理的な基盤がないと言うことです。
チャンス

-3

私は物事が変わるという静かな希望を持っています。CPUは垂直方向にそれほどスケーリングせず、水平方向にのみスケーリングします。また、ARMなどは近い将来にリソースが制限される予定です。

ドラッグアンドドロップ以外のプログラミングの需要が減少する可能性は非常に高く、さらに興味深い仕事が見つかるでしょう。

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