「並行性に関する科学的研究の半分は完全なゴミです!」-DevexpertsのRoman Elizarovへのインタビュー

こんにちは、「スライドなし」です。 私は、 エリザロフとも呼ばれるローマのエリザロフ 、ジャワのチャンピオン、Javaとマルチスレッディングの専門家(そして最近では金融数学の専門家)、多数の会議の講演者、世界で最も権威のあるオリンピアードの北東ヨーロッパ地域ACM-ICPCの審査委員長が訪問しましたプログラマー、ITMOの講師、そして最終的にDevexpertsのテクノロジーの副社長。 一般的に、「人と船」。

会話では、次のトピックに触れました。




テキスト版はカットされています。


金融数学とは何か、そしてそれを教える方法


-インタビューの開始前に、あなたは金融数学の勉強を始めたと言っていました。 このトピックはどのようにそしてなぜ興味を持ちましたか?

-職場でこのトピックに直面しました-金融業界向けのソフトウェアをたくさん書いています。 そして時々、クライアントが来て尋ねます:「これはありますか? それともこれはありますか?」 同時に、さまざまなスマートワードが話されますが、その半分はわかりません。 それが私が興味を持つようになった方法です。

最初は自分の本から自分で学ぼうとしたが、何もうまくいかなかった。 その後、彼はプロセスを体系化することを決め、体系的に勉強に行きました。 そしてこのため、昨年はどのカンファレンスにも登場しませんでした。 代わりに、彼は教科書の山の下に座っていました。 はい、それでも私の本棚には金融数学に関する本がたくさんありますが、並行性のトピックではなく、一時的にバックグラウンドに後退しました。 もちろん、私は彼女の勉強と教えを続けていますが、並行性に関する新しいことをすべて学ぶことは背景に消えていきました。

-現代の金融業界の数学はいくらですか?

-本当にたくさん。 基本的に、これらはすべて複雑な金融商品に関連しています。 大規模な組織、銀行は常に複雑なもので取引しています。 また、複雑な金融商品のリスクを評価するには、非常に重要な数学が必要です。

ここでは、たとえば、モンテカルロシミュレーションのような単純なことです。 プログラマーなら誰でもそれを理解しています。乱数を投げ、追加、受信しました。 プログラミングの観点から見ると、非常に単純なようです。 しかし、数学の観点からは、結果を現実に関連付けるために正確に乗算または除算する必要がある正確な方法を理解することは、些細な作業ではない場合があります。

-教えてください、一般的な金融数学とは何ですか? 私たち全員が大学で教えた数学のどの分野と接触しますか?

-基本的に、これは数学的分析、確率論であり、ほとんどの人が研究していないような分野は、伊藤積分などの確率過程です。 彼らは皆に少しでも教えられているように見えますが、彼らは基礎だけを与えます。 最近、私はサンクトペテルブルク州立大学の学生と話をしました。彼は高度確率論のコースを受講したと私に話しました。 しかし、そこでさえ彼らはそれについて非常に表面的に話します。 これが彼らが教えられる場所である場合、HSEなどの専門教育機関、または非常に専門的な部門のいずれかで。 そして、これを知っている卒業生はほとんどいません。 複雑な金融商品を扱う場合-この知識がなければ、どこにもありません。

「ロンドンで勉強していると言ったことを覚えていますか?」

-はい、これは遠隔教育です-私は最終的にそこに行ったことはありません。 そこでは、主な特徴は、まず、教科書が非常に優れていることです。 ところで、あらゆる教科書で良い教科書を見つけることは奇跡です。 同じ並行性を学習するように学生を始めたとき、私は偶然見つけた教科書をいくつか持っていて、それらをとても気に入ったので、学生を教えるというアイデアがありました。

そして、金融数学では、自分で勉強しようとしたとき、とても不運でした。 私は伊藤微積分についてグーグルで調べ、いくつかの本を見つけ、それらを読んでみました-でたらめは完了です。 それは明確ではありません-なぜ、何が、構造がありません。 そして、コースでは、まず、通常の教科書が選択され、著者が講義を行います。 そして、これらすべては論理的に提示され、実用化に重点が置かれました。 このすべてが必要な理由が明らかになります。 本当の例は、あなたを示し、たくさんの宿題を与え、本当に問題を解決させ、コードを書きます。 そして、これはすべて数学であり、一方で数学を応用したものであり、これらすべてをプログラムする必要があると期待しています。

