„По-лесно е да отговориш, отколкото да мълчиш“ – страхотно интервю с бащата на транзакционната памет Морис Херлихи

„По-лесно е да отговориш, отколкото да мълчиш“ – страхотно интервю с бащата на транзакционната памет Морис Херлихи

Морис Херлихи - собственик на две Награди Дейкстра. Първият е за работа „Синхронизация без изчакване“ (Университет Браун) и вторият, по-скорошен, - „Транзакционна памет: Архитектурна поддръжка за структури от данни без заключване“ (Технологически университет на Вирджиния). Наградата „Дийкстра“ се присъжда за творби, чието значение и влияние се забелязват от поне десет години и очевидно Морис е един от най-известните специалисти в областта. В момента той е професор в университета Браун и има многобройни постижения. Сега той се занимава с изследване на блокчейн в контекста на класическите разпределени изчисления.

Преди това Морис вече е идвал в Русия за SPTCC (видеокасета) и направи отлична среща на общността на разработчиците на Java JUG.ru в Санкт Петербург (видеокасета).

Този хабрапост е страхотно интервю с Морис Херлихи. В него се обсъждат следните теми:

  • Взаимодействие между академичните среди и индустрията;
  • Фондация за изследване на блокчейн;
  • Откъде идват пробивните идеи? Влияние на популярността;
  • д-р под ръководството на Барбара Лисков;
  • Светът чака многоядрени;
  • Нов свят, нови проблеми. NVM, NUMA и хакване на архитектура;
  • Компилатори срещу CPU, RISC срещу CISC, споделена памет срещу предаване на съобщения;
  • Изкуството да пишеш крехък многонишков код;
  • Как да научим учениците как да пишат сложен многонишков код;
  • Ново издание на книгата "Изкуството на многопроцесорното програмиране";
  • Как е измислена транзакционната памет?   
  • Защо си струва да се правят изследвания в областта на разпределените изчисления;
  • Спря ли развитието на алгоритмите и как да живеем;
  • Работа в университета Браун;
  • Разликата между университетски и корпоративни изследвания;
  • Хидра и SPTDC.

Интервютата се провеждат от:

Виталий Аксенов — в момента постдокторант в IST Австрия и служител в отдела по компютърни технологии в университета ITMO. Занимава се с изследвания в областта на теорията и практиката на конкурентните структури от данни. Преди да се присъедини към IST, той получава докторска степен от Парижкия университет Дидро и Университета ITMO при проф. Петър Кузнецов.

Алексей Федоров е продуцент в JUG Ru Group, руска компания, която организира конференции за разработчици. Алексей участва в подготовката на повече от 50 конференции, а автобиографията му съдържа всичко от позицията на инженер по разработка в Oracle (JCK, Java Platform Group) до позицията на разработчик в Odnoklassniki.

Владимир Ситников е инженер в Netcracker. В продължение на десет години той работи върху производителността и мащабируемостта на NetCracker OS, софтуер, използван от телекомуникационните оператори за автоматизиране на процесите на управление на мрежи и мрежово оборудване. Интересуват се от проблеми с производителността на Java и Oracle Database. Автор на над дузина подобрения на производителността в официалния JDBC драйвер на PostgreSQL.

Взаимодействие между академичните среди и индустрията

Алексей: Морис, вие работите в академичните среди от много дълго време и първият въпрос е за взаимодействието между академичните среди и индустрията. Бихте ли ни казали как се промениха взаимодействията между тях напоследък? Какво беше преди 20-30 години и какво се случва сега? 

Морис: Винаги съм се опитвал да работя в тясно сътрудничество с търговски компании, защото те имат интересни предизвикателства. По правило те не се интересуват много нито от публикуване на резултатите си, нито от подробни обяснения на проблемите си пред световната общност. Те се интересуват само от решаването на тези проблеми. Работих за някои от тези компании известно време. Прекарах пет години на пълен работен ден в изследователска лаборатория в Digital Equipment Corporation, която беше голяма компютърна компания. Работих един ден в седмицата в Sun, в Microsoft, в Oracle, работих малко във Facebook. Сега ще изляза в съботен отпуск (професор в американски университет има право да вземе такава ваканция за една година приблизително веднъж на шест години) и ще работя в Algorand, това е такава компания за криптовалута в Бостън. Да работиш в тясно сътрудничество с компании винаги е било удоволствие, защото така научаваш нови и интересни неща. Като цяло можете да сте първият или вторият човек, публикувал статия по избрана тема, вместо постепенно да подобрявате решенията на проблеми, върху които всички останали вече работят.

Алексей: Можете ли да ни разкажете повече за това как се случва това?

Морис: Разбира се. Знаете ли, когато бях в Digital Equipment Corporation, аз и Елиът Мос изобретихме транзакционната памет. Беше много плодотворен период, когато всички започнаха да се интересуват от информационните технологии. Включена паралелност, въпреки че все още не съществуват многоядрени системи. В дните на Sun и Oracle свърших много работа върху паралелни структури от данни. Във Facebook участвах в техния блокчейн проект, за който не мога да говоря, но се надявам скоро да стане публичен. Следващата година в Algorand ще работя в изследователски екип, изучаващ интелигентни договори.

Алексей: През последните няколко години блокчейн стана много популярна тема. Ще помогне ли на вашите изследвания? Може би ще улесни получаването на безвъзмездни средства или ще даде достъп до ресурсите на компаниите, работещи в индустрията?

Морис: Вече получих малък грант от Ethereum Foundation. Популярността на блокчейн е много полезна за вдъхновяване на студентите да работят в тази област. Те са много заинтересовани от това и са щастливи да участват, но понякога не осъзнават, че изследванията, които звучат примамливо отвън, се оказват свързани с наистина усилена работа. Въпреки това много се радвам да използвам цялата тази мистика около блокчейна, помага за привличането на студенти. 

Но това не е всичко. Аз съм в консултативния съвет на няколко стартиращи блокчейн компании. Някои от тях може да успеят, други не, но винаги е много интересно да видиш идеите им, да ги проучиш и да посъветваш хората. Най-вълнуващо е, когато предупреждаваш хората да не правят нещо. Много неща изглеждат като добра идея в началото, но наистина ли са?

Фондация за изследване на блокчейн

Виталий: Някои хора смятат, че блокчейн и неговите алгоритми са бъдещето. А други хора казват, че това е просто още един балон. Можете ли да споделите вашето мнение по този въпрос?

