2022年、コードに何が問題があるのか?🤷🏻‍♀️

カバー画像

時々あるサービスを使います。そのサービスにいくつかのファイルをアップロードする必要があります(サービスの名前は関係ないですよ。正直に言って、どれも同じですから)。基本的には、僕のハードディスクのフォルダを指定するだけで、その内容がリモートサーバーにコピーされます。そのサーバーはたぶんデータベース関連の作業をしているようですね。ファイルには名前が付けられ、誰がそれをダウンロードするかのチェックが行われます。

このサービスは大規模な企業が所有しているので、そのプロセスも大がかりです。よくハッキングされるだろうから、保護が必要ですし、僕のPCからアップロードしてサーバーに届く間に誰もファイルを改ざんしていないかチェックが要ります。これはわかります。

...ですが、本質的に言えば、いくつかのファイルを登録し、それを読んでアップロードし、接続を閉じてログファイルに全てが上手くいったか、何が起きたかを書くだけです。これには何も複雑なことはありませんし、同様のコードをWininet APIとMySQLデータベースに接続したサーバー上のPHPを使って一から書いたことがあります。もしかしたら、僕のシステムは企業レベルのシステムのように信頼性はなかったかもしれませんが、何十万ものファイルのアップロード、検証、ダウンロード、ログの記録をサポートしました。これは1人のプログラマーが2、3週間あれば仕事にできるんじゃないですか?

今日使っている特別なファイルアップロードツールは、クライアントファイルが合計230MBあり、このプロセスを管理するために2,700のファイルが使われています。

これはタイポのように思えるかもしれませんが、間違いではありません:2,700のファイルと、クライアントからサーバーに数個のファイルをコピーするための237MBの実行ファイルとサポートファイル。これはもはや膨張ソフトや過剰設計ではなく、絶対的で明白な光景の狂気です。

問題は、このアップローダーがおそらく他の大企業が作った似たような現代のソフトウェアと何ら変わりがないということです。ところで、今はエラーメッセージを出して動いていません。

僕はこうしているプログラマーを見たことがあります。どのように進むか知っています。これは単にプログラマーが目標を達成するために低レベルで効率的なコードを書かないからだけではありません。彼らは単に低レベルで効率的で、よく書かれたコードを見たことがないのです。それが可能だということも理解していないのに、彼らにどうしてそれ以上のことを創り出すことを期待できるでしょうか?

安全に、速く、確実にファイルをサーバーにアップロードするプログラムを書くことができます。コード量はその12分の1です。たった1つの小さな.exeファイルです。何百ものDLLが必要なわけではありません。それは可能だけではなく、簡単で、デバッグしやすく、信頼性と効率が高く、本当に機能します。

古いプログラマーたちがコードが肥大化していると愚痴るのは、彼らが時代遅れで不機嫌だからだと思われがちです。そして、僕はそれを理解しています。しかし時代遅れで不機嫌な人たちは、本来あるべきスピードの50%遅いコードや、あるべきサイズの50%大きいコードについて愚痴っているのです。しかしその事態は遥かに進んでいます。我々は99.9%のPC内のコードが完全に無用で、実行されることがないと心から信じるところまで来ています。65個のDLLのパッケージの中のコードは、ただプログラマーがビットマップを保存したいような些細なことに対して、どれだけ簡単にできるかを知らなかったため、問題を解決するために大量の膨張ソフトを入れたがためにそこにあるのです。

言った通り、実際には、若いプログラマーたちを怒るべきではありません。それが彼らが教えられた方法です。高性能であることや制約の中で開発することを彼らは知りません。25歳の女の子がこれについて話すのが変に思えるかもしれませんが、僕には本当に美しいコードを見せてくれた賢いメンターがたくさんいました。父は僕に、1984年の初代エリートは巨大な銀河、3Dスペースコンバット、キャリア進行システム、トレーディング、そして探検する何千もの惑星があったと教えてくれましたが、そのゲームは64KBでした。現代のプログラマー達もこれを聞くかもしれませんが、それと今日我々が持っているものとの間の溝を実際には理解していません。

