"Hasil empirikal adalah untuk penerbitan sahaja, motif sebenar karya itu adalah estetik." Temu bual hebat dengan Michael Scott

"Hasil empirikal adalah untuk penerbitan sahaja, motif sebenar karya itu adalah estetik." Temu bual hebat dengan Michael Scott Michael Scott - selama 34 tahun sebagai profesor Sains Komputer di University of Rochester, dan di rumahnya University of Wisconsin–Madison dia menjadi dekan selama lima tahun. Beliau menyelidik dan mengajar pelajar tentang reka bentuk bahasa dan pengaturcaraan selari dan teragih.

Dunia mengenali Michael dari buku teks "Pragmatik Bahasa Pengaturcaraan", bagaimana dengan kerja "Algoritma untuk penyegerakan berskala pada multipemproses memori kongsi" menerima Hadiah Dijkstra sebagai salah satu yang paling terkenal dalam bidang pengkomputeran teragih. Anda juga mungkin mengenalinya sebagai pengarang algoritma itu Michael-Scott.

Bersama-sama dengan Doug Lee, beliau membangunkan algoritma tidak menyekat dan baris gilir segerak yang menggerakkan perpustakaan Java. Perlaksanaan "struktur data dwi" dalam JavaSE 6 meningkatkan prestasi sebanyak 10 kali ganda ThreadPoolExecutor.

Kandungan:

  • Kerjaya awal, Universiti Rochester. Projek Charlotte, bahasa Lynx;
  • Antara Muka Koheren Boleh Skala IEEE, penguncian MCS;
  • Kelangsungan hidup dalam dunia yang sentiasa berubah;
  • Adakah pelajar menjadi bodoh? Aliran global, pengantarabangsaan;
  • Kerja yang berkesan dengan pelajar;
  • Bagaimana untuk bersaing dengan penyediaan kursus dan buku baharu;
  • Pautan antara perniagaan dan akademik;
  • Perlaksanaan idea secara praktikal. MCS, MS, CLH, JSR 166, bekerjasama dengan Doug Lee dan banyak lagi;
  • Memori transaksi;
  • Seni bina baharu. Kemenangan ingatan transaksi sudah hampir;
  • Memori tidak meruap, Optane DIMM, peranti ultra pantas;
  • Trend besar seterusnya. Struktur data berganda. Hydra.

Temu bual dijalankan oleh:

Vitaly Aksenov — kini postdoc di IST Austria dan ahli Jabatan Teknologi Komputer di Universiti ITMO. Menjalankan penyelidikan dalam bidang teori dan amalan struktur data kompetitif. Sebelum bekerja di IST, beliau menerima PhD dari Universiti Paris Diderot dan Universiti ITMO di bawah penyeliaan Profesor Peter Kuznetsov.

Alexey Fedorov - Pengeluar di JUG Ru Group, sebuah syarikat Rusia yang menganjurkan persidangan untuk pemaju. Alexey mengambil bahagian dalam penyediaan lebih daripada 50 persidangan, dan resumenya merangkumi segala-galanya daripada jawatan jurutera pembangunan di Oracle (JCK, Java Platform Group) kepada jawatan pembangun di Odnoklassniki.

Vladimir Sitnikov - Jurutera di Netcracker. Sepuluh tahun bekerja pada prestasi dan kebolehskalaan NetCracker OS, perisian yang digunakan oleh operator telekom untuk mengautomasikan proses pengurusan peralatan rangkaian dan rangkaian. Berminat dengan isu prestasi Pangkalan Data Java dan Oracle. Pengarang lebih daripada sedozen peningkatan prestasi dalam pemandu rasmi PostgreSQL JDBC.

Kerjaya awal, Universiti Rochester. Projek Charlotte, bahasa Lynx.

Alexey: Sebagai permulaan, saya ingin memberitahu anda bahawa di Rusia kita semua sangat menyukai Sains Komputer, Sains Data dan algoritma. Ia betul-betul lucah. Kami telah membaca semuanya buku oleh Cormen, Leiserson dan Rivest. Oleh itu, persidangan yang akan datang, sekolah dan wawancara ini sendiri harus menjadi sangat popular. Kami menerima banyak soalan untuk temu bual ini daripada pelajar, pengaturcara dan ahli komuniti, jadi kami amat berterima kasih atas peluang ini. Adakah Sains Komputer mendapat cinta yang sama di AS?

Michael: Bidang kami sangat pelbagai, ia mempunyai banyak hala tuju, dan ia memberi kesan kepada masyarakat dalam pelbagai cara yang berbeza sehingga sukar bagi saya untuk memberi anda jawapan yang pasti. Tetapi hakikatnya ia telah membawa perubahan besar dalam perniagaan, industri, seni dan masyarakat secara umum sejak 30 tahun yang lalu.

Vitali: Mari kita mulakan dengan sesuatu yang jauh. Di banyak universiti terdapat sesuatu seperti pengkhususan dalam satu bidang tertentu. Untuk Carnegie Mellon University ini adalah pengkomputeran selari, untuk MIT ia adalah kriptografi, robot dan multithreading. Adakah terdapat pengkhususan sedemikian di Universiti Rochester?

Michael: Sejujurnya, saya akan mengatakan bahawa CMU dan MIT pakar dalam semua bidang. Jabatan kami sentiasa memberi perhatian yang paling kepada kecerdasan buatan. Separuh daripada orang yang bekerja untuk kami terlibat dalam AI atau interaksi manusia-komputer - bahagian ini lebih tinggi daripada di jabatan lain, dan selalu begitu. Tetapi semasa saya di universiti, saya tidak mempunyai sebarang kursus dalam AI, dan saya tidak pernah bekerja dalam bidang ini. Jadi jabatan saya pakar dalam masalah yang saya tiada kaitan. Saguhatinya ialah masalah kedua terpenting bagi jabatan kami ialah pengaturcaraan selari dan berbilang benang, iaitu pengkhususan saya.

Vitali: Anda mula bekerja dalam Sains Komputer apabila bidang pengaturcaraan berbilang benang baru sahaja muncul. Senarai penerbitan anda menunjukkan bahawa kerja pertama anda menangani pelbagai isu yang agak luas: pengurusan memori dalam sistem berbilang benang, sistem fail teragih, sistem pengendalian. Mengapa serba boleh sedemikian? Pernahkah anda cuba mencari tempat anda dalam komuniti penyelidikan?

Michael: Sebagai seorang pelajar, saya mengambil bahagian dalam Projek Charlotte di Universiti Wisconsin, di mana salah satu sistem pengendalian teragih pertama telah dibangunkan. Di sana saya bekerja bersama Rafael Finkel (Raphael Finkel) dan Marvin Solomon (Marvin Solomon). Disertasi saya dikhaskan untuk pembangunan bahasa untuk perisian sistem untuk sistem yang diedarkan - kini semua orang telah melupakannya, dan alhamdulillah. Saya mencipta bahasa pengaturcaraan Lynx, yang bertujuan untuk memudahkan untuk mencipta pelayan untuk sistem pengendalian teragih yang digandingkan secara longgar. Oleh kerana pada masa itu saya terutamanya terlibat dalam sistem pengendalian, saya menganggap bahawa kerjaya saya akan dikaitkan terutamanya dengan mereka. Tetapi Rochester adalah universiti yang sangat kecil, dan kerana ini, kumpulan yang berbeza di sana berinteraksi dengan sangat rapat antara satu sama lain. Tidak ada sedozen orang sistem pengendalian lain di sana untuk saya bercakap, jadi semua kenalan saya adalah dengan orang yang bekerja di kawasan yang sama sekali berbeza. Saya sangat menikmatinya, menjadi pemain serba boleh adalah kelebihan besar bagi saya. Jika kita bercakap secara khusus tentang struktur data berbilang benang dan algoritma penyegerakan, maka saya mula mengerjakannya sepenuhnya secara tidak sengaja.

Antara Muka Koheren Boleh Skala IEEE, penguncian MCS.

Vitali: Bolehkah anda memberitahu saya lebih lanjut tentang ini?

