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

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

جهان مایکل را از روی کتاب درسی می شناسد "عمل شناسی زبان برنامه نویسی"، در مورد کار چطور «الگوریتم‌های همگام‌سازی مقیاس‌پذیر در چند پردازنده‌های حافظه مشترک» جایزه Dijkstra را به عنوان یکی از مشهورترین ها در زمینه محاسبات توزیع شده دریافت کرد. شما همچنین ممکن است او را به عنوان نویسنده همان الگوریتم بشناسید مایکل اسکات.

او به همراه داگ لی، الگوریتم‌های غیر مسدود کننده و صف‌های همزمانی را که کتابخانه‌های جاوا را نیرو می‌دهند، توسعه داد. پیاده سازی "ساختارهای داده دوگانه" در JavaSE 6 عملکرد را 10 برابر بهبود بخشید ThreadPoolExecutor.

فهرست مطالب:

  • اوایل کار، دانشگاه روچستر. پروژه شارلوت، زبان سیاهگوش.
  • رابط منسجم مقیاس پذیر IEEE، قفل MCS.
  • بقا در جهانی همیشه در حال تغییر؛
  • آیا دانش آموزان احمق می شوند؟ روندهای جهانی، بین المللی شدن؛
  • کار موثر با دانش آموزان؛
  • نحوه هماهنگی با تهیه دوره ها و کتاب های جدید؛
  • پیوندهای بین تجارت و دانشگاه؛
  • اجرای عملی ایده ها MCS، MS، CLH، JSR 166، کار با داگ لی و موارد دیگر؛
  • حافظه معاملاتی؛
  • معماری های جدید پیروزی حافظه تراکنشی نزدیک است.
  • حافظه غیر فرار، Optane DIMM، دستگاه های فوق سریع؛
  • روند بزرگ بعدی. ساختارهای داده دوگانه هیدرا.

مصاحبه توسط:

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

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

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

اوایل کار، دانشگاه روچستر. پروژه شارلوت، زبان سیاهگوش.

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

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

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

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

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

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

رابط منسجم مقیاس پذیر IEEE، قفل MCS.

ویتالی: میشه در این مورد کمی بیشتر توضیح بدی؟

مایکل: این یک داستان خنده دار است که من از گفتن آن برای همه خسته نمی شوم. در یک کنفرانس اتفاق افتاد ASPLOS در بوستون - این در اواخر دهه 80 یا اوایل دهه 90 بود. جان ملور-کرامی (جان ملور-کرامی) فارغ التحصیل دانشکده ما. من او را می شناختم، اما قبلاً تحقیقات مشترکی انجام نداده بودیم. مری ورنون (مری ورنون) از ویسکانسین در مورد یک سیستم چند پردازنده ای که در ویسکانسین در حال توسعه بودند صحبت کرد: مولتی مکعب ویسکانسین. این Multicube دارای مکانیزم همگام سازی در سطح سخت افزاری به نام Q on Sync Bit بود و بعداً به Q on Lock Bit تغییر نام داد زیرا صدای آن شبیه پنیر کلبی بود که یک جناس بود. اگر به مکانیسم‌های چند رشته‌ای علاقه‌مند هستید، احتمالاً می‌دانید که Colby در نهایت به موتور همگام‌سازی استاندارد رابط منسجم مقیاس‌پذیر IEEE تبدیل شد. این یک مکانیسم قفل بود که نشانگرهایی را از یک کش به حافظه پنهان دیگر در سطح سخت افزار ایجاد می کرد تا هر نگهدارنده قفل بداند نوبت چه کسی است. وقتی من و جان این موضوع را شنیدیم، به هم نگاه کردیم و گفتیم: چرا این کار را در سطح سخت افزاری انجام می دهیم؟ آیا با استفاده از مقایسه و مبادله نمی توان به همان چیزی دست یافت؟ یکی از دفترهایی که در کلاس دراز کشیده بود را برداشتیم و روی آن خط نوشتیم مسدود کردن MCS، در حالی که مری به گزارش خود ادامه داد. متعاقباً آن را اجرا کردیم، آزمایش کردیم، ایده موفق شد و مقاله را منتشر کردیم. در آن زمان، برای من، این موضوع فقط یک حواس پرتی سرگرم کننده به نظر می رسید، پس از آن قصد داشتم به سیستم عامل ها بازگردم. اما پس از آن مشکل دیگری در همین راستا بوجود آمد و در نهایت همگام سازی، چند رشته ای و ساختارهای داده به تخصص من تبدیل شد. همانطور که می بینید، همه اینها به طور تصادفی اتفاق افتاد.

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

