“Trả lời thì dễ hơn là giữ im lặng” - một cuộc phỏng vấn tuyệt vời với cha đẻ của trí nhớ giao dịch, Maurice Herlihy

Maurice Herlihy - chủ sở hữu của hai Giải thưởng Dijkstra. Cái đầu tiên là dành cho công việc "Đồng bộ hóa không chờ đợi" (Đại học Brown) và lần thứ hai, gần đây hơn, - "Bộ nhớ giao dịch: Hỗ trợ kiến ​​trúc cho cấu trúc dữ liệu không khóa" (Đại học Công nghệ Virginia). Giải Dijkstra được trao cho công trình có ý nghĩa và ảnh hưởng rõ ràng trong ít nhất mười năm và Maurice rõ ràng là một trong những chuyên gia nổi tiếng nhất trong lĩnh vực này. Ông hiện đang làm giáo sư tại Đại học Brown và có rất nhiều thành tích dài cả đoạn văn. Anh ấy hiện đang nghiên cứu blockchain trong bối cảnh điện toán phân tán cổ điển.

Trước đây, Maurice đã đến Nga để tham dự SPTCC (băng video) và đã có một cuộc gặp gỡ tuyệt vời với cộng đồng nhà phát triển Java JUG.ru tại St. Petersburg (băng video).

Habrapost này là một cuộc phỏng vấn tuyệt vời với Maurice Herlihy. Nó thảo luận về các chủ đề sau:

  • Tương tác giữa học viện và ngành công nghiệp;
  • Quỹ nghiên cứu Blockchain;
  • Ý tưởng đột phá đến từ đâu? Ảnh hưởng của sự nổi tiếng;
  • Tiến sĩ dưới sự hướng dẫn của Barbara Liskov;
  • Thế giới đang chờ đợi đa lõi;
  • Một thế giới mới mang đến những vấn đề mới. NVM, NUMA và hack kiến ​​trúc;
  • Trình biên dịch so với bộ xử lý, RISC so với CISC, bộ nhớ dùng chung so với truyền tin nhắn;
  • Nghệ thuật viết mã đa luồng dễ vỡ;
  • Cách dạy học sinh viết mã đa luồng phức tạp;
  • Ấn bản mới của cuốn sách “Nghệ thuật lập trình đa bộ xử lý”;
  • Bộ nhớ giao dịch được phát minh như thế nào;   
  • Tại sao cần tiến hành nghiên cứu trong lĩnh vực điện toán phân tán;
  • Sự phát triển của các thuật toán đã dừng lại chưa và làm thế nào để tiếp tục;
  • Làm việc tại Đại học Brown;
  • Sự khác biệt giữa nghiên cứu ở trường đại học và trong một tập đoàn;
  • Hydra và SPTDC.

Cuộc phỏng vấn được thực hiện bởi:

Vitaly Aksenov — hiện là nghiên cứu sinh sau tiến sĩ tại IST Austria và là nhân viên Khoa Công nghệ Máy tính tại Đại học ITMO. Tiến hành nghiên cứu trong lĩnh vực lý thuyết và thực hành cấu trúc dữ liệu cạnh tranh. Trước khi làm việc tại IST, ông nhận bằng Tiến sĩ tại Đại học Paris Diderot và Đại học ITMO dưới sự hướng dẫn của Giáo sư Peter Kuznetsov.

Alexey Fedorov - Nhà sản xuất tại JUG Ru Group, một công ty của Nga chuyên tổ chức hội nghị cho các nhà phát triển. Alexey đã tham gia chuẩn bị cho hơn 50 hội nghị và lý lịch của anh ấy bao gồm mọi thứ từ vị trí kỹ sư phát triển tại Oracle (JCK, Nhóm nền tảng Java) đến vị trí nhà phát triển tại Odnoklassniki.

Vladimir Sitnikov - Kỹ sư tại Netcracker. Mười năm làm việc về hiệu suất và khả năng mở rộng của NetCracker OS, phần mềm được các nhà khai thác viễn thông sử dụng để tự động hóa các quy trình quản lý mạng và thiết bị mạng. Quan tâm đến các vấn đề về hiệu suất của Cơ sở dữ liệu Java và Oracle. Tác giả của hơn chục cải tiến hiệu suất trong trình điều khiển JDBC PostgreSQL chính thức.

Tương tác giữa học viện và ngành công nghiệp

Alexey: Maurice, bạn đã làm việc trong môi trường học thuật trong một thời gian rất dài và câu hỏi đầu tiên là sự tương tác giữa lĩnh vực học thuật và công nghiệp. Bạn có thể nói về sự tương tác giữa họ đã thay đổi gần đây như thế nào không? Điều gì đã xảy ra 20-30 năm trước và điều gì đang xảy ra bây giờ? 

Maurice: Tôi luôn cố gắng hợp tác chặt chẽ với các công ty thương mại vì họ có những vấn đề thú vị. Theo quy định, họ không quan tâm lắm đến việc công bố kết quả hoặc giải thích chi tiết các vấn đề của họ cho cộng đồng thế giới. Họ chỉ quan tâm đến việc giải quyết những vấn đề này. Tôi đã làm việc cho những công ty như vậy một thời gian. Tôi đã dành XNUMX năm làm việc toàn thời gian trong phòng thí nghiệm nghiên cứu của Digital Equipment Corporation, nơi từng là một công ty máy tính lớn. Tôi làm việc một ngày một tuần tại Sun, tại Microsoft, tại Oracle và làm một số công việc nhỏ tại Facebook. Bây giờ tôi sắp nghỉ phép (giáo sư tại một trường đại học ở Mỹ được phép nghỉ phép một năm khoảng sáu năm một lần) và làm việc ở Algorand, đây là một công ty tiền điện tử ở Boston. Làm việc chặt chẽ với các công ty luôn là một niềm vui vì đó là cách bạn tìm hiểu về những điều mới mẻ và thú vị. Bạn thậm chí có thể là người đầu tiên hoặc người thứ hai xuất bản một bài viết về một chủ đề đã chọn, thay vì nỗ lực cải thiện dần các giải pháp cho các vấn đề mà mọi người khác đang giải quyết.

Alexey: Bạn có thể cho chúng tôi biết chi tiết hơn điều này xảy ra như thế nào không?

Maurice: Tất nhiên. Bạn biết đấy, khi tôi còn làm việc ở Digital Equipment Corporation, tôi và Elliot Moss, chúng tôi đã phát minh ra bộ nhớ giao dịch. Đó là một giai đoạn rất hiệu quả khi mọi người bắt đầu quan tâm đến công nghệ thông tin. Tính song song, bao gồm, mặc dù các hệ thống đa lõi vẫn chưa tồn tại. Trong những ngày ở Sun và Oracle, tôi đã làm việc rất nhiều về cấu trúc dữ liệu song song. Tại Facebook, tôi đã làm việc trong dự án blockchain của họ. Tôi không thể nói về dự án này nhưng tôi hy vọng nó sẽ sớm được công khai. Năm tới, tại Algorand, tôi sẽ làm việc trong một nhóm nghiên cứu về hợp đồng thông minh.

Alexey: Blockchain đã trở thành một chủ đề rất phổ biến trong vài năm gần đây. Điều này có giúp ích cho nghiên cứu của bạn không? Có lẽ nó sẽ giúp việc nhận được tài trợ hoặc cung cấp quyền truy cập vào các nguồn lực từ các công ty hoạt động trong ngành trở nên dễ dàng hơn?

Maurice: Tôi đã nhận được một khoản trợ cấp nhỏ từ Ethereum Foundation. Sự phổ biến của blockchain rất hữu ích trong việc truyền cảm hứng cho sinh viên làm việc trong lĩnh vực này. Họ rất quan tâm đến nó và hào hứng tham gia, nhưng đôi khi họ không nhận ra rằng nghiên cứu có vẻ thú vị bên ngoài hóa ra lại đòi hỏi phải làm việc rất chăm chỉ. Tuy nhiên, tôi thực sự hào hứng khi sử dụng tất cả bí ẩn xung quanh blockchain để giúp thu hút sinh viên. 

Nhưng đó không phải là tất cả. Tôi nằm trong ban cố vấn của một số công ty khởi nghiệp blockchain. Một số người trong số họ có thể thành công, một số có thể không, nhưng việc xem ý tưởng của họ, nghiên cứu chúng và tư vấn cho mọi người luôn là điều rất thú vị. Điều thú vị nhất là khi bạn cảnh báo mọi người đừng làm điều gì đó. Nhiều thứ ban đầu có vẻ là một ý tưởng hay, nhưng thực sự có phải vậy không?

Quỹ nghiên cứu Blockchain

Vitaly: Một số người nghĩ rằng tương lai nằm ở blockchain và các thuật toán của nó. Và những người khác nói rằng đó chỉ là một bong bóng khác. Bạn có thể chia sẻ ý kiến ​​của mình về vấn đề này?

Maurice: Rất nhiều điều đang diễn ra trong thế giới blockchain là sai, một số chỉ là lừa đảo, rất nhiều điều được đánh giá quá cao. Tuy nhiên, tôi nghĩ những nghiên cứu này có cơ sở khoa học vững chắc. Việc thế giới blockchain đầy rẫy những khác biệt về hệ tư tưởng cho thấy mức độ phấn khích và cống hiến. Mặt khác, điều này không đặc biệt có lợi cho nghiên cứu khoa học. Bây giờ, nếu bạn xuất bản một bài báo nói về những thiếu sót của một thuật toán cụ thể, phản ứng thu được không phải lúc nào cũng hoàn toàn khoa học. Mọi người thường vứt bỏ cảm xúc của mình. Tôi nghĩ rằng sự phấn khích này trong lĩnh vực này có vẻ hấp dẫn đối với một số người, nhưng suy cho cùng, có những vấn đề khoa học và kỹ thuật thực sự cần được giải quyết. Có rất nhiều Khoa học Máy tính ở đây.