Морис: Много от това, което се случва в света на блокчейн, не работи правилно, някои са просто измами, много неща са надценени. Мисля обаче, че има солидна научна основа за тези изследвания. Фактът, че светът на блокчейн е пълен с идеологически разделения, показва нивото на вълнение и отдаденост. От друга страна, не е особено полезно за научни изследвания. Сега, ако публикувате статия, която говори за недостатъците на определен алгоритъм, получената реакция не винаги е напълно научна. Често хората изразяват емоциите си. Мисля, че подобен шум в тази област може да изглежда привлекателен за някои, но в крайна сметка има реални научни и инженерни проблеми, които все още не са разгледани. Тук има много компютърни науки.

Виталий: Значи се опитвате да положите основата за изследване на блокчейн, нали?

Морис: Опитвам се да положа основата на солидна, научно и математически стабилна дисциплина. И част от проблема е, че понякога трябва да противоречиш на някои от твърде суровите позиции на други хора, да ги пренебрегваш. Понякога хората питат защо работя в сфера, от която се интересуват само терористи и наркодилъри. Подобна реакция е също толкова безсмислена, колкото поведението на последователите, които сляпо повтарят вашите думи. Мисля, че истината е някъде по средата. Блокчейн тепърва ще има дълбоко въздействие върху обществото и глобалната икономика. Но вероятно това няма да се случи благодарение на съвременните технологии. Съвременните технологии ще се развиват и това, което в бъдеще ще се нарича блокчейн, ще стане много важно. Може би дори няма да изглежда като съвременните блокчейни, това е отворен въпрос.

Ако хората измислят нови технологии, те ще продължат да го наричат ​​блокчейн. Искам да кажа, точно както днешният Fortran няма нищо общо с езика Fortran от 1960-те години, но всички продължават да го наричат ​​Fortran. Същото и за UNIX. Това, което се нарича „блокчейн“, тепърва ще прави своята революция. Но се съмнявам, че този нов блокчейн ще бъде като това, което всеки обича да използва днес.

Откъде идват пробивните идеи? Влияние на популярността

Алексей: Популярността на блокчейна доведе ли до нови резултати от научна гледна точка? Повече взаимодействие, повече студенти, повече компании в района. Има ли вече резултати от това нарастване на популярността?

Морис: Заинтересувах се от това, когато някой ми даде официална листовка за компания, която току-що беше събрала доста пари. Тя писа за задачата на византийските пълководцис които съм повече от запознат. Написаното в листовката беше очевидно технически неправилно. Хората, които написаха това, не разбраха наистина модела зад проблема... и въпреки това тази компания събра много пари. Впоследствие компанията тихомълком замени тази листовка с много по-правилна версия - и няма да казвам как се казва тази фирма. Те все още съществуват и се справят много добре. Този случай ме убеди, че, първо, блокчейн е просто форма на разпределено изчисление. Второ, прагът за влизане (по това време, преди четири години) беше доста нисък. Хората, работещи в тази област, бяха много енергични и умни, но не четяха научни трудове. Те се опитаха да преоткрият известни неща и го направиха погрешно. Днес драмата е намалена.

Алексей: Много е интересно, защото преди няколко години имахме друга тенденция. Това е малко като разработка на предния край, където разработчиците на интерфейси на браузъри преоткриват цели технологии, които вече са били популярни в задния край по това време: изграждане на системи, непрекъсната интеграция и подобни неща. 

Морис: Съгласен съм. Но това не е изненадващо, защото наистина пробивните идеи винаги идват извън установената общност. Утвърдени изследователи, особено авторитети в академичните среди, е малко вероятно да направят нещо наистина новаторско. Лесно е да напишете доклад за следващата конференция за това как леко сте подобрили резултатите от предишната си работа. Отидете на конференция, съберете се с приятели, говорете за едни и същи неща. А хората, които пробиват с пробивни идеи, почти винаги идват отвън. Те не знаят правилата, не знаят езика, но все пак... Ако сте в установена общност, съветвам ви да обърнете внимание на нови неща, на нещо, което не се вписва в голямата снимка. В известен смисъл може да се направи опит да се комбинират външни, по-плавни разработки с техники, които вече разбираме. Като първа стъпка се опитайте да създадете научна база и след това да я модифицирате, така че да може да се приложи към нови пробивни идеи. Мисля, че блокчейнът е страхотен за ролята на нова пробивна идея.

Алексей: Защо мислиш, че се случва това? Защото хората "отвън" нямат някакви специфични бариери, присъщи на общността?

Морис: Тук има модел. Ако прочетете историята на импресионистите в живописта и изкуството като цяло, тогава по едно време известни художници отхвърлиха импресионизма. Казаха, че това е някаква детинщина. Поколение по-късно тази отхвърлена преди това форма на изкуство се превърна в стандарт. Това, което виждам в моята област: изобретателите на блокчейна не се интересуваха от власт, от прекратяване на публикации и индекс на цитиране, те просто искаха да направят нещо добро. И така те седнаха и започнаха да го правят. Липсваше им известна техническа дълбочина, но това може да се поправи. Много по-трудно е да се измислят нови творчески идеи, отколкото да се коригират и разширят недостатъчно зрели. Благодарение на тези изобретатели, сега има какво да правя!

Алексей: Това е подобно на разликата между стартъпи и наследени проекти. Ние наследяваме много мисловни ограничения, бариери, специални изисквания и т.н.

Морис: Добра аналогия е разпределеното изчисление. Мислете за блокчейн като за стартираща компания и разпределени компютри като голяма утвърдена компания. Разпределените изчисления са в процес на закупуване и сливане с блокчейн.

Доктор при Барбара Лисков

Виталий: Все още имаме много въпроси! Проучвахме вашата биография и се натъкнахме на интересен факт за вашата докторска степен. Да, беше много отдавна, но темата май е важна. Получавате докторска степен под ръководството на Варвара Лискова! Барбара е много известна в общността за разработка на езици за програмиране и като цяло е много известна личност. Логично е вашето изследване да е в областта на езиците за програмиране. Как преминахте към паралелни изчисления? Защо реши да смениш темата?

Морис: По онова време Барбара и нейната група просто разглеждаха разпределените изчисления, което беше много нова идея. Имаше и такива, които казаха, че разпределеното изчисление е глупост, комуникацията между компютрите е безсмислена. Един от въпросите, разглеждани при разпределените изчисления, който ги отличава от централизираните изчисления, е толерантността към грешки. След много проучвания решихме, че в езика за програмиране за разпределени изчисления трябва да имате нещо като атомарни транзакции, защото никога не можете да сте сигурни, че дистанционното повикване ще успее. След като имате транзакции, има проблем с контрола на едновременността. След това имаше много работа за получаване на силно паралелни транзакционни структури от данни. След това, когато завърших, отидох при Карнеги Мелън и започна да търси тема за работа. Хрумна ми, че компютрите са се преместили от отделни компютри към мрежи от компютри. Естествено продължение на прогреса биха били мултипроцесорите - тогава думата "многоядрен" не съществуваше. Помислих си: какъв е еквивалентът на атомарните транзакции за многоядрена система? Определено не са обикновени транзакции, защото са твърде големи и тежки. И така ми хрумна идеята линеаризация и така измислих цялата синхронизация без изчакване. Това беше опит да се отговори на въпроса какъв е аналогът на атомарните транзакции за многопроцесорна система със споделена памет. На пръв поглед това произведение може да изглежда съвсем различно, но всъщност е продължение на същата тема.

