Last chance! 50% off DataCamp Premium
Sale ends in
Năm nay tại PyCon 2017, có hai bài phát biểu chính đến từ cộng đồng Python khoa học: Tiến sĩ Jake VanderPlas nói về lý do các nhà khoa học đã và nên đón nhận Python; Tiến sĩ Kathryn Huff nói về cách cộng đồng Python có thể giúp các cộng đồng khoa học và vì sao họ nên làm vậy. Hai bài nói này kết hợp lại đưa ra một góc nhìn toàn diện và mạch lạc về cách nghiên cứu khoa học và lập trình Python bổ trợ cho nhau, vì sao nhiều nhà khoa học hiện nay sẽ hưởng lợi nhất khi áp dụng Python và vì sao cũng như cách cộng đồng Python có thể hỗ trợ hiệu quả cho nghiên cứu khoa học.

Jake VanderPlas là một nhà thiên văn học tại eScience Institute, Đại học Washington, Seattle. Anh cũng hoạt động tích cực trong cộng đồng Python khoa học rộng lớn hơn, đã đóng góp cho SciPy, scikit-learn và altair cùng nhiều gói Python khác.
Đa số mọi người hình dung các nhà thiên văn học đứng dưới chân những kính thiên văn khổng lồ, nhìn qua các ống kính; tuy nhiên Jake trấn an rằng hầu hết các nhà thiên văn học chưa từng nhìn qua kính thiên văn trong đời làm nghề của họ, mà dành phần lớn thời gian thu thập dữ liệu bằng cách truy vấn cơ sở dữ liệu. Nhưng cơ sở dữ liệu chỉ là phần nổi của tảng băng khi nói đến kỹ năng tính toán của các nhà thiên văn, vốn được thúc đẩy bởi những nhiệm vụ họ đối mặt, và Jake đã đưa ra vài ví dụ minh họa. Hãy xem hình trực quan sau về Hệ ngoại hành tinh TRAPPIST-1 chẳng hạn:

Dễ nghĩ rằng đây là ảnh chụp thật như đời, nhưng thực tế nó là hình minh họa của họa sĩ: không phải dữ liệu gốc. Sự tồn tại của hành tinh được suy ra từ sao che khuất và nhờ mô hình thống kê của hệ như vậy dựa trên dữ liệu sau đây và tiếp theo (dưới dạng ảnh, dữ liệu của Ethan Kruse):

Làm sao thực hiện suy luận và phân tích thống kê này? Bằng Python, dĩ nhiên. Và thông qua một “mô hình thống kê cực kỳ tinh vi của hệ”; hơn nữa, việc tìm ra những hệ kiểu này, Jake nói, “cốt lõi là viết mã thống kê trong một pipeline phân tích dữ liệu phức tạp”.
Đây là một trong số nhiều dự án khoa học (trong thiên văn học) mà Jake giới thiệu cho thấy Python được dùng trong quy trình xử lý và phân tích dữ liệu. Đáng chú ý là tất cả các dự án này không chỉ viết bằng ngôn ngữ nguồn mở mà còn công bố mã nguồn trên GitHub, chẳng hạn Kepler và JWST, dự án sau đang cố gắng phát hiện khí quyển của các hành tinh khác để đánh hơi thành phần hóa học của các hành tinh quanh những ngôi sao khác nhằm tìm dấu hiệu hóa học của sự sống — các dự án này viết bằng Python, lưu trữ trên GitHub và dùng Jupyter notebooks cùng nhiều công cụ khác.
Liệu đây chỉ là giai thoại, tức một vài dự án Python ngoại lệ chứ không phổ biến? Không phải trong thiên văn học. Jake đã làm một phân tích cho thấy số ấn phẩm dùng Python tăng đều đặn:

