CHUYÊN ĐỀ 1: NHỮNG CÂU HỎI LIÊN QUAN ĐẾN C/C++ (phần 1)

Đối với những bạn mới tìm hiểu về lập trình, hẳn sẽ có rất nhiều câu hỏi cần được giải đáp, những băn khoăn, trăn trở: liệu có nên bước chân vào lĩnh vực HOT và luôn phải cạnh tranh khốc liệt này? Hiểu được điều đó, Tadaca đã sưu tầm và phiên dịch lại 1 số câu hỏi được nhiều sự quan tâm của các bạn trẻ trên thế giới hiện nay. Tất cả đều được phản hồi bởi các nhà phát triển phần mềm, các lập trình viên có kinh nghiệm lâu năm và được lượt vote cao bởi những người theo dõi. Tadaca hi vọng, thông qua những chuyên mục Hỏi- Đáp này, bạn sẽ tìm thấy câu trả lời cho những vấn đề mình còn bỏ ngỏ, có được những kiến thức tổng quan về thế giới lập trình, có cái nhìn đa chiều hơn về công việc mình đang và sẽ làm, để từ đó, có tầm nhìn rộng hơn và vạch được chiến lược mình cần theo đuổi trong những năm tới!

Chúc các bạn thành công!

 

 NHỮNG CÂU HỎI LIÊN QUAN ĐẾN C/C++

 

Câu hỏi 1: Là sinh viên năm Nhất chuyên ngành Khoa học máy tính, có phải em đã mắc sai lầm khi chọn C++?

Trả lời:

* Tarik Kurspahic, Co-founder & CTO @Personal | Startups, Tech, Product, GrowthHacking, Design, UX:

Trong lập trình, thực sự rất hiếm việc ai đó chọn một ngôn ngữ và chỉ gắn bó với nó, vì vậy, việc em chọn ngôn ngữ nào đầu tiên hoàn toàn không là vấn đề!

Cái quan trọng là em phải học, tìm hiểu cái khái niệm( variables, classes, instances, collections, iterators, functions, methods, ….) và phải có sự nhận thức tốt về các loại khác nhau của ngôn ngữ, chẳng hạn: hướng đối tượng và chức năng.

Ngoài ra, em sẽ gặp rất nhiều framework làm việc với những ngôn ngữ lập trình cụ thể. Vì thế, đừng quá lo lắng cái mà mình đã chọn đầu tiên. Hãy chắc chắn rằng em hiểu được bản chất các khái niệm và sẽ sử dụng chúng trong các ngôn ngữ khác( nếu em học thêm sau này).

Ví dụ, đây là những ngôn ngữ anh đã học từ trước cho đến nay: Basic, Turbo Pascal, C, C++, Ada, JavaScript, ActionScript, Java, C#, VB, Ruby, Scala, Objective-C & Swift. Nhìn rất nhiều đúng không? Nhưng chúng có điểm chung là: các khái niệm hầu hết tương tự nhau. Vì thế, việc học một ngôn ngữ khác rất dễ một khi em nắm được những điều cơ bản

 

Câu hỏi 2: C và C++ có được dùng nhiều không? Liệu có đáng để đầu tư, học chuyên sâu về nó?

Trả lời:

* Roxanne Skelly

Nếu bạn chỉ muốn những thứ như lập trình web/ truy cập cơ sở dữ liệu, bạn có thể chọn và làm được ngay với các ngôn ngữ như: Javascript, PHP, Ruby, Python, vv

Tuy nhiên… nếu bạn có ước nguyện làm được những điều dưới đây, thì C và C++ thực sự hữu ích:

  • Games, đặc biệt là giao diện Console và PC
  • Các ứng dụng nhúng như: robot, in 3D,  Arduino,…
  • Hệ điểu hành, trình điều khiển,…
  • Các ứng dụng máy tính như dãy đồ họa, xử lý văn bản,..

Bạn có thể làm các điều trên với C#, Java; nhưng để cạnh tranh trên thị trường, người ta thường dùng C, C++ vì lý do hiệu suất.

* Suman Achary:

Các công ty như Google, MS, FB …, kiểm tra kĩ năng code của ứng viên thông qua lập trình C và C ++ . Các ngôn ngữ này cũng giống như các nền tảng của lập trình như vậy, không đời nào chúng lại để mất giá trị của mình sớm.

*Praveen Kumar Rai:

Lý do bạn nên học chuyên sâu về C/ C++

  • trong các bảng đánh giá, C, C ++ luôn nằm top ngôn ngữ lập trình được lựa chọn nhiều nhất.
  • chúng là cơ sở của nhiều ngôn ngữ khác sử dụng phổ biến
  • là ngôn ngữ tốt nhất để học khái niệm OOP
  • hiệu quả hơn so với tất cả các ngôn ngữ khác trong quản lý bộ nhớ, con trỏ, lập trìnhTemplates/ Generic,..

Câu hỏi 3: C++ được coi là “ BIG language”. Vậy đến giai đoạn học nào về C++ thì được coi là có tay nghề? Hay, các giai đoạn tiếp theo trong viêc học của C++ là gì?

Trả lời:

* Sergey Zubkov, C++ programmer (using boost and C++14)

Tôi không cho rằng bản thân C++ được chia làm các giai đoạn. Nhưng mỗi phần của C++, từ cách gọi chức năng đến thao tác, có thể hiểu là các cấp độ chuyên môn khác nhau:

Để tôi đưa ra một ví dụ, dòng I / O:

  • Một người mới bắt đầu sẽ được làm quen với std :: cin / std :: cout, std :: fstream, std :: stringstream, thao tác thư viện cơ bản (std :: setw, std :: hex, vv).
  • Một lập trình trung cấp sẽ có thể sử dụng iterator I / O (streambuf iterator và istream_iterator), điều hành quá tải ostream (operator <<, operator >>), sử dụng thao tác thư viện ít phổ biến hơn như std::quoted, and boost.iostreams
  • Một lập trình tiên tiến sẽ có thể mở rộng streambuf, viết dòng và ghi vào vòng lặp, viết và định dạng tuỳ chỉnh với sentry, sử dụng chuyển đổi wbuffer, xây dựng các khía cạnh tùy chỉnh CType,  sử dụng strstreams( hoặc hiểu tại sao chúng lại bị phản đối và sử dụng thay thế phi tiêu chuẩn hoặc những bản viết riêng của bạn )
  • Một chuyên gia sẽ biết làm thế nào và khi nào sử dụng xalloc, có thể viết tùy chỉnh các thao tác stateful, hiểu và sử dụng callbacks, thiết lập khía cạnh cache , xây dựng- tùy chỉnh các khía cạnh dòng codecvt với những đặc điểm tùy chỉnh

( còn tiếp….)

Nguồn: Internet

Bình luận