Tại sao code theo trường phái native sẽ sớm hay muộn bị mất đi

6752

Tại sao code theo trường phái native ví dụ code C# hay Swift rồi compile ra mã cuối sẽ sớm hay muộn bị mất đi, giống như không còn ai đi code mã máy hay assembly nữa.


– Compile time: đó là con dao 2 lưỡi, khi compile thì nó tối ưu code chạy nhanh, nhưng nó cũng lấy đi của bạn thời gian chờ đợi khủng khiếp, điều này đặc biệt nguy hiểm khi 80% thời gian là dính lỗi crash, nó cứ lặp đi lặp lại đốt hết cả ngày chả làm nên trò gì.


– Live preview: Vì native nên code của bạn không thể đơn giản mà hot-reload, nó cần phải install mã chạy và mọi thứ start lại từ đầu, cho nên may mắn có 1 live preview giả lập của IDE đi nữa cũng ko giúp bạn nhiều, nó ko thể hiểu được logic hiển thị thứ mà chiếm 80% thời gian lập trình. Dù muốn hay không bạn cũng nên công nhận backend ngày càng được dịch vụ hoá nhưng frontend thì vẫn còn tiến chậm hơn nhiều, AI có thể giúp tạo ra backend tự động nhưng frontend liên quan đến cảm xúc trải nghiệm là cái gì đó đòi hỏi khá nhiều tính nghệ thuật bên cạnh tư duy logic, hay có thể nói nó đơn giản hơn để bắt đầu nhưng có rất nhiều cấp độ sâu hơn để đạt tới.


– Technical debt: Dù muốn hay không thì lý do mà assembly hay mã máy toi là do nguyên lý máy tính đã nhanh hơn đáng kể, với cả thuật toán với cấu trúc dữ liệu khiến hệ thống nhanh hơn cấp số nhân so với ngôn ngữ là cấp số cộng, hơn nữa với các kỹ thuật inline cache giúp compile trở lại các ngôn ngữ bậc cao xuống thấp hơn cũng tăng tốc gần như code bậc thấp, bạn có thể hình dung nó giống như là cache kết quả tính toán khi vào mode production vậy, và đây là lúc các tool môi trường phát triển.

Tuy nhiên máy tính không phải cứ nhanh gấp đôi mỗi vài năm nữa nên C++ vẫn thịnh, nhưng nếu phần cứng lại phá rào cản nữa, khi mà nhanh tới mức bạn không còn quan tâm nó nhanh gấp đôi thêm nữa, cũng như dù code ngôn ngữ script invoke gọi native runtime mà nó chạy trên app vẫn nuột ko thể nhận ra, đó là lúc ko còn khái niệm native, vì ko có sự khác biệt.

Nếu coi java là native thì mã máy là gì?, hay Java vẫn là script gọi mã máy, chỉ là bậc cao gọi bậc thấp do compile lại, càng mềm dẻo kiểu như ngôn ngữ tự nhiên càng nhiều case thì càng phải lựa chọn nhiều đưa ra quyết định chậm nó mới chậm, tuy nhiên giữ lại quyết định theo kinh nghiệm là cache inline, hoặc xa hơn optimzie theo tí AI giống như cách con người hiểu ngôn ngữ tự nhiên, máy tính hiểu ngôn ngữ script, thì sẽ ko có giới hạn về ngôn ngữ và tốc độ thực thi nữa

Techtalk via thanhtupham

CHIA SẺ