Có phải một hướng dẫn nghiên cứu tồn tại bắt đầu từ một nền tảng thuần túy CS CS và tiến về hướng tạo ra một ngôn ngữ lập trình lượng tử mới, không?


12

Tôi đến từ một nền tảng khoa học máy tính và tôi cảm thấy khó khăn khi quyết định các tài nguyên tôi nên tập trung vào trong khi học máy tính lượng tử, vì có quá nhiều thứ để đọc / xem. Mục tiêu cuối cùng của tôi là làm cho một ngôn ngữ lập trình hoạt động như một giao diện giữa các máy tính lượng tử và người tương tự như năm 1972 khi C được tạo ra. Là một giai đoạn trung gian thực tế, tôi muốn đi đến điểm viết chương trình trên QISKit của IBM.

Vì thế, tôi sẽ cần một hướng dẫn nghiên cứu sơ đồ để có được nền tảng cần thiết về Vật lý và các lĩnh vực liên quan cần thiết để đi sâu vào lĩnh vực điện toán lượng tử. Liệu điều này đã tồn tại: một danh sách có trật tự các khái niệm và khả năng không thể thiếu để làm chủ, mà nếu có thể cũng đề cập đến tài liệu đầy đủ để có được mỗi trong số chúng ?

Giả sử một kiến ​​thức vật lý cấp trung học. Cung cấp một hướng dẫn học tập tức là từ người mới bắt đầu đến chuyên gia hướng dẫn. Cố gắng liệt kê các tài nguyên video / sách mà người ta nên tuân theo thứ tự thời gian để trở thành một chuyên gia trong lĩnh vực điện toán lượng tử đến mức tôi có thể viết ngôn ngữ điện toán lượng tử của riêng mình (giả sử đã có các kỹ năng CS khác để viết ngôn ngữ) .



3
Chào mừng bạn đến với Máy tính lượng tử SE! Hiện tại, tiêu đề của câu hỏi này cho thấy có vẻ như bạn đang hỏi điều gì đó rộng rãi và dựa trên quan điểm (đó là điều mà định dạng Hỏi & Đáp của SE không được thiết kế cho), mặc dù phần chính của câu hỏi cho thấy rõ đây thực sự là một yêu cầu tài nguyên (được chấp nhận). Như vậy, sẽ hữu ích nhất nếu bạn chỉnh sửa tiêu đề câu hỏi của mình để cụ thể hơn về những gì bạn muốn biết. Ngoài ra, nó có thể hữu ích nếu bạn bao gồm chính xác những câu trả lời cho câu hỏi được liên kết trong các bình luận bị thiếu, vì vậy chúng tôi có thể giúp đỡ tốt hơn. Cảm ơn!
Mithrandir24601

1
Xem cụ thể chính sách của chúng tôi về câu hỏi yêu cầu tài nguyên . Điều này là quá rộng.
thạch

1
Bạn đang nghĩ về một cái gì đó như nand2tetris, nhưng lượng tử? Hay một cái gì đó giống như cuốn sách Điện toán lượng tử cho các nhà khoa học máy tính?
James Wootton

1
Nhờ các chỉnh sửa của bạn, tôi tin rằng điều này hiện đáp ứng các yêu cầu tài nguyên, vì vậy tôi đã mở lại.
thạch

Câu trả lời:


11

Tôi không nghĩ có một nguồn tài nguyên vàng duy nhất mà bạn có thể cung cấp cho bạn tất cả các kiến ​​thức cần thiết. Nhưng tôi có thể đề xuất một lộ trình (hoặc hướng dẫn nghiên cứu sơ đồ trong lời nói của bạn):