Hãy nhìn “cây gậy khúc côn cầu” Python kia! Vậy ta đã xác định được rằng các nhà khoa học dùng Python ngày càng nhiều, nhưng vì sao họ dùng Python?
Jake đặt câu hỏi “Vì sao Python lại là công cụ hiệu quả đến vậy trong khoa học?”
Python như chất keo: về lịch sử, nhiều nhà khoa học phải dùng những pipeline dữ liệu vụng về, phức tạp và thực sự bất tiện để đi từ thí nghiệm và/hoặc dữ liệu đến kết quả có thể truyền đạt, bao gồm truy vấn cơ sở dữ liệu, thao tác dòng lệnh, dùng phần mềm chuyên dụng hoặc độc quyền, cho đến các công cụ trực quan hóa dữ liệu. Jake VanderPlas trích dẫn Dave Beazley một phần vì Dave nói rất chuẩn:
“Các nhà khoa học... làm việc với đủ loại hệ thống từ mã mô phỏng, gói phân tích dữ liệu, cơ sở dữ liệu, công cụ trực quan hóa, đến phần mềm tự viết — mỗi thứ lại có giao diện và định dạng tệp khác nhau. Kết quả là, một nhà khoa học có thể tốn rất nhiều thời gian chỉ để cố khiến tất cả các thành phần này phối hợp được với nhau theo cách nào đó...”
Và Python có thể tương tác với hầu hết các công cụ bạn muốn dùng trong nghiên cứu khoa học: nó kết nối, nó là chất keo. Như Jake nói, Python được dùng để “kết dính mớ công cụ tạp pí lù mà mọi người đang làm việc cùng; cú pháp cấp cao của Python bọc quanh các thư viện C/Fortran cấp thấp này”.
Một lý do khác khiến các nhà nghiên cứu đổ về Python (và những ai chưa làm vậy thì “nên”) là
SciPy) khổng lồ để dùng như mô-đun bên thứ ba.“Pin kèm theo” cho phép bạn thu thập dữ liệu web, triển khai máy chủ web, làm việc với hệ thống tệp và cơ sở dữ liệu, đọc JSON và còn nhiều hơn nữa!
Các mô-đun “bên thứ ba” mới là nơi mọi thứ trở nên thật sự thú vị. Ví dụ bao gồm, nhưng chắc chắn không giới hạn ở:
Như Jake nói, “nếu bạn có một vấn đề cần giải quyết, rất có thể bạn sẽ tìm thấy một thư viện hỗ trợ và nó có lẽ ở trên GitHub!”

Python tương đối dễ viết, đặc biệt so với các ngôn ngữ như C. Như Jake nói, “Với Python, nhất là khi chuyển từ C chẳng hạn, bạn viết điều mình muốn xảy ra và nó xảy ra; kiểu như viết giả mã có thể thực thi”.
Anh cũng trích Perry Greenfield, người nói rằng “Python là một ngôn ngữ rất mạnh cho nhà phát triển, nhưng cũng dễ tiếp cận với các nhà thiên văn. Khi hai nhóm người này cùng dùng chung công cụ, tôi nghĩ, lợi ích to lớn nảy sinh mà không phải lúc nào cũng được chú ý hay nhắc đến.”
Nhờ các công cụ như IPython và Jupyter notebooks, có cơ hội tuyệt vời cho việc viết mã linh hoạt và phân tích dữ liệu thăm dò, lặp lại ngay lập tức. Điều này dẫn đến rào cản gia nhập thấp vì bản thân việc lập trình khoa học là phi tuyến và có tính thăm dò. Jake chỉ ra rằng một số người có thể phàn nàn hoặc cảm thấy các công cụ này chậm, nhưng đối với nghiên cứu khoa học, điều then chốt là tốc độ phát triển, chứ không phải tốc độ thực thi, khiến các công cụ này trở nên lý tưởng.
Phần mềm nguồn mở có tinh thần rất phù hợp với yêu cầu cởi mở của nghiên cứu khoa học (thực tế, có lẽ còn hơn cả nhiều nghiên cứu khoa học). Chúng ta sẽ bàn kỹ hơn khi nói về bài phát biểu của Katy Huff, nhưng khoa học không chỉ diễn ra trong các bài báo được xuất bản; khoa học nằm ở kết quả, hướng dẫn/quy trình và khả năng tái lập kết quả; đó chính xác là điều mà phát triển phần mềm nguồn mở hướng tới. Jake đưa ra trích dẫn sau từ Buckheit và Donoho (1995, phỏng theo Jon Claerbout)
Một bài viết về kết quả tính toán chỉ là quảng cáo, không phải học thuật. Học thuật thực sự là toàn bộ môi trường phần mềm, mã và dữ liệu đã tạo ra kết quả.” — Buckheit và Donoho, 1995
Điều mà phần mềm nguồn mở và tinh thần của hệ sinh thái Python (khoa học và rộng hơn) mang lại là một khuôn khổ hy vọng có thể giúp chúng ta thoát khỏi khủng hoảng tái lập trong khoa học: “giải quyết tái lập là về khoa học mở” và tính cộng tác, được đồng kiểm, có thể công bố trên GitHub của nghiên cứu khoa học trong hệ sinh thái Python là chìa khóa cho sự cởi mở này trong khoa học. Nếu tôi muốn xem cách sóng hấp dẫn (mà Einstein dự đoán) được phát hiện năm 2016, tất cả những gì tôi cần làm là vào kho LIGO tại đây. Hoặc nếu bạn là một trong số ngày càng nhiều nhà thiên văn dùng gói Astropy cho nghiên cứu, bạn có thể tìm mã nguồn và cộng đồng tạo ra nó tại đây và việc nó cởi mở như vậy là kết quả trực tiếp của cộng đồng mô phỏng tinh thần nguồn mở và khoa học mở mà họ thấy trong cộng đồng Python rộng lớn. Xem bảng để biết những điều mà Jake (điều chỉnh từ Perry Greenfield) cho rằng cộng đồng thiên văn đã học được từ cộng đồng Python:

“Tôi đến đây để khai thác sức mạnh của các bạn cho mục tiêu của riêng tôi” Tiến sĩ Kathryn Huff nói với cộng đồng PyCon và bà đã đưa ra một lập luận thuyết phục về cách và lý do cộng đồng lập trình Python nói chung có thể giúp khoa học cứu thế giới. Bài phát biểu của bà đưa ra một lập luận chi tiết và đầy nhiệt huyết về lý do phát triển phần mềm nguồn mở nói chung, và Python nói riêng, đã tỏ ra hiệu quả trong Tính toán khoa học và nghiên cứu, thực hành khoa học nói chung. Bài nói còn tiến xa hơn khi chỉ ra vô số nơi mà cộng đồng lập trình và phát triển Python rộng lớn có thể dùng kỹ năng Python để giúp cộng đồng khoa học và cứu thế giới. Nếu bạn cho rằng nước là vấn đề nghiêm trọng của nhân loại, hay sức khỏe hoặc năng lượng, Kathryn đã có sẵn các dự án và kho GitHub với các issue mở để bạn có thể nhảy vào hỗ trợ. Bà đưa ra hàng chục ví dụ về các dự án và gói mở có issue mà bạn có thể đóng góp.
Kathryn (Katy) là một kỹ sư hạt nhân, cộng tác viên lâu năm của cộng đồng SciPy, tham gia vào Tạp chí Phần mềm Nguồn mở và dành nhiều thời gian cho The Hacker Within và Software và Data Carpentries, những tổ chức giúp các nhà khoa học sử dụng máy tính tốt hơn và tạo ra khám phá, góp phần cải thiện khả năng tái lập và sự thuận tiện khi các nhà khoa học dùng máy tính.
Sứ mệnh của Katy là cải thiện cách thức sản xuất năng lượng hạt nhân; và công cụ cô chọn là gì? Python! Trước khi đi sâu vào muôn vàn cách cộng đồng Python có thể giúp cộng đồng nghiên cứu khoa học, Katy đưa ra một lập luận mạnh mẽ về lý do điều này thực sự cần thiết. Katy trích R. K. Merton (1945) mô tả khoa học đòi hỏi nghiêm ngặt, có cấu trúc, giám sát cộng đồng chặt chẽ (một định nghĩa làm việc tuyệt vời về hoài nghi có tổ chức); tất cả đều là những phẩm chất không thể bàn cãi của cộng đồng Python nguồn mở.

Katy nhấn mạnh tầm quan trọng của điều này khi liệt kê các nguyên lý cơ bản của khoa học và làm rõ rằng phát triển phần mềm nguồn mở đã làm tốt hơn bất kỳ cộng đồng nào trong việc giữ vững các nguyên lý này kể từ thời Pythagoras (thế kỷ 6 TCN). Các nguyên lý cơ bản của khoa học gồm:
Máy tính “nên” giúp các nhà khoa học làm những điều sau:

Vậy thách thức là gì trong việc đưa nhiều nhà khoa học dùng phần mềm nguồn mở như Python để máy tính có thể giúp họ?
Vì vậy, lời hiệu triệu của Katy gửi đến cộng đồng Python:
“Tôi muốn mời bạn tham gia”.
Và việc kêu gọi như vậy là một lý do nữa để các nhà nghiên cứu dùng Python: có cả một cộng đồng lập trình nguồn mở khổng lồ sẵn sàng hỗ trợ họ. Như đã nói, Katy tham gia một hướng tiếp cận khác là tập trung giáo dục các nhà khoa học đang làm việc về cách dùng máy tính cho công việc. Có một số chương trình như vậy. Tôi khuyến nghị tất cả các nhà khoa học đang làm việc tham khảo Software Carpentry và Data Carpentry để xem liệu họ có thể giúp nhóm, khoa hoặc trường đại học của bạn không (câu trả lời: nếu bạn tính toán, rất có thể là có).
Vậy Tiến sĩ Katy Huff gợi ý lập trình viên giúp thế nào? Qua bốn bước đơn giản:
“Python là một ngôn ngữ rất mạnh cho nhà phát triển, nhưng cũng dễ tiếp cận với [các nhà khoa học]. Khi hai nhóm người này cùng dùng chung công cụ, tôi nghĩ, lợi ích to lớn nảy sinh mà không phải lúc nào cũng được chú ý hay nhắc đến”.
Nếu bạn có suy nghĩ, phản hồi và/hoặc trăn trở nào, cứ thoải mái liên hệ với tôi trên Twitter: @hugobowne.
blog
Matt Crabtree
10 phút