"پاسخ دادن آسانتر از سکوت است" - مصاحبه ای عالی با پدر حافظه تراکنشی، موریس هرلیهی

موریس هرلیهی - صاحب دو جوایز دایکسترا. اولین مورد برای کار است "همگام سازی بدون انتظار" (دانشگاه براون) و دومی، جدیدتر، - "حافظه تراکنشی: پشتیبانی معماری برای ساختارهای داده بدون قفل" (دانشگاه فناوری ویرجینیا). جایزه Dijkstra برای کارهایی اعطا می شود که اهمیت و تأثیر آن حداقل ده سال است که قابل مشاهده بوده است و موریس بدیهی است که یکی از مشهورترین متخصصان در این زمینه است. او در حال حاضر به عنوان استاد در دانشگاه براون کار می کند و دستاوردهای متعددی دارد که یک پاراگراف طولانی است. او در حال حاضر بر روی بلاک چین در زمینه محاسبات توزیع شده کلاسیک تحقیق می کند.

قبلاً موریس قبلاً برای SPTCC به روسیه آمده بود (نوار ویدئویی) و یک جلسه عالی با جامعه توسعه دهندگان جاوا JUG.ru در سن پترزبورگ (نوار ویدئویی).

این هابراپست یک مصاحبه عالی با موریس هرلیهی است. در مورد موضوعات زیر بحث می کند:

  • تعامل بین دانشگاه و صنعت؛
  • بنیاد تحقیقات بلاک چین؛
  • ایده های موفقیت آمیز از کجا می آیند؟ تأثیر محبوبیت؛
  • دکتری زیر نظر باربارا لیسکوف؛
  • جهان در انتظار چند هسته ای است.
  • دنیای جدید مشکلات جدیدی را به همراه دارد. هک NVM، NUMA و معماری؛
  • کامپایلرها در مقابل پردازنده ها، RISC در مقابل CISC، حافظه مشترک در مقابل ارسال پیام.
  • هنر نوشتن کدهای شکننده چند رشته ای.
  • نحوه آموزش نوشتن کدهای پیچیده چند رشته ای به دانش آموزان
  • ویرایش جدید کتاب "هنر برنامه نویسی چند پردازنده"؛
  • حافظه تراکنشی چگونه اختراع شد.   
  • چرا انجام تحقیق در زمینه محاسبات توزیع شده ارزش دارد.
  • آیا توسعه الگوریتم‌ها متوقف شده است و چگونه باید ادامه داد.
  • کار در دانشگاه براون؛
  • تفاوت بین تحقیق در دانشگاه و درون یک شرکت؛
  • Hydra و SPTDC.

مصاحبه توسط:

ویتالی آکسنوف - در حال حاضر، فوق دکترا در IST اتریش و کارمند گروه فناوری های کامپیوتری در دانشگاه ITMO. انجام تحقیقات در زمینه تئوری و عملی ساختارهای داده رقابتی. قبل از کار در IST، دکترای خود را از دانشگاه دیدرو پاریس و دانشگاه ITMO زیر نظر پروفسور پیتر کوزنتسوف دریافت کرد.

الکسی فدوروف - تولید کننده در گروه JUG Ru، یک شرکت روسی که کنفرانس هایی را برای توسعه دهندگان سازماندهی می کند. الکسی در آماده سازی بیش از 50 کنفرانس شرکت کرد و رزومه او شامل همه چیز از موقعیت یک مهندس توسعه در Oracle (JCK، Java Platform Group) تا سمت یک توسعه دهنده در Odnoklassniki است.

ولادیمیر سیتنیکوف - مهندس در Netcracker. ده سال کار روی عملکرد و مقیاس پذیری سیستم عامل NetCracker، نرم افزاری که توسط اپراتورهای مخابراتی برای خودکارسازی فرآیندهای مدیریت تجهیزات شبکه و شبکه استفاده می شود. علاقه مند به مسائل مربوط به عملکرد پایگاه داده جاوا و اوراکل. نویسنده بیش از ده ها بهبود عملکرد در درایور رسمی PostgreSQL JDBC.

تعامل بین دانشگاه و صنعت

الکسی: موریس، شما برای مدت طولانی در یک محیط دانشگاهی کار کرده اید و اولین سوال تعامل بین حوزه دانشگاهی و صنعتی است. آیا می توانید در مورد اینکه چگونه تعاملات بین آنها اخیراً تغییر کرده است صحبت کنید؟ 20-30 سال پیش چه اتفاقی افتاده و الان چه اتفاقی می افتد؟ 

موریس: من همیشه سعی کرده ام با شرکت های تجاری از نزدیک کار کنم زیرا آنها مشکلات جالبی دارند. آنها معمولاً علاقه زیادی به انتشار نتایج خود و یا توضیح دقیق مشکلات خود برای جامعه جهانی ندارند. آنها فقط به دنبال حل این مشکلات هستند. مدتی در چنین شرکت هایی کار کردم. من پنج سال تمام وقت در یک آزمایشگاه تحقیقاتی در Digital Equipment Corporation کار کردم، که قبلاً یک شرکت کامپیوتری بزرگ بود. یک روز در هفته در سان، مایکروسافت، اوراکل کار می‌کردم و کمی هم در فیسبوک کار می‌کردم. حالا قرار است به مرخصی تعطیلی بروم (یک استاد دانشگاه آمریکایی اجازه دارد یک سال تقریباً هر شش سال یک بار از چنین مرخصی استفاده کند) و در الگوراند، این یک شرکت ارز دیجیتال در بوستون است. همکاری نزدیک با شرکت ها همیشه لذت بخش بوده است، زیرا از این طریق در مورد چیزهای جدید و جالب یاد می گیرید. حتی ممکن است شما اولین یا دومین نفری باشید که مقاله ای را در مورد یک موضوع انتخابی منتشر می کند، به جای کار بر روی بهبود تدریجی راه حل های مشکلاتی که بقیه قبلاً روی آن کار می کنند.

الکسی: می توانید با جزئیات بیشتری به ما بگویید که چگونه این اتفاق می افتد؟

موریس: البته. می دانید، زمانی که من و الیوت ماس ​​در شرکت تجهیزات دیجیتال کار می کردم، حافظه تراکنشی را اختراع کردیم. دوره بسیار پرباری بود که همه به فناوری اطلاعات علاقه مند شدند. موازی سازی، از جمله، اگرچه سیستم های چند هسته ای هنوز وجود نداشتند. در طول روزهای Sun و Oracle، من روی ساختارهای داده موازی بسیار کار کردم. در فیس بوک من روی پروژه بلاک چین آنها کار کردم، که نمی توانم در مورد آن صحبت کنم، اما امیدوارم به زودی عمومی شود. سال آینده، در الگوراند، در یک گروه تحقیقاتی مشغول به مطالعه قراردادهای هوشمند خواهم بود.

الکسی: بلاک چین در چند سال اخیر به یک موضوع بسیار محبوب تبدیل شده است. آیا این به تحقیقات شما کمک می کند؟ شاید گرفتن کمک های مالی یا دسترسی به منابع شرکت های فعال در صنعت را آسان تر کند؟

موریس: من قبلاً یک کمک مالی کوچک از بنیاد اتریوم دریافت کردم. محبوبیت بلاک چین برای الهام بخشیدن به دانشجویان برای کار در این زمینه بسیار مفید است. آنها بسیار به آن علاقه مند هستند و هیجان زده می شوند که درگیر شوند، اما گاهی اوقات متوجه نمی شوند که تحقیقاتی که از بیرون هیجان انگیز به نظر می رسد، کار بسیار سختی را شامل می شود. با این حال، من واقعا هیجان زده هستم که از این همه رمز و راز در مورد بلاک چین برای کمک به جذب دانش آموزان استفاده کنم. 

اما این همه ماجرا نیست. من عضو هیئت مشاوره چندین استارت آپ بلاک چین هستم. برخی از آنها ممکن است موفق شوند، برخی از آنها ممکن است نه، اما همیشه دیدن ایده های آنها، مطالعه آنها و توصیه به مردم بسیار جالب است. هیجان انگیزترین چیز زمانی است که به مردم هشدار می دهید که کاری انجام ندهند. خیلی چیزها در ابتدا ایده خوبی به نظر می رسند، اما آیا واقعاً هستند؟

بنیاد تحقیقات بلاک چین

ویتالی: برخی از مردم فکر می کنند که آینده در اختیار بلاک چین و الگوریتم های آن است. و دیگران می گویند که این فقط یک حباب دیگر است. می توانید نظر خود را در این مورد به اشتراک بگذارید؟

موریس: بسیاری از چیزهایی که در دنیای بلاک چین می گذرد اشتباه است، برخی فقط یک کلاهبرداری هستند، بسیاری از آنها بیش از حد ارزیابی می شوند. با این حال، من فکر می کنم یک پایه علمی محکم برای این مطالعات وجود دارد. این واقعیت که دنیای بلاک چین پر از تفاوت های ایدئولوژیک است، میزان هیجان و فداکاری را نشان می دهد. از سوی دیگر، این امر به ویژه برای تحقیقات علمی مفید نیست. حال، اگر مقاله ای منتشر کنید که در مورد کاستی های یک الگوریتم خاص صحبت کند، واکنش حاصل همیشه کاملاً علمی نیست. اغلب مردم احساسات خود را بیرون می اندازند. من فکر می کنم که این نوع هیجان در این زمینه ممکن است برای برخی جذاب به نظر برسد، اما در نهایت، مسائل علمی و مهندسی واقعی وجود دارد که باید به آنها پرداخت. در اینجا بسیاری از علوم کامپیوتر وجود دارد.

ویتالی: بنابراین شما در تلاش هستید که پایه و اساس تحقیقات بلاک چین را ایجاد کنید، درست است؟