現在、現代の金融数学では、閉じた形で「美のために」実際に何も行われません。実際に使用されるすべてのモデルは、閉じた形とは見なされません。 これらはすべて数値的手法です。 そして、有限差分法を使用して拡散グリッドを解くか、モンテカルロ法を使用して何かをモデル化します。 そして、数学は、有限差分スキームを導き出すか、モデル化する必要があるものを理解するためにのみ必要です。 そして、コードがなければ答えを受け取れないので、コードを書く必要があります。

-多くの人は現代の数学を現実から非常に遠いものだと非難しています。 そしてここで-科学は純粋に実用的ですか?

-数学-それは異なります。 私自身も並行性を批判しています。 このトピックに関する多数の科学論文を読みましたが、その半分は完全なゴミです。 人々はある種のアルゴリズムを思いつき、比較を行いますが、実際にはこれらのアルゴリズムを必要とする人はいません。

もちろんここでも同じです。 数学-それはそれ自身で動きます。 これをすべて適用する個別の領域、個別の領域があります。 そして、それが正しい教科書を持つことが重要である理由です。 ただ抽象的な数学の教科書を取ることは一つのことです。 あなたがそれを乗り越えている間、あなたは多くの時間を費やすでしょう、そして、2、3の定理または事実がほとんど役に立ちません。 そして、材料が構造化されているとき、実際的な問題を解決するために必要なそれらの事実が選択され、科学的知識の膨大な基盤全体からチェーンに入れられているとき、それはまったく異なる問題です。

カスタムマルチスレッドプログラミングコース


-教育について少し話しましょう。 あなたは10年以上教えてきましたよね? いつ始めましたか-ハーリッヒとシャビットの教科書はありましたか?

-2007年からほぼ10年。 この教科書はまだ存在しておらず、これが全体で複雑なものでした。 教え始めたとき、教材を混合したり、さまざまな科学作品を追加したり、同じHerlichiの記事の教材を追加したりする教科書がいくつかあったので、私にとって非常に困難でした。 つまり、自分でこのコースの構造を作成する必要がありました。

-どうやってやったの?

-それはすべて1冊の本から始まりました。 好きな教科書を偶然見つけました。 実際、教科書は非常に奇妙です。 Gargの著者は、Javaでのコンカレントおよび分散コンピューティングと呼ばれています 。
第一に、すべてが非常に表面的に説明されていたので、私はそれが好きでした-同時実行性と小さなアプリケーションの教科書での分散。 第二に、これをどのようにプログラムできるかの実例がありました。 そして第三に、実際の科学研究への言及がありました。 つまり、多くの定理が省略され、多くの事実が省略されましたが、最終的には追加の参照への参照がありました。

-このチュートリアルは、 Java Concurrency in Practiceとどのように違いましたか?

-多くの人に。 これはまだ理論的な本ですが、実務家向けのプレゼンテーションがあります。 実際に必要なものを選択しようとしています。 そして彼女は本当に私を夢中にさせた。 この本はあまりにも表面的なように思えたので、私はその中にあるリンクをたどり、関連する科学文献を研究し、学生のために何かを選び、それから自分のコースを作りました。 最初の資料のプレゼンテーションの順序は、Gargとほぼ同じでした。 しかし、私は彼の資料を、同じランポートやヘルリーチなどの科学的研究から得た理論で希釈しました。

そして、 ヘルリーチとシャビットの偶然性に関する教科書がすでにありました。 その後、私は多くのブログを購読しました。発表とレビューを見るとすぐに、私はすぐに購入して読みました。 そして彼はショックを受けた:「ここにある! このようなコースを読むために本当に必要なものは次のとおりです。 これ以上でもそれ以下でもない。」 適切な深さ、適切なシーケンス、適切な緯度。 その後、コースを少し調整しました。

-しかし、私はこの本全体をマスターしませんでした。 彼女について何が一番イライラするか知っていますか? それはかなり曲がった言語で書かれており、英語自体はなんとなく奇妙であり、例でもあります。 覚えておいて、犬、缶の最初の例があります。 しかし、著者が私に言っていることを理解しようとして2時間座っていました...そして、私は突然、これがアトミックレジスタで何かを行う方法の古典的な例であることに気付きました。 このすべてをどのように乗り越えましたか?

