Tại sao C++ không còn là sự lựa chọn dành cho bạn nữa

Bài viết được dịch từ Simple Programmer

Tôi yêu C++.

C++ đã dạy tôi làm thế nào để thực sự viết code.

Nhớ lại những ngày tôi đã học những điều phức tạp của ngôn ngữ này, nào là Standard Template Library, và tất cả những kỹ thuật của việc quản lý bộ nhớ và các tính toán về con trỏ. Nghiêm túc mà nói thì đó là một khoảng thời gian tươi đẹp. Tôi nhớ là mình đã đọc đi đọc lại bộ sách Effective C++ của tác giả nổi tiếng Scott Meyers. Mỗi lần đọc thì tôi lại học thêm được một điều mới hoặc biết nhiều hơn về cách làm thế nào để sử dụng C++. Tôi đang nói tất cả những điều này chỉ để cho bạn biết rằng tôi không ghét C++. Tôi yêu C++. Có rất nhiều lập trình viên xuất sắc tôi biết ngày nay vẫn đang sử dụng C++, dạy những người khác làm thế nào để sử dụng nó và không có điều gì sai trái với điều đó cả. Thế thì vấn đề ở đây là gì?

Liệu tôi có nên đầu tư công sức để thật thành thạo ngôn ngữ C++?Liệu tôi có nên đầu tư công sức để thật thành thạo ngôn ngữ C++?

Cái thông điệp mà người ta vừa gửi đi mới sai

C++11 vừa mới ra mắt gần đây và dường như đang có một sự hồi sinh lớn trong mối quan tâm phát triển C++.

Thông điệp mới về C++ là sai.Bạn đừng hiểu sai ý tôi lúc này. C++11 thì rất tuyệt vời! Tôi cũng tán thành 100% với tất cả những thay đổi mà người ta vừa làm. C++ rõ ràng đã trở nên dễ sử dụng hơn và nó thậm chí trở nên mạnh mẽ hơn. Tuy nhiên có một thứ vẫn không được cải thiện — và đấy mới là điều quan trọng nhất — nó không đơn giản hơn. Dường như có rất nhiều lập trình viên dày dạn kinh nghiệm đã quên mất rằng tại sao chúng ta đã ngừng sử dụng C++ để chuyển sang Java, C# và những ngôn ngữ hiện đại hơn. Nhiều lập trình viên trẻ tuổi mới vào nghề thực sự không biết về lịch sử này và đang rất bối rối về thông điệp hiện tại của C++ cùng với sự hồi sinh của nó. Mọi người vẫn đang hỏi tôi rằng liệu họ có cần phải học C++ hay không, nhưng cũng như câu trả lời của tôi một vài năm trước đây, và nó vẫn giống hệt như ngày hôm nay là — KHÔNG! Vâng, mặc dù chữ “KHÔNG” viết in hoa thì hơi thô lỗ một chút. Vì thế có lẽ câu trả lời tốt hơn nên là “tại sao”?

Tại sao bạn lại muốn học C++?

Chỉ có khoảng 3 lý do được xem là hợp lý để học C++ ngày nay mà tôi có thể nghĩ ra.

  • Bạn muốn cải thiện từng chút tốc độ thực thi của phần mềm bạn viết và bạn muốn làm điều đó với một ngôn ngữ có hỗ trợ các lớp trừu tượng hướng đối tượng (OO).
  • Bạn đang viết code giao tiếp trực tiếp với phần cứng. (Ví dụ: bạn đang viết một phần mềm driver ở mức thấp.)
  • Tác vụ của bạn yêu cầu kiểm soát bộ nhớ và thời gian một cách tuyệt đối, vì thế bạn phải quyết định hành vi hệ thống và kiểm soát bộ nhớ triệt để. (Liên quan đến một hệ điều hành nhúng thời gian thực đang điều khiển một số thao tác di chuyển của robot.)