موریس: من سعی می کنم پایه و اساس یک رشته علمی و ریاضی را درست کنم. و بخشی از مشکل این است که گاهی اوقات باید با برخی از مواضع بیش از حد تند افراد دیگر مخالفت کنید و آنها را نادیده بگیرید. گاهی اوقات مردم می پرسند که چرا من در منطقه ای کار می کنم که فقط تروریست ها و قاچاقچیان مواد مخدر به آن علاقه دارند. چنین واکنشی به اندازه رفتار پیروانی که کورکورانه سخنان شما را تکرار می کنند بی معنی است. من فکر می کنم حقیقت جایی در میانه است. بلاک چین تأثیر عمیقی بر جامعه و اقتصاد جهانی خواهد داشت. اما احتمالاً به لطف فناوری مدرن این اتفاق نخواهد افتاد. فناوری های مدرن توسعه خواهند یافت و آنچه در آینده بلاک چین نامیده می شود بسیار مهم خواهد شد. حتی ممکن است شبیه بلاک چین های مدرن نباشد، این یک سوال باز است.

اگر مردم فناوری های جدیدی را اختراع کنند، همچنان آن را بلاک چین می نامند. منظورم این است که درست مثل فرترن امروزی هیچ ارتباطی با زبان فرترن دهه 1960 ندارد، اما همه آن را فرترن می نامند. برای یونیکس هم همینطور. چیزی که "بلاک چین" نامیده می شود، همچنان انقلاب خود را ایجاد خواهد کرد. اما من شک دارم که این بلاک چین جدید چیزی شبیه آنچه که امروزه همه از آن لذت می برند، باشد.

ایده های موفقیت آمیز از کجا می آیند؟ تاثیر محبوبیت

الکسی: آیا محبوبیت بلاک چین منجر به نتایج جدیدی از دیدگاه علمی شده است؟ تعامل بیشتر، دانش آموزان بیشتر، شرکت های بیشتر در منطقه. آیا در حال حاضر نتایجی از این افزایش محبوبیت وجود دارد؟

موریس: وقتی کسی به من یک بروشور رسمی برای شرکتی داد که به تازگی پول زیادی جمع کرده بود، به این موضوع علاقه مند شدم. در مورد آن نوشت وظیفه ژنرال های بیزانسی، که بیشتر با آن آشنا هستم. آنچه در جزوه نوشته شده بود به وضوح از نظر فنی نادرست بود. افرادی که همه اینها را نوشتند واقعاً مدل پشت مشکل را درک نکردند ... و با این حال این شرکت پول زیادی جمع کرد. متعاقباً ، این شرکت بی سر و صدا این جزوه را با نسخه بسیار صحیح تری جایگزین کرد - و من نمی گویم نام این شرکت چیست. آنها هنوز در اطراف هستند و خیلی خوب کار می کنند. این حادثه من را متقاعد کرد که اولاً، بلاک چین به سادگی شکلی از محاسبات توزیع شده است. ثانیاً، آستانه ورود (حداقل در آن زمان، چهار سال پیش) بسیار پایین بود. افرادی که در این زمینه کار می کردند بسیار پرانرژی و باهوش بودند، اما مقالات علمی نمی خواندند. آنها سعی کردند چیزهای شناخته شده را دوباره اختراع کنند و اشتباه کردند. امروز این درام کمتر شده است.

الکسی: این بسیار جالب است، زیرا چند سال پیش روند متفاوتی داشتیم. این کمی شبیه توسعه فرانت‌اند است، زمانی که توسعه‌دهندگان فرانت‌اند مبتنی بر مرورگر، کل فناوری‌هایی را که قبلاً در بک‌اند محبوب بودند، دوباره اختراع کردند: سیستم‌های ساخت، ادغام مداوم، مواردی از این دست. 

موریس: موافقم. اما این تعجب آور نیست، زیرا ایده های واقعی همیشه از خارج از جامعه مستقر می آیند. بعید به نظر می رسد که محققان تثبیت شده، به ویژه دانشگاهیان تثبیت شده، کاری واقعاً پیشگامانه انجام دهند. نوشتن مقاله برای کنفرانس بعدی در مورد اینکه چگونه نتایج کار گذشته خود را اندکی بهبود بخشیده اید، آسان است. به یک کنفرانس بروید، با دوستان خود دور هم جمع شوید، در مورد مسائل مشابه صحبت کنید. و افرادی که با ایده های موفقیت آمیز سر در می آورند تقریباً همیشه از خارج می آیند. آنها قوانین را نمی‌دانند، زبان را نمی‌دانند، اما با این وجود... اگر در یک جامعه مستقر هستید، به شما توصیه می‌کنم به چیزهای جدید توجه کنید، به چیزی که در تصویر کلی نمی‌گنجد. به یک معنا، می‌توان تلاش کرد تا تحولات بیرونی و سیال‌تر را با روش‌هایی که قبلاً درک کرده‌ایم ترکیب کرد. در گام اول، سعی کنید یک مبنای علمی ایجاد کنید و سپس آن را تغییر دهید تا بتوان آن را در ایده‌های نوآورانه به کار برد. من فکر می‌کنم که بلاک چین برای اینکه یک ایده جدید و مخرب باشد، عالی است.

الکسی: فکر می کنی چرا این اتفاق می افتد؟ زیرا افراد «بیرون» هیچ مانع خاصی در جامعه ندارند؟

موریس: الگویی در اینجا در جریان است. اگر تاریخ امپرسیونیست ها را در نقاشی و هنر به طور کلی بخوانید، در یک زمان هنرمندان مشهور امپرسیونیسم را رد می کردند. گفتند یک جورهایی بچه گانه است. یک نسل بعد، این شکل هنری که قبلاً رد شده بود به استاندارد تبدیل شد. آنچه من در حوزه کاری خود می بینم: مخترعان بلاک چین علاقه ای به قدرت نداشتند، به افزایش انتشارات و شاخص استنادها، فقط می خواستند کار خوبی انجام دهند. و بنابراین آنها نشستند و شروع به انجام آن کردند. آنها فاقد عمق فنی خاصی بودند، اما این قابل رفع است. ارائه ایده های خلاقانه جدید بسیار دشوارتر از اصلاح و تقویت ایده های نابالغ است. به لطف این مخترعان، اکنون کاری برای انجام دادن دارم!

الکسی: این شبیه تفاوت بین استارت آپ ها و پروژه های قدیمی است. ما وارث بسیاری از محدودیت های تفکر، موانع، الزامات خاص و غیره هستیم.

موریس: یک قیاس خوب محاسبات توزیع شده است. بلاک چین را طوری در نظر بگیرید که گویی یک استارتاپ است و محاسبات را به عنوان یک شرکت بزرگ و تاسیس توزیع می کند. محاسبات توزیع شده در حال کسب و ادغام با بلاک چین است.

دکتری زیر نظر باربارا لیسکوف

ویتالی: ما هنوز سوالات زیادی داریم! ما در حال بررسی سوابق شما بودیم و به یک واقعیت جالب در مورد دکترای شما برخورد کردیم. بله، این خیلی وقت پیش بود، اما به نظر می رسد موضوع مهمی باشد. شما دکترای خود را با راهنمایی خودتان دریافت کردید باربارا لیسکوف! باربارا در جامعه زبان های برنامه نویسی بسیار شناخته شده و به طور کلی یک فرد بسیار شناخته شده است. منطقی است که تحقیق شما در زمینه زبان های برنامه نویسی بوده است. چگونه به محاسبات موازی روی آوردید؟ چرا تصمیم به تغییر موضوع گرفتید؟

موریس: در آن زمان، باربارا و گروهش فقط به محاسبات توزیع شده نگاه می کردند، که ایده بسیار جدیدی بود. همچنین کسانی بودند که می گفتند محاسبات توزیع شده مزخرف است و ارتباط کامپیوترها با یکدیگر بی معنی است. یکی از مسائلی که در محاسبات توزیع شده به آن پرداخته می شود و آن را از محاسبات متمرکز متمایز می کند، تحمل خطا است. پس از تحقیقات زیاد، به این نتیجه رسیدیم که یک زبان برنامه نویسی محاسباتی توزیع شده باید چیزی شبیه تراکنش های اتمی داشته باشد زیرا هرگز نمی توانید مطمئن باشید که یک تماس از راه دور موفق خواهد شد. هنگامی که شما تراکنش دارید، مشکل مدیریت همزمانی به وجود می آید. سپس کار زیادی روی دستیابی به ساختارهای داده تراکنشی بسیار موازی انجام شد. بعد که فارغ التحصیل شدم رفتم کارنگی ملون و شروع به جستجوی موضوعی برای کار کرد. به ذهنم رسید که محاسبات از کامپیوترهای فردی به شبکه های کامپیوتری منتقل شده است. چند پردازنده ها ادامه طبیعی پیشرفت خواهند بود - کلمه "چند هسته ای" هنوز وجود نداشت. فکر کردم: معادل تراکنش های اتمی برای یک سیستم چند هسته ای چیست؟ قطعاً معاملات معمولی نیست زیرا بسیار بزرگ و سنگین هستند. و اینگونه به این ایده رسیدم خطی شدن و اینگونه بود که به کل همگام سازی بدون انتظار رسیدم. این تلاشی برای پاسخ به این سوال بود که آنالوگ تراکنش های اتمی برای یک سیستم چند پردازنده با حافظه مشترک چیست. شاید در نگاه اول این اثر کاملاً متفاوت به نظر برسد اما در واقع ادامه همان مضمون است.

جهان در انتظار چند هسته ای است

ویتالی: شما اشاره کردید که در آن زمان کامپیوترهای چند هسته ای بسیار کمی وجود داشت، درست است؟

