プログラミングが簡単な理由

ここでHabréの優れた記事「なぜプログラミングがそんなに難しいのか」を読み、すぐに同情に染まりました。 「なんてこった!」と思いました。 最後に、高額なローファーだと思っている友人に理性的でバランスのとれたテキストを見せて、これを「一日中ボタンを突く」という仕事を親relativeに説明し、学位を擁護した友人に私も牛尾ではないという証拠を提供することができます勤務時間中にひねります。 「なんて素晴らしい記事だ!」と思いました。 最後に、誰かがプログラマーの仕事の本質を理解し、その複雑さを明確な言語で説明しました!



そして、この記事のほんの一部が欠落していました。 真実。





真実は、プログラミングは簡単で楽しいことであり、困難は不自然であり、作業の利点は過小評価されているということです。 そして、そのような記事を書くことでこの不正を修正する価値があると思います。 いいえ、高給、市場の需要、高い機動性についておしゃべりすることはありません。 それはプログラミングに関するものではなく、プログラマーのライフスタイルに関するものであり、それはまったく問題ではありません。 しかし、私たちはメガブレイドではなくHabréにいるので、その魅惑的な美しさと驚くべき力のすべてでプログラミングを見てみましょう!



まず、元の記事のすべての引数をつぶします。 それらはすべて1つの間違った前提から生じており、その正しい言葉遣いによって反証されているため、これはあまり興味深いものではありませんが、どこかから始める必要があります。 これが、記事全体が構築される前提です。「 プログラマーの夢は頭で考えることではなく、何もしないことが最善です







くそー! その記事の著者は本当にそう考えています! 彼は私たちを怠zyであると考えていますが(それでも構いません)、知らないこともあります(しかし、これはすでに許されません!)。 このことから、彼は、世界をより良くするために、考えたり、創造したり、実験したりしたくない、と結論付けています! 聞いてください!



プログラムは、ソースデータを結果に変換するものであり、次の条件に依存します。



  • プログラムの結果は素晴らしいです。
  • 生データは優れています。
  • プログラムは素晴らしいです。
  • ソースデータは正確かつ正確に文書化されます。
  • プログラム自体は定性的かつ明確に文書化されています。
  • プログラムは十分にテストされ、正しく実行されます。
  • 手元のタスクは明らかに詳細です。
  • タスクは明らかに詳細です。




これらの追加条件により、プログラミングは非常に困難になります。




このテキストは、靴のかかとが引っかかって交換する必要があるという靴屋の苦情、または歯痛があり治療する必要があるという歯科医の苦情のように見えます。 くそー、上記のすべてが私たちの仕事であり、これが私たちのパンであり、これは人類が私たちに必要とするものであり、これは私たちが生み出す付加価値、私たちからの利益、私たちが学んだことです。 さらに正確に説明する方法すらわかりません。 プログラマーの仕事は、世界をより良く、より簡単に、より安全に、より速く、より信頼できるものにすることです。 他の人の問題を解決します。 はい、「優れたプログラム」を書くことが私たちの仕事です! そして、はい、それは「優れたテスト」が必要です。はい、正しい初期データを提供する必要があり、それを取得するために別のプログラムを作成する必要がある場合-もちろん、それを取得して作成する必要があります!



プログラムをサポートする必要があります 」と元の記事は述べています。 もちろん必要です! しかし、ここでの難しさは何ですか? それどころか、それは幸せです! 「 ハードウェアは最終的に失敗します。ソフトウェアは最終的に動作します。」 事実:生産される商品やサービスのほとんどは時間の経過とともに悪化し(色あせ、老化、錆、劣化)、毎日改善されるのはプログラムだけです。 。 私たちの作品は生きています! 私たちは彼らに命を吹き込み、育て、支えます。 結局のところ、たとえば、子供が歩くことを学んだとき、それをサポートするのが悪いとは誰も信じていませんか? 私たちは彼に学んでもらいたい、私たちは彼を助けます。 それでは、なぜソフトウェアサポートは何か悪いものとして認識されているのでしょうか?



まったくすべきではない問題を修正する必要があります 」とその記事は述べています。 ちょっと待って そして、直接義務付けられている問題がありますか? すべての問題は望ましくなく、これらの問題を修正する必要があるという事実は、ユーザーをそれらから救います(上記のプログラマーの仕事の意味に関する段落を参照)。 さらに、予期しない問題により、退屈せず、脳を鍛えられます。 毎日同じ予測可能な問題を解決するのが好きな人は誰でも管理人や掘り業者に行くことができます。