C++ là một ngôn ngữ rất khó để thành thạo.Có thể là tôi đã bỏ sót một vài trường hợp nào đó, nhưng có lẽ bất kỳ trường hợp nào khác nhìn chung sẽ rơi vào trong 3 thể loại nói trên. Khoan! Đợi đã! Thế còn về tính đa nền tảng thì sao? Không! Làm ơn đừng học C++ vì nghĩ rằng bạn sẽ xây dựng phần mềm có thể chạy bất kỳ đâu. Hiện nay có rất nhiều tùy chọn khác để làm điều đó và C++ thì không đa nền tảng như nhiều người luôn tin hoặc đồn đại. Mức trừu tượng thấp hơn thì càng khác nhau trong mỗi hệ điều hành và nền tảng. Và làm ơn cũng đừng nói với tôi rằng C++ mang lại cho bạn hiều sức mạnh và kiểm soát để làm chính xác điều mà bạn cần. Hầu hết công việc phát triển phần mềm là về quản lý sự phức tạp chứ không phải về việc có khả năng thao tác đến từng bit tại một mức thấp hơn. Trong hầu hết các trường hợp của việc phát triển những phần mềm lớn và hiện đại thì chính sự trừu tượng ở mức cao hơn, chứ không phải là sự trừu tượng ở mức thấp hơn mới là điều mà bạn muốn.

Nhưng, dù sao đi nữa tôi cũng muốn học C++

Vâng, tôi biết bạn nghĩ rằng Windows 8 thì rất mới mẻ và tất cả những lũ nhóc đang học C++ để viết các ứng dụng Windows 8 của chúng, nhưng cũng như bạn nên biết có cái gì trong bột trái cây Kool-aid trước khi bạn uống nó. Viết code trong C++ thì không đơn thuần là một cuộc dã ngoại. Thậm chí cùng với tất cả sự thay đổi trong C++11, thì C++ vẫn là một ngôn ngữ rất khó để học và thậm chí còn khó hơn để có thể tinh thông nó. Bạn có thể đã nghe thấy câu nói nổi tiếng này về C++:

“Làm việc với C thì rất dễ bắn vào bàn chân của bạn. Làm việc với C++ thì còn khó hơn, và nếu không cẩn thận thì nó sẽ thổi bay cặp giò của bạn!” ~ Bjarne Stroustrup

Làm việc với C++ thì còn khó hơn, và nếu không cẩn thận thì nó có thể sẽ thổi bay cặp giò của bạn!Và nếu bạn không biết Bjarne là ai thì, vâng, ông ta chính là cha đẻ của ngôn ngữ C++. Vì thế nếu ông ta đã nói về ngôn ngữ đó như vậy, thì tôi chắc chắn rằng bạn có thể đã đưa ra được kết luận cho riêng mình. Tôi vẫn nghe thấy rằng hiện nay C++11 làm cho mọi thứ trở nên dễ dàng hơn và rằng C++11 đã khắc phục được rất nhiều vấn đề của C++98. Tôi không nghi ngờ về điều đó. Cái mà nó vẫn chưa sửa được chính là kích thước và phạm vi của ngôn ngữ đó — nó thực ra đã tăng lên. Chắc chắn là, bạn có thể sử dụng chỉ một phần nhỏ của C++. Chắc chắn là, bạn có thể sử dụng tính năng mới smart pointers trong C++ để tránh việc bạn phải thao tác bằng tay để quản lý bộ nhớ. Bạn có thể sử dụng biểu thức lambda để khai báo các hàm in-line thay vì truyền các con trỏ hàm. Dạng suy luận tự động là điều cần thiết để giúp bạn có thể hít thở trong một bầu không khí trong lành. Vấn đề ở đây là bạn sẽ vẫn phải biết những cách cũ để làm mọi thứ và bạn phải hiểu chính xác điều gì đang thực sự diễn ra khi bạn đang debug một chương trình C++ mà rất dễ có khả năng stomping bộ nhớ (đây là điều mà bạn có thể chưa bao giờ nghe thấy nếu bạn được sinh ra trong thế giới của managed code.) Bạn sẽ bắt gặp những đoạn code C++ từ 20 năm về trước và trông nó sẽ như là một ngôn ngữ hoàn toàn khác vậy.