-すでに準備ができていたので、私にとっては簡単でした。 すでにプロの変形がありました。Lamportと他の著者の記事で、犬を使ってこれらの例をすべて100,500回読みました。 私はそれがどこから来たのか知っていました。 思いついたのはHerlichiとChavitではなかったが、これはすでに20年前の古典です。 それで、私にとってはすべて親しみがあり、親愛なりました。 そして、私はこの本を追加の読書として学生に勧めます、私は誰にでもそれを読むことを強制しません。 私のコースから、私にはほとんど役に立たないと思われる理論の一部を捨てましたが、学生にはそれを読みません。

「生徒に何を伝えるか、何を伝えないかをどのように選択しますか?」

「私は生徒たちに、とても美しくて自明ではないと思ったものを与えます。」 例えば、私は、彼女が非常に美しく、物事の本質を理解できるように思えるので、私は学生にHerlichのコンセンサス定理を証明しています。 CASが必要な理由を理解できます。CASがなければ、2つのストリームでさえ、より高い構造がなければコンセンサスに達することができません。 ユニバーサルデザインを表示します。 Herlichiと同じ方法で練習されますが、決して使用することはありません。 これは非常に人為的なことですが、後で実際のアルゴリズムで必要とされる手法を使用します。 そして一般的に、私は他の既に実用的なアルゴリズムのブロックを構築しているいくつかのトリックがある純粋に理論的なアルゴリズムについて話します。

-ところで、たとえば、ランポートの作品を読んだ場合、彼の構造は少し人工的に見えます。 これは証明に役立ちますが、アプリケーションを理解するためにソースコードを開くと、他のすべてがそこにあることがわかります。 実際には、これらのソリューションは効果的ではありませんか?

「はい、正確に。」 この理論全体が登場した20〜30年前に研究者を悩ませた主な質問は、「何かをすることは可能かどうか」でした。効率については誰も考えず、可能かどうかだけを考えました。 そして、可能なこととそうでないことの美しい定理がたくさんありました。 そして、レジスターに関するこれらすべての理論的構成を、1回の講義で学生に、非常に迅速に、トップまで伝えます。 私は彼らに心から知らせません。 なぜなら、一方ではこれがすべて可能であり、他方ではこれらのアルゴリズムはすべて実用的な価値がないことを示したいからです。 そして、コースの後半では、実用的なアルゴリズムに集中します。 たとえば、現在のリストでは、多くの場所で使用されている完全に古典的なアルゴリズムを話しています。

-半不変量を持つのはどれですか?

-はい。 それに応じて、詳細に分解します。 アルゴリズム自体が実際に価値があるだけではないからです。 複雑さと生産性のバランスという点で、改善の車、いくつかの科学的研究、すべて同じものがあったにもかかわらず、それはすべてを引き裂きます。

しかし、たとえば、HashMapにはそのような勝利はまだありません。 これは今なお活発な研究テーマであり、特に私たちの研究所で行っています。 HashMapは一般にすべての構造のデータ構造であるためです。 常に使用されます。

AmazonのCEOについて知られている自転車があるようです。 彼が学生の聴衆に話をしたとき、アルゴリズムを研究している学生は彼に尋ねました:「教えてください、どんなデータ構造が必要ですか? アルゴリズムは何ですか? 何を使用していますか?」 彼は、彼らにとって最も重要なことは「ハッシュテーブル、ハッシュテーブル、ハッシュテーブル」だと答えました。 そして、これはすべて真実です。

同じことがあります。 また、大規模なビジネスタスクでは、常に次のようになります。ハッシュテーブルは最も重要なデータ構造です。 そしてもちろん、並行性の観点からは、多くの未解決の質問があります。 つまり、これが実装においてどれだけ積極的に変化しているかを見ることすらあります。 Javaの内部は見えますが、通常のHashMapはそこにどのように対応していますか。

-ConcurrentHashMapをきっかけに? 。

「まあ、彼は間違った方法で書き直されました。」 長い話がありました。 怒りは、8年前にPHPで標準辞書がどのように配置されるかを研究した人物によって作成され、Webサイトの本質を詳しく調べることなく、キーが同じハッシュを持つリクエストを行いました。 そして、彼らはそれを異なるサイトに送り始めました。