Michael: Ini adalah kisah kelakar yang saya tidak jemu untuk memberitahu semua orang. Ia berlaku pada satu persidangan ASPLOS di Boston - ini adalah pada akhir 80-an atau awal 90-an. John Mellor-Crummey (John Mellor-Crummey), lulusan fakulti kami. Saya mengenalinya, tetapi kami tidak menjalankan penyelidikan bersama sebelum ini. Mary Vernon (Mary Vernon) dari Wisconsin memberi ceramah tentang sistem berbilang pemproses yang mereka bangunkan di Wisconsin: Wisconsin Multicube. Multicube ini mempunyai mekanisme penyegerakan pada tahap perkakasan yang dipanggil Q pada Bit Sync, dan kemudiannya ia dinamakan semula sebagai Q pada Lock Bit kerana ia berbunyi seperti keju Colby, yang merupakan permainan kata-kata. Jika anda berminat dengan mekanisme multithreading, anda mungkin tahu bahawa Colby akhirnya menjadi enjin penyegerakan untuk standard Antara Muka Koheren Boleh Skala IEEE. Ini ialah mekanisme penguncian yang mencipta penunjuk dari satu cache ke cache yang lain pada tahap perkakasan supaya setiap pemegang kunci tahu giliran siapa. Apabila John dan saya mendengar tentang perkara ini, kami saling memandang dan berkata: mengapa melakukan ini di peringkat perkakasan? Tidakkah perkara yang sama boleh dicapai menggunakan bandingkan-dan-tukar? Kami mengambil salah satu buku nota yang terletak di dalam kelas dan mencontengnya menyekat MCS, manakala Mary meneruskan laporannya. Selepas itu, kami melaksanakannya, bereksperimen, idea itu ternyata berjaya, dan kami menerbitkan artikel itu. Pada masa itu, bagi saya, topik ini kelihatan hanya gangguan yang menyeronokkan, selepas itu saya merancang untuk kembali ke sistem pengendalian. Tetapi kemudian masalah lain di sepanjang baris yang sama timbul, dan akhirnya penyegerakan, multithreading dan struktur data menjadi kepakaran saya. Seperti yang anda lihat, ini semua berlaku secara tidak sengaja.

Vitali: Saya telah biasa dengan penyekatan MCS untuk masa yang lama, tetapi sehingga kini saya tidak tahu bahawa ia adalah kerja anda, dan tidak faham bahawa ia adalah akronim untuk nama keluarga anda.

Bagaimana untuk bertahan dalam dunia yang sentiasa berubah?

Alexey: Saya mempunyai soalan mengenai topik yang berkaitan. 30 atau 40 tahun yang lalu terdapat lebih banyak kebebasan dalam kepakaran yang berbeza. Jika anda ingin memulakan kerjaya dalam multithreading atau sistem teragih, anda dialu-alukan, jika anda ingin memasuki sistem pengendalian, tiada masalah. Di setiap kawasan terdapat banyak soalan terbuka dan sedikit pakar. Pengkhususan sempit kini telah muncul: bukan hanya pakar dalam sistem pengendalian secara umum, terdapat pakar dalam sistem individu. Ia sama dengan sistem multithreading dan diedarkan. Tetapi masalahnya ialah kehidupan kita tidak berkesudahan; semua orang boleh menumpukan hanya beberapa dekad untuk penyelidikan. Bagaimana untuk bertahan di dunia baru ini?

Michael: Kami tidak istimewa dalam hal ini; perkara yang sama pernah berlaku di kawasan lain. Saya bernasib baik kerana saya mula bekerja dalam Sains Komputer ketika bidang itu berada dalam usia "remaja". Beberapa asas telah diletakkan, tetapi semuanya masih belum matang. Peluang ini tidak selalu datang. Kejuruteraan elektrik telah wujud untuk masa yang sangat lama, fizik lebih lama lagi, matematik hampir sejak permulaan zaman. Tetapi ini tidak bermakna tiada siapa yang membuat penemuan menarik dalam matematik lagi. Masih banyak masalah terbuka, tetapi pada masa yang sama, lebih banyak yang perlu dipelajari. Anda betul untuk ambil perhatian bahawa kini terdapat lebih banyak pengkhususan berbanding sebelum ini, tetapi ini hanya bermakna kita mendapati diri kita berada dalam situasi yang sama seperti kebanyakan bidang aktiviti manusia yang lain.

Alexey: Saya berminat dengan aspek yang lebih praktikal dalam isu di sini. Saya mempunyai latar belakang matematik, dan semasa pengajian saya, saya sering menghadiri persidangan dan mengerjakan pelbagai topik saintifik. Saya mendapati bahawa tiada seorang pun dalam khalayak memahami laporan saya, dan dengan cara yang sama, laporan orang lain hanya boleh difahami oleh mereka sendiri. Ini tidak berlaku dalam topik peringkat tinggi, tetapi sebaik sahaja anda mula mendalami sesuatu, penonton tidak lagi dapat bersaing dengan anda. Bagaimana anda menangani perkara ini?

Michael: Tidak selalu berjaya. Saya baru-baru ini menyediakan laporan di mana saya telah mendalami butiran teknikal. Semasa ceramah berlangsung, menjadi jelas bahawa kebanyakan penonton tidak memahami saya, jadi saya terpaksa menyesuaikan diri dengan keadaan dengan cepat. Slaid tidak boleh ditukar, jadi ia tidak menjadi sangat baik - jadi, secara amnya, saya cuba untuk tidak menggunakan slaid. Secara keseluruhan, nasihat saya adalah untuk mempertimbangkan penonton anda. Anda perlu tahu dengan siapa anda bercakap, tahap pengetahuan mereka dan perkara yang mereka perlu dengar untuk menghargai kerja anda.

Vitali: Bolehkah anda memberi kami petunjuk tentang apa ceramah ini?

Michael: Sejujurnya, saya lebih suka untuk tidak mengembangkan topik ini untuk meninggalkan orang yang dipersoalkan tanpa nama. Intinya ialah kita sering terlalu mendalami selok-belok masalah yang sedang kita usahakan, jadi menjadi sukar bagi kita untuk menerangkan pada permulaan ceramah mengapa masalah itu menarik dan penting dan bagaimana ia berkaitan dengan isu yang penonton sudah tahu. Mengikut pemerhatian saya, pelajar paling sukar mempelajari kemahiran ini. Dan ini juga titik lemah laporan saya baru-baru ini. Laporan yang disusun dengan betul harus, dari awal lagi, mencari hubungan dengan penonton, menerangkan kepada mereka apa sebenarnya masalah itu dan bagaimana ia berkaitan dengan topik yang telah diketahuinya. Seberapa teknikal pengenalan ini bergantung kepada penonton. Jika ia benar-benar beraneka ragam, maka laporan itu boleh berbilang peringkat. Pengenalan harus boleh diakses oleh semua orang, dan pada akhirnya bahagian itu mungkin tidak dapat bersaing dengan anda, tetapi orang yang agak biasa dengan bidang anda akan dapat memikirkannya.

Adakah pelajar menjadi bodoh? Trend global, pengantarabangsaan.

Alexey: Anda telah memerhati pelajar selama beberapa dekad. Adakah pelajar semakin bodoh atau lebih bijak dari dekad ke dekad atau tahun ke tahun? Di Rusia, profesor sentiasa mengadu bahawa pelajar menjadi bodoh setiap tahun, dan ia benar-benar tidak jelas apa yang perlu dilakukan mengenainya.

Michael: Anda benar-benar boleh mendengar banyak negatif daripada kami orang tua. Secara tidak sedar, kita mempunyai kecenderungan untuk mengharapkan pelajar menyerap semua pengalaman 30 tahun yang telah kita miliki. Jika saya mempunyai pemahaman yang lebih mendalam daripada yang saya lakukan pada tahun 1985, mengapa pelajar tidak mempunyainya? Mungkin kerana mereka berumur 20 tahun, apa pendapat anda? Saya rasa perubahan paling ketara dalam dekad kebelakangan ini adalah dalam komposisi demografi: kami kini mempunyai lebih ramai pelajar antarabangsa, kecuali orang Kanada. Dulu ramai warga Kanada kerana kami sangat dekat dengan sempadan Kanada dan pelajar dari sana boleh pulang ke rumah pada hujung minggu. Tetapi kini terdapat banyak universiti yang bagus di Kanada, dan orang Kanada lebih suka belajar di sini dengan ketara lebih sedikit daripada mereka yang datang ke Amerika Syarikat.

Alexey: Adakah anda fikir ini trend tempatan atau global?

Michael: Saya tidak ingat dengan tepat siapa, tetapi seseorang berkata bahawa dunia ini rata. Bidang kami telah menjadi lebih antarabangsa. Persidangan ACM Sebelum ini, mereka diadakan secara eksklusif di Amerika Syarikat, kemudian mereka memutuskan untuk mengadakannya setiap 4 tahun sekali di negara lain, dan kini ia diadakan di seluruh dunia. Perubahan ini lebih menjejaskan lagi IEEE, kerana ia sentiasa menjadi organisasi yang lebih antarabangsa daripada ACM. Dan terdapat kerusi program dari China, India, Rusia, Jerman dan banyak negara lain, kerana banyak yang berlaku di mana-mana sekarang.

Alexey: Tetapi, mungkin, terdapat beberapa aspek negatif pengantarabangsaan tersebut?

Michael: Saya akan mengatakan bahawa semua aspek negatif tidak berkaitan dengan teknologi, tetapi dengan politik. Suatu ketika dahulu, masalah utama adalah hakikat bahawa AS mencuri orang yang paling bijak dan paling berbakat dari negara-negara di seluruh dunia. Dan kini masalah utama ialah permainan politik antara negara yang berbeza di sekitar visa dan imigresen.

Alexey: Iaitu, halangan dan perkara-perkara seperti itu. Ia jelas.