Sau đây là danh sách một số câu hỏi phỏng vấn thực tế mà tôi đã sử dụng để hỏi những lập trình viên C++ trong các buổi phỏng vấn tuyển dụng cho công việc mà tôi đã thuê.

  1. Có bao nhiêu cách để khởi tạo một kiểu dữ liệu nguyên thủy trong C++ và đó là những cách nào?
  2. Tại sao bạn nên khai báo một hàm hủy là ảo (virtual)?
  3. Nó có nghĩa gì khi nói rằng C++ hỗ trợ overloading (nạp chồng)?
  4. Nêu ra một số ví dụ về overloading trong C++?
  5. Khái niệm name mangling trong C++ có nghĩa là gì và tại sao nó lại được sử dụng?
  6. Một lớp trừu tượng cơ sở (abstract base) có nghĩa là gì?
  7. RTTI có nghĩa là gì?
  8. Làm thế nào để bạn có thể truy cập một biến mà nó bị “che khuất” bởi một biến khác có cùng tên?
  9. Khái niệm namespace có nghĩa là gì và làm thế nào để sử dụng nó?
  10. Điểm khác nhau giữa một lớp và một cấu trúc (struct) trong C++ là gì, và so sánh với ngôn ngữ C thì như thế nào?
  11. Khái niệm template là gì? Làm thế nào để sử dụng chúng?
  12. Một hàm tạo sao chép (copy constructor) có nghĩa là gì và khi nào thì nó được sử dụng, đặc biệt là khi so sánh với toán tử =
  13. Điểm khác nhau giữa một sao chép “shallow” và “deep” là gì?
  14. Hằng toán tử (const operator) nghĩa là gì và nó được sử dụng như thế nào?
  15. Điểm khác nhau giữa truyền tham chiếu, truyền tham trị, và truyền bởi con trỏ trong C++ là gì?
  16. Khi nào thì nên và khi nào thì không nên trả về một giá trị bởi tham chiếu trong C++?
  17. Điểm khác nhau giữa một biến tạo ra trên ngăn xếp (stack) và một biến tạo ra trên heap là gì?
  18. Làm thế nào để bạn giải phóng bộ nhớ đã cấp phát động cho một mảng?
  19. Đa kế thừa là gì? Khi nào thì nó nên được sử dụng?
  20. Một hàm ảo thuần túy (pure virtual) là gì?
  21. Từ khóa mutable có ý nghĩa gì?
  22. Từ khóa volatile có ý nghĩa gì?
  23. Khái niệm STL có nghĩa là gì?
  24. Khái niệm Vector có nghĩa là gì?
  25. Cái gì được chứa strong phần header <algorithms>?
  26. Điểm khác nhau giữa #include <iostream.h> và #include <iostream> là gì?
  27. Điểm khác nhau giữa “++i” and “i++” là gì?
  28. Ước lượng short circuit có nghĩa là gì? Nó được sử dụng như thế nào? Tại sao việc sử dụng nó có thể gây nguy hiểm?
  29. Toán tử ‘,’ có ý nghĩa gì?
  30. Toán tử tam nguyên có nghĩa là gì? Cách sử dụng nó như thế nào?
  31. Hàm hằng thành viên (const member) có nghĩa là gì và nó được sử dụng như thế nào?
  32. Làm thế nào để sử dụng try/catch trong C++?
  33. Tại sao bạn đừng bao giờ ném ra một ngoại lệ trong một hàm hủy?
  34. Từ khóa explicit có ý nghĩa gì?
  35. Đâu là cách đúng để thực thi một ép kiểu trong C++?
  36. Khái niệm inline có nghĩa là gì?

Một số trong những câu hỏi trên có cùng câu trả lời đối với C# hoặc Java, nhưng bạn có thể thấy từ danh sách này rằng C++ thì rất, rất sâu. Có một số lượng rất lớn kiến thức để biết về ngôn ngữ này. Phát triển trong C# và Java thì gọi là học về ngôn ngữ đó, nhưng thực ra phần lớn là học về cách sử dụng các thư viện. Còn phát triển trong C++ thì phần nhiều là học về mọi ngóc ngách và xó xỉnh của ngôn ngữ này.

C++ là hướng đi sai lầm cho tương lai