Светът очаква многоядрени

Виталий: Споменахте, че по това време е имало много малко многоядрени компютри, нали?

Морис: Те просто не съществуват. Имаше няколко така наречени симетрични мултипроцесора, които основно бяха свързани към една и съща шина. Не работеше много добре, защото всеки път, когато нова компания създаваше нещо подобно, Intel пускаше един процесор, който превъзхождаше мултипроцесора.

Алексей: Това не означава ли, че в онези древни времена това е било по-скоро теоретично изследване?

Морис: Това не беше теоретично, а по-скоро спекулативно изследване. Всичко това не беше свързано с работа с много теореми, а по-скоро изложихме хипотези за архитектурата, която не съществуваше по това време. За това са изследванията! Никоя компания не би направила това, всичко беше нещо от далечното бъдеще. Всъщност това беше до 2004 г., когато се появиха истински многоядрени процесори. Поради факта, че процесорите прегряват, можете да направите процесора още по-малък, но не можете да го направите по-бърз. Поради това имаше преход към многоядрени архитектури. И тогава това означаваше, че изведнъж имаше приложение за всички концепции, които бяхме разработили в миналото.

Алексей: Защо мислите, че многоядрените процесори се появиха едва през XNUMX-те? Така че защо толкова късно?

Морис: Дължи се на хардуерни ограничения. Intel, AMD и други компании са много добри в повишаването на скоростта на процесора. Когато в един момент процесорите станат достатъчно малки, че не могат повече да увеличат тактовата честота, защото процесорите ще започнат да изгарят. Можете да ги направите по-малки, но не и по-бързи. Какво е по силите им - вместо много малък процесор, поберете осем, шестнадесет или тридесет и два процесора в същия обем на кутията, където преди се побираше само един. Сега имате многопоточност и бърза комуникация между тях, защото споделят кешове. Но не можете да ги накарате да работят по-бързо - има много специфично ограничение на скоростта. Те продължават да се подобряват малко по малко, но не толкова. Законите на физиката ни попречиха.

Нов свят, нови проблеми. NUMA, NVM и хакване на архитектура

Алексей: Звучи много разумно. С новите многоядрени процесори дойдоха нови проблеми. Вие и вашите колеги очаквахте ли тези проблеми? Може би сте ги проучили предварително? В теоретичните изследвания често не е много лесно да се предвидят такива неща. Когато възникнаха проблеми, до каква степен те оправдаха Вашите и на Вашите колеги очаквания? Или са били чисто нови и вие и вашите колеги е трябвало да отделите много време за решаване на проблеми, когато са възникнали?

Виталий: Ще добавя към въпроса на Алексей: правилно ли прогнозирахте архитектурата на процесорите, докато учехте теория?

Морис: Не всички 100%. Но мисля, че моите колеги и аз свършихме добра работа с прогнозирането на многоядрени системи със споделена памет. Мисля, че правилно предвидихме трудностите при проектирането на паралелни структури от данни, които работят без ключалки. Такива структури от данни са били важни за много приложения, макар и не за всички, но често наистина се нуждаете от структура от данни без заключване. Когато ги измислихме, мнозина твърдяха, че това са глупости, че всичко работи добре с брави. Доста добре предвидихме, че ще има готови решения за много програмни проблеми и проблеми със структурата на данните. Имаше и по-сложни проблеми, като напр IN – Неравномерен достъп до паметта. Всъщност те дори не са били разглеждани до изобретяването на многоядрените процесори, защото са били твърде специфични. Изследователската общност работи върху въпроси, които като цяло бяха предвидими. Някои хардуерни проблеми, свързани със специфични архитектури, трябваше да чакат в крилата - всъщност, появата на тези архитектури. Например, никой наистина не е работил върху специфични за GPU структури от данни, защото GPU не е съществувал тогава. Въпреки че е свършена много работа по SIMD, тези алгоритми бяха готови за използване веднага щом се появи правилният хардуер. Невъзможно е обаче да се предвиди всичко.

Алексей: Ако разбирам правилно, NUMA е вид компромис между цена, производителност и някои други неща. Някаква идея защо NUMA дойде толкова късно?

Морис: Мисля, че NUMA съществува поради проблем с хардуера, използван за създаване на памет: колкото по-далеч са компонентите, толкова по-бавен е достъпът до тях. От друга страна, втората стойност на тази абстракция е еднородността на паметта. Следователно, една от характеристиките на паралелното изчисление е, че всички абстракции са леко нарушени. Ако достъпът беше напълно еднакъв, цялата памет щеше да е на еднакво разстояние, но това е икономически и може би дори физически невъзможно. Така възниква този конфликт. Ако напишете програмата си така, сякаш паметта е еднаква, тогава най-вероятно тя ще бъде правилна. В смисъл, че няма да дава грешни отговори. Но изпълнението на нейните звезди от небето няма да грабне. По същия начин, ако пишете спинлокове без разбиране на йерархията на кешовете, самото заключване ще бъде правилно, но можете да забравите за производителността. В известен смисъл трябва да пишете програми, които живеят върху много проста абстракция, но трябва да надхитрите хората, които са ви дали тази абстракция: трябва да знаете, че под абстракцията има някаква йерархия на паметта, че има автобус между вас и тази памет и т.н. По този начин има известен конфликт между абстракции, които са полезни сами по себе си, което ни води до много специфични и прагматични проблеми.

Виталий: Ами бъдещето? Можете ли да предвидите как ще се развиват по-нататък процесорите? Има идея, че един от отговорите е транзакционната памет. Вероятно имате още нещо на склад.

Морис: Предстоят няколко големи предизвикателства. Едната е, че кохерентната памет е чудесна абстракция, но започва да се разпада в специални случаи. Така например NUMA е жив пример за нещо, където можете да продължите да се преструвате, че съществува еднаква памет. Всъщност – не, изпълнението ще ви разплаче. В един момент архитектите ще трябва да се откажат от идеята за унифицирана архитектура на паметта, не можете да се преструвате вечно. Ще са необходими нови модели за програмиране, които са достатъчно лесни за използване и достатъчно мощни, за да направят базовия хардуер ефективен. Това е много труден компромис, защото ако покажете на програмистите архитектурата, която всъщност се използва в хардуера, те ще полудеят. Твърде сложно е и не е преносимо. Ако представите интерфейс, който е твърде прост, производителността ще бъде лоша. По този начин ще трябва да се направят много много трудни компромиси, за да се осигурят полезни модели за програмиране, приложими към наистина големи многоядрени процесори. Не съм сигурен, че друг освен тесен специалист е способен да програмира на 2000-ядрен компютър. И освен ако не правите много специализирани или научни изчисления, криптография или каквото и да било, все още изобщо не е ясно как да го направите правилно. 

