Lập trình web: Quá nhiều lựa chọn

Linh Le

Hiện nay nghề lập trình web đang ở giai đoạn khá thú vị. Một mặt là do các trang web ngày nay có nhiều thông tin đa dạng, giúp cho các lập trình viên tiếp cận được nhiều nguồn tham khảo hữu ích khi gặp vấn đề hoặc muốn nâng cao kĩ năng. Ngoài ta, các ngôn ngữ lập trình và công nghệ luôn được cải tiến không ngừng, từ đó việc lập trình web đã mang lại hệ sinh thái giàu mạnh, giúp cho các lập trình viên tạo ra các giải pháp mạnh mẽ.

“Giới hạn của các lập trình viên web thực sự đã rộng mở hơn trong những năm vừa qua khi chúng ta có thể lựa chọn, theo đúng nghĩa đen, loại ứng dụng nào để xây dựng và loại trải nghiệm nào chúng ta muốn đem tới,” Sam Basu, phát ngôn viên lập trình của nhà cung cấp dịch vụ phát triển ứng dụng Progress cho hay.

Tuy nhiên, hệ sinh thái đa dạng đó có thể gây nên những rắc rối vì hiện tại có quá nhiều công nghệ và ngôn ngữ khác nhau để lựa chọn. Thật khó để quyết định các team và công ty lập trình nên đầu tư vào công cụ nào – đó là chưa kể tới những yếu tố tỉ lệ giao diện (form factor) khác nhau cũng như những nhu cầu người dùng khác mà các lập trình viên web cần phải lo lắng.

“Nếu bạn là người mới, có thể bạn sẽ phải vật lộn với hàng đống lựa chọn. Framework mới mọc lên mỗi ngày, dẫn đến hậu quả là có quá nhiều lựa chọn và độ đa dạng quá mức cần thiết,” Basu nói. “Với các lập trình viên web, bức tranh này ngày càng lớn dần. Chúng ta còn có những thứ khác cần phải ghi nhớ khi xây dựng các ứng dụng, và code của chúng ta đang trở nên mới lạ hoàn toàn, kiểu code mà trước nay chưa từng dành cho web.”

May mắn là những vấn đề này không phải là không thể giải quyết, và hiện tại cũng có nhiều xu hướng và giải pháp đang được nghiên cứu nhằm giúp cho công việc của lập trình viên dễ dàng hơn.

Ứng dụng Web tiến bộ (Progressive Web Application)

Bạn có thể là một lập trình viên web, nhưng chiến lược phát triển web của bạn có thể không chỉ dành cho web nữa rồi, theo Jason Wong, phó chủ tịch phân tích của hãng nghiên cứu Gartner cho hay. Người dùng đang truy cập vào nhiều ứng dụng web với nhiều form factor khác nhau, điều đó khiến cho các tổ chức được kì vọng là sẽ mang đến trải nghiệm di động.

Một xu hướng mới nổi mà các lập trình viên và tổ chức đang hướng đến là các ứng dụng web tiến bộ (PWA), những ứng dụng đang trên đà tăng trưởng trong vài năm qua, mà 2018 chính là năm chúng được cho là đã đột phá vượt bậc. Khi Apple thông báo hỗ trợ tập lệnh service worker vào đầu năm ngoái, thì nó đã lót đường cho PWA. Năm 2019 này, theo như Wong giải thích thì chúng ta đang trong tình trạng vỡ mộng tột cùng của chu trình quảng bá sản phẩm (hype cycle). “Mọi thứ chỉ là vấn đề thời gian, sự vững mạnh và việc hình thành những tiêu chuẩn dùng trong các trình duyệt và hệ điều hành được ứng dụng để vận hành toàn bộ quá trình từ lúc đi vào mainstream cho tới lúc thu hút được sự quan tâm đáng kể chỉ là vấn đề thời gian,” anh nói

