, June 27, 2022

0 kết quả được tìm thấy

Vì sao phải nên học nhiều ngôn ngữ lập trình


  •   6 min reads
Vì sao phải nên học nhiều ngôn ngữ lập trình

Chắc hẳn không ít bạn từng nghe những lập luận phổ biến sau:

  1. Biết nhiều để làm gì, cái nào cũng dùng được và như nhau cả. Biết cho lắm vào rồi cũng vậy thôi. "Nhất nghệ tinh nhất thân vinh" nhé (*).
  2. Dùng "X" là đủ rồi không cần có "Y" nữa.
  3. X là "the best" hoặc dùng X đi, mấy cái kia sắp không còn ai dùng nữa.

(*) Có vẻ các bạn đang bị nhầm lẫn giữa "nghệ" và ngôn ngữ lập trình (cái thuộc về một "nghệ" cụ thể).

Mình nghĩ đơn giản là thế giới quan mỗi người thì họ nghĩ gì, tin gì là chuyện của họ. Nhưng trên tinh thần thích chia sẻ, đặc biệt cho những bạn mới, mình muốn cung cấp thêm một góc nhìn nữa để giúp các bạn có cái nhìn đa chiều hơn.

Trên thực tế là chúng ta cần biết rằng: Chiếc máy tính nó không thông minh hay đúng hơn là máy tính không tự tư duy được!!!

Nếu bạn đang nghĩ về AI (trí tuệ nhân tạo) để phản bác điều trên thì nên nhớ rằng bản thân máy tính sinh ra không thể làm được điều đó. Khác với con người chúng ta khi sinh ra đã có khả năng tư duy và nhận biết thế giới.

Điều kiện để máy tính có khả năng tư duy và ra được quyết định sẽ cần ít nhất 2 thứ: THUẬT TOÁN và DỮ LIỆU. Mà trong đó dữ liệu là chiếm phần quan trọng nhất. Vì dữ liệu là "thức ăn" để nuôi dưỡng các cỗ máy. Thức ăn kém dinh dưỡng mà ép cỗ máy dậy thì thành công thì phi lý quá! Tương tự với thuật toán kém. Các bạn chỉ cần nhớ là máy tính nó chỉ tính toán nhanh, chuyện đúng sai là phải có con người hướng dẫn nó.

Chiếc máy tính này nó "trịnh thượng" và có lòng tự tôn dân tộc siêu cao. Thể hiện qua việc nó không chịu nói tiếng của con người. Con người phải học thứ tiếng của nó: "0" và "1"; gọi là bit hay nhị phân. Các ngôn ngữ lập trình bản chất là ngôn ngữ trung gian để con người dễ dàng giao tiếp hơn với máy tính mà thôi.

Vậy tại sao cần đến nhiều ngôn ngữ lập trình như vậy?! Cán cân "nhanh máy chậm người" hay "nhanh người chậm máy"?!

Tới đây chúng ta hiểu được để máy tính chạy đúng, ta cần chỉ dẫn (khái niệm "chỉ thị") rất cụ thể. Cái cụ thể này nó không hề đơn giản như các ngôn ngữ bậc cao hiện tại như "x =1" đâu nhé. Tới nỗi mà các bạn khai báo biến mà còn phải chỉ nó lưu vô chỗ nào, thanh ghi nào chứ không đơn giản. Nhà bao việc mà chứ phải đi làm những cái này thì khoai quá!!

Các nhà khoa học máy tính giỏi nhất thế giới đã không ngừng nghiên cứu để giúp con người đỡ nhọc hơn. Họ đã phát triển những ngôn ngữ với cú pháp dễ hiểu, dễ đọc và ghi nhớ (như tiếng Anh). Phần lớn những công việc quá sâu sát với phần cứng, hệ điều hành thì các developer không cần quan tâm nữa, trừ khi nó thực sự cần. Kết quả là chúng ta có hàng tá ngôn ngữ ra đời.

Trong đó có những ngôn ngữ bậc thấp, giao tiếp với phần cứng, viết driver, làm hệ điều hành, viết platform cho tới các ứng dụng phổ thông ngày nay. Như vậy ngoài tính chất công việc bắt buộc thì cũng có hai trường phái đối lập: thượng tôn tốc độ thực thi (cho máy) và thượng tôn tiện ích hay tốc độ phát triển (cho người).

Cán cân này đã tồn tại trong suốt thời gian qua. Các bạn sẽ nhận ra cùng một công việc, có những ngôn ngữ phải viết rất nhiều (LoC - Line of Code), nhưng cũng có những ngôn ngữ viết vài dòng thôi là xong. Đáng kể trong đó còn có những ngôn ngữ dạng cân bằng cán cân trên, mảng nào cũng dùng được nhưng không tối ưu hoàn toàn cụ thể cho mảng nào cả. Mỗi ngôn ngữ đều có ưu và nhược xét trên cán cân này.