Друго подобно направление са специализираните архитектури. Графичните ускорители съществуват от дълго време, но вече са се превърнали в класически пример за това как можете да вземете специализиран тип изчисление и да го стартирате на специален чип. Това добавя своите предизвикателства: как комуникирате с такова устройство, как го програмирате. Наскоро работих по задачи в района почти изчисления с памет. Взимате малък процесор и го залепвате към огромна част от паметта, така че паметта да работи на L1 кеш скорост, и след това комуникира с устройство като TPU - процесорът е зает да зарежда нови задачи в ядрото на вашата памет. Разработването на структури от данни и комуникационни протоколи за подобни неща е друг интересен пример. Така специализираните процесори и хардуер ще бъдат обект на подобрения още доста време.

Алексей: Какво ще кажете за енергонезависимата памет (енергонезависима памет)?

Морис: О, това е още един чудесен пример! NVM значително ще промени начина, по който гледаме на неща като структури от данни. Енергонезависимата памет в известен смисъл обещава наистина да ускори нещата. Но това няма да улесни живота, защото повечето процесори, кешове и регистри все още са непостоянни. Когато стартирате след срив, вашето състояние и състоянието на паметта ви няма да бъдат точно същите като преди срива. Много съм благодарен на хората, участващи в NVM - дълго време изследователите ще имат какво да правят, опитвайки се да разберат условията за коректност. Изчисленията са правилни, ако могат да преживеят срив, при който съдържанието на кешовете и регистрите се губи, но основната памет остава непокътната.

Компилатори срещу CPU, RISC срещу CISC, споделена памет срещу предаване на съобщения

Владимир: Какво мислите за дилемата компилатори срещу процесори по отношение на набора от инструкции? Да обясня за тези, които не са в темата: ако отидем до неравномерна памет или нещо подобно, можем да приложим много прост набор от инструкции и да поискаме от компилатора да генерира сложен код, който може да се възползва от предимствата. Или можем да тръгнем по друг начин: да внедрим сложни инструкции и да поискаме от процесора да пренареди инструкциите и да извърши други манипулации с тях. Какво мислиш за това?

Морис: Всъщност нямам отговор на този въпрос. Този дебат продължава вече четири десетилетия. Имаше време между съкратено набор от команди и трудно гражданските войни са водени от набор от екипи. За известно време хората от RISC спечелиха, но след това Intel преустроиха своите двигатели, така че вътре да се използва намален набор от инструкции, а пълният беше изнесен навън. Може би това е тема, в която всяко ново поколение трябва да намери своите компромиси и да вземе свои решения. Много е трудно да се предвиди кое от тези неща ще се окаже по-добро. Така че всяко мое предсказание ще бъде вярно за определен период от време, след което отново ще стане невярно за известно време и след това отново ще бъде вярно.

Алексей: Колко обичайно е за индустрията като цяло някои идеи да печелят в продължение на няколко десетилетия и да губят през следващите? Има ли други примери за такива периодични промени?

Морис: В областта на разпределените изчисления има хора, които вярват в споделена памет и хора, които вярват в съобщения. Първоначално в разпределеното изчисление, паралелното изчисление означава предаване на съобщения. Тогава някой откри, че споделената памет прави програмирането много по-лесно. Другата страна каза, че споделената памет е твърде сложна, защото се нуждаят от брави и други подобни, така че си струва да преминете към езици, където просто не съществува нищо друго освен предаване на съобщения. Някой погледна какво излезе от това и каза: „уау, тази реализация на съобщения изглежда много подобна на споделена памет, защото създавате много, много от тези малки модули, те изпращат съобщения един на друг и всички задънена улица, - нека направим базата данни със споделена памет по-добра!". Всичко това се повтаря отново и отново и не може да се каже, че една от страните е недвусмислено права. Едната страна винаги ще доминира, защото щом една от тях почти победи, хората отново и отново измислят начини да подобрят другата.

Изкуството да пишеш чуплив многонишков код

Алексей: Това е много интересно. Например, когато пишем код, без значение какъв език за програмиране, обикновено трябва да създаваме абстракции като клетки, които могат да се четат и записват. Но всъщност на някакво физическо ниво може да изглежда като изпращане на съобщение по хардуерна шина между различни компютри и други устройства. Оказва се, че има работа и на двете нива на абстракция едновременно.

Морис: Абсолютно вярно е, че споделената памет е изградена върху предаване на съобщения – шини, кешове и т.н. Но е трудно да се пишат програми, използвайки предаване на съобщения, така че хардуерът умишлено лъже, преструвайки се, че имате някаква унифицирана памет. Това ще ви улесни да пишете прости, правилни програми, преди производителността да започне да пада. Тогава казвате: изглежда е време да се сприятелим с кеша. И тогава започвате да се тревожите за местоположението на кеша и тогава тръгваме. В известен смисъл вие нарушавате абстракцията: знаете, че това не е просто плоска, хомогенна памет и ще използвате това знание, за да пишете програми, удобни за кеша. Това е, което трябва да правите в реални задачи. Този конфликт между хубавата проста хубава абстракция, която ви беше дадена, и ужасно сложната реализация на основния хардуер е мястото, където всеки прави своя собствен компромис. Имам книга за мултипроцесорите и синхронизацията и един ден щях да напиша глава за структурите от данни в java.util.concurrent. Ако ги погледнете, неща като списъци за пропускане Това са невероятни произведения на изкуството. (Бележка на редактора: тези, които са запознати с езика Java, трябва поне да погледнат изпълнението ConcurrentSkipListMap, Можете да разгледате връзките за API и програмен код). Но от моя гледна точка би било безотговорно да ги показвам на студенти, защото такава структура от данни е нещо като човек в цирка, който тича по опънато въже над меча яма. Ако промените дори един малък детайл, цялата конструкция ще се срине. Този код е много бърз и елегантен, само защото е перфектно написан, но най-малката промяна ще доведе до пълен провал. Ако дам този код за пример на учениците, те веднага ще кажат: И аз мога това! И тогава някой самолет ще се разбие или ядрен реактор ще избухне и аз ще съм виновен, че не им дадох твърде много информация в подходящия момент.

