コンパイラとしてのVasya

Vasily Viktorovich(さらに単にVasya)は3年目はオフィスで働いていました。 彼は教育のプログラマーであり、ディレクターのアレクサンダー・イワノビッチと良好な立場にあり、彼の専門的なスキルを疑うことなく、重要な仕事を任せる用意ができていました。 監督はしばしばVasyaを支援するために新しい従業員を募集しましたが、彼らは全員長い間滞在しませんでした-Vasyaは彼らに悪いプログラマーは働きたくないと不満を言い、彼は彼の足を折るコードを書きました。パターン。



-Vasya、だからあなたは自分で働くことができますか? すでに10人が解雇されています。私たちの時代には専門家が見つからないことを理解しています。一人で仕事をするのは難しいと思いますが、試してみませんか?

-イワノビッチ、私はしたいのですが、誰が小さな問題に対処しますか? 私は最も重要なことを書きますが、何にも気を取られないことは常に非常に困難です。 イヴァノビッチ、いい男を見つけてくれ! 私はいつか自分のように、あるいはそれ以上に機能するものに出会えると信じています!

-なぜあなたは、ヴァシャ、私はすでに確認しました-私は誰も見つけたくないでしょう。 やってみよう、ヴァシャ、やってみよう!

監督は彼を肩にpatでて、オフィスを去った。 そして、VasyaはAlt + Tabを押してテープを読み続けました。



-ヴァシャ、知り合い、これはアンドレイです。 2年前、私は大学を卒業し、Yandexで7か月間働いていましたが、推奨事項は良好です。一緒に働くと思います」と監督はウインクしました。

Vasyaは新しい新兵を不満そうに見て、何日後に彼がここから飛び出すかを考え、微笑んで、微笑む少年に手を伸ばした。

「Vasily Viktorovich」と彼はつぶやいた。

「とてもいいね」と少年は微笑み続けたが、それはヴァシャを怒らせただけだった。

「まあ、あなたはアンドレイに彼の義務を紹介します、そして私は行きます。」



監督の後ろのドアがバタンと閉まると、Vasyaは新しい方をコンピューターに向け、「簡単なタスク」をいくつか投げました。正直なところ、彼は1か月以上働いていました。



Andreyがプロジェクトを開いてぞっとしました。コードにコメントが1つもなかっただけで、フォーマットがまったくなく、変数とメソッドの名前が現実に対応していませんでした。 アンドレイは、この日が来ることを知っていました。 大学からでさえ、彼は最悪のシナリオに備えていましたが、彼が見たものに準備ができていませんでした-少年の笑顔は跡形もなく消え、涙が彼の目に見えました。 「ちょっと待って、アンドレイカ、ちょっと待って」と少年は日々励ましました。 この恐ろしいオフィスでの10日間の仕事で、AndreiはVasily Viktorovichが最もビドロコダーであることに気付きました。 もちろん、彼はある程度の知識を持っていました。さもなければ、アレキサンダー・イワノビッチはこの「専門家」の無能をすぐに疑っていたでしょうが、そうでなければ彼は普通にプログラムしたくありませんでした。



アンドレイは、彼がそれほど長く続かないことに気づきました。 彼には誰も知らない能力が1つありました。彼は催眠術に精通していました。 そして、かつて、忙しい一日を過ごした後、彼はヴァシャに上がり、指を鳴らし、いくつかのフレーズをささやきました...





Vasyaはすぐに目覚めませんでした。 最初は耳の中に一種の不吉なくすんだ音が聞こえ、それから私の目の黒さは次第に鈍い波紋に変わり、そして再び-そして彼は奇妙な部屋に立っていました。 何もないところ、白い床と灰色の天井だけ。 ノイズなし。 Vasyaは彼自身の鼓動を聞くことができるようでした。 どこかから、マウスのクリック音が聞こえ、沈黙は嵐の前のように、ある種の強烈な色合いを獲得し始めました。



Build started.







-急いで、これらのソースコードファイルを読む必要があります。

-え? 何ファ...

「まあ、生きている、と私は言った。」まつげが聞かれ、ヴァシャからの叫び声が聞こえた。 -これらのファイルを読み、すべての情報をトークンのテーブルに入れます。 理解できない問題が発生した場合は、対応するエラーメッセージとともに停止クレーンを押してください。 急げ!



Vasyaは、「main」という名前の長い巻物を展開し、読み始めました。 すぐに不便な書式設定が行われ、文字が結合し続けて混乱を招き、変数の名前に含まれる文字は3文字以下になりました。変数が宣言されたかどうかを覚えることは困難です。 メソッドの名前についても同じことが言えます。 Vasyaには、このコードに精通しているように見えましたが、それについて考える時間はありませんでした-彼は頻繁に棒でbeatられて、書かれたものをほとんど読むことができませんでした。



1つのファイルが終了すると、Vasyaは座って休み、すぐに一連の新しい打撃を受けました。 それに気づいた彼は、「Krname」という名前の別の巻物を展開し、最初からやり直しました。 その後、ファイル「qwerty」、「MegaUtils」、「dList」などがありました。 Vasyaの目は疲れ始め、背中は延々と続くまつげと前髪で痛み、両手はテーブルにトークンを絶えず書き込むことで震えました-Vasyaは地獄に行きました。



