Trong bài viết này, chúng ta sẽ xem xét danh sách các ngôn ngữ lập trình và framework được tuyển chọn theo một cách thủ công và sẽ vẫn còn phù hợp trong vòng 5 năm đến một thập kỷ tới. Các mô hình lập trình, cùng với sự cải tiến chúng, đã phát triển theo thời gian. Tính đến sau năm 2020 này, chúng trở nên tinh gọn hơn, nhanh hơn, dễ sử dụng, thực tế hơn, ít trừu tượng. Cơ sở lý luận cho việc sắp xếp các ngôn ngữ lập trình này dựa trên những công nghệ thịnh hành, cơ hội việc làm, cách sử dụng, mô hình, mức độ phổ biến dựa trên số liệu thống kê thứ cấp (hard statistics) và các đổi mới công nghệ trong tương lai. Một năm trong thế giới công nghệ kéo dài giống như nguyên cả một cuộc đời thực vậy, do đó, rất nhiều thứ có thể thay đổi trong 5 năm tới nhưng có thể danh sách được tuyển chọn sẽ vẫn phù hợp. Hy vọng rằng danh sách này sẽ giúp ích cho những bạn bắt đầu với sự nghiệp lập trình hoặc muốn tìm hiểu thêm một ngôn ngữ mới.

________________________________________

Hồi tưởng

Khi ta bước vào năm 2020, nhìn lại, rất nhiều điều đã thay đổi trong 5 năm qua. Các xu hướng mới đang nổi lên như blockchain, machine learning, deep learning và điện toán lượng tử (quantum computing). Đối với những người mới bắt đầu tìm hiểu về lập trình hoặc thậm chí là đã có nhiều kinh nghiệm, việc suy nghĩ về vị trí của bạn và nơi bạn muốn đến là một điều tốt để bám mình trong lĩnh vực năng động luôn thay đổi này. Lỗi thời liên tục rình rập sau lưng chúng ta, không có thời điểm nào tốt hơn bây giờ để bắt đầu một hành trình học hỏi kiến ​​thức mới và bổ sung công nghệ mới vào hành trang của mình.

Tại sao việc đảm bảo bạn chọn và học đúng ngôn ngữ hoặc framework là quan trọng?

Học một ngôn ngữ và framework là một khoản đầu tư đáng kinh ngạc về tiền bạc và một khối thời gian quý giá của cuộc đời bạn. Công nghệ luôn thay đổi và sự cần thiết để cập nhật kiến thức là rất quan trọng khi bạn già đi, do đó việc lựa chọn ngôn ngữ và khuôn khổ phù hợp có thể làm thay đổi cuộc sống, có thể làm xoay chuyển cách bạn kinh doanh, tiến độ phát triển, mọi thứ đều có thể bị thay đổi đáng kể cũng như khả năng mở rộng quy mô trong dài hạn của bạn. Do đó, bạn chắc chắn rằng sẽ muốn đầu tư vào một thứ gì đó không bị lỗi thời.

________________________________________

1. Rust

Rust là một ngôn ngữ lập trình hệ thống có thể thay thế rất nhiều nhiệm vụ của C và C ++. Rust cung cấp hiệu suất của C và C ++ cùng với các biện pháp bảo vệ an toàn cho các lập trình viên khỏi việc tự hủy hoại bản thân. Đối với những người đã sử dụng C/C ++ đủ lâu sẽ hiểu điều này.

Đã có khá nhiều lập trình viên mới bị thu hút bởi Rust. Rust có cơ sở người dùng ngày càng tăng. Hiện có hàng trăm công ty đang sử dụng Rust cho mục đích sản xuất như Dropbox, Yelp và Cloudflare. Các sản phẩm như Firecracker - công nghệ ảo hóa được công bố gần đây của Amazon - đang được tạo ra bởi Rust.

Rust cũng được bình chọn là công nghệ "được yêu thích nhất" trong cuộc khảo sát dành cho lập trình viên năm 2016 của StackOverflow (có nhiều người dùng muốn tiếp tục sử dụng nhất).

