ก่อนหน้านี้ มอริซได้มารัสเซียเพื่อเข้าร่วม SPTCC แล้ว (
ฮาบราโพสต์นี้เป็นบทสัมภาษณ์ที่ยอดเยี่ยมของมอริซ เฮอร์ลิฮี จะกล่าวถึงหัวข้อต่อไปนี้:
- ปฏิสัมพันธ์ระหว่างนักวิชาการกับอุตสาหกรรม
- มูลนิธิเพื่อการวิจัยบล็อคเชน
- แนวคิดที่ก้าวหน้ามาจากไหน? อิทธิพลของความนิยม
- ปริญญาเอกภายใต้การดูแลของ Barbara Liskov;
- โลกกำลังรอคอยมัลติคอร์
- โลกใหม่นำมาซึ่งปัญหาใหม่ NVM, NUMA และการแฮ็กสถาปัตยกรรม
- คอมไพเลอร์เทียบกับโปรเซสเซอร์ RISC เทียบกับ CISC หน่วยความจำที่ใช้ร่วมกันเทียบกับการส่งข้อความ
- ศิลปะแห่งการเขียนโค้ดแบบมัลติเธรดที่เปราะบาง
- วิธีสอนให้นักเรียนเขียนโค้ดแบบมัลติเธรดที่ซับซ้อน
- หนังสือฉบับใหม่ “The Art of Multiprocessor Programming”;
- หน่วยความจำแบบทรานแซคชันถูกประดิษฐ์ขึ้นอย่างไร
- เหตุใดจึงคุ้มค่าที่จะทำการวิจัยในสาขาคอมพิวเตอร์แบบกระจาย
- การพัฒนาอัลกอริธึมหยุดลงหรือไม่ และจะดำเนินต่อไปอย่างไร
- ทำงานที่มหาวิทยาลัยบราวน์
- ความแตกต่างระหว่างการวิจัยในมหาวิทยาลัยและภายในองค์กร
- ไฮดรา และ SPTDC
การสัมภาษณ์ดำเนินการโดย:
วิตาลี อัคเซนอฟ — ปัจจุบันเป็นนักศึกษาหลังปริญญาเอกที่ 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 อย่างเป็นทางการ
ปฏิสัมพันธ์ระหว่างนักวิชาการและอุตสาหกรรม
Alexey: มอริซ คุณทำงานในสภาพแวดล้อมทางวิชาการมาเป็นเวลานานแล้ว และคำถามแรกก็คือปฏิสัมพันธ์ระหว่างแวดวงวิชาการและอุตสาหกรรม คุณช่วยพูดถึงปฏิสัมพันธ์ระหว่างพวกเขาที่เปลี่ยนแปลงไปเมื่อเร็ว ๆ นี้ได้ไหม? เกิดอะไรขึ้นเมื่อ 20-30 ปีที่แล้ว และตอนนี้กำลังเกิดอะไรขึ้น?
มอริซ: ฉันพยายามทำงานอย่างใกล้ชิดกับบริษัทการค้ามาโดยตลอด เพราะพวกเขามีปัญหาที่น่าสนใจ ตามกฎแล้วพวกเขาไม่สนใจมากนักในการเผยแพร่ผลลัพธ์หรือคำอธิบายโดยละเอียดเกี่ยวกับปัญหาของตนต่อประชาคมโลก พวกเขาสนใจเพียงการแก้ปัญหาเหล่านี้เท่านั้น ฉันทำงานให้กับบริษัทดังกล่าวมาระยะหนึ่งแล้ว ฉันใช้เวลาห้าปีทำงานเต็มเวลาในห้องปฏิบัติการวิจัยที่ Digital Equipment Corporation ซึ่งเคยเป็นบริษัทคอมพิวเตอร์ขนาดใหญ่ ฉันทำงานหนึ่งวันต่อสัปดาห์ที่ Sun ที่ Microsoft ที่ Oracle และทำงานเล็กๆ น้อยๆ ที่ Facebook ตอนนี้ฉันกำลังจะลาพักร้อน (ศาสตราจารย์ในมหาวิทยาลัยในอเมริกาได้รับอนุญาตให้ลาพักร้อนเป็นเวลาหนึ่งปีประมาณหนึ่งครั้งทุกๆ หกปี) และทำงานใน
Alexey: คุณช่วยบอกรายละเอียดเพิ่มเติมหน่อยได้ไหมว่าสิ่งนี้เกิดขึ้นได้อย่างไร?
มอริซ: แน่นอน คุณรู้ไหมว่า ตอนที่ฉันทำงานที่ Digital Equipment Corporation ฉันและ Elliot Moss เราคิดค้นหน่วยความจำเชิงธุรกรรมขึ้นมา เป็นช่วงเวลาที่มีผลอย่างมากเมื่อทุกคนเริ่มสนใจเทคโนโลยีสารสนเทศ ความเท่าเทียมรวมถึงแม้ว่าระบบมัลติคอร์ยังไม่มีอยู่ก็ตาม ในช่วงยุค Sun และ Oracle ฉันทำงานอย่างหนักกับโครงสร้างข้อมูลแบบขนาน ที่ Facebook ฉันทำงานในโครงการบล็อคเชนของพวกเขา ซึ่งฉันไม่สามารถพูดถึงได้ แต่ฉันหวังว่าจะเผยแพร่สู่สาธารณะเร็วๆ นี้ ปีหน้าที่ Algorand ฉันจะทำงานในกลุ่มวิจัยที่กำลังศึกษาสัญญาอัจฉริยะ
Alexey: Blockchain กลายเป็นหัวข้อยอดนิยมในช่วงไม่กี่ปีที่ผ่านมา สิ่งนี้จะช่วยการวิจัยของคุณหรือไม่? บางทีมันอาจช่วยให้ได้รับทุนสนับสนุนหรือให้การเข้าถึงทรัพยากรจากบริษัทที่ดำเนินงานในอุตสาหกรรมได้ง่ายขึ้น
มอริซ: ฉันได้รับทุนเล็กน้อยจากมูลนิธิ Ethereum แล้ว ความนิยมของบล็อกเชนมีประโยชน์มากในการสร้างแรงบันดาลใจให้นักเรียนทำงานในสาขานี้ พวกเขาสนใจเรื่องนี้มากและรู้สึกตื่นเต้นที่จะได้มีส่วนร่วม แต่บางครั้งพวกเขาก็ไม่รู้ว่างานวิจัยภายนอกที่ฟังดูน่าตื่นเต้นกลับกลายเป็นว่าต้องทำงานหนักจริงๆ อย่างไรก็ตาม ฉันตื่นเต้นมากที่ได้ใช้ความลึกลับทั้งหมดนี้เกี่ยวกับบล็อกเชนเพื่อช่วยดึงดูดนักเรียน
แต่นั่นไม่ใช่ทั้งหมด ฉันอยู่ในคณะกรรมการที่ปรึกษาของบริษัทสตาร์ทอัพบล็อคเชนหลายแห่ง บางคนอาจประสบความสำเร็จ บางคนอาจไม่สำเร็จ แต่การได้เห็นแนวคิด ศึกษา และให้คำแนะนำผู้คนเป็นเรื่องที่น่าสนใจเสมอ สิ่งที่น่าตื่นเต้นที่สุดคือเมื่อคุณเตือนคนอื่นว่าอย่าทำอะไรบางอย่าง หลายๆ อย่างดูเหมือนเป็นความคิดที่ดีในตอนแรก แต่จริงหรือ?
มูลนิธิเพื่อการวิจัยบล็อคเชน
Vitaly: บางคนคิดว่าอนาคตขึ้นอยู่กับบล็อกเชนและอัลกอริธึมของมัน และคนอื่นบอกว่ามันเป็นเพียงฟองสบู่อีกฟองหนึ่ง คุณสามารถแบ่งปันความคิดเห็นของคุณเกี่ยวกับเรื่องนี้ได้หรือไม่?
มอริซ: สิ่งที่เกิดขึ้นมากมายในโลกบล็อกเชนนั้นผิด บางอย่างเป็นเพียงการหลอกลวง และหลายอย่างถูกประเมินเกินจริง อย่างไรก็ตาม ฉันคิดว่ามีพื้นฐานทางวิทยาศาสตร์ที่มั่นคงสำหรับการศึกษาเหล่านี้ ความจริงที่ว่าโลกบล็อคเชนนั้นเต็มไปด้วยความแตกต่างทางอุดมการณ์ แสดงให้เห็นถึงระดับของความตื่นเต้นและความทุ่มเท ในทางกลับกัน สิ่งนี้ไม่เป็นประโยชน์อย่างยิ่งต่อการวิจัยทางวิทยาศาสตร์ ตอนนี้ หากคุณตีพิมพ์บทความที่พูดถึงข้อบกพร่องของอัลกอริธึมเฉพาะ ปฏิกิริยาที่เกิดขึ้นอาจไม่ได้เป็นไปตามหลักวิทยาศาสตร์เสมอไป บ่อยครั้งผู้คนโยนอารมณ์ของตนออกไป ฉันคิดว่าความตื่นเต้นในพื้นที่นี้อาจดูน่าดึงดูดสำหรับบางคน แต่ท้ายที่สุดแล้ว ยังมีประเด็นทางวิทยาศาสตร์และวิศวกรรมที่แท้จริงที่ต้องได้รับการแก้ไข วิทยาการคอมพิวเตอร์ที่นี่มีเยอะมาก
Vitaly: คุณกำลังพยายามวางรากฐานสำหรับการวิจัยบล็อคเชนใช่ไหม?
มอริซ: ฉันกำลังพยายามวางรากฐานสำหรับวินัยที่มั่นคง ทั้งทางวิทยาศาสตร์และคณิตศาสตร์ และส่วนหนึ่งของปัญหาก็คือบางครั้งคุณต้องขัดแย้งกับจุดยืนที่รุนแรงเกินไปของคนอื่นและเพิกเฉยต่อจุดยืนเหล่านั้น บางครั้งมีคนถามว่าทำไมฉันถึงทำงานในพื้นที่ที่มีแต่ผู้ก่อการร้ายและผู้ค้ายาเสพติดเท่านั้นที่สนใจ ปฏิกิริยาดังกล่าวไม่มีความหมายพอๆ กับพฤติกรรมของผู้ติดตามที่พูดซ้ำคำพูดของคุณโดยไม่รู้ตัว ฉันคิดว่าความจริงอยู่ตรงกลาง บล็อกเชนจะมีผลกระทบอย่างมากต่อสังคมและเศรษฐกิจโลก แต่สิ่งนี้อาจจะไม่เกิดขึ้นได้ด้วยเทคโนโลยีสมัยใหม่ เทคโนโลยีสมัยใหม่จะพัฒนาขึ้นและสิ่งที่เรียกว่าบล็อกเชนในอนาคตจะมีความสำคัญมาก มันอาจจะดูไม่เหมือนบล็อกเชนสมัยใหม่ด้วยซ้ำ นั่นเป็นคำถามเปิด
หากผู้คนคิดค้นเทคโนโลยีใหม่ ๆ พวกเขาก็จะเรียกมันว่าบล็อกเชนต่อไป ฉันหมายถึง เช่นเดียวกับภาษา Fortran ในปัจจุบันที่ไม่เกี่ยวข้องกับภาษา Fortran จากทศวรรษ 1960 แต่ทุกคนกลับเรียกมันว่า Fortran เช่นเดียวกับ UNIX สิ่งที่เรียกว่า “บล็อกเชน” จะยังคงทำให้เกิดการปฏิวัติ แต่ฉันสงสัยว่าบล็อคเชนใหม่นี้จะเหมือนกับสิ่งที่ทุกคนชอบใช้ในปัจจุบัน
แนวคิดที่ก้าวหน้ามาจากไหน? ผลกระทบของความนิยม
Alexey: ความนิยมของ blockchain นำไปสู่ผลลัพธ์ใหม่จากมุมมองทางวิทยาศาสตร์หรือไม่? มีปฏิสัมพันธ์มากขึ้น มีนักเรียนมากขึ้น มีบริษัทมากขึ้นในพื้นที่นี้ มีผลจากความนิยมที่เพิ่มขึ้นนี้แล้วหรือยัง?
มอริซ: ฉันเริ่มสนใจเรื่องนี้เมื่อมีคนยื่นใบปลิวอย่างเป็นทางการของบริษัทหนึ่งซึ่งเพิ่งระดมทุนได้ค่อนข้างมากให้ฉัน มันเขียนเกี่ยวกับ
Alexey: นี่เป็นเรื่องที่น่าสนใจมาก เพราะไม่กี่ปีที่ผ่านมาเรามีแนวโน้มที่แตกต่างออกไป มันเหมือนกับการพัฒนาส่วนหน้า เมื่อนักพัฒนาส่วนหน้าที่ใช้เบราว์เซอร์คิดค้นเทคโนโลยีทั้งหมดที่ได้รับความนิยมอยู่แล้วในส่วนหลัง: สร้างระบบ การบูรณาการอย่างต่อเนื่อง สิ่งต่างๆ เช่นนั้น
มอริซ: ฉันเห็นด้วย แต่นี่ก็ไม่น่าแปลกใจ เพราะแนวคิดที่ก้าวหน้าอย่างแท้จริงมักจะมาจากภายนอกชุมชนที่จัดตั้งขึ้น นักวิจัยที่มีชื่อเสียง โดยเฉพาะนักวิชาการที่มีชื่อเสียง ไม่น่าจะทำอะไรที่แหวกแนวได้อย่างแท้จริง เป็นเรื่องง่ายที่จะเขียนบทความสำหรับการประชุมครั้งต่อไปเกี่ยวกับวิธีปรับปรุงผลงานที่ผ่านมาของคุณเล็กน้อย ไปประชุม พบปะกับเพื่อนฝูง พูดคุยเรื่องเดียวกัน และคนที่แสดงไอเดียที่ก้าวล้ำเข้ามามักจะมาจากภายนอกเสมอ พวกเขาไม่รู้กฎเกณฑ์ ไม่รู้ภาษา แต่ถึงกระนั้น... หากคุณอยู่ในชุมชนที่จัดตั้งขึ้น ฉันแนะนำให้คุณใส่ใจกับสิ่งใหม่ๆ ในสิ่งที่ไม่เข้ากับภาพรวม ในแง่หนึ่ง เราสามารถพยายามที่จะรวมการพัฒนาภายนอกที่ลื่นไหลมากขึ้นเข้ากับวิธีการที่เราเข้าใจอยู่แล้ว ในขั้นแรก ให้พยายามสร้างพื้นฐานทางวิทยาศาสตร์ จากนั้นจึงเปลี่ยนแปลงเพื่อให้สามารถนำไปใช้กับแนวคิดที่ก้าวล้ำใหม่ๆ ได้ ฉันคิดว่าบล็อกเชนนั้นยอดเยี่ยมสำหรับการเป็นแนวคิดที่สดใหม่และก่อกวน
Alexey: ทำไมคุณถึงคิดว่าสิ่งนี้เกิดขึ้น? เพราะคน “ภายนอก” ไม่มีอุปสรรคเฉพาะในชุมชนใช่ไหม?
มอริซ: มีรูปแบบเกิดขึ้นที่นี่ หากคุณอ่านประวัติศาสตร์ของอิมเพรสชั่นนิสต์ในการวาดภาพและศิลปะโดยทั่วไป ครั้งหนึ่งศิลปินชื่อดังก็ปฏิเสธอิมเพรสชั่นนิสต์ พวกเขาบอกว่ามันเป็นเรื่องเด็กๆ รุ่นต่อมา รูปแบบศิลปะที่ถูกปฏิเสธก่อนหน้านี้กลายเป็นมาตรฐาน สิ่งที่ฉันเห็นในสาขาของฉัน: นักประดิษฐ์บล็อคเชนไม่สนใจเรื่องอำนาจ ในการเพิ่มสิ่งพิมพ์และดัชนีการอ้างอิง พวกเขาเพียงต้องการทำสิ่งที่ดี พวกเขาจึงนั่งลงและเริ่มทำมัน พวกเขาขาดความลึกทางเทคนิคจำนวนหนึ่ง แต่ก็สามารถแก้ไขได้ การคิดไอเดียสร้างสรรค์ใหม่ๆ นั้นยากกว่าการแก้ไขและเสริมความเข้มแข็งให้กับความคิดที่ยังไม่บรรลุนิติภาวะเพียงพอ ต้องขอบคุณนักประดิษฐ์เหล่านี้ ตอนนี้ฉันมีอะไรต้องทำแล้ว!
Alexey: สิ่งนี้คล้ายกับความแตกต่างระหว่างสตาร์ทอัพและโปรเจ็กต์รุ่นเก่า เราได้รับข้อจำกัดมากมายในด้านความคิด อุปสรรค ข้อกำหนดพิเศษ และอื่นๆ
มอริซ: การเปรียบเทียบที่ดีคือการคำนวณแบบกระจาย ลองนึกถึงบล็อกเชนราวกับว่าเป็นสตาร์ทอัพและคอมพิวเตอร์แบบกระจายในฐานะบริษัทขนาดใหญ่ที่จัดตั้งขึ้น การประมวลผลแบบกระจายกำลังอยู่ในขั้นตอนการรับและรวมเข้ากับบล็อคเชน
ปริญญาเอกภายใต้การดูแลของ Barbara Liskov
Vitaly: เรายังมีคำถามมากมาย! เรากำลังตรวจสอบภูมิหลังของคุณและพบข้อเท็จจริงที่น่าสนใจเกี่ยวกับปริญญาเอกของคุณ ใช่ นี่ผ่านมานานแล้ว แต่ดูเหมือนว่าจะเป็นหัวข้อสำคัญ คุณได้รับปริญญาเอกภายใต้การแนะนำของตัวคุณเอง
มอริซ: ตอนนั้น บาร์บาราและกลุ่มของเธอแค่มองหาการประมวลผลแบบกระจาย ซึ่งเป็นแนวคิดที่ใหม่มาก นอกจากนี้ยังมีผู้ที่กล่าวว่าการคำนวณแบบกระจายเป็นเรื่องไร้สาระ และคอมพิวเตอร์ที่สื่อสารระหว่างกันนั้นไร้จุดหมาย ปัญหาประการหนึ่งที่ได้รับการจัดการในการประมวลผลแบบกระจายที่แตกต่างจากการประมวลผลแบบรวมศูนย์คือความทนทานต่อข้อผิดพลาด หลังจากการค้นคว้าข้อมูลมากมาย เราตัดสินใจว่าภาษาโปรแกรมคอมพิวเตอร์แบบกระจายจำเป็นต้องมีธุรกรรมแบบอะตอมมิก เนื่องจากคุณไม่สามารถแน่ใจได้ว่าการโทรระยะไกลจะประสบผลสำเร็จ เมื่อคุณมีธุรกรรม ปัญหาของการจัดการพร้อมกันก็เกิดขึ้น จากนั้นก็มีงานอีกมากในการรับโครงสร้างข้อมูลธุรกรรมแบบขนานสูง จากนั้นเมื่อฉันเรียนจบฉันก็ไป
โลกกำลังรอมัลติคอร์อยู่
Vitaly: คุณบอกว่าตอนนั้นมีคอมพิวเตอร์แบบ Multi-core น้อยมากใช่ไหม?
มอริซ: พวกเขาไม่ได้อยู่ที่นั่น มีสิ่งที่เรียกว่ามัลติโปรเซสเซอร์แบบสมมาตรหลายตัว ซึ่งโดยพื้นฐานแล้วเชื่อมต่อกับบัสเดียวกัน สิ่งนี้ทำงานได้ไม่ดีนัก เพราะทุกครั้งที่บริษัทใหม่สร้างสิ่งที่คล้ายกัน Intel จะปล่อยโปรเซสเซอร์ตัวเดียวที่เหนือกว่ามัลติโปรเซสเซอร์
Alexey: นี่ไม่ได้หมายความว่าในสมัยโบราณมันเป็นการศึกษาเชิงทฤษฎีมากกว่าหรือ?
มอริซ: มันไม่ใช่การศึกษาเชิงทฤษฎี แต่เป็นการศึกษาเชิงเก็งกำไร ทั้งหมดนี้ไม่ได้เกี่ยวกับการทำงานกับทฤษฎีบทต่างๆ มากมาย แต่เราหยิบยกสมมติฐานเกี่ยวกับสถาปัตยกรรมที่ไม่มีอยู่ในขณะนั้น นี่คือสิ่งที่การวิจัยมีไว้เพื่อ! ไม่มีบริษัทใดที่จะทำอะไรแบบนี้ได้ ทั้งหมดนี้ล้วนมาจากอนาคตอันไกลโพ้น ในความเป็นจริงเป็นกรณีนี้จนถึงปี 2004 เมื่อโปรเซสเซอร์แบบมัลติคอร์จริงปรากฏขึ้น เนื่องจากโปรเซสเซอร์มีความร้อนมากเกินไป คุณจึงสามารถทำให้โปรเซสเซอร์มีขนาดเล็กลงได้ แต่คุณไม่สามารถทำให้เร็วขึ้นได้ ด้วยเหตุนี้ จึงมีการเปลี่ยนแปลงไปสู่สถาปัตยกรรมแบบมัลติคอร์ และนั่นหมายความว่าจู่ๆ ก็มีการนำแนวคิดทั้งหมดที่เราพัฒนาขึ้นมาในอดีตมาใช้
Alexey: ทำไมคุณถึงคิดว่าโปรเซสเซอร์แบบมัลติคอร์ปรากฏเฉพาะในปี XNUMX เท่านั้น แล้วทำไมมันช้าจังล่ะ?
มอริซ: นี่เป็นเพราะข้อจำกัดด้านฮาร์ดแวร์ Intel, AMD และบริษัทอื่นๆ เก่งมากในการเพิ่มความเร็วโปรเซสเซอร์ เมื่อถึงจุดหนึ่ง โปรเซสเซอร์มีขนาดเล็กพอที่จะเพิ่มความเร็วสัญญาณนาฬิกาไม่ได้อีกต่อไป เนื่องจากโปรเซสเซอร์จะเริ่มไหม้ คุณสามารถทำให้มันเล็กลงได้แต่ไม่เร็วขึ้น สิ่งที่อยู่ในอำนาจของพวกเขา - แทนที่จะเป็นโปรเซสเซอร์ขนาดเล็กมาก พวกเขาสามารถใส่โปรเซสเซอร์แปด, สิบหกหรือสามสิบสองตัวลงในเคสขนาดเดียวกันได้ ซึ่งก่อนหน้านี้มีเพียงตัวเดียวเท่านั้นที่สามารถใส่ได้ ตอนนี้คุณมีการสื่อสารแบบมัลติเธรดและรวดเร็วระหว่างพวกเขาเพราะพวกเขาแชร์แคช แต่คุณไม่สามารถบังคับให้พวกมันวิ่งเร็วขึ้นได้ - มีการจำกัดความเร็วที่เฉพาะเจาะจงมาก พวกเขายังคงพัฒนาต่อไปทีละน้อยแต่ไม่มากอีกต่อไป กฎแห่งฟิสิกส์เป็นอุปสรรคต่อการปรับปรุง
โลกใหม่นำมาซึ่งปัญหาใหม่ NUMA, NVM และการแฮ็กสถาปัตยกรรม
Alexey: ฟังดูสมเหตุสมผลมาก ด้วยโปรเซสเซอร์แบบมัลติคอร์ใหม่ปัญหาใหม่ก็เกิดขึ้น คุณและเพื่อนร่วมงานคาดหวังปัญหาเหล่านี้หรือไม่? บางทีคุณอาจศึกษาพวกเขาล่วงหน้า? ในการศึกษาเชิงทฤษฎี มักจะไม่ง่ายนักที่จะทำนายสิ่งเหล่านี้ เมื่อเกิดปัญหาขึ้น พวกเขาตอบสนองความคาดหวังของคุณและเพื่อนร่วมงานได้อย่างไร หรือเป็นของใหม่และคุณและเพื่อนร่วมงานต้องใช้เวลามากในการแก้ปัญหาตามที่ปรากฏ?
Vitaly: ฉันจะเพิ่มคำถามของ Alexey: คุณทำนายสถาปัตยกรรมโปรเซสเซอร์อย่างถูกต้องในขณะที่คุณกำลังศึกษาทฤษฎีหรือไม่?
มอริซ: ไม่ 100% แต่ฉันคิดว่าเพื่อนร่วมงานของฉันและฉันทำได้ดีมากในการคาดการณ์มัลติคอร์ด้วยหน่วยความจำที่ใช้ร่วมกัน ฉันคิดว่าเราคาดการณ์ปัญหาในการพัฒนาโครงสร้างข้อมูลแบบขนานที่ทำงานโดยไม่มีการล็อคได้อย่างถูกต้อง โครงสร้างข้อมูลดังกล่าวมีความสำคัญสำหรับแอปพลิเคชันจำนวนมาก แม้ว่าจะไม่ใช่ทั้งหมด แต่บ่อยครั้งที่คุณต้องการจริงๆ ก็คือโครงสร้างข้อมูลที่ไม่ล็อก ตอนที่เราประดิษฐ์มันขึ้นมา หลายคนแย้งว่านี่เป็นเรื่องไร้สาระ ที่ทุกอย่างใช้ได้ดีกับกุญแจ เราคาดการณ์ไว้ค่อนข้างดีว่าจะมีวิธีแก้ปัญหาสำเร็จรูปสำหรับปัญหาการเขียนโปรแกรมและปัญหาโครงสร้างข้อมูลมากมาย นอกจากนี้ยังมีปัญหาที่ซับซ้อนมากขึ้น เช่น
Alexey: ถ้าฉันเข้าใจถูกต้อง NUMA คือการประนีประนอมระหว่างต้นทุน ประสิทธิภาพ และอื่นๆ มีความคิดเห็นใดบ้างว่าทำไม NUMA ถึงออกมาช้ามาก?
มอริซ: ฉันคิดว่า NUMA มีอยู่เนื่องจากปัญหากับฮาร์ดแวร์ที่ใช้สร้างหน่วยความจำ ยิ่งส่วนประกอบอยู่ไกลเท่าไร การเข้าถึงก็จะยิ่งช้าลงเท่านั้น ในทางกลับกัน ค่าที่สองของนามธรรมนี้คือความสม่ำเสมอของหน่วยความจำ ดังนั้นคุณลักษณะอย่างหนึ่งของการคำนวณแบบขนานก็คือ นามธรรมทั้งหมดจะเสียหายเล็กน้อย หากการเข้าถึงมีความสม่ำเสมอกันอย่างสมบูรณ์ หน่วยความจำทั้งหมดจะมีระยะห่างเท่ากัน แต่นี่เป็นไปไม่ได้ในเชิงเศรษฐกิจ และอาจเป็นไปได้ทางกายภาพด้วยซ้ำ ความขัดแย้งนี้จึงเกิดขึ้น หากคุณเขียนโปรแกรมราวกับว่าหน่วยความจำมีความสม่ำเสมอ ก็น่าจะถูกต้อง ในแง่ที่ว่าจะไม่ให้คำตอบที่ผิด แต่การแสดงของเธอก็ไม่สามารถจับดวงดาวจากท้องฟ้าได้เช่นกัน ในทำนองเดียวกันถ้าคุณเขียน
วิตาลี: แล้วอนาคตล่ะ? คุณสามารถคาดเดาได้ไหมว่าโปรเซสเซอร์จะพัฒนาต่อไปอย่างไร? มีความคิดที่ว่าหนึ่งในคำตอบคือหน่วยความจำทรานแซคชัน คุณอาจมีอย่างอื่นในสต็อก
มอริซ: มีความท้าทายสำคัญสองสามประการรออยู่ข้างหน้า ประการหนึ่งก็คือ ความทรงจำที่เชื่อมโยงกันนั้นเป็นนามธรรมที่ยอดเยี่ยม แต่มันเริ่มที่จะพังทลายลงในกรณีพิเศษ ตัวอย่างเช่น NUMA เป็นตัวอย่างที่มีชีวิตของบางสิ่งบางอย่างที่คุณสามารถแสร้งทำเป็นว่ามีความทรงจำที่เหมือนกันอยู่ จริงๆ แล้วไม่เลย ประสิทธิภาพการทำงานจะทำให้คุณร้องไห้ เมื่อถึงจุดหนึ่ง สถาปนิกจะต้องละทิ้งแนวคิดเรื่องสถาปัตยกรรมหน่วยความจำเดียว คุณไม่สามารถแสร้งทำเป็นตลอดไปได้ จำเป็นต้องมีโมเดลการเขียนโปรแกรมใหม่ที่ใช้งานง่ายและมีประสิทธิภาพเพียงพอที่จะทำให้ฮาร์ดแวร์พื้นฐานมีประสิทธิภาพ นี่เป็นการประนีประนอมที่ยากมาก เพราะถ้าคุณแสดงให้โปรแกรมเมอร์เห็นสถาปัตยกรรมที่ใช้งานจริงในฮาร์ดแวร์ พวกเขาจะบ้าไปแล้ว มันซับซ้อนเกินไปและไม่สามารถพกพาได้ หากคุณนำเสนออินเทอร์เฟซที่เรียบง่ายเกินไป ประสิทธิภาพจะลดลง ดังนั้น จำเป็นต้องมีการแลกเปลี่ยนที่ยากมากหลายประการเพื่อสร้างโมเดลการเขียนโปรแกรมที่มีประโยชน์ซึ่งใช้ได้กับโปรเซสเซอร์แบบมัลติคอร์ขนาดใหญ่อย่างแท้จริง ฉันไม่แน่ใจว่าใครก็ตามที่ไม่ใช่ผู้เชี่ยวชาญสามารถเขียนโปรแกรมบนคอมพิวเตอร์ 2000-core ได้ และนอกเสียจากว่าคุณจะทำคอมพิวเตอร์หรือวิทยาการเข้ารหัสลับหรืออะไรทำนองนั้นเป็นพิเศษหรือเป็นวิทยาศาสตร์ แต่ก็ยังไม่ชัดเจนว่าจะต้องทำอย่างไรให้ถูกต้อง
พื้นที่ที่คล้ายกันอีกประการหนึ่งคือสถาปัตยกรรมเฉพาะทาง ตัวเร่งความเร็วกราฟิกมีมานานแล้ว แต่พวกมันได้กลายเป็นตัวอย่างคลาสสิกของวิธีที่คุณสามารถใช้การประมวลผลแบบพิเศษและรันบนชิปเฉพาะ สิ่งนี้เพิ่มความท้าทายในตัวเอง: วิธีที่คุณสื่อสารกับอุปกรณ์ดังกล่าว วิธีที่คุณตั้งโปรแกรมไว้ ฉันเพิ่งได้ทำงานเกี่ยวกับปัญหาในพื้นที่
Alexey: แล้วหน่วยความจำแบบไม่ลบเลือน (
มอริซ: โอ้ นั่นเป็นอีกตัวอย่างที่ดีอีกประการหนึ่ง! NVM จะเปลี่ยนวิธีการมองสิ่งต่างๆ เช่น โครงสร้างข้อมูลไปอย่างมาก ในแง่หนึ่ง หน่วยความจำแบบไม่ลบเลือนสัญญาว่าจะทำให้สิ่งต่างๆ เร็วขึ้นได้จริงๆ แต่มันจะไม่ทำให้ชีวิตง่ายขึ้นอีกต่อไป เนื่องจากโปรเซสเซอร์ แคช และรีจิสเตอร์ส่วนใหญ่ยังคงมีความผันผวน เมื่อคุณออกรถหลังจากการชน สถานะและสถานะหน่วยความจำของคุณจะไม่เหมือนกับก่อนเกิดอุบัติเหตุทุกประการ ฉันรู้สึกขอบคุณมากกับคนที่ทำงานเกี่ยวกับ NVM - จะมีนักวิจัยอีกมากมายที่ต้องทำเป็นเวลานานในการพยายามหาเงื่อนไขที่ถูกต้อง การคำนวณจะถูกต้องหากสามารถรอดจากความผิดพลาดซึ่งเนื้อหาของแคชและรีจิสเตอร์สูญหายไป แต่หน่วยความจำหลักยังคงไม่เสียหาย
คอมไพเลอร์เทียบกับโปรเซสเซอร์ RISC เทียบกับ CISC หน่วยความจำที่ใช้ร่วมกันเทียบกับการส่งข้อความ
Vladimir: คุณคิดอย่างไรเกี่ยวกับภาวะที่กลืนไม่เข้าคายไม่ออกระหว่าง "คอมไพเลอร์กับโปรเซสเซอร์" จากมุมมองของชุดคำสั่ง? ให้ฉันอธิบายสำหรับผู้ที่ไม่รู้: ถ้าเราไปที่หน่วยความจำเบ้หรืออะไรที่คล้ายกัน เราสามารถใช้ชุดคำสั่งง่ายๆ และขอให้คอมไพเลอร์สร้างโค้ดที่ซับซ้อนซึ่งสามารถใช้ประโยชน์จากข้อดีที่ค้นพบได้ หรือเราอาจไปทางอื่น: ใช้คำสั่งที่ซับซ้อนและขอให้โปรเซสเซอร์จัดลำดับคำสั่งใหม่และดำเนินการอื่น ๆ กับพวกเขา คุณคิดอย่างไรเกี่ยวกับเรื่องนี้?
มอริซ: ฉันไม่มีคำตอบสำหรับคำถามนั้นจริงๆ การอภิปรายนี้ดำเนินมาเป็นเวลาสี่ทศวรรษแล้ว มีช่วงเวลาหนึ่งระหว่างนั้น
Alexey: เป็นเรื่องปกติแค่ไหนสำหรับอุตสาหกรรมที่แนวคิดบางอย่างชนะใจมาหลายทศวรรษแล้วแพ้ในครั้งต่อไป? มีตัวอย่างอื่นของการเปลี่ยนแปลงเป็นระยะดังกล่าวหรือไม่?
มอริซ: ในหัวข้อคอมพิวเตอร์แบบกระจาย มีคนที่เชื่อในเรื่องนี้
ศิลปะแห่งการเขียนโค้ดแบบมัลติเธรดแบบเปราะ
Alexey: นี่น่าสนใจมาก ตัวอย่างเช่น เมื่อเราเขียนโค้ด ไม่ว่าภาษาโปรแกรมใดก็ตาม เรามักจะต้องสร้างนามธรรม เช่น เซลล์ที่สามารถอ่านและเขียนได้ แต่ในความเป็นจริงแล้ว ในระดับทางกายภาพ สิ่งนี้อาจดูเหมือนเป็นการส่งข้อความผ่านบัสฮาร์ดแวร์ระหว่างคอมพิวเตอร์เครื่องอื่นและอุปกรณ์อื่นๆ ปรากฎว่างานกำลังเกิดขึ้นทั้งสองระดับของนามธรรมพร้อมกัน
มอริซ: เป็นความจริงอย่างยิ่งที่หน่วยความจำที่ใช้ร่วมกันสร้างขึ้นจากการส่งข้อความ เช่น บัส แคช และอื่นๆ แต่มันยากที่จะเขียนโปรแกรมโดยใช้การส่งข้อความ ดังนั้นฮาร์ดแวร์จึงจงใจโกหกโดยแสร้งทำเป็นว่าคุณมีหน่วยความจำที่เหมือนกัน ซึ่งจะทำให้ง่ายต่อการเขียนโปรแกรมที่เรียบง่ายและถูกต้องก่อนที่ประสิทธิภาพจะเริ่มลดลง จากนั้นคุณจะพูดว่า: ดูเหมือนว่าถึงเวลาที่จะผูกมิตรกับแคชแล้ว จากนั้นคุณเริ่มกังวลเกี่ยวกับตำแหน่งของแคช และจากนั้นมันก็ไป ในแง่หนึ่ง คุณกำลังแฮ็กสิ่งที่เป็นนามธรรม คุณรู้ว่ามันไม่ใช่แค่หน่วยความจำแบบแบนและสม่ำเสมอ และคุณจะใช้ความรู้นั้นในการเขียนโปรแกรมที่เหมาะกับแคช นี่คือสิ่งที่คุณจะต้องทำในปัญหาที่แท้จริง ความขัดแย้งระหว่างนามธรรมที่ไพเราะ เรียบง่าย และสวยงามที่คุณได้รับกับการใช้งานฮาร์ดแวร์พื้นฐานที่ซับซ้อนอย่างน่าสยดสยองคือจุดที่ทุกคนจะต้องประนีประนอมกันเอง ฉันมีหนังสือเกี่ยวกับมัลติโปรเซสเซอร์และการซิงโครไนซ์ และถึงจุดหนึ่งฉันจะเขียนบทเกี่ยวกับโครงสร้างข้อมูลใน java.util.พร้อมกัน. หากคุณดูพวกเขาสิ่งต่าง ๆ เช่น
Alexey: ตอนที่ฉันยังเด็ก หลายครั้งฉันพยายามศึกษาซอร์สโค้ดของ Doug Lee เช่น java.util.พร้อมกันเนื่องจากเป็นโอเพ่นซอร์ส จึงง่ายต่อการค้นหาและพยายามทำความเข้าใจว่าเกิดอะไรขึ้น มันไม่ได้ผลดีนัก บ่อยครั้งที่ไม่มีความชัดเจนเลยว่าทำไม Doug จึงตัดสินใจทำบางอย่างในลักษณะนี้ ในเมื่อคนอื่นๆ ทำแตกต่างออกไป คุณจะอธิบายสิ่งเหล่านี้ให้นักเรียนของคุณฟังอย่างไร? มีวิธีที่ถูกต้องโดยเฉพาะในการอธิบายรายละเอียดเฉพาะของอัลกอริธึมแบบฮาร์ดคอร์หรือไม่? คุณจะทำอย่างไร?
มอริซ: ครูสอนวาดรูปมีความคิดโบราณที่พวกเขาจำได้เป็นอันดับแรก: หากคุณต้องการวาดเหมือนปิกัสโซ คุณต้องเรียนรู้วิธีการวาดภาพเหมือนจริงแบบง่ายๆ ก่อน และเมื่อคุณรู้กฎเกณฑ์เท่านั้น คุณจึงจะเริ่มแหกกฎได้ หากคุณเริ่มต้นด้วยการละเมิดกฎทันที คุณจะพบกับความยุ่งเหยิง ก่อนอื่น ฉันสอนนักเรียนถึงวิธีเขียนโค้ดที่เรียบง่ายและถูกต้องโดยไม่ต้องกังวลเกี่ยวกับประสิทธิภาพ สิ่งที่ฉันพูดคือมีปัญหาเรื่องเวลาที่ซับซ้อนซ่อนอยู่ที่นี่ ดังนั้นไม่ต้องกังวลกับแคช ไม่ต้องกังวลกับรุ่นหน่วยความจำ เพียงตรวจสอบให้แน่ใจว่าทุกอย่างทำงานอย่างถูกต้อง นี่เป็นเรื่องยากอยู่แล้ว: การเขียนโปรแกรมสมัยใหม่ไม่ใช่เรื่องง่ายในตัวมันเอง โดยเฉพาะสำหรับนักเรียนใหม่ และเมื่อพวกเขามีสัญชาตญาณเกี่ยวกับวิธีการเขียนโปรแกรมที่ถูกต้อง ฉันพูดว่า: ดูการใช้งาน Spinlock ทั้งสองนี้: อันหนึ่งช้ามากและอย่างที่สองก็ไม่มากเช่นกัน แต่ดีกว่า อย่างไรก็ตาม ตามหลักคณิตศาสตร์แล้ว อัลกอริธึมทั้งสองจะเหมือนกัน อันที่จริงหนึ่งในนั้นใช้พื้นที่แคช หนึ่งในนั้นทำงานบนข้อมูลที่แคชในเครื่อง และอีกอันดำเนินการซ้ำๆ บนบัส คุณไม่สามารถเขียนโค้ดที่มีประสิทธิภาพได้ หากคุณไม่เข้าใจว่ามันคืออะไร และไม่รู้ว่าจะแยกสิ่งที่เป็นนามธรรมออกไปและมองไปที่โครงสร้างพื้นฐานได้อย่างไร แต่คุณจะไม่สามารถเริ่มทำสิ่งนี้ได้ในทันที มีคนเริ่มทำทันทีและเชื่อในอัจฉริยภาพของตัวเอง มักจะจบลงอย่างเลวร้ายเพราะไม่เข้าใจหลักการ ไม่มีใครวาดภาพได้เหมือน Picasso หรือเขียนโปรแกรมเหมือน Doug Lee เพิ่งออกจากวิทยาลัยในสัปดาห์แรกของเขา ต้องใช้เวลาหลายปีกว่าจะถึงระดับความรู้นี้
Alexey: ปรากฎว่าคุณแบ่งปัญหาออกเป็นสองส่วน ส่วนแรกคือความถูกต้อง ส่วนที่สองคือประสิทธิภาพ?
มอริซ: แน่นอน และตามลำดับนั้น ส่วนหนึ่งของปัญหาคือนักเรียนใหม่ไม่เข้าใจว่าความถูกต้องนั้นทำได้ยาก เมื่อเห็นแวบแรกพวกเขาพูดว่า: เห็นได้ชัดว่าถูกต้องสิ่งที่เหลืออยู่คือการเร่งความเร็ว ดังนั้นบางครั้งฉันก็บอกพวกเขาเกี่ยวกับอัลกอริธึมที่ไม่ถูกต้องในตอนแรกราวกับว่ามันถูกต้อง
วิธีสอนนักเรียนให้เขียนโค้ดแบบมัลติเธรดที่ซับซ้อน
Alexey: เพียงเพื่อดูว่าพวกเขาสามารถสัมผัสได้หรือไม่?
มอริซ: ฉันเตือนล่วงหน้าเสมอว่าบางครั้งฉันจะเสนออัลกอริธึมที่ไม่ถูกต้อง คุณไม่ควรหลอกลวงผู้คน ฉันขอแนะนำให้พวกเขาใช้ข้อมูลด้วยเกลือเม็ดหนึ่ง ถ้าฉันบอกอะไรบางอย่างและพูดว่า: "ดูสินี่ถูกต้องชัดเจน" - นี่เป็นสัญญาณว่าพวกเขากำลังพยายามหลอกลวงคุณอยู่ที่ไหนสักแห่งและคุณควรเริ่มถามคำถาม ต่อไป ฉันพยายามสนับสนุนให้นักเรียนถามคำถามต่อไป แล้วเสนอแนะว่า “จะเกิดอะไรขึ้นถ้าเราปล่อยไว้เหมือนเดิม” และพวกเขาก็เห็นข้อผิดพลาดทันที แต่การโน้มน้าวนักเรียนว่าพวกเขาจำเป็นต้องกังวลเกี่ยวกับความถูกต้องนั้นยากกว่าที่เห็นเมื่อมองแวบแรก นักเรียนเหล่านี้หลายคนมีประสบการณ์การเขียนโปรแกรมในโรงเรียนมัธยมศึกษาตอนปลาย บางคนได้งานทำและเขียนโปรแกรมที่นั่น และพวกเขาทั้งหมดเต็มไปด้วยความมั่นใจ สิ่งนี้คล้ายกับกองทัพ ก่อนอื่นคุณต้องเปลี่ยนอารมณ์ของพวกเขาเพื่อโน้มน้าวให้พวกเขาอดทนในการแก้ปัญหาที่เกิดขึ้น หรือบางทีก็เหมือนกับพระภิกษุ ขั้นแรกพวกเขาเรียนรู้ที่จะให้เหตุผลเกี่ยวกับความถูกต้อง และเมื่อพวกเขาเข้าใจวิธีการให้เหตุผลเกี่ยวกับความถูกต้องแล้ว พวกเขาก็จะได้รับอนุญาตให้ก้าวไปสู่ระดับถัดไปและเริ่มกังวลเกี่ยวกับการแสดง
Alexey: นั่นคือ บางครั้งคุณแสดงตัวอย่างที่ไม่ทำงานให้กับนักเรียน ซึ่งคุณจะได้รับผลตอบรับที่แสดงให้เห็นว่าพวกเขาเข้าใจแก่นแท้ของปัญหาหรือไม่ พวกเขาสามารถค้นหารหัสผิดและผลลัพธ์ที่ผิดได้หรือไม่ แล้วนักเรียนมักจะทำให้คุณมีความสุขหรือเสียใจไหม?
มอริซ: นักเรียนมักจะพบข้อผิดพลาดในท้ายที่สุด หากพวกเขาค้นหาช้าเกินไป ฉันจะถามคำถามชั้นนำ และสิ่งสำคัญคือต้องเข้าใจว่าหากคุณไม่เคยหลอกลวงพวกเขา พวกเขาจะเริ่มรับรู้คำพูดของคุณอย่างไร้เหตุผลว่าเป็นความจริงขั้นสูงสุด จากนั้นพวกเขาจะรู้สึกเบื่อและเริ่มง่วงนอนขณะอ่าน Facebook บนแล็ปท็อประหว่างคาบเรียน แต่เมื่อคุณบอกพวกเขาล่วงหน้าว่าพวกเขาจะถูกหลอก และพวกเขาจะดูโง่ถ้าไม่รู้สึกถึงกลอุบาย พวกเขาจะระมัดระวังมากขึ้น นี่เป็นสิ่งที่ดีในรูปแบบต่างๆ ฉันอยากให้นักเรียนไม่เพียงแต่ตั้งคำถามเกี่ยวกับความเข้าใจในประเด็นนี้เท่านั้น แต่ยังตั้งคำถามถึงอำนาจของครูด้วย แนวคิดก็คือนักเรียนสามารถยกมือเมื่อใดก็ได้และพูดว่า: ฉันคิดว่าสิ่งที่คุณเพิ่งพูดนั้นผิด เป็นเครื่องมือการเรียนรู้ที่สำคัญ ฉันไม่ต้องการให้นักเรียนคนใดนั่งคิดกับตัวเองเงียบๆ ทั้งหมดนี้ดูไร้สาระโดยสิ้นเชิง แต่การยกมือของคุณนั้นน่ากลัวเกินไป และยังไงซะ เขาเป็นศาสตราจารย์ ดังนั้นทุกสิ่งที่เขาพูดจึงเป็นความจริง ดังนั้น หากพวกเขาได้รับคำเตือนล่วงหน้าว่าไม่ใช่ทุกสิ่งที่บอกมานั้นไม่จำเป็นต้องเป็นความจริง พวกเขาก็จะมีแรงจูงใจที่จะให้ความสนใจกับเนื้อหามากขึ้น ฉันชี้แจงให้ชัดเจนว่าสามารถยกมือขึ้นและถามคำถามได้ คำถามของคุณอาจฟังดูงี่เง่าหรือไร้เดียงสา แต่คำถามที่ดีที่สุดมักจะเกิดขึ้นเสมอ
Alexey: น่าสนใจมาก โดยปกติแล้วผู้คนจะมีอุปสรรคทางจิตวิทยาบางอย่างที่ไม่อนุญาตให้พวกเขาถามคำถามกับอาจารย์ โดยเฉพาะอย่างยิ่งถ้าในห้องมีคนจำนวนมาก และทุกคนกลัวว่าการพูดคุยถึงคำถามโง่ๆ ของคุณจะกินเวลาของคนเหล่านี้ทั้งหมด มีเทคนิคในการจัดการกับสิ่งนี้หรือไม่?
มอริซ: ฉันมักจะหยุดและถามคำถามคลาสสิก ไม่ว่าข้อความจะถูกต้องหรือจะแก้ไขปัญหาที่กำลังหารือกันอย่างไร นี่เป็นการกระทำที่สำคัญ โดยเฉพาะอย่างยิ่งในช่วงเริ่มต้นบทเรียนเมื่อผู้คนรู้สึกเขินอายที่จะพูดแม้แต่เรื่องเล็กๆ น้อยๆ คุณถามคำถามกับนักเรียนและไม่พูดอะไรเพิ่มเติม เกิดความเงียบ ทุกคนตึงเครียดเล็กน้อย ความตึงเครียดเพิ่มขึ้น จู่ๆ ก็มีคนทนไม่ไหว ทรุดตัวลงแล้วพูดคำตอบ นี่คือวิธีที่คุณพลิกสถานการณ์: การนิ่งเงียบต่อไปกลายเป็นเรื่องยากและไม่สะดวกกว่าการตอบ! นี่เป็นเคล็ดลับการสอนมาตรฐาน ครูทุกคนในโลกควรรู้วิธีการทำเช่นนี้
Alexey: ตอนนี้เรามีหัวข้อที่ยอดเยี่ยมสำหรับการสัมภาษณ์ครั้งนี้: “ตอบง่ายกว่าการเงียบ”
วิทาลี: ฉันขอถามอีกครั้ง คุณกำลังดำเนินการพิสูจน์ทอพอโลยี คุณมีส่วนร่วมในเรื่องนี้ได้อย่างไร เพราะการคำนวณแบบกระจายและโทโพโลยีเป็นสิ่งที่แตกต่างอย่างสิ้นเชิง!
มอริซ: มีความเชื่อมโยงที่ซ่อนอยู่ที่นั่น ตอนที่ฉันเป็นนักเรียนที่เรียนวิชาคณิตศาสตร์ ฉันเรียนคณิตศาสตร์ล้วนๆ ฉันไม่สนใจคอมพิวเตอร์เลยจนกระทั่งการเรียนจบ และพบว่าตัวเองต้องเผชิญกับความจำเป็นเร่งด่วนในการหางาน ในฐานะนักเรียน ฉันเรียนโทโพโลยีพีชคณิต หลายปีต่อมาขณะกำลังแก้ไขปัญหาที่เรียกว่า
Vitaly: ปรากฎว่าคุณโชคดีเหรอ?
มอริซ: นอกจากโชคแล้ว มันยังด้วย การเตรียมความพร้อม. ซึ่งหมายความว่าคุณไม่ควรลืมสิ่งที่ "ไร้ประโยชน์" ที่คุณได้เรียนรู้มาก่อนหน้านี้ ยิ่งคุณเรียนรู้สิ่งที่ไร้ประโยชน์มากเท่าไร คุณก็ยิ่งดึงแนวคิดออกมาได้มากขึ้นเมื่อเผชิญกับปัญหาใหม่ การจับคู่รูปแบบตามสัญชาตญาณประเภทนี้มีความสำคัญเพราะ... มาทำสิ่งนี้กัน นี่คือห่วงโซ่: ตอนแรกฉันค้นพบว่ากราฟไม่ทำงานเลยหรือไม่ทำงานเลย มันทำให้ฉันนึกถึงบางสิ่งจากเหตุการณ์แปดประการ หลายปีก่อนและปีของนักเรียนของฉัน เมื่อเราศึกษาคอมเพล็กซ์ที่เรียบง่ายเหล่านี้ทั้งหมด สิ่งนี้ทำให้ฉันสามารถค้นหาตำราโทโพโลยีเก่าของฉันและโหลดกลับเข้าไปในหัวของฉัน แต่ถ้าไม่ใช่เพราะความรู้เก่าๆ ฉันก็คงไม่มีวันก้าวหน้าในการแก้ปัญหาเดิมเลย
หนังสือฉบับพิมพ์ใหม่ “The Art of Multiprocessor Programming”
Alexey: คุณพูดสองสามคำเกี่ยวกับหนังสือของคุณ อาจไม่ใช่ความลับที่เลวร้ายที่สุดที่คุณเขียนหนังสือเกี่ยวกับมัลติเธรดที่โด่งดังที่สุดในโลก
มอริซ: ดีที่คุณถาม! อีกไม่นานนี้ อีกสามเดือนข้างหน้า มีผู้เขียนอีกสองคน เราได้เพิ่มเนื้อหามากขึ้น ปรับปรุงส่วนของ fork/join Parallelism เขียนส่วนบน MapReduce เพิ่มสิ่งใหม่ๆ มากมาย และโยนสิ่งที่ไม่จำเป็นออกไป - สิ่งที่น่าสนใจมากในขณะที่เขียน ฉบับพิมพ์ครั้งแรก แต่ปัจจุบันไม่มีแล้ว ผลที่ได้คือหนังสือที่มีการแก้ไขอย่างจริงจังมาก
Alexey: ทุกอย่างเสร็จสิ้นแล้ว เหลือเพียงปล่อยมันออกมาเหรอ?
มอริซ: ยังมีอีกหลายบทที่ยังต้องมีการปรับปรุง ผู้จัดพิมพ์ของเรา (ซึ่งฉันคิดว่าเกลียดเราอยู่แล้ว) ยังคงพยายามส่งข้อความว่าเราควรทำงานได้เร็วขึ้น เราช้ากว่ากำหนดมาก ตามทฤษฎีแล้ว เราน่าจะทำหนังสือเล่มนี้ได้เมื่อสองสามปีก่อน
Alexey: มีโอกาสที่จะได้หนังสือเวอร์ชันใหม่ก่อนวันคริสต์มาสไหม?
มอริซ: นี่คือเป้าหมายของเรา! แต่ฉันทำนายชัยชนะมาหลายครั้งจนไม่มีใครเชื่อฉันอีกต่อไป คุณไม่ควรเชื่อใจฉันมากเกินไปในเรื่องนี้เช่นกัน
Alexey: ไม่ว่าในกรณีใด นี่เป็นข่าวที่น่าอัศจรรย์ ฉันชอบหนังสือฉบับพิมพ์ครั้งแรกมาก คุณจะบอกว่าฉันเป็นแฟนก็ได้
มอริซ: ฉันหวังว่าฉบับใหม่จะคุ้มค่ากับความกระตือรือร้นอันแรงกล้าของคุณ ขอบคุณ!
หน่วยความจำทรานแซคชันถูกประดิษฐ์ขึ้นอย่างไร
Vitaly: คำถามถัดไปเกี่ยวกับหน่วยความจำทรานแซคชัน เท่าที่ฉันเข้าใจ คุณเป็นผู้บุกเบิกในสาขานี้ คุณคิดค้นมันขึ้นมาในเวลาที่ไม่มีใครคิดถึงเรื่องแบบนั้น ทำไมคุณถึงตัดสินใจย้ายมาสาขานี้? เหตุใดธุรกรรมจึงดูเหมือนสำคัญสำหรับคุณ คุณคิดว่าสักวันหนึ่งพวกเขาจะถูกนำมาใช้ในฮาร์ดแวร์หรือไม่ เพราะเหตุใด
มอริซ: ฉันรู้เรื่องธุรกรรมมาตั้งแต่สมัยเรียนวิจัย
Vitaly: ใช่ แต่นี่เป็นธุรกรรมที่แตกต่างกัน!
มอริซ: ฉันทำงานร่วมกับ Elliott Moss ในเรื่องการเก็บขยะแบบไม่ปิดกั้น ปัญหาของเราคือเราต้องการเปลี่ยนคำสองสามคำในหน่วยความจำแบบอะตอมมิก จากนั้นอัลกอริธึมก็จะง่ายขึ้น และอย่างน้อยบางคำก็จะมีประสิทธิภาพมากขึ้น โดยใช้
วิตาลี: พันล้าน! แค่บอกว่าพันล้าน!
มอริซ: ใช่นั่นคือสิ่งที่ฉันควรจะพูด ตอนนี้ในยุคของสตาร์ทอัพและทุกอย่าง ฉันรู้วิธีเขียนแผนธุรกิจ คุณสามารถโกหกเรื่องขนาดของผลกำไรที่อาจเกิดขึ้นได้เล็กน้อย แต่สมัยนั้นมันดูไร้เดียงสาเลยบอกไปว่า “ไม่รู้” หากคุณดูประวัติของการตีพิมพ์เกี่ยวกับหน่วยความจำทรานแซคชัน คุณจะสังเกตเห็นว่าหลังจากหนึ่งปีมีการอ้างอิงหลายครั้ง และหลังจากนั้นประมาณสิบปีก็ไม่มีใครอ้างถึงบทความนี้เลย ราคาดังกล่าวปรากฏราวปี 2004 เมื่อมัลติคอร์ที่แท้จริงปรากฏขึ้น เมื่อผู้คนค้นพบว่าการเขียนโค้ดคู่ขนานสามารถสร้างรายได้ การวิจัยใหม่ก็เริ่มต้นขึ้น ราวี ราชวาร์
เหตุใดจึงคุ้มค่าที่จะทำการวิจัยในสาขาคอมพิวเตอร์แบบกระจาย
Vitaly: ถ้าเราพูดถึงงานวิจัยใหม่ คุณจะแนะนำอะไรแก่ผู้อ่านบ้าง - คอมพิวเตอร์แบบกระจายหรือมัลติคอร์ และเพราะเหตุใด
มอริซ: ทุกวันนี้การหาโปรเซสเซอร์แบบมัลติคอร์เป็นเรื่องง่าย แต่การตั้งค่าระบบแบบกระจายที่แท้จริงนั้นยากกว่า ฉันเริ่มทำงานเพราะฉันต้องการทำสิ่งที่แตกต่างจากวิทยานิพนธ์ระดับปริญญาเอกของฉัน นี่คือคำแนะนำที่ฉันให้กับนักเรียนใหม่เสมอ: อย่าเขียนวิทยานิพนธ์ต่อ แต่ให้ลองไปในทิศทางใหม่ และมัลติเธรดก็เป็นเรื่องง่าย ฉันสามารถทดลองโดยใช้ส้อมของตัวเองทำงานบนแล็ปท็อปโดยไม่ต้องลุกจากเตียง แต่ถ้าจู่ๆ ฉันก็อยากจะสร้างระบบแบบกระจายจริงๆ ฉันจะต้องทำงานเยอะๆ ดึงดูดนักเรียน และอื่นๆ ฉันเป็นคนขี้เกียจและอยากจะทำงานบนมัลติคอร์มากกว่า การทดลองบนระบบมัลติคอร์นั้นง่ายกว่าการทดลองบนระบบแบบกระจาย เนื่องจากแม้แต่ในระบบแบบกระจายที่โง่เขลา ก็ยังมีปัจจัยหลายอย่างที่ต้องควบคุมมากเกินไป
Vitaly: ตอนนี้คุณกำลังค้นคว้าเกี่ยวกับบล็อคเชนอยู่หรือเปล่า? บทความใดที่คุณควรใส่ใจเป็นอันดับแรก
มอริซ: เพิ่งปรากฏตัว
การพัฒนาอัลกอริธึมหยุดลงแล้วและจะเดินหน้าต่อไปได้อย่างไร?
Vitaly: ถึงเวลาสำหรับคำถามเชิงทฤษฎีสุดท้าย! คุณรู้สึกว่าความก้าวหน้าในโครงสร้างข้อมูลที่มีการแข่งขันลดลงทุกปีหรือไม่? คุณคิดว่าความเข้าใจเกี่ยวกับโครงสร้างข้อมูลของเราถึงจุดสูงสุดแล้วหรือจะมีการปรับปรุงที่สำคัญบางประการหรือไม่ อาจมีแนวคิดอันชาญฉลาดที่สามารถเปลี่ยนแปลงทุกสิ่งได้อย่างสิ้นเชิง?
มอริซ: เราอาจมาถึงจุดสูงสุดในโครงสร้างข้อมูลสำหรับสถาปัตยกรรมแบบดั้งเดิมแล้ว แต่โครงสร้างข้อมูลสำหรับสถาปัตยกรรมใหม่ยังคงเป็นพื้นที่ที่น่าสนใจมาก หากคุณต้องการสร้างโครงสร้างข้อมูลสำหรับตัวเร่งฮาร์ดแวร์ เช่น โครงสร้างข้อมูลสำหรับ GPU จะแตกต่างจากโครงสร้างข้อมูลสำหรับ CPU อย่างมาก เมื่อคุณพัฒนาโครงสร้างข้อมูลสำหรับบล็อกเชน คุณจะต้องแฮชข้อมูลบางส่วนแล้วใส่ลงในสิ่งที่ต้องการ
Vitaly: ดังนั้นเพื่อที่จะเป็นนักวิจัยที่มีชื่อเสียง ฉันจึงต้องสร้างสถาปัตยกรรมของตัวเองขึ้นมา :)
มอริซ: คุณสามารถ "ขโมย" สถาปัตยกรรมใหม่ของคนอื่นได้ - ดูเหมือนง่ายกว่ามาก!
ทำงานที่ Brown University
Vitaly: คุณช่วยบอกเราเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ไหม
มอริซ: มหาวิทยาลัยบราวน์เป็นหนึ่งในมหาวิทยาลัยที่เก่าแก่ที่สุดในสหรัฐอเมริกา ฉันคิดว่ามีเพียงฮาร์วาร์ดเท่านั้นที่แก่กว่านิดหน่อย บราวน์เป็นส่วนหนึ่งของสิ่งที่เรียกว่า
แม้ว่าบราวน์จะมีชื่อเสียงในสหรัฐอเมริกา แต่เขาก็ไม่เป็นที่รู้จักในต่างประเทศอย่างน่าประหลาดใจ อย่างที่คุณเห็น ตอนนี้ฉันกำลังทำทุกอย่างที่เป็นไปได้เพื่อแก้ไขสถานการณ์นี้
ความแตกต่างระหว่างการวิจัยในมหาวิทยาลัยและภายในองค์กร
Vitaly: โอเค คำถามต่อไปเกี่ยวกับอุปกรณ์ดิจิทัล คุณอยู่ที่นั่นในฐานะนักวิจัย อะไรคือความแตกต่างระหว่างการทำงานในแผนก R&D ของบริษัทขนาดใหญ่และการทำงานในมหาวิทยาลัย? ข้อดีและข้อเสียคืออะไร?
มอริซ: ฉันทำงานที่ Microsoft เป็นเวลายี่สิบปี และทำงานอย่างใกล้ชิดกับพนักงานของ Sun Microsystems, Oracle, Facebook และปัจจุบันคือ Algorand จากทั้งหมดนี้ ฉันอยากจะบอกว่าเป็นไปได้ที่จะทำการวิจัยชั้นหนึ่งทั้งในบริษัทและในมหาวิทยาลัย ความแตกต่างที่สำคัญคือในบริษัทที่คุณทำงานร่วมกับเพื่อนร่วมงาน หากจู่ๆ ฉันก็เกิดไอเดียสำหรับโปรเจ็กต์ที่ยังไม่มี ฉันจะต้องโน้มน้าวเพื่อนๆ ว่านี่เป็นความคิดที่ดี ถ้าฉันอยู่ที่ Brown ฉันจะบอกนักเรียนว่า: มาทำงานเรื่องต้านแรงโน้มถ่วงกันเถอะ! พวกเขาจะออกไปหาคนอื่นหรือทำโปรเจ็กต์ ใช่ ฉันจะต้องหาเงินทุน ฉันจะต้องเขียนใบสมัครขอรับทุน และอื่นๆ ไม่ว่าในกรณีใด ก็จะมีนักเรียนจำนวนมากเสมอ และคุณจะสามารถตัดสินใจเพียงฝ่ายเดียวได้ แต่ที่มหาวิทยาลัย คุณมักจะไม่ได้ทำงานกับคนในระดับเดียวกับคุณ ในโลกของการวิจัยทางอุตสาหกรรม คุณต้องโน้มน้าวทุกคนก่อนว่าโครงการของคุณคุ้มค่าที่จะทำ ฉันไม่สามารถสั่งอะไรให้ใครได้ และวิธีการทำงานทั้งสองวิธีนี้มีคุณค่า เพราะถ้าคุณกำลังทำงานบางอย่างที่บ้าบอจริงๆ และเพื่อนร่วมงานของคุณโน้มน้าวได้ยาก มันก็จะง่ายกว่าที่จะโน้มน้าวนักศึกษาระดับบัณฑิตศึกษา โดยเฉพาะอย่างยิ่งถ้าคุณจ่ายเงินให้พวกเขา หากคุณกำลังทำงานบางอย่างที่ต้องใช้ประสบการณ์มากและความเชี่ยวชาญเชิงลึก คุณต้องการเพื่อนร่วมงานที่สามารถพูดว่า "ไม่ มันบังเอิญว่าฉันเข้าใจในด้านนี้และความคิดของคุณแย่ มันจะไม่ทำงาน" ซึ่งมีประโยชน์มากในแง่ของการเสียเวลา นอกจากนี้ หากในห้องปฏิบัติการอุตสาหกรรม คุณใช้เวลาเขียนรายงานเป็นจำนวนมาก ดังนั้นในมหาวิทยาลัยคุณจะใช้เวลานี้ในการพยายามหาเงิน ถ้าอยากให้นักเรียนได้ไปที่ไหนสักแห่ง ฉันก็ต้องหาเงินไปที่ไหนสักแห่ง และยิ่งตำแหน่งในมหาวิทยาลัยสำคัญมากเท่าไหร่คุณก็ยิ่งมีเวลาหาเงินมากขึ้นเท่านั้น ตอนนี้คุณรู้แล้วว่าฉันทำงานเพื่ออะไร - ขอทานมืออาชีพ! เหมือนภิกษุรูปหนึ่งที่ถือจานเดินไปมา โดยทั่วไปแล้ว กิจกรรมทั้งสองนี้จะส่งเสริมซึ่งกันและกัน นั่นเป็นเหตุผลที่ฉันพยายามที่จะมีชีวิตอยู่และรักษาเท้าของฉันบนพื้นในทั้งสองโลก
Vitaly: ดูเหมือนว่าการโน้มน้าวใจบริษัทนั้นยากกว่าการโน้มน้าวนักวิทยาศาสตร์คนอื่นๆ
มอริซ: ยากขึ้น และอื่นๆ อีกมากมาย นอกจากนี้ ในด้านต่างๆ ก็มีความแตกต่างกัน: บางแห่งดำเนินการวิจัยเต็มรูปแบบ ในขณะที่บางแห่งมุ่งเน้นไปที่หัวข้อของตน ถ้าฉันไปที่ Microsoft หรือ Facebook แล้วพูดว่า: มาต่อต้านแรงโน้มถ่วงกันเถอะ พวกเขาแทบจะไม่ซาบซึ้งเลย แต่ถ้าฉันพูดสิ่งเดียวกันนี้กับนักศึกษาระดับบัณฑิตศึกษาของฉัน พวกเขาก็น่าจะได้งานทันที แม้ว่าตอนนี้ฉันจะมีปัญหาก็ตาม เพราะท้ายที่สุดแล้ว ฉันต้องหาเงินเพื่อสิ่งนี้ แต่ตราบเท่าที่คุณต้องการทำบางสิ่งบางอย่างที่สอดคล้องกับเป้าหมายของบริษัท บริษัทนั้นก็สามารถเป็นสถานที่ที่ดีในการค้นคว้าข้อมูลได้
ไฮดรา และ SPTDC
Vitaly: คำถามของฉันใกล้จะจบลงแล้ว เรามาพูดคุยกันเล็กน้อยเกี่ยวกับการเดินทางไปรัสเซียที่กำลังจะมาถึง
มอริซ: ใช่ ฉันรอคอยที่จะกลับไปเซนต์ปีเตอร์สเบิร์ก
Alexey: ฉันรู้สึกเป็นเกียรติที่มีคุณอยู่กับเราในปีนี้ นี่เป็นครั้งที่สองของคุณในเซนต์ปีเตอร์สเบิร์กใช่ไหม
มอริซ: คนที่สามแล้ว!
Alexey: ฉันเข้าใจ แต่
มอริซ: ที่โรงเรียน ฉันต้องการพูดคุยเกี่ยวกับพื้นฐานของบล็อคเชน และสิ่งที่คุณสามารถทำได้ ฉันอยากจะแสดงให้เห็นว่าบล็อคเชนนั้นคล้ายคลึงกับการเขียนโปรแกรมแบบมัลติเธรดที่เราคุ้นเคยมาก แต่มีความแตกต่างในตัวเอง และความแตกต่างเหล่านี้เป็นสิ่งสำคัญที่ต้องเข้าใจ หากคุณทำผิดพลาดในเว็บแอปพลิเคชันทั่วไป มันน่ารำคาญมาก หากคุณเขียนโค้ด buggy ในแอปพลิเคชันทางการเงิน จะมีคนขโมยเงินของคุณทั้งหมดอย่างแน่นอน สิ่งเหล่านี้เป็นระดับความรับผิดชอบและผลที่ตามมาที่แตกต่างกันโดยสิ้นเชิง ฉันจะพูดคุยเล็กน้อยเกี่ยวกับการพิสูจน์การทำงาน เกี่ยวกับสัญญาอัจฉริยะ เกี่ยวกับธุรกรรมระหว่างบล็อกเชนที่แตกต่างกัน
จะมีวิทยากรคนอื่นๆ ที่ทำงานอยู่ข้างๆ ฉันซึ่งมีเรื่องจะพูดเกี่ยวกับบล็อคเชนด้วย และเราตกลงที่จะประสานงานกันเพื่อให้เรื่องราวของพวกเราเข้ากันได้ดี แต่สำหรับรายงานทางวิศวกรรม ฉันอยากจะบอกคำอธิบายที่เข้าใจได้กว้าง ๆ ให้กับผู้ชมว่าทำไมคุณไม่ควรเชื่อทุกสิ่งที่คุณได้ยินเกี่ยวกับบล็อคเชน เหตุใดบล็อคเชนจึงเป็นสาขาที่ยอดเยี่ยม มันเข้ากันได้อย่างไรกับแนวคิดอื่น ๆ ที่เป็นที่รู้จัก และเหตุใดเราจึงควรพิจารณาอย่างกล้าหาญ สู่อนาคต
Alexey: นอกจากนี้ ฉันอยากจะบอกว่าสิ่งนี้จะไม่เกิดขึ้นในรูปแบบของการพบปะหรือกลุ่มผู้ใช้เหมือนเมื่อสองปีที่แล้ว เราตัดสินใจจัดการประชุมเล็กๆ ใกล้โรงเรียน เหตุผลก็คือหลังจากพูดคุยกับ Peter Kuznetsov เราก็พบว่าโรงเรียนจำกัดจำนวนคนเพียงร้อยหรืออาจจะ 120 คนเท่านั้น ในขณะเดียวกัน มีวิศวกรจำนวนมากที่ต้องการสื่อสารกับคุณ เข้าร่วมการนำเสนอ และสนใจในหัวข้อนี้โดยทั่วไป ด้วยเหตุนี้เราจึงได้สร้างการประชุมใหม่ขึ้น
มอริซ: เพราะจะมีวิทยากรเจ็ดคนเหรอ? และหัวของพวกเขาก็จะถูกตัดออก แล้วลำโพงใหม่ก็จะเข้ามาแทนที่?
Alexey: ความคิดที่ยอดเยี่ยมสำหรับการเพิ่มวิทยากรหน้าใหม่ แต่ที่จริงแล้วมีเรื่องราวอยู่ที่นี่ จำตำนานของ Odysseus ที่เขาต้องล่องเรือไปมา
ยังไงก็ตามเราหมดคำถามและเวลาแล้ว ขอขอบคุณเพื่อนๆ สำหรับการสัมภาษณ์ดีๆ แล้วพบกันที่ SPTDC School และ Hydra 2019!
คุณสามารถพูดคุยกับมอริซต่อได้ในการประชุม Hydra 2019 ซึ่งจะจัดขึ้นในวันที่ 11-12 กรกฎาคม 2019 ที่เซนต์ปีเตอร์สเบิร์ก เขาจะมาพร้อมรายงาน
“บล็อคเชนและอนาคตของการประมวลผลแบบกระจาย” . สามารถซื้อตั๋วได้บนเว็บไซต์อย่างเป็นทางการ .
ที่มา: will.com