
Maurice Herlichi adalah pemenang dua penghargaan Dijkstra . Yang pertama adalah untuk Sinkronisasi Bebas-Tunggu (Brown University), dan yang kedua, yang lebih baru, adalah Memori Transaksional: Dukungan Arsitektur untuk Struktur Data Bebas-Kunci (Virginia Tech University). Hadiah Dijkstra diberikan untuk karya-karya yang signifikansi dan pengaruhnya telah terlihat selama setidaknya sepuluh tahun dan, jelas, Maurice adalah salah satu spesialis paling terkenal di bidang ini. Dia saat ini bekerja sebagai profesor di Brown University dan memiliki banyak prestasi sepanjang paragraf panjang. Dia saat ini terlibat dalam penelitian blockchain dalam konteks komputasi terdistribusi klasik.
Sebelumnya, Maurice datang ke Rusia di SPTCC ( video ) dan melakukan pertemuan luar biasa dengan komunitas pengembang Java JUG.ru di St. Petersburg ( video ).
Habrapost ini adalah wawancara hebat dengan Maurice Herlihy. Ini membahas topik-topik berikut:
- Interaksi bidang akademik dan industri;
- Dasar untuk penelitian blockchain;
- Dari mana ide-ide terobosan datang. Pengaruh popularitas;
- PhD dipimpin oleh Barbara Liskov;
- Dunia sedang menunggu multicore;
- Ke dunia baru - masalah baru. NVM, NUMA dan arsitektur peretasan;
- Kompiler terhadap prosesor, RISC vs CISC, memori bersama vs pesan yang lewat;
- Seni menulis kode multi-utas yang rapuh;
- Bagaimana cara mengajar siswa untuk menulis kode multi-utas yang rumit;
- Edisi baru Seni Pemrograman Multiprosesor;
- Bagaimana memori transaksional diciptakan;
- Mengapa perlu melakukan penelitian di bidang komputasi terdistribusi;
- Apakah pengembangan algoritme berhenti, dan cara hidup;
- Bekerja di Brown University;
- Perbedaan antara penelitian di universitas dan di dalam korporasi;
- Hydra dan SPTDC.
Wawancara dilakukan oleh:
Vitaly Aksyonov saat ini menjadi post-dock di IST Austria dan karyawan Departemen Teknologi Komputer di Universitas ITMO. Terlibat dalam penelitian dalam teori dan praktik struktur data kompetitif. Sebelum bergabung dengan IST, ia menerima gelar PhD dari Universitas Paris Didro dan Universitas ITMO di bawah arahan Profesor Peter Kuznetsov.
Alexey Fedorov adalah produsen di JUG Ru Group, sebuah perusahaan Rusia yang menyelenggarakan konferensi untuk para pengembang. Alexey berpartisipasi dalam persiapan lebih dari 50 konferensi, dan resume-nya berisi semuanya, mulai dari posisi insinyur pengembangan di Oracle (JCK, Java Platform Group) hingga posisi devrell di Odnoklassniki.
Vladimir Sitnikov adalah seorang insinyur di Netcracker. Selama sepuluh tahun, ia telah bekerja pada kinerja dan skalabilitas NetCracker OS, sebuah perangkat lunak yang digunakan oleh operator telekomunikasi untuk mengotomatisasi proses manajemen jaringan dan peralatan jaringan. Dia tertarik dengan masalah kinerja Java dan Oracle Database. Penulis peningkatan kinerja lebih dari selusin di driver JDBC PostgreSQL resmi.
Interaksi bidang akademik dan industri
Alexei: Moris, kamu sudah lama bekerja di lingkungan akademik dan pertanyaan pertama adalah interaksi antara bidang akademik dan industri. Bisakah Anda memberi tahu kami bagaimana interaksi di antara mereka telah berubah akhir-akhir ini? Apa yang terjadi 20-30 tahun yang lalu dan apa yang terjadi sekarang?
Maurice: Saya selalu berusaha bekerja sama dengan perusahaan komersial, karena mereka memiliki tugas yang menarik. Mereka, sebagai suatu peraturan, tidak terlalu tertarik untuk mempublikasikan hasil yang diperoleh, atau dalam penjelasan rinci tentang masalah mereka kepada komunitas dunia. Mereka hanya tertarik untuk menyelesaikan masalah ini. Saya pernah bekerja di perusahaan semacam itu. Saya menghabiskan lima tahun bekerja penuh waktu di laboratorium penelitian di Digital Equipment Corporation, yang dulunya adalah perusahaan komputer besar. Saya bekerja satu hari seminggu di Sun, di Microsoft, di Oracle, dan bekerja sedikit di Facebook. Sekarang saya akan pergi cuti kreatif (cuti sabatikal, seorang profesor di universitas Amerika diizinkan untuk mengambil cuti selama setahun sekitar enam kali) dan bekerja di Algorand , ini adalah perusahaan cryptocurrency di Boston. Bekerja sama dengan perusahaan selalu menyenangkan, karena itulah cara Anda mempelajari hal-hal baru dan menarik. Anda bisa menjadi orang pertama atau kedua yang menerbitkan artikel tentang topik pilihan Anda, alih-alih secara bertahap meningkatkan solusi untuk masalah yang sudah dilakukan orang lain.
Alexei: bisakah kamu ceritakan lebih lanjut tentang bagaimana ini terjadi?
Maurice: Tentu saja. Anda tahu, ketika saya bekerja di Digital Equipment Corporation, saya dan Elliot Moss, kami menemukan memori transaksional. Itu adalah periode yang sangat bermanfaat ketika semua orang mulai tertarik pada teknologi informasi. Konkurensi termasuk, meskipun sistem multi-core belum ada. Pada zaman Sun dan Oracle, saya banyak bekerja pada struktur data paralel. Di Facebook, saya terlibat dalam proyek blockchain mereka, yang tidak bisa saya bicarakan, tapi saya harap ini akan segera diketahui publik. Tahun depan, di Algorand, saya akan bekerja dalam kelompok riset, mempelajari kontrak pintar.
Alexei: Dalam beberapa tahun terakhir, blockchain telah menjadi topik yang sangat populer. Apakah ini akan membantu penelitian Anda? Mungkin itu akan memfasilitasi penerimaan hibah atau memberikan akses ke sumber daya perusahaan yang beroperasi di industri?
Maurice: Saya sudah menerima hibah kecil dari Ethereum Foundation. Popularitas blockchain sangat berguna untuk menginspirasi siswa untuk bekerja di bidang ini. Mereka sangat tertarik dengan hal ini dan senang untuk mengambil bagian, tetapi kadang-kadang mereka tidak mengerti bahwa studi yang terdengar menggoda dari luar ternyata termasuk kerja keras. Meskipun demikian, saya sangat senang menggunakan semua mistisisme ini di sekitar blockchain, ini membantu menarik siswa.
Tapi itu belum semuanya. Saya di dewan penasihat beberapa startup blockchain. Beberapa dari mereka mungkin berhasil, beberapa dari mereka mungkin tidak, tetapi selalu sangat menarik untuk melihat ide-ide mereka, mempelajarinya dan menasihati orang. Yang paling menarik adalah ketika Anda memperingatkan orang untuk tidak melakukan sesuatu. Awalnya banyak yang sepertinya ide yang bagus, tapi benarkah begitu?
Yayasan Penelitian Blockchain
Vitaliy: Seseorang berpikir bahwa blockchain dan algoritmanya memiliki masa depan. Dan orang lain mengatakan bahwa ini hanyalah gelembung lain. Bisakah Anda membagikan pendapat Anda tentang ini?
Maurice: Banyak hal yang terjadi di dunia blockchains tidak berfungsi sebagaimana mestinya, sesuatu hanya scam, banyak yang dinilai terlalu tinggi. Namun demikian, saya pikir ada dasar ilmiah yang kuat untuk studi ini. Fakta bahwa dunia blockchain penuh dengan perbedaan ideologis menunjukkan tingkat kegembiraan dan dedikasi. Di sisi lain, itu tidak terlalu bermanfaat untuk penelitian ilmiah. Sekarang, jika Anda menerbitkan artikel yang berbicara tentang kekurangan algoritma tertentu, reaksi yang dihasilkan tidak selalu sepenuhnya ilmiah. Seringkali orang membuang emosi mereka. Saya pikir kegemparan semacam ini di bidang ini mungkin tampak menarik bagi sebagian orang, tetapi pada akhirnya, ada masalah ilmiah dan teknik yang belum ditangani. Ada banyak Ilmu Komputer.
Vitaliy: Yaitu, Anda mencoba meletakkan dasar untuk penelitian blockchain, bukan?
Maurice: Saya mencoba meletakkan dasar untuk disiplin yang solid, ilmiah dan matematis. Dan sebagian masalahnya adalah bahwa kadang-kadang Anda harus menentang beberapa posisi yang terlalu keras dari orang lain dan mengabaikannya. Kadang-kadang orang bertanya mengapa saya bekerja di daerah di mana hanya teroris dan pengedar narkoba yang tertarik. Reaksi semacam itu sama tidak berartinya dengan perilaku pengikut yang secara membabi buta mengulangi kata-kata Anda. Saya pikir kebenaran ada di antara keduanya. Blockchain masih akan memiliki dampak mendalam pada masyarakat dan ekonomi global. Tapi, mungkin, ini tidak akan terjadi berkat teknologi modern. Teknologi modern akan berkembang dan apa yang akan disebut blockchain di masa depan akan menjadi sangat penting. Mungkin tidak akan terlihat seperti blockchain modern, ini pertanyaan terbuka.
Jika orang menemukan teknologi baru, mereka akan terus menyebutnya blockchain. Maksudku, sama seperti Fortran saat ini tidak ada hubungannya dengan bahasa Fortran dari tahun 1960-an, tetapi semua orang terus menyebutnya Fortran. Hal yang sama berlaku untuk UNIX. Apa yang disebut "blockchain" masih akan membuat revolusi. Tetapi saya ragu bahwa blockchain baru ini akan menjadi serupa dengan apa yang semua orang suka gunakan hari ini.
Dari mana ide-ide terobosan datang. Dampak popularitas
Alexei: Apakah popularitas blockchain menghasilkan hasil baru dari sudut pandang ilmiah? Lebih banyak interaksi, lebih banyak siswa, lebih banyak perusahaan di daerah tersebut. Adakah hasil dari pertumbuhan popularitas ini?
Maurice: Saya menjadi tertarik pada ini ketika seseorang menyerahkan saya selebaran resmi sebuah perusahaan yang baru saja mengumpulkan banyak uang. Ia menulis tentang tugas para jenderal Bizantium , dengan siapa saya lebih akrab. Ditulis dalam selebaran jelas salah secara teknis. Orang-orang yang menulis semua ini tidak benar-benar memahami model di balik masalah ... namun perusahaan ini mengumpulkan banyak uang. Selanjutnya, perusahaan diam-diam mengganti selebaran ini dengan opsi yang jauh lebih benar - dan saya tidak akan mengatakan apa nama perusahaan ini. Mereka masih ada dan mereka melakukannya dengan sangat baik. Kasus ini meyakinkan saya bahwa, pertama, blockchain hanyalah bentuk komputasi terdistribusi. Kedua, ambang masuk (setidaknya empat tahun lalu) agak rendah. Orang yang bekerja di bidang ini sangat energik dan pintar, tetapi tidak membaca karya ilmiah. Mereka mencoba menemukan kembali hal-hal terkenal dan melakukan kesalahan. Hari ini drama telah berkurang.
Alexei: Ini sangat menarik, karena beberapa tahun yang lalu kami memiliki tren yang berbeda. Ini sedikit seperti pengembangan front-end ketika pengembang antarmuka browser menciptakan kembali seluruh teknologi yang sudah populer di backend saat itu: membangun sistem, integrasi berkelanjutan, dan semua itu.
Maurice: Saya setuju. Tapi ini tidak mengherankan, karena ide-ide terobosan benar-benar selalu datang dari luar komunitas yang ada. Peneliti yang diakui, terutama otoritas di lingkungan akademik, tidak mungkin melakukan sesuatu yang benar-benar terobosan. Sangat mudah untuk menulis laporan untuk konferensi berikutnya tentang bagaimana Anda telah meningkatkan hasil pekerjaan sebelumnya. Pergi ke konferensi, berkumpul bersama teman-teman, membicarakan hal yang sama. Dan orang-orang yang menerobos ide-ide terobosan hampir selalu datang dari luar. Mereka tidak tahu aturan, mereka tidak tahu bahasa, tetapi meskipun demikian ... Jika Anda berada di dalam komunitas yang ada, saya menyarankan Anda untuk memperhatikan hal-hal baru, untuk sesuatu yang tidak sesuai dengan gambaran besar. Dalam arti tertentu, suatu upaya dapat dilakukan untuk menggabungkan perkembangan eksternal yang lebih lancar dengan metode yang sudah kita pahami. Sebagai langkah pertama, cobalah untuk membuat basis ilmiah, dan kemudian mengubahnya sehingga dapat diterapkan pada ide-ide terobosan baru. Saya pikir blockchain sangat cocok untuk peran ide terobosan baru.
Alexei: kenapa kau pikir ini terjadi? Karena orang-orang "di luar" tidak memiliki hambatan spesifik yang melekat dalam komunitas?
Maurice: Ada semacam pola. Jika Anda membaca sejarah kaum Impresionis dalam seni lukis dan seni secara umum, maka pada suatu waktu artis-artis terkenal menolak impresionisme. Mereka mengatakan itu semacam kekanak-kanakan. Satu generasi kemudian, bentuk seni yang sebelumnya ditolak ini menjadi standar. Apa yang saya lihat di daerah saya: para penemu blockchain tidak tertarik pada kekuasaan, dalam publikasi bergulir dan indeks kutipan, mereka hanya ingin melakukan sesuatu yang baik. Maka, mereka duduk dan mulai melakukannya. Mereka tidak memiliki kedalaman teknis tertentu, tetapi bisa diperbaiki. Adalah jauh lebih sulit untuk menghasilkan ide-ide kreatif baru daripada mengoreksi dan memperkuat ide-ide yang kurang matang. Terima kasih kepada para penemu ini, sekarang saya memiliki sesuatu untuk dilakukan!
Alexei: Ini mirip dengan perbedaan antara startup dan proyek legacy. Kami mewarisi banyak keterbatasan pemikiran, hambatan, persyaratan khusus, dan sebagainya.
Maurice: Analogi yang baik adalah komputasi terdistribusi. Pikirkan blockchain seolah-olah itu adalah startup, dan komputasi terdistribusi - perusahaan mapan besar. Komputasi terdistribusi sedang dalam proses pembelian dan penggabungan dengan blockchain.
PhD dipimpin oleh Barbara Liskov
Vitaliy: Kami masih memiliki banyak pertanyaan! Kami mempelajari biografi Anda dan menemukan fakta aneh tentang doktor Anda. Ya, sudah lama sekali, tapi topiknya sepertinya penting. Anda mendapat gelar PhD di bawah arahan Barbara Liskov sendiri! Barbara sangat terkenal di komunitas pengembang bahasa pemrograman, dan secara umum orang yang sangat terkenal. Adalah logis bahwa riset Anda ada di bidang bahasa pemrograman. Bagaimana Anda beralih ke komputasi paralel? Mengapa Anda memutuskan untuk mengganti topik pembicaraan?
Maurice: Pada saat itu, Barbara dan kelompoknya hanya melihat komputasi terdistribusi, itu adalah ide yang sangat baru. Ada juga yang mengatakan bahwa komputasi terdistribusi adalah omong kosong, komunikasi antar komputer tidak ada artinya. Salah satu masalah yang dibahas dalam komputasi terdistribusi yang membedakan mereka dari komputasi terpusat adalah toleransi kesalahan. Setelah banyak penelitian, kami memutuskan bahwa dalam bahasa pemrograman untuk komputasi terdistribusi, Anda perlu memiliki sesuatu seperti transaksi atom, karena Anda tidak pernah bisa yakin akan keberhasilan panggilan jarak jauh. Segera setelah Anda melakukan transaksi, masalah kontrol konkurensi muncul. Kemudian ada banyak pekerjaan untuk mendapatkan struktur data transaksional yang sangat paralel. Kemudian, ketika saya lulus, saya pergi ke Carnegie Mellon dan mulai mencari topik untuk bekerja. Terpikir oleh saya bahwa perhitungan telah berpindah dari satu komputer ke jaringan komputer lainnya. Multiprosesor akan menjadi kelanjutan alami dari kemajuan - kata "multi-core" belum ada. Saya berpikir: apa yang setara dengan transaksi atom untuk sistem multi-inti? Jelas bukan transaksi biasa, karena terlalu besar dan berat. Jadi saya sampai pada ide tentang kelurusan linier dan itulah mengapa saya datang dengan semua sinkronisasi bebas-tunggu. Ini adalah upaya untuk menjawab pertanyaan tentang apa yang merupakan analog dari transaksi atom untuk sistem multiprosesor dengan memori bersama. Sekilas, karya ini mungkin terlihat sangat berbeda, tetapi sebenarnya ini merupakan kelanjutan dari topik yang sama.
Dunia untuk mengantisipasi multicore
Vitaliy: Anda menyebutkan bahwa pada saat itu ada sangat sedikit komputer multicore, bukan?
Maurice: Mereka tidak ada di sana. Ada beberapa yang disebut multiprosesor simetris yang pada dasarnya terhubung ke bus yang sama. Ini tidak bekerja dengan baik, karena setiap kali perusahaan baru menciptakan sesuatu yang serupa, Intel merilis prosesor tunggal yang lebih unggul daripada multiprosesor.
Alexei: Apakah ini berarti bahwa di masa lalu, itu lebih merupakan studi teoritis?
Maurice: Ini bukan penelitian teoretis, melainkan spekulatif. Semua ini bukan tentang bekerja dengan banyak teorema, melainkan, kami mengajukan hipotesis tentang arsitektur yang tidak ada pada waktu itu. Inilah yang dibutuhkan untuk penelitian! Tidak ada perusahaan yang akan melakukan hal seperti itu; semua ini adalah sesuatu dari masa depan yang jauh. Bahkan, ini sampai 2004, ketika prosesor multi-core nyata muncul. Karena kenyataan bahwa prosesor terlalu panas, Anda dapat membuat prosesor lebih kecil, tetapi Anda tidak dapat melakukannya lebih cepat. Karena itu, telah ada transisi ke arsitektur multi-core. Dan ini berarti bahwa tiba-tiba ada aplikasi untuk semua konsep yang kami kembangkan di masa lalu.
Alexei: Mengapa Anda berpikir prosesor multi-inti hanya muncul di tahun 2000-an? Jadi mengapa sangat terlambat?
Maurice: Ini karena keterbatasan perangkat keras. Intel, AMD dan perusahaan lain sangat baik dalam meningkatkan kecepatan prosesor. Ketika pada titik tertentu prosesor menjadi cukup kecil dan mereka tidak bisa lagi meningkatkan frekuensi clock, karena prosesor akan mulai terbakar. Anda bisa membuatnya lebih kecil, tetapi tidak lebih cepat. Apa yang ada dalam kekuasaan mereka - alih-alih prosesor yang sangat kecil, muat delapan, enam belas atau tiga puluh dua prosesor dalam volume yang sama, di mana sebelumnya hanya satu yang ditempatkan. Sekarang Anda memiliki multithreading dan komunikasi yang cepat di antara mereka, karena mereka berbagi cache. Tetapi Anda tidak dapat membuatnya bekerja lebih cepat - ada batas kecepatan yang sangat spesifik. Mereka terus membaik sedikit, tetapi tidak terlalu banyak. Hukum fisika menghalangi kemajuan.
Ke dunia baru - masalah baru. NUMA, NVM dan Arsitektur Peretasan
Alexey: Kedengarannya sangat masuk akal. Dengan prosesor multi-core baru, masalah baru telah datang. Apakah Anda dan kolega Anda mengharapkan masalah ini? Mungkin Anda mempelajarinya terlebih dahulu? Dalam studi teoritis, seringkali tidak mudah untuk memprediksi hal-hal seperti itu. Ketika masalah terjadi, bagaimana mereka memenuhi harapan Anda dan rekan-rekan Anda? Atau apakah mereka benar-benar baru, dan Anda dan kolega Anda harus menghabiskan banyak waktu untuk menyelesaikan masalah saat mereka muncul?
Vitaliy: Saya akan menambah pertanyaan Alexei: apakah Anda memprediksi arsitektur prosesor dengan benar saat Anda mempelajari teori?
Maurice: Tidak semua 100%. Tetapi saya berpikir bahwa kolega saya dan saya melakukan pekerjaan yang baik dalam memprediksi multi-core dengan memori bersama. Saya pikir kami benar memprediksi kesulitan dalam mengembangkan struktur data paralel yang bekerja tanpa kunci. Struktur data seperti itu penting untuk banyak aplikasi, meskipun tidak untuk semua orang, tetapi seringkali Anda benar-benar membutuhkan struktur data tanpa memblokir. Ketika kami menemukan mereka, banyak yang mengklaim bahwa ini omong kosong, dan semuanya bekerja dengan baik dengan kunci. Kami memperkirakan bahwa akan ada solusi siap pakai untuk banyak masalah pemrograman dan masalah struktur data. Ada masalah yang lebih kompleks, seperti NUMA - akses yang tidak merata ke memori. Bahkan, mereka bahkan tidak dipertimbangkan sebelum penemuan prosesor multi-core, karena mereka terlalu spesifik. Komunitas penelitian bekerja pada isu-isu yang umumnya dapat diprediksi. Beberapa masalah perangkat keras yang terkait dengan arsitektur tertentu harus menunggu di sayap - pada kenyataannya, penampilan arsitektur ini. Misalnya, tidak ada yang benar-benar bekerja pada struktur data khusus GPU karena GPU tidak ada saat itu. Meskipun banyak pekerjaan yang dilakukan pada SIMD , algoritma ini siap digunakan segera setelah perangkat keras yang sesuai muncul. Namun, tidak mungkin untuk meramalkan segalanya.
Alexei: Jika saya mengerti dengan benar, NUMA adalah semacam kompromi antara biaya, kinerja dan beberapa hal lainnya. Ada yang tahu mengapa NUMA datang sangat terlambat?
Maurice: Saya pikir NUMA ada karena masalah dengan perangkat keras yang digunakan untuk membuat memori: semakin jauh komponennya, semakin lambat aksesnya. Di sisi lain, nilai kedua dari abstraksi ini adalah keseragaman memori. Oleh karena itu, salah satu karakteristik komputasi paralel adalah bahwa semua abstraksi sedikit rusak. Jika akses idealnya seragam, semua memori akan sama, tetapi secara ekonomis, dan bahkan mungkin secara fisik tidak mungkin. Oleh karena itu, konflik ini muncul. Jika Anda menulis program Anda seolah-olah memori itu seragam, maka kemungkinan besar itu akan benar. Dalam artian dia tidak akan memberikan jawaban yang salah. Tetapi kinerja bintang-bintangnya dari langit tidak akan ambil. Demikian pula, jika Anda menulis spinlocks tanpa memahami hierarki cache, kunci itu sendiri akan benar, tetapi Anda bisa melupakan kinerja. - , , , , : , , , . , , .
: ? , ? , . , - .
: . , β , . , , NUMA -, , . β , . - , . , , . , , , . . , . , , , . , - 2000- . , - β , .
. , , . : , . near memory computing . , L1-, TPU β . β . , .
: ( non-volatile memory )?
: , ! NVM , , , . , , . , , . , , . , NVM β , . , , , .
, RISC vs CISC, shared memory vs message passing
: Β« Β» ? , : - , , . : . ?
: . . , . - RISC- , Intel , , . , , . , . , , , - , .
: , ? ?
: , , . . - , . , β , , , . - , : Β«, , - , , , β !Β». , , . , , , .
: . , , , , . - , - . , .
: , β , . , , , - . , . : , . , -. : , , . , . , , β , . , java.util.concurrent . , β . ( : , Java, ConcurrentSkipListMap, API c ). , , , . , . , , . , : ! - , , .
: , , , java.util.concurrent , , , . : , , - , -. ? , ? ?
: , : , , , . , . , . : , , , , . : , . , , : : , β , . , . , . , , . , , , . . , , , . , , . , .
: , : β , β ?
: . , . , , . : , , , . , .
: , ?
: , . . . - : Β«, Β» β , - , . , , : Β« , ?Β». . , , , . , - , . - : , . : , .
: , , , , , . , ?
: . , , , β . , Facebook . , , , , . . , , . , : , , β . . , - : , , , , , β . , , , . , β . , .
: . , . , , . - , ?
Maurice: Saya sering berhenti dan mengajukan pertanyaan klasik. Apakah ada pernyataan yang benar, atau bagaimana mereka memecahkan masalah yang sedang dibahas. Ini adalah tindakan kunci, terutama di awal pelajaran, ketika orang malu untuk mengatakan sedikit. Anda mengajukan pertanyaan kepada siswa dan tidak mengatakan apa-apa lagi. Keheningan menyelimuti, semua orang sedikit tegang, ketegangan naik, lalu tiba-tiba seseorang tidak tahan, hancur dan mengatakan jawabannya. Jadi Anda membalikkan situasi: untuk diam menjadi lebih sulit dan tidak nyaman daripada menjawab! Ini adalah trik pedagogis standar. Setiap guru di dunia perlu tahu bagaimana melakukan ini.
Alexei: Sekarang kami memiliki nama yang bagus untuk wawancara ini: "lebih mudah untuk menjawab daripada diam."
Vitaliy: Izinkan saya bertanya satu sama lain. Anda sedang mengerjakan bukti topologi. Bagaimana Anda terlibat dalam hal ini, karena komputasi terdistribusi dan topologi adalah dua hal yang berbeda!
Maurice: Ada hubungan tersembunyi. Ketika saya masih mahasiswa dan belajar matematika, saya belajar matematika murni. Saya tidak memiliki minat yang nyata pada komputer sampai pelatihan berakhir, dan saya mendapati diri saya dihadapkan pada kebutuhan mendesak untuk mencari pekerjaan. Sebagai seorang mahasiswa, saya belajar topologi aljabar. Bertahun-tahun kemudian, ketika mengerjakan tugas yang disebut "k-Set Agreement Problem" , saya menggunakan grafik untuk memodelkan masalah dan, sepertinya, saya menemukan solusi. Anda hanya harus duduk dan berkeliling menghitung. Cobalah untuk menemukan jawaban yang cocok di kolom ini. Tetapi algoritme saya tidak berfungsi: ternyata ia akan selamanya berputar-putar. Sayangnya, semua ini tidak dapat dijelaskan oleh bahasa formal teori grafik - yang diketahui oleh semua pakar di bidang ilmu komputer. Dan kemudian saya ingat bahwa bertahun-tahun yang lalu, ketika masih berada di kelas topologi, kami menggunakan konsep "simplicial complex" , yang merupakan generalisasi grafik ke dimensi yang lebih tinggi. Lalu saya bertanya pada diri sendiri: apa yang akan terjadi jika kita merumuskan kembali masalah dalam hal kompleks yang sederhana? Ini telah menjadi poin kunci. Ketika menggunakan formalisme yang lebih kuat, masalahnya tiba-tiba menjadi jauh lebih mudah. Orang-orang berjuang dengan itu untuk waktu yang lama menggunakan grafik, tetapi tidak bisa berbuat apa-apa. Ya, dan sekarang mereka tidak bisa - jawaban yang benar bukanlah algoritma, tetapi bukti ketidakmungkinan memecahkan masalah. Artinya, algoritma seperti itu tidak ada. Tetapi setiap bukti ketidakmungkinan didasarkan pada kompleks kesederhanaan atau pada hal-hal yang orang pura-pura tidak mempertimbangkan kompleks kesederhanaan. Dari kenyataan bahwa Anda menyebut sesuatu nama baru, itu tidak kehilangan esensinya.
Vitaly: Jadi, Anda beruntung?
Maurice: Selain keberuntungan, itu juga kesiapan . Ini berarti Anda tidak boleh melupakan hal-hal "tidak berguna" yang dipelajari sebelumnya. Semakin banyak hal yang tidak berguna yang Anda pelajari, semakin banyak ide yang dapat Anda ekstrak saat menghadapi masalah baru. Pencocokan pola intuitif seperti itu penting, karena ... Mari kita lakukan, ini adalah rantai: pada awalnya saya menemukan bahwa grafik tidak bekerja sama sekali atau tidak bekerja sama sekali, itu mengingatkan saya pada beberapa peristiwa dari delapan tahun yang lalu dan tahun-tahun mahasiswa saya, ketika kami mempelajari semua kompleks sederhana ini . Pada gilirannya, ini memungkinkan saya untuk menemukan buku teks topologi lama saya dan memuatnya kembali ke kepala saya. Tetapi jika bukan karena pengetahuan lama itu, saya tidak akan pernah maju dalam memecahkan masalah aslinya.
Edisi baru Seni Pemrograman Multi-prosesor
Alexei: kamu mengatakan beberapa kata tentang bukumu. Ini mungkin bukan misteri terburuk yang Anda tulis di buku multithreading paling terkenal di dunia, The Art of Multiprocessor Programming . Dia sudah berusia sekitar 11 tahun dan sejak itu hanya cetak ulang yang direvisi yang dirilis . Apakah akan ada edisi kedua?
Maurice: Ada baiknya Anda bertanya! Ini akan sangat segera, dalam tiga bulan atau lebih. Ada dua penulis lagi, kami menambahkan lebih banyak bahan, memperbaiki bagian tentang fork / join-parallelism, menulis bagian di MapReduce, menambahkan banyak hal baru dan membuang yang tidak perlu - yang pada saat penulisan edisi pertama sangat menarik, tetapi hari ini sudah tidak ada lagi. Hasilnya adalah buku yang direvisi dengan sangat serius.
Alexei: semuanya sudah dilakukan, apakah hanya tinggal rilis saja?
Maurice: Beberapa bab masih harus diselesaikan. Penerbit kami (saya pikir dia sudah membenci kami) masih berusaha untuk menyampaikan bahwa kami harus bekerja lebih cepat. Kami jauh di belakang jadwal. Secara teoritis, kami bisa membuat buku ini beberapa tahun sebelumnya.
Alexei: apakah ada peluang untuk mendapatkan versi baru buku sebelum natal?
Maurice: Itu tujuan kami! Tapi saya sudah meramalkan kemenangan berkali-kali sehingga tidak ada orang lain yang percaya kepada saya. Anda mungkin tidak seharusnya mempercayai saya dalam masalah ini juga.
Alexei: Bagaimanapun, ini adalah berita fantastis. Saya sangat menyukai edisi pertama buku ini. Bisa dibilang aku penggemar.
Maurice: Saya harap edisi baru ini layak untuk antusiasme Anda, terima kasih!
Bagaimana memori transaksional diciptakan?
Vitaliy: Pertanyaan selanjutnya adalah tentang memori transaksional. Seperti yang saya pahami, Anda adalah pelopor dalam bidang ini, Anda menciptakannya pada saat tidak ada yang memikirkan hal-hal seperti itu. Mengapa Anda memutuskan untuk pindah ke area ini? Mengapa transaksi tampak penting bagi Anda? Pernahkah Anda berpikir bahwa mereka akan diwujudkan dalam besi?
Maurice: Saya sudah tahu tentang transaksi sejak studi pascasarjana.
Vitaliy: Ya, tetapi ini adalah transaksi lainnya!
Maurice: Saya bekerja dengan Elliott Moss pada pengumpulan sampah yang tidak menghalangi. Masalah kami adalah kami ingin secara atom mengubah beberapa kata dalam memori, dan kemudian algoritma akan menjadi sangat sederhana, dan setidaknya beberapa dari mereka akan menjadi lebih efisien. Menggunakan compare-and-swap untuk load-link / store-conditional yang disediakan oleh arsitektur paralel dapat melakukan sesuatu, tetapi sangat tidak efisien dan jelek karena Anda harus berurusan dengan tingkat tipuan. Saya ingin mengubah kata-kata memori dan saya perlu beralih karena saya hanya dapat mengubah satu pointer, jadi saya perlu mengarahkan mereka ke semacam struktur direktori-suka. Kami berbicara tentang betapa indahnya jika kami dapat mengganti setrika sehingga dapat merekam secara bersamaan. Elliot tampaknya telah memperhatikan ini: jika Anda melihat protokol koherensi cache, mereka sudah menyediakan sebagian besar fungsi yang diperlukan. Dalam transaksi yang optimis, protokol koherensi cache akan melihat konflik sinkronisasi dan cache menjadi tidak valid . Apa yang terjadi jika Anda secara spekulatif memulai transaksi pada cache Anda dan menggunakan mekanisme protokol koherensi untuk mendeteksi konflik? Arsitektur perangkat keras spekulatif mudah dirancang. Jadi kami menulis publikasi pertama tentang memori transaksional. Pada saat yang sama, perusahaan tempat saya bekerja, Digital Equipment Corporation, sedang menciptakan prosesor 64-bit baru bernama Alpha. Jadi saya pergi dan membuat presentasi kepada tim pengembangan Alpha tentang memori transaksional kami yang luar biasa dan mereka bertanya: penghasilan tambahan apa yang akan diterima perusahaan kami jika kami menambahkan semua ini langsung ke prosesor? Dan saya sama sekali tidak punya jawaban untuk ini, karena saya seorang teknolog, saya bukan spesialis pemasaran. Saya benar-benar tidak punya jawaban. Mereka tidak terlalu terkesan bahwa saya tidak tahu apa-apa.
Vitaliy: Miliaran! Katakan saja "miliaran"!
Maurice: Ya, itu yang seharusnya saya katakan. Sekarang, di era startup dan semua itu, saya tahu cara menulis rencana bisnis. Apa yang bisa Anda bohongi sedikit tentang besarnya potensi keuntungan. Tetapi pada masa itu rasanya naif, jadi saya hanya berkata: "Saya tidak tahu." Jika Anda melihat sejarah publikasi tentang memori transaksional, Anda akan melihat bahwa setelah satu tahun ada beberapa tautan ke sana, dan kemudian selama sekitar sepuluh tahun tidak ada yang mengutip artikel ini sama sekali. Kutipan muncul sekitar 2004, ketika multicore nyata muncul. Ketika orang menemukan bahwa menulis kode paralel dapat menghasilkan uang, penelitian baru dimulai. Ravi Rajwar menulis sebuah artikel yang memperkenalkan arus utama ke konsep memori transaksional dalam beberapa cara. (Catatan Editorial: artikel ini memiliki versi kedua, dirilis pada 2010 dan tersedia secara bebas dalam format PDF ). Tiba-tiba, orang-orang menyadari bagaimana tepatnya semua ini dapat digunakan, bagaimana algoritma pemblokiran akselerasi tradisional dapat dipercepat. Sebuah contoh bagus tentang sesuatu yang di masa lalu tampak seperti masalah akademik yang menarik. Dan ya, jika pada masa itu Anda bertanya kepada saya apakah saya pikir semua ini akan menjadi penting di masa depan, saya akan mengatakan: tentu saja, tetapi kapan tepatnya - tidak jelas. Mungkin dalam 50 tahun? Dalam praktiknya, ini ternyata hanya satu dekade. Sangat menyenangkan ketika Anda melakukan sesuatu, dan setelah hanya sepuluh tahun, orang-orang menyadarinya.
Mengapa perlu melakukan penelitian di bidang komputasi terdistribusi
Vitaliy: Jika kita berbicara tentang penelitian baru, apa yang akan Anda sarankan kepada pembaca - komputasi terdistribusi atau multicore dan mengapa?
Maurice: Saat ini mudah untuk mendapatkan prosesor multi-core, tetapi lebih sulit untuk membuat sistem terdistribusi nyata. Saya mulai mengerjakannya karena saya ingin melakukan sesuatu yang berbeda dari tesis PhD saya. Ini adalah saran yang saya selalu berikan kepada pemula: jangan menulis kelanjutan disertasi - cobalah untuk pergi ke arah yang baru. Namun, multithreading mudah. Saya bisa bereksperimen dengan garpu sendiri yang berjalan di laptop tanpa turun dari tempat tidur. Tetapi jika saya tiba-tiba ingin membuat sistem terdistribusi nyata, saya harus melakukan banyak pekerjaan, menarik siswa, dan sebagainya. Saya orang yang malas dan lebih suka bekerja di multicore. Eksperimen pada sistem multicore juga lebih mudah dilakukan daripada pada sistem terdistribusi, karena bahkan dalam sistem terdistribusi bodoh ada terlalu banyak faktor yang perlu dikendalikan.
Vitaliy: Apa yang Anda lakukan sekarang, menjelajahi blockchain? Artikel apa yang harus Anda perhatikan pertama-tama?
Maurice: Sebuah artikel yang sangat bagus baru-baru ini muncul yang saya tulis bersama siswa saya, Vikram Saraf, khusus untuk berbicara di konferensi Tokenomcs di Paris tiga minggu lalu. Artikel ini adalah tentang sistem terdistribusi praktis di mana kami mengusulkan membuat Ethereum multithreaded. Sekarang kontrak pintar (kode berjalan di blockchain) dijalankan secara berurutan. Kami menulis sebuah artikel sebelumnya yang berbicara tentang bagaimana menggunakan transaksi spekulatif untuk mempercepat prosesnya. Kami mengambil banyak ide dari memori perangkat lunak transaksional dan mengatakan bahwa jika Anda menjadikan ide-ide ini bagian dari mesin virtual Etherium, maka semuanya akan bekerja lebih cepat. Tetapi untuk ini perlu bahwa tidak ada konflik dalam kontrak sesuai dengan data. Dan kemudian kami menyarankan bahwa dalam kehidupan nyata tidak ada konflik seperti itu. Tetapi kami tidak memiliki kesempatan untuk mencari tahu. Kemudian terpikir oleh kami bahwa kami memiliki hampir sepuluh tahun sejarah kontrak nyata, jadi kami membongkar blockchain Etherium dan bertanya pada diri sendiri: apa yang akan terjadi jika catatan sejarah ini dilakukan secara paralel? Kami menemukan peningkatan kecepatan yang signifikan. Pada hari-hari awal Etherium, kecepatan meningkat sangat banyak, tetapi hari ini agak lebih rumit, karena ada lebih sedikit kontrak dan ada kemungkinan konflik yang lebih tinggi atas data yang memerlukan serialisasi. Tetapi semua ini adalah karya eksperimental dengan data historis nyata. Apa yang bagus tentang blockchain adalah ia mengingat semuanya selamanya, sehingga Anda dapat kembali ke masa lalu dan mempelajari apa yang akan terjadi jika kami menggunakan algoritma lain untuk menjalankan kode. Bagaimana orang-orang di sana, di masa lalu, akan menyukai ide baru kami. Penelitian semacam itu jauh lebih mudah dan lebih menyenangkan, karena ada hal yang memonitor semuanya dan mencatat semuanya. Ini sudah sesuatu yang lebih mirip dengan sosiologi daripada pengembangan algoritma.
Apakah pengembangan algoritma berhenti dan cara hidup
Vitaliy: Waktu pertanyaan teoretis terakhir! Apakah Anda merasa bahwa pergeseran dalam struktur data kompetitif menyusut setiap tahun? Apakah Anda pikir kami telah mencapai puncak dalam pemahaman kami tentang struktur data, atau akankah ada perbaikan besar? Mungkin ada beberapa ide rumit yang bisa mengubah segalanya?
Maurice: Kami mungkin telah mencapai dataran tinggi dalam struktur data untuk arsitektur tradisional. Tetapi struktur data untuk arsitektur baru masih merupakan area yang sangat menjanjikan. Jika Anda ingin membuat struktur data, misalnya, untuk akselerator perangkat keras, maka struktur data untuk GPU sangat berbeda dari struktur data untuk CPU. Saat Anda mengembangkan struktur data untuk blockchains, Anda perlu memotong-motong potongan data dan kemudian memasukkannya ke dalam sesuatu seperti pohon Merkle untuk mencegah pemalsuan. Di bidang ini, ada lonjakan baru-baru ini dalam kegiatan, banyak yang melakukan pekerjaan yang sangat baik. Tapi saya pikir itu akan terjadi bahwa arsitektur baru dan aplikasi baru mengarah pada struktur data baru. Aplikasi lama dan arsitektur tradisional - mungkin tidak ada banyak ruang untuk penelitian di sana. Tetapi jika Anda melangkah keluar jalur dan melihat ke tepi, Anda akan melihat hal-hal gila yang tidak diperhatikan oleh arus utama - di sinilah semua hal menarik benar-benar terjadi.
Vitaliy: Karena itu, untuk menjadi peneliti yang sangat terkenal, saya harus menciptakan arsitektur saya sendiri :-)
Maurice: Anda dapat "mencuri" arsitektur baru orang lain - sepertinya lebih mudah!
Pekerjaan di Brown University
Vitaliy: Bisakah Anda memberi tahu kami lebih banyak tentang Brown University , di mana Anda bekerja? Tidak banyak yang diketahui tentang dia dalam konteks teknologi informasi. Kurang dari tentang MIT, misalnya.
Maurice: Brown University adalah salah satu universitas tertua di Amerika Serikat. Saya pikir hanya Harvard yang sedikit lebih tua. Brown adalah bagian dari apa yang disebut Ivy League , yang merupakan kumpulan dari delapan universitas tertua. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, PA, Princeton. Ini adalah semacam universitas tua, kecil dan sedikit aristokrat. Fokusnya adalah pada pendidikan kemanusiaan. Dia tidak berusaha menjadi seperti MIT, MIT sangat terspesialisasi dan teknis. Brown adalah tempat yang tepat untuk mempelajari sastra Rusia atau bahasa Yunani klasik, dan tentu saja, Ilmu Komputer. Ia fokus pada pendidikan komprehensif. Sebagian besar siswa kami pergi ke Facebook, Apple, Google - karena itu, saya berpikir bahwa siswa kami tidak memiliki masalah diselesaikan di industri. Saya bekerja di Brown, karena sebelum itu saya bekerja di Digital Equipment Corporation di Boston. Itu adalah perusahaan yang menemukan banyak hal menarik, tetapi menyangkal pentingnya komputer pribadi. Sebuah perusahaan dengan nasib yang sulit, para pendiri yang dulunya adalah kaum revolusioner muda, mereka tidak belajar apa-apa dan tidak melupakan apa pun, dan karena itu mereka berubah dari kaum revolusioner menjadi kaum reaksioner selama sekitar belasan tahun. Mereka suka bercanda bahwa komputer pribadi memiliki tempat di garasi - di garasi yang ditinggalkan, tentu saja. Jelas bahwa mereka dihancurkan oleh perusahaan yang lebih fleksibel. Ketika menjadi jelas bahwa perusahaan memiliki masalah, saya menelepon teman saya dari Brown, yang sekitar satu jam dari Boston. Saya tidak ingin meninggalkan Boston pada saat itu, karena tidak ada banyak lowongan di universitas lain. Itu adalah waktu ketika di bidang Ilmu Komputer tidak ada begitu banyak lowongan seperti sekarang. Tetapi Brown memiliki lowongan, saya tidak harus pindah dari rumah saya, saya tidak harus memindahkan keluarga saya, dan saya benar-benar suka tinggal di Boston! Jadi saya memutuskan untuk pergi ke Brown. Saya menyukainya. Murid-muridnya luar biasa, jadi saya bahkan tidak pernah mencoba pergi ke tempat lain. Pada liburan kreatif, saya bekerja di Microsoft selama satu tahun, pergi ke Technion di Haifa selama satu tahun, dan sekarang saya akan berada di Algorand. Saya memiliki banyak kolega di mana-mana dan oleh karena itu lokasi fisik kelas pelatihan kami tidak begitu penting. Tapi yang paling penting adalah siswa, mereka yang terbaik di sini. Saya tidak pernah mencoba pergi ke tempat lain, karena saya juga cukup senang di sini.
Namun, terlepas dari ketenaran Brown di Amerika Serikat, ia secara mengejutkan tidak dikenal di luar negeri. Seperti yang Anda lihat, sekarang saya melakukan yang terbaik untuk memperbaiki keadaan ini.
Perbedaan antara penelitian di universitas dan di dalam korporasi
Vitaliy: Nah, pertanyaan selanjutnya adalah tentang Peralatan Digital. Anda adalah seorang peneliti di sana. Apa perbedaan antara bekerja di departemen Litbang sebuah perusahaan besar dan bekerja di universitas? Apa kelebihan dan kekurangannya?
Maurice: Selama dua puluh tahun saya berhasil bekerja di Microsoft, bekerja erat dengan karyawan Sun Microsystems, Oracle, Facebook, dan sekarang Algorand. Berdasarkan semua ini, saya ingin mengatakan bahwa adalah mungkin untuk melakukan penelitian kelas satu di perusahaan dan di universitas. Perbedaan penting adalah bahwa di perusahaan Anda bekerja dengan kolega. Jika tiba-tiba saya mendapat ide tentang proyek yang belum ada, saya harus meyakinkan teman-teman saya bahwa ini adalah ide yang bagus. Jika saya di Brown, maka saya dapat memberi tahu murid-murid saya: mari kita bekerja pada antigravitasi! Mereka akan pergi ke orang lain atau mengambil proyek. Ya, saya perlu mencari pembiayaan, saya perlu menulis permohonan hibah dan sebagainya. Bagaimanapun, akan selalu ada banyak siswa, dan Anda akan dapat membuat keputusan secara sepihak. Tetapi di universitas Anda kemungkinan besar tidak akan bekerja dengan orang-orang dari level Anda. , . . , - , β . -, , , Β«, , , Β». . , , , . , - , - . , , . , , β ! , . , . .
: , , .
: , . , -: - , - . Microsoft Facebook : , . , , β . , , .
Hydra SPTDC
: , .
: , .
: , . , ?
: !
: , SPTDC β . SPTCC , (C D, Concurrent Distributed), , , , . Hydra ?
: . , , , . - β . , - . . proof-of-work, -, .
, , , . , , , β , , .
: , , . . , , , 120 . , , , . Hydra . , , ?
: ? , ?
: . , . , ? β . , - . . , . , , β . .
, . , , , , SPTDC Hydra 2019!
Hydra 2019, 11-12 2019 -. Β«Blockchains and the future of distributed computingΒ» . .