Google Wave: Одновременное совместное редактирование |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
Ванг: Привет. Я Дэвид. Я из команды Google Wave.
Я работаю над одновременным совместным редактированием,
которое вы, вероятно, видели в последнем демо.
Как же мы этого добились?
А добились мы этого,
используя технологию, называемую операционное преобразование.
Это весьма активная область научных исследований
в течении последних десяти лет.
И мы взяли этот алгоритм
и расширили его, чтобы предоставить вам одновременное совместное редактирование,
к которому вы уже так привыкли.
Как это всё работает?
Давайте я покажу на примере.
Представьте, что у нас есть клиент...
и сервер...
и они стартуют в одинаковом состоянии -
A,B,C, и D
Теперь представьте, что клиент хочет вставить букву
между C и D.
И вот он вставляет, скажем, X между символами C и D.
А сервер вообще-то хотел удалить символ B.
И теперь он пришёл к состоянию A, C и D.
Теперь, всё это происходит одновременно.
И как же они сообщают о том,
что сделали всё это с обеих сторон?
Они пересылают действие,
которое мы называем операцией, по каналу.
Так, клиент посылает вставку X в позиции 0,1,2 и 3.
А сервер посылает операцию
удаления символа B в позици 0 и 1.
Теперь, когда другая сторона получает сообщение,
они могли бы слепо это выполнить, если бы захотели.
Но что же произойдёт
если слепо выполнить операцию?
Так, если бы сервер выполнил операцию клиента,
вставил "X" вслепую,
получилось бы состояние A,C,D и X.
но это совершенно не то, что хотел клиент.
То, что нам нужно сделать,
это пройти процесс, называемый преобразованием.
Происходит то, что сервер
берёт операцию клиента
и преобразовывает её вместе со своей операцией.
в результате получается новая операция,
которая вставляет символ X уже в позицию 2.
потому что он вычел позицию
удалённого у себя символа.
Теперь сервер применяет эту операцию,
и получается состояние A,C,X, и D.
Клиент, со своей стороны,
делает точно такие же преобразования.
Однако, в этом случае, получается
что операция преобразовалась в точно такую же операцию.
Клиент оказывается с удалённой B,
c A,C,X и D.
Как видно,
теперь и клиент и сервер
оказываются в одном и том же состоянии,
несмотря на то, что они выполняли операции одновременно
и в разных местах.
Так почему это оживление так важно?
Давайте возьмём аналогию, допустим...
Представьте, вы с другом пошли в кафе,
и разговаривали друг с другом.
И тут вы закрываете уши и говорите -
"Подожди, сперва закончи своё предложение
а потом говори мне его"
И это именно то, что у нас сейчас есть
в мгновенных сообщениях,
где кто-нибудь набирает сообщение,
а вы ждёте пока он закончит.
Вы ждёте, и ждёте, и ждёте.
Но в действительности вы же не ждёте в кафе
пока ваш друг закончит говорить,
до того, как начнёте слушать его, не так ли?
Это бы серьёзно нарушило течение диалога.
Делая вещи живыми и одновременными,
вы получаете очень оживлённый диалог,
будто вы на самом деле говорите с человеком,
и вы можете разговаривать очень быстро.
Одна из важных вещей, которые мы сделали в Google Wave,
это выбор архитектуры клиент/сервер.
Это очень интересная научная область -
использование полностью клиентской системы, без всяких серверов.
Тем не менее, мы намеренно выбрали архитектуру клиент/сервер,
потому что она позволяет обслуживать огромное количество клиентов,
без усложнения системы.
Представьте, например,
у нас есть клиент, клиент 1,
соединяется с сервером,
и другой клиент соединяется с сервером.
И теперь они взаимодействуют с сервером...
связываясь с ним, и используя сервер
как точку ретрансляции.
Что вы c этого имеете?
А получаете вы, во-первых,
одну систему, которая содержит источник истины.
И даже если все клиенты рухнут, или уйдут в оффлайн на долгое время,
есть одно место, откуда вы можете забрать документ.
Другой важный момент в том,
Original (English): Google Wave: Live Collaborating Editing
Translation: © qmax, iBog, vadbars, nashev, Руслан Гроховецкий, Cannoneer .