موریس: آنها آنجا نبودند. چندین پردازنده به اصطلاح متقارن وجود داشت که اساساً به یک گذرگاه متصل بودند. این خیلی خوب کار نمی کرد زیرا هر بار که یک شرکت جدید چیزی مشابه ایجاد می کرد، اینتل یک پردازنده را عرضه می کرد که برتر از چند پردازنده بود.

الکسی: آیا این بدان معنا نیست که در آن دوران باستان بیشتر یک مطالعه نظری بود؟

موریس: این یک مطالعه نظری نبود، بلکه یک مطالعه نظری بود. همه اینها کار با بسیاری از قضایا نبود، بلکه فرضیه هایی را در مورد معماری که در آن زمان وجود نداشت، مطرح کردیم. تحقیق برای همینه! هیچ شرکتی چنین کاری را انجام نمی داد؛ همه چیز مربوط به آینده ای دور بود. در واقع تا سال 2004 که پردازنده‌های چند هسته‌ای واقعی ظاهر شدند، این موضوع وجود داشت. از آنجایی که پردازنده ها بیش از حد گرم می شوند، می توانید پردازنده را حتی کوچکتر کنید، اما نمی توانید آن را سریعتر کنید. به همین دلیل، گذار به معماری های چند هسته ای وجود داشت. و سپس این بدان معنی بود که ناگهان برای همه مفاهیمی که در گذشته توسعه داده بودیم، استفاده شد.

الکسی: فکر می کنید چرا پردازنده های چند هسته ای فقط در دهه XNUMX ظاهر شدند؟ پس چرا اینقدر دیر شده؟

موریس: این به دلیل محدودیت های سخت افزاری است. اینتل، AMD و سایر شرکت ها در افزایش سرعت پردازنده بسیار خوب هستند. زمانی که پردازنده‌ها به اندازه‌ای کوچک شدند که دیگر نمی‌توانستند سرعت کلاک را افزایش دهند زیرا پردازنده‌ها شروع به سوختن می‌کردند. شما می توانید آنها را کوچکتر کنید، اما نه سریعتر. آنچه در توان آنهاست - به جای یک پردازنده بسیار کوچک، آنها می توانند هشت، شانزده یا سی و دو پردازنده را در همان حجم کیس قرار دهند، جایی که قبلا فقط یکی می توانست جا شود. اکنون شما ارتباط چند رشته ای و سریعی بین آنها دارید زیرا حافظه پنهان را به اشتراک می گذارند. اما شما نمی توانید آنها را مجبور به دویدن سریعتر کنید - محدودیت سرعت بسیار خاصی وجود دارد. آنها کم کم به پیشرفت خود ادامه می دهند، اما نه دیگر. قوانین فیزیک در مسیر پیشرفت قرار داشتند.

دنیای جدید مشکلات جدیدی را به همراه دارد. NUMA، NVM و هک معماری

الکسی: خیلی منطقی به نظر می رسد. با پردازنده های چند هسته ای جدید مشکلات جدیدی به وجود آمد. آیا شما و همکارانتان انتظار این مشکلات را داشتید؟ شاید شما آنها را از قبل مطالعه کرده اید؟ در مطالعات نظری، اغلب پیش بینی چنین چیزهایی چندان آسان نیست. وقتی مشکلات پیش آمد، چگونه انتظارات شما و همکارانتان را برآورده کردند؟ یا کاملاً جدید بودند و شما و همکارانتان مجبور بودید زمان زیادی را برای حل مشکلات به شکل ظاهری صرف کنید؟

ویتالی: من به سوال الکسی اضافه می کنم: آیا در حین مطالعه تئوری، معماری پردازنده را به درستی پیش بینی کردید؟

موریس: نه 100٪. اما فکر می‌کنم من و همکارانم کار خوبی در پیش‌بینی چند هسته‌ای با حافظه مشترک انجام داده‌ایم. من فکر می کنم ما به درستی مشکلات را در توسعه ساختارهای داده موازی که بدون قفل عمل می کنند، پیش بینی کردیم. چنین ساختارهای داده ای برای بسیاری از برنامه ها مهم بوده اند، اگرچه نه همه آنها، اما اغلب چیزی که واقعاً به آن نیاز دارید یک ساختار داده بدون قفل است. وقتی آنها را اختراع کردیم، بسیاری استدلال کردند که این مزخرف است، که همه چیز با قفل ها خوب کار می کند. ما به خوبی پیش بینی کردیم که راه حل های آماده ای برای بسیاری از مشکلات برنامه نویسی و مشکلات ساختار داده وجود داشته باشد. مشکلات پیچیده تری نیز وجود داشت، مانند تعداد - دسترسی ناهموار به حافظه در واقع، تا زمانی که پردازنده های چند هسته ای اختراع نشدند، به دلیل خاص بودن آنها حتی در نظر گرفته نشدند. جامعه پژوهش روی سؤالاتی کار می کرد که عموماً قابل پیش بینی بودند. برخی از مشکلات سخت افزاری مرتبط با معماری های خاص باید در بال ها منتظر می ماند - در واقع، ظاهر این معماری ها. به عنوان مثال، هیچ کس واقعاً روی ساختارهای داده مخصوص GPU کار نمی کرد زیرا در آن زمان GPU وجود نداشت. اگرچه کارهای زیادی روی آن انجام شده است SIMD، این الگوریتم ها به محض در دسترس قرار گرفتن سخت افزار مناسب برای استفاده آماده شدند. با این حال، پیش بینی همه چیز غیرممکن است.

الکسی: اگر درست متوجه شده باشم، NUMA نوعی سازش بین هزینه، عملکرد و برخی چیزهای دیگر است. آیا ایده ای دارید که چرا NUMA اینقدر دیر منتشر شد؟

موریس: من فکر می‌کنم که NUMA به دلیل مشکلات سخت‌افزاری که برای تولید حافظه استفاده می‌شود وجود دارد: هرچه اجزا دورتر باشند، دسترسی به آنها کندتر است. از طرفی دومین مقدار این انتزاع یکنواختی حافظه است. بنابراین یکی از ویژگی های محاسبات موازی این است که تمام انتزاع ها کمی شکسته شده اند. اگر دسترسی کاملاً یکنواخت بود، تمام حافظه‌ها به یک اندازه فاصله داشتند، اما این از نظر اقتصادی، و شاید حتی فیزیکی، غیرممکن است. بنابراین این تعارض به وجود می آید. اگر برنامه خود را طوری بنویسید که انگار حافظه یکنواخت است، به احتمال زیاد درست خواهد بود. به این معنا که پاسخ های اشتباه نخواهد داد. اما اجرای او ستاره ها را از آسمان نیز نمی گیرد. همین طور اگر بنویسید spinlocks بدون درک سلسله مراتب کش، خود مسدودسازی صحیح خواهد بود، اما می توانید عملکرد را فراموش کنید. به یک معنا، شما باید برنامه‌هایی بنویسید که بر روی یک انتزاع بسیار ساده زندگی می‌کنند، اما باید از افرادی که این انتزاع را به شما ارائه کرده‌اند گول بزنید: باید بدانید که در زیر انتزاع، سلسله مراتبی از حافظه وجود دارد، که وجود دارد. اتوبوسی بین تو و این خاطره و غیره. بنابراین، تعارضی بین انتزاعات مفید فردی وجود دارد که ما را به مشکلات بسیار ملموس و عملی سوق می دهد.

ویتالی: در مورد آینده چطور؟ آیا می‌توانید پیش‌بینی کنید که پردازنده‌ها چگونه توسعه خواهند یافت؟ این ایده وجود دارد که یکی از پاسخ ها حافظه تراکنشی است. احتمالا چیز دیگری در انبار دارید.

موریس: چند چالش بزرگ در پیش است. یکی این که حافظه منسجم یک انتزاع فوق العاده است، اما در موارد خاص شروع به از بین رفتن می کند. بنابراین، برای مثال، NUMA یک مثال زنده از چیزی است که در آن می‌توانید وانمود کنید که حافظه یکنواخت وجود دارد. در واقع نه، بهره وری شما را به گریه می اندازد. در برخی مواقع، معماران باید ایده یک معماری حافظه واحد را کنار بگذارند؛ شما نمی توانید برای همیشه وانمود کنید. مدل های برنامه نویسی جدیدی مورد نیاز خواهند بود که استفاده از آنها به اندازه کافی آسان و به اندازه کافی قدرتمند باشد تا سخت افزار زیرین را کارآمد کند. این یک مصالحه بسیار دشوار است، زیرا اگر معماری‌هایی را که واقعاً در سخت‌افزار استفاده می‌شود به برنامه‌نویسان نشان دهید، آنها دیوانه خواهند شد. خیلی پیچیده است و قابل حمل نیست. اگر یک رابط بسیار ساده ارائه دهید، عملکرد ضعیف خواهد بود. بنابراین، برای ارائه مدل های برنامه نویسی مفید قابل اجرا برای پردازنده های چند هسته ای واقعاً بزرگ، باید مبادلات بسیار دشوار زیادی انجام شود. من مطمئن نیستم که کسی غیر از یک متخصص قادر به برنامه نویسی بر روی یک کامپیوتر 2000 هسته ای باشد. و مگر اینکه محاسبات بسیار تخصصی یا علمی یا رمزنگاری یا چیزی شبیه به آن را انجام دهید - هنوز اصلاً مشخص نیست که چگونه آن را به درستی انجام دهید. 