Vladimir: Secara peribadi, saya berminat dengan pendekatan yang anda ambil semasa mengajar subjek baharu kepada pelajar. Terdapat pilihan yang berbeza: anda boleh mencuba terlebih dahulu untuk memberi inspirasi kepada mereka untuk mencuba sesuatu yang baharu, atau anda boleh memberi lebih perhatian kepada butiran cara teknologi tertentu berfungsi. Apa yang anda suka?

Kerja yang berkesan dengan pelajar

Alexey: Dan bagaimana untuk mencari keseimbangan antara yang pertama dan kedua?

Michael: Masalahnya ialah kelas tidak selalu berjalan seperti yang saya inginkan. Saya biasanya memberikan bahan bacaan kepada pelajar terlebih dahulu supaya mereka mendalaminya, memahaminya dengan sebaik mungkin dan merumuskan soalan tentang bahagian yang mereka tidak faham. Kemudian di dalam kelas anda boleh memberi tumpuan kepada saat yang paling sukar dan menerokainya bersama-sama. Inilah cara saya paling suka mengajar kelas. Tetapi memandangkan beban yang kini menimpa pelajar, saya tidak selalu dapat memastikan mereka membuat persediaan awal. Akibatnya, anda perlu menumpukan lebih banyak masa untuk menceritakan semula umum bahan daripada yang anda mahukan. Walaupun begitu, saya cuba memastikan kelas kami interaktif. Jika tidak, lebih mudah untuk merakam video setelah pelajar boleh menonton di rumah. Titik kelas langsung adalah interaksi manusia. Dalam kelas, saya lebih suka menggunakan kapur dan papan hitam daripada slaid, kecuali dalam kes tertentu apabila rajah terlalu kompleks untuk digambarkan di papan tulis. Terima kasih kepada ini, saya tidak perlu berpegang kepada rancangan pengajaran yang tegar. Memandangkan tiada perintah yang ketat untuk saya memberikan bahan, ia membolehkan saya menyesuaikannya kepada penonton bergantung pada soalan yang saya terima. Secara umum, saya cuba menjadikan kelas seinteraktif mungkin, supaya bahan yang saya sampaikan bergantung pada soalan yang diajukan kepada saya.

Vladimir: Ia hebat. Dalam pengalaman saya, agak sukar untuk mendapatkan pendengar bertanya soalan. Walaupun anda bertanya terlebih dahulu untuk bertanya apa-apa soalan, tidak kira betapa bodoh atau bijak, mereka masih diam. Bagaimana anda menangani perkara ini?

Michael: Anda akan ketawa, tetapi jika anda berdiri dalam diam cukup lama, lambat laun semua orang akan menjadi tidak selesa dan seseorang akan bertanya soalan. Atau anda boleh bertanya soalan teknikal mudah dengan jawapan ya atau tidak untuk menentukan sama ada orang memahami perkara yang baru diperkatakan. Sebagai contoh, adakah terdapat perlumbaan data dalam contoh di atas? Siapa sangka begitu? Siapa sangka tidak? Siapa yang tidak faham apa-apa, kerana secara keseluruhan hanya separuh tangan yang naik?

Vitali: Dan jika anda salah menjawab, anda akan ditendang keluar dari kelas :)

Michael: Jika anda belum menjawab apa-apa, maka anda harus bertanya soalan. Saya perlu faham apa sebenarnya yang pelajar perlu tahu untuk menjawab soalan yang saya baru tanya. Saya perlukan mereka untuk membantu saya membantu mereka. Saya sedia menyesuaikan diri dengan mereka supaya mereka faham masalahnya. Tetapi jika saya tidak tahu apa yang ada dalam kepala mereka, saya tidak boleh melakukannya. Dan jika anda tidak memberikan pelajar ketenangan untuk masa yang cukup lama, kadang-kadang akhirnya mereka bertanya soalan yang betul, iaitu soalan yang membolehkan saya melihat apa sebenarnya yang sedang berlaku dalam kepala pelajar. 

Alexey: Adakah soalan ini kadangkala membawa kepada idea yang anda sendiri tidak fikirkan sebelum ini? Adakah mereka tidak dijangka? Adakah mereka membenarkan anda melihat masalah dalam pandangan baharu?

Michael: Terdapat soalan yang membuka cara baru untuk menyampaikan bahan. Selalunya ada soalan yang membawa kepada masalah menarik yang saya tidak rancang untuk bercakap. Pelajar sering memberitahu saya bahawa saya mempunyai kecenderungan untuk keluar topik apabila ini berlaku. Dan, menurut mereka, selalunya ini adalah bahagian yang paling menarik dalam pelajaran. Jarang sekali, hanya beberapa kali, pelajar bertanya soalan yang mendorong hala tuju baharu dalam penyelidikan dan berkembang menjadi artikel. Ini berlaku lebih kerap dalam perbualan dengan pelajar berbanding semasa kelas, tetapi kadangkala ia berlaku semasa kelas. 

Alexey: Jadi pelajar bertanya kepada anda soalan atas dasar yang mana mungkin untuk menerbitkan artikel?

Michael: Ya. 

Vitali: Berapa kerapkah anda mengadakan perbualan ini dengan pelajar? Bilakah mereka mahu belajar lebih daripada apa yang dipelajari semasa pelajaran?

Michael: Bersama pelajar siswazah saya - sepanjang masa. Saya mempunyai kira-kira 5 atau 6 daripada mereka, dan kami membincangkan sesuatu dengan mereka sepanjang masa. Dan perbualan seperti ini dengan pelajar yang hanya menghadiri kelas saya bukanlah perkara biasa. Walaupun saya berharap ini berlaku lebih kerap. Saya mengesyaki bahawa mereka hanya takut untuk datang ke fakulti pada waktu pejabat. Setiap semester, beberapa pelajar berjaya mengatasi halangan psikologi ini, dan sentiasa menarik untuk bercakap dengan mereka selepas kelas. Benar, jika semua pelajar berani, saya tidak akan mempunyai masa yang cukup. Jadi mungkin semuanya berfungsi sebagaimana mestinya. 

Vitali: Bagaimanakah anda dapat mencari masa untuk berkomunikasi dengan pelajar? Setahu saya, di USA guru banyak kerja - memohon geran dan seumpamanya. 

Michael: Sejujurnya, bekerja dengan pelajar adalah aspek pekerjaan saya yang paling saya sukai. Jadi saya mempunyai motivasi yang cukup untuk ini. Kebanyakan masa yang saya habiskan di pejabat saya dihabiskan untuk semua jenis mesyuarat. Sekarang musim panas, jadi jadual saya kurang sibuk, tetapi semasa tahun persekolahan, setiap hari dari 9 hingga 17 saya mempunyai segala-galanya. Kerja penyelidikan, ulasan, geran - untuk semua ini hanya ada malam dan hujung minggu. 

Bagaimana untuk bersaing dengan penyediaan kursus dan buku baru.

Alexey: Adakah anda sedang meneruskan mengajar mana-mana kursus yang telah anda ajar sejak sekian lama? Sesuatu seperti pengenalan kepada Sains Komputer.

Michael: Perkara pertama yang terlintas di fikiran di sini ialah kursus dalam bahasa pengaturcaraan. 

Alexey: Sejauh manakah versi kursus ini hari ini berbeza daripada kursus 10, 20, 30 tahun dahulu? Mungkin yang lebih menarik di sini bukanlah butiran kursus tertentu, tetapi trend umum.

Michael: Kursus saya tentang bahasa pengaturcaraan agak luar biasa pada masa saya menciptanya. Saya mula membacanya pada akhir 1980-an, menggantikan rakan sekerja saya, Doug Baldwin (Doug Baldwin). Topik kursus itu hanya berkaitan secara tangensial dengan kepakaran saya, tetapi apabila dia pergi, saya adalah calon terbaik untuk mengajar kursus itu. Saya tidak menyukai mana-mana buku teks yang wujud pada masa itu, jadi saya akhirnya menulis sendiri buku teks untuk kursus ini. (Nota editor: kita bercakap tentang buku itu "Pragmatik Bahasa Pengaturcaraan") Ia kini digunakan di lebih 200 universiti di seluruh dunia. Pendekatan saya adalah luar biasa kerana ia sengaja mencampurkan masalah reka bentuk dan pelaksanaan bahasa, dan memberi perhatian yang besar kepada interaksi antara aspek ini dalam semua bidang yang mungkin. Pendekatan asas kekal tidak berubah, begitu juga dengan banyak konsep asas: abstraksi, ruang nama, modulariti, jenis. Tetapi set bahasa yang digunakan untuk menunjukkan konsep ini telah berubah sepenuhnya. Semasa kursus pertama kali dibuat, terdapat banyak contoh dalam Pascal, tetapi hari ini ramai pelajar saya tidak pernah mendengar bahasa ini. Tetapi mereka tahu Swift, Go, Rust, jadi saya perlu bercakap tentang bahasa yang digunakan hari ini. Selain itu, pelajar kini mahir dalam bahasa skrip, tetapi apabila saya mula mengajar kursus ini, semuanya mengenai bahasa yang disusun. Sekarang kita memerlukan banyak bahan tentang Python, Ruby dan juga Perl, kerana ini adalah kod yang ditulis pada hari ini, dan terdapat banyak perkara menarik yang berlaku dalam bahasa ini, termasuk dalam bidang reka bentuk bahasa. 

