Tôi nên học ngôn ngữ lập trình nào?

Bài viết được dịch từ blog Diovo

Giả sử nhà bạn bị hư đường ống dẫn nước và bạn gọi thợ đến để sửa. Người thợ sửa ống nước đến nhà bạn và hỏi rằng: “Ông muốn tôi dùng dụng cụ nào để sửa?”

Bạn sẽ trả lời như thế nào? “Tôi không quan tâm! Hãy sửa cái chỗ rò rỉ chết tiệt này dùm tôi”.

Vâng, điều đó hoàn toàn đúng. Mọi người đều muốn hoàn thành công việc của họ, và các vấn đề của họ phải được giải quyết. Họ không quan tâm đến công cụ nào mà bạn sử dụng cả. Là một lập trình viên, công việc của bạn là giải quyết vấn đề của khách hàng theo một cách hiệu quả nhất có thể. Điều này có nghĩa là bạn không thể sử dụng một công cụ duy nhất để giải quyết mọi vấn đề. Bạn có thể sử dụng một cái khoan điện để sửa một lỗ rò rỉ trên ống nước không? Dĩ nhiên là không. Có thể bạn sẽ phải sử dụng một loại băng keo dán ống nước cho vấn đề đó.

Ngôn ngữ lập trình nào dễ học nhất.Ngôn ngữ lập trình nào là tốt nhất hiện nay?


Ngôn ngữ nào tôi nên học là một câu hỏi sai ngay từ đầu. Các ngôn ngữ lập trình là những công cụ trong túi của một lập trình viên phần mềm. Trước khi quyết định xem ngôn ngữ lập trình nào mà bạn muốn học, bạn nên quyết định xem dạng vấn đề nào mà bạn muốn làm việc cùng. Bạn muốn làm việc trên công nghệ Web? Bạn muốn làm việc trên hệ điều hành Linux? Hay bạn muốn làm việc trên nền tảng di động? Có hàng triệu nhánh khác nhau trong thế giới lập trình và bạn phải hỏi bản thân mình tất cả những câu hỏi đến trong đầu và sau đó quyết định xem liệu ngôn ngữ nào thì phù hợp với lựa chọn của bạn.

Điều này không có nghĩa những công cụ là kém quan trọng. Đúng hơn là; chúng không quan trọng bằng vấn đề mà bạn đang cần phải giải quyết.

Bao nhiêu ngôn ngữ lập trình bạn nên học?

Không có vấn đề gì trong việc cố gắng học được thật nhiều ngôn ngữ lập trình cả. Cái mà bạn nên làm đó là thử và học về nhiều ngôn ngữ lập trình nhất mà bạn có thể, và sau đó quyết định xem rằng ngôn ngữ nào bạn nên trở thành chuyên gia về nó.

Quay trở lại với vấn đề tương tự của chúng ta, công cụ nào bạn nghĩ rằng một người thợ sửa ống nước nên mang theo trong túi đồ nghề? Câu trả lời là: “Đủ công cụ để hoàn thành công việc.”

Đúng vậy. Nếu bạn chỉ biết sử dụng mỗi một công cụ, bạn có thể sẽ phải làm việc cùng những người có thể sử dụng những công cụ khác. Điều này xảy ra trong hầu hết mọi công ty phần mềm. Trong những công ty lớn bạn sẽ làm việc cùng những người khác là chuyên gia trong những ngôn ngữ lập trình và công cụ mà bạn không biết cách sử dụng. Điều này có một lợi điểm đó là những người này sẽ là “ngôi sao” trong những lĩnh vực hẹp của họ. Ngược lại nếu bạn muốn làm việc trong những công ty mới khởi nghiệp (hoặc bạn muốn làm việc như một freelancer), bạn có thể muốn biết mỗi thứ một chút của mọi dạng công cụ ngoài kia.

Dĩ nhiên bạn không cần phải biết sử dụng tất cả các loại tuốc-vít. Bạn chỉ cần trở thành chuyên gia trong việc sử dụng một loại tuốc-vít tốt. Tương tự như vậy, bạn không cần phải trở thành chuyên gia trong mọi ngôn ngữ lập trình web. Chỉ cần học một ngôn ngữ cho thật tốt và bạn sẽ ổn.

Mỗi lĩnh vực lập trình đều có một bộ các công cụ của riêng nó để giúp bạn phát triển các phần mềm. Nếu bạn đang phát triển một website doanh nghiệp (Enterprise), bạn có thể đang làm việc cùng những công nghệ như Core Java, Servlets, EJBs, XML, Unix Shell Scripts, Log Parsers, Databases và rất nhiều loại Web-server khác nhau… Điều này có nghĩa là ngoài các ngôn ngữ lập trình thì còn có rất nhiều các công nghệ liên quan tới lập trình mà bạn nên thành thạo để trở thành một lập trình viên giỏi.