Vitaly: Vậy bạn đang cố gắng đặt nền tảng cho nghiên cứu blockchain phải không?

Maurice: Tôi đang cố gắng đặt nền móng cho một môn học vững chắc, khoa học và toán học. Và một phần của vấn đề là đôi khi bạn phải phản đối một số quan điểm quá khắt khe của người khác và phớt lờ họ. Đôi khi mọi người hỏi tại sao tôi lại làm việc ở một khu vực chỉ có bọn khủng bố và buôn bán ma túy quan tâm. Phản ứng như vậy cũng vô nghĩa như hành vi của những người đi theo lặp lại lời nói của bạn một cách mù quáng. Tôi nghĩ sự thật nằm ở đâu đó ở giữa. Blockchain sẽ có tác động sâu sắc đến xã hội và nền kinh tế toàn cầu. Nhưng điều này có lẽ sẽ không xảy ra nhờ công nghệ hiện đại. Các công nghệ hiện đại sẽ phát triển và thứ được gọi là blockchain trong tương lai sẽ trở nên rất quan trọng. Nó thậm chí có thể trông không giống các blockchain hiện đại, đó là một câu hỏi mở.

Nếu mọi người phát minh ra công nghệ mới, họ sẽ tiếp tục gọi nó là blockchain. Ý tôi là, giống như Fortran ngày nay không liên quan gì đến ngôn ngữ Fortran từ những năm 1960, nhưng mọi người vẫn gọi nó là Fortran. Tương tự với UNIX. Cái được gọi là “blockchain” vẫn sẽ tạo nên cuộc cách mạng của nó. Nhưng tôi nghi ngờ blockchain mới này sẽ giống như những gì mọi người thích sử dụng ngày nay.

Ý tưởng đột phá đến từ đâu? Tác động của sự nổi tiếng

Alexey: Sự phổ biến của blockchain có dẫn đến kết quả mới theo quan điểm khoa học không? Nhiều tương tác hơn, nhiều sinh viên hơn, nhiều công ty hơn trong khu vực. Đã có kết quả nào từ sự gia tăng mức độ phổ biến này chưa?

Maurice: Tôi bắt đầu quan tâm đến vấn đề này khi có người đưa cho tôi tờ rơi chính thức của một công ty vừa huy động được khá nhiều tiền. Nó viết về nhiệm vụ của các tướng Byzantine, mà tôi đã quá quen thuộc. Những gì được viết trong tờ rơi rõ ràng là sai về mặt kỹ thuật. Những người viết tất cả những điều này không thực sự hiểu mô hình đằng sau vấn đề... vậy mà công ty này đã huy động được rất nhiều tiền. Sau đó, công ty đã lặng lẽ thay thế tờ rơi này bằng một phiên bản chính xác hơn nhiều - và tôi sẽ không nói tên của công ty này là gì. Họ vẫn ở đây và làm rất tốt. Sự việc này đã thuyết phục tôi rằng, trước hết, blockchain chỉ đơn giản là một dạng điện toán phân tán. Thứ hai, ngưỡng đầu vào (ít nhất là vào thời điểm đó, bốn năm trước) khá thấp. Những người làm việc trong lĩnh vực này rất năng động và thông minh nhưng lại không đọc các bài báo khoa học. Họ đã cố gắng phát minh lại những điều đã biết và đã làm sai. Hôm nay sự kịch tính đã giảm bớt.

Alexey: Điều này rất thú vị, vì vài năm trước chúng tôi có một xu hướng khác. Nó hơi giống với phát triển front-end, khi các nhà phát triển front-end dựa trên trình duyệt phát minh lại toàn bộ công nghệ đã phổ biến ở back-end: xây dựng hệ thống, tích hợp liên tục, những thứ tương tự. 

Maurice: Tôi đồng ý. Nhưng điều này không có gì đáng ngạc nhiên, bởi vì những ý tưởng mang tính đột phá thực sự luôn đến từ bên ngoài cộng đồng lâu đời. Các nhà nghiên cứu có uy tín, đặc biệt là các học giả có uy tín, khó có thể làm được điều gì thực sự mang tính đột phá. Thật dễ dàng để viết một bài báo cho hội nghị tiếp theo về cách bạn đã cải thiện một chút kết quả công việc trước đây của mình. Đi đến một hội nghị, gặp gỡ bạn bè, nói về những điều tương tự. Và những người nảy ra ý tưởng đột phá hầu như luôn đến từ bên ngoài. Họ không biết các quy tắc, họ không biết ngôn ngữ, tuy nhiên... Nếu bạn đang ở trong một cộng đồng lâu đời, tôi khuyên bạn nên chú ý đến những điều mới, những điều không phù hợp với bức tranh tổng thể. Theo một nghĩa nào đó, có thể thực hiện nỗ lực để kết hợp những phát triển bên ngoài, linh hoạt hơn với các phương pháp mà chúng ta đã hiểu. Bước đầu tiên, hãy cố gắng thiết lập cơ sở khoa học, sau đó thay đổi nó để có thể áp dụng cho những ý tưởng đột phá mới. Tôi nghĩ rằng blockchain thật tuyệt vời vì đây là một ý tưởng mới mẻ, mang tính đột phá.

Alexey: Tại sao bạn nghĩ điều này xảy ra? Bởi vì những người “bên ngoài” không có bất kỳ rào cản cụ thể nào vốn có trong cộng đồng?

Maurice: Có một mô hình đang diễn ra ở đây. Nếu bạn đọc lịch sử của những người theo trường phái ấn tượng trong hội họa và nghệ thuật nói chung, thì đã có lúc những họa sĩ nổi tiếng bác bỏ trường phái ấn tượng. Họ nói điều đó thật trẻ con. Một thế hệ sau, loại hình nghệ thuật bị từ chối trước đây này đã trở thành tiêu chuẩn. Những gì tôi thấy trong lĩnh vực của mình: những nhà phát minh ra blockchain không quan tâm đến quyền lực, đến việc tăng số lượng ấn phẩm và chỉ số trích dẫn, họ chỉ muốn làm điều gì đó tốt đẹp. Và thế là họ ngồi xuống và bắt đầu làm việc đó. Họ thiếu chiều sâu kỹ thuật nhất định, nhưng điều đó có thể khắc phục được. Việc đưa ra những ý tưởng sáng tạo mới khó hơn nhiều so với việc sửa chữa và củng cố những ý tưởng chưa trưởng thành. Nhờ những nhà phát minh này, giờ tôi có việc phải làm!

Alexey: Điều này tương tự như sự khác biệt giữa các công ty khởi nghiệp và các dự án truyền thống. Chúng ta thừa hưởng nhiều hạn chế về tư duy, rào cản, yêu cầu đặc biệt, v.v.

Maurice: Một sự tương tự tốt là tính toán phân tán. Hãy nghĩ về blockchain như thể nó là một công ty khởi nghiệp và điện toán phân tán như một công ty lớn đã được thành lập. Điện toán phân tán đang trong quá trình được mua lại và hợp nhất với blockchain.

Tiến sĩ dưới sự hướng dẫn của Barbara Liskov

Vitaly: Chúng tôi vẫn còn nhiều câu hỏi! Chúng tôi đang xem xét lý lịch của bạn và phát hiện ra một sự thật thú vị về bằng tiến sĩ của bạn. Vâng, điều này đã lâu rồi, nhưng có vẻ như nó là một chủ đề quan trọng. Bạn đã nhận bằng Tiến sĩ dưới sự hướng dẫn của chính bạn Barbara Liskov! Barbara rất nổi tiếng trong cộng đồng ngôn ngữ lập trình và là một người rất nổi tiếng nói chung. Điều hợp lý là nghiên cứu của bạn thuộc lĩnh vực ngôn ngữ lập trình. Bạn đã chuyển sang tính toán song song như thế nào? Tại sao bạn quyết định thay đổi chủ đề?

Maurice: Vào thời điểm đó, Barbara và nhóm của cô ấy mới chỉ đang nghiên cứu về điện toán phân tán, đây là một ý tưởng rất mới. Cũng có người cho rằng điện toán phân tán là vô nghĩa và các máy tính giao tiếp với nhau là vô nghĩa. Một trong những vấn đề được giải quyết trong điện toán phân tán giúp phân biệt nó với điện toán tập trung là khả năng chịu lỗi. Sau nhiều nghiên cứu, chúng tôi quyết định rằng ngôn ngữ lập trình máy tính phân tán cần phải có thứ gì đó giống như giao dịch nguyên tử vì bạn không bao giờ có thể chắc chắn rằng cuộc gọi từ xa sẽ thành công. Khi bạn có giao dịch, vấn đề quản lý đồng thời sẽ phát sinh. Sau đó, có rất nhiều công việc để có được cấu trúc dữ liệu giao dịch song song cao. Sau đó, khi tôi tốt nghiệp, tôi đã đi đến Carnegie Mellon và bắt đầu tìm kiếm một chủ đề để làm việc. Tôi chợt nhận ra rằng điện toán đã chuyển từ máy tính cá nhân sang mạng máy tính. Bộ đa xử lý sẽ là sự tiếp nối tự nhiên của quá trình phát triển - từ "đa lõi" vẫn chưa tồn tại. Tôi nghĩ: tương đương với các giao dịch nguyên tử đối với một hệ thống đa lõi là gì? Chắc chắn không phải là những giao dịch thường xuyên vì chúng quá lớn và nặng nề. Và đó là cách tôi nảy ra ý tưởng tính tuyến tính hóa và đó là cách tôi nghĩ ra toàn bộ sự đồng bộ hóa không cần chờ đợi. Đây là một nỗ lực nhằm trả lời câu hỏi đâu là điểm tương tự của các giao dịch nguyên tử đối với một hệ thống đa bộ xử lý có bộ nhớ dùng chung. Thoạt nhìn, tác phẩm này có thể trông hoàn toàn khác nhưng thực tế nó là sự tiếp nối của cùng một chủ đề.