Vitali: Kemudian soalan saya seterusnya akan berkaitan dengan yang sebelumnya. Bagaimana untuk bersaing di kawasan ini? Saya mengesyaki bahawa mengemas kini kursus seperti ini memerlukan banyak kerja - anda perlu memahami bahasa baharu, memahami idea utama. Bagaimana anda melakukan ini?

Michael: Saya tidak boleh berbangga bahawa saya sentiasa berjaya 100%. Tetapi kebanyakan masa saya hanya melakukan apa yang orang lain lakukan - membaca Internet. Jika saya ingin memahami Rust, saya Google, pergi ke halaman Mozilla dan baca manual yang disiarkan di sana. Ini adalah sebahagian daripada perkara yang berlaku dalam pembangunan komersial. Jika kita bercakap tentang sains, maka anda perlu mengikuti laporan di persidangan utama. 

Pautan antara perniagaan dan akademik

Vitali: Mari kita bercakap tentang kaitan antara perniagaan dan penyelidikan saintifik. Dalam senarai kerja anda, saya menemui beberapa artikel tentang keselarasan cache. Saya faham bahawa algoritma ketekalan cache tidak stabil pada masa ia diterbitkan? Atau tidak cukup meluas. Sejauh manakah idea anda dalam amalan?

Michael: Saya tidak pasti penerbitan yang anda maksudkan. Saya telah melakukan sedikit kerja dengan pelajar saya Bill Bolosky (William Bolosky) dan Leonidas Kontotanassis (Leonidas Kontothanassis) pada awal 1990-an mengenai pengurusan memori mesin Neumann. Pada masa itu, perniagaan belum lagi memahami cara membuat sistem berbilang pemproses dengan betul: adakah patut mencipta sokongan untuk mengakses memori jauh di peringkat perkakasan, adakah ia bernilai membuat memori diedarkan, adakah mungkin untuk memuatkan cache dari ingatan jauh, atau adakah perlu memindahkan halaman dalam sistem operasi? Bill dan Leonidas kedua-duanya bekerja di kawasan ini dan meneroka pendekatan tanpa memuatkan cache jauh. Ini tidak berkaitan secara langsung dengan keselarasan cache, tetapi ia masih berfungsi pada pengurusan memori NUMA, dan seterusnya pendekatan moden untuk penempatan halaman dalam sistem pengendalian moden berkembang daripada ini. Secara keseluruhan, Bill dan Leonidas melakukan kerja penting, walaupun bukan yang paling berpengaruh dalam bidang ini - terdapat ramai orang lain yang bekerja pada perkara yang sama pada masa itu. Kemudian, saya mengusahakan topik yang berkaitan dengan keselarasan cache dalam konteks memori transaksi perkakasan. Kumpulan yang saya bekerjasama dalam masalah ini akhirnya menerima beberapa paten. Terdapat beberapa idea yang cukup menarik di belakangnya, tetapi saya tidak fikir ia akan akhirnya dilaksanakan dalam amalan. Satu cara atau yang lain, sukar bagi saya untuk menilai keuntungan mereka. 

Alexey: Dalam hal ini, soalan yang lebih peribadi: betapa pentingnya untuk anda idea-idea anda dilaksanakan dalam amalan? Atau adakah anda tidak memikirkannya?

Michael: Saya suka bertanya soalan ini dalam temu bual dengan orang lain, pemohon atau calon yang ingin menyertai fakulti. Saya tidak fikir ada jawapan yang betul untuk soalan ini. Orang yang melakukan perkara yang menarik boleh mempunyai motivasi yang sangat berbeza. Saya tertarik kepada masalah kerana saya secara peribadi menganggapnya menarik, bukan kerana faedah praktikalnya. Tetapi sebaliknya, apabila sesuatu yang menarik masih menemui aplikasi, saya sangat menyukainya. Jadi ia tidak mudah di sini. Tetapi pada permulaan kerja saya, saya masih didorong bukan oleh idea tentang kegunaan akhir di dunia, tetapi oleh keharmonian idea dan keinginan untuk meneroka dan melihat apa yang datang daripadanya. Jika akhirnya ia memberikan hasil yang praktikal, hebat. 

Alexey: Kerana pendidikan dan pengalaman anda, anda lebih mampu daripada kebanyakan orang untuk menilai nilai idea orang lain. Anda boleh membandingkannya dan menentukan yang mana lebih berkesan. Saya pasti anda mempunyai pendapat tentang perkara yang sedang digunakan dalam amalan oleh pengeluar besar seperti Intel. Dari sudut pandangan anda, sejauh manakah betul kursus yang diambil oleh syarikat-syarikat ini?

Michael: Amalan sentiasa berkisar tentang perkara yang boleh berjaya secara komersial, iaitu, mencipta keuntungan, dan lebih baik anda bertanya kepada orang lain tentang perkara itu. Kerja saya kebanyakannya menghasilkan penerbitan, dan dalam bidang sistem pengendalian ia dinilai berdasarkan penunjuk prestasi: kelajuan, penggunaan tenaga, saiz kod. Tetapi saya selalu nampak bahawa hasil empirikal ini ditambahkan pada artikel sahaja supaya ia boleh diterbitkan, dan motif sebenar orang untuk bekerja adalah estetik. Penyelidik menilai penyelesaian dari perspektif artistik, mereka mengambil berat tentang betapa elegan idea itu, dan mereka cuba mencipta sesuatu yang lebih baik daripada pendekatan sedia ada. Penyelidik didorong oleh motif peribadi, subjektif, estetik. Tetapi anda tidak boleh menulis tentang perkara ini dalam artikel itu sendiri; perkara ini bukan hujah untuk jawatankuasa program. Nasib baik, penyelesaian yang elegan selalunya juga pantas dan murah. Sedozen rakan sekerja saya dan saya membincangkan topik ini kira-kira 15 tahun yang lalu dan akhirnya menulis artikel mengenainya. Saya fikir anda masih boleh menemuinya sekarang, ia dipanggil "Cara menilai penyelidikan sistem" atau sesuatu seperti itu, ia mempunyai lebih daripada sedozen pengarang. Ini adalah satu-satunya artikel di mana saya bersama penulis Sasha Fedorova, jadi jika anda mencari namanya dalam senarai penerbitan saya, anda akan menemui perkara yang anda perlukan. Ia bercakap tentang menilai penyelidikan sistem dan betapa pentingnya keanggunan. 

Alexey: Jadi terdapat perbezaan antara piawaian yang dianggap baik dalam sains dan dalam perniagaan. Sains menilai prestasi, penggunaan kuasa, TDP, kemudahan pelaksanaan dan banyak lagi. Adakah anda mempunyai peluang untuk menjalankan penyelidikan jenis ini di universiti? Adakah anda mempunyai makmal dengan mesin yang berbeza dan seni bina yang berbeza di mana anda boleh menjalankan eksperimen?

Michael: Ya, jabatan kami mempunyai banyak mesin menarik yang berbeza. Selalunya mereka kecil, kami mempunyai kelompok kecil dan banyak sistem berbilang pemproses dengan pemecut yang berbeza. Di samping itu, kampus ini mempunyai pusat pengkomputeran yang besar yang melayani para saintis dari beberapa dozen disiplin yang berbeza. Ia mempunyai kira-kira seribu nod dan dua puluh ribu teras, semuanya di Linux. Jika perlu, anda sentiasa boleh membeli beberapa AWS. Jadi kami tidak mempunyai sekatan yang ketara dengan perkakasan. 

Alexey: Bagaimana keadaan tiga puluh tahun yang lalu? Adakah terdapat masalah ketika itu?

Michael: Ia sedikit berbeza ketika itu. Pada pertengahan hingga akhir 1980-an, sains dianggap kekurangan sumber pengkomputeran. Untuk membetulkan keadaan ini, Yayasan Sains Kebangsaan (Asasi Sains Negara) mencipta program penyelidikan eksperimen terkoordinasi (Coordinated Experimental Research, CER). Misi program ini adalah untuk menyediakan infrastruktur pengkomputeran untuk jabatan Sains Komputer, dan ia telah mencapai perubahan yang ketara. Dengan wang yang dia berikan, kami di Universiti Rochester membeli BBN Butterfly 1984-simpul pada tahun 128, ini adalah setahun sebelum saya tiba di sana. Pada masa itu ia adalah sistem berbilang pemproses terbesar di dunia dengan memori bersama. Ia mempunyai 128 pemproses, setiap satu pada papan induk yang berasingan, dan menduduki empat rak. Setiap pemproses mempunyai memori megabait, 128 megabait RAM adalah jumlah yang tidak dapat dibayangkan pada masa itu. Pada mesin ini kami melaksanakan penguncian MCS buat kali pertama. 

Alexey: Jadi, jika saya memahami anda dengan betul, maka pada masa ini masalah dengan perkakasan telah diselesaikan? 