Mặc dù nó tương đối mới so với các ngôn ngữ khác đã tồn tại trong nhiều thập kỷ qua, nhưng thật ngạc nhiên, khi nó có một kho thư viện lớn có sẵn để sử dụng, nhằm tăng tốc các nỗ lực phát triển của bạn. Bạn có thể tìm thấy hầu hết những gì bạn mong đợi trên crates.io hoặc GitHub.

Một số tính năng chính của Rust

Một trong những điều quan trọng của Rust là tốc độ và có bộ nhớ khá hiệu quả: không có thời gian chạy (runtime) và bộ gom rác (garbage collector), nó có thể cung cấp năng lượng cho các dịch vụ quan trọng về hiệu suất, chạy trên các thiết bị nhúng và dễ dàng tích hợp với các ngôn ngữ khác. Khi bước vào 5 năm và thập kỷ tới, khi chúng ta gặp phải những hạn chế ở phần cứng, các ngôn ngữ tinh anh hơn, với vùng phủ bộ nhớ (memory footprint) nhỏ hơn, sẽ giúp cải thiện tốc độ và khả năng phản hồi. Chúng cũng cho phép chúng ta viết được những code giúp cải thiện công năng hiệu quả hơn.

  • Độ tin cậy: Hệ thống kiểu (type system) phong phú và mô hình chủ sở hữu (ownership model) của Rust đảm bảo được tính an toàn cho bộ nhớ và an toàn luồng (thread-safety), đồng thời cho phép bạn loại bỏ nhiều lớp lỗi tại thời điểm compile.
  • Năng suất: Rust có một tài liệu tuyệt vời, trình biên code thân thiện với các thông báo hữu ích  về lỗi. Ví dụ, thông báo biên code cho C ++ nổi tiếng là khó giải mã. Trình biên code cho Rust tốt hơn và hữu ích hơn nhiều. Nếu bạn muốn học lập trình hệ thống, có trình biên code “rust” làm hướng dẫn, bạn sẽ không phải lo lắng về những thứ khác ngoài an toàn bộ nhớ.

Như một lập trình viên nổi tiếng, Lifthrasir, đã từng nói: Pascal giống như mặc một chiếc áo trói, C giống như đùa với dao, và C ++ giống như tung hứng những chiếc cưa rực lửa. Trong phép ẩn dụ đó, Rust giống như đang chơi parkour khi được treo trên dây trong bộ đồ bảo hộ. Đúng vậy, đôi khi nó trông hơi lố bịch, nhưng bạn sẽ có thể thực hiện tất cả các động tác tuyệt vời mà không làm tổn thương bản thân. 

2. Python

Mức độ phổ biến của Python đã tăng đều đặn trong những năm qua, đặc biệt là 10 năm vừa rồi, cuối cùng đã phá vỡ top 5 trên Tiobe Index.

Python là một ngôn ngữ linh hoạt, rất thực tế, phù hợp với rất nhiều trường hợp sử dụng (use case). Đối với người mới bắt đầu, nó là ngôn ngữ kịch bản, họ có thể làm quen khá nhanh vì không có chu trình chạy biên code như trong Java. Về bản chất, Python là một ngôn ngữ hướng đối tượng, nếu bạn chọn nó để lập trình theo cách hướng đối tượng. Python đã thay thế Java trong nhiều khóa học học thuật ở các trường đại học khi trở thành ngôn ngữ mặc định được ưa chuộng để bắt đầu. Thật là dễ dàng cho người mới bắt đầu để cài đặt chạy trình thông dịch Python

$ print (‘hello world this is my. First program’)

 

Và đó là chương trình đầu tiên của bạn viết bằng Python, tuyệt nhỉ?

Python đang mở đường cho tương lai. Do đó mức độ phù hợp của nó trong 5 năm tới và hơn thế nữa. các mô hình công nghệ mới như machine learning, deep learning, AI, big data, tất cả các thuật ngữ thông dụng về khoa học dữ liệu được tung ra khắp nơi trên internet, đã được thực hiện với kho thư viện trưởng thành to lớn như TensorFlow, Scikit-Learn, Dask cho các tính toán có thể mở rộng, khổng lồ, và phân tán trong Khoa học dữ liệu. Python cũng đang và có thể được sử dụng cho Điện toán lượng tử. Mặc dù chúng ta vẫn còn khá xa so với khả năng tiếp cận máy tính lượng tử, nhưng có thể bạn đã bắt đầu được được xem là một lập trình viên lượng tử rồi.

