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

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

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

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

فهرست مطالب:

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

مصاحبه توسط:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

آیا دانش‌آموزان کودن‌تر می‌شوند؟ روندهای جهانی، بین‌المللی شدن.

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

مایکل: واقعاً می‌توانید کلی حرف‌های منفی از ما قدیمی‌ها بشنوید. ناخودآگاه، ما انتظار داریم که دانشجویان تمام ۳۰ سال تجربه‌ای که داریم را جذب کنند. اگر من درک عمیق‌تری نسبت به سال ۱۹۸۵ دارم، پس چرا دانشجویان آن را ندارند؟ احتمالاً به این دلیل که آنها ۲۰ ساله هستند، چطور؟ فکر می‌کنم مهم‌ترین تغییر در دهه‌های اخیر مربوط به ترکیب جمعیتی است: ما اکنون به طور قابل توجهی دانشجویان بین‌المللی بیشتری داریم، به استثنای کانادایی‌ها. قبلاً تعداد کانادایی‌ها زیاد بود زیرا ما خیلی به مرز کانادا نزدیک هستیم و دانشجویان آنجا می‌توانستند آخر هفته‌ها به خانه بروند. اما اکنون کانادا دانشگاه‌های خوب زیادی دارد و کانادایی‌ها ترجیح می‌دهند در خانه تحصیل کنند. آنها به طور قابل توجهی کمتر به ایالات متحده سفر می‌کنند.

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

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

آلکسی: اما احتمالاً این بین‌المللی شدن جنبه‌های منفی هم دارد؟

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

آلکسی: یعنی موانع و چیزهایی از این قبیل. فهمیدیم.

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

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

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

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

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

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

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

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

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

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

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

مایکل: آره. 

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

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

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

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

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

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

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

آلکسینسخه امروزی این دوره چقدر با آنچه ۱۰، ۲۰ یا ۳۰ سال پیش بود، متفاوت است؟ شاید روند کلی جالب‌تر از جزئیات یک دوره خاص باشد.

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

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

مایکلنمی‌توانم بگویم که همیشه در این کار ۱۰۰٪ موفق می‌شوم. اما اغلب، من فقط کاری را می‌کنم که بقیه انجام می‌دهند - اینترنت را مطالعه می‌کنم. اگر بخواهم Rust را بفهمم، آن را در گوگل جستجو می‌کنم، به وب‌سایت موزیلا می‌روم و راهنمای آنجا را می‌خوانم. این برای چیزی است که در توسعه تجاری اتفاق می‌افتد. در مورد دانشگاه‌ها، باید سخنرانی‌ها را در کنفرانس‌های بزرگ دنبال کنم. 

ارتباط بین کسب و کار و دانشگاه

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

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

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

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

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

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

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

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

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

مایکل: اوضاع در آن زمان کمی متفاوت بود. در اواسط تا اواخر دهه ۱۹۸۰، اعتقاد بر این بود که علم فاقد منابع محاسباتی است. برای اصلاح این وضعیت، بنیاد ملی علوم (بنیاد ملی علوم) برنامه تحقیقات تجربی هماهنگ (CER) را ایجاد کرد. هدف آن فراهم کردن زیرساخت‌های محاسباتی برای بخش‌های علوم کامپیوتر بود و تفاوت قابل توجهی ایجاد کرد. با پولی که ارائه داد، ما یک BBN Butterfly با ۱۲۸ گره را در سال ۱۹۸۴، یک سال قبل از ورود من، در دانشگاه روچستر خریداری کردیم. در آن زمان، این بزرگترین سیستم چندپردازنده‌ای با حافظه مشترک در جهان بود. این سیستم ۱۲۸ پردازنده داشت که هر کدام روی یک مادربرد جداگانه قرار داشتند و چهار رک را اشغال می‌کردند. هر پردازنده یک مگابایت حافظه داشت؛ ۱۲۸ مگابایت رم در آن زمان مقدار غیرقابل تصوری بود. ما ابتدا قفل MCS را روی این دستگاه پیاده‌سازی کردیم. 

آلکسی: خب، اگر درست فهمیده باشم، مشکل سخت‌افزاری الان حل شده؟ 

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

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

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

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

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

ویتالیبله. برای این اتفاق چه کردید؟ یا هیچ کاری نکردید؟

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

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

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

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

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

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

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

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

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

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

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

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

حافظه تراکنشی

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

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

پیچیدگی نوشتن کد چندنخی

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

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

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

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

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

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

ویتالی: مخصوصاً در ++C.

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

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

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

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

