thảo luận Lập trình viên nên học bao nhiêu ngôn ngữ là đủ?

Mình biết mỗi 3 thằng là C++/Java/Kotlin , khi nào cần thì học thêm, Java/Kotlin mình học mất 2 tuần, thời gian chủ yếu tìm hiểu kiến thức về Network, OS, Algo, Backend
 
Code algo bằng c++ sướng run người. Cấu trúc dữ liệu đủ cả mà thanh niên kia không biết nói cái gì nữa :feel_good:
Chắc ông đó mới code C thôi, chưa phải C++. T đi pv cũng gặp nhiều người như vậy lắm. Mặc dù trong CV ghi làm C/C++ mấy năm nhưng thực ra chỉ làm C và k biết stl.
 
Chắc ông đó mới code C thôi, chưa phải C++. T đi pv cũng gặp nhiều người như vậy lắm. Mặc dù trong CV ghi làm C/C++ mấy năm nhưng thực ra chỉ làm C và k biết stl.
Sao nó không hợp nhất với std bác nhỉ? Biết lịch sử là vậy nhưng giờ có ai bỏ được stl đâu.
 
Học 1 thằng nặng OOP (1 trong Java C#)
Học 1 thằng FP thuần (1 trong Prolog, Haskell ...)
Học 1 thằng quick script nhanh (Lua, Python, JS, Ruby)
Nếu dị hợm khác người hoặc thích tìm hiểu thì học thêm mấy thằng dị biệt kiểu Rust nữa
 
Sao nó không hợp nhất với std bác nhỉ? Biết lịch sử là vậy nhưng giờ có ai bỏ được stl đâu.
Bản thân mấy class stl đều có namespace std còn gì. Hay ý bạn là muốn stl built in trong C++ luôn ko cần link thư viện stl?

Hiện tại phần lớn các platform đều mặc định tự động link thư viện stl khi dịch code C++ rồi. Trừ có thằng android là dị biệt. Một là do nó muốn giảm dung lượng của app bundle (thư viện stl lib khá to). Hai là tách ra thư viện base và thư viện stl như vậy dễ update và patch thư viện stl hơn. Nói gì thì nói cái thư viện stl cũng phức tạp, trc h cũng đầy lỗi, bọn viết compiler như clang, microsoft, gcc cũng phải patch liên tục. Ba là nó tạo dk cho 3rd party tự implement stl classes (có thể nhanh hơn tụi tác giả compiler làm, vd boost hay google cũng tự viết thư viện tương tự stl của riêng họ)

Còn nữa, tách ra stl lib riêng như vậy để dễ port compiler lên mấy platform khác hơn. Vd mấy hệ thống embeded, bộ nhớ khiêm tốn bọn nó ko cần stl chỉ cần compiler đơn giản hỗ trợ base C++ với OOP feature là dc. (hay còn gọi là C with classes)
 
Tuỳ bạn làm mảng nào, ví dụ làm mobile thì buộc phải biết swift/android/kotlin, một chút bash, C++. Làm Frontend thì… méo có lựa chọn nào ngoài Javascript (siêng thì cả NodeJS, TypeScript), CSS (và đám họ hàng Sass, Scss), HTML - framework thì nhiều lựa chọn hơn React/Angular hay Vue, nhưng lời khuyên là trùm 1 cái và đủ biết 2 cái còn lại.
Backend thì đa dạng nhất, nhưng có thể tạm phân loại thành 3 nhóm: imperative strong type (C++/C#/Java/Go), imperative weak type (Node/Python/Ruby/PHP) và functional (Closure, Elixir, Haskell). Mỗi nhóm có ưu nhược điểm khác nhau, nên trùm mỗi nhóm 1 ngôn ngữ thì vọc code mấy ngôn ngữ cùng nhóm rất nhanh (như tui cỡ 3-7 ngày là chơi được 1 ngôn ngữ rồi). Backend còn nặng về system design (web là gì, db là gì, protocol là gì, cloud service,…) cái này thì phải làm nhiều mới nhớ, ko quan trọng ngôn ngữ.
Còn 2 mảng là devops và embedded thì tui ko đủ rành để chém. Nói chung một khi bạn đã tự tin sử dụng thuần thục 3 ngôn ngữ trở lên (1FE, 2BE chẳng hạn) thì học thêm ngôn ngữ mới nó trở nên đơn giản, và đôi khi là động lực để nhảy việc :)
 
1. người học và tập trung vào 1 nhóm framework + ngôn ngữ nhất định >> code họ nhìn rất gọn , dùng nhiều function built in hoặc dùng hết các tính năng mà framework + ngôn ngữ đó cung cấp
2. người làm và học nhiều framework + ngôn ngữ >> code sẽ cồng kềnh hơn, họ dùng thuần for,if luôn, ko dùng hết các tính năng của framework + ngôn ngữ ( cái này thường gặp ở các anh chuyên làm c/c++ nhảy sang viết code cho js,php ), code vẫn chạy nhưng nhìn rất cồng kềnh, nhiều khi để lọc phần tử của collection python viết 1 dòng là xong, các anh c/c++ viết 2 vòng for lồng nhau nhìn rất rối :D
3. Học và làm nhiều ngôn ngữ mà code vẫn xịn ?
 
:doubt: cơ bản 1 lập trình viên cần biết những ngôn ngữ sau:

  • Front end: JavaScript
  • Back end: JavaScript Node.js
  • Mobile development: JavaScript React Native
  • Desktop application: JavaScript Electron
  • Game development: JavaScript Pixi.js
  • Machine learning: JavaScript TensorFlow.js
  • Embedded System: C++
 
:doubt: cơ bản 1 lập trình viên cần biết những ngôn ngữ sau:

  • Front end: JavaScript
  • Back end: JavaScript Node.js
  • Mobile development: JavaScript React Native
  • Desktop application: JavaScript Electron
  • Game development: JavaScript Pixi.js
  • Machine learning: JavaScript TensorFlow.js
  • Embedded System: C++
Sao toàn là JS vậy bác. Ít nhất trong đống kia cũng phải có cái mạnh hơn JS chứ nhỉ
 
Trước giờ chỉ biết mỗi js là chính. Vô cty thì học thêm hack, cho nên chắc 2 ngôn ngữ 1 lúc là vừa.
 
Back
Top