画像説明

これが僕にとって重要な理由は何ですか?

これが僕にとって心配な理由はたくさんあります。ただ仕事ができないだけでなく、何千倍も多くのコードを使ってタスクを完了する必要があれば、少なくとも機能するべきだということです。しかし、それ以上に、僕の強力なPCの99.9%のCPU時間が完全に無駄にされていることを知るからです。今日のコンピュータはとても速いので、10年前には絶対的な魔法だと思われたでしょう。想像できる何でもが1/60秒で起こるべきです。しかし、Microsoft Surface ラップトップのボリュームアイコンを押すと、遅延があります:マシンは徐々に新しいユーザーインターフェイス要素を作り、どのアイコンを描くべきかを計算し、そしてアイコンが現れて対話型になります。これには時間がかかります。おそらく約半秒、これはプロセッサの時間尺度に換算すると10億年近くです。

今、保守的に言っても、PCのリソースの99%が無駄にされているとしたら、我々はコンピュータのエネルギーの99%を無駄にしています。これは絶対に犯罪です。そしてこれらの経費は何のためでしょうか?タスクマネージャを見ると、神のみぞ知る何かをしている膨張ソフトウェアのナンセンスに気づくでしょう。ただこのブログ投稿をタイピングしているだけです。Windowsには102のバックグラウンドプロセスが走っています。現在、NVIDIAグラフィックカードはそのうちの6つを所有しています。そしていくつかはサブタスクを持っています。何のために?僕はゲームをしていない。ほぼ20年前の父と同じセットのビデオカードドライバー機能を使っていますが、何故か6個のプロセスが必要です。

Web View Microsoft Edgeも、Microsoft Edge自体も、6つのプロセスが必要です。そして僕はMicrosoft Edgeを使っていません。おそらく昨日SVGファイルを開いたみたいで、それで12個の無駄なコードがメモリを消費して、恐らくCPUもポーリングしています。

これは絶対的な狂気です。これが、何も動かない理由です。全てが遅い、毎年新しいスマートフォンを買わなければならないし、これらの膨張したストリーミングアプリをダウンロードするための新しいテレビも同様に、同じくらい悪いコードを隠しています。

個人的には、これは大手技術会社、Facebook、Twitter、Redditなどがこの傾向の最悪の例であるため、これからも悪化するだけだと思います。これらの会社の何千人もの「プログラマー」たちが間もなく、彼らのコードに複雑でバグだらけのGithubのコードをコピー&ペーストするために機械学習を使うでしょう。2つの数字を足すために、32個のDLL、16個のWindowsサービス、何十億ものコードラインが必要になります。

Twitterには2,000人の開発者がいました。正確には、イーロン・マスクが来るまではです。時々、Tweetdeckはユーザーカラムの読み込みを拒否します。これが4年間続いています。僕はその開発者の誰もこれがどうして起きているのか考えもつかないと確信しています。そしてそのコアのコードは、父が言うように、ちょうど膨れ上がり、コピー&ペーストされた****一団です。

リンクからトピックタイトルを提案するとき、Redditはアンパサンド、セミコロン、ポンド記号を処理できません。外の年は2022年です。その会社もおそらく2,000人の開発者を持っています。明らかに、テキストパーサーを正しく動作させることができる者はいません。これらの人々は一体何をしているのでしょうか?

画像説明

昔々、「プログラミングの黄金時代」がありました。メモリやCPUに制限がありました。今日、我々は非常にもったいない効率の悪い穴に生きています。これはとても悲しいことです。

読んでくれてありがとうございます!僕の思いを面白いと感じてもらい、考えるべき疑問を少し持ってもらえたら幸いです。コメントを残していただき、僕の意見に同意するかどうかを書いてください。

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/mariamarsh/whats-wrong-with-code-in-2022-3nbd