چگونه در دنیایی که همیشه در حال تغییر است زنده بمانیم؟

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

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

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

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

ویتالی: ممکن است به ما راهنمایی کنید که این سخنرانی در مورد چیست؟

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

آیا دانش آموزان احمق می شوند؟ روندهای جهانی، بین المللی شدن.

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

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

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

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

آلکسی: اما احتمالاً جنبه های منفی چنین بین المللی سازی وجود دارد؟

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

آلکسی: یعنی موانع و امثال آن. واضح است.

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

کار موثر با دانش آموزان

آلکسی: و چگونه می توان تعادل لعنتی بین اول و دوم را پیدا کرد؟

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

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

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

ویتالی: و اگر اشتباه جواب دادی از کلاس اخراج میشی :)

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

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

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

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

مایکل: آره. 

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

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

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

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

چگونه با تهیه دوره ها و کتاب های جدید همراه شویم.

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

مایکل: اولین چیزی که در اینجا به ذهن می رسد دوره زبان های برنامه نویسی است. 

آلکسی: نسخه امروزی این دوره چقدر با 10، 20، 30 سال پیش متفاوت است؟ شاید آنچه در اینجا جالب تر است جزئیات یک دوره خاص نیست، بلکه گرایش های کلی باشد.

مایکل: دوره من در مورد زبان های برنامه نویسی در زمانی که آن را ایجاد کردم تا حدودی غیرعادی بود. من شروع به خواندن آن در اواخر دهه 1980 کردم و جایگزین همکارم داگ بالدوین شدم.داگ بالدوین). موضوع دوره فقط به صورت مماس با تخصص من مرتبط بود، اما وقتی ایشان رفت، بهترین داوطلب برای تدریس دروس بودم. من هیچ یک از کتاب های درسی که در آن زمان وجود داشت را دوست نداشتم، بنابراین در نهایت خودم کتاب درسی این دوره را نوشتم. (یادداشت سردبیر: ما در مورد کتاب صحبت می کنیم "عمل شناسی زبان برنامه نویسی") اکنون در بیش از 200 دانشگاه در سراسر جهان استفاده می شود. رویکرد من غیرمعمول است زیرا عمداً مشکلات طراحی و پیاده سازی زبان را در هم می آمیزد و به تعامل بین این جنبه ها در همه زمینه های ممکن توجه زیادی دارد. رویکرد اصلی بدون تغییر باقی مانده است، مانند بسیاری از مفاهیم اساسی: انتزاعات، فضاهای نام، مدولار بودن، انواع. اما مجموعه زبان هایی که این مفاهیم با آنها نشان داده می شوند کاملاً تغییر کرده است. زمانی که دوره برای اولین بار ایجاد شد، نمونه های زیادی در پاسکال وجود داشت، اما امروزه بسیاری از دانش آموزان من حتی نام این زبان را نشنیده اند. اما آنها Swift، Go، Rust را می شناسند، بنابراین من باید در مورد زبان هایی صحبت کنم که امروزه مورد استفاده قرار می گیرند. همچنین، دانش‌آموزان اکنون به زبان‌های اسکریپت نویسی مسلط هستند، اما زمانی که من تدریس این دوره را شروع کردم، همه چیز در مورد زبان‌های کامپایل شده بود. اکنون ما به مطالب زیادی در مورد پایتون، روبی و حتی پرل نیاز داریم، زیرا این کدهایی است که این روزها نوشته می شود و اتفاقات جالب زیادی در این زبان ها از جمله در زمینه طراحی زبان رخ می دهد. 

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

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