Michael: Secara umum, ya. Terdapat beberapa kaveat: pertama, jika anda melakukan seni bina komputer di peringkat cip, sukar untuk dilakukan dalam persekitaran akademik kerana terdapat alat yang lebih baik untuk melakukannya dalam perniagaan. Jika anda memerlukan sesuatu yang lebih kecil daripada 10 nanometer, anda perlu memesannya daripada orang lain. Dalam bidang ini adalah lebih mudah untuk menjadi penyelidik di Intel. Jika anda sedang mengusahakan komunikasi optik pada cip atau memori keadaan pepejal, anda akan menemui teknologi dalam perniagaan yang belum dalam sains, jadi anda perlu mewujudkan pakatan. Contohnya, Stephen Swanson (Steven Swanson) dicipta perkongsian sebegitu untuk teknologi ingatan baharu. Borang ini tidak selalu berfungsi, tetapi dalam beberapa kes ia boleh menjadi agak berjaya. Di samping itu, dalam sains pembangunan sistem pengkomputeran yang paling berkuasa adalah lebih sukar. Projek superkomputer terbesar pada masa ini di AS, Jepun dan China semuanya tertumpu kepada perniagaan. 

Perlaksanaan idea secara praktikal. MCS, MS, CLH, JSR 166, bekerjasama dengan Doug Lee dan banyak lagi.

Vitali: Anda telah pun bercakap tentang cara anda mula bekerja pada algoritma penyegerakan. Anda mempunyai dua artikel yang sangat terkenal tentang menyekat MCS и Barisan Michael-Scott (MS), yang dalam erti kata lain telah dilaksanakan di Jawa. (Nota editor: semua penerbitan boleh dilihat по ссылке). Di sana penyekatan ini dilaksanakan dengan beberapa perubahan dan ternyata kunci CLH, dan baris gilir telah dilaksanakan seperti yang dimaksudkan. Tetapi bertahun-tahun berlalu antara penerbitan artikel anda dan aplikasi praktikalnya. 

Alexey: Nampaknya kira-kira 10 tahun dalam kes beratur.

Michael: Sebelum ciri ini muncul dalam perpustakaan standard Java?

Vitali: Ya. Apa yang anda lakukan untuk membuat ini berlaku? Atau mereka tidak melakukan apa-apa?

Michael: Saya boleh memberitahu anda bagaimana MS Queue masuk ke Java 5. Beberapa tahun sebelum ia keluar, saya bekerja dengan kumpulan Mark Moyers di Sun Microsystems di makmal mereka berhampiran Boston. Dia menganjurkan bengkel untuk orang yang dia kenali yang sedang mengusahakan masalah menarik dalam multithreading kerana dia ingin mencari topik yang boleh dia jual kepada syarikat mereka. Di situlah saya pertama kali bertemu dengan Doug Lea. Saya dan Doug serta kira-kira 25 orang lain dari Sun bersama-sama membincangkan pembentangan Doug pada JSR 166, yang kemudiannya menjadi java.util.concurrent. Di sepanjang jalan, Doug berkata bahawa dia ingin menggunakan baris gilir MS, tetapi untuk ini dia memerlukan kaunter untuk bilangan elemen dalam baris gilir untuk antara muka. Iaitu, ini sepatutnya dilakukan dengan kaedah yang berasingan, atom, tepat dan cepat. Saya mencadangkan hanya menambah nombor siri pada nod, mengambil nombor nod pertama dan yang terakhir dan menolak satu daripada yang lain. Doug menggaru kepalanya, berkata "mengapa tidak," dan akhirnya melakukan perkara itu. Kami berbincang untuk melaksanakan pendekatan ini di perpustakaan, tetapi Doug melakukan kebanyakan kerja itu sendiri. Hasilnya, beliau berjaya mewujudkan sokongan multithreading yang sangat baik di Jawa. 

Alexey: Jadi, jika saya faham dengan betul, kaedah .size() sepatutnya menjadi sebahagian daripada antara muka baris gilir standard, dan ia sepatutnya mempunyai kerumitan algoritma O(1)?

Michael: Ya, dan sebagai tambahan kepada ini, kaunter berasingan diperlukan.

Alexey: Kerana jika anda memanggil kaedah .size() dalam Java, hasilnya dijangka tersedia serta-merta dan bukan berdasarkan saiz sebenar koleksi. Saya nampak, terima kasih.

Michael: Beberapa tahun kemudian saya sedang mengusahakan dua struktur data dengan pelajar saya Bill Scherer - sebenarnya, inilah yang saya akan bincangkan laporan mengenai Hydra. Doug datang kepada kami dan berkata bahawa dia boleh menggunakannya dalam Rangka Kerja Pelaksana Java. Bersama-sama dengan Bill, mereka mencipta dua pelaksanaan, yang dipanggil beratur adil dan tidak adil. Saya menasihati mereka mengenai projek ini, walaupun saya tidak terlibat dalam menulis kod sebenar. Akibatnya, kelajuan pelaksana telah meningkat dengan ketara. 

Vladimir: Pernahkah anda menemui pelaksanaan yang salah bagi algoritma anda atau permintaan untuk menambah ciri baharu? Secara umum, amalan harus bertepatan dengan teori, tetapi selalunya ia berbeza. Katakan anda menulis algoritma, dan di atas kertas ia berfungsi, tetapi orang yang terlibat dalam pelaksanaan mula meminta anda untuk lebih banyak ciri atau beberapa jenis tweak algoritma. Adakah anda pernah mengalami situasi sedemikian?

Michael: Satu-satunya contoh di mana seseorang datang kepada saya dan bertanya "bagaimana untuk melaksanakannya" ialah soalan Doug, yang telah saya bincangkan. Tetapi terdapat beberapa kes di mana perubahan menarik telah dibuat untuk memenuhi keperluan praktikal. Sebagai contoh, pasukan K42 di IBM menukar kunci MCS dan menjadikannya antara muka standard supaya tidak perlu melepasi nod baris gilir berulang-alik kepada rutin perolehan dan pelepasan. Terima kasih kepada antara muka standard ini, idea yang indah dalam teori mula berfungsi dalam amalan. Sungguh mengejutkan bahawa mereka tidak pernah menerbitkan artikel mengenainya, dan walaupun mereka menerima paten, mereka kemudiannya meninggalkannya. Ideanya sangat bagus, dan saya cuba membincangkannya apabila boleh. 

Terdapat kes lain di mana orang telah membuat penambahbaikan pada algoritma yang telah saya terbitkan. Sebagai contoh, baris gilir MS mempunyai mekanisme pemasangan dua langkah, yang bermaksud terdapat dua CAS pada laluan kritikal baris gilir. Pada kereta lama, CAS agak mahal. Intel dan pengeluar lain telah mengoptimumkannya dengan agak baik baru-baru ini, tetapi suatu masa dahulu ini adalah arahan 30 kitaran, jadi mempunyai lebih daripada satu pada laluan kritikal adalah tidak diingini. Akibatnya, baris gilir yang berbeza telah dibangunkan yang serupa dengan baris gilir MS, tetapi yang hanya mempunyai satu operasi atom pada laluan kritikal. Ini dicapai kerana fakta bahawa dalam tempoh masa tertentu operasi boleh mengambil masa O(n), bukannya O(1). Ia tidak mungkin, tetapi mungkin. Ini berlaku kerana fakta bahawa pada saat tertentu algoritma melintasi baris gilir dari awal ke kedudukan semasa dalam baris gilir ini. Secara umum, algoritma ternyata sangat berjaya. Setakat yang saya tahu, ia tidak digunakan secara meluas, sebahagiannya kerana operasi atom memerlukan sumber yang jauh lebih sedikit daripada sebelumnya. Tetapi idea itu hebat. Saya juga sangat menyukai karya Dave Dice dari Oracle. Semua yang dia lakukan adalah sangat praktikal dan dia menggunakan besi dengan sangat bijak. Beliau mempunyai sebahagian besar daripada algoritma penyegerakan NUMA-aware dan struktur data berbilang benang. 

Vladimir: Apabila anda menulis algoritma atau mengajar pelajar, hasil kerja anda tidak dapat dilihat dengan serta-merta. Komuniti memerlukan sedikit masa untuk membiasakan diri dengan, katakan, artikel baharu. Algoritma baharu tidak segera mencari aplikasi. 