PWA giúp các team lập trình có thể dùng các công nghệ web để xây dựng trải nghiệm di động mà không cần phải thông qua app store. Theo như Wong, PWA không được xây dựng với mục đích thay thế các ứng dụng di động. Chúng chỉ thay thế các ứng dụng di động tệ hại và có thể là bàn đạp cho một chiến lược di động to lớn hơn. “Tổ chức nào chỉ đơn giản là muốn xuất hiện trên app store thì sẽ sớm bị tụt hậu. Họ đem những thứ đã có sẵn hoặc trông thân thiện với di động, đóng gói lại, sau đó phát hành dưới dạng ứng dụng hybrid hoặc chỉ là ứng dụng di động hết sức cơ bản trên app store. Họ không tiếp nhận hay gắn kết với những gì mà họ đang tìm kiếm, bởi vì họ không xem di động là một mảng đầu tư chiến lược,” Wong nói. “Giải pháp PWA cho phép họ tận dụng phương pháp cẩn thận nhiều hơn để hiểu rõ việc xây dựng một trải nghiệm giống ứng dụng thật là như thế nào.”

Với PWA, các lập trình viên có thể tận dụng cache, các thông báo offline và những tính năng nâng cao mà người dùng cần đến. Một khi họ cảm thấy việc tạo ra những trải nghiệm như thế này là điều thoải mái thì họ có thể tiếp tục tạo ra một ứng dụng di động. PWA là một cách để làm quen với các trải nghiệm mà không tốn thời gian, tài nguyên hay công đầu tư, Wong giải thích.

“Không phải mọi thứ đều phải là ứng dụng native trên các thiết bị di động. Nếu ứng dụng của bạn chủ yếu vận hành bằng dữ liệu, thì bạn có thể không cần PWA và vẫn tạo ra trải nghiệm hoàn toàn tốt đẹp có thể gắn kết với người dùng,” Basu nói.

Một chiến lược khác dành cho PWA là giữ chân người dùng, Max Lynch, CEO và đồng sáng lập của nhà cung cấp giải pháp phần mềm web Ionic cho hay. Ví dụ, một trang web như Pinterest cũng có ứng dụng di động, nhưng vì họ có hệ thống tìm kiếm mạnh mẽ, nên thật sự không có ý nghĩa gì lắm khi yêu cầu người dùng tải ứng dụng đó. “Bạn không muốn liều lĩnh đưa người dùng tới app store khi họ có thể tìm thấy thông tin ngay lập tức mà lại chất lượng với PWA đâu,” Lynch nói.

Các ngôn ngữ lập trình

JavaScript gần đây được xem như là ngôn ngữ dành cho web, theo như Lynch. “JavaScript sẽ vẫn tiếp tục chiếm lĩnh web vì nhiều lí do. Hầu hết các lập trình viên đều biết ngôn ngữ này. Nó dễ sử dụng, và có hàng tá động lực và tài nguyên sẵn có vây quanh nó,” ông nói.

Phát ngôn viên lập trình Stephen Fluin từ Google bổ sung thêm rằng JavaScript mang tới khả năng là áp dụng được mọi nơi. “Bạn có thể chạy JavaScript trên web, trên sever và các thiết bị di động. Tính phổ biến trên mọi nền tảng của một công nghệ riêng lẻ khiến nó thu hút nhiều lập trình viên,” ông nói.

Tuy nhiên, JavaScript không được nhắm đến những mục đích này khi nó mới được tạo ra, Fluin giải thích, vì vậy một ngôn ngữ lập trình mới đã được tiến hành để giúp củng cố thêm tính tin cậy, khả năng bảo trì và khả năng truy cập của JavaScript. TypeScript là một ngôn ngữ lập trình mã nguồn mở được Microsoft phát triển và được thiết kế với khả năng phân kiểu nhiều hơn JavaScript, biên dịch cho plain JavaScript. Theo Fluin, nó cho phép các lập trình viên dùng các kỹ năng JavaScript có sẵn, và vì nó là tập cha của JavaScript nên nó cho phép các lập trình viên dần chuyển sang TypeScript mà không cần lo lắng về chuyện viết lại chương trình nhiều. Lý do các lập trình viên dùng TypeScript là vì nó có khả năng viết theo dạng JavaScript hiện đại trong khi vẫn tận dụng được các kiểu dành cho những thứ như kiểm tra tĩnh và cải tiến code (code refactoring). “Các kiểu này là tùy chọn, và tính năng tự suy kiểu cho phép chú thích kiểu, từ đó tạo nên sự khác biệt lớn với việc xác thực code tĩnh. Kiểu cho phép bạn định nghĩa giao diện giữa các thành phần phần mềm và nhận biết hành vi của các thư viện JavaScript có sẵn.” theo trang web TypeScript cho hay. TypeScript 3.5 đã được phát hành gần đây với các tính năng kiểm tra kiểu mới và nhiều cải tiến đáng kể để tăng tốc độ.