試したサイトの95%がダウンしました。 そして、これについて彼らは素晴らしい記事をリリースしました。 この記事の後、ハッシュのための闘争が始まりました。これには、サンが彼らのために戦い始めたことが含まれます。 Sunの最初のイテレーションは、文字列のハッシュコードをランダム化することでした。 そして、彼らはそれが単なる線ではないことに気づきました。 そして一般的に、すべては現在の実装で終わりました。ハッシュテーブルのバケットがいっぱいになると、すべてバランスツリーに置き換えられます。 これの目標は、ハッカーとの安定した戦いです。 最悪の場合、ハッシュテーブルはO(N 2 )アルゴリズムに縮退せず、少なくともO(N log N)で機能します。 実際のウェブサイトでは、Nの規模はどのくらいになっていますか? たぶん1万、10万...そしてどこかにN 2があれば、システムはダウンしました。 100,000平方はすでに多すぎるからです。 そして、あなたが小さなNを持っている場合-何も、通常は、生きません。



マルチスレッド:科学かビジネスか?


-私が理解しているように、あなたの会社の決定は、マルチスレッドでの高いワークロードに関連しています。 教えてください、これをするようになったのは、あなたが通貨に興味があるのですか? または、多分、反対に-仕事はこのトピックに突入することを余儀なくされましたか?

-それはむしろ偶然です。 因果関係を追跡することは困難です。 私たちが始めたとき(これは古代、2000年、またはそれより少し前のことでした)、私たちは小さな会社として、すべてを一列に引き受けました。 当時、ドットブームのプログラマーは金に見合うだけの価値があり、人々は誰にでも何でも注文する用意ができていました...そして、どういうわけか金融分野のいくつかのプロジェクトに偶然出くわしました。 私たちはそれらを作り始め、それが気に入りました。 そして2年後、私たちは他に何もしたくないことに気づき、他のプロジェクトをやめました。 ウェブサイトの開発やアウトソーシングは一切行わず、取引、ブローカー、取引所のアプリケーションのみを扱うことにしました。

他のすべてはこの決定の結果です。 これらのアプリケーションに対処し始めると、引用の転送に問題が生じ始めます。 なぜならそれらはたくさんあり、主な取引はアメリカ市場に集中しているからです。 繰り返しになりますが、歴史的に非常に複雑な金融商品、あらゆる種類のオプションに従事していました。 また、数百万の楽器、1秒あたり数千万のクオートがあります。 これらはすべて何らかの方法で処理し、顧客に送信する必要があります。 数万人の顧客もいます。

そして、それを把握する必要がありました。 最初に、コードを書き直し、書き直し、研究し、プロファイリングし、ボトルネックを見つけ、それを修正する方法を見つけます...最初の数年間は、すべてが汗と血で独占的に行われ、科学のないソリューションを発明しました。 そして、科学はどういうわけか偶然出てきました。 私たちは皆この分野で独学であり、各本は表紙ごとに数えられていました。

そして、2006年にJava Concurrency in Practiceが登場したとき、あなたはそれを手に入れて、それが宝物であることを見ました! しかし、あなたはすでにこのすべてを知っています。実際の仕事をしているので、あなたはすでにこのすべてに自分自身で来ています。 しかし、誰かがそれをすべて体系化したことのすごさを理解しています。 そして、新しいプログラマーが来たら、彼に次のように伝えることができることを知っています:「ここで、Java同時実行性を実践して、読んでください。 知識の要約があります。」 そして、あなたはこの知識のためにこの本に感謝し始めます。 そして、あなたはあなたの血のあらゆるページの下で申し込む準備ができています! そこに著者は書いていますが、あなたはすでに知っています。 私はそこにいた! 本当にそう! そうしないと、「雪が降って、あなたは完全に死んでしまいます。」

-一般に、この本は非常に興味深いため、非常に興味深いものです。 そして、今日行われているパフォーマンステストの結果はかなりワイルドに見えます。 今、現実は完全に異なっています。 これがどのように発展するかを観察することは興味深いです。

-もちろん、その値はパフォーマンス結果には含まれません。 デザインテンプレートの価値。 それは知識を構築し、あなたが正しく考えるようにします。 同時実行性の主な問題は、テストが非常に難しく、バグを許可するのが非常に簡単だからです。 テストは少なくとも10回実行できますが、とにかく切り替えにより中断されたシステムに落ちます。 したがって、あなたと隣人、そして数年以内にこのコードを読む人の両方が正しいことを理解するような方法でコードを書く必要があります。 コードを書くことはどういうわけか紛らわしいので、正しいと自分に納得させるにはどうすればよいでしょうか? そして、これがJavaoncurrencyin Practiceが教えていることです。 彼女はパターンを教えています。 それらを書くと、他の人がそれらを簡単に認識し、すべてがそこにあることを理解しやすくなります。

プロAPI作成アプローチ