Thế giới đang chờ đợi đa lõi

Vitaly: Bạn có đề cập rằng thời đó có rất ít máy tính đa lõi phải không?

Maurice: Họ không có ở đó. Có một số cái gọi là bộ đa xử lý đối xứng, về cơ bản được kết nối với cùng một bus. Điều này không hiệu quả lắm vì mỗi khi một công ty mới tạo ra thứ gì đó tương tự, Intel sẽ tung ra một bộ xử lý duy nhất vượt trội hơn bộ đa xử lý.

Alexey: Điều này không có nghĩa là vào thời cổ đại đó, nó thiên về nghiên cứu lý thuyết hơn sao?

Maurice: Đó không phải là một nghiên cứu lý thuyết mà là một nghiên cứu mang tính suy đoán. Tất cả điều này không phải là làm việc với nhiều định lý; đúng hơn, chúng tôi đưa ra các giả thuyết về một kiến ​​trúc chưa tồn tại vào thời điểm đó. Đây chính là mục đích nghiên cứu! Không công ty nào có thể làm được điều tương tự; tất cả đều là chuyện đến từ tương lai xa. Trên thực tế, điều này đã xảy ra cho đến năm 2004, khi các bộ xử lý đa lõi thực sự xuất hiện. Vì bộ xử lý quá nóng nên bạn có thể làm cho bộ xử lý nhỏ hơn nữa nhưng bạn không thể làm cho nó nhanh hơn. Bởi vì điều này, đã có sự chuyển đổi sang kiến ​​trúc đa lõi. Và điều đó có nghĩa là đột nhiên tất cả các khái niệm mà chúng tôi đã phát triển trong quá khứ đều có tác dụng.

Alexey: Tại sao bạn nghĩ bộ xử lý đa lõi chỉ xuất hiện vào những năm XNUMX? Vậy tại sao lại muộn như vậy?

Maurice: Điều này là do hạn chế về phần cứng. Intel, AMD và các hãng khác rất giỏi trong việc tăng tốc độ xử lý. Khi đến một thời điểm nào đó, bộ xử lý trở nên đủ nhỏ đến mức chúng không thể tăng tốc độ xung nhịp được nữa vì bộ xử lý sẽ bắt đầu cạn kiệt. Bạn có thể làm cho chúng nhỏ hơn, nhưng không nhanh hơn. Sức mạnh của họ là gì - thay vì một bộ xử lý rất nhỏ, họ có thể lắp tám, mười sáu hoặc ba mươi hai bộ xử lý vào cùng một khối lượng của hộp, nơi mà trước đây chỉ có một bộ xử lý có thể lắp vừa. Bây giờ bạn có khả năng liên lạc đa luồng và nhanh chóng giữa chúng vì chúng chia sẻ bộ đệm. Nhưng bạn không thể buộc chúng chạy nhanh hơn - có một giới hạn tốc độ rất cụ thể. Họ tiếp tục cải thiện từng chút một, nhưng không còn nhiều nữa. Các định luật vật lý đã cản trở sự cải tiến.

Một thế giới mới mang đến những vấn đề mới. NUMA, NVM và hack kiến ​​trúc

Alexey: Nghe có vẻ rất hợp lý. Với bộ xử lý đa lõi mới xuất hiện những vấn đề mới. Bạn và đồng nghiệp của bạn có mong đợi những vấn đề này không? Có lẽ bạn đã nghiên cứu chúng trước? Trong các nghiên cứu lý thuyết, thường không dễ để dự đoán những điều như vậy. Khi có vấn đề xảy ra, chúng đáp ứng được mong đợi của bạn và đồng nghiệp như thế nào? Hay chúng hoàn toàn mới, bạn và đồng nghiệp phải mất nhiều thời gian để giải quyết vấn đề khi chúng xuất hiện?

Vitaly: Tôi sẽ bổ sung thêm câu hỏi của Alexey: bạn có dự đoán chính xác kiến ​​trúc bộ xử lý khi đang nghiên cứu lý thuyết không?

Maurice: Không phải 100%. Nhưng tôi nghĩ các đồng nghiệp của tôi và tôi đã làm rất tốt việc dự đoán đa lõi với bộ nhớ dùng chung. Tôi nghĩ chúng tôi đã dự đoán chính xác những khó khăn trong việc phát triển cấu trúc dữ liệu song song hoạt động không có khóa. Cấu trúc dữ liệu như vậy rất quan trọng đối với nhiều ứng dụng, mặc dù không phải tất cả, nhưng thường thì thứ bạn thực sự cần là cấu trúc dữ liệu không khóa. Khi chúng tôi phát minh ra chúng, nhiều người cho rằng điều này thật vô nghĩa, rằng mọi thứ đều hoạt động tốt với ổ khóa. Chúng tôi đã dự đoán khá rõ rằng sẽ có giải pháp làm sẵn cho nhiều vấn đề về lập trình và cấu trúc dữ liệu. Ngoài ra còn có những vấn đề phức tạp hơn như NUMA - truy cập không đồng đều vào bộ nhớ. Trên thực tế, chúng thậm chí còn không được xem xét cho đến khi bộ xử lý đa lõi được phát minh vì chúng quá cụ thể. Cộng đồng nghiên cứu đang nghiên cứu những câu hỏi có thể dự đoán được. Một số vấn đề về phần cứng liên quan đến các kiến ​​trúc cụ thể đã phải chờ đợi - trên thực tế là sự xuất hiện của những kiến ​​trúc này. Ví dụ: không ai thực sự làm việc trên các cấu trúc dữ liệu dành riêng cho GPU vì lúc đó GPU chưa tồn tại. Mặc dù đã có rất nhiều công việc được thực hiện SIMD, các thuật toán này đã sẵn sàng để sử dụng ngay khi có phần cứng phù hợp. Tuy nhiên, không thể lường trước được mọi chuyện.

Alexey: Nếu tôi hiểu chính xác thì NUMA là một dạng thỏa hiệp giữa chi phí, hiệu suất và một số thứ khác. Bạn có biết tại sao NUMA lại xuất hiện muộn như vậy không?

Maurice: Tôi nghĩ rằng NUMA tồn tại là do các vấn đề với phần cứng được sử dụng để tạo ra bộ nhớ: các thành phần càng ở xa thì việc truy cập chúng càng chậm. Mặt khác, giá trị thứ hai của sự trừu tượng này là tính đồng nhất của bộ nhớ. Vì vậy, một trong những đặc điểm của tính toán song song là tất cả các khái niệm trừu tượng đều bị phá vỡ một chút. Nếu quyền truy cập hoàn toàn đồng nhất thì tất cả bộ nhớ sẽ có khoảng cách bằng nhau, nhưng điều này là không thể về mặt kinh tế và thậm chí có thể là về mặt vật lý. Vì vậy xung đột này phát sinh. Nếu bạn viết chương trình của mình như thể bộ nhớ là đồng nhất thì rất có thể chương trình đó sẽ đúng. Theo nghĩa là nó sẽ không đưa ra câu trả lời sai. Nhưng màn trình diễn của cô ấy cũng sẽ không thu hút được những ngôi sao trên trời. Tương tự, nếu bạn viết ổ khóa quay Nếu không hiểu hệ thống phân cấp bộ đệm, việc chặn sẽ chính xác, nhưng bạn có thể quên đi hiệu suất. Theo một nghĩa nào đó, bạn phải viết các chương trình dựa trên một sự trừu tượng rất đơn giản, nhưng bạn phải đánh lừa những người đã đưa ra cho bạn sự trừu tượng đó: bạn phải biết rằng bên dưới sự trừu tượng đó có một hệ thống phân cấp nào đó của bộ nhớ, rằng có một chiếc xe buýt giữa bạn và ký ức này, v.v. Vì vậy, có một số xung đột giữa những khái niệm trừu tượng hữu ích riêng lẻ, dẫn chúng ta đến những vấn đề rất cụ thể và thực dụng.

Vitaly: Còn tương lai thì sao? Bạn có thể dự đoán bộ vi xử lý sẽ phát triển tiếp theo như thế nào không? Có ý kiến ​​cho rằng một trong những câu trả lời là bộ nhớ giao dịch. Bạn có thể có một cái gì đó khác trong kho.

Maurice: Có một số thách thức lớn ở phía trước. Một là trí nhớ mạch lạc là một sự trừu tượng tuyệt vời, nhưng nó bắt đầu bị phá vỡ trong những trường hợp đặc biệt. Vì vậy, ví dụ, NUMA là một ví dụ sống động về điều gì đó mà bạn có thể tiếp tục giả vờ rằng bộ nhớ thống nhất tồn tại. Thực ra là không, năng suất sẽ khiến bạn phải khóc. Đến một lúc nào đó, các kiến ​​trúc sư sẽ phải từ bỏ ý tưởng về kiến ​​trúc bộ nhớ duy nhất, bạn không thể giả vờ mãi được. Sẽ cần những mô hình lập trình mới đủ dễ sử dụng và đủ mạnh để làm cho phần cứng cơ bản hoạt động hiệu quả. Đây là một sự thỏa hiệp rất khó khăn, bởi vì nếu bạn cho các lập trình viên thấy kiến ​​trúc thực sự được sử dụng trong phần cứng, họ sẽ phát điên. Nó quá phức tạp và không thể mang theo được. Nếu bạn trình bày một giao diện quá đơn giản thì hiệu suất sẽ kém. Do đó, sẽ cần phải thực hiện nhiều sự đánh đổi rất khó khăn để cung cấp các mô hình lập trình hữu ích áp dụng cho các bộ xử lý đa lõi thực sự lớn. Tôi không chắc có ai ngoài chuyên gia có khả năng lập trình trên máy tính 2000 lõi hay không. Và trừ khi bạn đang làm công việc tính toán hoặc mật mã rất chuyên môn hoặc khoa học hoặc tương tự - vẫn chưa rõ ràng về cách thực hiện chính xác. 

