[Suy ngẫm] Có nên học C trong trường đại học không?
Xin lỗi các bạn vì một số việc riêng mà mình đã ngưng viết bài trong mấy tháng qua. Tuy nhiên hôm qua sau khi nhận được 1 câu hỏi từ 1 “đàn em” làm mình đã phải đứng hình một phút rồi mới trả lời được. Cũng chính vì câu hỏi đó mà hôm nay mình đã quyết định viết ra bài viết này để trình baft một chút suy nghỉ chủ quan của mình. Mình cũng xin nói trước rằng đây chỉ là suy nghĩ chủ quan của bản thân mình và không có ý chỉ trích hay dạy bảo gì ai cả, nếu có động chạm đến bạn nào thì cũng hoàn toàn là vô tình mà thôi.
Xin phép được trở lại với chủ đề chính. Chả là hôm qua tự nhiên được nghỉ học, vừa buồn vừa chán, rủ thằng em đang học đại học Bách Khoa khoa CNTT ra cà phê chém gió (định rủ gấu nhưng mà có đâu mà rủ :oops:). Đang chém chuyện trời ơi đất hỡi thì lại chuyển sang chủ đề học hành. Mình vốn cũng học cái khoa đấy, cũng ra trường rồi nên cũng có kinh nghiệm nên càng chém ác. Nhưng đột nhiên nó hỏi mình 1 câu mà đến bây giờ mình vẫn còn phải suy nghĩ lại rất nhiều. Câu đấy nguyên văn như sau:
“Sao bây giờ trường mình vẫn dạy C anh nhỉ? Em thấy giờ C có được việc gì đâu. Mấy thằng bạn em nó cũng có cần C gì đâu vẫn cày cuốc Android như điên kia kìa. Thế thì trường dạy C làm gì chuyển sang dạy Java luôn đi có phải hơn không?”
Nghe xong câu này phản xạ đầu tiên của mình là định chém luôn “Chú chỉ được cái nói đúng.” Nhưng mà nhớ câu ông cha ta đã dạy “Uốn lưỡi 7 lần trước khi nói.” Thế là mình cũng uốn thêm vài cái, lúc đầu mới uốn thì thấy đúng là giờ C có mấy khi dùng đến đâu nhưng càng uốn lại càng thấy hình như học C cũng chẳng phải vô dụng lắm thì phải.
Học C để làm gì?
Tại sao lại nói là C có mấy khi dùng đến đâu. Đơn giản là hãy nhìn vào các tuyển dụng ở Việt Nam, rất ít nơi tuyển dụng bạn vào để code C trừ các công ty chuyên về làm nhúng hoặc có những yêu cầu đặc biệt. Còn lại thì mình thấy hiện nay đang tuyển dụng nhiều về Java, Object-C hoặc Swift, Ruby, hay là các ngôn ngữ lập trình web như là PHP, ASP, Java, … chứ thật sự là rất ít, rất rất ít công ty tuyển lập trình viên chỉ để code C. Có lẽ ở trên thế giới thì sẽ nhiều người làm việc với C hơn nhưng ở Việt Nam hiện nay thì thật đáng buồn là không phải như vậy.
Cũng đơn giản thôi C vừa khó, lập trình lại lâu còn dễ dẫn tới những lỗi trời ơi đất hỡi, chưa kể đến để học và thành thạo được C sẽ mất thời gian hơn rất nhiều. Chính vì lẽ vậy có lẽ chỉ những nơi đặt hiệu năng lên hàng đầu mới thật sự cần đến C. Trong khi đó Việt Nam hiện nay vẫn chú trọng phát triển ứng dụng mà ứng dụng thì có mấy khi cần đến hiệu năng đâu, cứ đẹp chạy ổn là được thôi mà. Vậy thì C có dùng gì đến đâu.
Học C sẽ mất gì?
Cụ thể hơn ta sẽ nói một chút về cái mất khi học C.
1. Mất thời gian
Chắc hẳn ai cũng biết C vừa khó học lại vừa thiếu thư viện (mình đang nói về standard C chứ không phải C++ nhé), như vậy chắc chắn rằng học C sẽ rất mất thời gian rồi phải không nào 🙂 Mà thực ra thì học cái gì mà chả tốn thời gian nhưng chắc rằng học C sẽ là tốn thời gian lâu nhất đấy.
2. Mất sức
Không chỉ mất thời gian để viết được 1 chương trình thực thụ bằng C cũng thật sự là một sự kì công đối với những người mới bắt đầu. Họ sẽ phải mày mò để tự viết hoặc tìm các thư viện cần cho nhu cầu của mình từ internet, rồi họ sẽ phải viết những đoạn code dài ngoằng và đầy rắc rối, thậm chí là cả những bug tiềm ẩn chỉ để thực hiện những công việc hết sức đơn giản mà với nhiều ngôn ngữ lập trình khác chỉ cần 1 đến 2 dòng có lẽ đã xong từ lâu.
Vâng thật sự học C và làm việc với C là cực kì mất sức dù là với bất kì ai.
3. Hại não
Hầu hết những người mới học C mà mình biết đều nói rằng học C rất là khó và đặc biệt là phần con trỏ thật sự là quá hại não, cực kì khó hiểu và hay gặp lỗi, thậm chí nhiều khi chẳng biết tại sao lại lỗi và cũng chẳng biết tại sao lại hết lỗi nữa cơ 😕 . Vâng hại não chính là một cái mất nữa của chúng ta khi học C mà mọi người hay nói đến.
4. Đi ngược xu thế
Không phải mình kì thị C hay gì đâu nhưng thật sự rằng hiện nay ở Việt Nam thậm chí là trên thế giới cũng đang hướng đến các ngôn ngữ lập trình hiện đại hơn (được gọi là Model Language). Những ngôn ngữ này có 1 điểm chung đó là đều dễ học, thích hợp cho việc lập trình nhanh mà vẫn đảm bảo hiệu năng ở mức chấp nhận được và đặc biệt là hỗ trợ tốt đa nền tảng. Chẳng phải tự nhiên mà các lập trình viên Python, Ruby lại đang được săn đón ở Việt Nam như vậy đâu, đơn giản cũng là theo xu thế cả đó thôi.
Vậy còn C thì sao, chắc hẳn ai cũng biết C là ngôn ngữ biên dịch, muốn chạy trên nền tảng nào thì phải build lại cho nền tảng đó, nên việc đa nền tảng bằng C thật sự là khó khăn không nhỏ. Còn lập trình nhanh và dễ học ư, xin lỗi đi đây là C đấy nhé 😈
Vâng có lẽ chỉ cần 4 cái mất kia thôi cũng đủ để làm ta chùn bước khi nghĩ đến việc học C rồi phải không nào. Nhưng có thật sự là việc học C hoàn toàn vô ích không? Để trả lời được câu hỏi này thì phải xem học C thì có cái lợi gì đã.
Học C sẽ được gì?
Tuy nói là như vậy nhưng mình vẫn cảm thấy học C là cần thiết. Đơn giản thôi bởi mình nghĩ học C sẽ được nhiều hơn mất, nhất là khi còn ngồi trên ghế nhà trường. Như vậy khi học C chúng ta có thể được lợi gì.
1. Hiểu được bản chất
Ai cũng nói C khó học, đặc biệt là phần địa chỉ. Đúng vậy nhưng một khi đã học được về địa chỉ thì bạn sẽ vỡ ra được rất nhiều điều.
Mặc dù hầu hết các ngôn ngữ khác đều không sử dụng khái niệm địa chỉ nhưng chúng cũng có một số khái niệm tương đương hoặc gần tương đương, đặc biệt là khái niệm về kiểu dữ liệu tham chiếu trong Java, C# và nhiều ngôn ngữ khác. Chính vì vậy hiểu được về địa chỉ trong C cũng có thể giúp ta hiểu được sâu sắc hơn về các kiểu dữ liệu này.
Một điều nữa là có rất nhiều ngôn ngữ lập trình đều được xây dựng dựa trên C/C++ nên việc hiểu được C sẽ có ích rất nhiều đối với việc hiểu được cách hoạt động của các thành phần cơ bản trong các ngôn ngữ loại này.
Có thể nhiều bạn sẽ nghĩ nó đã viết ra các thư viện thì cứ thế mà dùng thôi việc gì mà phải hiểu xem ngôn ngữ nó làm gì, thư viện nó làm gì. Nhưng điều đó là hoàn toàn sai lầm, bởi vì càng làm việc nhiều, càng làm việc cho các dự án lớn thì những yêu cầu như vậy lại càng trở lên quan trọng hơn. Vì vậy việc học và hiểu C lúc này đã cung cấp cho bạn một cơ sở để bạn đạt được yêu cầu đó.
2. Nền tảng để học các ngôn ngữ khác
Thực sự là vậy, bởi có rất nhiều ngôn ngữ có cú pháp tương tự C như Java, C#, PHP, Javascript, … Việc học C lúc này sẽ cho bản một nền tảng để có thể dễ dàng chuyển sang sử dụng các ngôn ngữ khác.
3. Cơ sở để chém gió trong các buổi phỏng vấn
Chẳng phải đùa đâu nhưng thực sự rằng ở Việt Nam hiện nay rất nhiều công ty khi phỏng vấn đều hỏi hoặc yêu cầu các ứng viên trả lời các vấn đề liên quan đến lập trình bằng ngôn ngữ C. Thậm chí nhiều nơi mặc dù không làm việc về C nhưng cũng yêu cầu có kĩ năng về C (dù họ không làm việc trực tiếp với C). Như vậy học C cũng chẳng phí đâu.
4. Làm quen với khó khăn
Học C là khó, đúng là khó thật nhưng chẳng lẽ khó là chúng ta sẽ chùn bước, sẽ không làm được sao. Nếu bạn thật sự bỏ cuộc thì mình nghĩ là bạn cũng nên bỏ ý định theo nghiệp lập trình đi, bởi trong thực tế bạn còn gặp phải nhiều thứ khó nhằn hơn nhiều. Cũng như phương châm “Thao trường đổ mồ hôi, chiến trường bớt đổ máu”, bạn càng luyện tập nhiều thì kĩ năng của bạn cũng sẽ càng cao, khi làm việc cũng sẽ càng dễ thích ứng.
Chỉ với 4 cái lợi này thôi mình đã nghĩ rằng học C ở trên ghế nhà trường chẳng hề sai chút nào, có sai có lẽ chỉ là phương pháp học và quyết tâm chưa đủ mà thôi.
- Google+
- Wordpress