Python được đón nhận nồng nhiệt bởi doanh nghiệp và start-up với nhiều trường hợp sử dụng. Những bước tiến lớn này đã được thực hiện trong 5 năm qua, do đó tính phù hợp của nó, cho tới nay, là cực kỳ hợp lý. Hiện chúng ta có một loạt các nền tảng như Reddit, hàng đống thư viện của Google được xây dựng trên Python.

Việc sử dụng Python có thể giúp viết script và tự động hóa nhiều tác vụ thông thường một cách nhanh chóng. Nó luôn là một ngôn ngữ vô giá để hoàn thành các dự án tự do với tốc độ đáng kinh ngạc.

Nếu bạn tận dụng Python, bạn sẽ có quyền truy cập vào các framework như Django, một trong những framework Python tốt nhất trong việc xây dựng các ứng dụng web cho Front-end và Back-end. Tuân theo nguyên tắc tự động DRY, phương pháp tạo giàn giáo (scaffolding) – những viên pin đầy triết lý - để nhanh chóng xây dựng các ứng dụng khi đối mặt với tình trạng thiếu hụt code và rất ít kinh nghiệm lập trình.

________________________________________

3. Ruby  

Ruby là một ngôn ngữ lập trình cấp cao và mạnh mẽ khác có thể giúp công việc xây dựng ứng dụng của bạn trở nên đơn giản và dễ dàng. Là một ngôn ngữ lập trình hướng đối tượng, đối với những người có kinh nghiệm về Python, cú pháp của Ruby sẽ trông rất giống với cú pháp của Python. Ngôn ngữ này cũng được trang bị tốt với tất cả các công cụ bạn cần để xây dựng các ứng dụng phức tạp.

Nhiều công ty khởi nghiệp ở Thung lũng Silicon đã xây dựng doanh nghiệp của họ trên nền tảng của Ruby, cụ thể là Airbnb, Twitch, GitHub và Twitter. Sự phổ biến của nó đã được củng cố thêm bởi Ruby on Rails, một Full-stack web framework chạy Ruby.

Một số tính năng chính của Ruby

  • Ruby cung cấp một loạt các thư viện mạnh mẽ, chất lượng.
  • Một cú pháp dễ dàng tạo điều kiện cho việc phát triển mẫu nhanh chóng.
  • Dễ dàng cho nguời mới học do đường cong học tập thấp.
  • Là một ngôn ngữ lập trình hướng đối tượng, do đó, bạn chắc chắn có được tất cả các lợi ích từ mô hình này

4. Golang

Go (Golang) là một ngôn ngữ lập trình tương đối mới do Google xây dựng, nó đã trở nên phổ biến gần đây. Go cung cấp hỗ trợ tuyệt vời cho việc xử lý đa luồng (multithreading) và do đó, nó đang được sử dụng bởi rất nhiều công ty dựa nhiều vào các hệ thống phân tán (distributed system). Go được thiết kế từ những vấn đề cấp bách mà Google đang phải đối mặt. Google cũng đang sử dụng Go làm ngôn ngữ chính cho các dự án mới và thay thế các ngôn ngữ khác bằng Go. Bởi vì Google gắn bó mật thiết với cuộc sống hàng ngày của chúng ta, nên chúng ta không thể loại bỏ, nó sẽ tiếp tục phù hợp trong tương lai gần.

Có thể nói, Go là một ngôn ngữ được tạo ra khá tuyệt hảo cùng với cú pháp dễ chịu. Nó có sự cân bằng giữa tính dễ sử dụng, liên hợp với các ngôn ngữ gõ động, ngôn ngữ thông dịch, và hiệu suất, an toàn kiểu và an toàn bộ nhớ.