پیوند بین تجارت و دانشگاه

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

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

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

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

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

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

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

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

آلکسی: سی سال پیش چطور بود؟ آن موقع مشکلاتی وجود داشت؟

مایکل: آن موقع کمی متفاوت بود. در اواسط تا اواخر دهه 1980، علم کمبود منابع محاسباتی در نظر گرفته شد. برای اصلاح این وضعیت، بنیاد ملی علوم (بنیاد ملی علوم) یک برنامه تحقیقات تجربی هماهنگ (Cordinated Experimental Research، CER) ایجاد کرد. ماموریت این برنامه فراهم کردن زیرساخت های محاسباتی برای بخش های علوم کامپیوتر بود و تغییرات قابل توجهی را به دست آورده است. با پولی که او فراهم کرد، ما در دانشگاه روچستر یک پروانه 1984 گره BBN در سال 128 خریدیم، این یک سال قبل از رسیدن من به آنجا بود. در آن زمان این بزرگترین سیستم چند پردازنده ای جهان با حافظه مشترک بود. دارای 128 پردازنده بود که هر کدام روی یک مادربرد جداگانه قرار داشتند و چهار رک را اشغال می کرد. هر پردازنده یک مگابایت حافظه داشت، 128 مگابایت رم در آن زمان مقداری غیرقابل تصور بود. ما برای اولین بار در این دستگاه قفل MCS را پیاده سازی کردیم. 

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

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

اجرای عملی ایده ها MCS، MS، CLH، JSR 166، کار با داگ لی و موارد دیگر.

ویتالی: قبلاً در مورد نحوه شروع کار بر روی الگوریتم های همگام سازی صحبت کرده اید. شما دو مقاله بسیار معروف در مورد آن دارید مسدود کردن MCS и صف مایکل اسکات (MS)که به تعبیری در جاوا پیاده سازی شدند. (یادداشت سردبیر: همه نشریات قابل مشاهده است по ссылке). آنجا این مسدودسازی با تغییراتی اجرا شد و معلوم شد قفل CLH، و صف طبق برنامه اجرا شد. اما بین انتشار مقالات شما و کاربرد عملی آنها سالها گذشت. 

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

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

ویتالی: آره. برای تحقق این امر چه کردید؟ یا کاری نکردند؟

مایکل: می توانم به شما بگویم که چگونه MS Queue وارد جاوا 5 شد. چند سال قبل از انتشار، با گروه مارک مویرز در Sun Microsystems در آزمایشگاه آنها در نزدیکی بوستون کار کردم. او یک کارگاه آموزشی برای افرادی که می‌شناخت که روی مشکلات جالب در چند رشته کار می‌کردند ترتیب داد زیرا می‌خواست موضوعاتی را پیدا کند که بتواند به شرکت آنها بفروشد. آنجا بود که برای اولین بار با داگ لی آشنا شدم. من و داگ و حدود 25 نفر دیگر از سان با هم در مورد ارائه داگ بحث می کردیم JSR 166، که بعداً به java.util.concurrent تبدیل شد. در طول راه، داگ گفت که دوست دارد از صف MS استفاده کند، اما برای این کار او به یک شمارنده برای تعداد عناصر موجود در صف برای رابط نیاز دارد. یعنی این کار باید با روش جداگانه اتمی و دقیق و سریع انجام می شد. من پیشنهاد کردم به سادگی شماره سریال را به گره ها اضافه کنید، شماره اولین و آخرین گره را بگیرید و یکی را از دیگری کم کنید. داگ سرش را خاراند، گفت "چرا که نه" و در نهایت همین کار را کرد. ما درباره اجرای این رویکرد در کتابخانه بحث کردیم، اما داگ بیشتر کار را خودش انجام داد. در نتیجه، او موفق به ایجاد پشتیبانی عالی چند رشته ای در جاوا شد. 

آلکسی: بنابراین، اگر به درستی متوجه شده باشم، متد .size() باید بخشی از رابط صف استاندارد بوده و باید پیچیدگی الگوریتمی O(1) داشته باشد؟

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