یکی دیگر از حوزه های مشابه، معماری های تخصصی است. شتاب‌دهنده‌های گرافیکی مدت‌هاست که وجود داشته‌اند، اما به نمونه‌ای کلاسیک تبدیل شده‌اند که چگونه می‌توان یک نوع تخصصی محاسبات را انتخاب کرد و آن را روی یک تراشه اختصاصی اجرا کرد. این چالش‌های خود را اضافه می‌کند: چگونه با چنین دستگاهی ارتباط برقرار می‌کنید، چگونه آن را برنامه‌ریزی می‌کنید. من اخیراً روی مشکلات منطقه کار کرده ام محاسبات نزدیک به حافظه. شما یک پردازنده کوچک بردارید و آن را به یک تکه بزرگ حافظه بچسبانید تا حافظه با سرعت کش L1 کار کند و سپس با دستگاهی مانند ارتباط برقرار کند. TPU - پردازنده مشغول بارگیری وظایف جدید در هسته حافظه شما است. طراحی ساختارهای داده و پروتکل های ارتباطی برای این نوع چیزها مثال جالب دیگری است. بنابراین پردازنده‌ها و سخت‌افزارهای سفارشی برای مدتی طولانی شاهد پیشرفت‌ها خواهند بود.

الکسی: در مورد حافظه غیر فرار (حافظه غیر فرار)?

موریس: اوه، این یک مثال عالی دیگر است! NVM نگرش ما به چیزهایی مانند ساختارهای داده را تا حد زیادی تغییر خواهد داد. حافظه غیر فرار، به یک معنا، وعده می دهد که واقعاً کارها را سرعت می بخشد. اما زندگی را آسان‌تر نمی‌کند زیرا اکثر پردازنده‌ها، کش‌ها و ثبات‌ها هنوز فرار هستند. وقتی بعد از تصادف شروع می کنید، وضعیت شما و وضعیت حافظه شما دقیقاً مانند قبل از سقوط نخواهد بود. من از افرادی که بر روی NVM کار می کنند بسیار سپاسگزارم - برای مدت طولانی محققان کارهای زیادی برای کشف شرایط صحت انجام خواهند داد. محاسبات در صورتی صحیح هستند که بتوانند از خرابی جان سالم به در ببرند که در آن محتویات کش و رجیسترها از بین رفته باشد، اما حافظه اصلی دست نخورده باقی بماند.

کامپایلرها در مقابل پردازنده ها، RISC در مقابل CISC، حافظه مشترک در مقابل ارسال پیام

ولادیمیر: نظر شما درباره معضل «کامپایلرها در مقابل پردازنده‌ها» از دیدگاه مجموعه دستورالعمل چیست؟ اجازه دهید برای کسانی که نمی دانند توضیح دهم: اگر به حافظه کج یا چیز مشابهی برویم، می توانیم از یک مجموعه بسیار ساده از دستورات استفاده کنیم و از کامپایلر بخواهیم کد پیچیده ای تولید کند که بتواند از مزایای جدید استفاده کند. یا می‌توانیم راه دیگری را برویم: دستورالعمل‌های پیچیده را پیاده‌سازی کنیم و از پردازنده بخواهیم دستورات را دوباره ترتیب دهد و دستکاری‌های دیگری را با آنها انجام دهد. تو در مورد آن چه فکر می کنی؟

موریس: من واقعاً پاسخی برای این سؤال ندارم. این بحث چهار دهه است که ادامه دارد. زمانی بود که بین به اختصار مجموعه ای از دستورات و بغرنج جنگ های داخلی توسط مجموعه ای از فرمان ها انجام می شد. برای مدتی، افراد RISC برنده شدند، اما سپس اینتل موتورهای آنها را بازسازی کرد به طوری که مجموعه‌ای از دستورالعمل‌های کاهش‌یافته در داخل استفاده شد و مجموعه کامل به خارج صادر شد. این احتمالاً موضوعی است که هر نسل جدید باید سازش های خود را پیدا کند و تصمیمات خود را بگیرد. پیش بینی اینکه کدام یک از این موارد بهتر خواهد بود بسیار دشوار است. بنابراین هر پیش‌بینی من برای مدت معینی درست است، و سپس برای مدتی دوباره نادرست، و دوباره درست است.

الکسی: چقدر برای صنعت متداول است که برخی از ایده ها برای چندین دهه برنده شوند و در دهه بعد شکست بخورند؟ آیا نمونه های دیگری از چنین تغییرات دوره ای وجود دارد؟

موریس: در مورد محاسبات توزیع شده، افرادی هستند که به آن اعتقاد دارند حافظه مشترک و افرادی که به آن اعتقاد دارند پیام. در ابتدا، در محاسبات توزیع شده، محاسبات موازی به معنای ارسال پیام است. سپس شخصی متوجه شد که برنامه نویسی با حافظه مشترک بسیار ساده تر است. طرف مقابل گفت که حافظه مشترک بسیار پیچیده است، زیرا به قفل و مواردی از این دست نیاز دارد، بنابراین ارزش آن را دارد که به زبان هایی برویم که چیزی جز ارسال پیام وجود نداشته باشد. شخصی به آنچه که از این اتفاق افتاد نگاه کرد و گفت: "وای، این پیاده سازی پیام رسانی بسیار شبیه حافظه مشترک است، زیرا شما تعداد زیادی از این ماژول های کوچک را ایجاد می کنید، آنها پیام هایی را برای یکدیگر ارسال می کنند، و همه آنها را قفل کردن"بیایید یک پایگاه داده حافظه مشترک بهتر بسازیم!" همه اینها بارها و بارها تکرار می شود و نمی توان گفت که قطعا حق با یکی از طرفین است. یک طرف همیشه تسلط خواهد داشت زیرا به محض اینکه یکی از آنها تقریباً برنده می شود، مردم بارها و بارها راه هایی برای بهبود طرف دیگر اختراع می کنند.

هنر نوشتن کد چند رشته ای شکننده

الکسی: این خیلی جالب است. به عنوان مثال، زمانی که ما کد می نویسیم، صرف نظر از زبان برنامه نویسی، معمولاً باید انتزاعی هایی مانند سلول های قابل خواندن و نوشتن ایجاد کنیم. اما در واقع، در برخی از سطوح فیزیکی، این ممکن است مانند ارسال یک پیام از طریق یک اتوبوس سخت افزاری بین رایانه های مختلف و دستگاه های دیگر باشد. معلوم می شود که کار در هر دو سطح انتزاع به طور همزمان اتفاق می افتد.

موریس: کاملاً درست است که حافظه مشترک بر روی ارسال پیام ساخته شده است - اتوبوس ها، کش ها و غیره. اما نوشتن برنامه با استفاده از ارسال پیام سخت است، بنابراین سخت افزار عمدا دروغ می گوید و وانمود می کند که شما نوعی حافظه یکنواخت دارید. این کار نوشتن برنامه های ساده و صحیح را قبل از شروع بدتر شدن عملکرد برای شما آسان تر می کند. سپس خواهید گفت: به نظر می رسد وقت آن رسیده که با حافظه پنهان دوست شوید. و سپس شما شروع به نگرانی در مورد محل حافظه پنهان می کنید و از آنجا می رود. به یک معنا، شما انتزاع را هک می‌کنید: می‌دانید که این فقط یک حافظه مسطح و یکنواخت نیست، و از آن دانش برای نوشتن برنامه‌های کش پسند استفاده خواهید کرد. این کاری است که در مشکلات واقعی باید انجام دهید. این تضاد بین انتزاع شیرین، ساده و خوبی که به شما داده شده است و پیاده‌سازی وحشتناک پیچیده سخت‌افزار زیربنایی جایی است که هر کسی مصالحه خود را می‌کند. من کتابی در مورد چند پردازنده و همگام سازی دارم، و در یک مقطع می خواستم فصلی در مورد ساختارهای داده بنویسم. java.util.concurrent. اگر به آنها نگاه کنید، چیزهایی مانند لیست هایی با حذفیات اینها آثار هنری شگفت انگیزی هستند. (یادداشت سردبیر: کسانی که با زبان جاوا آشنا هستند باید حداقل نگاهی به اجرا بیاندازند ConcurrentSkipListMap، می توانید به لینک های موجود در API и کد منبع). اما از دیدگاه من، نشان دادن آنها به دانش‌آموزان غیرمسئولانه خواهد بود، زیرا چنین ساختار داده‌ای شبیه به مردی در سیرک است که روی یک طناب بر فراز یک گودال خرس می‌دود. اگر حتی یک جزئیات کوچک را تغییر دهید، کل ساختار فرو می ریزد. این کد فقط به دلیل اینکه عالی نوشته شده است بسیار سریع و ظریف است، اما کوچکترین تغییر منجر به شکست کامل می شود. اگر این کد را به عنوان مثال برای دانش آموزان قرار دهم، بلافاصله می گویند: من هم می توانم این کار را انجام دهم! و سپس یک هواپیما سقوط می کند یا یک رآکتور هسته ای منفجر می شود و من مقصر خواهم بود که اطلاعات زیادی را در زمان اشتباه به آنها داده ام.

الکسی: وقتی کمی جوانتر بودم، بارها سعی کردم کد منبع داگ لی را مطالعه کنم، برای مثال، java.util.concurrent، از آنجایی که منبع باز است، پیدا کردن آن و تلاش برای درک آنچه در آنجا می گذرد بسیار آسان است. خیلی خوب از آب درنیامد: اغلب، کاملاً مشخص نیست که چرا داگ تصمیم گرفت کاری را به این شکل انجام دهد، در حالی که دیگران آن را به گونه‌ای متفاوت انجام می‌دهند. چگونه این موارد را برای دانش آموزان خود توضیح می دهید؟ آیا برای مثال، روش صحیح خاصی برای توصیف جزئیات خاص یک الگوریتم هاردکور وجود دارد؟ چگونه این کار را انجام می دهید؟