Một lĩnh vực tương tự khác là kiến ​​trúc chuyên biệt. Bộ tăng tốc đồ họa đã xuất hiện từ lâu nhưng chúng đã trở thành một ví dụ điển hình về cách bạn có thể sử dụng một loại máy tính chuyên dụng và chạy nó trên một con chip chuyên dụng. Điều này bổ sung thêm những thách thức riêng: cách bạn giao tiếp với một thiết bị như vậy, cách bạn lập trình nó. Gần đây tôi đang giải quyết các vấn đề trong khu vực máy tính bộ nhớ gần. Bạn lấy một bộ xử lý nhỏ và dán nó vào một khối bộ nhớ lớn để bộ nhớ chạy ở tốc độ bộ đệm L1 rồi giao tiếp với một thiết bị như TPU – bộ xử lý đang bận tải các tác vụ mới vào lõi bộ nhớ của bạn. Thiết kế cấu trúc dữ liệu và giao thức truyền thông cho loại điều này là một ví dụ thú vị khác. Vì vậy, bộ xử lý và phần cứng tùy chỉnh sẽ tiếp tục được cải thiện trong một thời gian nữa.

Alexey: Thế còn bộ nhớ bất biến (bộ nhớ không bay hơi)?

Maurice: Ồ, đó lại là một ví dụ tuyệt vời khác! NVM sẽ thay đổi đáng kể cách chúng ta nhìn nhận những thứ như cấu trúc dữ liệu. Theo một nghĩa nào đó, bộ nhớ bất biến hứa hẹn sẽ thực sự tăng tốc mọi thứ. Nhưng nó sẽ không làm cho cuộc sống dễ dàng hơn chút nào vì hầu hết các bộ xử lý, bộ nhớ đệm và thanh ghi vẫn không ổn định. Khi bạn khởi động sau một vụ va chạm, trạng thái và trạng thái bộ nhớ của bạn sẽ không hoàn toàn giống như trước khi xảy ra va chạm. Tôi rất biết ơn những người làm việc trên NVM - sẽ có rất nhiều điều mà các nhà nghiên cứu phải làm trong một thời gian dài để cố gắng tìm ra các điều kiện đúng đắn. Tính toán là chính xác nếu chúng có thể sống sót sau một sự cố trong đó nội dung của bộ đệm và thanh ghi bị mất nhưng bộ nhớ chính vẫn còn nguyên.

Trình biên dịch so với bộ xử lý, RISC so với CISC, bộ nhớ dùng chung so với truyền tin nhắn

Vladimir: Bạn nghĩ gì về tình thế tiến thoái lưỡng nan “trình biên dịch và bộ xử lý” từ quan điểm tập lệnh? Hãy để tôi giải thích cho những người chưa biết: nếu chúng ta đi đến bộ nhớ bị lệch hoặc thứ gì đó tương tự, chúng ta có thể sử dụng một bộ lệnh rất đơn giản và yêu cầu trình biên dịch tạo mã phức tạp có thể tận dụng những lợi thế mới. Hoặc chúng ta có thể làm theo cách khác: thực hiện các lệnh phức tạp và yêu cầu bộ xử lý sắp xếp lại các lệnh đó và thực hiện các thao tác khác với chúng. Bạn nghĩ gì về nó?

Maurice: Tôi thực sự không có câu trả lời cho câu hỏi đó. Cuộc tranh luận này đã diễn ra trong bốn thập kỷ. Đã có lúc giữa viết tắt một tập lệnh và phức tạp các cuộc nội chiến được tiến hành bằng một loạt mệnh lệnh. Trong một thời gian, người RISC đã thắng, nhưng sau đó Intel đã xây dựng lại động cơ của họ để một bộ hướng dẫn rút gọn được sử dụng nội bộ và toàn bộ bộ lệnh được xuất ra bên ngoài. Đây có lẽ là chủ đề mà mỗi thế hệ mới phải tự tìm ra những thỏa hiệp và đưa ra quyết định cho riêng mình. Rất khó để dự đoán điều nào trong số này sẽ tốt hơn. Vì vậy, bất kỳ dự đoán nào tôi đưa ra sẽ đúng trong một thời gian nhất định, sau đó lại sai trong một thời gian, rồi lại đúng.

Alexey: Mức độ phổ biến trong ngành là một số ý tưởng giành chiến thắng trong vài thập kỷ và thất bại trong thời gian tiếp theo? Có ví dụ nào khác về những thay đổi định kỳ như vậy không?

Maurice: Về chủ đề điện toán phân tán, có những người tin vào bộ nhớ chia sẻ và những người tin vào nhắn tin. Ban đầu, trong điện toán phân tán, tính toán song song có nghĩa là truyền thông điệp. Sau đó có người phát hiện ra rằng việc lập trình với bộ nhớ dùng chung dễ dàng hơn nhiều. Phía đối diện cho rằng bộ nhớ dùng chung quá phức tạp vì nó yêu cầu khóa và những thứ tương tự, vì vậy cần chuyển sang các ngôn ngữ chỉ tồn tại không có gì ngoài việc truyền tin nhắn. Ai đó đã xem xét kết quả của việc này và nói, “ồ, việc triển khai nhắn tin này trông rất giống bộ nhớ dùng chung, bởi vì bạn tạo ra rất nhiều mô-đun nhỏ này, chúng gửi tin nhắn cho nhau và tất cả chúng đều khóa liên động“Hãy tạo cơ sở dữ liệu bộ nhớ dùng chung tốt hơn!” Tất cả những điều này được lặp đi lặp lại nhiều lần và không thể nói rằng một trong hai bên chắc chắn đúng. Một bên sẽ luôn chiếm ưu thế bởi vì ngay khi một trong số họ gần như giành chiến thắng, mọi người hết lần này đến lần khác phát minh ra cách để cải thiện bên kia.

Nghệ thuật viết mã đa luồng dễ vỡ

Alexey: Điều này rất thú vị. Ví dụ, khi chúng ta viết mã, bất kể ngôn ngữ lập trình nào, chúng ta thường phải tạo ra những phần trừu tượng như các ô có thể đọc và viết. Nhưng trên thực tế, ở mức độ vật lý nào đó, điều này có thể giống như gửi tin nhắn qua bus phần cứng giữa các máy tính khác nhau và các thiết bị khác. Hóa ra công việc đang diễn ra ở cả hai mức độ trừu tượng cùng một lúc.

Maurice: Hoàn toàn đúng khi nói rằng bộ nhớ dùng chung được xây dựng dựa trên việc truyền tải thông điệp - bus, cache, v.v. Nhưng thật khó để viết chương trình bằng cách truyền thông điệp, vì vậy phần cứng cố tình nói dối, giả vờ rằng bạn có một loại bộ nhớ thống nhất nào đó. Điều này sẽ giúp bạn dễ dàng viết các chương trình đơn giản, chính xác hơn trước khi hiệu suất bắt đầu giảm sút. Sau đó, bạn sẽ nói: có vẻ như đã đến lúc kết bạn với bộ đệm. Và sau đó bạn bắt đầu lo lắng về vị trí của bộ nhớ đệm, và từ đó nó sẽ diễn ra. Theo một nghĩa nào đó, bạn đang phá vỡ sự trừu tượng: bạn biết đó không chỉ là bộ nhớ phẳng, đồng nhất và bạn sẽ sử dụng kiến ​​thức đó để viết các chương trình thân thiện với bộ đệm. Đây là những gì bạn sẽ phải làm trong những vấn đề thực sự. Xung đột giữa sự trừu tượng ngọt ngào, đơn giản, tốt đẹp mà bạn được cung cấp và việc triển khai phần cứng cơ bản cực kỳ phức tạp là nơi mọi người sẽ tự thỏa hiệp. Tôi có một cuốn sách về bộ đa xử lý và đồng bộ hóa, và có lúc tôi định viết một chương về cấu trúc dữ liệu trong java.util.concurrent. Nếu bạn nhìn vào chúng, những thứ như danh sách có thiếu sót Đây là những tác phẩm nghệ thuật tuyệt vời. (Lưu ý của người biên tập: Những người quen thuộc với ngôn ngữ Java ít nhất nên xem cách triển khai Đồng thờiSkipListMap, bạn có thể nhìn vào các liên kết tại API и mã nguồn). Nhưng theo quan điểm của tôi, sẽ là vô trách nhiệm khi cho học sinh xem chúng, bởi vì cấu trúc dữ liệu như vậy giống như một anh chàng trong rạp xiếc đang chạy trên dây qua chuồng gấu. Nếu bạn thay đổi dù chỉ một chi tiết nhỏ, toàn bộ cấu trúc sẽ sụp đổ. Mã này rất nhanh và thanh lịch chỉ vì nó được viết hoàn hảo, nhưng chỉ một thay đổi nhỏ nhất cũng sẽ dẫn đến thất bại hoàn toàn. Nếu tôi đưa mã này làm ví dụ cho học sinh, họ sẽ ngay lập tức nói: Tôi cũng có thể làm được điều đó! Và rồi một chiếc máy bay nào đó sẽ gặp sự cố hoặc một lò phản ứng hạt nhân sẽ phát nổ, và tôi sẽ có tội khi cung cấp cho họ quá nhiều thông tin không đúng lúc.

Alexey: Khi tôi còn nhỏ, nhiều lần tôi đã cố gắng nghiên cứu mã nguồn của Doug Lee, chẳng hạn, java.util.concurrent, bởi vì nó là nguồn mở nên rất dễ tìm và cố gắng hiểu những gì đang diễn ra ở đó. Mọi chuyện diễn ra không được tốt lắm: thông thường, hoàn toàn không rõ tại sao Doug lại quyết định làm điều gì đó theo cách này trong khi những người khác lại làm theo cách khác. Làm thế nào để bạn giải thích những điều này cho học sinh của bạn? Chẳng hạn, có cách nào chính xác cụ thể để mô tả các chi tiết cụ thể của một thuật toán khó không? Làm thế nào để bạn làm điều này?