آلکسی: زیرا اگر متد .size() را در جاوا فراخوانی کنید، انتظار می رود که نتیجه بلافاصله در دسترس باشد و بر اساس اندازه واقعی مجموعه نباشد. میبینم ممنون

مایکل: چند سال بعد من با شاگردم بیل شرر روی ساختارهای داده دوگانه کار می کردم - در واقع، این چیزی است که در مورد آن صحبت خواهم کرد. گزارشی از Hydra. داگ نزد ما آمد و گفت که می تواند از آنها در Java Executor Framework استفاده کند. آنها به همراه بیل دو پیاده سازی به نام صف های منصفانه و ناعادلانه ایجاد کردند. من به آنها در مورد این پروژه مشاوره دادم، اگرچه در نوشتن کد واقعی شرکت نکردم. در نتیجه سرعت مجریان به میزان قابل توجهی افزایش یافته است. 

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

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

موارد دیگری نیز وجود داشته است که افراد الگوریتم هایی را که من منتشر کرده ام بهبود بخشیده اند. به عنوان مثال، صف MS دارای مکانیزم نصب دو مرحله ای است، به این معنی که دو CAS در مسیر بحرانی صف وجود دارد. در خودروهای قدیمی، CAS بسیار گران بود. اینتل و سایر سازندگان اخیراً آنها را به خوبی بهینه کرده اند، اما زمانی این دستورالعمل ها 30 چرخه بودند، بنابراین وجود بیش از یک مورد در مسیر بحرانی نامطلوب بود. در نتیجه، یک صف متفاوت ایجاد شد که شبیه به صف MS بود، اما تنها یک عملیات اتمی در مسیر بحرانی داشت. این به این دلیل به دست آمد که در یک دوره زمانی مشخص، عملیات ممکن است به جای O(1) زمان O(n) داشته باشد. بعید بود، اما ممکن بود. این به این دلیل اتفاق افتاد که در لحظات خاصی الگوریتم صف را از ابتدا تا موقعیت فعلی در این صف طی کرد. به طور کلی، الگوریتم بسیار موفق ظاهر شد. تا آنجا که من می دانم، استفاده از آن زیاد نیست، تا حدی به این دلیل که عملیات اتمی به منابع کمتری نسبت به قبل نیاز دارد. اما ایده عالی بود. کار دیو دایس از اوراکل را هم خیلی دوست دارم. هر کاری که انجام می دهد بسیار کاربردی است و از آهن بسیار هوشمندانه استفاده می کند. او در بسیاری از الگوریتم های همگام سازی آگاه NUMA و ساختارهای داده چند رشته ای دست داشت. 

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

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

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

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

حافظه معاملاتی

ویتالی: شاید بتوانیم کمی در مورد حافظه تراکنشی صحبت کنیم؟

مایکل: فکر می کنم ارزشش را دارد که حداقل کمی بگم چون خیلی تلاش کردم. این موضوعی است که من بیش از هر موضوع دیگری در مورد آن مقاله دارم. اما در عین حال، به اندازه کافی عجیب، من همیشه در مورد حافظه تراکنشی بسیار بدبین بودم. به نظر من، مقاله هرلیهی و ماس (M. Herlihy, J. E. B. Moss) زودتر از زمان خود منتشر شد. در اوایل دهه 1990، آنها پیشنهاد کردند که حافظه تراکنشی می تواند به برنامه نویسان با استعداد کمک کند تا روی ساختارهای داده چند رشته ای کار کنند، به طوری که این ساختارها می توانند به عنوان کتابخانه توسط برنامه نویسان معمولی استفاده شوند. یعنی برای داگ لی در انجام JSR 166 کمکی خواهد بود. اما حافظه تراکنشی برای آسان کردن برنامه نویسی چند رشته ای در نظر گرفته نشده بود. اما این دقیقاً همان چیزی است که در اوایل دهه 2000، زمانی که گسترده شد، شروع به درک کرد. به عنوان راهی برای حل مشکل برنامه نویسی موازی تبلیغ شد. این رویکرد همیشه برای من ناامید کننده به نظر می رسید. حافظه تراکنشی تنها می تواند نوشتن ساختارهای داده موازی را آسان کند. به نظر من این چیزی است که او به آن دست یافت. 