Theo Basu, mặc dù JavaScript có thể thực hiện mọi thứ mà các ngôn ngữ khác làm được, thì việc chọn ra một ngôn ngữ lập trình vẫn là vấn đề về lựa chọn và thuận tiện cho các lập trình viên, cũng như họ có thể sẽ thấy thoải mái hơn nếu dùng ngôn ngữ khác để phát triển web. Kết quả là WebAssembly đang dần được ưa chuộng hơn. WebAssembly là một chuẩn web mở cho phép các ngôn ngữ bậc cao như C, C++ và Rust hoạt động theo kiểu native trên trình duyệt. “Tới nay, để các ứng dụng có thể chạy native trên trình duyệt thì giải pháp duy nhất là JavaScript,” Basu nói. “WebAssembly lần đầu tiên đã mở ra một lựa chọn khác. Đây là một ngôn ngữ nhúng bậc thấp rất cần thiết dành cho web.”

WebAssembly được 4 trình duyệt lớn hỗ trợ: WebKit, Firefox, Chrome và Edge. Theo team WebAssembly thì nó sẽ không thay thế JavaScript; nó được thiết kế để hoàn thiện cho JavaScript. “Mặc dù WebAssembly sẽ tiếp tục cho phép nhiều ngôn ngữ được biên dịch trên web, nhưng JavaScript chiếm giữ động lực lớn nhất và sẽ mãi là ngôn ngữ động được chấp nhận duy nhất của web,” team này nói trên trang web của mình. “Các module của WebAssembly sẽ có thể được thêm vào hoặc đưa ra khỏi code JavaScript và có thể truy cập tính năng trình duyệt thông qua cùng API của trang web, loại API có thể truy cập từ JavaScript.”

Một thử nghiệm chuẩn hóa mới gần đây đang được xây dựng nhằm đưa WebAssembly ra khỏi trình duyệt. Giao diện hệ thống WebAssembly (WASI) sẽ cung cấp khả năng chạy WebAssembly trên nhiều hệ điều hành khác nhau. “WebAssembly đang thay đổi cách mà một trang web đem những thông tin hấp dẫn tới cho mọi người và các lập trình viên tài năng cũng như những nhà sáng tạo để giúp họ thực hiện tốt nhất khả năng của mình với web. Tính tới thời điểm hiện tại các thông tin đó chỉ mới có mặt trên các trình duyệt, nhưng với WASI chúng ta có thể đem những lợi ích của WebAssembly và web tới nhiều người dùng hơn, nhiều nơi hơn, và nhiều thiết bị hơn, và góp phần vào nhiều trải nghiệm hơn,” Sean White, giám đốc bộ phận nghiên cứu và phát triển của Mozilla cho hay.

Tự động hóa ngôn ngữ nguồn mở

Bart Copeland, CEO của công ty chuyên về ngôn ngữ nguồn mở ActiveState cho rằng các team phát triển web không nên dựa vào một ngôn ngữ lập trình riêng lẻ nào. “Có rất nhiều ngôn ngữ khác nhau để làm việc tùy theo từng trường hợp cụ thể, mục đích của mình và vai trò của tổ chức,” ông nói.

Ví dụ, ngôn ngữ Python gần đây đã thực sự vươn mình khi các lập trình viên thêm các tính năng như trí thông minh nhân tạo và học máy vào các ứng dụng của họ, cũng như xử lý phân tích dữ liệu và khoa học dữ liệu liên quan tới việc xây dựng ứng dụng. Tuy nhiên, có thể khó khăn để thuyết phục các tổ chức lớn đầu tư vào các công cụ Python vì nó có thể tốn kém.

“Khi các lập trình viên làm việc với các ứng dụng mới, họ muốn dùng công nghệ tốt nhất và mới nhất, nhưng các tổ chức cho rằng chúng ta không thể dùng nhiều công nghệ khác nhau được, vì vậy họ thường chỉ xây dựng ứng dụng web với một bộ công nghệ mà công ty đã đầu tư vào từ trước,” Copeland nói.