Vấn đề lớn nhất đó là các ngôn ngữ lập trình thực ra cần phải trở nên ngày càng đơn giản hơn và gia tăng mức độ trừu tượng chứ không phải là giảm đi. Sẽ luôn luôn cần những đoạn code ở mức thấp, nhưng phần lớn code mà chúng ta viết ngày nay thì đa phần là ở mức cao nhiều hơn. Lần đầu tiên tôi đã nhảy khỏi con thuyền C++ là nhiều năm về trước khi mà tôi cuối cùng có thể không còn tạo ra lý lẽ rằng mình có thể phát triển các ứng dụng nhanh hơn trong C++ so với C#.

Tôi đã giữ trong một thời gian dài một niềm tin rằng tất cả những đầu tư công sức của mình đã làm với C++ sẽ không uổng phí, nhưng sau đó nhận ra rằng C# đã làm đơn giản mọi thứ tới một mức độ tuyệt vời, và rằng những tính năng bổ sung của C++ thì không còn mang lại cho tôi chút giá trị nào nữa. Ngay khi tôi vừa dành ra chút thời gian giải lao khi đang viết bài này, thì tôi đã tình cờ lướt qua một dự án vừa được hồi sinh từ Microsoft Research gọi là touchdevelop (dự án lập trình chỉ bằng touch và kéo thả chứ không phải viết code như hiện nay nữa). Đây mới là hướng đi mà chúng ta cần đi. Chúng ta cần các ngôn ngữ lập trình ngày càng phải trở nên đơn giản hơn để sử dụng, chứ không phải ngày càng phức tạp hơn. Đừng hiểu sai ý tôi, bạn có thể không đánh giá cao đối với dự án touchdevelop, nhưng tôi tin rằng một cái gì đó tương tự như vậy sẽ là tương lai của chúng ta.

Dường như Microsoft đang làm một việc khá lịch sự là tạo ra lực đẩy để mang C++ quay trở lại “sân khấu” bằng việc hỗ trợ C++ trong Windows 8 và đang thử xóa sổ XNA, nhưng tôi nghĩ rằng có một sự nhận thức sai của cộng đồng phát triển và dường như đã khắc sâu vào tâm trí của các nhà phát triển hệ điều hành Windows rằng các lập trình viên đang muốn sử dụng C++. Tôi chỉ không nhìn thấy mình quay trở lại tới một ngôn ngữ khó hơn khi mà tôi có thể viết code C# để làm mọi thứ trên mọi nền tảng ngay lúc này. C# thì không phải là một ngôn ngữ hoàn hảo, nhưng nó thì rất mạnh mẽ và dễ dàng sử dụng.

Một vài lời bàn về C++

Cùng với tất cả những điều mà tôi đã nói ở trên, tôi vẫn luôn tin rằng có một giá trị trong việc học C++. Không, tôi không cố gắng mâu thuẫn với chính mình ở đây. Hãy cho phép tôi giải thích thêm. Nếu bạn có thể lập trình trong C++ thì bạn có thể lập trình trong bất cứ ngôn ngữ lập trình nào khác. Nếu bạn hiểu về bộ nhớ ngăn xếp (stack) và heap hoạt động, con trỏ và tham chiếu và tất cả những chi tiết ở mức thấp đã làm cho C++ trở nên phức tạp, thì nó sẽ giúp bạn khi làm việc với các lớp trừu tượng ở mức cao hơn và hiểu được cách thức máy tính làm việc như thế nào.

Quan điểm của tôi trong bài viết này thì không đánh vào C++ hoặc đánh vào những người đang sử dụng C++ hay đang dạy C++, nhưng đúng hơn là chỉ làm “cùn” đi cái thông điệp dường như đang được tạo ra bởi cộng đồng những người ủng hộ C++ rằng C++ đang quay trở lại.