درباره سختی نوشتن کد چند رشته ای

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

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

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

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

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

مایکل: این سوال خوبی است - آیا هیچ کدام از ما واقعاً مدل حافظه را درک می کنیم؟

ویتالی: به خصوص در C++.

مایکل: یه وقتایی با هانس بوهم صحبت کن. او یکی از باهوش ترین افرادی است که می شناسم، متخصص برجسته در مدل های حافظه. او فوراً به شما خواهد گفت که چیزهای زیادی وجود دارد که او نمی فهمد. اما اگر به موضوع انتزاعات برگردیم، به نظر من، مهمترین ایده در زمینه مدل های حافظه در 30 سال گذشته بیان شده است. در پایان نامه ساریتا ادو. (یادداشت سردبیر: فهرست کاملی از انتشارات موجود است по ссылке).

آلکسی: سوال من این است: آیا این مانع از ماهیت مفهوم ناشی می شود؟ 

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

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

مایکل: من بلافاصله چنین چیزی را به خاطر نمی آورم. مواقعی به نظرم می رسید که در یک منطقه کاری دیگر برای انجام دادن باقی نمانده است، اما بعداً یک اتفاق جدید و جالب در آنجا رخ داد. به عنوان مثال، من فکر می کردم که منطقه صف نامحدود قبلاً به بلوغ رسیده است. پس از چندین بهبود در صف MNS، دیگر اتفاق خاصی نیفتاد. و سپس موریسون (آدام موریسون) و افک (یهودا افک) اختراع کردند. صف LCRQ. مشخص شد که یک صف نامحدود چند رشته ای امکان پذیر است، جایی که بیشتر اوقات فقط یک دستورالعمل واکشی و افزایشی در مسیر بحرانی وجود دارد. و این امکان دستیابی به یک مرتبه عملکرد بهتر را فراهم کرد. اینطور نیست که ما نمی دانیم واکشی و افزایشی چیز بسیار مفیدی است. اریک فرودنتال در اواخر دهه 1980 در کار خود با آلن گوتلیب روی اولتراکامپیوتر در این باره نوشت، اما در مورد صف های محدود بود. موریسون و افک توانستند از Fetch-and-Increment در یک صف نامحدود استفاده کنند.

معماری های جدید آیا پیروزی حافظه تراکنشی نزدیک است؟

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

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

ولادیمیر: مثلا چه جوریه؟

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

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

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

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

حافظه غیر فرار، Optane DIMM، دستگاه های فوق سریع.

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

مایکل: من کارشناس سخت افزار نیستم، فقط می دانم آنچه در اخبار می خوانم و همکارانم به من می گویند. همه قبلا شنیده اند که اینتل می فروشد Optane DIMM، که حدود 3 برابر تأخیر خواندن و 10 برابر تأخیر نوشتن نسبت به رم پویا دارند. آنها به زودی در نسخه های با حجم بسیار بالا در دسترس خواهند بود. خنده دار است که فکر کنید می توانید یک لپ تاپ با چندین ترابایت رم قابل آدرس بایت داشته باشید. این احتمال وجود دارد که تا 10 سال دیگر تصمیم به استفاده از این فناوری جدید بگیریم، زیرا از DRAM استفاده می کنیم - فقط حجم را افزایش دهید. اما به لطف استقلال انرژی، فرصت های کاملا جدیدی برای ما باز می شود. ما می‌توانیم پشته ذخیره‌سازی را اساساً تغییر دهیم تا بین حافظه کاری آدرس‌پذیر بایت و حافظه پایدار با ساختار بلوکی، جدایی وجود نداشته باشد. بنابراین، ما نیازی به سریال‌سازی هر چیزی که باید از یک برنامه به برنامه دیگر منتقل شود را در فایل‌های ساختار بلوکی نخواهیم داشت. از اینجا می‌توانیم بسیاری از اصول مهمی را استخراج کنیم که بر سیستم‌های عامل، محیط‌های زمان اجرا و ذخیره‌های داده توزیع شده تأثیر می‌گذارند. این منطقه برای کار بسیار جالب است. شخصاً برای من دشوار است که پیش بینی کنم که این همه منجر به چه چیزی می شود، اما مشکلات اینجا بسیار سرگرم کننده است. ممکن است تغییرات انقلابی در اینجا وجود داشته باشد، و آنها به طور طبیعی از کار روی چند نخی پیروی می کنند، زیرا بازیابی شکست یک فرآیند "چند رشته ای" در کنار عملکرد عادی سیستم است. 