Michael: Tidak jelas sama ada artikel itu penting atau tidak. Saya fikir ia akan menjadi menarik untuk membuat kajian kertas yang telah memenangi anugerah di persidangan. Iaitu, lihat artikel yang orang ahli jawatankuasa program pada satu masa dianggap terbaik. Anda perlu cuba mengira dengan bilangan pautan dan kesan ke atas perniagaan betapa berpengaruhnya artikel ini dalam 10, 20, 25 tahun. Saya ragu akan ada korelasi yang kuat antara keduanya. Ia tidak akan menjadi sifar, tetapi kemungkinan besar ia akan menjadi lebih lemah daripada yang kita mahukan. Banyak idea kekal tidak dituntut untuk masa yang lama sebelum ia tersebar luas. Sebagai contoh, mari kita ambil ingatan transaksi. Lebih daripada 10 tahun berlalu dari masa artikel asal diterbitkan hingga orang ramai mula membina mesin dengannya. Dan sebelum kemunculan ingatan ini dalam produk komersial - dan semua 20. Untuk masa yang sangat lama tiada siapa yang memberi perhatian kepada artikel itu, dan kemudian bilangan pautan kepadanya meningkat dengan mendadak. Sukar untuk meramalkan perkara ini lebih awal. Sebaliknya, kadangkala idea menemui pelaksanaan serta-merta. Beberapa tahun yang lalu, saya menulis kertas kerja dengan Joe Izraelevitz untuk DISC yang mencadangkan takrifan rasmi baharu kesahan untuk struktur data berterusan yang boleh digunakan selepas komputer yang menjalankannya ranap. Saya menyukai artikel itu dari awal, tetapi ia ternyata lebih popular daripada yang saya jangkakan. Ia digunakan oleh beberapa kumpulan yang berbeza dan akhirnya menjadi definisi standard struktur kegigihan. Yang, sudah tentu, bagus.

Vladimir: Adakah terdapat sebarang teknik yang anda gunakan untuk penilaian? Adakah anda cuba menilai artikel anda dan pelajar anda? Dari segi sama ada orang yang anda ajar menuju ke arah yang betul.

Michael: Seperti orang lain, saya lebih memberi perhatian kepada apa yang saya lakukan pada masa ini. Sekali lagi, seperti orang lain, saya kadang-kadang menyemak Google Scholar untuk melihat sama ada kertas kerja lepas saya dipetik, tetapi itu lebih daripada rasa ingin tahu. Selalunya saya sibuk dengan apa yang pelajar saya lakukan sekarang. Apabila ia datang untuk menilai kerja semasa, sebahagian daripadanya adalah pertimbangan estetik, apa yang elegan dan apa yang tidak. Dan pada peringkat harian, soalan terbuka memainkan peranan yang besar. Sebagai contoh, seorang pelajar datang kepada saya dengan graf beberapa keputusan, dan kami cuba memahami dari mana datangnya beberapa kelakuan aneh graf itu. Secara umum, dalam kerja kami, kami sentiasa cuba memahami perkara yang belum kami fahami. 

Memori transaksi

Vitali: Mungkin kita boleh bercakap sedikit tentang ingatan transaksi?

Michael: Saya fikir ia berbaloi untuk mengatakan sekurang-kurangnya sedikit kerana saya meletakkan banyak usaha ke dalamnya. Ini adalah topik yang saya mempunyai lebih banyak penerbitan daripada yang lain. Tetapi pada masa yang sama, anehnya, saya sentiasa sangat ragu-ragu tentang ingatan transaksi. Pada pendapat saya, artikel oleh Herlihy dan Moss (M. Herlihy, J. E. B. Moss) telah diterbitkan lebih awal daripada masanya. Pada awal 1990-an, mereka mencadangkan bahawa memori transaksi boleh membantu pengaturcara berbakat bekerja pada struktur data berbilang benang, supaya struktur ini kemudiannya boleh digunakan sebagai perpustakaan oleh pengaturcara biasa. Iaitu, ia akan menjadi bantuan untuk Doug Lee melakukan JSR 166. Tetapi ingatan transaksi tidak bertujuan untuk memudahkan pengaturcaraan berbilang benang. Tetapi ini betul-betul bagaimana ia mula dilihat pada awal 2000-an, apabila ia menjadi meluas. Ia diiklankan sebagai satu cara untuk menyelesaikan masalah pengaturcaraan selari. Pendekatan ini sentiasa kelihatan tiada harapan kepada saya. Memori transaksi hanya boleh memudahkan untuk menulis struktur data selari. Ini, nampaknya saya, adalah apa yang dia capai. 

Mengenai kesukaran menulis kod berbilang benang

Alexey: Sungguh menarik. Nampaknya terdapat halangan tertentu antara pengaturcara biasa dan mereka yang boleh menulis kod berbilang benang. Tahun lepas, saya bercakap beberapa kali dengan orang yang melaksanakan beberapa rangka kerja algoritma. Sebagai contoh, dengan Martin Thomson, serta dengan pengaturcara yang bekerja pada perpustakaan berbilang benang. (Nota editor: Martin Thompson adalah pemaju yang sangat terkenal, dia menulis Disruptor и Aeron. Dan dia juga ada lapor di persidangan Joker 2015 kami, rakaman video tersedia di YouTube. Dia pun sama dibuka persidangan ini rakaman ucaptama juga tersedia). Cabaran utama, kata mereka, adalah menjadikan algoritma cepat dan mudah digunakan. Iaitu, mereka cuba mengatasi halangan ini dan menarik seramai mungkin orang ke kawasan ini. Apa pendapat anda tentangnya?

Michael: Ini adalah masalah utama multithreading: bagaimana untuk mencapai prestasi tinggi tanpa meningkatkan kerumitan sistem. 

Alexey: Kerana apabila mereka cuba mengelakkan kerumitan, algoritma menjadi kurang universal.

Michael: Kunci di sini ialah abstraksi yang direka bentuk dengan betul. Nampaknya saya ini secara amnya perkara utama untuk sistem komputer sebagai bidang. Butler Lampson suka menggunakan istilah ini, dan dia memanggil kami "pedagang abstraksi." Teknologi mudah tidak wujud hari ini. Pemproses yang kami gunakan mempunyai 10 bilion transistor-kesederhanaan tidak menjadi persoalan. Pada masa yang sama, ISA jauh lebih mudah daripada pemproses, kerana kami bekerja untuk masa yang sangat lama untuk menyediakannya dengan prestasi tinggi dan antara muka yang agak mudah. Tetapi tidak semuanya lancar dengannya sama ada. Masalah yang sama ialah dengan pemecut yang kini muncul di pasaran. Timbul persoalan - bagaimana untuk membuat antara muka yang betul untuk GPU, mekanisme penyulitan, pemampatan, mekanisme transkod, mekanisme algebra linear, atau FPGA yang lebih fleksibel. Bagaimana untuk mencipta antara muka yang menjadikan alat mudah digunakan dan menyembunyikan kerumitan? Ia tidak akan menyingkirkannya, tetapi menyembunyikannya daripada pengaturcara mudah. 

Alexey: Seperti yang saya faham, kita masih mempunyai halangan dalam memahami abstraksi. Mari kita ambil model ingatan pada peringkat pembangunan sains dan teknologi kita, ini adalah salah satu abstraksi utama. Terima kasih kepadanya, semua pengaturcara dibahagikan kepada dua kumpulan: bahagian yang lebih besar adalah mereka yang tidak memahaminya, dan bahagian yang lebih kecil adalah mereka yang memahami, atau berfikir bahawa mereka faham. 

Michael: Itu soalan yang bagus - adakah sesiapa di antara kita benar-benar memahami model ingatan?

Vitali: Terutama dalam C++.

Michael: Bercakap dengan Hans Boehm sekali-sekala. Dia adalah antara orang paling bijak yang saya kenali, pakar terkemuka dalam model ingatan. Dia akan memberitahu anda dengan segera bahawa terdapat banyak yang dia tidak faham. Tetapi jika kita kembali kepada isu abstraksi, maka, pada pendapat saya, idea yang paling penting dalam bidang model ingatan selama 30 tahun yang lalu telah dinyatakan. dalam disertasi Sarita Adve. (Nota editor: senarai lengkap penerbitan tersedia по ссылке).

Alexey: Soalan saya ialah: adakah halangan ini datang dari sifat konsep? 

Michael: Tidak. Sarita membuat kesimpulan bahawa dengan pendekatan yang betul, anda boleh berjaya menyembunyikan semua kerumitan, mendapatkan prestasi tinggi dan memberi pengaturcara API mudah. Dan jika anda mengikuti API ini, anda boleh mencapai konsistensi yang konsisten. Saya fikir ini adalah model yang betul. Tulis kod tanpa perlumbaan data dan dapatkan konsistensi berurutan. Sudah tentu, untuk mengurangkan kemungkinan perlumbaan, alat khas diperlukan, tetapi itu adalah perkara lain. 

Vladimir: Pernahkah dalam kerjaya anda masalah yang seolah-olah selesai tiba-tiba bertukar menjadi malapetaka, atau ternyata masalah ini tidak dapat diselesaikan? Sebagai contoh, secara teori anda boleh memfaktorkan sebarang nombor atau menentukan sama ada sebarang nombor adalah perdana. Tetapi dalam amalan ini boleh menjadi sukar untuk dilakukan dengan perkakasan semasa adalah sukar untuk memfaktorkan nombor. Adakah sesuatu yang serupa berlaku kepada anda?

