ABBYY Lingvoの歴史。 それがすべて始まった方法

画像 私たちのブログでは、すでにABBYY Lingvoの古いバージョンについて少し話しましたが、辞書の歴史の主なものは常に投稿の範囲外でした-どのように作成されましたか。 20年以上前-かなりの期間でしたが、人々は長い間ABBYYで働いていました。1989年にLingvoの最初のバージョンを設計したAlexander Moskalevはまだ会社にいます。 私たちは彼にそれがどのように始まったのかを教えてくれるように頼みました。



研究所の後、チェルノゴロフカのIPTM(ソ連科学アカデミーのマイクロエレクトロニクス技術と高純度材料の問題研究所)に就職しました。 ある時点で、私の直属の上司であるViktor Korotitskyは、CでBツリーアクセス方法(T. Tiori、J。Fry。「データベース構造の設計」)をプログラムすることを提案しました。 なぜそれが必要なのか、そのときは本当に理解していませんでしたが、アイデアは美しく、どのように機能するかを知りたかったのです。 私が選んだすべての品種の中で、最も多忙で実装が難しいものです。 B *ツリーと呼ばれるようです。 すぐに、私たちはなんとか生き延びました。 すぐにどこかに貼り付けたかった。



この時点で、私は「ASP」という名前を話すベラルーシのプログラマーの発案をマスターしました。 (ASPに取り組むことには、ミンスクに旅行したり、8月にセヴァストポリのセミナーに行くことができるなど、いくつかの利点がありました。)研究所図書館の自動化に使用されることになっていた。 プログラムは未加工でしたが、さらに悪いことに、定期的にデータベースを台無しにしました。これは手動で入力しました。 3回目以降、私は故障し、ライブラリカタログの下に自分の気取らないDBMSを書き始めました。 ここで、Bツリーが役立ちました。 常にバランスのとれたツリーのため、彼らはすぐに働いたという点で便利でした。 さらに、リーフは線形リストにリンクされているため、ノードにアクセスせずにソート済みリストを表示できます。



そして、デイビッド・ヤンが現れました。 歴史は年代記に入ったが、私は繰り返します。 その後、デビッドは長髪で、半袖と白いショートパンツの白いシャツを着ていました。 同時に、彼は何とか絶えず微笑んだ。 その時でさえ、私は海外にいませんでしたが、私たちの人々はそのように笑っていないことを知っていました。 また、10年ほど経っても、研究所や少なくとも一部の機関で不足している人はいませんでした。そのため、最初は革命的でした。 デビッドは、プログラムの辞書を作成することを申し出ました。 ある長方形(垂直)には単語のリストがあり、別の長方形(水平)にはカードが開きます。 実験として、英語-ロシア語辞書ロマノフ(ポケット形式の黄色の小冊子)が選択されました。



同意した。 それは私の図書館の芽に非常に似ていました。 しかし、それはメモリ内の常駐プログラムであるはずでした。 そして、私はこれに苦しめなければなりませんでした-努力の約50%が本当の住人を作ることに費やされました。 問題は、PCにドキュメントがほとんどないことでもありました。 情報は完全に素晴らしい方法で配信されました。



役職



DavidはプログラムLingvoを提案しました。 この言葉がエスペラント語で「言語」を意味していることを知ったのは、わずか10年後のことです。 私はそれをLING(uist)VO(lume)として自分で想像しようとしましたが、この名前で彼女はしばらくの間スプラッシュ画面に現れました。 後に、言語学者が私たちの国に現れたとき、彼らは私の「解読」を拒否しました。 何かが形になり始めると、どういうわけか私たちの活動を形作る必要があることが明らかになりました。 デビッドは、会社を設立し、それを「BIT」と呼ぶことを提案しました。



火星と金星



ある時点で、デイビッドは何らかの協同組合によってタイプされた辞書のテキストを持ってき始めました。 それから私は辞書のソースにあまり注意を払わなかったが、無駄だった。 フォントが小さかっただけでなく、テキスト自体には、鉄道のテーマを指定する列車に至るまで、さまざまなアイコン、選択、記号があふれていました。 辞書テキストの一部を手動で入力および編集する必要がありました。 同時に、ロマノフのように、私も最大限に歪曲することを決定し、可能な限り、たとえばfの代わりにPCでテキストエンコーディングの表現を使用しました。 およびm。 (つまり、男性と女性)火星と金星の記号を入れます(記号♂と♀)。



ソーステキストから辞書ファイルを作成するには、コンパイラ-LCを作成する必要がありました。 すぐにアイデアが配布キットに入れられ、小さなデモ用辞書(example.dsl)のソーステキストの例を添付するようになり、人々が辞書をリベットして喜んでくれました。