Maurice: Các giáo viên dạy vẽ có một câu nói sáo rỗng mà họ nhớ đầu tiên: nếu bạn muốn vẽ như Picasso, trước tiên bạn cần học cách vẽ những bức tranh thực tế đơn giản và chỉ khi bạn biết các quy tắc, bạn mới có thể bắt đầu phá vỡ chúng. Nếu bạn bắt đầu bằng việc vi phạm các quy tắc ngay lập tức, bạn sẽ gặp rắc rối. Đầu tiên, tôi dạy học sinh cách viết mã đơn giản, đúng mà không lo lắng về hiệu suất. Điều tôi đang nói là có những vấn đề phức tạp về thời gian đang ẩn giấu ở đây, vì vậy đừng lo lắng về bộ nhớ đệm, đừng lo lắng về các mô hình bộ nhớ, chỉ cần đảm bảo mọi thứ hoạt động chính xác. Điều này đã đủ khó rồi: bản thân việc lập trình hiện đại không hề dễ dàng, đặc biệt là đối với những sinh viên mới. Và khi họ có trực giác về cách viết chương trình phù hợp, tôi nói: hãy xem hai cách triển khai spinlock này: một rất chậm và thứ hai cũng không chậm lắm, nhưng tốt hơn. Tuy nhiên, về mặt toán học, hai thuật toán này giống nhau. Trên thực tế, một trong số chúng sử dụng vị trí bộ đệm. Một trong số chúng chạy trên dữ liệu được lưu trong bộ nhớ đệm cục bộ và cái còn lại thực hiện liên tục các hoạt động trên xe buýt. Bạn không thể viết mã hiệu quả nếu bạn không hiểu nó là gì và không biết cách phá vỡ tính trừu tượng và xem xét cấu trúc cơ bản. Nhưng bạn sẽ không thể bắt đầu làm điều này ngay lập tức. Có những người bắt đầu làm việc này ngay lập tức và tin vào thiên tài của chính mình, thường thì kết thúc không tốt đẹp vì họ không hiểu nguyên tắc. Không ai vẽ như Picasso hay viết chương trình như Doug Lee mới ra trường trong tuần đầu tiên. Phải mất nhiều năm mới đạt được mức độ hiểu biết này.

Alexey: Hóa ra bạn chia vấn đề thành hai phần: phần thứ nhất là tính đúng đắn, phần thứ hai là hiệu suất?

Maurice: Chính xác. Và, chính xác theo thứ tự đó. Một phần của vấn đề là học sinh mới không hiểu rằng khó đạt được sự đúng đắn. Thoạt nhìn họ nói: điều này rõ ràng là đúng, tất cả những gì còn lại là tăng tốc độ. Vì vậy, đôi khi tôi nói với họ về một thuật toán ban đầu không chính xác như thể nó đúng.

Cách dạy học sinh viết mã đa luồng phức tạp

Alexey: Chỉ để xem liệu họ có cảm nhận được mẻ cá không?

Maurice: Tôi luôn cảnh báo trước rằng đôi khi tôi sẽ đề xuất những thuật toán không chính xác. Bạn không nên lừa dối mọi người. Tôi đề nghị họ coi thường thông tin. Nếu tôi nói điều gì đó và nói: "nhìn này, điều này rõ ràng là đúng" - đây là tín hiệu cho thấy ở đâu đó họ đang cố lừa dối bạn và bạn nên bắt đầu đặt câu hỏi. Tiếp theo, tôi cố gắng khuyến khích học sinh tiếp tục đặt câu hỏi và sau đó tôi gợi ý: “Điều gì sẽ xảy ra nếu chúng ta để mọi thứ như hiện tại?” Và họ ngay lập tức nhận ra sai lầm. Nhưng việc thuyết phục sinh viên rằng họ cần lo lắng về tính đúng đắn khó hơn nhiều so với cái nhìn đầu tiên. Nhiều sinh viên trong số này đã có kinh nghiệm lập trình ở trường trung học, một số đã kiếm được việc làm và lập trình ở đó, và tất cả đều tràn đầy tự tin. Điều này giống như quân đội: trước tiên bạn phải thay đổi tâm trạng của họ để thuyết phục họ kiên nhẫn tiếp cận giải quyết các vấn đề nảy sinh. Hoặc có thể giống như các tu sĩ Phật giáo: đầu tiên họ học cách suy luận về tính đúng đắn, và một khi họ hiểu được cách lập luận về tính đúng đắn, họ được phép chuyển sang cấp độ tiếp theo và bắt đầu lo lắng về hiệu suất.

Alexey: Tức là, đôi khi bạn cho học sinh xem những ví dụ không hoạt động, nhờ đó bạn nhận được phản hồi cho biết họ có hiểu bản chất của vấn đề hay không, liệu họ có thể tìm ra mã sai và kết quả sai hay không. Vậy học sinh thường làm bạn vui hay buồn?

Maurice: Cuối cùng học sinh hầu như luôn tìm ra lỗi. Nếu họ tìm kiếm quá chậm, tôi sẽ đặt những câu hỏi dẫn dắt, và ở đây điều quan trọng là phải hiểu rằng nếu bạn không bao giờ lừa dối họ, họ sẽ bắt đầu vô thức coi lời nói của bạn là sự thật cuối cùng. Sau đó, họ sẽ cảm thấy buồn chán và bắt đầu buồn ngủ khi đang đọc Facebook trên máy tính xách tay trong giờ học. Nhưng khi bạn nói trước với họ rằng họ sẽ bị lừa, và họ sẽ trông thật ngu ngốc nếu không cảm nhận được trò lừa, thì họ sẽ trở nên cảnh giác hơn rất nhiều. Điều này tốt theo nhiều cách khác nhau. Tôi muốn học sinh không chỉ đặt câu hỏi về sự hiểu biết của mình về vấn đề mà còn đặt câu hỏi về thẩm quyền của giáo viên. Ý tưởng là học sinh có thể giơ tay bất cứ lúc nào và nói: Tôi nghĩ điều bạn vừa nói là sai. Nó là một công cụ học tập quan trọng. Tôi không muốn bất kỳ học sinh nào ngồi im lặng nghĩ: tất cả những điều này dường như hoàn toàn vô nghĩa, nhưng việc giơ tay thì quá đáng sợ, và dù sao thì anh ấy cũng là giáo sư nên mọi điều anh ấy nói đều là sự thật. Vì vậy, nếu họ được cảnh báo trước rằng không phải mọi điều được kể đều nhất thiết là đúng, thì họ sẽ có động cơ để chú ý hơn đến tài liệu. Tôi nói rõ rằng bạn có thể giơ tay và đặt câu hỏi. Câu hỏi của bạn nghe có vẻ ngu ngốc hoặc ngây thơ, nhưng đây thường là cách nảy sinh những câu hỏi hay nhất.

Alexey: Rất thú vị. Thông thường mọi người có một loại rào cản tâm lý nào đó không cho phép họ đặt câu hỏi với giáo sư. Đặc biệt nếu có nhiều người trong phòng và ai cũng sợ việc thảo luận về câu hỏi ngu ngốc của bạn sẽ chiếm hết thời gian của những người này. Có thủ thuật nào để giải quyết vấn đề này không?

Maurice: Tôi thường dừng lại và hỏi những câu hỏi kinh điển. Liệu một tuyên bố có đúng hay không hoặc chúng sẽ giải quyết vấn đề đang được thảo luận như thế nào. Đây là động tác quan trọng, đặc biệt là khi bắt đầu bài học khi mọi người ngại nói ra dù là điều nhỏ nhất. Bạn hỏi học sinh một câu hỏi và không nói gì thêm. Im lặng, mọi người hơi căng thẳng, căng thẳng càng tăng, rồi đột nhiên có người không chịu nổi, suy sụp và nói câu trả lời. Đây là cách bạn xoay chuyển tình thế: tiếp tục giữ im lặng trở nên khó khăn và bất tiện hơn là trả lời! Đây là một thủ thuật sư phạm tiêu chuẩn. Mọi giáo viên trên thế giới nên biết cách làm điều này.

Alexey: Bây giờ chúng tôi có một tiêu đề xuất sắc cho cuộc phỏng vấn này: “Trả lời thì dễ hơn là giữ im lặng.”

Vitaly: Hãy để tôi hỏi lại. Bạn đang làm việc trên các bằng chứng tôpô. Làm sao bạn lại tham gia vào việc này, bởi vì điện toán phân tán và cấu trúc liên kết là những thứ hoàn toàn khác nhau!

