phần cứng, phần mềm

Lảm nhảm về công nghệ… Rất lâu về trước, tôi đi làm kỹ sư phần mềm cho một công ty, cty này vừa làm cả phần cứng & phần mềm! Phần cứng (camera, chip xử lý ảnh, hệ thống máy tính…) do tụi TQ làm, từ thiết kế mạch cho đến sản xuất, còn phần mềm thì do người VN phụ trách. Đây không phải là chuyện người TQ hay VN, nói đúng hơn là, đám làm phần cứng nhìn đám làm phần mềm bằng… nửa con mắt! Phần mềm nếu có lỗi, thì ta ra phiên bản sửa lỗi mới thôi, rất đơn giản! Còn phần cứng mà lỗi là hàng chục ngàn board mạch đã bán cho khách hàng phải triệu hồi, thay thế, chi phí tính bằng triệu đô, chưa kể tổn thất về uy tín công ty và rất nhiều lằng nhằng về chăm sóc khách hàng và thủ tục giấy tờ, thỉnh thoảng gặp phải thằng khách hàng khó tính là thế nào cũng phát sinh hệ quả kiện cáo!

Nhiều người không hiểu rõ các hệ quả pháp lý của một sản phẩm lỗi, ví dụ như camera an ninh. Giả sử như xảy ra một vụ án, ngân hàng thất thoát tiền bạc, hay công sở xảy ra một vụ quấy rối, nhưng truy tìm hình ảnh trong camera an ninh thì… không có, vì thật trùng hợp, đúng lúc xảy ra vụ việc thì máy chạy nóng, crash, không ghi được hình! Nếu là ở VN thì mọi người sẽ nhìn nhau cười huề cả làng thôi, nhưng ở Mỹ thì khổ chủ sẽ đâm đơn kiện người bán hệ thống camera, và người bán camera tiếp tục kiện công ty sản xuất camera, kiện đến 4, 5 cấp! Chỉ cần một vụ việc mang tính chất điển hình, nghiêm trọng không được xử lý ổn thỏa là… công ty phá sản! Cái “liên đới trách nhiệm” nặng nề như thế, dẫn đến đòi hỏi về độ ổn định, tin cậy của hệ thống từ phần cứng đến phần mềm rất gắt gao!

Nên làm phần cứng & phần mềm là 2 thế giới rất khác biệt, nói theo cách nào đó là nước sông không phạm nước giếng! Đương nhiên trong giếng thế nào cũng có nhiều con ếch ngồi dưới đáy – tỉnh để chi oa – 井底之蛙! Trong số làm phần mềm hiếm người có được cái nhìn toàn cảnh, hiểu sâu về hệ thống, biết tận dụng sức mạnh của phần cứng kết hợp với sự uyển chuyển của phần mềm để làm ra một sản phẩm xuất sắc, nổi trội hơn so với các đối thủ cạnh tranh, như kiểu người ta hay nói: “cần bao nhiêu kỹ sư phần mềm để thay một cái bóng đèn” á! Nên cũng từ đó tôi cũng hiểu rằng, có những công ty “thuần” về phần mềm như Microsoft, nhưng cũng có những công ty “ta đây làm tất” như kiểu Apple, hiểu và kết hợp được sức mạnh của hai thế giới khác biệt mới thực sự là điều đáng nể!

đẽo cày giữa đường

Bài này về đại ý là đúng, nhưng cũng chưa đúng hoàn toàn về chi tiết, sau thời gian dùng A.I. như một người phụ tá cho việc lập trình – coding thì tôi nhận ra một vài điểm như sau: #1 A.I. có khả năng tổng hợp thông tin rất tốt, có thể dùng nó như công cụ tóm tắt kiến thức, tìm hiểu nhanh vấn đề. #2 A.I. có khả năng đưa ra những giải pháp mang tính tham khảo, nếu các giải pháp đó là phổ biến, đã có nhiều người làm, nhiều ví dụ có sẵn. #3 A.I. hoàn toàn KHÔNG có khả năng logic, nếu bắt nó phân tích về những chuyện nó không hiểu thì đến hơn 90% trường hợp là sẽ sai, và thường là sai theo kiểu rất ngớ ngẩn. #4 Nhận diện cái sai của A.I. rất dễ, như tôi đọc lướt qua chỉ vài phút là có thể biết A.I. sai ở đâu và vì sao lại sai!