Алексей: Когато бях малко по-млад, много пъти се опитвах да изучавам изходния код на Дъг Лий, например, java.util.concurrent, тъй като е с отворен код, е много лесно да го намерите и да се опитате да разберете какво се случва там. Не се оказа много добре: често е напълно неясно защо Дъг реши да направи нещо по този начин, когато всички останали го правят по различен начин. Как обяснявате тези неща на учениците си? Има ли конкретен правилен начин да се опишат специфичните детайли на хардкор алгоритъм, например? Как го правиш?

Морис: Учителите по рисуване имат едно клише, което първо запомнят: ако искате да рисувате като Пикасо, първо трябва да се научите как да рисувате прости реалистични картини и едва когато знаете правилата, можете да започнете да ги нарушавате. Ако незабавно започнете с нарушаване на правилата, получавате бъркотия. Първо, уча учениците как да пишат прост, правилен код, без да се притесняват за производителността. Казвам, че тук се крият сложни проблеми с времето, така че не се притеснявайте за кеш паметта, не се тревожете за моделите на паметта, просто се уверете, че всичко работи правилно. Вече е достатъчно трудно: модерното програмиране не е лесно само по себе си, особено за нови студенти. И когато имат интуиция за това как да пишат правилни програми, аз казвам: вижте тези две реализации на spinlock: едната е много бавна, а втората също не е много добра, но вече е по-добра. Въпреки това, математически тези два алгоритъма са еднакви. Всъщност един от тях използва локализация на кеша. Единият от тях върти локално кеширани данни, а другият многократно извършва операции, преминаващи през шината. Не можете да пишете ефективен код, ако не го разбирате, ако не знаете как да разбиете абстракцията и да разгледате основната структура. Но няма да можете да започнете да го правите веднага. Има хора, които започват да правят това веднага и вярват в собствената си гениалност, обикновено завършва зле, защото не разбират принципите. Никой не рисува като Пикасо или не пише програми като Дъг Лий, току що завършил университета, в първата си седмица. Необходими са години, за да се достигне това ниво на познание.

Алексей: Оказва се, че разделяте проблема на две части: първата е коректността, втората е изпълнението?

Морис: Точно така. И в този ред. Част от проблема е, че новите ученици не осъзнават, че коректността се постига трудно. Те казват на пръв поглед: това очевидно е правилно, остава само да го ускорим. Така че понякога им казвам за присъщо неправилен алгоритъм, сякаш е правилен.

Как да научим учениците как да пишат сложен многонишков код

Алексей: Само за да видя дали могат да усетят трика?

Морис: Винаги ви предупреждавам предварително, че понякога ще измисля грешни алгоритми. Не бива да заблуждавате хората. Предлагам им да бъдат скептични относно информацията. Ако кажа нещо и кажа: „вижте, това очевидно е правилно“ - това е сигнал, че някъде се опитват да ви измамят и трябва да започнете да задавате въпроси. След това се опитвам да насърча учениците да продължат да задават въпроси и след това подканвам: „какво ще стане, ако оставим всичко както си е?“. И веднага виждат грешката. Но да убедите учениците, че трябва да се тревожат за коректността, е по-трудно, отколкото изглежда на пръв поглед. Много от тези ученици идват с опит в програмирането в гимназията, някои вече са намерили работа и са програмирали там и всички те са изпълнени със самочувствие. Това е нещо военно: първо трябва да промените тяхното мислене, за да ги убедите да подходят търпеливо към решаването на възникващите проблеми. Или може би е като будистките монаси: първо се научават да разсъждават за коректността и след като разберат начините за разсъждение за коректността, им е позволено да преминат на следващото ниво и да започнат да се тревожат за представянето.

Алексей: Тоест понякога показвате на учениците неработещи примери, благодарение на които получавате обратна връзка, която показва дали те разбират същността на проблема, дали могат да намерят грешен код и грешен резултат. Е, как студентите обикновено харесват или разстройват?

Морис: Почти винаги учениците в крайна сметка намират грешката. Ако търсят твърде бавно, аз задавам насочващи въпроси и тук е важно да разберете, че ако никога не бъдат измамени, те ще започнат да възприемат необмислено вашите думи като последна истина. После се отегчават и заспиват, четейки фейсбук на лаптопа си по време на час. Но когато ги уведомите предварително, че ще бъдат измамени и ще изглеждат глупаво, ако не усетят трик, те стават много по-бдителни. Това е добре в много отношения. Бих искал учениците не само да поставят под въпрос своето разбиране по въпроса, но и да поставят под въпрос авторитета на учителя. Идеята е, че ученикът може да вдигне ръка по всяко време и да каже: Мисля, че това, което току-що казахте, е грешно. Това е важен инструмент за обучение. Не искам никой от студентите да седи и мълчаливо да си мисли: всичко това изглежда пълна глупост, но е твърде страшно да вдигнете ръка, а той наистина е професор, така че всичко, което казва, е вярно. Следователно, ако са предупредени предварително, че не всичко разказано е непременно вярно, те имат стимул да обърнат повече внимание на материала. Изрично заявявам, че вдигането на ръка и задаването на въпроси е добре. Вашият въпрос може да звучи глупаво или наивно, но често така възникват най-добрите въпроси.

Алексей: Много интересно. Обикновено хората имат някаква психологическа бариера, която им пречи да зададат въпрос на професора. Особено ако в стаята има много хора и всички се страхуват, че обсъждането на вашия глупав въпрос ще отнеме времето на всички тези хора. Има ли някакви трикове за справяне с това?

Морис: Често спирам и задавам класическите въпроси. Ще бъде ли правилно някое твърдение или как ще решат обсъждания проблем. Това е ключова стъпка, особено в началото на сесията, когато хората се притесняват да кажат и най-малкото нещо. Задавате въпрос на учениците и не казвате нищо повече. Настъпва тишина, всички се напрягат леко, напрежението расте, после изведнъж някой се срива, счупва и казва отговора. Така разгръщаш ситуацията: става по-трудно и неудобно да мълчиш, отколкото да отговаряш! Това е стандартен педагогически трик. Всеки учител по света трябва да знае как да направи това.

Алексей: Сега имаме страхотно заглавие за това интервю: „по-лесно е да отговориш, отколкото да мълчиш“.

Виталий: Нека те попитам още нещо. Вие работите върху топологични доказателства. Как изобщо се включи в това, защото разпределеното изчисление и топологията са напълно различни неща!

