シチリア島はイタリア南部に位置する太陽が降り注ぐ静かな島です.映画「シチリアの美しい伝説」で紹介されているように、古代の歴史と建築物があり、ITとは関係がないように見えますが、アントリーズの住居です. 、Redis.landの作者。
Redis はインターネットのインフラであり、世界中の多くの Web サイトには Redis の影があります。Redis の人気に比べて、多くのプログラマーは antriez の話を知りません。最近、彼のブログ投稿をほぼすべて読みました。私が学んだ興味深いことと、70 年代生まれの前世代のプログラマーから学べることを皆さんと共有したいと思います。
Antriez は典型的なイタリア人プログラマーではありません. ほとんどの地元の人は退屈だが確実な道を好みます. IT 業界は地元では特に高給の仕事ではありません.新しいものと新しいものを作成します。
10 年前のインタビューで、antriez は、インターネット上ですべての興味深いことを体験できるため、イタリアに住んでいてもプログラマーに大きな影響はないと述べました。
ターゲットが世界である場合、ここにいることはプログラマーにとって大きな制限ではありません。とにかく、最近のインターネット上では、興味深いことが大部分起こっています。
Antriez はキャリアの初めにセキュリティ研究者として働き、その後、組み込み、システム、Web などの分野で開発を行いました. 彼の初期の頃には、Nmap で一般的に使用されているスキャン技術であるアイドル スキャン [1] も発明し ました。
2009 年、Antriez が Web サイトでリアルタイムの統計を行っていたとき、MySQL などの既存のデータベースでは、集中的な統計の作成とチェックのニーズを満たすことができないと考えたため、この問題の解決に着手しました。
Antriez は Tcl を使用して、合計で 300 行しかないLLOOGG Memory DB [2] という名前のモジュール を迅速に展開しました が、目前の問題を解決し、Redis のコア設計、protocol
および list
、およびポート 6379 を含めました!
その後、antriez は新しいバージョンを C 言語で再実装し、それを本番環境に入れ、数週間うまく動作した後、Hacker News に公開し、より多くの注目を集めました.ますます多くの企業が Redis を本番環境で実行し始めました. .
ここで少し話が逸れますが、Redis は最初に Ruby コミュニティで注目され、その後 Github や Instagram などのサイトで Redis が使用されるようになりました。Ruby コミュニティはかつてトレンドセッターでした. たとえば、Git が最初にリリースされたとき、Linus は Ruby コミュニティの人々がなぜ Git をそれほど気に入ったのか理解できませんでした. その後、Rails によって書かれた Github がありました. Ruby は現在少し衰退していますが、Ruby コミュニティが業界のために多くの良いものを発見し、作成してくれたことに感謝しなければなりません。
例えば、私が働き始めた2011年当時は、memcachedの方が成熟した汎用的なコンポーネントで、memcachedのソースコードもよく読んでいました [ 3 ]、しかし、なぜRedisは後ろから来ることができるのですか??
Antriez 氏は、次の 2 つの要点について話しました。
集中的な書き込みシナリオ、特にキャッシュ関連の要件の場合、Redis はコストを節約し、優れたパフォーマンスを発揮します
Redis は単なるキャッシュではなく、異なる形式のデータベースであり、正確さよりも高いパフォーマンスを必要とする多くのシナリオに適しています
プログラミング言語の分野には、モットーがあります。プログラミング言語は、あなたがすでに知っているすべてのものとは十分に異なっていて、新しい抽象化に触れて考えが変わるのであれば、学ぶ価値があるというものです。Redis は間違いなくまったく異なるデータベースであり、データに対する考え方を変えると思います。
Antriez は最初から Redis を単なるキャッシュ コンポーネントではなくデータベースとして扱います. つまり、Redis は memcached ができることを実行できますが、memcached は Redis が実行できることを実行できません。
Redisは、リスト、セット、マップなど、一般的に使用されるさまざまなデータ構造を当然サポートしています.これらのデータ構造により、Redisはさまざまなビジネスニーズに対応できます.Redisは、KVデータベースの新しい時代を切り開いたと言えます.
この話と SQLite の起源は互いに補完し合っています. SQLite の最初のバージョンは単なる Tcl 拡張であり, Git の最初のバージョンはわずか 1200 行です. これはソフトウェア設計の真実を確認しているようです: うまく機能する複雑なシステムはしばしば進化します.ただし、最初から設計された複雑なシステムは機能しないことが多く、通常はパッチを当てても解決できません。
機能する複雑なシステムは、機能する単純なシステムから進化したものであることが常にわかっています。ゼロから設計された複雑なシステムは決して機能せず、パッチを適用して機能させることもできません。機能する単純なシステムからやり直す必要があります。」 – ジョン・ガル
Redis と SQLite はどちらも、1988 年に発明されてから 35 年の歴史を持つ言語である Tcl の影響を強く受けています。Tcl は、構成可能なコンパクトなコンポーネントを設計し、シンプルなインターフェイスを維持するという Unix の設計スタイルを継承しています. Antriez 氏は、彼のプログラムのコンセプトは Tcl に深く影響を受けていると考えています. 特に Tcl のコマンドのスタイルは Redis に引き継がれています All data types can be manipulated as strings
. そして、John Ousterhout は、 EDA 開発における要求を解決するために Tcl を発明しました [4] . インターネットの波が到来する前の 1980 年代と 1990 年代には、EDA はまさに技術分野の宝石であり、多くの技術枝が派生しました. .
Redis のソース コードは、C システム プログラミングのモデルとして使用でき、多くの古典的なデータ構造の実現も含まれています. この Redis の設計と実装[5]を読んで、 その感触をつかむことができます.
その後、Redis は VMWare によって後援され、後に特別な Redis Labs が設立されました。Redis は当初から人気のあるオープン ソース プロジェクトですが、過去 10 年間の提出数のランキングからわかるように、Antriez は主に単独で貢献し、維持しています。
これは不思議な現象ですが、やはりRedisは汎用性の高いコンポーネントであり、Githubでの注目度も非常に高く、様々なシーンから多くの要望が寄せられるでしょう。
しかし、アントリーズのスタイルをよく見ると、それは理にかなっています。彼は、Redis にとって複雑さを回避し、安定性を維持することが最も重要であると考えているため、毎日多くの要求や PR に直面すると、彼はほとんどの場合「いいえ」と答えます。そうしないと、悪循環が発生します Less stable code base, more problems
。
最初の実装で書いたバグは、後で修正するのが非常に困難です。簡単には消えません。基本的に、何かを変更したいが、ソフトウェアを安定したままにしておきたいというプロセスがあります。そのため、何のコードも書かずに、やりたい方法で何週間も考え始めます。
各新機能の導入には細心の注意が必要ですが、Redis のコアコードは 10,000 行レベルに抑えられており、バージョン 4.0 以前はシングル スレッドで実行されていました。
重要なのは設計であり、コーディングと実装は簡単です。
代わりに、この巨大な設計プロセスがあります。しかし、この設計により、半分のコード行を使用して、はるかに単純な方法で、はるかに安定した方法で新しい機能を作成できる場合があります。考えて、考えて、考えて、数日前に最高のデザインのように聞こえたものを見つけました。最後に、おそらくその特定のものが最適であることがわかり、実装を開始します。
これはつまり、人々が「心配しないで、私があなたの実装を手伝うことができる」と言うということです。そして、あなたは言います、いいえ。私を助けたいのなら、設計作業により多くの時間を費やさなければなりません。コードを書くのは簡単な作業です。難しい作業は、何をどのように行うかを理解することです。
これは、私たちプログラマーがより高いレベルに進みたい場合に認識しなければならない側面でもあると思います.コーディングに時間をかけすぎるのではなく、要件と問題について考え、良い設計を見つけることに時間を費やしてください. .
プロジェクトを長期間維持することも退屈に感じます. antriez は、興味を持ち続けるために、しばらくデータ構造を行い、数週間後にクラスターに切り替えるなど、さまざまな分野を切り替えようとします. Redis に加えて、彼はより多くの サイド プロジェクトを行っています[6] :
1) Load81、子供用プログラミング環境。2) Dump1090、ソフトウェア無線 ADS-B デコーダー。3) Javascript レイ トレーサー。4) lua-cmsgpack、Lua 用の msgpack の C 実装。5) linenoise ライン編集ライブラリ。Redis で使用されますが、最優先事項ではありませんでした。6) lamernews、Redis ベースの HN クローン。7) 小さな Git Web インターフェイスである Gitan。8) シミュレートされたアニーリングを使用して形状、画像を進化させます。9) Disque、分散キュー (現在進行中の作業)。
プログラマーのサイド プロジェクトは探索の方法であり、精神的な休息の方法でもあり、プログラマーは通常、サイド プロジェクトでより創造的に見えます。
ライターが小説を書くときに最善を尽くすのと同じように、有名な会社でコピーライティングの仕事をしているときにはそうではなく、プログラマーはオープンソースのサイド プロジェクトにより多くのエネルギーを費やす可能性があります。勤務時間中、プロジェクトの別の部分を書いている間、彼らは愚かで、退屈で、無意味だと感じます。
これらのプロジェクトをざっと見てみると、それらはすべて C で実装されており、統一されたスタイルを持っています。
アントリーズは小さなプログラムを書くのが好きです, 複雑さを制御できるからだけでなく, 短いプログラムには独自の美しさがあるから. 魅力的な小さなプログラム [ 7] , 古い世代のプログラマーは、厳しい制限の下で自分のスキルに挑戦するのが好きです, など .楽しみのために、1000 行未満のコードでエディタを作成します[8]。
このような大きな影響を与えるオープンソース プロジェクトを独立して維持することは、大きな心理的プレッシャーになります. ユーザーは直接支払うことはありませんが、メンテナーは発生した問題を修正する責任があります. この種のプレッシャーは、必ずしも技術的なものではなく、社会的なものでもあり、たとえば、コードや API でマスター/スレーブを置き換えていないとして、彼を非難し続けています。
Antriez はかつてインタビューで、Redis を維持するために自宅で小さなチームを作りたいと述べていましたが、その後、信頼できる C プログラマーを見つけるのは難しすぎて、システム プログラミングを喜んで行う人はますます少なくなっていることを嘆いています。
この記事で、Antriez は オープン ソース プロジェクトを維持することの難しさについて、オープン ソースメンテナー の闘争[9]で説明し、Redis プロジェクトのユーザーが増えた後は、常にオンラインでいる必要があると述べています。9時から5時までの通常の勤務体制に慣れたことがなく、40分以上プログラミングを続けられないこともあるという。 . 彼はしばらくプログラミングをしてから、子供の世話をしたり、運動をしたりして帰ってくるのが好きです。
プログラミングに加えて、アントリーズは赤ワインとスポーツにも非常に興味があり、彼がさらに追求しているのは執筆であり、執筆のためにプログラミングをあきらめることができ、王暁波を思い出させます。
3 年前、Redis から離れたことを宣言するブログ記事を投稿しました。自分がやりたいのはアーティストのような創造的な仕事であり、プログラミングも自分を表現する方法であり、Redis はここまで発展したからです。私が期待していたものとは異なり、物が少なくなり、トランザクションの作業が増えます。
私は自分自身を表現するためにコードを書きます。コードを書くことは、何かを成し遂げるために役立つものではなく、アーティファクトだと考えています。私が書いたものは副次的なものとして役に立っていると言えますが、私の最初の目標は、何らかの形で美しいものを作ることです。本質的に、私は良いプログラマーよりも悪いアーティストとして記憶されたいと思っています。
Redis は、オープンソース コミュニティで長年一緒に働いてきたコア メンテナーを何人か引き継ぎました。そのため、Redis はコミュニティにとって自然な選択でした。
プログラミングをやめたここ数年、彼はウォーペという名前の SF 小説を静かに完成させた[10] . この小説は人工知能と気候変動について書かれている. 原文はイタリア語で書かれているが、現在は英語の翻訳版もある. .
何百年もの間、執筆が自分の手を試す最高の芸術と見なされてきたのは偶然ではありません。書くことで物事を探し、十分に主張すれば、実際にそれらを見つけることができます。
小説を書き終えた後も、Antriez はプログラミングに戻るか、他の執筆活動を続けるか、執筆中にテクノロジーを使用するかをまだためらっていました。少し前まで、Antriez は 2 年間の別れの後、 Advent of Code [11]を通じてようやく プログラミングの楽しさを発見し、その過程で 18 の問題を解決し、スタックベースのプログラミング言語を作成しました。Twitter から判断すると、彼は最近 LoRa デバイスに関するいくつかの小さなプロジェクトに取り組んでおり、Flipper Zero などのギーク デバイスも投げかけています。
要するに, antriez のブログは非常に読む価値があります. そのうちの 1 つは English is my 15 pain [12] で、これは私と非常に共鳴しています.環境、およびこれは、技術界のほとんどのネイティブ英語話者が気にかけず、まったく話さないものです.
彼のブログにはいくつかの優れた記事もあります。
プログラミングの流れを維持する. プログラミングで新しいアイデアや問題を見つけた場合, 最初にそれらを記録してから後で見直すことができます. これは ログ駆動型プログラミング[13]と呼ばれます.
私にとって、私が書いたものから他の人がお金を稼ぐことは、私が失ったものではなく、私が得たものです. Redis は BSD を使用[14]。
芸術は、人生の最善の努力に値する数少ないものの 1 つです。プログラミングは、特定の方法で行われる場合、芸術です。
人生は短すぎて、ほとんどの部分で狂ったように働くことはできません。
神話上の 10x プログラマー[15]
プログラミングとライティング[16]
アントリーズ関連の記事をたくさん読んでいて、一番印象に残っているのは好奇心で、その好奇心に突き動かされて面白いことを続けています。
技術的なことだけでなく、人生においても興味を持ち続けることが非常に重要です。赤ワイン、CrossFit、執筆、アイスクリーム、Antriez と Redis の最初のユーザー (昔の同僚) が共同でアイスクリーム ショップをオープンしました。
参考:
[1]
アイドルスキャン: https://en.wikipedia.org/wiki/Idle_scan
[2]
LLOOGG メモリ DB: https://gist.github.com/antirez/6ca04dd191bdb82aad9fb241013e88a8
[3]memcached のソース コードを読む: https://catcoding.me/p/memcached/
[4]
EDA 開発: https://catcoding.me/p/3-years-in-eda/
[5]
Redis の設計と実装: http://redisbook.com/index.html
[6]
サイドプロジェクト: http://antirez.com/news/86
[7]
魅力的な小さなプログラム: http://antirez.com/news/74
[8]
楽しみのために、1000 行未満のコードでエディターを作成する: http://antirez.com/news/108
[9]オープン ソース メンテナーの苦労: http://antirez.com/news/129
[10]
ウォーペ: http://antirez.com/news/136
[11]
コードの出現: https://github.com/antirez/adventofcode2022
[12]
英語は私の 15 の苦痛です: http://antirez.com/news/61
[13]
ログ駆動プログラミング: http://antirez.com/news/51
[14]
Redis は BSD を使用します: http://antirez.com/news/48
[15]
神話上の 10 倍プログラマー: http://antirez.com/news/112
[16]
プログラミングと執筆: http://antirez.com/news/135
(以上)
ChatGPT は最近非常にホットであり、プログラマーのプログラミング方法を完全に変革する可能性があります. Shanke と私は最近、プログラマー専用のナレッジ プラネット " ChatGPT Base " を設立しました.
1. プログラマーがChatGPTを優れたツールとして一刻も早く使いこなし、最適な使い方を見つけ、作業効率を向上させる最適な方法を見つけられるように支援します。
ChatGPT の使い方を知らなければ、ChatGPT を使いこなせるプログラマーにはなれません。他の人は自然言語を使用してコードを生成しますが、まだ行ごとに入力しているため、効率は 10 倍または 100 倍悪くなります。これは、個人の業績、雇用機会、給与、ボーナスに直接影響します。
ChatGPT を上手に使用するジュニア プログラマーは、中級または上級プログラマーと競合できる可能性があります。
2. ChatGPT がプログラマーにもたらす可能性を探る iPhone の登場がアプリ開発をもたらした場合、副業を本業に変えることができます。
ChatGPTは、さまざまなトレーニングなど、多くの業界を確実に再構築します.ChatGPTが「ソクラテスの家庭教師」としてパッケージ化されている場合、小中学校のさまざまな科目を完全にカバーし、高品質の家庭教師との24時間会社を完全に実現できます。大人の IT トレーニングの場合、ここには多くの機会があるはずです。
もちろん、この2つが主な目的で、惑星に参加するだけでなく、ChatGPTの最先端の情報、高品質のリソースとプロジェクト、ChatGPTのギークなゲームプレイなども見ることができます。
惑星には現在、次のイベントがあります。
惑星に参加して、ChatGPT アカウントを取得します (今日、惑星に入った上位 100 人のみ、連絡先情報: WeChat onlyliuxin97 を追加してください)
高品質のコンテンツをエクスポートし、100元の赤い封筒を送ります
チェックイン チャレンジに参加して、スター料金を返金するチャンスがあります
Shanke とおしゃべりしたとき、「この惑星は私たちがお金を返す惑星になるかもしれません! しかし、それは問題ではありません。ChatGPT を本当にうまく使用して、競争力を高めることができれば、それだけの価値があるでしょう.」
現在、惑星は試験運用期間にあり、元の価格は199元です。現在、100元のクーポンがあり、 99元に相当します。参加して、ChatGPTを早期に受け入れ、使用できる最初のバッチの人々になることができますChatGPT と ChatGPT を上手に使い、リードしてボーナスを獲得しましょう。