موریس: معلمان نقاشی یک کلیشه ای دارند که ابتدا آن را به خاطر می آورند: اگر می خواهید مانند پیکاسو نقاشی کنید، ابتدا باید یاد بگیرید که چگونه نقاشی های ساده واقع گرایانه بکشید، و تنها زمانی که قوانین را بدانید می توانید شروع به شکستن آنها کنید. اگر بلافاصله با زیر پا گذاشتن قوانین شروع کنید، در نهایت به یک آشفتگی ختم می شوید. ابتدا به دانش‌آموزان آموزش می‌دهم که چگونه کدهای ساده و صحیح را بدون نگرانی در مورد عملکرد بنویسند. آنچه من می گویم این است که در اینجا مشکلات زمان بندی پیچیده ای در کمین است، بنابراین نگران حافظه های پنهان نباشید، نگران مدل های حافظه نباشید، فقط مطمئن شوید که همه چیز به درستی کار می کند. این در حال حاضر به اندازه کافی دشوار است: برنامه نویسی مدرن به خودی خود آسان نیست، به خصوص برای دانشجویان جدید. و وقتی شهودی در مورد نحوه نوشتن برنامه‌های درست دارند، می‌گویم: به این دو پیاده‌سازی اسپین‌لاک نگاه کنید: یکی بسیار کند است و دومی نیز نه خیلی، اما بهتر است. با این حال، از نظر ریاضی، این دو الگوریتم یکسان هستند. در واقع، یکی از آنها از محلی کش استفاده می کند. یکی از آنها بر روی داده های ذخیره شده محلی اجرا می شود و دیگری به طور مکرر عملیات را در سراسر گذرگاه انجام می دهد. شما نمی‌توانید کد کارآمدی بنویسید اگر آن را درک نکنید و ندانید که چگونه انتزاع را بشکنید و به ساختار زیربنایی نگاه کنید. اما شما نمی توانید بلافاصله این کار را شروع کنید. افرادی هستند که بلافاصله شروع به انجام این کار می کنند و به نبوغ خود ایمان دارند، معمولاً به دلیل اینکه اصول را نمی فهمند، پایان بدی دارد. هیچ کس مانند پیکاسو نقاشی نمی کشد یا مانند داگ لی برنامه نمی نویسد که تازه از دانشگاه در هفته اول تحصیل کرده است. سالها طول می کشد تا به این سطح از دانش برسیم.

الکسی: معلوم می شود که شما مشکل را به دو قسمت تقسیم می کنید: اولی درستی، دومی عملکرد؟

موریس: دقیقا. و دقیقا به همین ترتیب بخشی از مشکل این است که دانشجویان جدیدالورود درک نمی کنند که به درستی دستیابی به آن دشوار است. در نگاه اول می گویند: این بدیهی است که درست است، تنها چیزی که باقی می ماند سرعت بخشیدن به آن است. بنابراین گاهی اوقات من در مورد یک الگوریتم اولیه نادرست به آنها می گویم که گویی درست است.

نحوه نوشتن کدهای چند رشته ای پیچیده را به دانش آموزان آموزش دهیم

الکسی: فقط برای اینکه ببینند آیا می توانند شکار را حس کنند؟

موریس: من همیشه از قبل هشدار می دهم که گاهی اوقات الگوریتم های نادرستی را پیشنهاد می کنم. شما نباید مردم را فریب دهید. من پیشنهاد می کنم آنها اطلاعات را با کمی نمک دریافت کنند. اگر چیزی بگویم و بگویم: "ببین، این بدیهی است که درست است" - این سیگنالی است که در جایی سعی دارند شما را فریب دهند و شما باید شروع به پرسیدن سؤال کنید. سپس، سعی می‌کنم دانش‌آموزان را تشویق کنم که همچنان سؤال بپرسند، و سپس پیشنهاد می‌کنم: «اگر همه چیز را همان‌طور که هست رها کنیم، چه اتفاقی می‌افتد؟» و بلافاصله اشتباه را می بینند. اما متقاعد کردن دانش‌آموزان مبنی بر اینکه باید نگران صحت باشند، بسیار دشوارتر از آن چیزی است که در نگاه اول به نظر می‌رسد. بسیاری از این دانش آموزان با تجربه برنامه نویسی در دبیرستان می آیند، برخی شغل پیدا کرده اند و برنامه نویسی را در آنجا انجام داده اند، و همه آنها سرشار از اعتماد به نفس هستند. این چیزی شبیه به ارتش است: ابتدا باید خلق و خوی آنها را تغییر دهید تا آنها را متقاعد کنید که با صبر و حوصله به حل مشکلات پیش آمده نزدیک شوند. یا شاید مانند راهبان بودایی است: ابتدا یاد می‌گیرند درباره درستی استدلال کنند، و هنگامی که راه‌های استدلال درباره درستی را درک کردند، به آنها اجازه داده می‌شود به سطح بعدی بروند و شروع به نگرانی در مورد عملکرد کنند.

الکسی: یعنی گاهی اوقات نمونه های غیر کاربردی را به دانش آموزان نشان می دهید که به لطف آنها بازخورد دریافت می کنید که نشان می دهد آیا آنها اصل مسئله را درک می کنند یا خیر، آیا می توانند کد اشتباه و نتیجه اشتباه را پیدا کنند. بنابراین، آیا دانش آموزان معمولا شما را خوشحال می کنند یا ناراحت؟

موریس: دانش آموزان تقریباً همیشه اشتباه را در نهایت پیدا می کنند. اگر آنها خیلی آهسته جستجو کنند، من سؤالات اصلی را می پرسم، و در اینجا مهم است که درک کنیم که اگر هرگز آنها را فریب ندهید، آنها شروع به درک بی فکر کلمات شما به عنوان حقیقت نهایی می کنند. سپس حوصله شان سر می رود و در حین درس خواندن فیس بوک روی لپ تاپ خود شروع به خوابیدن می کنند. اما وقتی از قبل به آنها می گویید فریب خواهند خورد، و اگر حقه ای را حس نکنند، احمق به نظر می رسند، بسیار هوشیارتر می شوند. این از طرق مختلف خوب است. من دوست دارم دانش آموزان نه تنها درک خود از موضوع را زیر سوال ببرند، بلکه اقتدار معلم را نیز زیر سوال ببرند. ایده این است که یک دانش آموز می تواند در هر زمانی دست خود را بلند کند و بگوید: فکر می کنم آنچه شما گفتید اشتباه است. این یک ابزار یادگیری مهم است. من نمی خواهم هیچ یک از دانش آموزان بنشینند و در سکوت با خود فکر کنند: همه اینها کاملاً مزخرف به نظر می رسد، اما بالا بردن دست شما خیلی ترسناک است و به هر حال او یک استاد است، بنابراین هر چه می گوید حقیقت است. بنابراین، اگر از قبل به آنها هشدار داده شود که لزوماً همه چیزهایی که گفته می شود درست نیست، انگیزه ای برای توجه بیشتر به مطالب دارند. من به وضوح می گویم که اشکالی ندارد که دست خود را بالا ببرید و سؤال کنید. سؤال شما ممکن است احمقانه یا ساده لوحانه به نظر برسد، اما اغلب بهترین سؤالات از این طریق مطرح می شود.

الکسی: خیلی جالبه. معمولاً افراد نوعی مانع روانی دارند که به آنها اجازه نمی دهد از استاد سؤال بپرسند. به خصوص اگر افراد زیادی در اتاق باشند و همه می ترسند که بحث در مورد سوال احمقانه شما تمام وقت این افراد را بگیرد. آیا ترفندهایی برای مقابله با این موضوع وجود دارد؟

موریس: من اغلب می ایستم و سوالات کلاسیک می پرسم. آیا یک بیانیه صحیح خواهد بود، یا چگونه مشکل مورد بحث را حل می کند. این یک اقدام کلیدی است، مخصوصاً در ابتدای درس که افراد از گفتن کوچکترین چیز خجالت می کشند. شما از دانش آموزان سؤال می کنید و دیگر چیزی نمی گویید. سکوت است، همه کمی تنش می شوند، تنش زیاد می شود، ناگهان یکی نمی تواند آن را تحمل کند، می شکند و جواب می دهد. اینگونه شرایط را تغییر می دهید: ادامه سکوت از پاسخ دادن دشوارتر و ناخوشایندتر می شود! این یک ترفند آموزشی استاندارد است. هر معلمی در جهان باید بداند چگونه این کار را انجام دهد.

الکسی: اکنون یک عنوان عالی برای این مصاحبه داریم: "پاسخ دادن آسان تر از سکوت است."

ویتالی: اجازه بدهید دوباره بپرسم. شما روی اثبات های توپولوژیکی کار می کنید. چگونه درگیر این موضوع شدید، زیرا محاسبات توزیع شده و توپولوژی چیزهای کاملاً متفاوتی هستند!