Морис: Има скрита връзка. Когато бях студент и учех математика, учех чиста математика. Нямах истински интерес към компютрите до края на обучението си и се оказах в спешната нужда да си търся работа. Като студент изучавах алгебрична топология. Много години по-късно, докато работех върху проблем, наречен „Проблем със споразумението на k-Set“, използвах графики, за да моделирам проблема и, както изглеждаше тогава, намерих решение. Просто трябваше да седнете и да обиколите графиката. Опитайте се да намерите подходящ отговор на тази графика. Но алгоритъмът ми не проработи: оказа се, че той винаги ще тича в кръг. За съжаление, нищо от това не може да бъде обяснено на официалния език на теорията на графите, езикът, който всички компютърни учени знаят. И тогава си спомних, че преди много години, дори в часовете по топология, използвахме концепцията "симплициален комплекс", което е обобщение на графики към по-високи измерения. Тогава се запитах: какво се случва, ако преформулираме проблема от гледна точка на прости комплекси? Това стана ключът. Чрез използването на по-мощен формализъм проблемът изведнъж става много по-прост. Хората се бориха с него дълго време, използвайки графики, но не можаха да направят нищо. И дори сега не могат - верният отговор не беше алгоритъмът, а доказателството за невъзможността за решаване на проблема. Тоест такъв алгоритъм просто не съществува. Но всяко доказателство за невъзможност се основава или на прости комплекси, или на неща, които хората се преструват, че не смятат за прости комплекси. От факта, че сте нарекли нещо с ново име, то не губи същността си.

Виталий: Оказва се, че просто сте имали късмет?

Морис: Освен късмет, това също е готовност. Което означава, че не трябва да забравяте "безполезните" неща, които сте научили преди. Колкото повече безполезни неща научите, толкова повече прозрения ще можете да извлечете, когато се сблъскате с нов проблем. Този вид интуитивно съвпадение на шаблони е важно, защото... Да кажем просто, това е верига: в началото открих, че графиките не работят съвсем или изобщо не работят, това ми напомни за нещо отпреди осем години и студентските години, когато изучавахме всички тези прости комплекси. На свой ред това ми позволи да намеря стария си учебник по топология и да го заредя обратно в главата си. Но ако не беше това старо знание, никога нямаше да напредна в решаването на първоначалния проблем.

Ново издание на Изкуството на многопроцесорното програмиране

Алексей: Казахте няколко думи за вашата книга. Вероятно не е най-голямата тайна, че сте написали най-известната книга в света за многопоточността, "Изкуството на многопроцесорното програмиране". Тя вече е на около 11 години и оттогава само излиза  преработено препечатване. Ще има ли второ издание?

Морис: Добре, че попита! Ще бъде много скоро, след около три месеца. Има още двама автори, добавихме много повече материал, подобрихме раздела за паралелизма на разклоняване / присъединяване, написахме раздел за MapReduce, добавихме много нови неща и изхвърлихме ненужните - нещо, което беше много интересно по време на писането първото издание, но днес вече не е. Получи се много сериозно преработена книга.

Алексей: Всичко вече е направено, остава само да се освободи?

Морис: Все още трябва да се работи върху няколко глави. Нашият издател (мисля, че вече ни мрази) все още се опитва да внуши, че трябва да работим по-бързо. Много изоставаме от графика. Теоретично можехме да направим тази книга няколко години по-рано.

Алексей: Има ли шанс да получите нова версия на книгата преди Коледа?

Морис: Това е нашата цел! Но толкова пъти съм предричал победа, че вече никой не ми вярва. Вероятно също не трябва да ми вярвате твърде много по този въпрос.

Алексей: Във всеки случай това е фантастична новина. Много ми хареса първото издание на книгата. Може да се каже, че съм фен.

Морис: Надявам се, че новото издание ще бъде достойно за вашия пламенен ентусиазъм, благодаря!

Как е изобретена транзакционната памет

Виталий: Следващият въпрос е за транзакционната памет. Доколкото разбрах, ти си пионер в тази област, измислил си я във време, когато никой не е мислил за такива неща. Защо решихте да се преместите в тази област? Защо транзакциите бяха важни за вас? Мислехте ли, че някой ден те ще бъдат въплътени в желязо?

Морис: Знам за транзакциите още от следването си.

Виталий: Да, но това са различни сделки!

Морис: Работих с Елиът Мос върху неблокиращото събиране на боклука. Нашият проблем беше, че искахме атомно да променим няколко думи в паметта и тогава алгоритмите щяха да станат много прости и поне някои от тях щяха да станат по-ефективни. Използвайки сравняване и размяна за load-link/store-conditionalосигурено от паралелната архитектура, е възможно да се направи нещо, но е много неефективно и грозно, защото ще трябва да се справите с нива на индиректност. Искам да променя думите на паметта и трябва да превключвам, защото мога да променя само един указател, така че те трябва да сочат към някакъв вид структура, подобна на директория. Говорихме колко страхотно би било, ако можем да променим хардуера, така че да може да записва едновременно. Елиът изглежда е забелязал това: ако погледнете протоколите за кохерентност на кеша, те вече осигуряват повечето от необходимата функционалност. При оптимистична транзакция протоколът за кохерентност на кеша ще забележи наличието на конфликт във времето и кешът ще стане празнота. Какво се случва, ако спекулативно стартирате транзакция в кеша си и използвате механизмите на протокола за съгласуваност за откриване на конфликти? Спекулативната хардуерна архитектура беше лесна за проектиране. Така че ние го написахме най-първата публикация относно транзакционната памет. По същото време компанията, за която работех, Digital Equipment Corporation, създаваше нов 64-битов процесор, наречен Alpha. И така отидох и изнесох презентация пред екипа за разработка на Alpha за нашата прекрасна транзакционна памет и те попитаха: какъв допълнителен доход ще получи нашата компания, ако поставим всичко това директно в процесора? И нямах абсолютно никакъв отговор на това, защото аз съм технолог, не съм маркетинг специалист. Наистина нямах какво да кажа. Не бяха много впечатлени, че не знам нищо.

Виталий: Милиарди! Просто кажете "милиарди"!

Морис: Да, това трябваше да кажа. Сега, в ерата на стартъпите и всичко това, знам как да напиша бизнес план. Че можете да излъжете малко за размера на потенциалната печалба. Но в онези дни това изглеждаше наивно, така че просто казах: „Не знам“. Ако погледнете историята на публикацията за транзакционната памет, ще забележите, че след една година имаше няколко препратки към нея, а след това в продължение на около десет години никой изобщо не цитира тази статия. Кавичките се появиха около 2004 г., когато се появи истинската многоядреност. Когато хората откриха, че писането на паралелен код може да печели пари, започнаха нови изследвания. Рави Раджвар написа статия, което по някакъв начин въведе основното течение в концепцията за транзакционна памет. (Бележка на редактора: Тази статия има втора версия, издадена през 2010 г. и е свободно достъпна като PDF). Изведнъж хората осъзнаха как точно може да се използва всичко това, как могат да ускорят традиционните алгоритми с ключалки. Добър пример за нещо, което в миналото изглеждаше като интересен академичен проблем. И да, ако ме попитахте тогава дали смятам, че всичко това ще бъде важно в бъдеще, щях да кажа: разбира се, но кога точно не е ясно. Може би след 50 години? На практика се оказа само едно десетилетие. Много е хубаво, когато направиш нещо и само след десет години хората го забелязват.