Maurice: Có một mối liên hệ ẩn giấu ở đó. Khi còn là sinh viên học toán, tôi học toán thuần túy. Tôi không thực sự quan tâm đến máy tính cho đến khi kết thúc việc học và tôi thấy mình phải đối mặt với nhu cầu cấp thiết là phải tìm việc làm. Khi còn là sinh viên, tôi đã nghiên cứu cấu trúc liên kết đại số. Nhiều năm sau, khi đang giải quyết một vấn đề có tên "Vấn đề về thỏa thuận k-Set", Tôi đã sử dụng đồ thị để mô hình hóa vấn đề và có vẻ như vào thời điểm đó, tôi đã tìm ra giải pháp. Bạn chỉ cần ngồi xuống và đếm. Hãy cố gắng tìm một câu trả lời phù hợp trên biểu đồ này. Nhưng thuật toán của tôi không hoạt động: hóa ra anh ấy sẽ chạy vòng tròn mãi mãi. Thật không may, tất cả những điều này không thể giải thích được bằng ngôn ngữ hình thức của lý thuyết đồ thị - ngôn ngữ mà tất cả các nhà khoa học máy tính đều biết. Và rồi tôi nhớ lại rằng nhiều năm trước, trong lớp học cấu trúc liên kết, chúng tôi đã sử dụng khái niệm "đơn giản phức tạp", đó là sự tổng quát hóa của đồ thị theo các chiều cao hơn. Sau đó tôi tự hỏi: điều gì sẽ xảy ra nếu chúng ta trình bày lại bài toán theo dạng phức đơn giản? Đây đã trở thành thời điểm quan trọng. Bằng cách sử dụng một chủ nghĩa hình thức mạnh mẽ hơn, vấn đề đột nhiên trở nên đơn giản hơn nhiều. Người ta đã đấu tranh chống lại nó trong một thời gian dài bằng cách sử dụng đồ thị nhưng họ không thể làm gì được. Và ngay cả bây giờ họ cũng không thể - câu trả lời đúng hóa ra không phải là một thuật toán, mà là bằng chứng về việc không thể giải quyết được vấn đề. Đó là, thuật toán như vậy đơn giản là không tồn tại. Nhưng mọi bằng chứng về sự không thể dựa trên những phức hợp đơn giản hoặc dựa trên những thứ mà mọi người giả vờ không coi là những phức hợp đơn giản. Chỉ vì bạn gọi một cái gì đó bằng một cái tên mới, nó không mất đi bản chất của nó.

Vitaly: Hóa ra bạn chỉ gặp may thôi?

Maurice: Bên cạnh may mắn, nó còn sẵn sàng. Điều này có nghĩa là bạn không nên quên những điều “vô ích” đã học trước đó. Bạn càng học được nhiều điều vô ích, bạn càng có thể rút ra được nhiều ý tưởng hơn khi gặp phải một vấn đề mới. Kiểu khớp mẫu trực quan này rất quan trọng vì... Hãy làm điều này, đây là một chuỗi: lúc đầu tôi phát hiện ra rằng các biểu đồ hoàn toàn không hoạt động hoặc không hoạt động chút nào, nó làm tôi nhớ đến điều gì đó từ các sự kiện của tám nhiều năm trước và những năm sinh viên của tôi, khi chúng tôi nghiên cứu tất cả những phức hợp đơn giản này. Điều này lại cho phép tôi tìm lại cuốn sách giáo khoa cấu trúc liên kết cũ của mình và tải nó trở lại trong đầu. Nhưng nếu không có những kiến ​​thức cũ đó thì tôi sẽ không bao giờ đạt được tiến bộ nào trong việc giải quyết vấn đề ban đầu.

Ấn bản mới của cuốn sách “Nghệ thuật lập trình đa bộ xử lý”

Alexey: Bạn đã nói đôi lời về cuốn sách của mình. Có lẽ đó không phải là bí mật tồi tệ nhất khi bạn viết cuốn sách nổi tiếng nhất thế giới về đa luồng, "Nghệ thuật lập trình đa bộ xử lý". Nó đã được khoảng 11 tuổi và kể từ đó nó chỉ được phát hành  tái bản có sửa đổi. Sẽ có ấn bản thứ hai?

Maurice: Thật tốt khi bạn đã hỏi! Sẽ rất sớm thôi, khoảng ba tháng nữa. Có thêm hai tác giả, chúng tôi đã bổ sung thêm nhiều tài liệu hơn, cải tiến phần fork/join song song, viết một phần trên MapReduce, thêm nhiều điều mới và loại bỏ những thứ không cần thiết - một điều rất thú vị vào thời điểm viết bài ấn bản đầu tiên nhưng ngày nay không còn nữa. Kết quả là một cuốn sách được sửa đổi rất nghiêm túc.

Alexey: Mọi thứ đã xong rồi, chỉ còn lại việc giải phóng nó thôi?

Maurice: Một vài chương vẫn cần chỉnh sửa. Nhà xuất bản của chúng tôi (người mà tôi nghĩ đã ghét chúng tôi) vẫn đang cố gắng truyền tải thông điệp rằng chúng tôi nên làm việc nhanh hơn. Chúng ta đang chậm tiến độ rất nhiều so với kế hoạch. Về mặt lý thuyết, lẽ ra chúng tôi có thể hoàn thành cuốn sách này sớm hơn vài năm.

Alexey: Bạn có cơ hội nhận được phiên bản mới của cuốn sách trước Giáng sinh không?

Maurice: Đây là mục tiêu của chúng tôi! Nhưng tôi đã dự đoán chiến thắng nhiều lần đến nỗi không ai tin tôi nữa. Có lẽ bạn cũng không nên tin tưởng tôi quá nhiều trong vấn đề này.

Alexey: Dù sao đi nữa, đây là một tin tuyệt vời. Tôi thực sự thích ấn bản đầu tiên của cuốn sách. Bạn có thể nói tôi là một fan hâm mộ.

Maurice: Tôi hy vọng ấn bản mới sẽ xứng đáng với sự nhiệt tình nhiệt thành của các bạn, xin cảm ơn!

Bộ nhớ giao dịch được phát minh như thế nào

Vitaly: Câu hỏi tiếp theo là về bộ nhớ giao dịch. Theo tôi hiểu, bạn là người tiên phong trong lĩnh vực này, bạn đã phát minh ra nó vào thời điểm chưa có ai nghĩ đến những điều như vậy. Tại sao bạn quyết định chuyển sang lĩnh vực này? Tại sao các giao dịch có vẻ quan trọng đối với bạn? Bạn có nghĩ rằng một ngày nào đó chúng sẽ được triển khai trong phần cứng không?

Maurice: Tôi đã biết về các giao dịch từ những ngày còn nghiên cứu sau đại học.

Vitaly: Đúng, nhưng đây là những giao dịch khác nhau!

Maurice: Tôi đã làm việc với Elliott Moss về việc thu gom rác không chặn. Vấn đề của chúng tôi là chúng tôi muốn thay đổi một cách nguyên tử một vài từ trong bộ nhớ và khi đó các thuật toán sẽ trở nên rất đơn giản và ít nhất một số trong số chúng sẽ trở nên hiệu quả hơn. sử dụng so sánh và hoán đổi cho liên kết tải/lưu trữ có điều kiệnđược cung cấp bởi kiến ​​trúc song song, bạn có thể làm được điều gì đó, nhưng nó rất kém hiệu quả và xấu vì bạn sẽ phải xử lý các lớp gián tiếp. Tôi muốn thay đổi các từ bộ nhớ và tôi cần chuyển đổi vì tôi chỉ có thể thay đổi một con trỏ, vì vậy chúng cần trỏ đến một loại cấu trúc giống thư mục nào đó. Chúng tôi đã nói về việc sẽ tuyệt vời như thế nào nếu chúng tôi có thể thay đổi phần cứng để nó có thể ghi đồng thời. Elliott dường như đã nhận thấy điều này: nếu bạn nhìn vào các giao thức kết hợp bộ đệm, chúng đã cung cấp hầu hết các chức năng cần thiết. Trong một giao dịch lạc quan, giao thức kết hợp bộ đệm sẽ nhận thấy rằng có xung đột về thời gian và bộ đệm sẽ trở thành không hợp lệ. Điều gì sẽ xảy ra nếu bạn thực hiện một giao dịch trên bộ đệm của mình theo cách suy đoán và sử dụng cơ chế giao thức kết hợp để phát hiện xung đột? Kiến trúc phần cứng suy đoán rất dễ thiết kế. Vì vậy chúng tôi đã viết cái đó ấn phẩm đầu tiên về bộ nhớ giao dịch. Cùng lúc đó, công ty tôi đang làm việc, Digital Equipment Corporation, đang tạo ra bộ xử lý 64-bit mới có tên Alpha. Vì vậy, tôi đã đến thuyết trình với nhóm phát triển Alpha về bộ nhớ giao dịch tuyệt vời của chúng tôi và họ hỏi: Công ty của chúng tôi sẽ nhận được thêm bao nhiêu doanh thu nếu chúng tôi thêm trực tiếp tất cả những thứ này vào bộ xử lý? Và tôi hoàn toàn không có câu trả lời cho vấn đề này, vì tôi là nhà công nghệ, tôi không phải chuyên gia tiếp thị. Tôi thực sự không có gì để trả lời. Họ không ấn tượng lắm khi tôi không biết gì cả.

Vitaly: Hàng tỷ! Cứ nói tỷ đi!

Maurice: Đúng, đó là điều lẽ ra tôi phải nói. Bây giờ, trong thời đại khởi nghiệp và mọi thứ, tôi đã biết cách viết một kế hoạch kinh doanh. Rằng bạn có thể nói dối một chút về quy mô lợi nhuận tiềm năng của mình. Nhưng hồi đó điều đó có vẻ ngây thơ nên tôi chỉ nói: “Tôi không biết”. Nếu bạn nhìn vào lịch sử xuất bản về bộ nhớ giao dịch, bạn sẽ nhận thấy rằng sau một năm đã có một số tài liệu tham khảo về nó, và sau đó trong khoảng mười năm không ai trích dẫn bài báo này cả. Các trích dẫn xuất hiện vào khoảng năm 2004, khi đa lõi thực sự xuất hiện. Khi mọi người phát hiện ra rằng viết mã song song có thể kiếm tiền, nghiên cứu mới đã bắt đầu. Ravi Rajwar đã viết một bài báo, theo một cách nào đó, đã đưa khái niệm bộ nhớ giao dịch trở thành xu hướng phổ biến. (Ghi chú của biên tập viên: Có phiên bản thứ hai của bài viết này, được phát hành năm 2010 và được cung cấp miễn phí dưới dạng PDF). Đột nhiên mọi người nhận ra chính xác cách sử dụng tất cả những thứ này, cách các thuật toán truyền thống với ổ khóa có thể được tăng tốc như thế nào. Một ví dụ điển hình về một điều mà trước đây dường như chỉ là một vấn đề học thuật thú vị. Và vâng, nếu lúc đó bạn hỏi tôi liệu tôi có nghĩ rằng tất cả những điều này sẽ quan trọng trong tương lai hay không, thì tôi sẽ nói: tất nhiên, nhưng chính xác là khi nào thì vẫn chưa rõ. Có lẽ trong 50 năm nữa? Trong thực tế, điều này hóa ra chỉ là một thập kỷ. Thật tuyệt khi bạn làm điều gì đó và chỉ sau mười năm mọi người mới chú ý đến nó.