私が自分で選んだ窓の配色。 私は一般的に、緑はもちろん、シアンと茶色の組み合わせが好きです。 デビッドはそれを好まなかった;彼はこのような何かを提案した:



画像



またはもっと明るい、私の意見では、それはまだ明るい黄色でした。 (90年代の初めには、大量の中国の毒絵が描かれたものだけが現れ、そのような酸の組み合わせは流行していました)。 しかし、私は自分の立場に立っていました。 すべての人を満足させるために、色や他のLingvoパラメータを設定するユーティリティが作成されました。



画像



ほとんどすべてのインターフェイス要素の色を選択することができました。



特殊効果



ちなみに、プログラムが開始されると、次のようなミニスプラッシュスクリーンが表示されます。



画像



デビッドは、スクリーンセーバーが表示されたときに、文字iの上部が「BIT」という単語から外れて「浮き上がって」画面が揺れるという考えを提唱しました。 約1日で私はそれを殺しましたが、浮遊効果の自然さに満足できず、それを吐き出しました。



私自身もほぼ同様のアイデアを生み出しました。 最初のバージョンのセットアッププログラムはおかしく見えました。 5インチのフロッピーディスク(封筒内)が擬似グラフィックで描かれ、ファイルをコピーするプロセスは、有色の笑顔の画面上で鳴きながら飛んで表示されました。



コーディング



ボーランドCの一部はコンパイルに使用され、Microsoftにはコンパイラもありましたが、私には便利ではなかったようです。 長い間、Lingvo.comのすべてのコードは、最小の小さなメモリモデルに収まります(これは、コードとデータが64 KB以内でアドレス指定される場合です)。 その後、リクエストと機能が大きくなると、彼らは小さなモデルに切り替えました。 占有メモリの領域をハードドライブにスワップすることを学習したとき、プログラムのサイズはそれほど重要ではなくなりましたが、慣性によって、コードに余分なものがないことを注意深く監視し続けました。 常駐サイズを最小3.5 Kbに減らすために、Borlandから提供された標準のCブートブートモジュールも書き直しました。 同時に、ちなみに、キーボードスイッチとクラッカーは通常10kb以上かかりました。 このスワップメモリ​​には1つの問題がありました。インターセプトした割り込みがスワップメモリ​​にアクセスし、ブルースクリーンが発生しました。



ところで、プログラミングとデバッグは非常に便利でした。 主なものは非常に高速です。 手で数回パスするだけで(画面やキーボードを見なくてもできます)、結果は明らかです。 このわずかに退屈なWindowsシステムとは異なり、反応時間は常に厳密に予測可能であり、最速のマルチコアプロセッサでさえ、予想外の瞬間に数秒間予測不可能なフリーズが発生することはありません。



保護



保護のために、辞書とインストールのテキストを含めることにしました。 最初のバージョンのユーザー辞書を見ると、そこにある記事のテキストは完全に開いています。 システムディクショナリについては、最も基本的な保護を適用しました。バイトを半分ずつ変更し、マスクを課しました。 ある時点で、辞書が圧縮され始め、質問は完全に消えました。



アーカイバは、Vadim Tereshchenko(現在のABBYYの財務ディレクター)によって書かれました。 アーカイバコードは非常に印象的でした。 長い間(約10年)、製品内でこのアーカイバを管理し、別のユーティリティとして使用していました。



ある時点で、デビッドはサードパーティのシールドシステムを使用してインストールを保護することを提案しました。 ユーザーの間ですぐに多くの問題に直面したため、この共生は長続きしませんでした。 私が作った防御は最も原始的なものでしたが、場合によってはうまくいったようです。 ディスケットのブート(非常に最初の)ブロックでは、オペレーティングシステムの名前が最初のバイトに書き込まれます。通常はMSDOS5.0(間違っていない場合)です。 ディストリビューションを記録するときに、これをMSDOS5.2に変更しました(存在しないバージョン番号)。 そのため、一部のコピー方法では、MSDOS5.0をフォーマットするときに新しいフロッピーディスクが登録されたままであったため、インストールエラーが発生しました。



フロッピーディスクをレーザーで焼くというアイデアがありました。 不良ブロックを使用したこのような保護方法があります。 IPTMでこのために2、3のレーザーを使用してみました。 残念なことに、1つはディスケットに目立った損傷をまったく引き起こさず、もう1つは燃えたため、不良ブロックが「浮いた」ようになりました(ある場所または別の場所で)。 正直なところ、レーザーを使って作業することは私にとって興味深いことでしたが、商業的な意味はあまりありませんでした。



一般的に、それより強く防御する必要はなかったように思えます。 強力な保護があれば、このような大規模な広がりはありません。



ABBYY Lingvoチームブログの資料に基づく



All Articles