Защо си струва да се правят изследвания в областта на разпределените изчисления

Виталий: Ако говорим за нови изследвания, какво бихте посъветвали читателите - разпределени изчисления или многоядрени и защо? 

Морис: В наши дни е лесно да се снабдите с многоядрен процесор, но е по-трудно да настроите истинска разпределена система. Започнах да работя върху тях, защото исках да направя нещо различно от моята докторска степен. Това е съветът, който винаги давам на начинаещите: не пишете последваща дисертация - опитайте се да тръгнете в нова посока. Освен това многонишковостта е лесна. Мога да експериментирам със собствената си вилица, работеща на лаптоп, без да ставам от леглото. Но ако изведнъж поисках да създам истинска разпределена система, ще трябва да свърша много работа, да привлека студенти и т.н. Аз съм мързелив човек и бих предпочел да работя на многоядрени. Експериментирането с многоядрени системи също е по-лесно от експериментирането с разпределени, защото дори в една глупава разпределена система има твърде много фактори за контрол.

Виталий: Какво правите сега, изследвате блокчейн? На кои статии първо трябва да обърнете внимание?

Морис: Наскоро се появи много добра статиякойто написах с моя ученик, Викрам Сараф, специално за Конференции на Tokenomcs в Париж преди три седмици. Това е статия за полезни разпределени системи, в които предлагаме да направим Ethereum многонишков. Сега интелигентните договори (код, който работи в блокчейна) се изпълняват последователно. По-рано написахме статия, в която говорихме за начин за използване на спекулативни транзакции за ускоряване на процеса. Взехме много идеи от софтуерната транзакционна памет и казахме, че ако направите тези идеи част от виртуалната машина Etherium, тогава всичко ще работи по-бързо. Но за това е необходимо в договорите да няма конфликти на данни. И тогава предположихме, че в реалния живот наистина няма такива конфликти. Но не сме имали възможност да разберем. Тогава ни хрумна, че имаме почти десет години реална договорна история в ръцете си, така че разтоварихме блокчейна Etherium и се зачудихме: какво би се случило, ако тези исторически записи вървят паралелно? Открихме значително увеличение на скоростта. В ранните дни на Etherium скоростта се увеличи много, но днес всичко е малко по-сложно, защото има по-малко договори и вероятността от конфликти относно данни, които изискват сериализация, стана по-висока. Но всичко това е експериментална работа с реални исторически данни. Хубавото на blockchain е, че той помни всичко завинаги, така че можете да се върнете назад във времето и да проучите какво би се случило, ако използваме други алгоритми за изпълнение на кода. Как хората в миналото биха харесали нашата нова идея. Много по-лесно и приятно е да се правят такива изследвания, защото има нещо, което следи всичко и записва всичко. Това вече е нещо повече като социология, отколкото разработване на алгоритми.

Спря ли развитието на алгоритмите и как да живеем

Виталий: Време е за последния теоретичен въпрос! Усещате ли, че напредъкът в конкурентните структури от данни намалява всяка година? Смятате ли, че сме достигнали плато в нашето разбиране за структурите от данни или ще има някои големи подобрения? Може би има някои умни идеи, които могат напълно да променят всичко?

Морис: Може да сме достигнали плато в структурите от данни за традиционните архитектури. Но структурите от данни за нови архитектури все още са много обещаваща област. Ако искате да създадете структури от данни за, да речем, хардуерни ускорители, тогава структурите от данни на GPU са много различни от структурите от данни на CPU. Когато проектирате структури от данни за блокчейн, трябва да хеширате части от данни и след това да ги поставите в нещо подобно мерклево дърво, за предотвратяване на фалшифициране. Напоследък има вълна от активност в тази област, много от тях вършат много добра работа. Но мисля, че това, което ще се случи, е, че новите архитектури и новите приложения ще доведат до нови структури от данни. По-стари приложения и традиционна архитектура - може би вече няма много място за изследване. Но ако излезете от утъпкания път и погледнете отвъд ръба, ще видите луди неща, които мейнстриймът не приема на сериозно - там всъщност се случват всички вълнуващи неща.

Виталий: Следователно, за да бъда много известен изследовател, трябваше да измисля своя собствена архитектура 🙂

Морис: Можете да "откраднете" нечия нова архитектура - изглежда много по-лесно!

Работа в университета Браун

Виталий: Бихте ли ни разказали повече за Браун университетв който работиш? Не се знае много за него в контекста на информационните технологии. По-малко от MIT, например.

Морис: Университетът Браун е един от най-старите университети в Съединените щати. Мисля, че само Харвард е малко по-стар. Кафявото е част от т.нар бръшлянови лиги, който е колекция от осем най-стари университета. Харвард, Браун, Корнел, Йейл, Колумбия, Дартмут, Пенсилвания, Принстън. Това е един вид стар, малък и малко аристократичен университет. Фокусът е върху образованието по либерални изкуства. Не се опитва да бъде като MIT, MIT е много специализиран и технически. Браун е страхотно място за изучаване на руска литература или класически гръцки и, разбира се, компютърни науки. Той се фокусира върху цялостното образование. Повечето от нашите студенти посещават Facebook, Apple, Google, така че мисля, че нашите студенти нямат проблем да си намерят работа в индустрията. Отидох да работя в Brown, защото преди това работех в Digital Equipment Corporation в Бостън. Това беше компания, която изобрети много интересни неща, но отрече значението на персоналните компютри. Компания с трудна съдба, чиито основатели някога са били млади революционери, те не са научили нищо и не са забравили нищо и затова са се превърнали от революционери в реакционери за около десетилетие. Те обичаха да се шегуват, че мястото на персоналните компютри е в гараж – изоставен гараж, разбира се. Съвсем очевидно е, че те бяха унищожени от по-гъвкави компании. Когато стана ясно, че компанията е в затруднение, се обадих на моя приятел от Браун, който е на около час от Бостън. Тогава не исках да напускам Бостън, защото в другите университети нямаше много свободни места. Беше време, когато нямаше толкова много свободни позиции в областта на компютърните науки, колкото сега. И Браун имаше работа, не трябваше да се местя от къщата си, не трябваше да местя семейството си и наистина ми харесва да живея в Бостън! Затова взех решение да отида при Браун. Харесва ми. Учениците са страхотни, така че никога не съм се опитвал да отида другаде. В отпуск работих в Microsoft една година, отидох в Technion в Хайфа за една година и сега ще бъда в Algorand. Имам много колеги навсякъде и затова физическото местоположение на нашите класни стаи не е толкова важно. Но най-важното са учениците, те са най-добрите тук. Никога не съм се опитвал да отида другаде, защото съм много щастлив тук.

