Nhân đọc topic gợi cảm hứng của cô bé Scarlet về tư duy lập trình, nhớ lại một vài suy nghĩ xưa xưa từ thời cấp 3, lẫn một số suy nghĩ mới hơn gần đây mà giờ tiện dịp để chém.

Tư duy lập trình là gì, và từ đâu?  



Thời đại của chúng ta ngày nay đang là thời đại của công nghệ thông tin, với các nhân vật xếp vào new titans của thời đại đều đến từ Silicon Valley. Chính điều này đã dẫn đến trào lưu càng ngày càng có nhiều các cặp bố mẹ quan tâm và sớm định hướng con cái theo khối ngành STEM (Science – Technology – Engineering- Maths), như có thể thấy rõ ở các trường hè lẫn các trung tâm tư vấn du học. 
Về chuyện này, có 2 tư duy thường thấy ở các cặp bố mẹ :
1. Học lập trình thì thêm thông minh; 
2. Phải thông minh mới học được lập trình.
Và cả hai tư duy này đều không chính xác lắm.

Xét về tính chất thủ tục, thực ra bình thường con người khi giải quyết vấn đề vẫn đang tư duy kiểu lập trình, như thuật toán tìm kiếm theo chiều sâu hay suy luận tiến/lùi trong lập trình chẳng hạn, thực ra đều là mô hình hoá cách con người vẫn ra quyết định hay suy luận trong thực tế. Chỉ khác là chúng ta không làm điều này một cách có ý thức chủ động, mà đôi khi theo quán tính, còn lúc lập trình chỉ là chuẩn hoá cái quy trình đó, vì ngôn ngữ lập trình thực chất là một khuôn dạng chuẩn hoá giúp máy hiểu được bạn muốn gì. Song vẫn là tư duy của chính bạn biểu diễn lại theo kiểu khác chứ không nảy thêm gì siêu việt.
Ngược lại, cũng không nhất định phải siêu việt mới có thể bắt đầu học lập trình.


Hãy xét một ví dụ có thể nghe hơi trẻ con, là tính tổng các số nguyên liên tiếp từ 1 đến n. Nếu bạn mang tư duy thông thường thì sẽ nghĩ một lúc, nhớ lại công thức Gausse ra n(n+1)/2 rồi mới bảo máy tính cho kết quả, còn nếu bạn có tư duy lập trình thì sẽ cho máy làm luôn kiểu nông dân cộng dần 1 đến n.
Về mặt toán học thì cách 2 là cách tay to nhất có thể, về mặt lập trình thì đó là giải pháp trong sáng ngây thơ mà đủ tốt, độ phức tạp thuật toán hai bên khác nhau song so với năng lực máy tính thì chúng khác nhau như con kiến đặt cạnh hạt cát. Ở đây tư duy lập trình thực ra lại là tư duy của người giỏi sai vặt hơn là giỏi toán.
Chuyện này có thể so sánh nôm na với một chuyện trong chính môn Toán. Đạo hàm ra đời đã đánh dấu từ nay việc chứng minh bất đẳng thức rẽ sang một hướng khác hẳn, máy móc hơn, công nghiệp hơn, nhưng hiệu quả. Thay vì lụi cụi tìm cách phân tích cộng trừ gộp nhóm để áp dụng bất đẳng thức, thì ta được quyền thẳng thừng lạnh lùng thấy biểu thức nào ngông ngáo thì hất hàm hỏi: “Chú kia đi đâu đấy, chú có khả vi ko?”. Chú kia há miệng đáp: "Có" thì không lôi thôi gì hết hãy phẩy nó, phẩy đến khi nó giơ tay hàng aka dấu không đổi thì thôi.
Học tư duy lập trình cũng như vậy, không làm bạn thông minh lên tức thì, cũng không cần bạn phải thông minh tanh tưởi, song vẫn giúp người bình thường giải được cả đống bài toán trước đó coi là khủng nhờ dạy họ cách tận dụng một công cụ mạnh. Thực ra gần như tất cả mọi người thời nay đều có thể và nên học lập trình ở mức độ cơ bản, vì nó sẽ rèn luyện thói quen  “dùng công cụ mạnh” này. Lý do phòng thí nghiệm Media Lab của MIT nghĩ ra ngôn ngữ lập trình Scratch với giao diện đồ hoạ trực quan để dạy cho trẻ con bé xíu chính là vậy, không phải để sau thành chuyên gia hay cơ hội nghề nghiệp gì to tát, mà để xây dựng một cách tư duy hiệu quả trong thế giới hiện đại. 