موریس: یک ارتباط پنهانی وجود دارد. وقتی دانش آموز ریاضی می خواندم، ریاضی محض می خواندم. من هیچ علاقه واقعی به کامپیوتر نداشتم تا اینکه تحصیلاتم به پایان رسید و با نیاز مبرم به جستجوی شغل مواجه شدم. در دوران دانشجویی توپولوژی جبری خواندم. سال ها بعد، در حالی که کار بر روی مشکلی به نام "مشکل توافقنامه k-Set"، من از نمودارها برای مدل کردن مشکل استفاده کردم و همانطور که در آن زمان به نظر می رسید راه حلی پیدا کرده بودم. فقط باید بنشینی و شمارش را دور بزنی. سعی کنید در این نمودار پاسخ مناسبی پیدا کنید. اما الگوریتم من کار نکرد: معلوم شد که او برای همیشه در دایره خواهد دوید. متأسفانه، همه اینها را نمی توان به زبان رسمی نظریه گراف - چیزی که همه دانشمندان رایانه می دانند - توضیح داد. و سپس به یاد آوردم که سال ها پیش، در کلاس های توپولوژی، از این مفهوم استفاده کردیم "مجموعه ساده"، که تعمیم نمودارها به ابعاد بالاتر است. سپس از خودم پرسیدم: اگر مشکل را از نظر مجتمع های ساده فرموله کنیم چه اتفاقی می افتد؟ این لحظه کلیدی شد. با استفاده از فرمالیسم قدرتمندتر، مسئله ناگهان بسیار ساده تر می شود. مردم برای مدت طولانی با استفاده از نمودارها با آن مبارزه کردند، اما نتوانستند کاری انجام دهند. و حتی در حال حاضر آنها نمی توانند - معلوم شد که پاسخ صحیح یک الگوریتم نیست، بلکه دلیلی بر عدم امکان حل مشکل است. یعنی چنین الگوریتمی به سادگی وجود ندارد. ولی هر مدرکی مبنی بر عدم امکان بر اساس عقده های ساده و یا چیزهایی که مردم وانمود می کردند که عقده های ساده را در نظر نمی گیرند. فقط به این دلیل که چیزی را با نام جدید صدا می کنید، ماهیت خود را از دست نمی دهد.

ویتالی: معلوم شد که شما فقط خوش شانس بودید؟

موریس: علاوه بر شانس، این هم هست آمادگی. این بدان معنی است که شما نباید چیزهای "بی فایده" را که قبلاً آموخته اید فراموش کنید. هر چه چیزهای بیهوده بیشتری یاد بگیرید، در مواجهه با مشکل جدید می توانید ایده های بیشتری استخراج کنید. این نوع تطبیق الگوی بصری مهم است زیرا... بیایید این کار را انجام دهیم، این یک زنجیره است: در ابتدا متوجه شدم که نمودارها اصلاً کار نمی کنند یا اصلاً کار نمی کنند، چیزی را به من یادآوری کرد از رویدادهای هشتم. سال‌ها پیش و دوران دانشجویی من، زمانی که همه این مجتمع‌های ساده را مطالعه می‌کردیم. این به نوبه خود به من امکان داد کتاب درسی توپولوژی قدیمی خود را پیدا کنم و دوباره آن را در ذهنم بارگذاری کنم. اما اگر آن دانش قدیمی نبود، هرگز در حل مشکل اصلی پیشرفت نمی کردم.

ویرایش جدید کتاب هنر برنامه نویسی چند پردازنده ای

الکسی: شما چند کلمه در مورد کتاب خود گفتید. احتمالاً این بدترین راز نیست که شما مشهورترین کتاب جهان را در مورد چند رشته نوشتید، "هنر برنامه نویسی چند پردازنده". در حال حاضر حدود 11 سال از عمر آن می گذرد و از آن زمان تاکنون تنها منتشر شده است  تجدید چاپ تجدید نظر شده. آیا نسخه دوم وجود خواهد داشت؟

موریس: چه خوب که پرسیدی! خیلی زود، سه ماه دیگر یا بیشتر خواهد شد. دو نویسنده دیگر وجود دارد، ما مطالب بسیار بیشتری اضافه کردیم، بخش موازی فوک/پیوستن را بهبود دادیم، بخشی را در MapReduce نوشتیم، چیزهای جدید زیادی اضافه کردیم و چیزهای غیر ضروری را حذف کردیم - چیزی که در زمان نوشتن بسیار جالب بود. نسخه اول، اما امروز دیگر وجود ندارد. نتیجه یک کتاب بسیار جدی اصلاح شده بود.

الکسی: همه چیز قبلا انجام شده است، تنها چیزی که باقی می ماند این است که آن را آزاد کنیم؟

موریس: چند فصل هنوز نیاز به کار دارند. ناشر ما (که فکر می کنم قبلاً از ما متنفر است) هنوز در تلاش است تا این پیام را منتقل کند که باید سریعتر کار کنیم. ما خیلی از برنامه عقب هستیم. از نظر تئوری، می‌توانستیم این کتاب را چند سال زودتر انجام دهیم.

الکسی: آیا شانسی برای دریافت نسخه جدیدی از کتاب قبل از کریسمس وجود دارد؟

موریس: این هدف ماست! اما من آنقدر پیروزی را پیش بینی کرده ام که دیگر هیچکس مرا باور نمی کند. احتمالاً در این مورد نیز نباید زیاد به من اعتماد کنید.

الکسی: در هر صورت، این یک خبر فوق العاده است. من چاپ اول کتاب را خیلی دوست داشتم. می توان گفت من یک طرفدار هستم.

موریس: امیدوارم نسخه جدید شایسته اشتیاق شدید شما باشد، متشکرم!

حافظه معاملاتی چگونه اختراع شد

ویتالی: سوال بعدی در مورد حافظه تراکنشی است. تا جایی که من فهمیدم شما در این زمینه پیشگام هستید، زمانی آن را اختراع کردید که هیچکس به این چیزها فکر نمی کرد. چرا تصمیم گرفتید وارد این رشته شوید؟ چرا معاملات برای شما مهم به نظر می رسید؟ آیا فکر می کردید روزی آنها در سخت افزار پیاده سازی شوند؟

موریس: من از دوران تحصیل فارغ التحصیلی درباره تراکنش ها می دانستم.

ویتالی: بله، اما این معاملات متفاوت است!

موریس: من با الیوت ماس ​​روی جمع آوری زباله بدون انسداد کار کردم. مشکل ما این بود که می‌خواستیم چند کلمه را به صورت اتمی در حافظه تغییر دهیم و سپس الگوریتم‌ها بسیار ساده شوند و حداقل برخی از آنها کارآمدتر شوند. استفاده كردن مقایسه و تعویض برای load-link/store-conditionalارائه شده توسط معماری موازی، انجام کاری ممکن است، اما بسیار ناکارآمد و زشت است، زیرا شما باید با لایه های غیرمستقیم سر و کار داشته باشید. من می‌خواهم کلمات حافظه را تغییر دهم و باید سوئیچ کنم، زیرا فقط می‌توانم یک اشاره‌گر را تغییر دهم، بنابراین آنها باید به نوعی ساختار دایرکتوری مانند اشاره کنند. ما در مورد اینکه چقدر عالی خواهد بود اگر بتوانیم سخت افزار را تغییر دهیم تا بتواند همزمان ضبط کند. به نظر می‌رسد الیوت به این نکته توجه کرده است: اگر به پروتکل‌های انسجام کش نگاهی بیندازید، آنها در حال حاضر بیشتر عملکردهای مورد نیاز را ارائه می‌دهند. در یک تراکنش خوش بینانه، پروتکل انسجام حافظه پنهان متوجه می شود که یک تضاد زمان وجود دارد و حافظه پنهان تبدیل می شود. بی اعتبار. چه اتفاقی می افتد اگر به صورت حدس و گمان یک تراکنش را در حافظه پنهان خود اجرا کنید و از مکانیسم های پروتکل انسجام برای تشخیص تداخل استفاده کنید؟ معماری سخت افزاری گمانه زنی برای طراحی آسان بود. بنابراین ما آن یکی را نوشتیم اولین انتشار در مورد حافظه تراکنشی در همان زمان، شرکتی که من در آن کار می کردم، Digital Equipment Corporation، در حال ایجاد یک پردازنده جدید 64 بیتی به نام آلفا بود. بنابراین من رفتم و در مورد حافظه تراکنشی شگفت انگیزمان به گروه توسعه آلفا ارائه دادم و آنها پرسیدند: اگر همه اینها را مستقیماً به پردازنده اضافه کنیم، شرکت ما چقدر درآمد اضافی کسب می کند؟ و من مطلقاً هیچ پاسخی برای این نداشتم، زیرا من یک فناور هستم، من یک متخصص بازاریابی نیستم. واقعا چیزی برای جواب دادن نداشتم. آنها از اینکه من چیزی نمی دانستم خیلی تحت تأثیر قرار نگرفتند.

ویتالی: میلیاردها! فقط بگو میلیاردها!

موریس: بله، این چیزی است که باید می گفتم. اکنون، در عصر استارت آپ ها و همه چیز، می دانم چگونه یک طرح تجاری بنویسم. اینکه بتوانید در مورد اندازه سود احتمالی خود کمی دروغ بگویید. اما در آن روزها ساده لوحانه به نظر می رسید، بنابراین من فقط گفتم: "نمی دانم." اگر به تاریخچه انتشار حافظه تراکنشی نگاه کنید، متوجه خواهید شد که پس از یک سال چندین اشاره به آن شد و پس از آن حدود ده سال هیچ کس به این مقاله استناد نکرد. نقل قول ها در حدود سال 2004 ظاهر شدند، زمانی که چند هسته های واقعی ظاهر شدند. زمانی که مردم دریافتند که نوشتن کدهای موازی می تواند درآمدزایی داشته باشد، تحقیقات جدیدی آغاز شد. راوی راجوار مقاله ای نوشت، که به نوعی مفهوم حافظه تراکنشی را به جریان اصلی معرفی کرد. (یادداشت سردبیر: نسخه دوم این مقاله وجود دارد که در سال 2010 منتشر شد و به صورت رایگان در دسترس است. به صورت PDF). ناگهان مردم متوجه شدند که چگونه می توان از همه اینها استفاده کرد، چگونه الگوریتم های سنتی با قفل ها را می توان تسریع کرد. مثال خوبی از چیزی که در گذشته فقط یک مشکل تحصیلی جالب به نظر می رسید. و بله، اگر در آن زمان از من می پرسیدید که آیا فکر می کنم همه اینها در آینده مهم است، می گفتم: البته، اما دقیقاً چه زمانی مشخص نیست. شاید 50 سال دیگر؟ در عمل، این فقط یک دهه بود. خیلی خوب است وقتی کاری را انجام می‌دهی و بعد از ده سال مردم متوجه آن می‌شوند.