新しい知識を得ることなく問題を解決する 」-出版物は私たちを非難します。 新しい知識を獲得せずに問題を解決する方法を想像することはできません。 少なくともこのような問題を解決する過程で、新しい知識を取得せずにそのような問題を解決する方法に関する知識を得ました-これは新しい知識であり、私たちにとって非常に便利です(相互に排他的な長い段落、はい!)。 さらに、関心のある問題を本当に深く理解することを誰も気にしません。 はい、これは常に仕事に時間があるわけではありませんが、ライト兄弟は勤務時間中に空力のニュアンスを厳密に1日8時間厳密に理解していたと思いますか? いや! あなたがプロ、マスターになりたいなら、何かを達成したいなら、自分で働きましょう!



その記事には他に何も書かれていないので、忘れてください。 プログラミングの純粋な利点に移りましょう。



プログラミングの習得が簡単

今日はどうでしょう! 専門職を持つ大学、学校でのコンピューターサイエンス、書籍、オンラインコース、あらゆる情報を備えたインターネット、助言を求められる専門家、実践できる企業があります。 小学校の学年の子供はスクラッチを学ぶことができ、会計士は優れたマクロとユネスコの野生を習得できます。 はい、最終的に、チュートリアルは「24時間以内に何か」がすべての食料品店で販売されます! ええ、たくさんのゴミがあります。ええ、必要なのはそれだけです。読んで、試してみてください。しかし、通常のソフトウェアの不足が書籍、ハードウェア、教師、インターネットの不足によってうまく補われた20年前の状況と比較すると、私たちは楽園に住んでいます! プログラミングの学習曲線は非常にスムーズで、2つのステップで「フクロウを描く方法」はありません。 チュートリアルはすべてprint(「Hello、world」)で始まり、これらすべての条件ステートメント、ループ、関数、クラスなどを介してハンドルで私たちを導きます。 各ステップで、何かを開始したり、チェックしたり、ブレークポイントを設定したり、実験目的でコードを変更したりできます。



プログラミング-論理的で予測可能

2 + 2 =4。OR演算にはこのような真理値表があります。 forループは、この条件で指定された回数だけ実行されます。 そして、それは常に機能します! これらの例外を自分で作成しない限り、「土曜日には機能しません」などの例外はありません。 条件付きifステートメントは、そうでない場合は特にそのような状況を作成しない限り、すべてのプラットフォーム、すべての言語、およびハードウェアで同じように機能します。 信仰に頼る必要はありません-すべてを証明し、検証することができます。 何かを学んだ-あなたはあなたの知識に自信を持つことができます。 魔法も感情もありません。すべてが「正直に」機能します。



プログラマーは数学を深く知る必要はありません

私たちは、数学、離散化、理論、統計、量子力学、弦理論を学ぶことの重要性を賢くあふれさせるのが大好きです。 このナンセンスをやめろ! 数学のプログラマーの95%は、4つの算術演算、パーセント\ルーツ\度を使用し、対数と行列が何であるかを少し覚えています。 それだけです! 残りの5%は科学ソフトウェアの開発者です。つまり、数学は必要な知識ではなく、対象分野(天文台のソフトウェア開発者が天文学を研究しなければならないように)と考えることができます。 一般に、6年生レベルの中等教育は頭で十分です。



プログラマーは、あらゆる種類のプログラミングを知る必要はありません。

長い間、「ユニバーサルプログラマ」はいません。 すべてを知る必要はありません。 フロントエンド開発者、バックエンド開発者、ネットワークプログラマー、AndroidおよびiOS開発者、ゲーム開発者およびデータベースの専門家、組み込みシステムの開発者などがいます。 すべての言語、OS、フレームワーク、パターンを学習するのに人生を費やす必要はありません。 好きなものを選んでください!



プログラマーは生涯学習できます

子供の頃、祖母の村で休みながら、地元の人たちが牛を放牧するのを手伝いました。 その中には、地元の集団農場の「プロの羊飼い」がいました。 彼は40年間牛を放牧してきました。 私はこの職業が本当に好きだったことを覚えています-それは2時間でジュニアレベルまで勉強され、シニアレベル(羊飼い犬の訓練、獣医学の基礎)さえ1年か2年で取られます。 そして、次の38年間、あなたは同じことをすることができます。 今、私はこれを覚えており、恐ろしいです。 人々は、一生ずっと脳を使う必要がないという状況に陥りました。