非常に長い時間が経過しても、Vasyaはすべてのファイルを表示し、トークンテーブルに情報を入力することができました。 「さて、最後に」彼は額の汗を拭きました。



-何がバラバラになったの? トークンテーブルを取得し、構文の正確性を確認し、このデータで解析ツリーを構築します! 何かを見逃したら、すべてをやり直します。 働くために!



Vasyaは、Book of Rulesを使用してテーブルのデータをチェックし始め、巨大な紙に演算子とオペランドのツリーを描き始めました。 行ごとにトークンごとに、彼はメモをチェックしました。 トップバイトップ、リブバイリブ、彼は木を描いた。 彼の目には多くのシンボルが現れ、終わりはありませんでした。 そして、Vasyaはルールで指定されていない行を取得しました。 二度と考えることなく、彼は「構文エラー」という碑文でレバーをけいれんさせた。 すぐに作業が停止し、まつげが終わり、木が描かれたシートがきれいになり、不吉な静寂が再び部屋に落ちました。 Vasyaは疲れきって床に落ちました。 彼は長い間休む必要がなく、わずか2分後に作業が始まりました...再び。 ヴァシャは必死に「いいえ」と叫びましたが、彼の背中はいくつかの新しい打撃で火傷し、すべてのファイルを新しい方法で読まなければなりませんでした。



いずれにせよ、Vasyaには永遠の一部のように見えました。彼はソースコードでスクロールをソートし、トークンのテーブルをチェックしました。 幸いなことに、これ以上構文エラーはありませんでしたが、これはVasyaの運命を楽にするものではなく、先に新しいテストがありました。



「ねえ、構文木を取り、タイピングをマークしてください」と声が命じ、貧乏人をlashりつけた。



Vasyaの疲労はそれ自体を感じさせ、タイプチェック中に混乱を続けましたが、ミスを犯した場合はすべてをやり直すという気持ちが彼の仕事に少し熱意を加えました。



「今、あなたが持っているものを中間言語で生成します。」 そして、結果を最適化することを忘れないでください!!!

Vasyaが始まりました;彼は以前に最適化をしたことがありませんでした。 彼は繰り返しコードを別の方法で囲むことを好まず、ループを頻繁に使用せず、変数を可能な限り短く呼んでさえいました。 プログラムの動作が重要な場合、なぜ最適化を考えるのですか? しかし、Vasyaの意見がどれほど批判的だったとしても、まつげが2つまとまっていました。彼は最適化を始めました。 彼は個々のコード行を調べ、それらに最適なオプションを見つけようとしました。 彼はループを展開し、行のシーケンスを短いペアに組み立てて、いくつかのフラグメントを書き直しました。



Vasyaの頭は賑やかでした。 悪魔自身が長年、悪いコードを書いて彼を罰していたように見えました。 最後の残りの行を最適化して、Vasyaはひざまずき、絞り出しました。

「もうそれはできません。」

-どうしてできないの? 誰がマシンコードを生成しますか? ちなみに、私はこれを1日に数百回行い、文句を言いません。 毎日、ひどいコードを読んで、意味のない変数の種類を調べ、平凡な作業をすべて最適化して、モジュール呼び出しを登録し忘れたために起動しないプログラムを取得します! あなたがそれをすべて同じように処方することを気にするまで、私は何度も何度もそれをしなければなりません。 そして、私は感謝の言葉を一言も受け取りません。それどころか、「コンパイルを速くして、あなたは感染します!」、「これはどんな間違いですか? 私のコードではすべてが正しい!」 私はあなたについてどう思うかを言う機会がありません。なぜなら、私は正しいフレーズでレバレッジを持っていないからです。 しかし、もしそうなら、あなたは「コンパイル」をクリックすることを恐れるでしょう...さあ、立ち上がってマシンコードを生成してください!



Vasyaは従い、中間言語の命令をマシンコードの命令に置き換え始めました。 手はかろうじて上昇し、目は鈍くなり、耳にはwhiが聞こえ、足は崩れ、背中は新しい一撃で火傷し、首はほとんど情報の流れから頭を沸騰させませんでした。 はい、Vasyaはbydcoderの地獄に行きました。 彼は確かにそれを知っていました。 彼がここから抜け出すことに成功した場合、彼は悪いコードの記述をやめ、ソースをフォーマットし、変数とメソッドに意味のある名前を付け、プログラムを最適化し始め、決してコンパイラーを決してscらないでください!



Build successfull. Elapsed time: 00:01:19.







...ヴァシャは目を開けた。 オフィスには誰もいませんでした。 開発環境がモニター画面で開かれました。 書式設定されていない行の1つでカーソルが点滅しました。 Vasyaはキーボードに手を伸ばし、Ctrl + Backspaceを押したままにしました。 カーソルは実行され、過去数か月の作業で書かれたすべてのものを使用しました。 クリーンなソースファイルを残して、Vasyaは立ち上がって、コンパイラの出力コンソールを見て、「ありがとう」と言いました。



All Articles