Thêm một điều mà bạn nên biết là – tất cả các ngôn ngữ lập trình là kế thừa lẫn nhau. Một số ngôn ngữ thì rất dễ để lập trình (ví dụ: Python) trong khi một số ngôn ngữ khác thì rất khó (ví dụ: C/C++). Tôi không đề cập đến mức độ thành thạo cần thiết trong việc học các ngôn ngữ đó. Cái mà tôi đề cập là nỗ lực cần thiết trong việc viết chương trình sau khi bạn đã học xong ngôn ngữ đó. Nếu bạn làm việc như một lập trình viên trong một công ty phần mềm, bạn sẽ có thể phải học một ngôn ngữ lập trình mới (có thể là do yêu cầu của nghiệp vụ) trong một khoảng thời gian rất ngắn. Bạn sẽ bắt đầu viết những dòng mã tươm tất trong khoảng thời gian từ 1 tuần đến 3 tháng. Sau đó vấn đề duy nhất là ngôn ngữ lập trình nào bạn thật sự thích làm việc với nó hơn. Vì vậy đừng quá lo lắng về ngôn ngữ nào dễ học hơn; mà hãy lo lắng về ngôn ngữ nào thì dễ sử dụng hơn. (Có một sự tương quan ở đây. Bạn sẽ nhận ra rằng trong hầu hết các trường hợp những ngôn ngữ mà dễ học hơn thì chúng cũng dễ lập trình hơn.)

Bạn có thể học được rất nhiều về lập trình từ các diễn đàn nơi mà các lập trình viên tài năng luôn tụ họp (ví dụ: ProggitHacker News), đọc các bài viết nổi bật và đặt các câu hỏi của bạn tại đây; bạn sẽ sẽ nhận được các câu trả lời chất lượng.

Bí mật lớn nhất:

Cách duy nhất để bạn trở thành một lập trình viên giỏi — đó là lập trình thật nhiều. Nhiều sinh viên không luyện lập trình bên ngoài phòng thực hành và làm các bài tập lớn của họ, và họ sẽ chẳng bao giờ trở thành những lập trình viên giỏi cả. Hãy luyện tập lập trình trong thời gian rảnh rỗi của mình. Hãy thử giải bài toán Euler bằng ngôn ngữ lập trình ưa thích của bạn, hoặc tự xây dựng một trang web cho riêng mình.

Phải nói rằng tất cả những điều nêu ra ở đây chỉ là một số kinh nghiệm của tôi. Chúng có thể đúng hoặc cũng có thể không đúng trong trường hợp của bạn:

– Phát triển phần mềm doanh nghiệp (Enterprise): Học ngôn ngữ Java thì rất tốt. Java thường được sử dụng trong nhiều công ty phần mềm như là ngôn ngữ thứ nhất. Nó sẽ giúp bạn tiến xa hơn trong nhiều trường hợp. Tại cùng thời điểm, tôi gặp phải một số ý kiến phản đối trong việc sử dụng ngôn ngữ từ quan điểm của một lập trình viên mới vào nghề. Bạn cũng nên đọc thêm một số thảo luận ở đây.

– Phát triển Web: Hãy tránh xa ngôn ngữ PHP. Nó là một ngôn ngữ được thiết kế rất tồi. Thay vì đó, hãy học Django hoặc Ruby on Rails. Nếu bạn thích công nghệ của Microsoft thì hãy sử dụng ASP.NET MVC.

– Phát triển ứng dụng trên Windows: Hãy học C# (và có thể đừng học Visual Basic). Nếu muốn chạy các ứng dụng viết bằng C# trên môi trường Linux thì hãy sử dụng dự án Mono.

– Có rất nhiều công cụ lập trình tuyệt vời hoặc các IDE mà bạn nên cố gắng sử dụng thành thạo. Eclipse là một trình IDE nổi tiếng. Notepad++ cũng là một trình soạn thảo code khá phổ biến.

– Bạn nên học thêm về các kỹ thuật như Regular Expressions, Unicode, Information Security v.v… (rất tiếc là tôi không thể liệt kê ra tất cả tại đây.)

– Cố gắng cập nhật những công nghệ mới nhất. Bạn không phải học tất cả những ngôn ngữ mới nhất, nhưng hãy cố gắng có một sự hiểu biết về những xu hướng mới nhất trong lập trình. Ví dụ như lập trình Web, lập trình di động v.v… là những lĩnh vực có rất nhiều sáng tạo đang diễn ra. Bạn không nên bỏ lỡ bất kỳ lĩnh vực nào nếu bạn cảm thấy thích thú chúng. Ngoài ra, những diễn đàn mà tôi có đề cập ở trên sẽ vô cùng hữu ích.