Một giải pháp cho vấn đề này là thông qua tự động hóa ngôn ngữ nguồn mở, theo như Copeland. Tự động hóa ngôn ngữ nguồn mở có 4 giai đoạn:

  1. Xác định các chính sách để đảm bảo tính đồng thuận trên toàn công ty;
  2. Tập trung vào các thành phần phụ thuộc của ngôn ngữ nguồn mở để nắm bắt cách dùng của các ngôn ngữ, các gói và khả năng truy cập;
  3. Tự động hóa việc xây dựng ngôn ngữ để giảm khả năng bị hư hại và tăng chất lượng ứng dụng;
  4. Triển khai và quản lý các bản mô phỏng ngôn ngữ nguồn mở để các server trong các môi trường production, staging và test luôn tự động cập nhật các bản cập nhật ngôn ngữ mới nhất.

“Chúng tôi tin rằng bạn có thể biết các ứng dụng của bạn bị hư hại lúc nào và ở đâu, phản ứng kịp thời nhờ vào quy trình tự động của các chính sách ngôn ngữ nguồn mở. Việc quản lý cần đạt được tính bảo mật và ổn định, và team lập trình phải giữ được động lực lớn,” Copeland nói.

Hiệu suất

Tính đến nay thì mảng phát triển framework đã đủ vững mạnh với nhiều framework nổi tiếng như Angular, React và Vue, cho phép các lập trình viên phát triển nhiều giải pháp mạnh mẽ, theo như Lynch.

Các lập trình viên đôi khi có thể cảm thấy quá tải do viễn cảnh quá nhiều framework phân mảnh, nhưng Fluin giải thích rằng đó thực sự là một điều tốt vì khi các framework lớn trở nên phổ biến hơn thì chúng tập trung vào việc duy trì cập nhật, cải tiến và tính linh hoạt. “Nếu chúng ta cứ đứng yên một chỗ thì chúng ta sẽ cho ra cùng một sản phẩm từ năm này sang năm khác và không học hỏi được gì từ hệ sinh thái, không tận dụng được hết hệ sinh thái và làm việc với nó,” Fluin nói.

Vấn đề là các framework đó dẫn tới việc hàng đống code được đưa vào các ứng dụng của các lập trình viên khiến thời gian tải chậm đi. Mặc dù ứng dụng hay giải pháp đó có nhiều tính năng hữu ích và ấn tượng, nhưng nó không có nghĩa gì với người dùng nếu họ phải chờ ứng dụng tải dữ liệu, Lynch giải thích. Google đã bắt đầu có biện pháp với các ứng dụng chậm, nhất là tác động lên thứ hạng của nó trong công cụ tìm kiếm của mình, vì vậy các lập trình viên đang cố gắng tối ưu hóa hiệu suất bằng cách gửi càng ít dữ liệu hay code càng tốt để chạy ứng dụng nhanh hơn.

Google đã tạo ra dự án Trang di động tốc độ cao (Accelerated Mobile Pages – AMP), một phát kiến nguồn mở nhằm tăng tốc tải trang web và cải thiện trải nghiệm người dùng trên tất cả các thiết bị và nền tảng. “Ngày nay, kì vọng của mọi người chính là tải nội dung xuống với tốc độ cực nhanh và dễ dàng khám phá. Thực tế là nội dung có thể tốn thời gian để tải một chút, hoặc không bao giờ được tải xuống trọn vẹn vì người dùng tắt trang khi thấy nó quá chậm. Accelerated Mobile Pages là những trang web được thiết kế để tải gần như ngay lập tức – chúng là một bước đi nhắm tới web di động tốt hơn cho mọi người,” theo như trang web của dự án cho hay.

Dự án nguồn mở Stencil của Ionic đối phó với vấn đề hiệu suất bằng cách tạo ra các thành phần web có thể dùng lại với lượng code footprint nhỏ. Nếu một công ty dùng nhiều framework khác nhau thì họ sẽ không phải chạy nhiều thành phần khác nhau cho từng framework, Lynch giải thích. “Ngành phát triển web vẫn chưa chọn được framework tốt nhất. React rất phổ biến nhưng nếu bạn cho rằng nó là tốt nhất thì bạn sẽ bỏ lỡ nhiều thứ đang diễn ra trong các doanh nghiệp mà Angular là vua. Rồi bạn sẽ giống như hàng đống người dùng những thứ như jQuery,” Lynch nói. “Chúng ta sẽ không đạt được nhiệm vụ của mình, là nâng cao năng lực của từng lập trình viên web, từ đó xây dựng được các ứng dụng web, máy tính, di động tuyệt hảo với các thành phần có sẵn nếu chúng ta chỉ làm việc với một framework duy nhất.”