Nên tôi thích dùng A.I. như một công cụ kiểm lỗi là chính, nó sẽ giúp phát hiện ra những lỗi phổ biến thường gặp. Con người mà, ai cũng mắc lỗi cả, tay gõ nhanh tạo ra nhiều lỗi typo hay những dạng nhầm lẫn khác. Nhưng không nên dùng A.I. cho các vấn đề cần kỹ năng logic hay các cân nhắc mang tính cấu trúc, phần lớn thời gian A.I. sẽ đưa ra những ý kiến theo kiểu “đẽo cày giữa đường”! Thậm chí có lúc nó nói thế này, sau lại nói thế khác ngược lại, chỉ phí thời gian và công sức nếu lúc nào cũng nghe theo lời nó. Với trình độ như hiện tại thì A.I. chẳng có gì đáng sợ, đáng sợ thực ra lại chính là… con người, viết câu văn không thông, diễn đạt ý tưởng không được, nhưng lúc nào cũng cố gắng sử dụng A.I như một loại… “bùa chú”.

OR & XOR

Một trong những vấn đề nhỏ, nhưng quan trọng của A.I. là nó không phân biệt được “Inclusive or” (OR) và “Exclusive or” (XOR), mà đây vốn là sự nhập nhằng của ngôn ngữ tự nhiên. Nhập nhằng tuy là sự không chính xác, nhưng nó có hệ quả là bắt con người phải suy nghĩ, phải dựa vào ngữ cảnh để suy luận, đâu là OR và đâu là XOR, nhưng A.I. thì không tự suy luận được, nên dẫn tới những tình huống rất buồn cười. Ví dụ về OR và XOR:

– XOR: Bạn muốn uống trà hay cà-phê!? => Đây là “Exclusive or”, loại trừ nhau, vì thường chỉ chọn 1 trong 2.

– Cho tôi cà-phê nhé!

– OR: Vậy bạn muốn cà-phê với kem hay đường!? => Đây là “Inclusive or”, vì có thể thêm cả đường, cả kem, không loại trừ nhau!

Đương nhiên khi bạn hỏi A.I. mày có phân biệt được OR và XOR không thì nó sẽ trả lời là CÓ, còn hùng hổ đưa ra vô số ví dụ để chứng minh là nó “có hiểu”! Nhưng đừng vội tin là thật, chỉ đến khi gặp tình huống… không có trong cơ sở dữ liệu của nó thì mới thấy hoá ra A.I. không thể phân biệt được, vì nó chỉ lặp lại mọi thứ như con vẹt mà thôi! Nói chung là ở tầng suy luận logic thì A.I. vẫn còn phải loay hoay thời gian rất rất dài nữa!

cho tới chừ đây