Scratch - lập trình chưa bao giờ gần gũi thế? 

Đến đây thì hãy thử bẻ lái sang một chủ đề hơi khác.

Rõ ràng ta đã thấy, lập trình không giúp con người thêm uyên bác, nó chỉ trao cho ta một công cụ mạnh là khả năng tính toán của máy tính. Song khi sở hữu một công cụ mạnh thì câu hỏi đặt ra với nhân loại sẽ là: Bài toán nào xứng đáng với công cụ đó? Nếu đã nắm trong tay thanh gươm huyền thoại Excalibur thì đối thủ tiếp theo của loài người không thể là trâu ngựa mà phải là con rồng trấn giữ pháo đài phương Bắc. Nhưng có nguy cơ con rồng ấy sẽ nuốt chửng cả nhân loại hay không?


Và rồi sẽ dẫn đến đâu?



Từ thời xa xưa của những truyền thuyết về người đồng, thần thoại Pygmalion, tiểu thuyết Frankeinstein, cho đến cả bây giờ, con người dường như chưa bao giờ từ bỏ mong ước sâu thẳm là: Sáng tạo ra linh hồn. Trình độ công nghệ lẫn bối cảnh thế giới ngày nay hội tụ đủ yếu tố để khao khát có vẻ ngông cuồng ấy có cơ thành sự thực, khi thế giới đang kỳ khởi sắc về A.I. hay là trí tuệ nhân tạo.
Song cuộc chinh phục công nghệ này cũng có thể sẽ là tham vọng cuối cùng của nhân loại. Chưa xét đến những kịch bản giật gân kiểu Skynet như anh Elon Musk dăm ba bữa lại lên mạng hốt hoảng, trước mắt AI đã đặt ra thách thức theo cách gần gũi hơn nhiều.


Isaac Asimov, một nhà khoa học và cũng là tác giả của tiểu thuyết đã chuyển thành phim I, Robot, từng đặt ra câu hỏi suy tư về các nghề nghiệp dành cho loài người trong một tương lai xã hội ngập tràn trí tuệ nhân tạo. Nếu các cặp bố mẹ thời nay đã một công lo xa cho con cái, hãy thử lo xem nghề nghiệp nào trong tương lai sẽ là cần thiết? Bên cạnh xu hướng STEM ở tương lai gần, thi thoảng hẳn bạn vẫn đọc thấy dăm ba bài báo khuyên tương lai xa nên cho con đi học đàn hát ca múa vì may ra những nghề đó sẽ trụ lại được với A.I.. 
Dưng có thực cửa thoát đơn giản như vậy?

A new Rembrandt? Nah, just another product of A.I.
Trên là một bức tranh do AI vẽ phỏng theo phong cách của danh hoạ Rembrandt. Dù làm rất nhiều người sửng sốt, thực ra vẫn có thể chỉ ra một số khiếm khuyết ở bức tranh này: Bóng tam giác phía dưới mắt, đặc trưng kiểu Rembrandt, đã bị biến thành 2 vệt nhoè không rõ hình dạng; khuôn mặt người đang nhìn nghiêng mà bóng đổ hai mắt lại bằng nhau; cuối cùng người đàn ông này không toả ra sự tự tin thường thấy ở tranh Rembrandt -- vốn là chân dung của những người giàu có quyền thế đã thuê ông vẽ. Nói cách khác, máy tính đã mô phỏng chính xác phương diện các pixel riêng lẻ, dưng lại bỏ qua rất nhiều luật liên kết đơn giản mà người thường cũng có thể nhận ra.
Nhưng mà, liệu điều đó có nói lên máy kém hơn người như nhiều nhà phê bình nghệ thuật bĩu môi chê không?  
Có chắc, sự toàn vẹn chính xác về cảm xúc là một thứ đáng gọi là thông minh hơn sự toàn vẹn chính xác về pixel? Không phải nghĩ thế là ta đang homo-centric, coi loài người là tiêu chuẩn của thông minh, cũng phiến diện y như cách hồi xưa dân châu Á nhìn dân Âu Mỹ nhuộm da nâu thì chê xấu hay sao?