プログラマーでは、すべてが異なります-私たちは毎日学ぶことができます。 毎日学んだことに対して報酬が支払われます! 新しい知識、実験、教育的、そして実際的な問題を解決する驚くべきプロセス全体が私たちの仕事、私たちの人生です。 もっと美しいものはありますか?



独自のツールを作成します

少数の職業の人々は、自分で作業ツールを作成します。 ほとんどの場合、これらのツールがどのように見えて機能するかについてのアイデアに従って、他の人が作成したものを使用します。 プログラマは自分でソフトウェアを作成でき、実際にそれを実行できます。 Linuxの歴史全体、多くのオープンソースツールがこれを証明しています。 プロプライエタリな開発ツールでさえ、自分が話していることを本当に理解していて、毎日自分で作ったものを使用する人々によって作成されています。 私たちは、移動中に再構築されている電車で、そして同じ電車に乗って、迅速かつ快適にそれをしようと努力している人々によって前進しています。



エラーの低コスト

クラッシュしたローバーやバグのあるX線装置について何かを言う人は誰でも、ほとんどの場合、プログラマーのエラーのコストは低いです。 ええと、ページ上のテキストブロックは「浮いています」、まあ、機能はもう少し長く動作します、まあ、プログラムは例外でクラッシュします。 すべてを修正できます。 私たちは、外科医や橋梁の建設業者とは異なり、ほとんどの場合、間違いを犯し、エラーメッセージを取得し、修正し、そうするふりをする余裕があります。 通常、彼らは私たちを刑務所に入れませんし、合理的な時間内にそれを修正し、将来そのような間違いを避けるための何らかの方法を提供できれば、私たちは間違いのために解雇さえされません。



そして、プログラミングが簡単であるだけでなく、非常に素晴らしい理由について説明します!





私たちはこの世界を変えています

さらに、私たちは誰よりもそれを変えています。 すべて、文字通りすべてがコンピューターに依存するようになりました。コンピューター上で開発され、コンピューターによって制御されます。 一部の職業は完全にコンピュータープログラムに取って代わられ、他の職業は調和的に補完され、他の職業は完全に仮想世界に移されます。 そして、私たち全員がこれを行います、プログラマー! いくつかのボタンを押すと、何かが起こります。 数十年前に幻想的なおとぎ話のように見えたもの。 そして今、それは動作します。 そして、それは(まあ、少なくとも部分的に)私をやった!



私たちは新しい世界を創造します

普通の人は、現実の普通の世界に住んでいます。 プログラマーは、アーティスト、詩人、作家、監督がいる純粋な創造性の同じ宇宙に住んでいます。 私たちの世界は私たちの頭の中にあり、それは美しいです! その中のものは単純かつ論理的に機能し、建築と抽象化の層の城は何の努力もせずに構築され、また再構築されます(そして時には崩壊します)。 さらに、これらすべては、作家と同じ詩人の結果とは異なり、紙上の言葉だけでなく、実際の世界で実際に動作するプログラムとハードウェアにもなります。 踊るロボットを想像できるだけでなく、そのためのプログラムを書いて、このロボットを現実のものにすることができます! 最も純粋な形での創造!



仕事が大好き

あなたのことは知りませんが、私の仕事は大好きです。 複雑な彼女、あなたは言う? おい! 私たちには常に簡単なタスクがあります。 小さい単純な問題に分割することで、複雑な問題を解決する機会が常にあります。 私たちには、最も安価な方法で問題を解決するのに役立つ怠inessがあります。 間違っている場合は修正するテスターがいます。 感謝するユーザーがいることもあります。 ローファーやロジャーになることを許可しない恩知らずのユーザーが常にいます。 多くの場合、仕事をより快適にしようとする雇用主がいます。 勝利と成果があります。 まだまだたくさんあります!







PSこの記事を書いているとき、私はdeja vuの感覚を残しませんでした。 まあ、意識の後ろで何かが回転していました、とらえどころのない考え。 そして、書くことによってのみ、3年前にすでにそのような記事を書いていることに気づきました! 「これは災害です!」と私は思いました。 「Habréでそれについて人々に伝える必要があります。彼らに私のばかをさせてください」と私は思いました。



少なくとも1つのトピックについて書かれていますが、まだ別の言葉で書かれているので、両方の記事を残しています。



All Articles