Các tính năng chính của Go

  • Một trong những tính năng chính của Go là nó thông qua các kênh và các luồng goroutine. Vì theo thiết kế, nó vốn dĩ mang tính đồng thời ngay lập tức, nó cho phép bạn sử dụng hiệu quả sức mạnh của CPU. Vượt trội trong phát triển hệ thống phân tán đám mây, microservice.
  • Nhẹ, thực thi nhanh và lập trình nhanh chóng.
  • Vùng phủ bộ nhớ nhỏ và kích thước tệp nhị phân nhỏ.
  • Gom rác tự động.
  • Không có ngoại lệ, tự xử lý lỗi. Điều này có ý nghĩa gì với bạn? Thay vì ném vào một loạt các ngoại lệ câu lệnh try-catch và lười biếng, bạn phải biết chính xác cách tự xử lý những lỗi đó. Hãy nghĩ về nó.

Sự thật thú vị

  • Mức lương trung bình của lập trình viên Go toàn cầu là $109.483 mỗi năm, ở Mỹ là $136K mỗi năm.
  • Go là ngôn ngữ được trả tiền cao thứ ba trên toàn cầu theo cuộc khảo sát dành cho lập trình viên Stack Overflow năm 2019.
  • Go đứng thứ 4 về mức độ sử dụng tích cực trên GitHub.

________________________________________

5. GraphQL

Ngày trước, thiết kế API web tương đối đơn giản so với ngày nay, đã có tiêu chuẩn REST (Representational State Transfer) để truy xuất dữ liệu từ máy chủ, dựa trên việc truy cập dữ liệu bằng URL. Các API đã trở nên phức tạp hơn và hướng về dữ liệu hơn do việc sử dụng thiết bị di động ngày càng tăng, các cách thức mới phải được thiết kế để cho phép truy xuất dữ liệu tốt hơn.

Nhu cầu đã vượt xa tiêu chuẩn, dữ liệu không còn là những gì nó đã từng trước khi vào trạng thái tĩnh. Nó bùng nổ hơn khi GraphQL được tạo ra. GraphQL là một giải pháp thay thế hiện đại cho kiến ​​trúc dựa trên REST, nhằm mục đích giải quyết những thiếu sót của nó. Không giống như REST, GraphQL cho phép yêu cầu dữ liệu cụ thể mà khách hàng cần, bắt đầu từ cách tiếp cận cấu trúc dữ liệu cố định.

Về cốt lõi, nó là một ngôn ngữ để truy vấn cơ sở dữ liệu từ các ứng dụng phía máy khách (client-side). Về Backend, GraphQL chỉ định cho API về cách trình bày dữ liệu cho khách. GraphQL xác định lại công việc của lập trình viên với các API, với sự cung cấp vượt trội hơn về tính linh hoạt và tốc độ cho thị trường; nó cải thiện các tương tác giữa máy khách-máy chủ bằng cách cho phép người dùng thực hiện các yêu cầu về dữ liệu chính xác, sau cùng, là đạt được chính xác những gì họ cần.

Được Facebook tạo ra lần đầu vào năm 2012, GraphQL được sử dụng nội bộ cho các ứng dụng di động của họ để giảm mức sử dụng mạng nhờ khả năng tìm nạp dữ liệu (data-fetching) cụ thể của nó. Kể từ đó, đặc tính của GraphQL là có mã nguồn mở. Giờ đây, các ngôn ngữ lập trình chính như Python, Java, C #, Node.js, v.v. đều hỗ trợ nó.

Do sự mở rộng nhanh chóng của hệ sinh thái, điều này làm cho nó trở thành một trong những công nghệ độc đáo hơn để tiếp tục phù hợp trong tương lai gần. Với các thư viện mở rộng và các công cụ mạnh mẽ như Apollo, GraphiQL và GraphQL Explorer.