چرا انجام تحقیق در زمینه محاسبات توزیع شده ارزش دارد

ویتالی: اگر درباره تحقیقات جدید صحبت کنیم، چه چیزی را به خوانندگان توصیه می کنید - محاسبات توزیع شده یا چند هسته ای و چرا؟ 

موریس: این روزها بدست آوردن یک پردازنده چند هسته ای آسان است، اما راه اندازی یک سیستم توزیع شده واقعی دشوارتر است. من کار روی آنها را شروع کردم زیرا می خواستم کاری متفاوت از پایان نامه دکتری خود انجام دهم. این توصیه ای است که من همیشه به دانشجویان جدید می کنم: ادامه پایان نامه خود را ننویسید - سعی کنید در مسیر جدیدی حرکت کنید. و همچنین، multithreading آسان است. من می توانم با چنگال خود که روی لپ تاپم کار می کند بدون اینکه از تخت بیرون بیایم آزمایش کنم. اما اگر ناگهان می خواستم یک سیستم توزیع شده واقعی ایجاد کنم، باید کارهای زیادی انجام می دادم، دانشجو جذب می کردم و غیره. من آدم تنبلی هستم و ترجیح می دهم روی چند هسته ای کار کنم. آزمایش بر روی سیستم‌های چند هسته‌ای نیز آسان‌تر از انجام آزمایش‌ها بر روی سیستم‌های توزیع‌شده است، زیرا حتی در یک سیستم توزیع‌شده احمقانه، عوامل زیادی وجود دارد که باید کنترل شوند.

ویتالی: در حال حاضر مشغول تحقیق در مورد بلاک چین هستید؟ ابتدا باید به کدام مقاله توجه کنید؟

موریس: اخیرا ظاهر شده است مقاله بسیار خوبیکه به همراه شاگردم ویکرام صراف، مخصوصاً برای گفتگو در آن نوشتم کنفرانس توکنومکس سه هفته پیش در پاریس این مقاله ای درباره سیستم های توزیع شده عملی است که در آن پیشنهاد می کنیم اتریوم را چند رشته ای کنیم. در حال حاضر، قراردادهای هوشمند (کدی که روی بلاک چین اجرا می شود) به صورت متوالی اجرا می شوند. ما قبلاً مقاله ای نوشتیم که در مورد روشی برای استفاده از تراکنش های سوداگرانه برای سرعت بخشیدن به فرآیند صحبت کردیم. ما ایده های زیادی را از حافظه تراکنشی نرم افزار گرفتیم و گفتیم که اگر این ایده ها را بخشی از ماشین مجازی اتریوم کنید، همه چیز سریعتر کار می کند. اما برای این امر لازم است که هیچ تضاد داده ای در قراردادها وجود نداشته باشد. و سپس فرض کردیم که در زندگی واقعی واقعاً چنین درگیری وجود ندارد. اما راهی برای فهمیدن نداشتیم. سپس به ذهنمان رسید که تقریباً یک دهه سابقه قرارداد واقعی در دست داریم، بنابراین بلاک چین اتریوم را کنار گذاشتیم و از خود پرسیدیم: اگر این رکوردهای تاریخی به صورت موازی اجرا شوند چه اتفاقی می‌افتد؟ افزایش قابل توجهی در سرعت پیدا کردیم. در روزهای اولیه اتریوم، سرعت بسیار افزایش یافت، اما امروزه همه چیز تا حدودی پیچیده تر شده است، زیرا قراردادهای کمتری وجود دارد و احتمال درگیری بر سر داده هایی که نیاز به سریال سازی دارند، بیشتر شده است. اما همه اینها کار تجربی با داده های واقعی تاریخی است. نکته خوب در مورد بلاک چین این است که همه چیز را برای همیشه به خاطر می آورد، بنابراین می توانیم به گذشته برگردیم و بررسی کنیم که اگر از الگوریتم های مختلف برای اجرای کد استفاده می کردیم چه اتفاقی می افتاد. چگونه مردم در گذشته ایده جدید ما را دوست داشتند؟ انجام چنین تحقیقاتی بسیار ساده تر و لذت بخش تر است، زیرا چیزی وجود دارد که همه چیز را زیر نظر دارد و همه چیز را ثبت می کند. این در حال حاضر چیزی بیشتر شبیه به جامعه شناسی است تا توسعه الگوریتم ها.

آیا توسعه الگوریتم ها متوقف شده است و چگونه باید ادامه داد؟

ویتالی: زمان آخرین سوال نظری است! آیا به نظر می رسد پیشرفت در ساختارهای داده رقابتی هر سال در حال کاهش است؟ آیا فکر می‌کنید که ما در درک خود از ساختارهای داده به سطح بالایی رسیده‌ایم یا پیشرفت‌های عمده‌ای وجود خواهد داشت؟ شاید ایده های هوشمندانه ای وجود داشته باشد که بتواند همه چیز را کاملاً تغییر دهد؟

موریس: ما ممکن است در ساختارهای داده برای معماری های سنتی به فلاتی رسیده باشیم. اما ساختارهای داده برای معماری های جدید هنوز یک منطقه بسیار امیدوارکننده است. اگر می‌خواهید ساختارهای داده‌ای مثلاً برای شتاب‌دهنده‌های سخت‌افزاری ایجاد کنید، ساختارهای داده برای یک GPU بسیار متفاوت از ساختارهای داده برای یک CPU است. هنگامی که ساختارهای داده ای را برای بلاک چین توسعه می دهید، باید قطعات داده را هش کنید و سپس آنها را در چیزی شبیه به آن قرار دهید درخت مرکل، برای جلوگیری از جعل. اخیراً فعالیت‌های زیادی در این زمینه صورت گرفته است و بسیاری کارهای بسیار خوبی انجام داده‌اند. اما من فکر می کنم آنچه اتفاق می افتد این است که معماری های جدید و برنامه های کاربردی جدید منجر به ساختارهای داده جدید می شود. کاربردهای قدیمی و معماری سنتی - ممکن است دیگر فضای زیادی برای کاوش وجود نداشته باشد. اما اگر از مسیر شکست خورده خارج شوید و به فراتر از لبه ها نگاه کنید، چیزهای دیوانه کننده ای خواهید دید که جریان اصلی آنها را جدی نمی گیرد - اینجاست که همه چیزهای هیجان انگیز واقعاً اتفاق می افتد.

ویتالی: بنابراین، برای اینکه یک محقق بسیار مشهور باشم، مجبور شدم معماری خودم را اختراع کنم :)

موریس: شما می توانید معماری جدید شخص دیگری را "دزدید" - به نظر می رسد بسیار ساده تر است!

کار در دانشگاه براون

ویتالی: ممکن است در مورد آن بیشتر به ما بگویید دانشگاه براونشما كجا كار مي كنيد؟ اطلاعات زیادی از او در زمینه فناوری اطلاعات در دست نیست. برای مثال کمتر از MIT.

موریس: دانشگاه براون یکی از قدیمی ترین دانشگاه های ایالات متحده است. فکر می کنم فقط هاروارد کمی بزرگتر است. قهوه ای بخشی از به اصطلاح است لیگ های پیچک، که مجموعه ای از هشت دانشگاه قدیمی است. هاروارد، براون، کرنل، ییل، کلمبیا، دارتموث، پنسیلوانیا، پرینستون. این یک نوع دانشگاه قدیمی، کوچک و کمی اشرافی است. تمرکز اصلی بر آموزش هنرهای آزاد است. این تلاشی نیست که مانند MIT باشد، MIT بسیار تخصصی و فنی است. براون مکانی عالی برای مطالعه ادبیات روسی یا یونانی کلاسیک و البته علوم کامپیوتر است. بر آموزش جامع تمرکز دارد. اکثر دانشجویان ما به فیس‌بوک، اپل، گوگل می‌روند - بنابراین فکر می‌کنم دانشجویان ما برای یافتن شغل در این صنعت مشکلی ندارند. من برای کار در Brown رفتم زیرا قبلاً در Digital Equipment Corporation در بوستون کار کرده بودم. این شرکتی بود که چیزهای جالب زیادی اختراع کرد، اما اهمیت کامپیوترهای شخصی را انکار کرد. شرکتی با سرنوشت سختی که بنیانگذاران آن زمانی انقلابی های جوان بودند، هیچ چیز یاد نگرفتند و هیچ چیز را فراموش نکردند و به همین دلیل در عرض حدود ده سال از انقلابی به مرتجع تبدیل شدند. آنها دوست داشتند به شوخی بگویند که رایانه های شخصی متعلق به گاراژ هستند - البته یک گاراژ متروک. کاملاً واضح است که آنها توسط شرکت های انعطاف پذیرتر نابود شدند. وقتی مشخص شد که شرکت دچار مشکل شده است، با یکی از دوستانم در براون، که حدود یک ساعت خارج از بوستون است، تماس گرفتم. من در آن زمان نمی خواستم بوستون را ترک کنم زیرا در دانشگاه های دیگر فرصت های زیادی وجود نداشت. این زمانی بود که در علوم کامپیوتر به اندازه الان شغل وجود نداشت. و براون یک افتتاحیه داشت، من مجبور نبودم خانه ام را جابجا کنم، مجبور نبودم خانواده ام را جابجا کنم، و من واقعاً عاشق زندگی در بوستون هستم! اینجوری تصمیم گرفتم برم براون. خوشم می آید. دانش‌آموزان فوق‌العاده هستند، بنابراین من هرگز سعی نکردم به جای دیگری بروم. در طول تعطیلات خود، یک سال در مایکروسافت کار کردم، یک سال به Technion در حیفا رفتم و اکنون در Algorand خواهم بود. من همکاران زیادی در همه جا دارم و بنابراین مکان فیزیکی کلاس های درس ما چندان مهم نیست. اما مهمترین چیز دانش آموزان است، آنها در اینجا بهترین هستند. من هرگز سعی نکردم به جای دیگری بروم زیرا در اینجا کاملاً خوشحال هستم.