最近、 OpenHFTを担当しているPeter Laurieと話をしました 。 彼は、フレームワーク間のすべての闘争はもはやパフォーマンスのためではなく、提供されるソリューションが並行性のすべての問題を解決する一種の閉じた箱であると信じています。 なぜなら、私たちがいくつかの並行性ペンを人々に配ると、すべてのnafigが一般に崩壊するからです。 あなたのコードがマルチスレッドを理解していない人に到達するという事実にどのように苦労しますか?

-私たちは戦っていません。 別のビジネスがあります。 私たちは最終顧客のために決定を下すので、そのような問題はありません。 プログラマーよりも特定の人々にツールを提供します。

-つまり、APIを提供しないのですか?

-私たちは与えますが、それを単純化しようとします。 これを階層化アーキテクチャで解決します。 低レベルのAPIがあり、すべての勇気が出ており、左へのステップ、右へのステップが地雷によって爆破されました。 しかし、この低レベルを使用しているのは私たちだけであり、私たちの会社には、これらの地雷の対処方法を知っている人は非常に少数です。

そして、すべてが便利で理解可能な高レベルのAPIがまだあります。 そして、私たちは何が中にあるのかさえ言いません。 文書化されており、理解可能です。 バグも定期的に発生しますが、バグを見つけて修正します。

Devexpertsは何をしますか


-非常に興味深い、もっと教えてください。 見積もりを顧客に送信し、取引所に送り返す分散システムはありますか?

-たくさんあります。 通常、垂直統合ソリューションを作成します。 セットアップ見積もりの​​使用は、当社のビジネスのほんの一部です。 別の製品dxFeedがあります-これは実際にはアメリカの別の会社であり、すべての取引所(コース、見積もり)からデータを収集し、それを単一の形式で単一のAPIを介してパッケージ形式で顧客に販売しています。 そして、これはただ一つの小さな方向です。 非常に小さい-数十人がそこで力を働かせています。

そして、会社の残りの部分-私たちは何も書きません...ブローカーを取り、彼は多くの情報システムを必要とし、顧客を考慮し、バックオフィスを維持し、取引を考慮する必要があります...これらのシステムを持つ膨大な数のチームがあります作成します。

-そして、交換も非常に異なりますよね?

-交換は自動化されません。 取引所はすべて社内で行うことを好みます。 しかし、それらと大量に統合します。 ほとんどがアメリカ人ですが、アジアがあり、MICEXは長い間クライアントです。 そして今、彼らとの良好な関係、そしてRTSは私たちの良い顧客でした。 その後、RTSとMICEXが統合されたとき、メインの情報システムへの統合は好ましくありませんでした。 しかし、ロシア市場では一般的に顧客はほとんどいません。 スケールが同じではないという理由だけで。

-そして、アメリカの為替は私たちのものよりもはるかに多いのですか?

-はい、それは交換についてでさえありません。 プロのトレーディングターミナルを最初から作成します。 各ブローカーは、ごみを隣人と同じにしたくないが、違うものにしたい。 そして、以前に彼らがより小さな委員会を追いかけていたら、今ではこれは長い間主な機能ではありません。 すべてのブローカーの手数料は非常に低いです。 そして、より便利なクライアントインターフェースを求めています。 各ブローカーはユニークなものを望んでいます。 何でも取引することが可能であり、チャートがあり、それは美しく、高速で、スローダウンしませんでした。

-このウェブはありますか?

-それだけです。 私たちはウェブフロントとデックストップの両方を行っています。 専門家は自分で特別な鉄の棚を置き、そこに5〜9台のモニターを掛けます。 そして、これらのモニターはすべて情報で満たされています。 さらに、すべてがこのように広がり、成長し始めているようです。 このための機械を製造する特別な会社、モニター用の特別なラックがあります。

-これはWindowsですよね?

-Javaで記述しているため、WindowsおよびMac OS Xで作業できます。しかし、具体的には、Windowsでこのようなことができます。

-したがって、これほど多くのモニターをサポートできるビデオカードさえありません。

-一度に複数のビデオカードを挿入すると、それだけです。 問題ありません。

-これには強力なコンピューターが必要ですか? 私が理解しているように、コンピューター自体に特別な負荷はありません。そのタスクは、単にデータを駆動して表示することです。

「何をするかに依存します。」 もちろん、これは主にデータの迫害ですが、画面スペースが大きいため、画面が多いという理由だけで大量のデータを操作する必要があります。 まあ、それはまた、すべてのコードがどれだけ効率的に書かれているかに依存します。 それどころか、多くはそれらに従事しています。 分析、およびすべての見積データベースはローカルコンピューターに保持されます。 何かを構築する場合、ここで頻繁に分析されます。 今では徐々にすべてですが...