Tại sao cần tiến hành nghiên cứu trong lĩnh vực điện toán phân tán

Vitaly: Nếu chúng ta nói về nghiên cứu mới, bạn sẽ khuyên độc giả điều gì - điện toán phân tán hay đa lõi và tại sao? 

Maurice: Ngày nay, có được bộ xử lý đa lõi thì dễ nhưng thiết lập một hệ thống phân tán thực sự lại khó hơn. Tôi bắt đầu nghiên cứu chúng vì tôi muốn làm điều gì đó khác với luận án tiến sĩ của mình. Đây là lời khuyên mà tôi luôn đưa ra cho những sinh viên mới: đừng viết tiếp tục luận án của bạn mà hãy thử đi theo một hướng mới. Và ngoài ra, đa luồng rất dễ dàng. Tôi có thể thử nghiệm chiếc nĩa của riêng mình chạy trên máy tính xách tay của mình mà không cần phải ra khỏi giường. Nhưng nếu tôi đột nhiên muốn tạo ra một hệ thống phân tán thực sự, tôi sẽ phải làm rất nhiều việc, thu hút sinh viên, v.v. Tôi là một người lười biếng và thích làm việc trên đa lõi hơn. Việc thử nghiệm trên hệ thống đa lõi cũng dễ dàng hơn so với việc thực hiện thử nghiệm trên hệ thống phân tán, bởi vì ngay cả trong một hệ thống phân tán ngu ngốc cũng có quá nhiều yếu tố cần phải kiểm soát.

Vitaly: Hiện tại bạn đang làm gì, nghiên cứu về blockchain? Những bài viết nào bạn nên chú ý đầu tiên?

Maurice: Xuất hiện gần đây bài viết rất hay, mà tôi đã viết cùng với học trò của mình, Vikram Saraf, đặc biệt là trong buổi nói chuyện tại hội nghị Tokenomcs ở Paris ba tuần trước. Đây là một bài viết về các hệ thống phân tán thực tế, trong đó chúng tôi đề xuất tạo ra Ethereum đa luồng. Hiện tại, hợp đồng thông minh (mã chạy trên blockchain) được thực thi tuần tự. Chúng tôi đã viết một bài báo trước đó nói về cách sử dụng các giao dịch đầu cơ để tăng tốc quá trình. Chúng tôi đã lấy rất nhiều ý tưởng từ bộ nhớ giao dịch phần mềm và nói rằng nếu bạn biến những ý tưởng này thành một phần của máy ảo Etherium thì mọi thứ sẽ hoạt động nhanh hơn. Nhưng để làm được điều này, điều cần thiết là không có xung đột dữ liệu trong hợp đồng. Và sau đó chúng tôi cho rằng trong cuộc sống thực thực sự không có những xung đột như vậy. Nhưng chúng tôi không có cách nào để tìm hiểu. Sau đó, chúng tôi nhận ra rằng chúng tôi đã có gần một thập kỷ lịch sử hợp đồng thực sự trong tay, vì vậy chúng tôi đã loại bỏ chuỗi khối Ethereum và tự hỏi: điều gì sẽ xảy ra nếu những hồ sơ lịch sử này được thực thi song song? Chúng tôi nhận thấy tốc độ tăng lên đáng kể. Trong những ngày đầu của Ethereum, tốc độ tăng lên rất nhiều, nhưng ngày nay mọi thứ có phần phức tạp hơn, vì có ít hợp đồng hơn và khả năng xảy ra xung đột về dữ liệu yêu cầu tuần tự hóa đã trở nên cao hơn. Nhưng tất cả điều này là công việc thử nghiệm với dữ liệu lịch sử có thật. Điều thú vị về blockchain là nó ghi nhớ mọi thứ mãi mãi, vì vậy chúng ta có thể quay ngược thời gian và nghiên cứu xem điều gì sẽ xảy ra nếu chúng ta sử dụng các thuật toán khác nhau để chạy mã. Mọi người trước đây sẽ thích ý tưởng mới của chúng tôi như thế nào? Việc nghiên cứu như vậy dễ dàng và thú vị hơn nhiều vì có một thứ theo dõi mọi thứ và ghi lại mọi thứ. Đây đã là một cái gì đó giống với xã hội học hơn là sự phát triển của các thuật toán.

Sự phát triển của các thuật toán đã dừng lại và làm thế nào để tiếp tục?

Vitaly: Đã đến lúc cho câu hỏi lý thuyết cuối cùng! Có cảm giác như tiến độ trong cấu trúc dữ liệu cạnh tranh đang giảm dần hàng năm không? Bạn có nghĩ rằng chúng ta đã đạt đến mức ổn định trong hiểu biết về cấu trúc dữ liệu hay sẽ có một số cải tiến lớn? Biết đâu có một số ý tưởng thông minh có thể thay đổi hoàn toàn mọi thứ?

Maurice: Chúng ta có thể đã đạt đến trạng thái ổn định về cấu trúc dữ liệu đối với kiến ​​trúc truyền thống. Nhưng cấu trúc dữ liệu cho các kiến ​​trúc mới vẫn là một lĩnh vực rất hứa hẹn. Nếu bạn muốn tạo cấu trúc dữ liệu cho bộ tăng tốc phần cứng chẳng hạn, thì cấu trúc dữ liệu cho GPU rất khác với cấu trúc dữ liệu cho CPU. Khi bạn phát triển cấu trúc dữ liệu cho chuỗi khối, bạn cần băm các phần dữ liệu và sau đó đặt chúng vào một thứ như Cây Merkle, để ngăn chặn hàng giả. Gần đây đã có một sự gia tăng hoạt động trong lĩnh vực này, với nhiều người làm việc rất tốt. Nhưng tôi nghĩ điều sẽ xảy ra là những kiến ​​trúc và ứng dụng mới sẽ dẫn đến những cấu trúc dữ liệu mới. Các ứng dụng cũ và kiến ​​trúc truyền thống - có thể không còn nhiều chỗ để khám phá nữa. Nhưng nếu bạn thoát khỏi con đường cũ và nhìn xa hơn, bạn sẽ thấy những điều điên rồ mà xu hướng chính thống không coi trọng - đó là nơi tất cả những điều thú vị thực sự xảy ra.

Vitaly: Vì vậy, để trở thành một nhà nghiên cứu nổi tiếng, tôi phải phát minh ra kiến ​​trúc của riêng mình :)

Maurice: Bạn có thể "đánh cắp" kiến ​​trúc mới của người khác - việc đó có vẻ dễ dàng hơn nhiều!

Làm việc tại Brown University

Vitaly: Bạn có thể cho chúng tôi biết thêm về Đại học Brownbạn làm ở đâu? Không có nhiều thông tin về ông trong bối cảnh công nghệ thông tin. Ít hơn về MIT chẳng hạn.

Maurice: Đại học Brown là một trong những trường đại học lâu đời nhất ở Hoa Kỳ. Tôi nghĩ chỉ có Harvard là già hơn một chút. Màu nâu là một phần của cái gọi là Ivy League, là tập hợp của tám trường đại học lâu đời nhất. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Đó là một trường đại học cũ, nhỏ và có chút quý phái. Trọng tâm chính là giáo dục nghệ thuật tự do. Nó không cố gắng giống như MIT, MIT rất chuyên môn và kỹ thuật. Brown là một nơi tuyệt vời để nghiên cứu Văn học Nga hoặc Hy Lạp cổ điển, và tất nhiên, Khoa học Máy tính. Nó tập trung vào giáo dục toàn diện. Hầu hết sinh viên của chúng tôi vào Facebook, Apple, Google - vì vậy tôi nghĩ sinh viên của chúng tôi không gặp vấn đề gì khi tìm việc làm trong công nghiệp. Tôi đến làm việc tại Brown vì trước đây tôi đã từng làm việc tại Digital Equipment Corporation ở Boston. Đây là một công ty đã phát minh ra nhiều thứ thú vị nhưng lại phủ nhận tầm quan trọng của máy tính cá nhân. Một công ty có số phận khó khăn, người sáng lập từng là những nhà cách mạng trẻ tuổi, họ không học được gì và không quên gì nên từ cách mạng trở thành phản động trong khoảng chục năm. Họ thích nói đùa rằng máy tính cá nhân thuộc về gara - tất nhiên là một gara bị bỏ hoang. Rõ ràng là họ đã bị phá hủy bởi các công ty linh hoạt hơn. Khi biết rõ công ty đang gặp khó khăn, tôi gọi cho một người bạn của tôi ở Brown, cách Boston khoảng một giờ đồng hồ. Tôi không muốn rời Boston vào thời điểm đó vì không có nhiều cơ hội tuyển dụng ở các trường đại học khác. Đây là thời điểm chưa có nhiều việc làm trong lĩnh vực Khoa học Máy tính như bây giờ. Và Brown đã mở cửa, tôi không phải chuyển nhà, tôi không phải chuyển gia đình, và tôi thực sự thích sống ở Boston! Đó là lý do tôi quyết định đến Brown. Tôi thích nó. Các sinh viên thật tuyệt vời, vì vậy tôi thậm chí chưa bao giờ cố gắng đi nơi nào khác. Trong thời gian nghỉ phép, tôi đã làm việc tại Microsoft một năm, đến Technion ở Haifa trong một năm và bây giờ tôi sẽ làm việc tại Algorand. Tôi có nhiều đồng nghiệp ở khắp mọi nơi và do đó vị trí địa lý của các lớp học của chúng tôi không quan trọng lắm. Nhưng điều quan trọng nhất là các sinh viên ở đây họ là những người giỏi nhất. Tôi chưa bao giờ thử đi nơi khác vì tôi khá hạnh phúc ở đây.