دومین موضوع اصلی که من در حال حاضر روی آن کار می کنم، مدیریت دستگاه های فوق سریع و دسترسی ایمن به دستگاه ها از فضای کاربران با کنترل خط مشی سیستمی است. در سال های اخیر، روند انتقال دسترسی به دستگاه به فضای کاربران وجود داشته است. این کار به این دلیل انجام می شود که پشته هسته TCP-IP نمی تواند در بالای یک رابط شبکه که هر 5 میکروثانیه به یک بسته جدید نیاز دارد کار کند، به سادگی نمی تواند ادامه یابد. بنابراین، سازندگان دسترسی مستقیم به دستگاه ها را فراهم می کنند. اما این بدان معنی است که سیستم عامل کنترل فرآیند را از دست می دهد و نمی تواند دسترسی مناسبی به دستگاه برای برنامه های رقیب فراهم کند. تیم تحقیقاتی ما معتقد است که می توان از این نقص جلوگیری کرد. ما در این ماه در USENIX ATC مقاله ای در این باره خواهیم داشت. این به کار بر روی پایداری مربوط می شود، زیرا حافظه پایدار قابل آدرس دهی بایتی با عمر طولانی، در اصل، دستگاهی با ورودی/خروجی فوق العاده سریع است که باید در فضای کاربر به آن دسترسی داشت. این تحقیق رویکردهای جدیدی را برای میکروکرنل‌ها، هسته‌های خارجی و سایر تلاش‌های سنتی برای انتقال ایمن عملکرد از هسته سیستم‌عامل به فضای کاربر ممکن می‌سازد. 

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

مایکل: کاملا درسته

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

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

ولادیمیر: یه مشکل دیگه هم هست. رم جدید و به میزان قابل توجهی بیشتر نمی تواند در CPU جا شود. بنابراین به دلیل محدودیت های فیزیکی، این رم باید ایزوله باشد. 

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

ولادیمیر: اما ما هنوز در مورد اندازه های بزرگ، در مورد سانتی متر صحبت می کنیم. این به طور اجتناب ناپذیری بر تأخیر تأثیر می گذارد. 

مایکل: آره. هیچ کاری نمی توانید در مورد سرعت نور انجام دهید. 

ولادیمیر: متاسفانه 

روند بزرگ بعدی. ساختارهای داده دوگانه هیدرا.

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

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

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

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

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

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

ویتالی: اجازه بدهید توضیح دهم: آیا در مدرسه و کنفرانس در مورد یک موضوع صحبت خواهید کرد؟

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

آلکسی: آیا قصد دارید در پایان کلاس خود در مدرسه در مورد ساختارهای داده دوگانه تدریس کنید؟

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

آلکسی: بنابراین سخنرانی در مدرسه می تواند برای مبتدیان توصیه شود، و سخنرانی در مورد ساختارهای داده دوگانه در Hydra - برای افرادی که قبلاً تجربه دارند؟

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

ویتالی: بله این درست است.

آلکسی: حداقل امیدواریم اینطور باشد.

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

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

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

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

ویتالی: با تشکر. 

مایکل: از دیدار شما در سن پترزبورگ خوشحال خواهم شد. 

آلکسی: ما هم شهر زیبایی داریم. آیا تا به حال اینجا بودی؟

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

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

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

منبع: www.habr.com

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