Phép kiểm tra của Turing (Turing test - tiêu chuẩn coi máy tính thông minh nghĩa là có thể hành xử như người, bạn có thể xem thêm ở đây), thực ra chỉ là một trong nhiều cách định nghĩa trí tuệ nhân tạo. Có chắc gì sau này máy tính đã thống lĩnh thế giới, và nhìn lại lịch sử, nó sẽ chê các bức nhái Rembrandt của loài người là dở, và bức nhái của tổ tiên nó đây mới là tinh tế nghệ thuật hay không?
Mà ngay cả nhìn theo lăng kính con người thì, không phải dù AI chưa hoàn hảo ở hiện tại, nhưng nó cũng đã vẽ đẹp hơn vô số nhân loại đó hay sao?

Với thời gian sẽ hứa hẹn thêm nhiều tiến bộ nữa, liệu ngay cả lĩnh vực cảm xúc và sáng tạo, rồi cũng đến lúc bị AI chinh phục và hoàn toàn lấn sân con người chăng?
Đến ngày quá trình lấn sân ấy thành toàn, câu hỏi tự nhiên nhất sẽ là: Vầy đâu sẽ là ý nghĩa sự tồn tại của nhân loại?

Homo sapiens vs. machina sapiens?  




Có thể chả cần AI nổi loạn, thì  chính chúng ta cũng tự chất vấn: Vậy chúng ta có còn cần thiết cho thế giới hay không? 
Liệu con người còn nên mang niềm tin ngạo mạn như bây giờ về sứ mệnh dẫn dắt muôn loài và cai quản trái đất? Hay ta nên khiêm tốn mà nhìn nhận rằng mình chả có gì để tự hào vô đối như thế mãi được đâu. Và chuẩn bị dần tâm thế là loài người, y như cá vây chân, bò sát bay, thú có vú đời đầu hay một số vượn người cổ đại, chỉ đóng vai trò như những gạch nối để chuyển giao, và đến một lúc nhất định thì sẽ cần thiết bị tẩy đi khi tiến hoá chạm đến điểm ưu việt hơn là người máy?
Cũng có thể sẽ có kết cục hậu tận thế lạc quan hơn một chút nếu chúng ta nhìn sang số phận của một người quen cũ. 
Hỗn hợp của các thần thoại và tôn giáo đã vẽ nên cho ta một huyền thoại Sáng thế khá đầy đủ:
Chúa tạo ra loài người, con người ăn trái Trí tuệ, bị đuổi khỏi vườn Địa đàng, xuống trần gian, ứng với sự kiện được Prometeur trao tặng lửa và từ phát minh đầu tiên ấy con người dần dần tiến lên, đến chỗ làm chủ Trái đất này và thách thức uy quyền của Chúa.
Tương tự ngày nay, con người tạo ra robot và cũng luôn ngạo mạn cho mình dầu ngu ngốc đến đâu vẫn mang sự sống ưu việt hơn hẳn những cỗ máy vô tri.
Vài thế kỷ vừa qua đã chứng kiến Chúa và các bạn bè thánh thần khác của ngài phải lùi dần ra sau tấm màn nhung của lịch sử để nhường sân khấu cho con người toả sáng và bắn giết lẫn nhau, liệu đến thế kỷ nào, sẽ đến lượt loài người thoái khỏi ngai vàng của mình để nhường chỗ cho robot?
Nếu mọi chuyện diễn ra theo kịch bản ấy, có thể ít ra, con người cũng sẽ được an ủi là y như Chúa với con người, nhân loại dầu biến mất vẫn sẽ được một bộ phận robot đâu đó thờ phụng ...
... Mặc dầu dưới các nấm mồ, dù là một hố đất đen hay một kim tự tháp, họ cũng hiểu rõ rằng, điều này quả là hơi khiêm tốn so với những hào quang giống loài mình từng có thời sở hữu ....


Mà khoan, có thực chúng ta sẽ kết thúc?