Mọi người sẽ không trở thành một lập trình viên C++ và họ không cần thiết phải như vậy. Trong khi C++ có thể có khả năng làm cho chương trình của bạn hoạt động hiệu suất hơn (trong một số trường hợp nhất định), nhưng nó lại không chắc sẽ làm cho bạn hiệu quả hơn trong việc tạo ra chương trình của mình (ngoại trừ trong một số trường hợp đặc biệt). Vì vậy, mặc dù tôi lấy làm vui mừng vì C++ đã nhận được rất nhiều sự sửa chữa bổ sung cần thiết, nhưng tôi không nghĩ nó sẽ quay trở lại trong thời gian sắp tới, và đó lại là một điều tốt.

Còn bạn thì bạn đang nghĩ gì? Hãy cho độc giả của blog Vinacode biết quan điểm của bạn nhé!

Các bài viết liên quan:

Về tác giả bài viết:

johnJohn Sonmez là một lập trình viên, người lập ra trang web Simple Programmer, đồng thời anh là tác giả của giáo trình học trực tuyến Pluralsight. Anh đã xuất bản hơn 50 khóa học trực tuyến về các chủ đề như iOS, Android, .NET, Java và phát triển Games. Bạn có thể liên hệ với anh qua Twitter.

Advertisements

46 comments on “Tại sao C++ không còn là sự lựa chọn dành cho bạn nữa

  1. Cám ơn bài viết. chi tiết.
    Hiện tại tôi đang cầm trên tay cuốn The C++ Programming Language của tác giả Bjarne. đọc xong bài viết tôi phân vân nên tiếp tục đọc nó hay bỏ nó xuống đất rồi chọn 1 ngôn ngữ khác dễ học dễ làm hơn @@

    • @Cứ Từ Từ: quan trọng quyết định là ở bạn mà. Bài viết chỉ cung cấp một góc nhìn để bạn tham khảo thôi!

      – Với lại cái gì cũng có cái giá của nó, nếu có kỹ năng cao về C++ thì bạn có thể kiếm được mức lương cao hơn mặt bằng chung khá nhiều (phải ko bạn @Ngọc Tân Đỗ nhỉ? 🙂 )
      – Mình mới search trên trang web tuyển dụng ITviec thì thấy C++ có tới 94 yêu cầu (vậy là cũng khá nhiều, nhưng hình như cái search của họ ko phân biệt được C# và C++ thì phải) http://itviec.com/search/C++

      • @ Vinacode, bạn nói rất đúng. Không chỉ C++ , bất kì công nghệ hay ngôn ngữ nào chúng ta có kĩ năng cao đều được trọng dụng. Trong các lĩnh vực về embedded, image processing hoặc networking programming job hoặc những lĩnh vực cần xử lý hiệu năng cao thì C++ luôn có chỗ đứng.

        Nhân tiện về tuyển dụng C++ thì đúng như vina code nói, nhiều requirement đưa ra ko phân biệt rõ ràng C++, objective C hay C# :v . Mình từng đọc 1 requirement tuyển ios dev yêu cầu thành thạo C/C++ sau đó mới tới Objective C :3

        @Cứ Từ Từ: mình suggest bạn nên tìm hiểu về standard mới nhất của C++ (11 và 14) và không đọc sách của tác giả trước khi nắm chắc vấn đề . Sách của ông đó viết khá khó hiểu

  2. Theo mình thực ra lập trình C++ lại có ý nghĩa quan trọng trong lập trình nhúng, nhất là đối với lập trình vi điều khiển theo mô hình ” bảy lớp ” , bởi vì viết bằng C++ ngắn, linh hoạt hơn Assembly rất nhiều, và rất nhiều trình biên dịch cho vi xử lý bây giờ chỉ biên dịch từ c và C++ sang assembly thôi , hiện nay theo mình biết chỉ khoảng 10% lập trình viên trên thế giới trong lĩnh vực lập trình nhúng có thể dùng C++ thông thạo trong việc này !!! Tiện đây Ad cho mình hỏi thêm là nếu mình là một sinh viên cơ điện tử nhưng lại rất yêu lĩnh vực lập trình, mình thích theo hai hướng : thứ nhất là theo lập trình nhúng, hoặc thứ 2 là theo lập trình FrontEnd cho web, và ngôn ngữ mình yêu thích là python !!! Vậy theo @vinacode thì một người không thông minh để biết hết được các giải thuật như mình, lại không qua một trường lớp bài bản nào về đào tạo CNTT, thì theo nghề này có khó khăn gì không và đây có phải một lựa chọn tốt với người như mình không ???

    • Chào bạn Hung Pham,

      Trước tiên mình xin nói rằng câu hỏi của bạn rất khó trả lời, có lẽ một phải cần một chuyên gia có kiến thức sư phạm nào đó tư vấn?

      Mình chỉ dám trả lời theo kinh nghiệm của mình thôi nhé! Thực ra thì việc lập trình ko cần phải biết hết các giải thuật, và hiện nay cũng có rất nhiều thư viện có sẵn giúp bạn làm rất nhiều việc. Và nếu bạn có đam mê thì đây cũng là một nghề đáng theo.

      Nhiều người cứ nghĩ rằng phải thật thông minh hoặc học toán thật giỏi mới theo được nghề này, hoặc phải theo trường lớp bài bản mới có thể học được. Nhưng thực ra điều đó ko đúng, mình thấy có nhiều người tự học mà vẫn rất giỏi, bạn có thể đọc thêm bài này để xem những ngộ nhận đó: https://vinacode.net/2014/09/01/quan-niem-khong-dung-trong-viec-hoc-lap-trinh/

      Nếu bạn đang sinh viên ngành cơ điện tử mà tự nghiên cứu lập trình thì có thể sẽ gặp một bất lợi về chuyện bằng cấp sau này, ở VN vẫn quan trọng chuyện bằng cấp, vì thế nhiều khi hồ sơ của bạn bị gạt ra ngoài trước vòng phỏng vấn chỉ vì lý do không đúng ngành!

      Thân!

  3. Chào Vinacode! Ad cho em hỏi là : em thích lập trình game di động và muốn tạo ra các game chơi trên di động, nên dự định là học c cơ bản ban đầu, rồi sau đó là tới c++ và objective c (hướng lập trình ios). Sau khi đọc nhiều thông tin trên mạng thì thấy c++ không phải là lựa chọn duy nhất (nhưng thấy các công ty tuyển dụng c++ nhiều), ngoài ra còn có c#, java v.v…, giữa 2 thứ là ios và android không biết chọn cái nào, e rất bối rồi và băn khoăn, nhờ ad tư vấn rõ giúp em. EM CHÂN THÀNH CẢM ƠN

    • Hai Nguyen, thực ra bài viết này cũng tạo ra nhiều tranh cãi, vì dù C++ hơi khó học nhưng nó là một ngôn ngữ mạnh mẽ và cũng là một lựa chọn cần quan tâm khi bạn viết game bằng engine Cocos2D chẳng hạn. Sang tuần mình sẽ đăng một bài bên TechMaster về các engine phổ biến và miễn phí dùng trong lập trình game nhé!

  4. Cảm ơn Ad! Nhờ Ad cùng các bậc đàn anh trong ngành lập trình đi trước, tư vấn và cho em vài lời khuyên khi chọn nghề lập trình game di động. Tại vì em chỉ là gà mờ chưa biết gì nhiều về lãnh vực lập trình này. EM CHÂN THÀNH CẢM ƠN

  5. Tôi nghĩ bài viết này phần lớn các nhận định là đúng, nhưng nó quá nhấn mạnh việc học c++ khó như thế nào. Việc học c++ sẽ rèn luyện cho bạn nền tảng tư duy. Ví dụ như khi muốn tìm kiếm 1 phần tử trong 1 danh sách dài, tùy độ dài của danh sách mà ta lựa chọn thuật toán sắp xếp và tìm kiếm thích hợp( nổi bọt, nhị phân..) rồi implement nó bằng chính tư duy của bản thân. Còn c# chỉ việc gọi thư viện là xong. Sự quá đầy đủ sẽ làm lập trình viên lười tư duy chi tiết, và nó tiềm ẩn nguy cơ lỗi.
    Thân :).

    • C# khác C++ ở nhiều điểm, C# thì hiện đại hơn nên không tránh khỏi việc bị cho là ăn sẵn. Tuy nhiên thì mình thấy việc viết code với C# và C++ rất giống nhau nên theo mình C# có chút tiện nghi hơn chứ không ăn sẵn. C++ viết code thế nào thì C# cũng gần như vậy.
      2 ngôn ngữ phát triển theo 2 hướng khác nhau nên nếu bạn chỉ nhìn theo tiêu chí tốc độ hay giải thuật gì đó đặc trưng của C++ thì bạn sẽ không bao giờ thấy nét đặc trưng của C# hay bất kì ngôn ngữ nào khác.

  6. Ad ơi! E đang cần tư vấn về ngành này, không biết là e có thể nói chuyện với Ad thông qua điện thoại được không ạ ? (nếu Ad đồng ý thì Ad gửi sdt qua mail của e nha)

  7. Bài viết thể hiện quan điểm rất rõ ràng. Mình chỉ bổ sung thêm cách nhìn tích cực về C++:
    – Nếu về mảng giáo dục, C++ là hướng đi tốt cho những sinh viên tiếp cận lập trình, nó hệ thống rất nhiều kiến thức nền tang cũng như tư duy,nó cũng không quá lỗi thời như những bạn già C, Pas, Fox, Col.. 🙂
    – Về định hướng công việc, nó cũng là một trong top những ngôn ngữ được săn đón nhất hiện tại, các bạn có thể nhìn một số bản tin tuyển dung để nắm bắt.
    – Về mặt ứng dung: Có rất nhiều hệ thống lớn/rất lớn đã vận hành trên dưới chục năm đang đến thời kỳ cần sự chuyển đổi, nâng cấp hay chúng ta còn gọi là migration, các ứng dung nhúng,..

  8. Photoshop, Firefox, google chrom … rất nhiều app và game nổi tiếng được viết bằng C++. Tuy nhiên C++ rất khó học, Khi muốn nhanh chóng phát triển ứng dụng trong thời gian ngắn pạn có thể theo C#, Java hay Visual Basic. nhưng theo “ngu kiến” của mình thì ngôn ngữ nào ko quan trọng, quan trọng là ở tư duy lập trình.

  9. Mọi người! Cho em hỏi : nếu chuyên lập trình ios, thì mình học theo trình tự như vậy có được không (Lập trình : Từ C – rồi đến C++ – và cuối cùng là IOS) hay là như thế nào ? Nhờ mọi người giúp dùm xin cảm ơn.

    • Alian, nếu bạn chưa có kiến thức gì về lập trình thì theo lộ trình đó khá hợp lý, bắt đầu một chút C/C++ rồi sang Objective-C/Swift. Còn nếu bạn đã biết lập trình sơ sơ (ví dụ có viết Pascal và PHP… rồi) thì nhảy vào học Objective-C/Swift luôn cũng được. 🙂

  10. Mình đang theo dõi 1 quyển: large scale c++ software design của Lakos, mình là dân tay mơ về ngôn ngữ này, mình vẫn chưa lập trình về ngôn ngữ này nhiều nhưng cảm thấy nó khá hay, mình quyết định đọc sách này vì phần giới thiệu của quyển sách xoay quanh vấn đề về kĩ thuật cải tạo hệ thống (như cách phân tách thông tin thực thi, phân cấp hệ thống, xóa bỏ phụ thuộc tuần hoàn,..), không liên quan nhiều đến phần dạy cú pháp hay câu lệnh( code ví dụ chủ yếu là C++) nhưng đôi khi mình sợ chỉ có một số thứ chỉ có C++ hỗ trợ, mình đọc được nửa quyển rồi, sau đó nghe đám bạn nói C++ không còn dùng nhiều nữa, thời đại bây giờ thì nó trở nên già nua rồi, nghe xong muốn té ghế. Sau khi đọc bài viết mình, mình càng nản hơn, ad cho xin tí ý kiến?.

  11. Theo mình giá phần mềm bây giờ quá đắt cũng một phần do NNLT. Hy vọng rằng vài năm nữa sẽ xuất hiện những ngôn ngữ mà ai cũng có thể học và lập trình dễ dàng. Giá phần mềm sẽ rẻ đi.

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s