– Học chỉ một ngôn ngữ lập trình thì không phải là một ý kiến hay. Học thật nhiều ngôn ngữ lập trình cũng không phải là ý kiến hay. Hãy cố gắng cân bằng giữa hai thái cực này và cố gắng thật giỏi ít nhất 2 đến 3 ngôn ngữ lập trình trong các lĩnh vực khác nhau. (Như tôi đã giải thích lúc trước, những ngôn ngữ lập trình khác nhau thì được dùng để giải quyết các dạng vấn đề khác nhau.)

Chúc bạn may mắn và chọn được ngôn ngữ lập trình phù hợp cho mình!

Sau đây là một bình luận có chất lượng:

Xin chào mọi người,

Trước tiên, bạn phải quyết định xem lĩnh vực nào trong IT mà bạn muốn theo đuổi. Có rất nhiều lĩnh vực như công nghệ Web, công nghệ di động, phát triển phần mềm, phát triển ứng dụng trên desktop v.v… Nếu bạn muốn đi theo lĩnh vực lập trình Web thì bạn có hai sự lựa chọn:

1. PHP
2. Công nghệ .NET

Hiện tại việc học PHP thì dễ hơn là học C#, nghiên cứu công nghệ .NET thường đòi hỏi nhiều công sức hơn. Vì vậy tôi thích PHP hơn, nhưng bù lại những lập trình viên .NET lại được trả lương cao hơn các đồng nghiệp làm PHP. Tôi muốn nói thêm một điều là, nếu bạn muốn trở thành một freelancer sau 2 đến 3 năm làm việc tại một công ty thì đi theo hướng PHP sẽ có nhiều cơ hội hơn, còn ngược lại thì bạn hãy đi theo công nghệ .NET.

Bạn nên nhớ rằng, công nghệ .NET thì rất lớn và các dự án của nó cũng đồ sộ. Bạn không thể thực hiện toàn bộ dự án một mình được, bạn sẽ luôn luôn cần sự giúp đỡ và Internet thì không giúp được gì nhiều ở đây. Nhưng ở PHP bạn có thể nhận được nhiều dự án nhỏ mà tự mình có thể hoàn thành được, thêm một điểm nữa là ngày càng có nhiều công việc dành cho lĩnh vực PHP hơn. Khách hàng họ chỉ cần một nền tảng độc lập, và PHP đáp ứng rất tốt nhu cầu đó. Một số người nói rằng PHP đang chết dần, điều đó thì hoàn toàn không đúng bởi vì có rất nhiều thứ đang hoạt động rất tốt:

– Các Core PHP, CMS như (WordPress,Joomla,Drupal)
– Giỏ hàng (Interspire, Os Commerce, Zen-Cart, X-cart, Virtuemart v.v…)
– Các Framework như (Symphony, Codeignitor, Cakephp, Zend)

Ai nói rằng PHP đang chết dần! Điều đó là hoàn toàn sai lầm!

Nếu bạn muốn đi theo hướng công nghệ di động, tôi khuyên bạn nên đi theo hướng Android. Nếu là lập trình phần mềm thì nên gắn với .NET hoặc Java. Nếu chuyên viết các ứng dụng desktop thì Java và .NET vẫn là hai sự lựa chọn hàng đầu.

Nhưng tôi phải nói thêm với bạn một điều rằng, hiện tại công nghệ Web và công nghệ di động đang phát triển bùng nổ. Vì vậy tôi thích làm việc với chúng hơn. Khoảng 80% thị trường IT dựa trên công nghệ Web và công nghệ di động, và điều này cũng sẽ đúng trong tương lai. Vì vậy bạn nên gắn chặt với hai công nghệ này.

Thêm một điều nữa mà tôi muốn nói là HTML5/CSS3, Javascript và JQuery. Kiến thức của những công nghệ này thì rất có ích nếu bạn lựa chọn lĩnh vực phát triển Web.

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

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

Lập trình viên NiyazNiyaz là một kỹ sư máy tính từ Kerala, Ấn Độ. Hiện tại anh đang làm việc tại ZOVI ở thành phố Bangalore. Những lĩnh vực hiện tại anh đang quan tâm gồm Programming, Design, Security và Startups. Ngoài ra anh cũng có nhiều niềm đam mê với các lĩnh vực khác như Artificial Intelligence & Neural Networks, Data Mining, Prime Numbers, Cryptography and Practical Security. Bạn có thể liên hệ với anh thông qua blog cá nhân hoặc Twitter.