Michael: Saya langsung tidak ingat apa-apa seperti itu. Ada kalanya saya seolah-olah tiada apa-apa lagi untuk dilakukan di kawasan tertentu, tetapi kemudian sesuatu yang baru dan menarik berlaku di sana. Sebagai contoh, saya fikir kawasan beratur tanpa had telah mencapai kematangan. Selepas beberapa penambahbaikan pada baris gilir MNS, tiada apa yang berlaku lagi. Dan kemudian Morrison (Adam Morrison) dan Afek (Yehuda Afek) mencipta Barisan LCRQ. Ia menjadi jelas bahawa baris gilir berbilang benang tanpa had adalah mungkin, di mana kebanyakan masa hanya terdapat arahan ambil dan kenaikan pada laluan kritikal. Dan ini memungkinkan untuk mencapai susunan magnitud prestasi yang lebih baik. Bukannya kita tidak tahu bahawa pengambilan-dan-kenaikan adalah perkara yang sangat berguna. Eric Freudenthal menulis tentang perkara ini dalam kerjanya mengenai Ultracomputer dengan Allan Gottlieb pada akhir 1980-an, tetapi ia adalah mengenai baris gilir yang terhad. Morrison dan Afek dapat menggunakan pengambilan-dan-kenaikan pada baris gilir tanpa had.

Seni bina baharu. Adakah kemenangan memori transaksi hampir?

Vladimir: Adakah anda sedang mencari penyelesaian seni bina baharu yang boleh berguna untuk algoritma? 

Michael: Sudah tentu, terdapat banyak perkara yang saya ingin lihat dilaksanakan. 

Vladimir: Contoh macam mana?

Michael: Pertama sekali, beberapa sambungan ringkas kepada memori transaksi peringkat perkakasan kami dalam pemproses Intel dan IBM. Khususnya, saya ingin beban dan stor bukan transaksi yang baru sahaja didapati segera tersedia dalam urus niaga. Mereka serta-merta membawa kepada gelung dalam urutan berlaku-sebelum, jadi ia boleh menjadi sukar. Tetapi jika anda mengekalkan lapisan abstraksi, terdapat banyak perkara yang sangat menarik yang boleh anda lakukan di luar urus niaga semasa ia berlaku. Saya tidak tahu betapa sukarnya ini untuk dilaksanakan, tetapi ia akan sangat berguna. 

Satu lagi perkara yang berguna ialah memuatkan cache dari memori jauh. Saya fikir lambat laun ini akan dilakukan. Teknologi ini akan membolehkan penciptaan sistem dengan memori terpisah. Adalah mungkin untuk menyimpan, katakan, 100 terabait memori tidak meruap dalam rak, dan sistem pengendalian itu sendiri secara dinamik akan menentukan bahagian mana memori itu harus sepadan dengan ruang alamat fizikal pemproses. Ini akan sangat berguna untuk pengkomputeran awan, kerana ia akan membolehkan sejumlah besar memori diberikan kepada tugas yang memerlukannya. Saya fikir seseorang akan melakukannya.

Vitali: Untuk menyelesaikan perbincangan tentang ingatan transaksi, saya mempunyai satu lagi soalan mengenai topik ini. Adakah memori transaksi akhirnya menggantikan struktur data berbilang benang standard?

Michael: Tidak. Transaksi adalah mekanisme spekulatif. Pada peringkat pengaturcaraan ini adalah kunci atom, tetapi di dalamnya terdapat spekulasi. Ramalan sedemikian berfungsi jika kebanyakan tekaan adalah betul. Oleh itu, ingatan transaksi berfungsi dengan baik apabila utas hampir tidak berinteraksi antara satu sama lain, dan anda hanya perlu memastikan bahawa tiada interaksi. Tetapi jika mesej bermula antara rangkaian, urus niaga tidak berguna. Biar saya jelaskan, kita bercakap tentang kes apabila urus niaga dililitkan pada keseluruhan operasi atom. Ia masih boleh berjaya digunakan sebagai komponen untuk struktur data berbilang benang. Sebagai contoh, jika anda memerlukan CAS tiga perkataan, dan anda perlu memulangkan tiga perkara kecil di tengah-tengah algoritma berbilang benang yang berfungsi dengan dua puluh benang pada masa yang sama. Secara umum, urus niaga boleh berguna, tetapi ia tidak akan menghapuskan keperluan untuk mereka bentuk struktur data berbilang benang dengan betul. 

Memori tidak meruap, Optane DIMM, peranti ultra pantas.

Vitali: Perkara terakhir yang saya ingin bincangkan ialah topik penyelidikan semasa anda: ingatan tidak meruap. Apa yang boleh kita jangkakan di kawasan ini dalam masa terdekat? Mungkin anda mengetahui sebarang pelaksanaan berkesan yang telah wujud? 

Michael: Saya bukan pakar perkakasan, saya hanya tahu apa yang saya baca dalam berita dan apa yang rakan sekerja saya beritahu saya. Semua orang telah mendengar bahawa Intel menjual Optane DIMM, yang mempunyai kira-kira 3 kali kependaman baca dan 10 kali kependaman tulis daripada RAM dinamik. Tidak lama lagi mereka akan tersedia dalam versi volum yang sangat besar. Sungguh melucukan untuk berfikir bahawa anda boleh mempunyai komputer riba dengan beberapa terabait RAM yang boleh dialamatkan bait. Berkemungkinan dalam 10 tahun kami akan memutuskan untuk menggunakan teknologi baharu ini, memandangkan kami menggunakan DRAM - cuma tingkatkan volumnya. Tetapi terima kasih kepada kebebasan tenaga, peluang baru terbuka untuk kami. Secara asasnya, kita boleh menukar timbunan storan supaya tiada pemisahan antara memori kerja yang boleh dialamatkan bait dan memori berterusan berstruktur blok. Oleh itu, kita tidak perlu mensiri semua yang perlu dipindahkan dari satu program yang dijalankan ke yang lain ke dalam fail berstruktur blok. Daripada ini kita boleh memperoleh banyak prinsip penting yang mempengaruhi sistem pengendalian, persekitaran masa jalan dan stor data teragih. Kawasan ini sangat menarik untuk diusahakan. Secara peribadi, sukar untuk saya meramalkan apa yang akan membawa kepada semua ini, tetapi masalah di sini sangat menghiburkan. Mungkin terdapat perubahan revolusioner di sini, dan ia mengikuti secara semula jadi daripada kerja pada multithreading, kerana pemulihan kegagalan ialah proses "multithreading" bersama-sama operasi biasa sistem. 

Topik utama kedua yang sedang saya usahakan ialah mengurus peranti ultra pantas dan akses selamat kepada peranti daripada ruang pengguna dengan kawalan dasar sistemik. Dalam beberapa tahun kebelakangan ini, terdapat trend untuk mengalihkan akses kepada peranti ke ruang pengguna. Ini dilakukan kerana tindanan kernel TCP-IP tidak boleh berfungsi di atas antara muka rangkaian yang memerlukan paket baharu setiap 5 mikrosaat ia tidak akan bersaing. Oleh itu, pengeluar menyediakan akses terus kepada peranti. Tetapi ini bermakna bahawa sistem pengendalian kehilangan kawalan proses dan ia tidak dapat menyediakan akses yang betul kepada peranti untuk aplikasi bersaing. Pasukan penyelidik kami percaya bahawa kelemahan ini boleh dielakkan. Kami akan mempunyai artikel mengenai perkara ini di USENIX ATC bulan ini. Ia berkaitan dengan kerja pada kegigihan, memandangkan memori berterusan bait-alamat yang tahan lama adalah, pada dasarnya, peranti dengan I/O ultra pantas yang perlu diakses dalam ruang pengguna. Penyelidikan ini membolehkan pendekatan baharu kepada mikrokernel, eksokernel dan percubaan tradisional lain untuk mengalihkan fungsi dengan selamat daripada kernel OS ke ruang pengguna. 

Vladimir: Memori yang boleh dialamatkan bait adalah hebat, tetapi terdapat had fizikal - kelajuan cahaya. Ini bermakna bahawa pasti akan ada kelewatan apabila berinteraksi dengan peranti. 

Michael: Betul sekali.

Vladimir: Adakah kapasiti yang mencukupi untuk menampung beban baru?

Michael: Ini soalan yang sangat baik, tetapi sukar untuk saya jawab. Idea pemprosesan dalam ingatan telah wujud sejak sekian lama, ia sangat menarik, tetapi juga sangat kompleks. Saya tidak bekerja di kawasan ini, tetapi ia akan menjadi bagus jika beberapa penemuan dibuat di sana. Saya takut saya tiada apa-apa lagi untuk ditambah. 

Vladimir: Ada satu lagi masalah. Jumlah RAM baharu yang lebih besar adalah mustahil untuk dimuatkan ke dalam CPU. Oleh itu, disebabkan oleh batasan fizikal, RAM ini mesti diasingkan. 

Michael: Semuanya bergantung kepada bilangan kecacatan dalam pengeluaran litar bersepadu. Sekiranya mungkin untuk mencipta wafer semikonduktor sepenuhnya tanpa kecacatan, maka mungkin untuk membuat keseluruhan litar mikro daripadanya. Tetapi sekarang kita tidak tahu cara membuat litar mikro lebih besar daripada setem pos. 

