- ในฐานะศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่มหาวิทยาลัยโรเชสเตอร์ และที่มหาวิทยาลัยวิสคอนซิน–แมดิสัน ซึ่งเป็นบ้านเกิดของเขา เขาเป็นคณบดีเป็นเวลาห้าปี เขาค้นคว้าและสอนนักเรียนเกี่ยวกับการเขียนโปรแกรมและการออกแบบภาษาแบบขนานและแบบกระจาย
โลกรู้จักไมเคิลจากหนังสือเรียน ,งานล่ะ ได้รับรางวัล Dijkstra ในฐานะหนึ่งในรางวัลที่มีชื่อเสียงที่สุดในสาขาคอมพิวเตอร์แบบกระจาย คุณอาจรู้จักเขาในฐานะผู้เขียนอัลกอริธึมนั้นเอง .
เขาร่วมกับ Doug Lee พัฒนาอัลกอริธึมที่ไม่ปิดกั้นและคิวแบบซิงโครนัสที่ขับเคลื่อนไลบรารี Java การนำไปปฏิบัติ ใน JavaSE 6 ปรับปรุงประสิทธิภาพขึ้น 10 เท่า ThreadPoolExecutor.
สารบัญ:
- อาชีพช่วงแรก มหาวิทยาลัยโรเชสเตอร์ โครงการ Charlotte ภาษา Lynx;
- อินเทอร์เฟซที่เชื่อมโยงกันที่ปรับขนาดได้ของ IEEE, การล็อค MCS;
- การเอาชีวิตรอดในโลกที่เปลี่ยนแปลงตลอดเวลา
- นักเรียนโง่ขึ้นหรือเปล่า? แนวโน้มระดับโลก ความเป็นสากล
- การทำงานที่มีประสิทธิภาพกับนักเรียน
- จะติดตามการจัดทำหลักสูตรและหนังสือใหม่ได้อย่างไร
- ความเชื่อมโยงระหว่างธุรกิจและวิชาการ
- การนำแนวคิดไปปฏิบัติจริง MCS, MS, CLH, JSR 166 ทำงานร่วมกับ Doug Lee และอีกมากมาย
- หน่วยความจำทรานแซคชัน
- สถาปัตยกรรมใหม่ ชัยชนะของหน่วยความจำแบบทรานแซคชันใกล้เข้ามาแล้ว
- หน่วยความจำแบบไม่ลบเลือน, Optane DIMM, อุปกรณ์ความเร็วสูงพิเศษ
- เทรนด์ใหญ่ต่อไป โครงสร้างข้อมูลแบบคู่ ไฮดรา
การสัมภาษณ์ดำเนินการโดย:
วิตาลี อัคเซนอฟ — ปัจจุบันเป็น postdoc ที่ IST Austria และเป็นสมาชิกของ Department of Computer Technologies ที่ ITMO University ดำเนินการวิจัยในสาขาทฤษฎีและการปฏิบัติเกี่ยวกับโครงสร้างข้อมูลการแข่งขัน ก่อนที่จะทำงานที่ IST เขาได้รับปริญญาเอกจาก Paris Diderot University และ ITMO University ภายใต้การดูแลของศาสตราจารย์ Peter Kuznetsov
Alexey Fedorov - โปรดิวเซอร์ที่ JUG Ru Group บริษัทรัสเซียที่จัดการประชุมสำหรับนักพัฒนา Alexey เข้าร่วมในการเตรียมการประชุมมากกว่า 50 ครั้ง และประวัติย่อของเขาครอบคลุมทุกอย่างตั้งแต่ตำแหน่งวิศวกรการพัฒนาที่ Oracle (JCK, Java Platform Group) ไปจนถึงตำแหน่งนักพัฒนาที่ Odnoklassniki
วลาดิมีร์ ซิตนิคอฟ - วิศวกรที่ Netcracker ผลงานสิบปีในด้านประสิทธิภาพและความสามารถในการปรับขนาดของ NetCracker OS ซึ่งเป็นซอฟต์แวร์ที่ผู้ให้บริการโทรคมนาคมใช้เพื่อทำให้กระบวนการจัดการเครือข่ายและอุปกรณ์เครือข่ายเป็นแบบอัตโนมัติ สนใจปัญหาด้านประสิทธิภาพของ Java และ Oracle Database ผู้เขียนการปรับปรุงประสิทธิภาพมากกว่าหนึ่งโหลในไดรเวอร์ PostgreSQL JDBC อย่างเป็นทางการ
อาชีพช่วงแรก มหาวิทยาลัยโรเชสเตอร์ โครงการ Charlotte ภาษา Lynx
อเล็กซ์: ก่อนอื่น ฉันอยากจะบอกคุณว่าในรัสเซีย เราทุกคนรักวิทยาการคอมพิวเตอร์ วิทยาศาสตร์ข้อมูล และอัลกอริธึมจริงๆ มันหยาบคายมาก เราอ่านหมดแล้ว - ดังนั้นการประชุม โรงเรียน และการสัมภาษณ์ที่กำลังจะมาถึงนี้จึงน่าจะได้รับความนิยมอย่างมาก เราได้รับคำถามมากมายสำหรับการสัมภาษณ์ครั้งนี้จากนักศึกษา โปรแกรมเมอร์ และสมาชิกในชุมชน ดังนั้นเราจึงรู้สึกขอบคุณเป็นอย่างยิ่งสำหรับโอกาสนี้ วิทยาการคอมพิวเตอร์ได้รับความรักแบบเดียวกันในสหรัฐอเมริกาหรือไม่?
ไมเคิล: สาขาของเรามีความหลากหลายมาก มีทิศทางมากมาย และส่งผลกระทบต่อสังคมในรูปแบบต่างๆ มากมาย จนเป็นเรื่องยากสำหรับฉันที่จะให้คำตอบที่ชัดเจนแก่คุณ แต่ความจริงก็คือว่ามันได้นำมาซึ่งการเปลี่ยนแปลงครั้งใหญ่ในธุรกิจ อุตสาหกรรม ศิลปะ และสังคมโดยทั่วไปตลอด 30 ปีที่ผ่านมา
ทา: มาเริ่มกันที่เรื่องไกลๆ กันดีกว่า ในมหาวิทยาลัยหลายแห่งมีความคล้ายคลึงกับความเชี่ยวชาญเฉพาะด้านในด้านใดด้านหนึ่งโดยเฉพาะ สำหรับมหาวิทยาลัย Carnegie Mellon นี่คือการประมวลผลแบบคู่ขนาน สำหรับ MIT มันคือการเข้ารหัส โรบอต และมัลติเธรด มีความเชี่ยวชาญพิเศษดังกล่าวที่ University of Rochester หรือไม่?
ไมเคิล: บอกตามตรงว่า CMU และ MIT เชี่ยวชาญทุกด้าน แผนกของเราให้ความสำคัญกับปัญญาประดิษฐ์มากที่สุดมาโดยตลอด ครึ่งหนึ่งของคนที่ทำงานให้เรามีส่วนร่วมในด้าน AI หรือการโต้ตอบระหว่างมนุษย์กับคอมพิวเตอร์ ซึ่งส่วนแบ่งนี้สูงกว่าในแผนกอื่นๆ และเป็นเช่นนั้นมาโดยตลอด แต่ตอนที่ฉันเรียนมหาวิทยาลัย ฉันไม่มีหลักสูตรด้าน AI และไม่เคยทำงานในสาขานี้เลย ดังนั้นแผนกของฉันจึงเชี่ยวชาญในปัญหาที่ฉันไม่มีอะไรเกี่ยวข้อง การปลอบใจก็คือปัญหาที่สำคัญที่สุดอันดับสองสำหรับแผนกของเราคือการเขียนโปรแกรมแบบขนานและแบบมัลติเธรด นั่นคือความเชี่ยวชาญของฉัน
ทา: คุณเริ่มทำงานในสาขาวิทยาการคอมพิวเตอร์เมื่อสาขาการเขียนโปรแกรมแบบมัลติเธรดเพิ่งเกิดขึ้น รายการสิ่งพิมพ์ของคุณแสดงให้เห็นว่างานแรกของคุณเกี่ยวข้องกับปัญหาที่หลากหลาย: การจัดการหน่วยความจำในระบบมัลติเธรด ระบบไฟล์แบบกระจาย ระบบปฏิบัติการ เหตุใดจึงมีความคล่องตัวเช่นนี้? คุณเคยพยายามค้นหาสถานที่ของคุณในชุมชนการวิจัยหรือไม่?
ไมเคิล: ในฐานะนักเรียน ฉันเข้าร่วมด้วย ที่มหาวิทยาลัยวิสคอนซิน ซึ่งเป็นหนึ่งในระบบปฏิบัติการแบบกระจายระบบแรกๆ ได้รับการพัฒนา ที่นั่นฉันทำงานร่วมกับ Rafael Finkel () และมาร์วิน โซโลมอน (- วิทยานิพนธ์ของฉันทุ่มเทให้กับการพัฒนาภาษาสำหรับซอฟต์แวร์ระบบสำหรับระบบแบบกระจาย - ตอนนี้ทุกคนลืมไปแล้วและขอบคุณพระเจ้า ฉันสร้างภาษาโปรแกรม Lynx ซึ่งมีจุดมุ่งหมายเพื่อให้ง่ายต่อการสร้างเซิร์ฟเวอร์สำหรับระบบปฏิบัติการแบบกระจายคู่อย่างหลวมๆ เนื่องจากในเวลานั้นฉันเกี่ยวข้องกับระบบปฏิบัติการเป็นหลัก ฉันจึงคิดว่าอาชีพของฉันจะเกี่ยวข้องกับระบบปฏิบัติการเป็นหลัก แต่โรเชสเตอร์เป็นมหาวิทยาลัยขนาดเล็กมาก และด้วยเหตุนี้ กลุ่มต่างๆ จึงมีปฏิสัมพันธ์กันอย่างใกล้ชิด ไม่มีระบบปฏิบัติการอื่นอีกนับสิบที่ให้ฉันพูดคุยด้วย ดังนั้นผู้ติดต่อทั้งหมดของฉันจึงอยู่กับคนที่ทำงานในสาขาที่แตกต่างกันโดยสิ้นเชิง ฉันสนุกกับมันมาก การเป็นคนที่มีความสามารถรอบด้านถือเป็นข้อได้เปรียบที่ยิ่งใหญ่สำหรับฉัน หากเราพูดถึงโครงสร้างข้อมูลแบบมัลติเธรดและอัลกอริธึมการซิงโครไนซ์โดยเฉพาะฉันก็เริ่มทำงานกับมันโดยไม่ได้ตั้งใจ
อินเทอร์เฟซเชื่อมโยงกันที่ปรับขนาดได้ของ IEEE, การล็อค MCS
ทา: คุณช่วยบอกฉันเพิ่มเติมเกี่ยวกับเรื่องนี้หน่อยได้ไหม?
ไมเคิล: เรื่องนี้เป็นเรื่องตลกที่ผมไม่เคยเบื่อที่จะเล่าให้ทุกคนฟัง มันเกิดขึ้นในที่ประชุม ในบอสตัน - นี่คือช่วงปลายยุค 80 หรือต้นยุค 90 จอห์น เมลเลอร์-ครัมมีย์ () สำเร็จการศึกษาจากคณะของเรา ฉันรู้จักเขา แต่เราไม่เคยทำการวิจัยร่วมกันมาก่อน แมรี่ เวอร์นอน () จากวิสคอนซินพูดคุยเกี่ยวกับระบบมัลติโปรเซสเซอร์ที่พวกเขากำลังพัฒนาในวิสคอนซิน: - Multicube นี้มีกลไกการซิงโครไนซ์ที่ระดับฮาร์ดแวร์ที่เรียกว่า Q บน Sync Bit และต่อมาได้เปลี่ยนชื่อเป็น Q บน Lock Bit เพราะมันฟังดูเหมือน Colby Cheese ซึ่งเป็นการเล่นสำนวน หากคุณสนใจกลไกแบบมัลติเธรด คุณอาจรู้ว่าในที่สุด Colby ก็กลายเป็นกลไกการซิงโครไนซ์สำหรับมาตรฐาน IEEE Scalable Coherent Interface นี่เป็นกลไกการล็อคที่สร้างพอยน์เตอร์จากแคชหนึ่งไปยังอีกแคชหนึ่งในระดับฮาร์ดแวร์ เพื่อให้ผู้ถือล็อคแต่ละคนรู้ว่าเป็นตาของใคร เมื่อจอห์นและฉันได้ยินเรื่องนี้ เราก็มองหน้ากันและพูดว่า: ทำไมจึงทำเช่นนี้ในระดับฮาร์ดแวร์? ไม่สามารถทำสิ่งเดียวกันได้โดยใช้การเปรียบเทียบและสลับใช่ไหม เราหยิบสมุดบันทึกที่วางอยู่ในห้องเรียนมาเขียนลวกๆ ขณะที่แมรี่เล่าต่อ ต่อจากนั้นเราได้นำไปใช้ ทดลอง แนวคิดนี้ประสบความสำเร็จ และเราได้เผยแพร่บทความนี้ ในเวลานั้นสำหรับฉันหัวข้อนี้ดูเหมือนเป็นเรื่องน่าสนุกหลังจากนั้นฉันวางแผนที่จะกลับไปใช้ระบบปฏิบัติการ แต่แล้วปัญหาอื่นในบรรทัดเดียวกันก็เกิดขึ้น และในที่สุดการซิงโครไนซ์ มัลติเธรด และโครงสร้างข้อมูลก็กลายเป็นความพิเศษของฉัน อย่างที่คุณเห็นทั้งหมดนี้เกิดขึ้นโดยบังเอิญ
ทา: ฉันคุ้นเคยกับการบล็อก MCS มานานแล้ว แต่จนถึงตอนนี้ฉันไม่รู้ว่าเป็นงานของคุณและไม่เข้าใจว่าเป็นตัวย่อของนามสกุลของคุณ
จะอยู่รอดในโลกที่เปลี่ยนแปลงตลอดเวลาได้อย่างไร?
อเล็กซ์: ฉันมีคำถามในหัวข้อที่เกี่ยวข้อง 30 หรือ 40 ปีที่แล้ว มีอิสระมากขึ้นในสาขาพิเศษต่างๆ หากคุณต้องการเริ่มต้นอาชีพในระบบมัลติเธรดหรือระบบกระจาย ไม่เป็นไร หากคุณต้องการเข้าสู่ระบบปฏิบัติการ ก็ไม่มีปัญหา ในแต่ละด้านมีคำถามปลายเปิดมากมายและมีผู้เชี่ยวชาญเพียงไม่กี่คน ขณะนี้มีความเชี่ยวชาญเฉพาะทางที่แคบ: ไม่ได้มีเพียงผู้เชี่ยวชาญเกี่ยวกับระบบปฏิบัติการโดยทั่วไปเท่านั้น แต่ยังมีผู้เชี่ยวชาญในแต่ละระบบอีกด้วย เช่นเดียวกับระบบมัลติเธรดและระบบกระจาย แต่ปัญหาคือชีวิตของเราไม่สิ้นสุด ทุกคนสามารถอุทิศเวลาในการค้นคว้าได้เพียงไม่กี่ทศวรรษ จะอยู่รอดในโลกใหม่นี้ได้อย่างไร?
ไมเคิล: เราไม่ได้พิเศษในเรื่องนี้; ฉันโชคดีที่เริ่มทำงานด้านวิทยาการคอมพิวเตอร์เมื่อสาขานี้ยังเป็น "วัยรุ่น" มีการวางรากฐานบางส่วนแล้ว แต่ทุกอย่างยังไม่สมบูรณ์มากนัก โอกาสนี้ไม่ได้มีมาบ่อยๆ วิศวกรรมไฟฟ้ามีมานานแล้ว ฟิสิกส์ก็นานกว่านั้น คณิตศาสตร์ก็เกือบจะมาตั้งแต่แรกเริ่มแล้ว แต่นี่ไม่ได้หมายความว่าจะไม่มีใครค้นพบสิ่งที่น่าสนใจทางคณิตศาสตร์อีกต่อไป ยังคงมีปัญหาเปิดอยู่มากมาย แต่ในขณะเดียวกันก็จำเป็นต้องเรียนรู้เพิ่มเติม คุณมีสิทธิ์ที่จะทราบว่าขณะนี้มีความเชี่ยวชาญพิเศษมากมายมากกว่าที่เคยเป็นมา แต่นั่นก็หมายความว่าเราพบว่าตัวเองอยู่ในสถานการณ์เดียวกันกับกิจกรรมด้านอื่นๆ ของมนุษย์ส่วนใหญ่
อเล็กซ์: ฉันสนใจประเด็นที่เป็นประโยชน์มากขึ้นที่นี่ ฉันมีพื้นฐานคณิตศาสตร์ และระหว่างเรียนฉันมักจะเข้าร่วมการประชุมและทำงานในหัวข้อทางวิทยาศาสตร์ต่างๆ ฉันค้นพบว่าไม่มีใครในกลุ่มผู้ชมเข้าใจรายงานของฉัน และในทำนองเดียวกัน รายงานของคนอื่นก็สามารถเข้าใจได้เฉพาะตัวเองเท่านั้น นี่ไม่ใช่กรณีในหัวข้อระดับสูง แต่ทันทีที่คุณเริ่มเจาะลึกบางสิ่ง ผู้ชมก็จะตามคุณไม่ทันอีกต่อไป คุณจะจัดการกับเรื่องนี้อย่างไร?
ไมเคิล: ไม่ได้ประสบความสำเร็จเสมอไป ฉันเพิ่งเตรียมรายงานที่เจาะลึกรายละเอียดทางเทคนิคมากเกินไป ขณะที่บรรยายดำเนินไป เห็นได้ชัดว่าผู้ฟังส่วนใหญ่ไม่เข้าใจฉัน ดังนั้นฉันจึงต้องปรับตัวเข้ากับสถานการณ์ทันที ไม่สามารถเปลี่ยนสไลด์ได้ ดังนั้นจึงออกมาได้ไม่ดีนัก โดยทั่วไปแล้ว ฉันพยายามไม่ใช้สไลด์ โดยรวมแล้ว คำแนะนำของฉันคือการพิจารณาผู้ชมของคุณ คุณจำเป็นต้องรู้ว่าคุณกำลังพูดคุยกับใคร ระดับความรู้ของพวกเขาคืออะไร และสิ่งที่พวกเขาต้องได้ยินเพื่อชื่นชมงานของคุณ
ทา: คุณช่วยบอกเราหน่อยได้ไหมว่าการบรรยายครั้งนี้เกี่ยวกับอะไร?
ไมเคิล: พูดตามตรง ฉันไม่ต้องการขยายหัวข้อนี้เพื่อปล่อยให้บุคคลที่เป็นปัญหาไม่เปิดเผยชื่อ ประเด็นก็คือเรามักจะเจาะลึกเข้าไปในความซับซ้อนของปัญหาที่เรากำลังดำเนินการอยู่ ดังนั้นจึงเป็นเรื่องยากสำหรับเราที่จะอธิบายในตอนต้นของการพูดคุยว่าเหตุใดปัญหาจึงน่าสนใจและสำคัญ และเกี่ยวข้องกับประเด็นที่ ผู้ชมรู้อยู่แล้ว จากการสังเกตของฉัน นักเรียนมีช่วงเวลาที่ยากที่สุดในการเรียนรู้ทักษะนี้ และนี่ก็เป็นจุดอ่อนของรายงานล่าสุดของฉันด้วย ตั้งแต่เริ่มต้น รายงานที่มีโครงสร้างอย่างเหมาะสมควรค้นหาการติดต่อกับผู้ชม อธิบายให้พวกเขาฟังว่าปัญหาที่แท้จริงคืออะไร และเกี่ยวข้องกับหัวข้อที่ทราบอยู่แล้วอย่างไร การแนะนำนี้จะมีความทางเทคนิคเพียงใดนั้นขึ้นอยู่กับผู้ชม หากมีการผสมผสานกันโดยสิ้นเชิง รายงานอาจเป็นแบบหลายขั้นตอนได้ ทุกคนควรเข้าถึงการแนะนำเบื้องต้นได้ และในตอนท้ายบทความนี้อาจตามคุณไม่ทัน แต่คนที่คุ้นเคยกับสาขาของคุณค่อนข้างจะเข้าใจได้
นักเรียนโง่ขึ้นหรือเปล่า? แนวโน้มระดับโลก ความเป็นสากล
อเล็กซ์: คุณสังเกตนักเรียนมาหลายสิบปีแล้ว นักเรียนเริ่มโง่ขึ้นหรือฉลาดขึ้นจากทศวรรษสู่ทศวรรษหรือปีต่อปี? ในรัสเซีย อาจารย์มักจะบ่นว่านักเรียนเริ่มโง่ขึ้นทุกปี และยังไม่ชัดเจนจริงๆ ว่าต้องทำอย่างไร
ไมเคิล: คุณสามารถได้ยินเรื่องเชิงลบมากมายจากพวกเราเฒ่าคนแก่จริงๆ เรามีแนวโน้มที่จะคาดหวังให้นักเรียนซึมซับประสบการณ์ 30 ปีที่เรามีอยู่โดยไม่รู้ตัวโดยไม่รู้ตัว ถ้าฉันมีความเข้าใจที่ลึกซึ้งมากกว่าในปี 1985 แล้วทำไมนักเรียนถึงไม่มีล่ะ? อาจเป็นเพราะพวกเขาอายุ 20 ปีคุณคิดอย่างไร? ฉันคิดว่าการเปลี่ยนแปลงที่สำคัญที่สุดในช่วงไม่กี่ทศวรรษที่ผ่านมาคือองค์ประกอบทางประชากรศาสตร์ ขณะนี้เรามีนักศึกษาต่างชาติเพิ่มขึ้นอย่างมาก ยกเว้นชาวแคนาดา เคยมีชาวแคนาดาจำนวนมากเพราะเราอยู่ใกล้กับชายแดนแคนาดามากและนักเรียนจากที่นั่นสามารถเดินทางกลับบ้านได้ในช่วงสุดสัปดาห์ แต่ปัจจุบันมีมหาวิทยาลัยดีๆ หลายแห่งในแคนาดา และชาวแคนาดานิยมเรียนที่นี่น้อยกว่ามาก
อเล็กซ์: คุณคิดว่านี่เป็นเทรนด์ท้องถิ่นหรือกระแสระดับโลก?
ไมเคิล: ฉันจำไม่ได้แน่ชัดว่าใคร แต่มีคนบอกว่าโลกแบน สาขาของเราได้กลายเป็นสากลมากขึ้น ก่อนหน้านี้จัดเฉพาะในประเทศสหรัฐอเมริกา จากนั้นจึงตัดสินใจจัดทุก 4 ปีในประเทศอื่นๆ และตอนนี้จัดไปทั่วโลก การเปลี่ยนแปลงเหล่านี้ส่งผลกระทบมากยิ่งขึ้น เนื่องจากเป็นองค์กรระดับนานาชาติมากกว่า ACM มาโดยตลอด และมีประธานโครงการจากจีน อินเดีย รัสเซีย เยอรมนี และประเทศอื่นๆ อีกมากมาย เพราะขณะนี้มีเรื่องมากมายเกิดขึ้นทุกที่
อเล็กซ์: แต่อาจมีด้านลบบางประการของความเป็นสากลดังกล่าว?
ไมเคิล: ฉันจะบอกว่าด้านลบทั้งหมดไม่เกี่ยวข้องกับเทคโนโลยี แต่เกี่ยวข้องกับการเมือง กาลครั้งหนึ่ง ปัญหาหลักคือการที่สหรัฐฯ ขโมยคนที่ฉลาดและมีความสามารถมากที่สุดจากประเทศต่างๆ ทั่วโลก และตอนนี้ปัญหาหลักคือเกมการเมืองระหว่างประเทศต่างๆ เกี่ยวกับวีซ่าและการย้ายถิ่นฐาน
อเล็กซ์: นั่นคืออุปสรรคและอะไรทำนองนั้น ก็เป็นที่ชัดเจน.
วลาดิเมีย: โดยส่วนตัวแล้ว ฉันสนใจว่าคุณใช้แนวทางใดในการสอนวิชาใหม่ให้กับนักเรียน มีตัวเลือกต่างๆ มากมาย: คุณสามารถลองก่อนอื่นเลยเพื่อสร้างแรงบันดาลใจให้พวกเขาลองสิ่งใหม่ ๆ หรือคุณสามารถให้ความสำคัญกับรายละเอียดเกี่ยวกับวิธีการทำงานของเทคโนโลยีบางอย่างมากขึ้น คุณชอบอะไร?
การทำงานที่มีประสิทธิภาพกับนักเรียน
อเล็กซ์: และจะหาจุดสมดุลระหว่างอันที่หนึ่งและอันที่สองได้อย่างไร?
ไมเคิล: ปัญหาคือชั้นเรียนไม่ได้เป็นไปตามที่ฉันต้องการเสมอไป ฉันมักจะให้นักเรียนอ่านเนื้อหาล่วงหน้าเพื่อให้นักเรียนเจาะลึก ทำความเข้าใจอย่างสุดความสามารถ และตั้งคำถามเกี่ยวกับส่วนที่พวกเขาไม่เข้าใจ จากนั้นในชั้นเรียน คุณสามารถมุ่งความสนใจไปที่ช่วงเวลาที่ยากลำบากที่สุดและสำรวจร่วมกัน นี่คือวิธีที่ฉันชอบสอนชั้นเรียนมากที่สุด แต่ด้วยภาระของนักเรียนในตอนนี้ ฉันไม่สามารถแน่ใจได้เสมอไปว่าพวกเขาเตรียมตัวล่วงหน้า เป็นผลให้คุณต้องอุทิศเวลาให้กับการเล่าเรื่องทั่วไปมากกว่าที่คุณต้องการ อย่างไรก็ตาม ฉันพยายามที่จะทำให้ชั้นเรียนมีการโต้ตอบกัน มิฉะนั้น จะง่ายกว่าในการบันทึกวิดีโอเมื่อนักเรียนสามารถรับชมที่บ้านได้ จุดประสงค์ของการเรียนสดคือการมีปฏิสัมพันธ์ของมนุษย์ ในชั้นเรียน ฉันชอบใช้ชอล์กและกระดานดำมากกว่าสไลด์ ยกเว้นในบางกรณีที่แผนภาพซับซ้อนเกินกว่าจะบรรยายบนกระดานได้ ด้วยเหตุนี้ ฉันจึงไม่ต้องยึดติดกับแผนการสอนที่เข้มงวดอีกต่อไป เนื่องจากฉันไม่มีคำสั่งที่เข้มงวดในการให้เนื้อหา สิ่งนี้ทำให้ฉันสามารถปรับแต่งเนื้อหาให้เหมาะกับผู้ชมได้โดยขึ้นอยู่กับคำถามที่ฉันได้รับ โดยทั่วไป ฉันพยายามทำให้ชั้นเรียนมีการโต้ตอบมากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้เนื้อหาที่ฉันนำเสนอขึ้นอยู่กับคำถามที่ถามฉัน
วลาดิเมีย: มันเยี่ยมมาก. จากประสบการณ์ของผม การให้ผู้ฟังถามคำถามค่อนข้างยาก แม้จะถามล่วงหน้าไม่ว่าจะโง่หรือฉลาดแค่ไหนก็ยังเงียบอยู่ คุณจะจัดการกับเรื่องนี้อย่างไร?
ไมเคิล: คุณจะหัวเราะ แต่ถ้าคุณยืนเงียบๆ นานพอ ไม่ช้าก็เร็วทุกคนจะอึดอัดและจะมีคนถามคำถาม หรือคุณสามารถถามคำถามทางเทคนิคง่ายๆ โดยตอบว่าใช่หรือไม่ใช่ เพื่อพิจารณาว่าผู้คนเข้าใจสิ่งที่เพิ่งพูดไปหรือไม่ ตัวอย่างเช่น มีการแย่งชิงข้อมูลในตัวอย่างข้างต้นหรือไม่ ใครคิดเช่นนั้น? ใครคิดไม่ออก? ใครไม่เข้าใจอะไรเลยเพราะรวมมือขึ้นเพียงครึ่งมือ?
ทา: และถ้าตอบผิดจะถูกไล่ออกจากชั้นเรียน :)
ไมเคิล: หากคุณยังไม่ได้ตอบอะไรคุณควรถามคำถาม ฉันต้องเข้าใจว่านักเรียนต้องรู้อะไรเพื่อตอบคำถามที่ฉันเพิ่งถาม ฉันต้องการให้พวกเขาช่วยฉันช่วยพวกเขา ฉันพร้อมที่จะปรับตัวเพื่อให้พวกเขาเข้าใจปัญหา แต่ถ้าฉันไม่รู้ว่าเกิดอะไรขึ้นในหัวของพวกเขา ฉันก็ทำไม่ได้ และถ้าคุณไม่ให้ความสงบสุขแก่นักเรียนเป็นเวลานานพอ บางครั้งในที่สุดพวกเขาก็ถามคำถามที่ถูกต้อง นั่นก็คือคำถามที่ช่วยให้ฉันเห็นได้ว่าเกิดอะไรขึ้นในหัวของนักเรียนกันแน่
อเล็กซ์: คำถามเหล่านี้บางครั้งนำไปสู่แนวคิดที่คุณเองก็ไม่เคยคิดมาก่อนหรือไม่? พวกเขาไม่คาดคิดเหรอ? สิ่งเหล่านี้ช่วยให้คุณมองปัญหาในมุมมองใหม่หรือไม่?
ไมเคิล: มีคำถามที่เปิดช่องทางใหม่ในการนำเสนอเนื้อหา มักจะมีคำถามที่นำไปสู่ปัญหาที่น่าสนใจซึ่งฉันไม่ได้ตั้งใจจะพูดถึง นักเรียนมักจะบอกฉันว่าฉันมีแนวโน้มที่จะออกนอกประเด็นเมื่อเกิดเหตุการณ์เช่นนี้ และบ่อยครั้งที่นี่คือส่วนที่น่าสนใจที่สุดของบทเรียน บ่อยครั้งนัก นักเรียนถามคำถามที่กระตุ้นให้เกิดทิศทางใหม่ในการวิจัยและเติบโตเป็นบทความ เพียงไม่กี่ครั้ง สิ่งนี้เกิดขึ้นบ่อยมากในการสนทนากับนักเรียนมากกว่าในชั้นเรียน แต่บางครั้งก็เกิดขึ้นระหว่างเรียนด้วย
อเล็กซ์: ดังนั้นนักเรียนจึงถามคำถามโดยพิจารณาจากข้อใดจึงจะสามารถเผยแพร่บทความได้?
ไมเคิล: ใช่.
ทา: คุณสนทนาเรื่องเหล่านี้กับนักเรียนบ่อยแค่ไหน? พวกเขาต้องการเรียนรู้มากกว่าสิ่งที่ครอบคลุมระหว่างบทเรียนเมื่อใด
ไมเคิล: กับผมนักศึกษาระดับบัณฑิตศึกษา-ตลอดเวลา ฉันมีประมาณ 5 หรือ 6 คนและเราพูดคุยบางอย่างกับพวกเขาตลอดเวลา และการสนทนาแบบนี้กับนักเรียนที่เข้าเรียนในชั้นเรียนของฉันก็ไม่ธรรมดานัก แม้ว่าฉันหวังว่าสิ่งนี้จะเกิดขึ้นบ่อยขึ้น ฉันสงสัยว่าพวกเขากลัวที่จะมาคณะในเวลาทำการ ทุกๆ ภาคเรียน นักเรียนบางคนสามารถเอาชนะอุปสรรคทางจิตวิทยานี้ได้ และเป็นเรื่องน่าสนใจมากที่จะพูดคุยกับพวกเขาหลังเลิกเรียน จริงอยู่ ถ้านักเรียนทุกคนกล้าหาญ ฉันก็คงไม่มีเวลาเพียงพอ บางทีทุกอย่างอาจทำงานได้อย่างที่ควรจะเป็น
ทา: คุณจัดการหาเวลาสื่อสารกับนักเรียนได้อย่างไร? เท่าที่ฉันรู้ ครูในสหรัฐอเมริกามีงานมากมาย ทั้งการสมัครขอรับทุนและอื่นๆ
ไมเคิล: จริงๆ แล้ว การได้ทำงานกับนักเรียนเป็นลักษณะงานของฉันที่ฉันชอบมากที่สุด ดังนั้นฉันจึงมีแรงจูงใจเพียงพอสำหรับเรื่องนี้ เวลาส่วนใหญ่ที่ฉันใช้ในออฟฟิศคือใช้ในการประชุมทุกประเภท ตอนนี้เป็นฤดูร้อน ตารางงานของฉันเลยยุ่งน้อยลง แต่ในช่วงปีการศึกษา ทุกวันตั้งแต่ 9 ถึง 17 โมงเช้า ฉันเตรียมทุกอย่างไว้แน่น งานวิจัย การวิจารณ์ ทุนสนับสนุน - ทั้งหมดนี้มีเพียงช่วงเย็นและวันหยุดสุดสัปดาห์เท่านั้น
วิธีติดตามการจัดทำหลักสูตรและหนังสือใหม่ๆ
อเล็กซ์: ปัจจุบันคุณยังคงสอนหลักสูตรใด ๆ ที่คุณสอนมาเป็นเวลานานหรือไม่? บางอย่างเช่นการแนะนำวิทยาการคอมพิวเตอร์
ไมเคิล: สิ่งแรกที่นึกถึงที่นี่คือหลักสูตรภาษาโปรแกรม
อเล็กซ์: เวอร์ชันปัจจุบันของหลักสูตรนี้แตกต่างจากเมื่อ 10, 20, 30 ปีที่แล้วอย่างไร บางทีสิ่งที่น่าสนใจกว่าที่นี่ไม่ใช่รายละเอียดของหลักสูตรใดหลักสูตรหนึ่ง แต่เป็นแนวโน้มทั่วไป
ไมเคิล: หลักสูตรของฉันเกี่ยวกับภาษาการเขียนโปรแกรมค่อนข้างผิดปกติในขณะที่ฉันสร้างมันขึ้นมา ฉันเริ่มอ่านมันในช่วงปลายทศวรรษ 1980 โดยแทนที่ Doug Baldwin เพื่อนร่วมงานของฉัน (- หัวข้อของหลักสูตรเกี่ยวข้องกับความเชี่ยวชาญพิเศษของฉันเท่านั้น แต่เมื่อเขาจากไป ฉันเป็นผู้สมัครที่ดีที่สุดในการสอนหลักสูตรนี้ ฉันไม่ชอบตำราเรียนเล่มใดที่มีอยู่ในเวลานั้น เลยลงเอยด้วยการเขียนตำราเรียนสำหรับหลักสูตรนี้ด้วยตัวเอง (หมายเหตุบรรณาธิการ: เรากำลังพูดถึงหนังสือเล่มนี้) ปัจจุบันมีการใช้งานในมหาวิทยาลัยมากกว่า 200 แห่งทั่วโลก แนวทางของฉันไม่ธรรมดาตรงที่จงใจผสมปัญหาของการออกแบบภาษาและการนำไปใช้ และให้ความสนใจอย่างมากกับการมีปฏิสัมพันธ์ระหว่างแง่มุมเหล่านี้ในทุกด้านที่เป็นไปได้ แนวทางพื้นฐานยังคงไม่เปลี่ยนแปลง เช่นเดียวกับแนวคิดพื้นฐานมากมาย: นามธรรม, เนมสเปซ, ความเป็นโมดูลาร์, ประเภท แต่ชุดของภาษาที่ใช้แสดงแนวคิดเหล่านี้ได้เปลี่ยนไปอย่างสิ้นเชิง เมื่อหลักสูตรนี้ถูกสร้างขึ้นครั้งแรก มีตัวอย่างในภาษาปาสคาลมากมาย แต่ปัจจุบัน นักเรียนของฉันหลายคนไม่เคยได้ยินภาษานี้ด้วยซ้ำ แต่พวกเขารู้จัก Swift, Go, Rust จึงต้องพูดถึงภาษาที่ใช้อยู่ในปัจจุบัน นอกจากนี้ นักเรียนยังมีความเชี่ยวชาญในภาษาสคริปต์เป็นอย่างดี แต่เมื่อฉันเริ่มสอนหลักสูตรนี้ จะเป็นเรื่องเกี่ยวกับภาษาที่เรียบเรียงทั้งหมด ตอนนี้เราต้องการเนื้อหามากมายเกี่ยวกับ Python, Ruby และแม้แต่ Perl เพราะนี่คือโค้ดที่เขียนกันในยุคนี้ และมีสิ่งที่น่าสนใจมากมายเกิดขึ้นในภาษาเหล่านี้ รวมถึงในด้านการออกแบบภาษาด้วย
ทา: คำถามถัดไปของฉันจะเกี่ยวข้องกับคำถามก่อนหน้า จะอยู่ในพื้นที่นี้ได้อย่างไร? ฉันสงสัยว่าการอัปเดตหลักสูตรดังกล่าวต้องใช้ความพยายามมาก - คุณต้องเข้าใจภาษาใหม่ เข้าใจแนวคิดหลัก คุณจะทำอย่างไร?
ไมเคิล: ฉันไม่สามารถอวดได้ว่าฉันประสบความสำเร็จ 100% เสมอไป แต่ส่วนใหญ่แล้วฉันก็ทำเหมือนกับที่คนอื่นทำ นั่นคือการอ่านอินเทอร์เน็ต หากฉันต้องการทำความเข้าใจกับ Rust ฉันจะใช้ Google ไปที่หน้า Mozilla และอ่านคู่มือที่โพสต์ไว้ที่นั่น นี่เป็นส่วนหนึ่งของสิ่งที่เกิดขึ้นในการพัฒนาเชิงพาณิชย์ ถ้าพูดถึงวิทยาศาสตร์ก็ต้องติดตามรายงานในที่ประชุมใหญ่ๆ
ความเชื่อมโยงระหว่างธุรกิจและวิชาการ
ทา: เรามาพูดถึงความเชื่อมโยงระหว่างธุรกิจกับการวิจัยทางวิทยาศาสตร์กันดีกว่า ในรายการผลงานของคุณ ฉันพบบทความหลายบทความเกี่ยวกับการเชื่อมโยงกันของแคช ฉันเข้าใจว่าอัลกอริธึมความสอดคล้องของแคชไม่เสถียรในขณะที่เผยแพร่ หรือไม่แพร่หลายเพียงพอ ความคิดของคุณในทางปฏิบัติเป็นเรื่องธรรมดาแค่ไหน?
ไมเคิล: ฉันไม่แน่ใจว่าคุณกำลังพูดถึงสิ่งพิมพ์ไหน ฉันทำงานร่วมกับนักเรียนของฉัน Bill Bolosky มาบ้างแล้ว () และลีโอนิดัส คอนโตตานาสซิส () ในช่วงต้นทศวรรษ 1990 เกี่ยวกับการจัดการหน่วยความจำของเครื่องนอยมันน์ ในเวลานั้นธุรกิจยังไม่มีความเข้าใจเกี่ยวกับวิธีการสร้างระบบมัลติโปรเซสเซอร์อย่างเหมาะสม: มันคุ้มค่าหรือไม่ที่จะสร้างการสนับสนุนสำหรับการเข้าถึงหน่วยความจำระยะไกลในระดับฮาร์ดแวร์ มันคุ้มค่าที่จะกระจายหน่วยความจำหรือไม่ เป็นไปได้ไหมที่จะโหลดแคชจาก หน่วยความจำระยะไกลหรือจำเป็นต้องย้ายเพจในระบบปฏิบัติการ? Bill และ Leonidas ต่างก็ทำงานในพื้นที่นี้และสำรวจแนวทางต่างๆ โดยไม่ต้องโหลดแคชจากระยะไกล สิ่งนี้ไม่เกี่ยวข้องโดยตรงกับการเชื่อมโยงกันของแคช แต่ยังคงทำงานเกี่ยวกับการจัดการหน่วยความจำ NUMA และต่อมาแนวทางสมัยใหม่ในการวางตำแหน่งหน้าในระบบปฏิบัติการสมัยใหม่ก็เติบโตขึ้นจากสิ่งนี้ โดยรวมแล้ว Bill และ Leonidas ทำงานที่สำคัญ แม้ว่าจะไม่ได้มีอิทธิพลมากที่สุดในด้านนี้ แต่ก็มีคนอื่นอีกหลายคนที่ทำงานในเรื่องเดียวกันในขณะนั้น ต่อมา ฉันทำงานในหัวข้อที่เกี่ยวข้องกับการเชื่อมโยงกันของแคชในบริบทของหน่วยความจำธุรกรรมของฮาร์ดแวร์ กลุ่มที่ฉันทำงานด้วยเกี่ยวกับปัญหานี้ได้รับสิทธิบัตรหลายฉบับ มีแนวคิดที่น่าสนใจอยู่บ้าง แต่ฉันไม่คิดว่าแนวคิดเหล่านั้นจะถูกนำไปใช้ในทางปฏิบัติในที่สุด ไม่ทางใดก็ทางหนึ่ง มันยากสำหรับฉันที่จะตัดสินความสามารถในการทำกำไรของพวกเขา
อเล็กซ์: ในเรื่องนี้ คำถามส่วนตัวมากกว่า: การที่แนวคิดของคุณถูกนำไปปฏิบัติมีความสำคัญต่อคุณแค่ไหน? หรือคุณคิดไม่ออก?
ไมเคิล: ฉันชอบถามคำถามนี้ในการสัมภาษณ์บุคคลอื่น ผู้สมัคร หรือผู้สมัครที่ต้องการเข้าร่วมคณะ ฉันไม่คิดว่าจะมีคำตอบที่ถูกต้องสำหรับคำถามนี้ คนที่ทำสิ่งดีๆ อาจมีแรงจูงใจที่แตกต่างกันมาก ฉันสนใจปัญหาเพราะโดยส่วนตัวแล้วฉันพบว่ามันน่าสนใจ ไม่ใช่เพราะประโยชน์ในทางปฏิบัติ แต่ในทางกลับกัน เมื่อมีสิ่งที่น่าสนใจยังคงพบการใช้งาน ฉันชอบมันมาก ดังนั้นมันไม่ง่ายเลยที่นี่ แต่ในช่วงเริ่มต้นของงาน ฉันยังคงไม่ได้ขับเคลื่อนโดยแนวคิดเรื่องการใช้งานปลายทางในโลก แต่โดยความกลมกลืนของแนวคิดและความปรารถนาที่จะสำรวจมันและดูว่ามีอะไรเกิดขึ้นบ้าง ถ้าสุดท้ายแล้วได้ผลจริงก็เยี่ยมเลย
อเล็กซ์: เนื่องจากการศึกษาและประสบการณ์ของคุณ คุณจึงสามารถตัดสินคุณค่าของแนวคิดของผู้อื่นได้ดีกว่าคนส่วนใหญ่ คุณสามารถเปรียบเทียบและพิจารณาว่าอันไหนทำงานได้ดีกว่าอันไหน ฉันแน่ใจว่าคุณมีความคิดเห็นเกี่ยวกับสิ่งต่างๆ ที่ผู้ผลิตรายใหญ่เช่น Intel ใช้ในทางปฏิบัติในปัจจุบัน จากมุมมองของคุณ หลักสูตรที่บริษัทเหล่านี้กำลังเรียนอยู่มีความถูกต้องเพียงใด
ไมเคิล: การฝึกฝนมักจะเกี่ยวข้องกับสิ่งที่สามารถประสบความสำเร็จในเชิงพาณิชย์ได้ นั่นคือ สร้างผลกำไร และคุณควรถามคนอื่นเกี่ยวกับเรื่องนั้น งานของฉันส่วนใหญ่ส่งผลให้เกิดการตีพิมพ์ และในด้านระบบปฏิบัติการนั้น พวกเขาจะได้รับการประเมินตามตัวบ่งชี้ประสิทธิภาพ: ความเร็ว การใช้พลังงาน ขนาดรหัส แต่สำหรับฉันดูเหมือนเสมอว่าผลลัพธ์เชิงประจักษ์เหล่านี้จะถูกเพิ่มลงในบทความเท่านั้นเพื่อให้สามารถตีพิมพ์ได้ และแรงจูงใจที่แท้จริงของผู้คนในการทำงานคือสุนทรียภาพ นักวิจัยประเมินวิธีแก้ปัญหาจากมุมมองเชิงศิลปะ พวกเขาสนใจว่าแนวคิดต่างๆ จะงดงามเพียงใด และพยายามสร้างบางสิ่งที่ดีกว่าแนวทางที่มีอยู่ นักวิจัยขับเคลื่อนด้วยแรงจูงใจส่วนบุคคล อัตนัย และสุนทรียศาสตร์ แต่คุณไม่สามารถเขียนเกี่ยวกับเรื่องนี้ในบทความได้ สิ่งเหล่านี้ไม่ใช่ข้อโต้แย้งสำหรับคณะกรรมการโครงการ โชคดีที่โซลูชันที่หรูหรามักจะรวดเร็วและราคาถูกเช่นกัน ฉันและเพื่อนร่วมงานหลายสิบคนคุยกันหัวข้อนี้เมื่อประมาณ 15 ปีที่แล้วและลงเอยด้วยการเขียนบทความเกี่ยวกับเรื่องนี้ ฉันคิดว่าตอนนี้คุณยังหามันเจออยู่เรียกว่า หรืออะไรทำนองนั้น มีผู้เขียนมากกว่าหนึ่งโหล นี่เป็นบทความเดียวที่ฉันเป็นผู้เขียนร่วมกับ ดังนั้น หากคุณค้นหาชื่อของเธอในรายการสิ่งพิมพ์ของฉัน คุณจะพบสิ่งที่คุณต้องการ พูดถึงการประเมินการวิจัยระบบและความสง่างามมีความสำคัญเพียงใด
อเล็กซ์: ดังนั้นจึงมีความแตกต่างระหว่างมาตรฐานของสิ่งที่ถือว่าดีในทางวิทยาศาสตร์และในธุรกิจ วิทยาศาสตร์จะประเมินประสิทธิภาพ การใช้พลังงาน TDP ความง่ายในการใช้งาน และอื่นๆ อีกมากมาย คุณมีโอกาสทำวิจัยประเภทนี้ที่มหาวิทยาลัยหรือไม่? คุณมีห้องปฏิบัติการที่มีเครื่องจักรและสถาปัตยกรรมต่างกันซึ่งคุณสามารถดำเนินการทดลองได้หรือไม่?
ไมเคิล: ใช่ แผนกของเรามีเครื่องจักรที่น่าสนใจมากมาย ส่วนใหญ่มักจะมีขนาดเล็ก เรามีคลัสเตอร์ขนาดเล็กและระบบมัลติโปรเซสเซอร์จำนวนมากที่มีตัวเร่งความเร็วต่างกัน นอกจากนี้ วิทยาเขตยังมีศูนย์คอมพิวเตอร์ขนาดใหญ่ที่ให้บริการนักวิทยาศาสตร์จากหลากหลายสาขาวิชา มีโหนดประมาณหนึ่งพันโหนดและคอร์สองหมื่นคอร์ ทั้งหมดบน Linux หากจำเป็น คุณสามารถซื้อ AWS บางส่วนได้ตลอดเวลา ดังนั้นเราจึงไม่มีข้อจำกัดที่สำคัญเกี่ยวกับฮาร์ดแวร์
อเล็กซ์: สามสิบปีที่แล้วเป็นยังไงบ้าง? ตอนนั้นมีปัญหาไหม?
ไมเคิล: ตอนนั้นมันแตกต่างออกไปเล็กน้อย ในช่วงกลางถึงปลายทศวรรษ 1980 วิทยาศาสตร์ถือว่าขาดแคลนทรัพยากรด้านคอมพิวเตอร์ เพื่อแก้ไขสถานการณ์นี้มูลนิธิวิทยาศาสตร์แห่งชาติ ) ได้สร้างโครงการวิจัยเชิงทดลองเชิงประสานงาน (Coordinated Experimental Research, CER) ภารกิจของโครงการคือการจัดเตรียมโครงสร้างพื้นฐานด้านคอมพิวเตอร์สำหรับแผนกวิทยาการคอมพิวเตอร์ และได้บรรลุการเปลี่ยนแปลงที่สำคัญ ด้วยเงินที่เธอจัดหามา พวกเราที่มหาวิทยาลัยโรเชสเตอร์จึงซื้อผีเสื้อ BBN 1984 นอตในปี 128 ซึ่งเป็นเวลาหนึ่งปีก่อนที่ฉันจะไปถึงที่นั่น ในเวลานั้นเป็นระบบมัลติโปรเซสเซอร์ที่ใหญ่ที่สุดในโลกพร้อมหน่วยความจำที่ใช้ร่วมกัน มีโปรเซสเซอร์ 128 ตัว แต่ละตัวอยู่บนมาเธอร์บอร์ดแยกกัน และกินพื้นที่สี่แร็ค โปรเซสเซอร์แต่ละตัวมีหน่วยความจำหนึ่งเมกะไบต์ RAM 128 เมกะไบต์เป็นจำนวนที่ไม่อาจจินตนาการได้ในขณะนั้น ในเครื่องนี้ เราได้นำการล็อค MCS มาใช้เป็นครั้งแรก
อเล็กซ์: ถ้าฉันเข้าใจคุณถูกต้องแล้วตอนนี้ปัญหาเกี่ยวกับฮาร์ดแวร์ได้รับการแก้ไขแล้วหรือยัง?
ไมเคิล: โดยทั่วไปแล้วใช่ มีข้อแม้บางประการ: ประการแรก หากคุณกำลังทำสถาปัตยกรรมคอมพิวเตอร์ในระดับชิป เป็นเรื่องยากที่จะทำในสภาพแวดล้อมทางวิชาการ เนื่องจากมีเครื่องมือที่ดีกว่ามากในการทำธุรกิจ หากคุณต้องการอะไรที่เล็กกว่า 10 นาโนเมตร คุณจะต้องสั่งซื้อจากบุคคลอื่น ในด้านนี้การเป็นนักวิจัยที่ Intel จะง่ายกว่ามาก หากคุณกำลังทำงานเกี่ยวกับการสื่อสารแบบออปติกบนชิปหรือหน่วยความจำโซลิดสเตท คุณจะพบกับเทคโนโลยีในธุรกิจที่ยังไม่มีทางวิทยาศาสตร์ ดังนั้นคุณจึงต้องสร้างพันธมิตร ตัวอย่างเช่น Stephen Swanson () สร้าง สำหรับเทคโนโลยีหน่วยความจำใหม่ แบบฟอร์มนี้ใช้ไม่ได้ผลเสมอไป แต่ในบางกรณีก็อาจประสบความสำเร็จได้ นอกจากนี้ ในด้านวิทยาศาสตร์ การพัฒนาระบบคอมพิวเตอร์ที่ทรงพลังที่สุดนั้นยากกว่า โครงการซูเปอร์คอมพิวเตอร์ที่ใหญ่ที่สุดในปัจจุบันในสหรัฐอเมริกา ญี่ปุ่น และจีนล้วนมุ่งเน้นไปที่ธุรกิจ
การนำแนวคิดไปปฏิบัติจริง MCS, MS, CLH, JSR 166 ทำงานร่วมกับ Doug Lee และอีกมากมาย
ทา: คุณได้พูดคุยเกี่ยวกับวิธีเริ่มทำงานกับอัลกอริธึมการซิงโครไนซ์แล้ว คุณมีบทความที่มีชื่อเสียงมากสองบทความเกี่ยวกับ и ซึ่งในแง่หนึ่งถูกนำไปใช้ใน Java (หมายเหตุบรรณาธิการ: สามารถดูสิ่งพิมพ์ทั้งหมดได้ - มีการบล็อกนี้โดยมีการเปลี่ยนแปลงบางอย่างที่นั่นและปรากฏว่า และคิวก็ถูกนำไปใช้ตามที่ตั้งใจไว้ แต่หลายปีผ่านไประหว่างการตีพิมพ์บทความของคุณกับการใช้งานจริง
อเล็กซ์: ดูเหมือนว่าประมาณ 10 ปีในกรณีคิว
ไมเคิล: ก่อนที่คุณสมบัติเหล่านี้จะปรากฏในไลบรารีมาตรฐาน Java?
ทา: ใช่. คุณทำอะไรเพื่อให้สิ่งนี้เกิดขึ้น? หรือพวกเขาไม่ได้ทำอะไรเลย?
ไมเคิล: ฉันสามารถบอกคุณได้ว่า MS Queue เข้าสู่ Java 5 ได้อย่างไร ไม่กี่ปีก่อนที่ Java 25 จะออกมา ฉันทำงานร่วมกับกลุ่มของ Mark Moyers ที่ Sun Microsystems ในห้องทดลองใกล้บอสตัน เขาจัดเวิร์คช็อปสำหรับคนที่เขารู้จักซึ่งกำลังแก้ไขปัญหาที่น่าสนใจในด้านมัลติเธรด เพราะเขาต้องการค้นหาหัวข้อที่เขาสามารถขายให้กับบริษัทของพวกเขาได้ นั่นคือที่ที่ฉันได้พบกับดั๊ก ลีครั้งแรก ดั๊กกับฉันและคนอื่นๆ อีกประมาณ XNUMX คนจากซันพูดคุยกันเกี่ยวกับการนำเสนอของดั๊ก ซึ่งต่อมากลายเป็น java.util.concurrent ระหว่างทาง Doug กล่าวว่าเขาต้องการใช้คิว MS แต่สำหรับสิ่งนี้ เขาต้องการตัวนับจำนวนองค์ประกอบในคิวสำหรับอินเทอร์เฟซ นั่นคือควรทำโดยวิธีแยกกันแบบอะตอมมิกแม่นยำและรวดเร็ว ฉันแนะนำให้เพิ่มหมายเลขซีเรียลไปที่โหนด โดยนำหมายเลขของโหนดแรกและโหนดสุดท้ายมาลบออกจากอีกโหนดหนึ่ง ดั๊กเกาหัวแล้วพูดว่า "ทำไมจะไม่ได้" และจบลงด้วยการทำเช่นนั้น เราได้พูดคุยถึงการนำแนวทางนี้ไปใช้ในห้องสมุด แต่ Doug เองก็ทำงานส่วนใหญ่ด้วยตัวเอง เป็นผลให้เขาสามารถสร้างการสนับสนุนมัลติเธรดที่ยอดเยี่ยมใน Java ได้
อเล็กซ์: ดังนั้น ถ้าฉันเข้าใจถูกต้อง วิธีการ .size() ควรเป็นส่วนหนึ่งของอินเทอร์เฟซคิวมาตรฐาน และควรมีความซับซ้อนของอัลกอริทึมเป็น O(1)?
ไมเคิล: ใช่ และนอกเหนือจากนี้ จำเป็นต้องมีตัวนับแยกต่างหาก
อเล็กซ์: เพราะถ้าคุณเรียกใช้เมธอด .size() ใน Java ผลลัพธ์คาดว่าจะพร้อมใช้งานทันทีและไม่ขึ้นอยู่กับขนาดจริงของคอลเลกชัน ฉันเห็นแล้ว ขอบคุณ
ไมเคิล: ไม่กี่ปีต่อมา ฉันทำงานเกี่ยวกับโครงสร้างข้อมูลแบบคู่กับนักเรียนของฉัน Bill Scherer - อันที่จริง นี่คือสิ่งที่ฉันจะพูดถึง - Doug มาหาเราและบอกว่าเขาสามารถใช้สิ่งเหล่านี้ใน Java Executor Framework ได้ พวกเขาร่วมมือกับ Bill เพื่อสร้างการใช้งานสองแบบ ที่เรียกว่าคิวที่ยุติธรรมและไม่ยุติธรรม ฉันแนะนำพวกเขาเกี่ยวกับโปรเจ็กต์นี้ แม้ว่าฉันจะไม่ได้มีส่วนร่วมในการเขียนโค้ดจริงก็ตาม ส่งผลให้ความเร็วของผู้ดำเนินการเพิ่มขึ้นอย่างมาก
วลาดิเมีย: คุณเคยพบการใช้งานอัลกอริธึมหรือคำขอเพิ่มคุณสมบัติใหม่อย่างไม่ถูกต้องหรือไม่? โดยทั่วไปแล้ว การปฏิบัติควรสอดคล้องกับทฤษฎี แต่บ่อยครั้งที่การปฏิบัตินั้นแตกต่างกัน สมมติว่าคุณเขียนอัลกอริธึมและมันใช้งานได้บนกระดาษ แต่คนที่เกี่ยวข้องกับการนำไปใช้เริ่มขอให้คุณมีคุณสมบัติเพิ่มเติมหรือปรับแต่งอัลกอริธึมบางอย่าง คุณเคยมีสถานการณ์เช่นนี้หรือไม่?
ไมเคิล: ตัวอย่างเดียวที่มีคนมาหาฉันและถามว่า "จะนำไปใช้อย่างไร" คือคำถามของ Doug ซึ่งฉันได้พูดถึงไปแล้ว แต่มีบางกรณีที่มีการเปลี่ยนแปลงที่น่าสนใจเพื่อให้เหมาะกับความต้องการในทางปฏิบัติ ตัวอย่างเช่น ทีมงาน K42 ของ IBM ได้แปลงการล็อก MCS และทำให้เป็นอินเทอร์เฟซมาตรฐาน ดังนั้นจึงไม่จำเป็นต้องส่งโหนดคิวกลับไปกลับมาเพื่อรับและเผยแพร่รูทีน ต้องขอบคุณอินเทอร์เฟซมาตรฐานนี้ แนวคิดที่สวยงามในทางทฤษฎีจึงเริ่มทำงานในทางปฏิบัติ น่าแปลกใจที่พวกเขาไม่เคยตีพิมพ์บทความเกี่ยวกับเรื่องนี้เลย และแม้ว่าพวกเขาจะได้รับสิทธิบัตร แต่พวกเขาก็ละทิ้งมันในภายหลัง แนวคิดนี้ยอดเยี่ยมมาก และฉันก็พยายามพูดถึงเรื่องนี้ทุกครั้งที่เป็นไปได้
มีกรณีอื่นๆ ที่ผู้คนทำการปรับปรุงอัลกอริธึมที่ฉันเผยแพร่ ตัวอย่างเช่น คิว MS มีกลไกการติดตั้งสองขั้นตอน ซึ่งหมายความว่ามี CAS สองตัวบนเส้นทางวิกฤติของคิว สำหรับรถยนต์รุ่นเก่า CAS ค่อนข้างแพง Intel และผู้ผลิตรายอื่นๆ ได้ปรับปรุงคำสั่งเหล่านี้ค่อนข้างดีเมื่อเร็วๆ นี้ แต่กาลครั้งหนึ่งนี่เป็นคำสั่งแบบ 30 รอบ ดังนั้นการมีมากกว่าหนึ่งคำสั่งในเส้นทางวิกฤติจึงไม่เป็นที่พึงปรารถนา เป็นผลให้มีการพัฒนาคิวที่แตกต่างกันซึ่งคล้ายกับคิว MS แต่มีการดำเนินการอะตอมมิกเพียงครั้งเดียวบนเส้นทางวิกฤติ สิ่งนี้เกิดขึ้นได้เนื่องจากในระหว่างช่วงระยะเวลาหนึ่ง การดำเนินการอาจใช้เวลา O(n) แทนที่จะเป็น O(1) มันไม่น่าเป็นไปได้ แต่เป็นไปได้ สิ่งนี้เกิดขึ้นเนื่องจากความจริงที่ว่าในช่วงเวลาหนึ่งอัลกอริทึมจะข้ามคิวจากจุดเริ่มต้นไปยังตำแหน่งปัจจุบันในคิวนี้ โดยทั่วไปแล้วอัลกอริทึมประสบความสำเร็จอย่างมาก เท่าที่ฉันรู้ มันไม่ได้ถูกใช้กันอย่างแพร่หลาย ส่วนหนึ่งเป็นเพราะการดำเนินงานของอะตอมต้องใช้ทรัพยากรน้อยกว่าเมื่อก่อนอย่างมาก แต่ความคิดนั้นยอดเยี่ยมมาก ฉันชอบผลงานของ Dave Dice จาก Oracle มากเช่นกัน ทุกสิ่งที่เขาทำนั้นใช้ได้จริงและใช้เหล็กอย่างชาญฉลาดมาก เขามีส่วนช่วยในอัลกอริธึมการซิงโครไนซ์ NUMA-aware และโครงสร้างข้อมูลแบบมัลติเธรด
วลาดิเมีย: เมื่อคุณเขียนอัลกอริทึมหรือสอนนักเรียน ผลลัพธ์ของงานจะไม่ปรากฏให้เห็นในทันที ชุมชนต้องการเวลาเพื่อทำความคุ้นเคยกับบทความใหม่ อัลกอริธึมใหม่ไม่พบแอปพลิเคชันทันที
ไมเคิล: ยังไม่ชัดเจนในทันทีว่าบทความดังกล่าวจะมีนัยสำคัญหรือไม่ ฉันคิดว่าการศึกษาผลงานที่ได้รับรางวัลจากการประชุมต่างๆ เป็นเรื่องน่าสนใจ นั่นคือดูบทความที่คนในคณะกรรมการโครงการในคราวเดียวถือว่าดีที่สุด คุณต้องพยายามคำนวณด้วยจำนวนลิงก์และผลกระทบต่อธุรกิจว่าบทความเหล่านี้มีอิทธิพลอย่างไรใน 10, 20, 25 ปี ฉันสงสัยว่าจะมีความสัมพันธ์กันอย่างมากระหว่างคนทั้งสอง มันจะไม่เป็นศูนย์ แต่มีแนวโน้มว่ามันจะอ่อนแอกว่าที่เราต้องการมาก ความคิดมากมายยังคงไม่มีใครอ้างสิทธิ์มาเป็นเวลานานก่อนที่จะแพร่หลาย ตัวอย่างเช่น ลองใช้หน่วยความจำทรานแซคชันกัน เวลาผ่านไปกว่า 10 ปีนับตั้งแต่ที่มีการเผยแพร่บทความต้นฉบับจนถึงเวลาที่ผู้คนเริ่มสร้างเครื่องจักรด้วยบทความดังกล่าว และก่อนที่จะปรากฏความทรงจำนี้ในผลิตภัณฑ์เชิงพาณิชย์ - และทั้งหมด 20 รายการ เป็นเวลานานมากที่ไม่มีใครสนใจบทความนี้จากนั้นจำนวนลิงก์ไปยังบทความก็เพิ่มขึ้นอย่างรวดเร็ว เป็นการยากที่จะคาดเดาล่วงหน้าได้ ในทางกลับกัน บางครั้งแนวคิดก็สามารถนำไปปฏิบัติได้ทันที ไม่กี่ปีที่ผ่านมา ฉันเขียนบทความร่วมกับ Joe Izraelevitz สำหรับ DISC ซึ่งเสนอคำจำกัดความอย่างเป็นทางการใหม่ของความถูกต้องสำหรับโครงสร้างข้อมูลถาวรที่สามารถใช้งานได้หลังจากที่คอมพิวเตอร์ใช้งานล้มเหลว ฉันชอบบทความนี้ตั้งแต่แรกเริ่ม แต่กลับกลายเป็นว่าได้รับความนิยมมากกว่าที่ฉันคาดไว้มาก ถูกใช้โดยกลุ่มต่างๆ มากมาย และในที่สุดก็กลายเป็นคำจำกัดความมาตรฐานของโครงสร้างการคงอยู่ ซึ่งแน่นอนว่าเป็นสิ่งที่ดี
วลาดิเมีย: มีเทคนิคใดบ้างที่คุณใช้ในการประเมิน? คุณยังพยายามประเมินบทความและนักเรียนของคุณหรือไม่? ส่วนคนที่ท่านสอนไปถูกทางหรือไม่
ไมเคิล: เช่นเดียวกับคนอื่นๆ ฉันให้ความสำคัญกับสิ่งที่ฉันทำอยู่ในขณะนี้มากขึ้น เช่นเดียวกับคนอื่นๆ ฉันตรวจสอบ Google Scholar เป็นครั้งคราวเพื่อดูว่ามีการอ้างอิงบทความที่ผ่านมาของฉันหรือไม่ แต่นั่นเป็นเพราะฉันอยากรู้มากกว่า ส่วนใหญ่ฉันหมกมุ่นอยู่กับสิ่งที่นักเรียนของฉันกำลังทำอยู่ตอนนี้ เมื่อพูดถึงการประเมินงานปัจจุบัน ส่วนหนึ่งคือการคำนึงถึงสุนทรียศาสตร์ อะไรที่หรูหรา และอะไรที่ไม่สวยงาม และในระดับประจำวัน คำถามปลายเปิดมีบทบาทสำคัญ ตัวอย่างเช่น นักเรียนคนหนึ่งมาหาฉันพร้อมกราฟของผลลัพธ์บางส่วน และเรากำลังพยายามทำความเข้าใจว่าพฤติกรรมแปลกๆ ของกราฟนั้นมาจากไหน โดยทั่วไปในงานของเราเราพยายามทำความเข้าใจสิ่งที่เรายังไม่เข้าใจอยู่ตลอดเวลา
หน่วยความจำทรานแซคชัน
ทา: บางทีเราสามารถพูดคุยเกี่ยวกับหน่วยความจำทรานแซคชันได้นิดหน่อย?
ไมเคิล: ฉันคิดว่าอย่างน้อยก็ควรพูดสักหน่อยเพราะฉันใช้ความพยายามอย่างมากกับมัน นี่เป็นหัวข้อที่ฉันมีสิ่งพิมพ์มากกว่าหัวข้ออื่น ๆ แต่ในขณะเดียวกัน น่าแปลกที่ฉันก็มักจะสงสัยเกี่ยวกับหน่วยความจำของทรานแซคชันอยู่เสมอ ในความเห็นของฉัน, (M. Herlihy, J. E. B. Moss) ได้รับการตีพิมพ์ล่วงหน้า ในช่วงต้นทศวรรษ 1990 พวกเขาแนะนำว่าหน่วยความจำทรานแซกชันสามารถช่วยให้โปรแกรมเมอร์ที่มีความสามารถทำงานในโครงสร้างข้อมูลแบบมัลติเธรดได้ เพื่อให้โปรแกรมเมอร์ทั่วไปสามารถใช้โครงสร้างเหล่านี้เป็นไลบรารีได้ นั่นคือ มันจะเป็นประโยชน์สำหรับ Doug Lee ในการทำ JSR 166 ของเขา แต่หน่วยความจำทรานแซคชันไม่ได้มีจุดมุ่งหมายเพื่อทำให้การเขียนโปรแกรมแบบมัลติเธรดเป็นเรื่องง่าย แต่นี่คือวิธีที่เริ่มมีการรับรู้ในช่วงต้นทศวรรษ 2000 เมื่อมันแพร่หลาย มันถูกโฆษณาเพื่อเป็นแนวทางในการแก้ปัญหาการเขียนโปรแกรมแบบขนาน แนวทางนี้ดูเหมือนสิ้นหวังสำหรับฉันมาโดยตลอด หน่วยความจำทรานแซคชันสามารถทำให้เขียนโครงสร้างข้อมูลแบบขนานได้ง่ายขึ้นเท่านั้น สำหรับฉันแล้วดูเหมือนว่านี่คือสิ่งที่เธอประสบความสำเร็จ
เกี่ยวกับความยากในการเขียนโค้ดแบบมัลติเธรด
อเล็กซ์: น่าสนใจมาก. ดูเหมือนว่าจะมีอุปสรรคบางอย่างระหว่างโปรแกรมเมอร์ทั่วไปและผู้ที่สามารถเขียนโค้ดแบบมัลติเธรดได้ ปีที่แล้ว ฉันได้พูดคุยหลายครั้งกับผู้คนที่ใช้กรอบอัลกอริทึมบางอย่าง ตัวอย่างเช่น กับ Martin Thomson รวมถึงโปรแกรมเมอร์ที่ทำงานเกี่ยวกับไลบรารีแบบมัลติเธรด (หมายเหตุบรรณาธิการ: Martin Thompson เป็นนักพัฒนาที่มีชื่อเสียงมาก เขาเขียน и - และเขาก็มี ในการประชุม Joker 2015 ของเรา บันทึกวิดีโอ - เขาก็เหมือนกัน การประชุมครั้งนี้ ได้อีกด้วย) พวกเขากล่าวว่าความท้าทายหลักคือการทำให้อัลกอริทึมทั้งรวดเร็วและใช้งานง่าย นั่นคือพวกเขากำลังพยายามเอาชนะอุปสรรคนี้และดึงดูดผู้คนให้เข้ามาในบริเวณนี้ให้ได้มากที่สุด คุณคิดอย่างไรกับมัน?
ไมเคิล: นี่เป็นปัญหาหลักของมัลติเธรด: ทำอย่างไรจึงจะได้ประสิทธิภาพสูงโดยไม่เพิ่มความซับซ้อนของระบบ
อเล็กซ์: เพราะเมื่อพวกเขาพยายามหลีกเลี่ยงความซับซ้อน อัลกอริธึมจะกลายเป็นสากลน้อยลง
ไมเคิล: สิ่งสำคัญในที่นี้คือการออกแบบนามธรรมอย่างเหมาะสม สำหรับฉันแล้วดูเหมือนว่านี่เป็นสิ่งสำคัญสำหรับระบบคอมพิวเตอร์โดยทั่วไป บัตเลอร์ แลมป์สันชอบใช้คำนี้ และเขาเรียกเราว่า "พ่อค้าแห่งนามธรรม" เทคโนโลยีที่เรียบง่ายไม่มีอยู่ในปัจจุบัน โปรเซสเซอร์ที่เราใช้มีทรานซิสเตอร์ถึง 10 หมื่นล้านตัว ความเรียบง่ายไม่ใช่เรื่องยากอีกต่อไป ในเวลาเดียวกัน ISA นั้นง่ายกว่าโปรเซสเซอร์มาก เนื่องจากเราทำงานมาเป็นเวลานานเพื่อมอบประสิทธิภาพสูงและอินเทอร์เฟซที่ค่อนข้างเรียบง่าย แต่ไม่ใช่ทุกอย่างจะราบรื่นสำหรับเธอเช่นกัน ปัญหาเดียวกันนี้เกิดขึ้นกับตัวเร่งความเร็วที่ปรากฏในตลาดตอนนี้ มีคำถามเกิดขึ้น - วิธีสร้างอินเทอร์เฟซที่เหมาะสมสำหรับ GPU, กลไกการเข้ารหัส, การบีบอัด, กลไกการแปลงรหัส, กลไกพีชคณิตเชิงเส้นหรือแม้แต่ FPGA ที่ยืดหยุ่นยิ่งขึ้น จะสร้างอินเทอร์เฟซที่ทำให้เครื่องมือใช้งานง่ายและซ่อนความซับซ้อนได้อย่างไร? มันจะไม่กำจัดมัน แต่เป็นการซ่อนมันจากโปรแกรมเมอร์ธรรมดาๆ
อเล็กซ์: ตามที่ฉันเข้าใจ เรายังคงมีอุปสรรคในการทำความเข้าใจนามธรรม ลองใช้โมเดลหน่วยความจำในขั้นตอนการพัฒนาวิทยาศาสตร์และเทคโนโลยี นี่เป็นหนึ่งในนามธรรมหลัก ด้วยเหตุนี้ โปรแกรมเมอร์ทั้งหมดจึงถูกแบ่งออกเป็นสองกลุ่ม กลุ่มใหญ่คือผู้ที่ไม่เข้าใจ และกลุ่มเล็กคือกลุ่มที่เข้าใจหรือคิดว่าตนเข้าใจ
ไมเคิล: เป็นคำถามที่ดี - พวกเราคนใดเข้าใจโมเดลหน่วยความจำจริงๆ หรือไม่
ทา: โดยเฉพาะในภาษา C++
ไมเคิล: คุยกับ Hans Boehm สักครั้ง เขาเป็นหนึ่งในคนที่ฉลาดที่สุดที่ฉันรู้จัก เป็นผู้เชี่ยวชาญชั้นนำเกี่ยวกับโมเดลหน่วยความจำ เขาจะบอกคุณทันทีว่ามีหลายอย่างที่เขาไม่เข้าใจ แต่ถ้าเรากลับไปสู่ประเด็นของนามธรรมในความคิดของฉันความคิดที่สำคัญที่สุดในด้านแบบจำลองหน่วยความจำในช่วง 30 ปีที่ผ่านมาก็ถูกแสดงออกมา - (หมายเหตุบรรณาธิการ: มีรายการสิ่งพิมพ์ทั้งหมดให้เลือก ).
อเล็กซ์: คำถามของฉันคือ: อุปสรรคนี้มาจากธรรมชาติของแนวคิดหรือไม่?
ไมเคิล: เลขที่. สาริตาได้ข้อสรุปว่าด้วยแนวทางที่ถูกต้อง คุณสามารถซ่อนความซับซ้อนทั้งหมด รับประสิทธิภาพสูง และมอบ API ที่เรียบง่ายให้กับโปรแกรมเมอร์ได้สำเร็จ และหากคุณปฏิบัติตาม API นี้ คุณก็จะได้รับความสอดคล้องที่สม่ำเสมอ ฉันคิดว่านี่เป็นรุ่นที่ถูกต้อง เขียนโค้ดโดยไม่มีการแย่งชิงข้อมูลและรับความสอดคล้องตามลำดับ แน่นอนว่าเพื่อลดโอกาสในการแข่งขันจำเป็นต้องมีเครื่องมือพิเศษ แต่นั่นเป็นอีกเรื่องหนึ่ง
วลาดิเมีย: มีหลายครั้งในอาชีพของคุณที่ปัญหาที่ดูเหมือนจะคลี่คลายกะทันหันกลายเป็นหายนะ หรือกลับกลายเป็นว่าปัญหานี้แก้ไขไม่ได้? ตัวอย่างเช่น ตามทฤษฎี คุณสามารถแยกตัวประกอบจำนวนใดๆ หรือกำหนดได้ว่าจำนวนใดเป็นจำนวนเฉพาะ แต่ในทางปฏิบัติอาจเป็นเรื่องยากที่จะทำ เนื่องจากฮาร์ดแวร์ในปัจจุบันเป็นเรื่องยากที่จะแยกตัวประกอบตัวเลข มีอะไรที่คล้ายกันเกิดขึ้นกับคุณหรือไม่?
ไมเคิล: ฉันจำอะไรแบบนั้นไม่ได้เลยในทันที มีหลายครั้งที่ดูเหมือนว่าไม่มีอะไรเหลือให้ทำในบางพื้นที่ แต่แล้วสิ่งใหม่และน่าสนใจก็เกิดขึ้นที่นั่น ตัวอย่างเช่นฉันคิดว่าพื้นที่การเข้าคิวไม่ จำกัด ได้ครบกำหนดแล้ว หลังจากปรับปรุงคิว MNS หลายครั้ง ก็ไม่มีอะไรเกิดขึ้นอีกต่อไป จากนั้นมอร์ริสัน (อดัม มอร์ริสัน) และอาเฟก (เยฮูดา อาเฟก) ก็ประดิษฐ์ขึ้นมา - เห็นได้ชัดว่าคิวแบบมัลติเธรดไม่จำกัดสามารถทำได้ โดยส่วนใหญ่แล้วจะมีเพียงคำสั่งการดึงข้อมูลและส่วนเพิ่มบนเส้นทางวิกฤติเท่านั้น และสิ่งนี้ทำให้สามารถบรรลุประสิทธิภาพที่ดีขึ้นตามลำดับขนาดได้ ไม่ใช่ว่าเราไม่รู้ว่าการดึงข้อมูลและการเพิ่มขึ้นเป็นสิ่งที่มีประโยชน์มาก Eric Freudenthal เขียนเกี่ยวกับเรื่องนี้ในงานของเขาเกี่ยวกับ Ultracomputer ร่วมกับ Allan Gottlieb ในช่วงปลายทศวรรษ 1980 แต่คิวมีจำกัด Morrison และ Afek สามารถใช้การดึงข้อมูลและการเพิ่มในคิวที่ไม่มีขอบเขตได้
สถาปัตยกรรมใหม่ ชัยชนะของหน่วยความจำทรานแซคชันใกล้เข้ามาแล้วหรือยัง?
วลาดิเมีย: คุณกำลังมองหาโซลูชันสถาปัตยกรรมใหม่ที่อาจเป็นประโยชน์สำหรับอัลกอริทึมหรือไม่?
ไมเคิล: แน่นอนว่ามีหลายสิ่งที่ผมอยากเห็นการนำไปปฏิบัติ
วลาดิเมีย: ประเภทไหน เช่น?
ไมเคิล: ก่อนอื่น ส่วนขยายง่ายๆ สองสามรายการสำหรับหน่วยความจำธุรกรรมระดับฮาร์ดแวร์ของเราในโปรเซสเซอร์ Intel และ IBM โดยเฉพาะอย่างยิ่ง ฉันต้องการให้โหลดและร้านค้าที่ไม่ใช่ธุรกรรมที่เพิ่งเกิดขึ้นพร้อมใช้งานภายในธุรกรรมทันที พวกมันจะนำไปสู่ลูปในลำดับที่เกิดขึ้นก่อน ดังนั้นจึงอาจเป็นเรื่องยาก แต่ถ้าคุณรักษาระดับนามธรรมไว้ มีหลายสิ่งที่น่าสนใจมากที่คุณสามารถทำได้นอกธุรกรรมในขณะที่มันเกิดขึ้น ฉันไม่รู้ว่าการดำเนินการนี้จะยากแค่ไหน แต่จะมีประโยชน์มาก
สิ่งที่มีประโยชน์อีกอย่างคือการโหลดแคชจากหน่วยความจำระยะไกล ฉันคิดว่าไม่ช้าก็เร็วสิ่งนี้จะเสร็จสิ้น เทคโนโลยีนี้จะช่วยให้สามารถสร้างระบบที่มีหน่วยความจำแบบแยกส่วนได้ เป็นไปได้ที่จะเก็บหน่วยความจำแบบไม่ลบเลือนขนาด 100 เทราไบต์ไว้ในแร็ค และระบบปฏิบัติการจะตัดสินใจแบบไดนามิกว่าส่วนใดของหน่วยความจำนั้นควรสอดคล้องกับพื้นที่ที่อยู่ทางกายภาพของโปรเซสเซอร์ สิ่งนี้จะมีประโยชน์อย่างยิ่งสำหรับการประมวลผลแบบคลาวด์ เนื่องจากจะทำให้สามารถจัดเตรียมหน่วยความจำจำนวนมากให้กับงานที่ต้องการได้ ฉันคิดว่าคงมีคนทำ
ทา: เพื่อจบการพูดคุยเกี่ยวกับหน่วยความจำทรานแซคชัน ฉันมีคำถามอีกหนึ่งข้อในหัวข้อนี้ ในที่สุดหน่วยความจำทรานแซคชันจะเข้ามาแทนที่โครงสร้างข้อมูลแบบมัลติเธรดมาตรฐานหรือไม่
ไมเคิล: เลขที่. ธุรกรรมเป็นกลไกการเก็งกำไร ในระดับการเขียนโปรแกรมสิ่งเหล่านี้คือล็อคแบบอะตอมมิก แต่ภายในเป็นการคาดเดา การพยากรณ์ดังกล่าวจะใช้ได้ผลหากการคาดเดาส่วนใหญ่ถูกต้อง ดังนั้น หน่วยความจำทรานแซคชันจึงทำงานได้ดีเมื่อเธรดแทบจะไม่โต้ตอบกัน และคุณเพียงแค่ต้องแน่ใจว่าไม่มีการโต้ตอบกัน แต่หากข้อความเริ่มต้นระหว่างเธรด ธุรกรรมก็มีประโยชน์เพียงเล็กน้อย ให้ฉันอธิบาย เรากำลังพูดถึงกรณีที่ธุรกรรมถูกพันรอบการดำเนินการอะตอมมิกทั้งหมด ยังคงสามารถใช้เป็นส่วนประกอบสำหรับโครงสร้างข้อมูลแบบมัลติเธรดได้สำเร็จ ตัวอย่างเช่น หากคุณต้องการ CAS สามคำ และคุณต้องมัลติเธรดสามสิ่งเล็กๆ น้อยๆ ในช่วงกลางของอัลกอริธึมแบบมัลติเธรดอย่างแท้จริง ซึ่งทำงานกับยี่สิบเธรดในเวลาเดียวกัน โดยทั่วไป ธุรกรรมอาจมีประโยชน์ แต่จะไม่ขจัดความจำเป็นในการออกแบบโครงสร้างข้อมูลแบบมัลติเธรดอย่างเหมาะสม
หน่วยความจำแบบไม่ลบเลือน, Optane DIMM, อุปกรณ์ที่รวดเร็วเป็นพิเศษ
ทา: สิ่งสุดท้ายที่ฉันอยากจะพูดถึงคือหัวข้อการวิจัยปัจจุบันของคุณ: หน่วยความจำที่ไม่ลบเลือน เราคาดหวังอะไรได้บ้างในพื้นที่นี้ในอนาคตอันใกล้นี้? บางทีคุณอาจทราบถึงการใช้งานที่มีประสิทธิภาพที่มีอยู่แล้ว?
ไมเคิล: ฉันไม่ใช่ผู้เชี่ยวชาญด้านฮาร์ดแวร์ ฉันรู้แค่สิ่งที่ฉันอ่านในข่าวและสิ่งที่เพื่อนร่วมงานบอกฉันเท่านั้น ทุกคนคงเคยได้ยินมาว่า Intel ขายของ ซึ่งมีเวลาแฝงในการอ่านประมาณ 3 เท่า และมีเวลาแฝงในการเขียนประมาณ 10 เท่า มากกว่า RAM แบบไดนามิก เร็วๆ นี้จะมีให้บริการในเวอร์ชันที่มีปริมาณมาก เป็นเรื่องตลกที่คิดว่าคุณสามารถมีแล็ปท็อปที่มี RAM ที่สามารถระบุตำแหน่งไบต์ได้หลายเทราไบต์ มีแนวโน้มว่าในอีก 10 ปีข้างหน้าเราจะตัดสินใจใช้เทคโนโลยีใหม่นี้ เนื่องจากเราใช้ DRAM - เพียงเพิ่มระดับเสียง แต่ด้วยความเป็นอิสระด้านพลังงาน โอกาสใหม่ๆ ที่เปิดกว้างให้กับเรา โดยพื้นฐานแล้วเราสามารถเปลี่ยนสแตกการจัดเก็บข้อมูลได้ เพื่อไม่ให้มีการแยกระหว่างหน่วยความจำการทำงานแบบระบุตำแหน่งไบต์ได้และหน่วยความจำถาวรที่มีโครงสร้างแบบบล็อก ดังนั้นเราไม่จำเป็นต้องซีเรียลไลซ์ทุกสิ่งที่จำเป็นต้องถ่ายโอนจากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่งเป็นไฟล์ที่มีโครงสร้างแบบบล็อก จากนี้เราสามารถได้รับหลักการสำคัญหลายประการที่ส่งผลต่อระบบปฏิบัติการ สภาพแวดล้อมรันไทม์ และการจัดเก็บข้อมูลแบบกระจาย พื้นที่นี้น่าสนใจมากในการทำงาน โดยส่วนตัวแล้ว มันยากสำหรับฉันที่จะคาดเดาว่าทั้งหมดนี้นำไปสู่อะไร แต่ปัญหาที่นี่ให้ความบันเทิงอย่างยิ่ง อาจมีการเปลี่ยนแปลงแบบปฏิวัติที่นี่ และการเปลี่ยนแปลงจะเป็นไปตามธรรมชาติมากจากการทำงานแบบมัลติเธรด เนื่องจากการกู้คืนความล้มเหลวเป็นกระบวนการ "มัลติเธรด" ที่อยู่ถัดจากการทำงานปกติของระบบ
หัวข้อหลักที่สองที่ฉันกำลังทำอยู่คือการจัดการอุปกรณ์ที่รวดเร็วเป็นพิเศษและการเข้าถึงอุปกรณ์อย่างปลอดภัยจากพื้นที่ผู้ใช้ด้วยการควบคุมนโยบายที่เป็นระบบ ในช่วงไม่กี่ปีที่ผ่านมา มีแนวโน้มว่าจะย้ายการเข้าถึงอุปกรณ์ไปยังพื้นที่ผู้ใช้ สิ่งนี้เกิดขึ้นเนื่องจากเคอร์เนล TCP-IP ไม่สามารถทำงานได้บนอินเทอร์เฟซเครือข่ายที่ต้องการแพ็กเก็ตใหม่ทุกๆ 5 ไมโครวินาที แต่จะไม่สามารถตามทันได้ ดังนั้นผู้ผลิตจึงให้การเข้าถึงอุปกรณ์ได้โดยตรง แต่นั่นหมายความว่าระบบปฏิบัติการสูญเสียการควบคุมกระบวนการและไม่สามารถให้การเข้าถึงอุปกรณ์ที่เหมาะสมสำหรับแอปพลิเคชันที่แข่งขันกัน ทีมวิจัยของเราเชื่อว่าข้อบกพร่องนี้สามารถหลีกเลี่ยงได้ เราจะมีบทความเกี่ยวกับเรื่องนี้ที่ USENIX ATC ในเดือนนี้ มันเกี่ยวข้องกับการทำงานอย่างต่อเนื่อง เนื่องจากหน่วยความจำถาวรที่สามารถกำหนดแอดเดรสแบบไบต์ได้ซึ่งมีอายุการใช้งานยาวนาน โดยพื้นฐานแล้วคืออุปกรณ์ที่มี I/O ที่รวดเร็วเป็นพิเศษซึ่งจำเป็นต้องเข้าถึงในพื้นที่ผู้ใช้ การวิจัยนี้ทำให้เกิดแนวทางใหม่ๆ ที่เป็นไปได้สำหรับไมโครเคอร์เนล เอ็กโซเคอร์เนล และความพยายามแบบดั้งเดิมอื่นๆ ในการย้ายฟังก์ชันการทำงานจากเคอร์เนลระบบปฏิบัติการไปยังพื้นที่ผู้ใช้อย่างปลอดภัย
วลาดิเมีย: หน่วยความจำแบบไบต์แอดเดรสนั้นดี แต่ก็มีข้อจำกัดทางกายภาพ นั่นคือความเร็วแสง ซึ่งหมายความว่าจะต้องมีความล่าช้าอย่างหลีกเลี่ยงไม่ได้เมื่อโต้ตอบกับอุปกรณ์
ไมเคิล: ถูกต้องที่สุด.
วลาดิเมีย: จะมีกำลังการผลิตเพียงพอที่จะรองรับโหลดใหม่หรือไม่?
ไมเคิล: นี่เป็นคำถามที่ยอดเยี่ยม แต่ฉันจะตอบได้ยาก แนวคิดในการประมวลผลในหน่วยความจำมีมาระยะหนึ่งแล้ว มันน่าสนใจมาก แต่ก็ซับซ้อนมากเช่นกัน ฉันไม่ได้ทำงานในพื้นที่นี้ แต่จะดีมากหากมีการค้นพบที่นั่น ฉันเกรงว่าฉันจะไม่มีอะไรเพิ่มเติมที่จะเพิ่ม
วลาดิเมีย: มีอีกปัญหาหนึ่ง RAM ใหม่ที่มีขนาดใหญ่กว่าอย่างเห็นได้ชัดจะไม่สามารถใส่ลงใน CPU ได้ ดังนั้น เนื่องจากข้อจำกัดทางกายภาพ RAM นี้จึงต้องถูกแยกออก
ไมเคิล: ทุกอย่างขึ้นอยู่กับจำนวนข้อบกพร่องในการผลิตวงจรรวม หากเป็นไปได้ที่จะสร้างเวเฟอร์เซมิคอนดักเตอร์ทั้งหมดโดยไม่มีข้อบกพร่อง ก็จะสามารถสร้างวงจรไมโครทั้งหมดออกมาได้ แต่ตอนนี้เราไม่รู้วิธีทำให้ไมโครวงจรมีขนาดใหญ่กว่าแสตมป์
วลาดิเมีย: แต่เรายังคงพูดถึงขนาดใหญ่ประมาณเซนติเมตร สิ่งนี้มีผลกระทบต่อเวลาแฝงอย่างหลีกเลี่ยงไม่ได้
ไมเคิล: ใช่. คุณไม่สามารถทำอะไรกับความเร็วแสงได้
วลาดิเมีย: น่าเสียดาย.
เทรนด์ใหญ่ต่อไป โครงสร้างข้อมูลแบบคู่ ไฮดรา
ทา: เท่าที่ฉันเข้าใจคุณจับเทรนด์ใหม่ได้เร็วมาก คุณเป็นหนึ่งในคนกลุ่มแรกๆ ที่ทำงานในหน่วยความจำทรานแซคชัน และเป็นคนแรกๆ ที่ทำงานในหน่วยความจำแบบไม่ลบเลือน คุณคิดว่าอะไรจะเป็นเทรนด์ใหญ่ต่อไป? หรือบางทีมันอาจเป็นความลับ?
ไมเคิล: พูดตามตรงฉันไม่รู้ หวังว่าฉันจะสังเกตเห็นได้เมื่อมีสิ่งใหม่ๆ เกิดขึ้น ฉันไม่ได้โชคดีพอที่จะคิดค้นสาขาใหม่ด้วยตัวเอง แต่ฉันมีโชคอยู่บ้างและสามารถเริ่มทำงานได้ค่อนข้างเร็วในสาขาใหม่ที่สร้างโดยผู้อื่น ฉันหวังว่าฉันจะสามารถทำเช่นนี้ได้ในอนาคต
อเล็กซ์: คำถามสุดท้ายในการสัมภาษณ์นี้จะเกี่ยวกับการแสดงของคุณที่ Hydra และกิจกรรมของคุณที่โรงเรียน ถ้าฉันเข้าใจถูกต้อง รายงานที่โรงเรียนจะเกี่ยวกับอัลกอริธึมที่ไม่มีการบล็อก และในการประชุมเกี่ยวกับโครงสร้างข้อมูลสองเท่า คุณช่วยพูดสักสองสามคำเกี่ยวกับรายงานเหล่านี้ได้ไหม
ไมเคิล: ส่วนหนึ่งเราได้พูดคุยถึงหัวข้อเหล่านี้กับคุณแล้วในการสัมภาษณ์ครั้งนี้ เป็นเรื่องเกี่ยวกับงานที่ฉันทำกับนักเรียนบิล เชอร์เรอร์ เขาเขียนวิทยานิพนธ์เกี่ยวกับเรื่องนี้ และ Doug Lee ก็มีส่วนสนับสนุน และในที่สุดมันก็กลายเป็นส่วนหนึ่งของคิวซิงโครนัสแบบมัลติเธรดในไลบรารี Java สมมติว่าโครงสร้างข้อมูลถูกอ่านและเขียนโดยไม่มีการปิดกั้น กล่าวคือ แต่ละการดำเนินการมีจำนวนคำสั่งที่จำกัดบนเส้นทางวิกฤต หากคุณพยายามลบข้อมูลออกจากคอนเทนเนอร์เปล่า หรือพยายามลบข้อมูลบางอย่างที่ไม่ได้อยู่ในคอนเทนเนอร์นี้ คุณจะได้รับแจ้งทันทีว่าไม่สามารถทำได้ แต่พฤติกรรมนี้อาจไม่เป็นที่ยอมรับหากเธรดต้องการข้อมูลนี้จริงๆ สิ่งแรกที่นึกถึงคือการสร้างลูปที่จะถามอย่างต่อเนื่องว่ามีข้อมูลที่จำเป็นปรากฏขึ้นหรือไม่ แต่แล้วก็มีการแทรกแซงสำหรับคนอื่นๆ นอกจากนี้ ด้วยวิธีนี้ คุณสามารถรอได้ 10 นาที จากนั้นเธรดอื่นๆ จะมา และจะได้รับข้อมูลที่จำเป็นก่อนโดยไม่ตั้งใจ โครงสร้างข้อมูลคู่ยังคงไม่มีการล็อค แต่อนุญาตให้เธรดรอได้อย่างถูกต้อง คำว่า "สองเท่า" หมายความว่าโครงสร้างประกอบด้วยข้อมูลหรือการร้องขอข้อมูล เรียกว่า anti-data ดังนั้นหากคุณพยายามดึงบางสิ่งจากคอนเทนเนอร์เปล่า คำขอจะถูกใส่ลงในคอนเทนเนอร์แทน ตอนนี้เธรดสามารถรอคำขอได้โดยไม่รบกวนผู้อื่น นอกจากนี้ โครงสร้างข้อมูลยังกำหนดลำดับความสำคัญให้กับคำขอ เพื่อว่าเมื่อได้รับแล้ว ก็จะส่งต่อไปยังบุคคลที่เหมาะสม ผลลัพธ์ที่ได้คือกลไกไม่ล็อคซึ่งยังคงมีข้อกำหนดอย่างเป็นทางการและประสิทธิภาพที่ดีในทางปฏิบัติ
อเล็กซ์: คุณคาดหวังอะไรจากโครงสร้างข้อมูลนี้? มันจะปรับปรุงประสิทธิภาพในกรณีทั่วไปทั้งหมดหรือจะเหมาะสมกว่าสำหรับบางสถานการณ์?
ไมเคิล: จะมีประโยชน์หาก ประการแรก คุณต้องการคอนเทนเนอร์ที่ไม่มีการล็อก และประการที่สอง คุณต้องรอในสถานการณ์ที่คุณต้องดึงข้อมูลจากคอนเทนเนอร์ที่ไม่ได้อยู่ในนั้น เท่าที่ฉันทราบ กรอบงานของเราจะให้พฤติกรรมที่เหมาะสมที่สุดเมื่อตรงตามเงื่อนไขทั้งสองนี้ ดังนั้นในกรณีเหล่านี้ฉันขอแนะนำให้ใช้มัน ข้อได้เปรียบหลักของโครงสร้างข้อมูลที่ไม่มีการล็อคคือหลีกเลี่ยงปัญหาด้านประสิทธิภาพ และการรอคอยถือเป็นสิ่งสำคัญมากในหลายอัลกอริทึม หากข้อมูลถูกถ่ายโอนจากเธรดหนึ่งไปยังอีกเธรดหนึ่ง
ทา: ขอชี้แจง: คุณจะพูดเรื่องเดียวกันทั้งที่โรงเรียนและที่ประชุมหรือไม่?
ไมเคิล: ที่โรงเรียน โดยทั่วไปเกี่ยวกับโครงสร้างข้อมูลแบบมัลติเธรด โดยมีหลักการพื้นฐานระบุไว้ตอนต้นบทเรียน ฉันคิดว่าผู้ฟังรู้ว่าเธรดคืออะไรและคุ้นเคยกับการล็อค จากความรู้พื้นฐานนี้ ฉันจะพูดถึงโครงสร้างข้อมูลที่ไม่มีการล็อค ฉันจะให้ภาพรวมของปัญหาที่สำคัญที่สุดในพื้นที่นี้ โดยจะกล่าวถึงหัวข้อต่างๆ เช่น การจัดการหน่วยความจำ ฉันไม่คิดว่าจะมีอะไรซับซ้อนไปกว่าคิว MS
อเล็กซ์: คุณวางแผนที่จะสอนเกี่ยวกับโครงสร้างข้อมูลแบบคู่ในช่วงท้ายชั้นเรียนในโรงเรียนหรือไม่?
ไมเคิล: ฉันจะพูดถึงพวกเขา แต่ฉันจะไม่ใช้เวลากับพวกเขามากนัก รายงานของไฮดราจะอุทิศให้กับพวกเขาโดยเฉพาะ โดยจะครอบคลุมถึงโปรเจ็กต์ที่ในที่สุดก็ทำให้กลายเป็น Java รวมถึงการทำงานร่วมกับ Joe Israelevich เพื่อสร้างคิว LCRQ แบบคู่ และการสร้างการออกแบบที่เกือบจะเป็นสากลสำหรับโครงสร้างข้อมูลคู่
อเล็กซ์: ดังนั้นจึงสามารถแนะนำการบรรยายที่โรงเรียนสำหรับผู้เริ่มต้น และการบรรยายเกี่ยวกับโครงสร้างข้อมูลคู่บน Hydra - สำหรับผู้ที่มีประสบการณ์อยู่แล้ว?
ไมเคิล: แก้ไขฉันด้วยถ้าฉันผิด แต่ผู้ชมที่ Hydra จะค่อนข้างหลากหลาย รวมถึงผู้เชี่ยวชาญ Java หลายคน และโดยทั่วไปแล้ว บุคคลทั่วไปที่ไม่เกี่ยวข้องกับการเขียนโปรแกรมแบบมัลติเธรดเป็นพิเศษ
ทา: ใช่มันเป็นเรื่องจริง
อเล็กซ์: อย่างน้อยเราก็หวังเช่นนั้น
ไมเคิล: ในกรณีนี้ ผมจะต้องเผชิญกับปัญหาเดียวกับที่เราเริ่มสัมภาษณ์: จัดทำรายงานอย่างไรให้มีทั้งรายละเอียดทางเทคนิคที่เพียงพอและผู้ฟังทุกคนสามารถเข้าถึงได้
ทา: คุณจะรายงานเหมือนตอนบรรยายไหม? คือพูดคุยกับผู้ฟังและปรับตัวเข้ากับสถานการณ์?
ไมเคิล: เกรงว่าจะไม่เป็นเช่นนั้นเพราะรายงานจะมีสไลด์ สไลด์มีความสำคัญเมื่อผู้ฟังพูดภาษาที่แตกต่างกันในตอนแรก หลายๆ คนจะพบว่าเป็นเรื่องยากที่จะเข้าใจฉันเป็นภาษาอังกฤษ โดยเฉพาะอย่างยิ่งถ้าฉันพูดเร็วเกินไป ฉันเลือกหัวข้อเหล่านี้เพราะว่า ขอให้ฉันพูดคุยเกี่ยวกับโครงสร้างข้อมูลที่ไม่มีการล็อคที่โรงเรียน SPTDC จากนั้นฉันต้องการรายงานสำหรับการประชุมกลุ่มผู้ใช้ Java และฉันต้องการเลือกสิ่งที่สนใจโดยเฉพาะสำหรับโปรแกรมเมอร์ Java วิธีที่ง่ายที่สุดคือการพูดคุยเกี่ยวกับสิ่งเหล่านั้นในไลบรารี Java ที่ฉันมีส่วนช่วยไม่ทางใดก็ทางหนึ่ง
อเล็กซ์: เราถือว่าผู้ชมใน Hydra รู้อะไรบางอย่างเกี่ยวกับการเขียนโปรแกรมแบบไม่มีล็อคอยู่แล้ว และอาจมีประสบการณ์ในด้านนี้บ้าง แต่นี่เป็นเพียงสมมติฐานเท่านั้น สถานการณ์จะชัดเจนยิ่งขึ้นในการประชุม อย่างไรก็ตามขอขอบคุณที่สละเวลา ฉันแน่ใจว่าบทสัมภาษณ์จะน่าสนใจมากสำหรับผู้อ่านของเรา ขอบคุณมาก!
ทา: ขอบคุณ.
ไมเคิล: ฉันยินดีที่จะพบคุณที่เซนต์ปีเตอร์สเบิร์ก
อเล็กซ์: เราก็เหมือนกันเรามีเมืองที่สวยงาม คุณเคยอยู่ที่นี่?
ไมเคิล: ไม่ ฉันไม่เคยไปรัสเซียเลย แต่เซนต์ปีเตอร์สเบิร์กอยู่ในรายชื่อสถานที่ที่ฉันยังไม่เคยไปมาโดยตลอด แต่เป็นที่ที่ฉันอยากไปจริงๆ ดังนั้นฉันจึงดีใจมากกับคำเชิญนี้
อเล็กซ์: โดยทางเราจะมีโปรแกรมทัศนศึกษาสำหรับวิทยากร ขอบคุณมากสำหรับการสัมภาษณ์ และขอให้มีวันที่ดี!
คุณสามารถสนทนากับ Michael ต่อได้ในการประชุม Hydra 2019 ซึ่งจะจัดขึ้นในวันที่ 11-12 กรกฎาคม 2019 ที่เมืองเซนต์ปีเตอร์สเบิร์ก เขาจะมาพร้อมรายงาน . สามารถซื้อตั๋วได้ .
ที่มา: will.com