Но въпреки славата на Браун в Съединените щати, той е изненадващо неизвестен в чужбина. Както можете да видите, сега правя всичко по силите си, за да коригирам това състояние на нещата.

Разликата между университетско и корпоративно изследване

Виталий: Добре, следващият въпрос е за цифровото оборудване. Вие сте били изследовател там. Каква е разликата между работата в R&D отдела на голяма компания и работата в университет? Какви са предимствата и недостатъците?

Морис: Работя в Microsoft от двадесет години, работейки в тясно сътрудничество с хора от Sun Microsystems, Oracle, Facebook и сега Algorand. Въз основа на всичко това искам да кажа, че е възможно да се провеждат първокласни изследвания както в компаниите, така и в университета. Важната разлика е, че в една компания работите с колеги. Ако внезапно имам идея за проект, който все още не съществува, трябва да убедя връстниците си, че това е добра идея. Ако съм в Браун, тогава мога да кажа на студентите си: нека работим върху антигравитацията! Те или ще отидат при някой друг, или ще поемат проекта. Да, ще трябва да намеря финансиране, ще трябва да напиша молба за безвъзмездна помощ и така нататък. Във всеки случай винаги ще има много ученици и вие ще можете да вземате решения еднолично. Но в университета най-вероятно няма да работите с хора от вашето ниво. В света на промишлените изследвания първо трябва да убедите всички, че вашият проект си заслужава да бъде поет. Не мога да поръчам нищо от никого. И двата начина на работа са ценни, защото ако работите върху нещо наистина лудо и вашите колеги са трудни за убеждаване, е по-лесно да убедите завършилите студенти - особено ако им плащате. Ако работите върху нещо, което изисква много опит и дълбока експертиза, тогава имате нужда от колеги, които могат да кажат „не, случайно разбирам тази област и идеята ви е лоша, нищо няма да излезе“. Това е много полезно от гледна точка на загуба на време. Освен това, ако в индустриалните лаборатории прекарвате много време в писане на доклади, то в университета прекарвате това време в намиране на пари. Ако искам студентите да могат да пътуват някъде, трябва да намеря парите за това другаде. И колкото по-важна е позицията ви в университета, толкова повече време трябва да отделите за събиране на пари. И така, сега знаете как работя - професионален просяк! Като един от онези монаси, които се разхождат с табелка с дарения. Като цяло тези две дейности се допълват взаимно. Затова се опитвам да живея и да стоя здраво и в двата свята.

Виталий: Изглежда, че да убедиш една компания е по-трудно, отколкото да убедиш други учени.

Морис: По-трудно и много повече. Освен това в различните области е различно: някой провежда пълномащабно изследване, а някой се фокусира върху своята тема. Ако отида в Microsoft или Facebook и кажа, нека направим антигравитация, те едва ли биха го оценили. Но ако казах точно същото нещо на моите завършили студенти, те най-вероятно щяха да се заемат веднага с работа, въпреки че сега вече щях да имам проблеми - защото трябва да намерите пари за това. Но докато искате да направите нещо в съответствие с целите на компанията, тази компания може да бъде много добро място за извършване на изследвания.

Хидра и SPTDC

Виталий: Въпросите ми са към своя край, така че нека поговорим малко за предстоящото пътуване до Русия.

Морис: Да, очаквам с нетърпение да се върна в Петербург.

Алексей: За мен е голяма чест, че сте с нас тази година. Това е вторият ви път в Санкт Петербург, нали?

Морис: Вече третата!

Алексей: Разбрах, но SPTDC - точно второто. Последният път, когато училището беше извикано SPTCC, сега променихме една буква (C на D, едновременно с разпределено), за да подчертаем, че тази година има повече области, свързани с разпределените изчисления. Можете ли да кажете няколко думи за вашите презентации в училището и Конференции на Hydra?

Морис: В училището искам да говоря за основите на блокчейн и какво можете да правите с него. Бих искал да покажа, че блокчейните са много подобни на многонишковото програмиране, с което сме запознати, но със свои собствени нюанси и е важно да разберем тези разлики. Ако направите грешка в нормално уеб приложение, това е просто досадно. Ако напишете бъги код във финансово приложение, някой определено ще открадне всичките ви пари. Това е съвсем друго ниво на отговорност и последствия. Ще говоря малко за доказателство за работа, интелигентни договори, транзакции между различни блокчейни.

До мен ще работят други лектори, които също имат какво да кажат за блокчейна и се разбрахме да се координираме помежду си, така че историите ни да паснат добре. Но за инженерния разговор, искам да дам ясно обяснение на широка аудитория защо не трябва да вярвате на всичко, което чувате за блокчейните, защо блокчейните са страхотна област, как се вписва в други добре познати идеи и защо трябва гледай смело в бъдещето.

Алексей: Освен това искам да кажа, че това няма да се случи във формат на среща или потребителска група, както беше преди две години. Решихме да направим малка конференция близо до училището. Причината е, че след разговор с Петър Кузнецов разбрахме, че училището е ограничено до стотина, може би 120 души. В същото време има много инженери, които искат да говорят с вас, да посещават доклади и като цяло се интересуват от темата. За това създадохме нова конференция наречен Хидра. Между другото, някаква идея защо Hydra?

Морис: Защото ще има седем високоговорителя? И могат да им отрежат главите и на тяхно място ще растат нови говорители?

Алексей: Страхотна идея за отглеждане на нови високоговорители. Но наистина тук има история. Спомнете си легендата за Одисей, където той трябваше да плава между Сцила и Харибда? Хидра е нещо като Харибда. Историята е, че веднъж говорих на конференция и говорих за многопоточност. Имаше само две песни на тази конференция. В началото на репортажа казах на публиката в залата, че вече имат избор между Сцила и Харибда. Моето духовно животно е Харибда, защото Харибда има много глави и темата ми е многопоточна. Така се появяват имената на конференциите.

Във всеки случай изчерпахме и въпросите, и времето. Така че благодаря ви приятели за страхотното интервю и ще се видим на SPTDC и Hydra 2019!

Ще бъде възможно да продължите комуникацията с Морис на конференцията Hydra 2019, която ще се проведе на 11-12 юли 2019 г. в Санкт Петербург. Той ще дойде с доклад „Блокчейн и бъдещето на разпределените изчисления“. Билети могат да бъдат закупени на официалния уебсайт.

Източник: www.habr.com

Добавяне на нов коментар