Một số tính năng chính của GraphQL

  • GraphQL nhanh hơn, cắt giảm yêu cầu của bạn bằng cách chỉ chọn các trường bạn muốn truy vấn.
  • Phù hợp với các hệ thống phức tạp và các microservice. Bằng cách tích hợp nhiều hệ thống đằng sau API của nó.
  • Tuyệt vời khi xây dựng kiến ​​trúc microservice.
  • GraphQL gộp dữ liệu từ nhiều nơi vào một API duy nhất.
  • Tìm nạp dữ liệu với một lệnh gọi API.
  • Không có vấn đề tìm nạp quá mức và thiếu. Các phản hồi REST được biết đến do chứa quá nhiều dữ liệu hoặc không đủ dữ liệu.
  • Xác thực và kiểm tra loại ngay lập tức.
  • Tài liệu API khởi tạo tự động, cho phép quên đi Swagger và ẩn náu trong Github để khơi mào sự tìm kiếm manh mối về cách sử dụng đặc tính.
  • Nâng cấp API mà không cần lập phiên bản, đây là một vấn đề phổ biến với REST, vì khi nâng cấp API, bạn phải tạo một API mới hoặc tạo tiền tố cho các URL của bạn bằng các phiên bản và có tài liệu hoàn hảo. Bằng cách sử dụng GraphQL, bạn có một phiên bản đơn nhất, liên tục được nâng cấp, điều này cho phép ứng dụng của bạn truy cập liên tục vào các tính năng mới và khuyến khích có code máy chủ gọn hơn, dễ bảo trì hơn.

Lưu ý: GraphQL không thay thế REST, mà chúng là hai thứ khác nhau cố gắng giải quyết các loại vấn đề khác nhau. Khi chúng ta hướng tới Big Data thì nên đầu tư một thời gian để tìm hiểu về GraphQL.

6. Angular

Angular chính là một framework TypeScript khi đủ lông đủ cánh, nó là một trong những framework nguồn mở nổi bật để xây dựng các ứng dụng web và di động, được phát triển bởi Google. Angular là một bản viết lại hoàn chỉnh của AngularJS. Từ AngularJS, ban đầu có một số trục trặc, nhưng giờ đây Angular đã được nâng cấp qua nhiều năm và trở thành một framework toàn diện bao gồm tất cả các công cụ và thành phần cần thiết để xây dựng web và ứng dụng di động. Điểm nổi bật của framework này là nó tuân theo một lộ trình rõ ràng, với từng phiên bản trọng yếu mới của Angular được phát hành mỗi sáu tháng, điều này thực sự quan trọng nếu bạn muốn gắn bó với Angular dài lâu.

Các tính năng chính của Angular

Dưới đây chỉ ra các tính năng đã được điểm qua trong Angular 9, chúng có thể giải quyết một số mối quan tâm của bạn về hiệu suất.

  • Google cung cấp hỗ trợ lâu dài cho framework và không ngừng cải thiện nó. những cải tiến thường xuyên luôn được hoan nghênh, điều đó cho thấy rằng framework này có sự hỗ trợ tích cực và Google thật tâm rất muốn thấy nó thành công. Do đó, việc biết Google đang ủng hộ nó và đầu tư vào nó cho thấy rằng framework này sẽ vẫn phù hợp trong tương lai gần.
  • Một tính năng chính khác của Angular 9 đó là tạo một vùng phủ nhỏ thông qua việc giảm các file bundle lớn khi dùng trình biên code Ivy, Bằng cách giảm kích thước của các file bundle JavaScript, Ivy trở thành một cải tiến đáng hoan nghênh cho các lập trình viên đang cố gắng tăng tốc độ khởi động ứng dụng.
  • Quốc tế hóa tốt hơn cho các ứng dụng cần hỗ trợ nhiều ngôn ngữ.

________________________________________

7. JavaScript

Thật táo bạo khi nói rằng bạn không thể thay thế JavaScript. Thành thật mà nói, đây là một ngôn ngữ không thể thiếu trong nhiều năm tới. Vì vậy, không chóng thì chầy, đầu tư vào việc học ngôn ngữ này chắc chắn là một khoản đầu tư sinh lời. Nó không chỉ là một ngôn ngữ kịch bản phía máy khách nữa, với framework và các thư viện như NodeJS, Angular và React, bạn có thể sử dụng JavaScript ở phía máy chủ cũng như để phát triển giao diện người dùng.

JavaScript là con át chủ bài các công ty công nghệ lớn, chẳng hạn như Netflix, Facebook, Google và nhiều công ty khác. Do đó, JavaScript là một ngôn ngữ cũng hợp lý như bất kỳ ngôn ngữ lập trình nào khác. 2020 là năm để bắt đầu đầu tư một số thời gian rảnh của bạn cho việc học JavaScript.

Bây giờ hãy suy nghĩ một chút, chẳng phải hầu hết tất cả các trang web đang tận dụng JavaScript ở một mức độ nào đó hay sao? Và thử đếm xem, có bao nhiêu trang web trên internet hiện tại?