-そして、なぜ彼らは? これは低遅延のためですか?

-いいえ、低遅延は一般的に別の問題であり、まったく異なるビジネスです。 そこでは、これらすべてのモニターが必要というわけではなく、非常に高速に動作するコードを作成します。主な問題は、他の人を倒すために、特別なコロケーションにある鉄片を直接交換所に置き、それに大きなお金を払わなければならないことです。 そして、ここでモニターはあなたを救うことはありません。 HFTは非常にニッチなビジネスです。 低遅延のプロジェクトがいくつかありましたが、さまざまな理由でうまくいきませんでした。 その1つは、低遅延に関与する全員が社内ですべてのことをしようとしていることです。 そして、私たちは取引をせず、ソフトウェアを作成します。

そして、スケールの違いは何ですかと尋ねました。 おわかりのように、大規模な取引システムは少なくとも100万ドルのプロジェクトです。 あなたが私たちの最大のブローカーを見ても、彼は客観的な理由でこのお金を使う余裕がありません。彼らはそんなにお金を稼ぐ方法がないからです。 これらのトレーダーはロシア中に何万人もいます。

すべてのブローカーはコミッションで稼ぎます。 ブローカーには、洗練されたソフトウェアの開発に投資するだけのお金がありません。

アメリカでは-まったく異なる規模。 ブローカーには数十億ドルの預金を持つ顧客が何百万人もおり、ブローカーはこれらの預金の割合と取引からの手数料の両方で稼いでいます。 そしてこれにより、最大のアメリカのブローカーは本当にクールなシステムの作成に投資することができます。

マルチスレッドラボ


-2000年代初頭、あなたはすべてをしました。 そして、会社がすでに大きく成長した今、あなたは何をしていますか? ところで、あなたは何人いますか?

「400人以上。」 コーディングが大好きなので、コードの作成を含め、すべてを続けています。 したがって、私は面白いものを書く喜びを決して否定しません。 しかし、それだけではありません。 , , dxLab. , .

— . . , , , , . - , . - , Fulltime-, , . , , .

— ?

— dxLab , . — . , , , — . , , — , — high concurrent, . , , .

-, . , , , -? , .

, . - . . , , 50 . , , , , .

, Performance- . . - , , .

— ? .

— — . HashMap « » . , Garbage Collection, . HashMap-. , « — » . HashMap-, . ! ! , .

— , CAS- , .

— , . – . . , , GC CPU . , , . . , , , , .

, . ? - HTTP-. 素晴らしい。 - HTTP-. .

, . — , — . , . -, . , , , . , ? , , .

— ? - , .

— , . .

Concurrency,


— , Concurrency, , . . ?

— . , , — . , . . - .

— ?

— . , , , , . . ? , - . , - , , , , , . , - .

— . Java oncurrency, - . , , , , Memory Model. Java 5 (JSR 133). , . concurrency-interest hotspot-dev?

— , . , . , - , .

— , , ?

— . - . , , — . , - , . , - . Wait-free synchronization , , , : «, , CAS . .» ? , , , .

, , - — Software Transactional Memory (STM). Software Hardware, . , , , . – .

, Hardware Transaction Memory (HTM), Haswell, , Intel . , HTM-. — . , , .

— JVM .

— , , . , JVM HTM, , HTM . , : «, , ». ! high level low level . Atomic, . — ! , , .

HTM — . , -. , «synchronized». synchronized - . , , - , , CAS- .

. «synchronized» – «atomic», , , . , . - , . , HTM, xbegin — « ». CPU CPU, , . : , , , ? , - .

, overhead — . , overhead , CAS- . . xbegin, xcommit, : , . , , .

, . -, . -, – , .

, , . , , lock . . , JVM — lock- , overhead .

, . , Skylake. Haswell .

— , hotspot-dev ? , Java ?

— hotspot-dev — , , JVM, Oracle .

— , .

— : , , .

challenge Devexperts


— , , , . ?

— — scale. , , . , . : , , , , . – . , . scale , . - .

, . , — , . : «. , , ». custom- , custom- – …

— ?

— , . .

— ?

-はい。 , : - , -, - – , .

— ?

— , . , , ! – . – . – . – . .

— ?

— . , . , . , : , . . – , , . , . , . . , .

— , .

-はい。