با این حال، علیرغم شهرت براون در ایالات متحده، او به طرز شگفت انگیزی در خارج از کشور ناشناخته است. همانطور که می بینید، من اکنون هر کاری که ممکن است برای اصلاح این وضعیت انجام می دهم.

تفاوت بین تحقیق در دانشگاه و درون یک شرکت

ویتالی: بسیار خوب، سوال بعدی در مورد تجهیزات دیجیتال است. شما به عنوان یک محقق آنجا بودید. تفاوت کار در بخش تحقیق و توسعه یک شرکت بزرگ و کار در دانشگاه چیست؟ مزایا و معایب آن چیست؟

موریس: به مدت بیست سال در مایکروسافت کار کردم، از نزدیک با کارمندان Sun Microsystems، Oracle، Facebook، و اکنون Algorand کار کردم. بر اساس همه اینها می خواهم بگویم که می توان هم در شرکت ها و هم در دانشگاه ها تحقیقات درجه یک انجام داد. تفاوت مهم این است که در یک شرکت با همکاران کار می کنید. اگر ناگهان ایده ای برای پروژه ای داشته باشم که هنوز وجود ندارد، باید همتایانم را متقاعد کنم که این ایده خوبی است. اگر من در براون باشم، می توانم به دانش آموزانم بگویم: بیایید روی ضد جاذبه کار کنیم! آنها یا به سراغ شخص دیگری می روند یا پروژه ای را بر عهده می گیرند. بله، من باید بودجه پیدا کنم، باید یک درخواست کمک هزینه بنویسم و ​​غیره. در هر صورت همیشه شاگردان زیادی وجود خواهند داشت و شما می توانید به صورت یک طرفه تصمیم گیری کنید. اما در دانشگاه به احتمال زیاد با افراد هم سطح خود کار نخواهید کرد. در دنیای تحقیقات صنعتی، ابتدا باید همه را متقاعد کنید که پروژه شما ارزش پذیرش دارد. من نمیتونم به کسی چیزی سفارش بدم و هر دوی این روش‌های کار ارزشمند هستند، زیرا اگر روی چیزی واقعاً دیوانه‌کننده کار می‌کنید و متقاعد کردن همکارانتان سخت است، متقاعد کردن دانشجویان فارغ‌التحصیل آسان‌تر است - به خصوص اگر به آنها پول بدهید. اگر روی چیزی کار می کنید که به تجربه و تخصص عمیق نیاز دارد، به همکارانی نیاز دارید که بتوانند بگویند "نه، اتفاقاً من در این زمینه می فهمم و ایده شما بد است، کار نمی کند." این از نظر اتلاف وقت بسیار مفید است. همچنین اگر در آزمایشگاه های صنعتی زمان زیادی را صرف نوشتن گزارش می کنید، در دانشگاه این زمان را صرف یافتن پول می کنید. اگر می خواهم دانش آموزان بتوانند به جایی بروند، باید پول آن را از جای دیگری پیدا کنم. و هر چه جایگاه شما در دانشگاه مهمتر باشد، زمان بیشتری را برای جمع آوری پول صرف خواهید کرد. بنابراین اکنون می دانید که من برای چه کار می کنم - یک گدای حرفه ای! مثل یکی از آن راهبانی که با بشقاب نذری راه می‌رود. به طور کلی این دو فعالیت مکمل یکدیگر هستند. به همین دلیل سعی می کنم در هر دو دنیا زندگی کنم و پاهایم را روی زمین نگه دارم.

ویتالی: به نظر می رسد که متقاعد کردن یک شرکت دشوارتر از متقاعد کردن سایر دانشمندان است.

موریس: سخت تر و خیلی بیشتر. علاوه بر این، در زمینه های مختلف متفاوت است: برخی تحقیقات در مقیاس کامل انجام می دهند، در حالی که برخی دیگر بر موضوع خود تمرکز می کنند. اگر به مایکروسافت یا فیس‌بوک می‌رفتم و می‌گفتم: بیایید ضد جاذبه بسازیم، به سختی قدر آن را می‌دانستند. اما اگر دقیقاً همان چیزی را به دانشجویان فارغ التحصیل خود می گفتم ، به احتمال زیاد آنها فوراً سر کار می آمدند ، اگرچه اکنون با مشکلاتی روبرو می شوم - بالاخره من باید برای این کار پول پیدا کنم. اما تا زمانی که می خواهید کاری انجام دهید که با اهداف شرکت همسو باشد، آن شرکت می تواند مکان بسیار خوبی برای انجام تحقیقات باشد.

Hydra و SPTDC

ویتالی: سوالات من در حال پایان است، پس بیایید کمی در مورد سفر آینده به روسیه صحبت کنیم.

موریس: بله، من مشتاقانه منتظر بازگشت به سن پترزبورگ هستم.

الکسی: باعث افتخار من است که امسال شما را با ما دارم. این دومین بار است که در سن پترزبورگ هستید، درست است؟

موریس: در حال حاضر سوم!

الکسی: می فهمم، اما SPTDC - قطعا دومی آخرین باری که مدرسه تماس گرفته شد SPTCC، اکنون یک حرف (C به D، همزمان به توزیع شده) را تغییر داده ایم تا تاکید کنیم که امسال حوزه های بیشتری به طور خاص به محاسبات توزیع شده مربوط می شود. می توانید چند کلمه در مورد گزارش های خود در مدرسه و کنفرانس هایدرا?

موریس: در مدرسه می‌خواهم در مورد اصول بلاک چین و کارهایی که می‌توانید با آن انجام دهید صحبت کنم. می‌خواهم نشان دهم که بلاک‌چین‌ها بسیار شبیه به برنامه‌نویسی چند رشته‌ای هستند که با آن آشنا هستیم، اما با تفاوت‌های ظریف خاص خود، و درک این تفاوت‌ها مهم است. اگر در یک برنامه وب معمولی اشتباه کنید، آزاردهنده است. اگر در یک برنامه مالی کد حشره دار بنویسید، قطعاً شخصی تمام پول شما را خواهد دزدید. اینها سطوح کاملاً متفاوتی از مسئولیت و پیامدها هستند. من کمی در مورد اثبات کار، در مورد قراردادهای هوشمند، در مورد تراکنش های بین بلاک چین های مختلف صحبت خواهم کرد.

سخنرانان دیگری نیز در کنار من کار خواهند کرد که در مورد بلاک چین نیز حرفی برای گفتن دارند، و ما توافق کردیم که با یکدیگر هماهنگ کنیم تا داستان های ما به خوبی با هم هماهنگ شوند. اما برای گزارش مهندسی، می‌خواهم به مخاطبان گسترده توضیح دهم که چرا نباید همه چیزهایی را که در مورد بلاک‌چین می‌شنوید باور کنید، چرا بلاک‌چین یک حوزه عالی است، چگونه با سایر ایده‌های شناخته‌شده مطابقت دارد، و چرا باید جسورانه نگاه کنیم. به سوی آینده.

الکسی: علاوه بر این، می‌خواهم بگویم که مانند دو سال پیش، این کار در قالب یک جلسه یا گروه کاربری انجام نخواهد شد. تصمیم گرفتیم یک کنفرانس کوچک در نزدیکی مدرسه برگزار کنیم. دلیلش این است که پس از برقراری ارتباط با پیتر کوزنتسوف، متوجه شدیم که مدرسه فقط به صد، شاید 120 نفر محدود می شود. در عین حال، مهندسان زیادی هستند که می خواهند با شما ارتباط برقرار کنند، در سخنرانی ها شرکت کنند و به طور کلی به موضوع علاقه مند هستند. به همین دلیل ما یک کنفرانس جدید ایجاد کرده ایم هیدرا نامیده می شود. به هر حال، هیچ ایده ای وجود دارد که چرا Hydra؟

موریس: چون هفت سخنران خواهد بود؟ و می توان سر آنها را برید و بلندگوهای جدید به جای آنها رشد کنند؟

الکسی: ایده عالی برای رشد سخنرانان جدید. اما در واقع، اینجا یک داستان وجود دارد. افسانه ادیسه را به یاد بیاورید، جایی که او مجبور شد بین این دو قایقرانی کند اسکیلا و کریبدیس? هیدرا چیزی شبیه به Charybdis است. داستان از این قرار است که یک بار در یک کنفرانس صحبت کردم و در مورد چند رشته ای صحبت کردم. در این کنفرانس فقط دو آهنگ وجود داشت. در ابتدای گزارش به حاضران در سالن گفتم که اکنون بین اسکیلا و چاریبدیس انتخاب دارند. حیوان روح من Charybdis است زیرا Charybdis سرهای زیادی دارد و موضوع من چند رشته ای است. نام کنفرانس ها به این صورت است.

در هر صورت سوال و وقت ما تمام شده است. بنابراین، دوستان، برای یک مصاحبه عالی از شما متشکرم و شما را در مدرسه SPTDC و Hydra 2019 می بینیم!

می توانید گفتگوی خود را با موریس در کنفرانس Hydra 2019 که در تاریخ 11-12 جولای 2019 در سن پترزبورگ برگزار می شود، ادامه دهید. با گزارشی می آید بلاک چین و آینده محاسبات توزیع شده. بلیط را می توان خریداری کرد در وب سایت رسمی.

منبع: www.habr.com

اضافه کردن نظر