Mở rộng

WebAssembly (viết tắt Wasm). Xứng đáng một phần nhỏ ở đây nhưng không phải là một phần của top 7 vì nó không phải framework cũng như ngôn ngữ lập trình.

Wasm được thiết kế để trở thành chỗ biên code cho các ngôn ngữ lập trình và định dạng nhị phân với mục tiêu mang lại hiệu suất gần như nguyên bản cho các ứng dụng web. Điều đó có nghĩa là gì? Hãy hình dung nó như một nền tảng trung tâm chung, nơi các lập trình viên có thể đưa các ngôn ngữ lập trình khác nhau vào và chạy chúng trên nền tảng đó bằng cách biên dịch chúng sang web assembly. Nói cách khác, nó có thể là một máy ảo Java cho tất cả các ngôn ngữ lập trình.

Về bản chất, Wasm đang nhắm đến mục tiêu hiệu suất gần như nguyên bản cho các ứng dụng web bất cứ khi nào bạn truy cập Internet để chạy một ứng dụng trong trình duyệt web của mình, rất có thể phần lớn chúng sẽ ở Wasm trong 5 năm tới. Hãy nghĩ đến việc trò chơi trực tuyến đòi hỏi hiệu suất hoàn hảo. Từ một cú nhấp chuột, bạn sẽ có thể tải xuống code ứng dụng từ máy chủ và tải nó vào máy ảo của trình duyệt sẽ chạy Wasm. Wasm được hỗ trợ bởi tất cả các công ty lớn như Mozilla, Microsoft, Google và Apple.

Việc áp dụng rộng rãi WebAssembly này khuyến khích điện toán phi tập trung (decentralized computing), chẳng hạn như những gì Ethereum đang làm với ether 2.0, tận dụng web assembly trong tái thiết kế được đề xuất mới, nằm trong lớp thực thi hợp đồng thông minh (smart contract) Ethereum bởi một tập hợp tất định (deterministic subset) của WebAssembly. Wasm đang dần trở thành trụ cột kỹ thuật cho cách các lập trình viên phát triển phần mềm, mọi người tương tác với các ứng dụng trong không gian kỹ thuật số rộng lớn này.

WebAssembly cho phép JavaScript trổ tài và ủy quyền những phần mà nó không thể làm được cho các ngôn ngữ khác. Hãy coi nó như một Ajax tiếp theo cho web. Ajax đã làm cho các ứng dụng phía máy khách trở nên khả thi. WebAssembly cho phép bạn vượt ra ngoài, chỉ Javascript, ở các tính toán phức tạp cấp thấp mà Node hoặc JavaScript không mạnh. Do đó, tương lai của WebAssembly có vẻ tươi sáng.

Phần kết luận

Nếu bạn nghĩ rằng tất cả các ngôn ngữ lập trình và framework đều có khả năng xây dựng các ứng dụng phức tạp và mạnh mẽ, để giải quyết các vấn đề cấp bách thực sự của thế giới. Nhưng đời không như mơ, không thể mãi hướng về một ngôn ngữ cụ thể được vì mọi ngôn ngữ và framework đều có những mặt tích cực và tiêu cực, và những nơi phù hợp hoặc không phù hợp để sử dụng. Nhu cầu về ngôn ngữ được thúc đẩy bởi trường hợp sử dụng, nhu cầu thị trường hoặc khả năng tiếp cận nguồn tài nguyên của chuyên gia đó.

Luôn ghi nhớ rằng, mục tiêu của bất kỳ ngôn ngữ lập trình hoặc framework nào đều là giải quyết xong xuôi các vấn đề, hãy chọn công nghệ phù hợp nhất với bạn.

Luôn linh hoạt thích nghi và học hỏi liên hồi là những   gì thực sự sẽ giữ cho bạn luôn được cập nhật trong nhiều thập kỷ tới. Việc chấp nhận trở thành một lập trình viên đa ngôn ngữ sẽ mang lại nhiều cơ hội hơn cho bạn.

 

Tổng hợp việc làm IT - Software trên VietnamWorks
VietnamWorks InTECH
Theo Timothy Mugayi