Tuy nhiên, bất chấp sự nổi tiếng của Brown ở Hoa Kỳ, anh ấy lại không được biết đến ở nước ngoài một cách đáng ngạc nhiên. Như bạn có thể thấy, tôi hiện đang làm mọi thứ có thể để khắc phục tình trạng này.

Sự khác biệt giữa nghiên cứu ở trường đại học và trong một tập đoàn

Vitaly: Được rồi, câu hỏi tiếp theo là về Thiết bị kỹ thuật số. Bạn đã ở đó với tư cách là một nhà nghiên cứu. Sự khác biệt giữa làm việc ở bộ phận R&D của một công ty lớn và làm việc ở trường đại học là gì? Những ưu điểm và nhược điểm là gì?

Maurice: Trong XNUMX năm, tôi đã làm việc tại Microsoft, làm việc chặt chẽ với các nhân viên của Sun Microsystems, Oracle, Facebook và bây giờ là Algorand. Dựa trên tất cả những điều này, tôi muốn nói rằng có thể thực hiện nghiên cứu hạng nhất ở cả công ty và trường đại học. Sự khác biệt quan trọng là trong công ty bạn làm việc với đồng nghiệp. Nếu tôi đột nhiên nảy ra ý tưởng cho một dự án chưa tồn tại, tôi phải thuyết phục đồng nghiệp rằng đây là một ý tưởng hay. Nếu tôi ở Brown, thì tôi có thể nói với học sinh của mình: hãy nghiên cứu về phản hấp dẫn! Họ sẽ rời đi để theo người khác hoặc đảm nhận một dự án. Có, tôi sẽ cần tìm nguồn tài trợ, tôi sẽ cần viết đơn xin tài trợ, v.v. Trong mọi trường hợp, sẽ luôn có nhiều sinh viên và bạn có thể đơn phương đưa ra quyết định. Nhưng ở trường đại học, rất có thể bạn sẽ không làm việc với những người ở trình độ như bạn. Trong thế giới nghiên cứu công nghiệp, trước tiên bạn phải thuyết phục mọi người rằng dự án của bạn đáng được thực hiện. Tôi không thể yêu cầu bất cứ điều gì cho bất cứ ai. Và cả hai cách làm việc này đều có giá trị, bởi vì nếu bạn đang làm một việc gì đó thực sự điên rồ và khó thuyết phục đồng nghiệp của bạn thì việc thuyết phục các sinh viên sau đại học sẽ dễ dàng hơn - đặc biệt nếu bạn trả tiền cho họ. Nếu bạn đang làm một công việc đòi hỏi nhiều kinh nghiệm và chuyên môn sâu, thì bạn cần những đồng nghiệp có thể nói “không, tình cờ là tôi hiểu về lĩnh vực này và ý tưởng của bạn tệ, nó sẽ không hiệu quả”. Điều này rất hữu ích trong việc lãng phí thời gian. Ngoài ra, nếu trong các phòng thí nghiệm công nghiệp, bạn dành nhiều thời gian để viết báo cáo, thì ở trường đại học, bạn dành thời gian này để cố gắng kiếm tiền. Nếu tôi muốn học sinh có thể đi đâu đó thì tôi phải tìm tiền ở nơi khác. Và vị trí của bạn ở trường đại học càng quan trọng thì bạn càng có nhiều thời gian để thu tiền. Vậy giờ bạn đã biết tôi làm nghề gì rồi - một kẻ ăn xin chuyên nghiệp! Giống như một trong những nhà sư đi vòng quanh với đĩa cúng dường. Nhìn chung, hai hoạt động này bổ sung cho nhau. Đó là lý do tại sao tôi cố gắng sống và giữ đôi chân của mình trên mặt đất ở cả hai thế giới.

Vitaly: Có vẻ như việc thuyết phục một công ty còn khó hơn việc thuyết phục các nhà khoa học khác.

Maurice: Khó hơn và nhiều hơn thế nữa. Hơn nữa, ở các lĩnh vực khác nhau thì khác: một số tiến hành nghiên cứu toàn diện, trong khi những người khác tập trung vào chủ đề của họ. Nếu tôi đến Microsoft hay Facebook và nói: hãy tạo ra lực phản trọng lực, họ sẽ khó đánh giá cao điều đó. Nhưng nếu tôi nói chính xác điều tương tự với các sinh viên tốt nghiệp của mình, rất có thể họ sẽ đi làm ngay lập tức, mặc dù bây giờ tôi sẽ gặp vấn đề - suy cho cùng, tôi cần phải kiếm tiền cho việc này. Nhưng miễn là bạn muốn làm điều gì đó phù hợp với mục tiêu của công ty thì công ty đó có thể là nơi rất tốt để nghiên cứu.

Hydra và SPTDC

Vitaly: Những câu hỏi của tôi sắp kết thúc, vậy hãy nói một chút về chuyến đi Nga sắp tới nhé.

Maurice: Vâng, tôi rất mong được trở lại St. Petersburg.

Alexey: Tôi rất vinh dự khi có bạn đồng hành cùng chúng tôi trong năm nay. Đây là lần thứ hai bạn đến St. Petersburg phải không?

Maurice: Đã là người thứ ba rồi!

Alexey: Tôi hiểu, nhưng SPTDC – chắc chắn là cái thứ hai. Lần trước trường được gọi SPTCC, hiện tại chúng tôi đã thay đổi một chữ cái (C thành D, Đồng thời thành Phân tán) để nhấn mạnh rằng năm nay có nhiều lĩnh vực liên quan cụ thể hơn đến điện toán phân tán. Bạn có thể nói vài lời về báo cáo của bạn tại Trường và hội nghị Hydra?

Maurice: Tại trường, tôi muốn nói về những điều cơ bản của blockchain và những gì bạn có thể làm với nó. Tôi muốn chứng minh rằng blockchain rất giống với lập trình đa luồng mà chúng ta quen thuộc, nhưng có những sắc thái riêng và điều quan trọng là phải hiểu những khác biệt này. Nếu bạn mắc lỗi trong một ứng dụng web thông thường, điều đó thật khó chịu. Nếu bạn viết mã lỗi trong một ứng dụng tài chính, chắc chắn ai đó sẽ lấy trộm hết tiền của bạn. Đây là những mức độ trách nhiệm và hậu quả hoàn toàn khác nhau. Tôi sẽ nói một chút về bằng chứng công việc, về hợp đồng thông minh, về giao dịch giữa các chuỗi khối khác nhau.

Sẽ có những diễn giả khác làm việc bên cạnh tôi, những người cũng có điều gì đó muốn nói về blockchain và chúng tôi đã đồng ý phối hợp với nhau để câu chuyện của chúng tôi ăn khớp với nhau. Nhưng đối với báo cáo kỹ thuật, tôi muốn đưa ra lời giải thích dễ hiểu cho đông đảo khán giả về lý do tại sao bạn không nên tin mọi điều bạn nghe về blockchain, tại sao blockchain là một lĩnh vực tuyệt vời, nó phù hợp như thế nào với các ý tưởng đã biết khác và tại sao chúng ta nên mạnh dạn xem xét tới tương lai.

Alexey: Ngoài ra, tôi muốn nói rằng điều này sẽ không diễn ra theo hình thức gặp gỡ hoặc nhóm người dùng như hai năm trước. Chúng tôi quyết định tổ chức một hội nghị nhỏ gần trường học. Lý do là sau khi liên lạc với Peter Kuznetsov, chúng tôi nhận ra rằng trường chỉ giới hạn một trăm, có thể là 120 người. Đồng thời, có rất nhiều kỹ sư muốn giao tiếp với bạn, tham dự các buổi thuyết trình và nhìn chung quan tâm đến chủ đề này. Vì lý do này, chúng tôi đã tạo ra một hội nghị mới gọi là Hydra. Nhân tiện, có ý tưởng nào tại sao lại là Hydra không?

Maurice: Bởi vì sẽ có bảy diễn giả? Và đầu của họ có thể bị chặt đi, và những diễn giả mới sẽ mọc lên ở vị trí của họ?

Alexey: Ý tưởng tuyệt vời để phát triển các diễn giả mới. Nhưng thực tế ở đây có một câu chuyện. Hãy nhớ đến truyền thuyết về Odysseus, nơi ông phải đi thuyền giữa Scylla và Charybdis? Hydra giống như Charybdis. Chuyện là có lần tôi phát biểu tại một hội nghị và nói về đa luồng. Chỉ có hai bài hát tại hội nghị này. Khi bắt đầu báo cáo, tôi đã nói với khán giả trong hội trường rằng bây giờ họ có sự lựa chọn giữa Scylla và Charybdis. Linh vật của tôi là Charybdis vì Charybdis có nhiều đầu và chủ đề của tôi là đa luồng. Đây là cách tên của các hội nghị xuất hiện.

Dù thế nào đi nữa, chúng ta đã hết câu hỏi và thời gian. Vì vậy, cảm ơn các bạn vì một cuộc phỏng vấn tuyệt vời và hẹn gặp lại các bạn tại Trường SPTDC và Hydra 2019!

Bạn có thể tiếp tục cuộc trò chuyện của mình với Maurice tại hội nghị Hydra 2019, sẽ được tổ chức vào ngày 11-12 tháng 2019 năm XNUMX tại St. Petersburg. Anh ấy sẽ đến với một bản báo cáo “Blockchains và tương lai của điện toán phân tán”. Có thể mua vé trên trang web chính thức.

Nguồn: www.habr.com

Thêm một lời nhận xét