Việc sử dụng các thành phần web luôn thu hút các lập trình viên vì nó cho phép họ sử dụng lại code nhiều hết mức có thể, Wong cho hay. Các thành phần web bao gồm 3 công nghệ chính – các phần tử tự tạo (custom element), mô hình đối tượng trong tài liệu (shadow DOM) và các mẫu HTML – chúng có thể được dùng bất cứ đâu mà không cần lo về xung đột code.

“Thực tế là những framework này yêu cầu kiến thức chuyên môn. Các thành phần web nhắm tới việc nâng cao sân chơi dành cho các lập trình viên vì chúng không yêu cầu họ phải học một framework nhất định nào. Tất cả nằm ở việc hiểu các nguyên lý bên dưới và cấu trúc chính xác để cân nhắc trong việc xây dựng một trang web hay ứng dụng web. Các thành phần web là mảnh vá cho quá trình tiêu chuẩn hóa vả khả năng chuyển đổi framework mà không gây ra những ảnh hưởng to lớn,” Wong nói

Cùng với AMP của Google và Stencil của Ionic, Salesforce gần đây đã cho ra mắt giải pháp nguồn mở của mình, có tên là Lightning Web Components, nhằm tạo ra các thành phần web trong các nền tảng khác nhau. “Lợi ích của nó rất to lớn: bạn chỉ cần học một framework duy nhất và bạn có thể chia sẻ code giữa các ứng dụng,” Christophe Coenraets, giám đốc quảng bá mảng lập trình của Salesforce viết trong một bài đăng.

Một vấn đề khác với hiệu suất web chính là có quá nhiều phiên bản của các ngôn ngữ đang tồn tại. Ví dụ, Fluin giải thích các phiên bản cũ của JavaScript như ECMAScript 5 là bắt buộc trong các trình duyệt cũ, trong khi các trình duyệt web mới thì tận dụng các phiên bản mới của JavaScript. Điều này trở thành vấn đề vì các phiên bản cũ của JavaScript không có cùng các tính năng, đó cũng là một phần nguyên do các lập trình viên phải tạo viết nhiều code hơn. “Bạn có thể hiểu đơn giản như kiểu có một lớp, rồi sau đó nó được dịch sang một ngôn ngữ khác không có lớp, dẫn tới việc phải tốn thêm hàng đống dung lượng và ảnh hưởng tới hiệu suất,” Fluin nói. Kết quả là, Angular đã cho ra giải pháp tải riêng biệt, một quá trình cho phép các trình duyệt lựa chọn JavaScript kế thừa (legacy) hay JavaScript hiện đại tùy thuộc vào khả năng của nó.

Top các framework dành cho web

  1. jQuery
  2. js
  3. Angular/Angular.js
  4. NET
  5. Express
  6. Spring
  7. js
  8. Django
  9. Flask
  10. Laravel

Danh sách trên dựa theo khảo sát lập trình viên hàng năm của Stack Overflow, khảo sát tiến hành với gần 90 000 lập trình viên trên toàn thế giới. Mặc dù rất nhiều lập trình viên đang dùng jQuery, nhưng năm nay ngày càng có nhiều lập trình viên chuyển sang React.js và Angular, báo cáo cho hay.

Hơn nữa, báo cáo tập trung vào các framework web được mong đợi nhất, các framewok gây lo lắng nhất và đươc yêu thích nhất. Những framework được yêu thích nhất gồm có React, Vue, Express và Spring, trong khi framework gây lo lắng nhất bao gồm Drupal, jQuery và Ruby on Rails. Khi nhắc tới framework được mong đợi nhất đối với các lập trình viên, thì đứng đầu danh sách gồm có React, Vue và Angular.

Chia sẻ bài viết ngay

Nguồn bài viết : https://sdtimes.com