すべてがすでに私たちの前に盗まれている

画像



私は多くの人が少なくとも一度考えたことがあると思います-私は遅すぎて生まれました、すべてがすでに開かれている、考えられている、など



デカルト、さらには古代ギリシャのすべての数学者にとって、単純な定理を証明し、歴史に彼の名前を書くことは良いことです。 誰からも遠く離れて(はい、千人単位)、途中でモスクワ州立大学の本館の窓から飛び出すことなく、科学の最前線に到達することができます。



90年代前半の機知に富んだ人たちは、文字通り半回転で数百万の企業を育てました。 時間が経ってインターネットの可能性を発見し、明らかに空いているニッチにサイトを開いた人に適しています。 ブリンとページ、彼らがグーグルを始めたとき、グーグルがまだなかったので。



ジョブズはガレージでコンピューターを組み立てて販売しました。 現在、新しいプロセステクノロジの立ち上げには、インテルに数十億ドルの費用がかかります。



つまり、突破するのは難しすぎます。 あなたが唾を吐くところはどこでも、非常に高い競争。



心強いニュースがあります。 ソフトウェア開発の世界では、これは絶対に当てはまりません。 未解決の問題は道路上に散らばっていて、誰も取ることができません。



これは、ほとんどのプログラム、システム、誰かが必要とするライブラリでは、チケットの数と開発の強度が増加するだけであるという事実によって間接的に証明されています。 つまり、問題の幅は現時点で明らかにされているだけです。 正の導関数。 例:オペレーティングシステムカーネル、一般的なプログラミング言語(つまり、コンパイラ、仮想マシン、標準ライブラリ)、データベース、サイト管理システム、モバイルプラットフォーム用コード、フロントエンドフレームワーク。



グラフィックセクター(ゲームエンジン、レンダリング、これらすべて)については、私はほとんど知りません、私は嘘をつきませんが、トラフィックも多いようです。



もちろん、すでに活発な開発のピークを過ぎたシステムがあります。 それらのコードは、特定のローカル最適化(タスクの)と絶望に達しました;少なくとも何らかの形で改善することは困難です。 例:jQuery、LaTeX、dlmalloc。 ここでは、もちろん、積極的に使用されるものを正確に意味します。なぜなら、不要なたわごとは急いで開発されないということを言うのは意味がないからです。



しかし、このような「黄金」の状態では、顕著な少数のプロジェクトは事実上例外です。



私は繰り返します、波の頂上でさえまだ完成していません。 多くはすでに大規模に決定されていますが、詳細を掘り下げ始めたばかりです。 ゴールドラッシュと比較して、小川から鶏の卵が入ったナゲットはすでに引き出されています(すべてではありませんが)、重量で見るとほとんどの金はまだ洗浄されていません。







クイックソートアルゴリズムは、約50年前に長い間発明されてきました。 ほぼ表面にある最適化(1つではなく2つのサポート要素)は、約5年前に標準Javaライブラリ(おそらく現時点で最も人気のあるプラットフォーム)に実装されました。 私が覚えている限り、標準Cライブラリでは、ソートはまだ最適化されていません。



私のトピック:ハッシュテーブル。 念のため、概要を説明します。知らない人にとっては、これは非常に基本的なデータ構造であり、膨大な数のアルゴリズムであり、プログラムのクラス全体は主にその有効性に依存しています。 多くの一般的なプログラミング言語(同じJavaとC ++を含む)で、ハッシュテーブルは、言い訳なしに気のめいるように非効率的に実装されます。 あなたは今すぐ行くことができ、それらを置き換えると、すべての点で良くなります。



また、私のトピック:データベース。 パフォーマンスの問題と、最も人気のあるベースの宣言された特性(耐久性)との不一致は、長い間代名詞になっています。 この背後には根本的な問題はなく、編集する人がいないという悪いコードだけです。 修正して、合計で数百万ドルを節約できます(当然)。



開発者は、曲がった、安全でない、複雑すぎるプログラミング言語に疲れています。 絶対に普通の人は自分の言語(Rust、Kotlin、Julia)を書きに行きますが、特定のタスクではそれより前に存在していた最高のものであるため、当然ニッチを占有します。 行ってみんなを助けてください、彼らは仕事にdrれています、決して十分な手。



約3年前にAngularJSが存在しなかったことを思い出してください。今では何万人もの人々がそれを使用しています。



私が今日知ったYandexのケースからこの投稿を書くように促されました。彼らのエンジニアは、北部で物理メモリのほとんどを占有する何らかの永続的な構造スピンがある場合、Linuxカーネルの動作を大幅に改善しました。 そして、これはかなり広範囲のサーバータスクです。 馬鹿げた質問がありました。なぜ実際にはサーバーであり鋭利なLinuxに、以前はこの最適化がなかったのですか? すべてが私たちの前で盗まれるわけではないからです。



まとめ



ソフトウェア開発の歴史に自分の名前を入力するには、どんなに哀れなように聞こえても、天才や幸運な人である必要はありません。 これは、数十億ドルを稼ぐタスクや新しい物理法則を発見するタスクとは対照的に、決定論的な結果を持つアルゴリズム化可能なタスクです。



1.ピッキングしたいエリアを選択します。



2.深く進み、何が何であるかを把握します。 基本的に、ソースコードと時間を読み取るスキル以外には何も必要ありません。



3. a。 人気のものへの貢献者になる。 秘密の初期化式を経たり、高額の会費を支払う必要はありません。良いパッチを送ってください。 非常に人気のあるスポンサー付きプロジェクトを含むほとんどのプロジェクトは開発者の不足で窒息しているため、彼らはあなたのために祈ります。 履歴を正確に入力するには、プロジェクトへの影響を徐々に拡大します。 時間が経つにつれて、主要な開発者になります。



3. b。 お住まいの地域の根本的な問題を特定し、解決してください。 あらゆる分野でこのような問題があり、5年後にはそうなるでしょう。 森に行って宝物を見つけられないということではありません。



4. ...



5.利益!



ポイント2から3で何が起きたのかが支払われない場合は、どこかで並行して仕事をし、夕方だけゴールに行かなければなりません。 大規模なプロジェクトが主な作業の補助として始まったときの多くの例。 またはここ: Con Kolivas 、麻酔医(!)Linuxカーネルを開発した人。



All Articles