-聞いてください、私たちは長い間話していました。もう一つ話しましょう。 私が間違っている場合、あなたはヨーロッパプログラミングコンテストのディレクターでもありますか?

「そうでもない。」 私は、北東ヨーロッパ地域ACM-ICPCの審査委員長です。

-これらは最も有名なプログラミングオリンピックですか?

-はい、国際大学プログラミングコンテストと呼ばれる、学生のための最大級の名門オリンピックがあります。 これらは、プロのプログラマーの最大のコミュニティであるACMが実施しています。ACMは、毎年有名なチューリング賞を全員に贈ることでも知られています。 ノーベル賞のようなものですが、プログラマー向けです。 ランポートと他の偉大な人々の両方がこの賞の受賞者です。 そのため、ACMの後援の下、最大かつ最も権威のあるプログラミングコンテストが開催されます-ICPC。

-私たちは定期的にどこを見ていますか...

-はい。 Tuzik加熱パッドのように、生徒が定期的に全員を引き裂く場所。

-そして、そこで何をしていますか?

-ICPCは、世界中の数十の地域で開催されるグローバルな競争です。 また、独自の地域ゾーンがあります。 北東ヨーロッパ地域(NEERC)と呼ばれます。 ロシア、カザフスタン、ウズベキスタン、ベラルーシ、バルト諸国が含まれます。 さらに、システムは非常に民主的です。 チームが他の場所に参加したい場合、別のゾーンを要求する権利があります。 大学は競争します。これは重要なポイントです。 特定の人ではありませんが、大学はコマンドを送信します。

-決勝では、大学のチームは1つしか存在できないというルールがあります。

-はい。 最終的には、大学のチームは1つだけです。 最後の1人は2回以上参加できません。 すべてが非常に厳格に行われているため、プロ意識はありません。

イベントの規模は巨大です。 世界中で、ほぼ100か国から数十万人がこの選択に参加しています。 北東ヨーロッパのゾーンだけでも、マルチレベルシステムに従って数千のチームから選択し、決勝に行く子供たちを選択します。



-選択はどのように配置されますか-標準化されていますか? または、地域の裁量で?

-一般的なルールがあり、詳細は地域の裁量です。

「これらの詳細を開発しましたか?」

-はい。 実際、私は創業者の一人でした。 私はまだ最初のコンテストに参加しました。

-そして、これらの競技会はどれくらい開催されましたか?

-ICPC自体は77年目から開催されています。 私は96年以来そこにいました。 私が初めて参加したとき、まだ地域がありませんでした。そして、私たちは近隣の地域に参加しに行きました。 彼らは手紙を書き、尋ね、私たちを連れて行った。 私たちはストックホルムに行き、そこで1位になりました。地元の人々は決勝戦のチケットをすべて奪われました。 そして、彼らは:「ああ、どのように?」 そして、ストックホルムの決勝戦のディレクターは、独自の解決策を見つけました、と彼は言います。 その後、All-Union Computer Science Olympiadsの勝者であるAnton Sukhanovがこれを行っていました。 彼はこの地域、大きな国を組織しました。

-そして、あなたはおそらく20歳でしたか?

-その最初の競技中、私は2年目にいた。 そして、私のチームはロシアの最初のチャンピオンになりました。私たちは地域で1位になり、決勝に進みました。 決勝戦では、彼らはあまり成績が良くありませんでした。下ではなく、上でもありませんでした。 そして、次の地域では、決勝戦にすでに2回参加していたので、参加することができなくなりました。そのため、私はこの全体の主催者になりました。 その後、SukhanovはMicrosoftでの勤務を辞め、すべてを私に任せました。 それ以来、私はこれをやっています。

-つまり、もう20年ですか?

-はい。 ジュビリーの準決勝、20番になりました。 そして、私は19年間それを組織してきました。 ICPCの最初の数年間は、ひどいものでした。 これはアニチコフ宮殿で起こった、私は数日間そこに夜を過ごし、実際にそこに住んでいた。

現在、組織委員会の素晴らしい大きなチーム、多くの人々がいます。 それぞれに独自の方向性があります。 私は審査委員長であり、私の仕事は仕事を選ぶことです。 そして、私はすべてを自分で発明するのではなく、アイデアを送り、一緒に集まり、どのタスクが最適かを判断し、それらに取り組む素晴らしい同僚がいます。 次に、最終校正を行います、それがすべてです。