مایکل: من نمی‌توانم از همان ابتدا چیزی شبیه به این را تصور کنم. مواقعی بود که فکر می‌کردم دیگر در یک منطقه خاص کاری برای انجام دادن وجود ندارد، و سپس اتفاق جدید و جالبی رخ می‌داد. مثلاً فکر می‌کردم حوزه صف‌های نامحدود به بلوغ رسیده است. بعد از چند بهبود در صف MNS، دیگر اتفاق خاصی نیفتاد. و سپس موریسون (آدام موریسون) و افک (یهودا افک) اختراع کردند صف LCRQمشخص شد که یک صف چند نخی نامحدود، با تنها دستورالعمل واکشی و افزایش در مسیر بحرانی در بیشتر مواقع، امکان‌پذیر است. و این امر امکان بهبود چند برابری در عملکرد را فراهم کرد. اینطور نیست که ما از قبل نمی‌دانستیم واکشی و افزایش یک ویژگی بسیار مفید است. اریک فرودنتال در اواخر دهه ۱۹۸۰ در مقاله خود در مورد Ultracomputer با آلن گوتلیب در مورد این موضوع نوشت، اما آن مقاله برای صف‌های محدود بود. موریسون و افک توانستند از واکشی و افزایش در یک صف نامحدود استفاده کنند.

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

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

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

ولادیمیر: و مثلاً کدام‌ها؟

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

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

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

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

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

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

مایکلمن متخصص سخت‌افزار نیستم، فقط چیزهایی را که در اخبار می‌خوانم و همکارانم به من می‌گویند می‌دانم. همه قبلاً شنیده‌اند که اینتل در حال فروش است. حافظه‌های DIMM اُپتان، که حدود ۳ برابر تأخیر خواندن و ۱۰ برابر تأخیر نوشتن RAM پویا دارند. آنها به زودی در ظرفیت‌های بسیار بزرگ در دسترس خواهند بود. فکر کردن به اینکه بتوانید لپ‌تاپی با چندین ترابایت RAM با قابلیت آدرس‌دهی بایت داشته باشید، خنده‌دار است. کاملاً ممکن است که در ۱۰ سال آینده، تصمیم بگیریم از این فناوری جدید به همان روشی که از DRAM استفاده می‌کنیم استفاده کنیم - فقط به افزودن ظرفیت بیشتر ادامه دهیم. اما عدم نوسان، امکانات کاملاً جدیدی را ایجاد می‌کند. ما می‌توانیم اساساً پشته ذخیره‌سازی را تغییر دهیم تا هیچ جدایی بین حافظه کاری با قابلیت آدرس‌دهی بایت و حافظه پایدار با ساختار بلوکی وجود نداشته باشد. این بدان معناست که لازم نیست همه چیزهایی را که نیاز داریم در فایل‌های با ساختار بلوکی سریالی کنیم - آن را از یک اجرای برنامه به اجرای برنامه بعدی منتقل کنیم. این امر پیامدهای مهم زیادی برای سیستم‌های عامل، محیط‌های زمان اجرا و ذخیره‌سازی داده‌های توزیع‌شده دارد. این یک حوزه بسیار جالب برای کار است. شخصاً، پیش‌بینی اینکه همه اینها به چه چیزی منجر خواهد شد برای من دشوار است، اما مشکلات اینجا بسیار جالب هستند. ممکن است تغییرات انقلابی در اینجا رخ دهد، و این تغییرات به طور طبیعی از کار روی چندرشته‌ای بودن پیروی می‌کنند، زیرا بازیابی خرابی یک فرآیند «چندرشته‌ای» در کنار عملکرد عادی سیستم است. 

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

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

مایکل: کاملاً درست است.

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

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

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

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

ولادیمیراما ما هنوز در مورد اندازه‌های بزرگ، سانتی‌متر صحبت می‌کنیم. این به ناچار بر تأخیر تأثیر می‌گذارد. 

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

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

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

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

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

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

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

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

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

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

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

آلکسیآیا قصد دارید در پایان کلاس خود در مدرسه، مبحث ساختارهای داده دوگانه را پوشش دهید؟

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

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

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

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

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

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

ویتالیآیا ارائه خود را مانند یک سخنرانی ارائه خواهید داد؟ یعنی آیا با مخاطب تعامل خواهید داشت و با موقعیت سازگار خواهید شد؟

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

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

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

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

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

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

آلکسیضمناً، ما یک برنامه بازدید برای سخنرانان ارائه خواهیم داد. از شما بابت مصاحبه بسیار سپاسگزاریم و روز خوبی داشته باشید!

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

منبع: www.habr.com

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