Vladimir: Tetapi kita masih bercakap tentang saiz besar, kira-kira sentimeter. Ini sudah pasti mempunyai kesan pada kependaman. 

Michael: Ya. Tiada apa yang boleh anda lakukan tentang kelajuan cahaya. 

Vladimir: Malangnya. 

Trend besar seterusnya. Struktur data berganda. Hydra.

Vitali: Setakat yang saya faham, anda menangkap trend baharu dengan cepat. Anda adalah salah seorang yang pertama bekerja dalam ingatan transaksi dan salah seorang yang pertama bekerja dalam ingatan tidak menentu. Apa yang anda fikir akan menjadi trend besar seterusnya? Atau mungkin itu rahsia?

Michael: Sejujurnya, saya tidak tahu. Mudah-mudahan saya akan dapat perasan apabila sesuatu yang baru muncul. Saya tidak cukup bernasib baik untuk mencipta mana-mana bidang baru sendiri, tetapi saya mempunyai sedikit nasib dan dapat mula bekerja agak awal dalam bidang baru yang dicipta oleh orang lain. Saya harap saya akan dapat melakukan ini pada masa akan datang.

Alexey: Soalan terakhir dalam temu bual ini ialah tentang prestasi anda di Hydra dan aktiviti anda di sekolah. Jika saya faham dengan betul, laporan di sekolah adalah tentang algoritma bebas sekatan dan pada persidangan tentang struktur data berganda. Bolehkah anda mengatakan beberapa perkataan tentang laporan ini?

Michael: Sebahagiannya, kami telah pun menyentuh topik ini dengan anda dalam temu bual ini. Ini mengenai kerja yang saya lakukan dengan pelajar saya Bill Scherer. Dia menulis tesis mengenainya, dan Doug Lee turut menyumbang kepadanya, dan akhirnya ia menjadi sebahagian daripada baris gilir segerak berbilang benang dalam perpustakaan Java. Mari kita anggap bahawa struktur data dibaca dan ditulis tanpa menyekat, iaitu, setiap operasi mempunyai bilangan arahan yang terhad pada laluan kritikal. Jika anda cuba mengalih keluar data daripada bekas kosong, atau cuba mengalih keluar data tertentu yang tiada dalam bekas ini, anda akan dimaklumkan dengan segera bahawa ini tidak boleh dilakukan. Tetapi tingkah laku ini mungkin tidak boleh diterima jika urutan benar-benar memerlukan data ini. Kemudian perkara pertama yang terlintas di fikiran ialah membuat gelung yang akan sentiasa bertanya sama ada data yang diperlukan telah muncul. Tetapi kemudian ada gangguan untuk orang lain. Di samping itu, dengan pendekatan ini, anda boleh menunggu 10 minit, dan kemudian beberapa utas lain akan datang, dan ia secara tidak sengaja akan menerima data yang diperlukan terlebih dahulu. Struktur data dwi masih tidak mempunyai kunci, tetapi ia membenarkan urutan menunggu dengan betul. Istilah "double" bermaksud bahawa struktur mengandungi sama ada data atau permintaan untuk data, mari kita panggil mereka anti-data. Jadi, jika anda cuba mendapatkan sesuatu daripada bekas kosong, permintaan akan dimasukkan ke dalam bekas itu. Kini benang boleh menunggu permintaan tanpa mengganggu orang lain. Selain itu, struktur data memberikan keutamaan kepada permintaan supaya apabila diterima, ia menyerahkannya kepada orang yang betul. Hasilnya ialah mekanisme tidak mengunci yang masih mempunyai spesifikasi formal dan prestasi yang baik dalam amalan. 

Alexey: Apakah jangkaan anda daripada struktur data ini? Adakah ia akan meningkatkan prestasi dalam semua kes biasa, atau adakah ia lebih sesuai untuk situasi tertentu? 

Michael: Ia berguna jika, pertama, anda memerlukan bekas tanpa mengunci, dan, kedua, anda perlu menunggu dalam situasi di mana anda perlu mendapatkan semula data dari bekas yang tidak ada di dalamnya. Sepanjang pengetahuan saya, rangka kerja kami menyediakan tingkah laku yang optimum apabila kedua-dua syarat ini dipenuhi. Oleh itu, dalam kes ini saya mengesyorkan menggunakannya. Kelebihan utama struktur data tanpa kunci ialah ia mengelakkan masalah prestasi. Dan menunggu adalah sangat penting dalam banyak algoritma jika data dipindahkan dari satu benang ke yang lain.

Vitali: Biar saya jelaskan: adakah anda akan bercakap tentang perkara yang sama di sekolah dan di persidangan?

Michael: Di sekolah saya akan bercakap secara umum tentang struktur data berbilang benang, dengan prinsip asas yang digariskan pada permulaan pelajaran. Saya menganggap penonton tahu apa itu benang dan biasa dengan kunci. Berdasarkan pengetahuan asas ini, saya akan bercakap tentang struktur data tanpa kunci. Saya akan memberikan gambaran keseluruhan masalah yang paling penting dalam bidang ini, menyentuh topik seperti pengurusan ingatan. Saya tidak fikir akan ada apa-apa yang lebih rumit daripada baris gilir MS.

Alexey: Adakah anda merancang untuk mengajar tentang dua struktur data pada akhir kelas anda di sekolah?

Michael: Saya akan menyebut mereka, tetapi saya tidak akan menghabiskan banyak masa untuk mereka. Laporan Hydra akan didedikasikan untuk mereka. Ia akan merangkumi projek yang akhirnya berjaya memasuki Java, serta bekerjasama dengan Joe Israelevich untuk mencipta varian dwi baris gilir LCRQ, dan mencipta reka bentuk hampir universal untuk struktur data dwi.

Alexey: Jadi kuliah di sekolah boleh disyorkan untuk pemula, dan kuliah mengenai struktur data berganda pada Hydra - untuk orang yang sudah mempunyai pengalaman?

Michael: Betulkan saya jika saya salah, tetapi penonton di Hydra akan menjadi agak pelbagai, termasuk ramai pakar Java, dan pada umumnya orang yang tidak terlibat secara khusus dalam pengaturcaraan berbilang benang. 

Vitali: Ya, memang benar.

Alexey: Sekurang-kurangnya kami berharap begitu.

Michael: Dalam kes ini, saya akan berhadapan dengan masalah yang sama yang mana kami memulakan wawancara ini: bagaimana untuk membuat laporan yang cukup kaya dengan butiran teknikal dan boleh diakses oleh semua pendengar.

Vitali: Adakah anda akan memberikan laporan dengan cara yang sama anda memberi kuliah? Iaitu, bercakap dengan penonton dan menyesuaikan diri dengan keadaan?

Michael: Saya takut ia tidak akan menjadi seperti itu, kerana laporan itu akan mempunyai slaid. Slaid adalah penting apabila pendengar pada mulanya bercakap bahasa yang berbeza. Ramai orang akan merasa sukar untuk memahami saya dalam bahasa Inggeris, terutamanya jika saya bercakap terlalu cepat. Saya memilih topik ini kerana Peter Kuznetsov meminta saya bercakap tentang struktur data tanpa kunci di Sekolah SPTDC; dan kemudian saya memerlukan laporan untuk persidangan kumpulan pengguna Java, dan saya mahu memilih sesuatu yang akan menarik minat khusus pengaturcara Java. Cara paling mudah ialah bercakap tentang perkara-perkara di perpustakaan Java yang saya ada tangan dalam satu cara atau yang lain. 

Alexey: Kami menganggap bahawa penonton di Hydra sudah mengetahui sesuatu tentang pengaturcaraan bebas kunci dan mungkin mempunyai sedikit pengalaman dalam bidang ini. Tetapi ini hanya andaian; keadaan akan menjadi lebih jelas pada persidangan itu sendiri. Bagaimanapun, terima kasih atas masa anda. Saya pasti temu bual itu akan menjadi sangat menarik untuk pembaca kami. Terima kasih banyak-banyak!

Vitali: Terima kasih. 

Michael: Saya akan gembira bertemu dengan anda di St. Petersburg. 

Alexey: Kami juga, kami mempunyai bandar yang indah. Adakah anda pernah ke sini?

Michael: Tidak, saya tidak pernah ke Rusia sama sekali. Tetapi St. Petersburg sentiasa berada dalam senarai tempat yang belum saya kunjungi, tetapi di mana saya benar-benar mahu pergi, jadi saya sangat gembira dengan jemputan itu. 

Alexey: By the way, kami akan mengadakan program lawatan untuk penceramah. Terima kasih banyak atas temu duga, dan semoga hari ini menyenangkan!

Anda boleh meneruskan perbualan anda dengan Michael di persidangan Hydra 2019, yang akan diadakan pada 11-12 Julai 2019 di St. Petersburg. Dia akan datang dengan laporan "Struktur data dwi". Tiket boleh dibeli di laman web rasmi.

Sumber: www.habr.com

Tambah komen