Tình hình là gần nhà có một nguồn phát sóng gây nhiễu không xác định được, cả 2 con chuột không dây và 2 cái bàn phím không dây đều bị nhiễu đến mức không xài được! Bàn phím thì dễ vì nó có nhiều cách thức kết nối, chỉ cần đấu dây vào là xong, nhưng chuột thì thua, đành phải chạy đi mua một con loại có dây! :( Cho tới chừ đây tới chừ đây, Tôi mơ qua cửa khám bao ngày. Tôi thu tất cả trong thầm lặng, Như cánh chim buồn nhớ gió mây!

bánh vẽ

Tôi cho rằng tất cả những sự bơm thổi về A.I. – trí tuệ nhân tạo đều có 2 mục đích chính: một là để IPO (lên sàn chứng khoán) cho thành công, và hai là để thu thập dữ liệu người dùng (data, code, etc…) tiến hành nghiên cứu thị trường. Tìm cách đánh vào nỗi lo sợ là xưa rồi, giờ đây chúng nó tìm cách đánh vào sự mơ hồ, không chắc chắn trong nhận thức nội tại. Đương nhiên, đánh giá, quy kết A.I. một chiều như thế cũng có phần hơi đơn giản, vì…

Khoa học – kỹ thuật sẽ luôn luôn phát triển và sẽ luôn “vẽ ra” những “chân trời mới”. Nhưng đó cũng là lý do chúng ta phải phân biệt rõ ràng giữa “khoa học” (dạng những lời hứa hẹn 5, 10, 20… năm nữa sẽ làm được, cái “chân trời mới”, cái “bánh vẽ” đó bao giờ mới có), và “kỹ thuật” (số liệu, logic, khả năng hiện thực ngay trước mắt). Và tất nhiên không thể dùng cái “bánh vẽ” đó cho những công việc tối quan trọng, ví dụ như dùng để giáo dục thế hệ trẻ!

Thế giới thật vận hành theo những “quy luật bốn chữ” vô cùng rõ ràng và khắc nghiệt, ví dụ như: “tiền tươi thóc thật”, hay “tàu to súng lớn”, etc… Cách nhanh nhất để hũy hoại một con người là đưa ra những cái “bánh vẽ”, làm cho anh ta tin vào, nào là “khoa học”, nào là “trí thức”, để anh ta tự buộc mình vào những “vọng tưởng” đó mà quên đi các sự thật “kỹ thuật” rõ ràng! Bất hạnh thay những dân tộc chỉ có (ngụy) “khoa học” và (giả) “tư tưởng”!

xếp gạch

Qua trao đổi với nhiều người “dùng A.I.” trong làng công nghệ thì thấy rõ là: phần lớn họ không tự phát biểu được vấn đề của chính mình, không biết cách diễn giải, trình bày bài toán họ đang đối mặt, và do đó, họ “hy vọng” có thể dùng A.I. giúp “làm rõ, gỡ rối” một cách nhanh chóng mớ bòng bong bên trong chính họ! Đây thực chất là một dạng “vọng tưởng” phi lý, đến bản thân anh còn chưa biết anh muốn gì và cần phải làm gì thì sẽ không có một “đấng – tạo sinh” nào giúp được anh cả, nói cho ngay là như thế!

Thứ hai là họ “ngộ nhận” về những dạng bài toán mà A.I. có thể giải quyết. Một số dạng bài mẫu, đơn giản đã được làm sẵn thì A.I. copy vô cùng lẹ, ví dụ như bạn prompt: xây dựng cho tôi một cái app cấu trúc MVC (model – view – controller) gồm những đối tượng sau… thì A.I. sẽ đem code nó đã học được xây thành khung ứng dụng cơ bản rất nhanh. Nhưng nếu bài toán bạn đang giải là mới, không có trong cơ sở dữ liệu của A.I thì việc xây app, làm sản phẩm cũng vẫn sẽ là… xếp từng viên gạch logic mà thành thôi!

dev ipad

Developer mà thiết bị chỉ thế này thôi á, vâng, tạm thời là như thế… Một cái iPad nhỏ không chạy xCode được, chỉ có thể dùng như một thin-client để thao tác trên server! Màn hình 10.2 inch tuy nhỏ nhưng rõ đẹp, chữ to không hại mắt, đủ đọc tài liệu và giao tiếp bằng hình ảnh, âm thanh! Quan trọng là iPad có cấu tạo nhỏ, bền, lại bọc giữa nhiều lớp bảo vệ, không sợ bị cấn, bể như Macbook 16 inches mỏng và lớn khi phải di chuyển nhiều. Đến một lúc, bạn biết rằng: ý tưởng, code, hay bất kỳ điều gì khác là nằm trong đầu bạn chứ không nằm ở thiết bị, phương tiện, hay công nghệ!

Đã nhiều lần thử vibe – coding (code có sự trợ giúp của A.I.) nhưng thất vọng vì hiệu suất khá tệ, có lẽ vì tôi old – schooled, bắt đầu code từ thời DOS 5.0, một tay gõ mã, một tay… lật tài liệu tham khảo giấy, tất cả tạo thành thói quen: gì cũng phải tự ghi nhớ, tự gõ, thậm chí không dùng auto – completion! Dù không hề chê A.I, sau khi prompt mô tả vấn đề, nó đưa ra giải pháp, tôi phát hiện lỗi, bảo nó thì A.I. tự sửa lỗi được, lại phát hiện đoạn code chưa tối ưu, bảo nó thì A.I. vẫn tự cải tiến được! Nhưng quá nhiều lần prompt sửa tới sửa lui mất thời gian… tôi tự gõ cho nó lẹ!

Có thể đánh giá rằng A.I. đã “giả lập” được kỹ năng code gần bằng với trình độ junior – beginner, tôi nói là “giả lập – làm giả” chứ không nói là “làm thật”, tức những đoạn code đơn giản đã được con người làm sẵn đâu đó thì phần lớn thời gian không cần phải suy nghĩ nhiều nữa, dùng A.I. để copy cho lẹ! Nhưng những kỹ năng thuộc trình độ senior – advanced, chủ yếu là khả năng xây dựng nên cấu trúc của code – base lớn, xử lý tinh tế các vấn đề về memory, performance, và giải thuật, những điều phải đọc giữa – các – dòng – code (read between the lines) thì A.I. chưa làm được!

ảo giác tiến bộ

Nói rất hay và nói vô cùng đúng… Khi con người ta phải dùng tới những ngôn từ bóng bẫy, có cánh nhưng mơ hồ, phù phiếm (nôm na tức là… “đĩ miệng”) thì cũng có nghĩa là họ đang loay hoay tìm cách giấu nhẹm, né tránh một cái thực tế, một thực trạng rất không vừa ý nào đó! Suy cho cùng, không phải là chúng ta có được máy móc, công nghệ gì, mà vấn đề vẫn chỉ đơn giản là… con người chúng ta đã thay đổi như thế nào, có năng lực suy nghĩ như thế nào, có khả năng tư duy, phân tích, kế hoạch và hành động như thế nào!?

Và khi con người không thay đổi được, cái “tâm” không tiến bộ được, thì dù bạn có “khoa học công nghệ” đằng trời thì câu chuyện cũng chỉ là “chiếc áo & thầy tu” mà thôi! Cũng có chút liên quan (vì đây chính là A.I.) tự dưng một cái quảng cáo hiện lên trên Facebook: “Bạn có phải là người giải quyết vấn đề tự nhiên?”, chẳng có gì là “vấn đề tự nhiên” cả, câu này ý muốn nói: “Bạn có phải tự nhiên đã là người giải quyết vấn đề!?” Đúng là thời đại kỳ quặc, viết câu tiếng Việt không thông, lúc nào cũng “A.I. – trí tuệ nhân tạo” ầm ầm! :(

A.I and coding

Vấn đề với các dạng “generative A.I.” đó là chúng đã “ăn cắp” khái niệm “generative” của Noam Chomsky, ăn cắp theo kiểu “đánh tráo, mạo danh”, có “tạo sinh – generative” mà không có “cấu trúc – structure” như Chomsky mô tả! Mà đến cấu trúc còn không có thì suy luận kiểu gì, đó là chưa kể có cấu trúc rồi cũng chưa chắc đã suy lý được! A.I. tạo sinh, đó đơn giản là những mô hình mang tính thống kê, và do đó, phù hợp với các tác vụ tìm kiếm, phân loại thông tin, điều mà nó làm rất xuất sắc. Từ góc độ này, A.I rất hữu ích cho lập trình viên!

Đã rất nhiều lần, A.I. làm tôi đi từ ngạc nhiên này đến ngạc nhiên khác vì khả năng tổng hợp thông tin của nó! Ví dụ như tôi hỏi A.I. làm sao để tính số Pi, nó sẽ lần lượt đưa ra các phương pháp Leibniz, Monte Carlo, tiến đến phương pháp dùng chuỗi Gregory – Leibniz, rồi dùng chuỗi Nilakantha, và rồi dùng giải thuật Chudnovsky để tính số Pi, và cuối cùng là dùng Python để chạy song song các tính toán nhằm tối ưu tốc độ. Như thế, A.I. giúp ta tiếp cận rất nhiều thông tin, kiến thức, có những cái thậm chí trước đây chúng ta không hề biết đến!

Nhưng đừng vội đánh giá như thế tức là A.I. đã có suy nghĩ, đã có trí thông minh. Nó chỉ là tập hợp các dữ liệu, kiến thức của nhân loại mà thôi. Đứng trước A.I. ta không thể không có cảm giác choáng váng vì thông tin, kiến thức quá nhiều như thế, nhưng đồng thời ta cũng biết rằng, nó lặp lại các kiến thức đã được tích lũy trong các corpus, trong các cơ sở dữ liệu, chứ bản thân nó không biết phân tích đúng sai, không hình thành hệ suy luận. Cái mà ta đang coi là “suy luận” của A.I. thực chất cũng là các suy luận đã được “hiển ngôn” trong CSDL.

Vấn đề với các dạng generative – A.I. trong lập trình… nó như một cái hố trống hoác để những người không biết code, không hiểu công nghệ nói chung, có thể… thảy mọi thứ vào đó. Đứng trước một vấn đề họ không hiểu, không định nghĩa được, không làm được, họ phải cố bám vào một cái công cụ “vạn năng”, theo kiểu: cái này A.I chắc chắn làm được, cái này low-level, mình không cần quan tâm vì đã có A.I. làm thay v.v… Nhưng họ chỉ nhắc đi nhắc lại như một kiểu “hype” máy móc vậy thôi, chứ họ chưa tự mình chứng thực bao giờ.

Nếu họ có thể tự suy nghĩ được thì họ sẽ tự biết được vì sao A.I. không thể code! Nếu họ có thể tự mô tả vấn đề, thì họ cũng sẽ tự hiểu ra là… các vấn đề đó đều quay về các “bài toán kinh điển” trong SGK, và thường là… chẳng mấy liên quan đến A.I.! Cách thức gần nhất mà A.I. cho thấy nó có thể lập trình là: người dùng viết một dạng pseudo – code (mã giả) rồi dùng A.I chuyển mã giả đó thành mã thật. Một số người không rành lập trình thường xài cách này, nhưng khi đó, mã giả phức tạp và dài dòng… còn hơn cả mã thật!

Narcissus

Dư luận về cái clip robot – Xuân Vãn – TQ thật khủng khiếp, đủ kiểu điên khùng, nguy hiểm, từ phủ định trắng (cho rằng đều là CGI – kỹ xảo điện ảnh) cho đến sợ hãi, lo ngại v.v… Những ý kiến nghe có vẻ “tỉnh táo” nhất thì kêu gọi học A.I. để bắt kịp với thời đại! Tôi cho rằng cái ý kiến này cũng vô cùng… tào lao! Trong làng CNTT có nhiều ý kiến sai lầm rằng, bây giờ cái gì A.I. cũng “biết”, nên chúng ta chỉ cần học A.I. (hay các công nghệ cấp cao, “đằng ngọn” là được)! Cũng như giáo dục một đứa trẻ vậy, bất kể là A.I. đã đi tới đâu, việc học với một đứa trẻ vẫn là phải bắt đầu với những điều đơn giản nhất, là hành văn, là logic ở cấp độ sơ khai. Nói ra câu từ phải có ý tứ chặt chẽ, ngữ nghĩa phải hiểu sâu xa cho đến tận cùng.

Trong ngành CNTT vẫn là phải bắt đầu từ những điều đơn giản nhất, “let start at the very beginning…”: thuật toán, cấu trúc dữ liệu, kỹ năng lập trình ở cấp tương đối thấp. Cho đến hiện tại, con người khác với A.I là ở chỗ chúng ta biết đúng sai, biết suy lý, biết hình dung và tưởng tượng, còn A.I. mặc dù “biết” hàng tỷ terabyte dữ liệu nhưng nó vẫn không hiểu được những logic đơn giản nhất! Không có cách nào “đi tắt đón đầu”, đừng chạy theo những thứ “hư ảo” mà bỏ qua những điều đơn giản, đừng nghĩ rằng chỉ cần dùng những “ngôn từ có cánh” là có thể mau chóng trở nên “hiểu biết”, để rồi cuối cùng trở thành thể loại “Narcissus – hoa thủy tiên – ái kỷ, tự kỷ”, ngoài cái tôi u-tối ra không thấy được điều gì khác!