Tới đây các bạn chắc đã nhận ra việc lựa chọn ngôn ngữ ngoài tính bắt buộc thì yêu tố thuận tiện cho team, phát triển nhanh hoặc tối ưu tốc độ thực thi sẽ được cân nhắc khi ra quyết định. Cụ thể hơn là ưu và nhược của chúng. Việc chỉ biết tới ưu và quên nhược (chủ ý bỏ qua) thì các sản phẩm sẽ gặp rất nhiều vấn đề trong tương lai.

Một điều thú vị là cái ưu nhược của một ngôn ngữ lập trình nếu đứng từ góc nhìn ở trong nó, chưa bao giờ các bạn bước ra ngoài thì không nhìn thấu được.

Mỗi ngôn ngữ đều có triết lý và tính cách đặc trưng riêng. Các bạn có lẽ đã từng nghe qua những trường phái lập trình "Imperative" hay "Declarative", "Procedural" hay "Functional". Gần gũi hơn là sự tranh luận nảy lửa giữa "OOP" hay "Non-OOP".

Thật những điều trên chỉ là của những người ủng hộ trường phái nào mà thôi. Tuy nhiên việc hiểu được những góc nhìn này giúp chúng ta học hỏi được nhiều hơn và quan trọng nhất là lựa chọn chính xác hơn.

Như vậy việc biết nhiều ngôn ngữ sẽ giúp chúng ta có lợi thế lựa chọn phù hợp. Sự phù hợp này dựa trên sự hiểu biết và các lựa chọn một cách đầy đủ và khách quan hơn.

Nếu bạn là người mới, mình sẽ không ủng hộ việc học một lúc nhiều ngôn ngữ. Nhưng nếu các bạn đã trải nghiệm với nghề một thời gian và nay muốn mở rộng kiến thức thì hãy cân nhắc tham khảo góc nhìn của mình ở trên nhé.

Chúc các bạn thành công hơn với sự hiểu biết rộng và đủ sâu với nghề!!

Nếu bạn đang gặp khó khăn với ngành lập trình, có thể bạn sẽ cần xem qua bài viết này:

Lập trình mãi không giỏi được, nguyên nhân vì đâu?!
Đơn giản là vì chúng ta chưa thực sự tập trung, quyết tâm và không có động lực đủ lớn (cũng như không có người chỉ dẫn).

Bài viết liên quan

Những ngôn ngữ lập trình tốt nhất NĂM 2022

Một số gợi ý về các ngôn ngữ lập trình tốt nhất để học trong năm 2022, với những ưu nhược điểm của từng ngôn ngữ....

Những ngôn ngữ lập trình tốt nhất NĂM 2022
Tầm quan trọng của trừu tượng hóa trong kiến trúc ứng dụng

Trừu tượng (abstract) nghĩa là một cái gì đó chung chung, không rõ ràng. Đây là khái niệm rất quan trọng trong lập trình mà bạn không nên bỏ qua....

Tầm quan trọng của trừu tượng hóa trong kiến trúc ứng dụng
Lập trình mãi không giỏi được, nguyên nhân vì đâu?!

Đơn giản là vì chúng ta chưa thực sự tập trung, quyết tâm và không có động lực đủ lớn (cũng như không có người chỉ dẫn)....

Lập trình mãi không giỏi được, nguyên nhân vì đâu?!
Clean Architecture là gì - Ưu nhược và cách dùng hợp lý

Clean Architecture là một kiến trúc ứng dụng rất nổi tiếng dựa trên nguyên lý loại bỏ sự lệ thuộc giữa các đối tượng cũng như các layer trong ứng dụng. Clean Architecture bao gồm 4 layer được đại diện thông qua các vòng tròn đồng tâm...

Clean Architecture là gì - Ưu nhược và cách dùng hợp lý
Nghề lập trình - Những hiểu sai phổ biến và cách học hiệu quả

Bạn đang tìm đến nghề lập trình vì nghe đồn rằng nghền này rất giàu, kiếm được nhiều tiền hoặc nghề này rất hot, nhu cầu tuyển dụng cao...

Nghề lập trình - Những hiểu sai phổ biến và cách học hiệu quả
You've successfully subscribed to 200Lab Blog
Great! Next, complete checkout for full access to 200Lab Blog
Xin chào mừng bạn đã quay trở lại
OK! Tài khoản của bạn đã kích hoạt thành công.
Success! Your billing info is updated.
Billing info update failed.
Your link has expired.