Nếu mục đích của bạn là tạo ra một ngôn ngữ lập trình lượng tử mới, tôi muốn nói rằng bạn nên tìm hiểu kỹ về ngôn ngữ lập trình lượng tử hiện có trước tiên cùng với các khái niệm cơ bản về điện toán lượng tử, cả từ phía vật lý và khoa học máy tính (thậm chí có thể là Toán học bên!).

  • Microsoft có ngôn ngữ lập trình lượng tử của họ có tên Q # (là một phần của Bộ công cụ phát triển lượng tử của họ ). Tài liệu hướng dẫn kiêm kiêm hướng dẫn đầy đủ có trên trang web của họ: https://docs.microsoft.com/en-us/quantum . Nếu bạn đến từ phía CS, tôi hy vọng bạn đã có một số kiến thức về vectơ, ma trận và đại số tuyến tính nói chung. Nếu vậy, bạn có thể trực tiếp bắt đầu đọc hướng dẫn từng bài viết. Ban đầu, họ bắt đầu với một bản sửa đổi ngắn gọn về ma trận, vectơ, v.v ... sau đó là phần giới thiệu ngắn gọn về qubit. Điều đó là đủ cho ít nhất là bắt đầu với việc viết một chương trình lượng tử cơ bản, với sự hiểu biết tối thiểu về vật lý đằng sau nó. Nhân tiện, nếu các khái niệm đại số tuyến tính của bạn yếu, bạn luôn có thể thửCác bài giảng của Khan Academy cũng vậy.

  • Tiếp theo, bạn muốn tìm hiểu ít nhất một số điều cơ bản về cơ học lượng tử. Cá nhân tôi thích các bài giảng của Giáo sư Vazirani , hiện đang có trên Youtube. Trong khoảng 60 bài giảng mười phút, ông bao gồm tất cả các điều cơ bản cần thiết về cơ học lượng tử và thuật toán tính toán lượng tử. Sau này, bạn sẽ có một hình dạng tốt để tự mình chọn ra các thuật toán mới.

  • Bước thứ ba, tôi khuyên bạn nên chọn " Tính toán lượng tử và thông tin lượng tử của Isaac Chuang và Michael Nielsen " và " Máy tính lượng tử cho các nhà khoa học máy tính của Mirco A. Mannucci và Noson S. Yanofsky " để đề cập đến các chủ đề quan trọng mà bạn đã bỏ lỡ.

Điều đó là đủ để bạn có được một nền tảng vững chắc để bắt đầu viết ngôn ngữ lập trình lượng tử của riêng bạn. Bạn cũng có thể xem hướng dẫn cho các ngôn ngữ điện toán lượng tử phổ biến khác để có ý tưởng về cách viết chương trình lượng tử và thiết kế ngôn ngữ lập trình lượng tử.


6

Tôi đề nghị bạn phản ánh xem liệu mục tiêu "tạo ra một ngôn ngữ lập trình lượng tử mới" có phù hợp ở thời điểm này trong việc phát triển tính toán lượng tử hay không. Nó không phải là cách tiếp cận phổ biến nhất, vì chủ yếu chúng ta vẫn đang ở giai đoạn suy nghĩ về những gì thực chất là ngôn ngữ máy. Khi chúng ta tạo ra các thuật toán, mức độ thực hiện điều này tương tự như thể hiện các thuật toán cổ điển theo các cổng logic ( ví dụ như ví dụ này để nhân). Các SDK lượng tử, như QISKit về cơ bản là các cách tạo công việc được gửi đến phần cứng hoặc mô phỏng lượng tử. Điều này bao gồm các công cụ để thực hiện mô phỏng, tối ưu hóa cho thời gian chạy hoặc mức độ tiếng ồn, v.v. Chúng không thực sự là ngôn ngữ theo nghĩa cấp cao mà chúng ta thường sử dụng để tính toán cổ điển.

Đối với phần giới thiệu về những gì đang diễn ra ở cấp độ lượng tử này, Q dành cho Lượng tử của Terry Rudolph có thể hữu ích.

Đối với mục tiêu trung gian của bạn là viết chương trình với QISKit, tôi muốn giới thiệu hướng dẫn QISKit . Nó có nhiều ví dụ hoạt động của việc thực hiện các chương trình lượng tử ngắn. Ngoài ra còn có một ấn phẩm QISKit trên Medium trong đó một số điều trong hướng dẫn được giải thích chi tiết hơn. Ngoài ra còn có một hướng dẫn được ứng dụng cho QISKit , có thể hữu ích khi khởi động cho hướng dẫn QISKit đầy đủ.

Trật tự hoàn toàn: Tôi đã đóng góp cho tất cả những điều được đề cập trong đoạn cuối cùng.


3
Tôi muốn không đồng ý với điều này. Ngay khi FORTRAN được phát triển (khi máy tính kỹ thuật số vẫn còn khá sơ khai), mọi người bắt đầu sử dụng nó thay vì ngôn ngữ máy và đây có lẽ là bước nhảy vọt lớn nhất trong ngôn ngữ lập trình trong lịch sử máy tính cổ điển. Tại sao chúng ta nên buộc mọi người lập trình bằng ngôn ngữ máy cho máy tính lượng tử? (Tôi chắc chắn họ sẽ, vì hiệu quả, nhưng họ không nên bị ép buộc.)
Peter Shor

1
Điểm tuyệt vời! Tôi muốn nói rằng phần cứng không phải là để suy nghĩ nhiều hơn ngôn ngữ máy tại thời điểm này. Nhưng nó sẽ là tuyệt vời để được chứng minh là sai.
James Wootton

Tôi đã chỉnh sửa câu trả lời của mình một chút để giảm bớt sự tiêu cực, và chỉ ra rằng đó không phải là cách làm thông thường vào lúc này (mặc dù điều đó không có nghĩa là nó sai)
James Wootton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.