過去数年にわたり、サンクトペテルブルクでITMOベースのコンテストを開催してきました。 しかし、私たちの国は大きいので、サンクトペテルブルクとバルナウルで同時に競技会を開催しなければなりませんでした。なぜなら、ロシアのその地域の学生は、単にサンクトペテルブルクに飛ぶお金がなかったことがわかったからです。 最初は2つでしたが、現在は4つの場所で同時に過ごしています。 この決定は、人々が参加できるように経済的な理由で行われました。 最近の競技会は、サンクトペテルブルク、バルナウル、タシケント、トビリシで開催されました。 私たちは、人々が参加できるように、オリンピアードを人々に届けようとします。 そして、人々は決勝に行きます。

-そして、私たちの地域からいくつのチームが決勝に行きますか?

「通常は10を少し超えています。」 今年、私の意見では、13または14です。

-そして最後に、すべてはいくらですか?

-最終的には、120〜125チーム。

-それは私たちの地域が世界にあるすべての約10分の1であることが判明しましたか?

-はい。 私たちの地域は広いです。 そして、私たちは歴史的にうまく機能しています。

-このオリンピアードの全世界の決勝を受け入れましたか?

-はい。 2年前。 私はこのフィナーレのディレクターでした。

-それはあなたのチームが勝ったからですか?

-私たちはこれを長い間やってきたし、勝ったからです。 多くの要因がありました。 オリンピックシステムのようなものです。毎年決勝戦はさまざまな場所で開催されます。 最終送信アプリケーションのホストを希望するさまざまな国。 また、ある時点でリクエストを送信しました。 それが直接私たちのアイデアだったわけではありません。 むしろ、それはコンペティション部門のアイデアでした:「みんな来て、ロシアにはいなかったし、あなたはこれを長い間やっていて、決勝戦をあなたの場所で過ごして」。 私たちは勇気を捨てて、財政を見つけました。 そして、彼らはリクエストを送信しました。 そして彼らは自宅でフィナーレを開催しました。 ものすごい経験でした。

-私の意見では、あなたはジュビリーで過ごしましたか?

-はい。 ファイナル自体はユビレイニーで行われました。 秘Theは、ファイナルを開催し、すべての参加者を配置する必要があるということです。 参加者はご自身の費用で決勝に飛ぶので、完全に提供する必要があります。 落ち着いて、食べて、楽しませる。 フルボード。

-そして何人が来ますか? 120チーム、各チーム、おそらく6人?

-3人とコーチ。 少なくとも4つ。

-スペア、おそらくそれ以上?

-予備のものはありません。 お金を節約するためだけにキャンセルされました。 彼らは、予備のチームを引っ張る代わりに、より多くのチームを招待する方が良いと判断しました。 したがって、チームは正式に-4人。 その結果、約1200人がどこかに来ました。 これはバスのストリングです。 すべてが夏でした。 私たちは皆、イサキエフスキーに落ち着きました。

-それは白い夜とかです。 ホテルはそんなに必要ですか?

-アストリア、ペトロ宮殿-すべてが中心にあります。

-これは実際にはたくさんのお金です。 誰がこれに資金を提供しましたか?

-それは連邦政府の助成金でした。

-つまり、あなたは政府または教育省に来て、「みんな、これが物語だ」と言ったのですか?

-基本的にははい。 ITMOとその学長ヴァシリエフの大きなメリットは、彼が一般教育の発展のために大規模な教育助成金を獲得したことです。 これはこのオリンピアードの独立した助成金ではなく、一般的に教育システムを作成し、プログラマーの教育を支援するという非常に大きな助成金でした。 そして、この助成金の一部はICPCファイナルでした。

-つまり、資金が提供されたのですが、あなたはそこで街と交流しませんでしたか?

-私たちは、警察がすべてを同行し、バスを作るために、外部からの支援の問題について市と交流しました。 市内の広告。

-そして、なぜ広告なのか?

-そして、あなたは知っている、都市自体が示唆した。 市にはソーシャル広告スポットがあります。 そして、市はこれに参加し、支援し、支援しているため、「ここでいくつかの場所をあなたに割り当てています」と言われました。 それらとともに、広告レイアウトを開発しました。 そして彼女はそこで絞首刑になりました。 イベントに来てくれてうれしいです。広告がぶら下がっています。

そして、これは本当に素晴らしいイベントです。 これは、世界で最も権威のあるプログラミング競争です。 つまり、それが私たちの街に来たという事実は本当に素晴らしいです。 これは大きな成果です。




参照資料


Source: https://habr.com/ru/post/J279819/


All Articles