Câu truyện tính tổng đầu post thực ra chỉ là một vd dạo cấp 3 thầy tôi nói trên lớp để dạy cách dùng vòng lặp for. Sau này gặp nhiều bài phức tạp hơn, tôi vẫn rất nhớ cái bài đơn sơ từ buổi lập trình cổ lỗ với Pascal ấy. Có lẽ vì nó đủ đơn giản mà minh hoạ đủ tốt sự khác nhau giữa tư duy toán và tư duy tin. Và đến một lúc nhất định, tôi lại thấy cần cập nhật câu chuyện đầu đời trên.
Với vd tổng dãy, chúng ta đã giữ lại mọi thứ khéo léo mình biết, và chìa cho máy tính một thứ tư duy thô thiển nhất, chúng ta đã giấu kín kiến thức cho riêng mình, và chia sẻ cho máy không gì ngoài mệnh lệnh. Đến một lúc con người sẽ xem lại cách nghĩ ấy. 
Đã có nhiều giải thích cho sự khởi sắc của AI vào lúc này, như tiến bộ phần cứng và tốc độ, cơ hội thu thập dữ liệu lớn, sự chuyển dịch quan tâm từ hàm sang dữ liệu, .... Trong đó có một nguyên nhân khá gần cách xã hội con người tiến hoá.
Ở thời đại của “I am because you are” như giờ, hơn lúc nào hết người ta càng thấm nhuần một chuyện: Việc bo bo giữ kiến thức làm của riêng như thời xưa không phải luôn là một chiến thuật tối ưu. Đôi khi phải cho đi trước thì lại mới mong nhận về khả quan. Chia sẻ kiến thức là một từ khoá của thời nay mà chính spiderum cũng là một ví dụ. Tự nhiên là, kéo theo sự chia sẻ kiến thức cả cho máy tính. Giờ người ta hay nói về các mức độ học máy, aka tự máy vọc từ dữ liệu để ra tri thức mới. Nhưng thực ra trước đó vẫn cần cung cấp cho máy nhiều nhất có thể những tri thức sẵn có. Công việc lập trình lúc này gần như ngược câu chuyện tính dãy số ở trên.
Người lãnh đạo dự án tôi đang làm nói rằng “This project would revolutionalize the way people do Mathematics”. Điều đó thời gian sẽ trả lời, hiện tại tôi biết công việc đang làm sẽ thay đổi tư duy bản thân về lập trình. Mục tiêu cuối là hoàn thiện một thư viện để hình thức hoá (formalize) các xuất bản toán học và xây dựng các công cụ hỗ trợ chứng minh lẫn thu thập dữ liệu phục vụ học máy (Google đang làm điều cuối này và họ có một cơ sở khoảng vài K hay vài chục K j đó bài báo đã hình thức hoá, song thế vẫn chưa là bõ bèn). 
Nói đến việc hình thức hoá tri thức, bạn nào học AI ở bậc đại học hẳn biết về việc có thể chọn logic làm nền concept để truyền tải kiến thức chuyên gia cho AI. Nhưng việc thuộc các luật logic không đồng nghĩa với “thông minh”, theo cả nghĩa máy lẫn người. Tại sao nhiều người cùng thuộc logic mà người này nghĩ ra cách giải quyết vấn đề người kia lạikhông?
Rõ ràng, đầu tiên chúng ta phải xác định người lập trình lúc này ko còn là ông chủ sai phái máy móc như chuyện tính dãy số trên, người lập trình sẽ phải làm thầy dạy máy thứ hay ho họ biết. Hai, nhưng hơn thế, ở đây không chỉ chuyện có thiện chí muốn truyền dạy,  quan trọng hơn là chuyện liệu con người hiểu rõ đến đâu họ đã biết những gì. Liệu có tồn tại những khuôn mẫu kinh nghiệm (heuristic pattern) nào đó, mà ngay cả chính chúng ta khi giải toán xong cũng không ý thức rõ ràng mình đã dùng hay không? Làm cách nào nhận diện những khuôn mẫu tư duy hữu ích ấy, chuẩn hoá chúng rồi truyền vào cho máy tính? 
Đòi hỏi ấy của công việc, một hôm gợi ra cho tôi suy nghĩ vơ vẩn:
Dưng nếu một ngày, có cả những thứ ta biết mà mãi mãi không thể biết ta đã biết thì sao? 
Làm cách nào để dạy?
Câu hỏi ấy, thật tình cờ, đã liên kết với 3 phần nói ở trên:
Liệu có phải rằng chính thứ kiến thức không tường minh, vô cách chỉ mặt đặt tên hay trích xuất từ dữ liệu này, sẽ là lãnh địa cuối cùng mà máy tính không thể chiến thắng con người?
Phải chăng, ở nơi đó sẽ có hy vọng cửa thoát cho nhân loại? 
Và tôi lại nhớ một câu chuyện khác ...


(to be continued) 
Tag các bạn mà vài dịp chém gió đã góp cảm hứng cho bài này: @scarletnguyen13 @ken0106 @AlexChristin

My Facebook: Gwens