Advertisements

24 comments on “Tôi nên học ngôn ngữ lập trình nào?

    • Chào thanhmssl10,

      Theo mình nghĩ thì VB.NET với C# thì nó giống như Pepsi với CocaCola vậy, hai ngôn ngữ này về khả năng thực thi là giống nhau. Có lẽ Microsoft tạo ra VB.NET là bởi muốn hỗ trợ cho những developer và các dự án Visual Basic 6.0 thành công trước đó.

      Và trên thế giới thì cộng đồng developer cũng chuộng C# hơn VB.NET, vì cấu trúc khá rõ ràng của nó, và nhiều developer VB.NET cũng đã chuyển sang viết bằng C# vì lý do thiếu tài nguyên như bạn đang gặp phải.

      Có lẽ bạn cũng nên sớm chuyển sang sử dụng C#, vì nó sẽ thuận lợi hơn cho bạn sau này.

      Thân!

  1. Chào Vinacode, bài viết này rất hữu ích với em. Hiện nay em đang làm về Asp.NET/C#
    Vinacode có thể gợi ý cho em một ngôn ngữ thứ 2 để học không ?

    • nguyentienthanh5293, cái này hơi khó, vì nó tùy thuộc vào bạn, nhưng nếu được gợi ý thì bạn có thể quan tâm đến Ruby hoặc Python. Còn nếu thích làm mobile thì Java (Android) hoặc Swift.

  2. Chào bạn:
    Tôi tên Nguyên 35 tuổi. Bạn cho tôi xin hỏi. Tôi muốn học lập trình Java. nhưng trình độ tiếng việc chỉ lớp 8. Anh văn biết ít. Chưa học qua ngôn ngữ lập trình nào. vậy tôi có thể học lập trình Java không. có cần học ngôn ngữ lập trình C/C++ cơ bản trước rồi học tiếp Java. Xin cảm ơn.

    • Nguyên, theo mình nghĩ với điều kiện của bạn như vậy thì chưa nên nhảy vào Java vội, mà nên nắm một ít kiến thức cơ bản về lập trình trước. Trước đây thì người ta hay dạy Pascal/C/C++ để làm quen với lập trình, nhưng hiện nay người ta có xu hướng dùng Python vì ngôn ngữ này sáng sủa dễ học, viết ít code.

      Bởi vậy mình nghĩ bạn nên học một ít Python trước cũng được. Nếu có điều kiện thì bạn thử tham khảo khóa Python cơ bản bên TechMaster xem sao.

      • Mình thấy hầu hết các bạn VN rất thích dùng FREE Software . Python là Open Source . mà đã là như vậy thì không ai được trả tiền để phát triển cả . Mình nghĩ bạn nên chuyển sang dùng CLOSE SOURCE như MATLAB ….vì MATLAB được ứng dụng rất nhiều trong các lĩnh vực như Xử Lý Ảnh , Công Nghệ Nhúng và Xe Hơi, Tối Ưu, Hàng Không…..rất rất nhiều ứng dụng và mình thấy các engineer và scientist họ dùng Matlab rất nhiều

  3. tôi đang học android của cao đẳng thực hành fpt nhưng học thấy giảng viên dạy không nhiệt tình. mà muốn tìm 1 cơ sở mới về lập trình di động(android) hoặc là trung tâm hoặc là cơ sở mà thầy chỉ tận nơi mà số học viên 1 lớp có số lượng it không ạ!

  4. Mới đầu e theo lập trình mobile cụ thể là Android.Giờ em lại chuyển sang theo hướng lập trình phần mềm .Net hoặc Java e lại chọn .net .Thì bên lĩnh vực này e chọn như vậy có tác động ntn gì nhiều đến bên mobile ko ạ.Nếu chọn java thì có tốt hơn cho bên mobile ko ạ.@@ học nhiều quá

  5. em mới bắt đầu học lập trình và muốn theo hướng phát triển web nên em không biết nên học những ngôn ngữ lập trình nào. hiện tại thì html và css thì em đã biết những thứ đơn giản.
    tiếp theo em không biết là nên học php (theo như bài nói thì nó không tốt) hay javascript hay là ruby @@

  6. Em là sinh viên năm 3 của một trường về IT, sắp thực tập rồi mà em còn chưa định hướng được con đường của mình, lập trình em hơi yếu, em cũng chẳng có một suy nghĩ nào về hướng đi của mình. Mong nhận được lời khuyên của mn đi trước. Em cảm ơn.

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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s