Bài viết được dịch từ trang web Lifehacker

Học lập trình trực tuyến bằng ngôn ngữ lập trình nào trước tiên?
Ngôn ngữ lập trình nào phù hợp cho người mới bắt đầu?

Gửi Lifehacker, 
Sau khi tham khảo nhiều thông tin về học lập trình, tôi đã quyết định thử học về nó. Vấn đề là, tôi không biết phải bắt đầu từ đâu. Ngôn ngữ lập trình tốt nhất cho người mới bắt đầu như tôi là gì?

Ký tên,
Could-Be Coder

Could-Be thân mến,
Đó có thể là một trong những câu hỏi phổ biến nhất của những người học lần đầu, và đây cũng là điều mà các nhà giáo dục tranh luận nhiều nhất. Có điều là, bạn có thể hỏi 10 lập trình viên về đâu là ngôn ngữ tốt nhất cho người mới bắt đầu và bạn sẽ nhận được 10 câu trả lời khác nhau - vì có hàng ngàn lựa chọn dành cho bạn. Ngôn ngữ bạn bắt đầu học không chỉ phụ thuộc vào việc nó dễ học như thế nào, mà còn phụ thuộc vào những loại dự án nào bạn muốn làm việc, lý do tại sao bạn lại quan tâm đến lập trình, và có lẽ bạn đang suy nghĩ làm công việc này để kiếm sống. Dưới đây là một số lưu ý và gợi ý để giúp bạn đưa ra quyết định.

Các khóa học lập trình tại TechMaster sẽ cung cấp cho bạn những kỹ năng thực tế nhất để có thể xin được việc làm, với nhiều mô hình đào tạo như online, offline, và FlipLearning...

Tại sao bạn lại muốn học lập trình?

Lựa chọn của bạn còn tùy thuộc vào những gì bạn muốn làm. Ví dụ, để xây dựng một trang web hay một ứng dụng web, bạn nên học HTML và CSS, cùng với JavaScript và có lẽ PHP cho tương tác. Nếu mối quan tâm của bạn chủ yếu vào việc xây dựng một ứng dụng di động thì bạn có thể nhảy vào học Objective-C hoặc Swift cho ứng dụng iOS hoặc lập trình Java cho Android (và những thứ khác).

Tuy nhiên, nếu bạn đang muốn học không chỉ cho một dự án hoặc chuyên ngành cụ thể, hoặc muốn tìm hiểu một loạt các ngôn ngữ, thì cách tốt nhất để bắt đầu là nên học các khái niệm cơ bản của lập trình và làm thế nào để "suy nghĩ như một lập trình viên." Bằng cách đó, không quan trọng ngôn ngữ lập trình đầu tiên của bạn gì, bạn có thể áp dụng những kỹ năng đã có để học sang một ngôn ngữ mới. Thậm chí các ứng dụng lập trình cho trẻ em cũng có thể hữu ích để bắt đầu. Ví dụ, khóa học lập trình chính thức đầu tiên mà tôi tham gia là CS50 của đại học Harvard, bạn cũng có thể học khóa này miễn phí. Giáo sư Malan bắt đầu khóa học bằng Scratch, một môi trường lập trình dạng kéo-thả để dạy trẻ em về logic và các nguyên tắc lập trình cơ bản - nó cũng giúp bạn tạo ra một sản phẩm gì đó rất thú vị - và sau đó ông chuyển qua dạy bạn về ngôn ngữ C.

Chúng tôi liệt kê ra một số tài nguyên tuyệt vời dành cho việc học lập trình, chẳng hạn như khóa học tương tác Codecademy, nhưng dù vậy bạn vẫn cần phải chọn ngôn ngữ để bắt đầu. Vì vậy, chúng ta hãy nhìn vào sự khác biệt giữa những ngôn ngữ lập trình phổ biến nhất và đâu là ngôn ngữ được đề xuất nhiều nhất cho người mới bắt đầu nhé!

Những ngôn ngữ lập trình được đề xuất thường xuyên nhất cho người mới bắt đầu

Hầu hết các ngôn ngữ lập trình "chính thống", chẳng hạn như C, Java, C#, Perl, Ruby, Python - có thể làm được các công việc tương tự như nhau. Ví dụ, Java hoạt động đa nền tảng và được sử dụng cho các ứng dụng web và các applet, nhưng Ruby cũng có thể làm các ứng dụng web lớn và các ứng dụng Python tương tự chạy trên Linux và Windows. Trang web SOA World đã chỉ ra rằng vì nhiều ngôn ngữ được tạo ra kế thừa các ngôn nghữ khác, bởi vậy cú pháp hoặc cấu trúc làm việc trên chúng là gần như giống nhau, nên khi học một ngôn ngữ thường giúp bạn có thể học những ngôn ngữ khác một cách dễ dàng. Ví dụ, để in ra dòng chữ "Hello World", Java và C# có cú pháp tương tự, cũng như Perl và Python:

Học lập trình online bằng ngôn ngữ lập trình nào trước tiên?

Chúng khác nhau, tuy nhiên cách viết đều khá rõ ràng. SOA World tiếp tục:

Nếu bạn nhìn kỹ vào những ví dụ trên, bạn sẽ nhận thấy một số ví dụ thì rất đơn giản, những ví dụ khác trông có vẻ phức tạp hơn, và một số yêu cầu chấm phẩy ở cuối dòng, trong khi những ngôn ngữ khác thì không. Nếu bạn mới bắt đầu học lập trình, đôi khi tốt nhất nên lựa chọn ngôn ngữ không có nhiều quy tắc cú pháp (hay logic) bởi vì nó cho phép bạn dễ hiểu hơn. Nếu bạn đã thử một ngôn ngữ và thực sự vật lộn với nó, thì hãy thử một ngôn ngữ khác đơn giản hơn!

Dưới đây là một so sánh nhanh về các ngôn ngữ lập trình phổ biến nhất:

C: Rèn cho bạn cách viết code hiệu quả

C là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất. Có một vài lý do cho việc này. Lập trình viên nổi tiếng Joel Spolsky nói rằng, C trong lập trình quan trọng như việc học giải phẫu cơ bản để trở thành một bác sĩ y khoa vậy. C là một ngôn ngữ "mức máy", do đó bạn sẽ học cách làm thế nào để một chương trình tương tác với phần cứng và học những kiến thức nền tảng của lập trình tại mức thấp nhất - phần cứng - (C là nền tảng cho Linux/GNU). Bạn học về các chương trình gỡ lỗi, quản lý bộ nhớ, và nhiều thứ mà những ngôn ngữ lập trình bậc cao hơn như Java không thể làm được - nó giúp cho bạn viết code hiệu quả hơn trong các ngôn ngữ khác. C là "ông nội" của nhiều ngôn ngữ cấp cao khác, bao gồm cả Java, C#, và JavaScript. 

Điều đó nói lên rằng, lập trình trong C là chặt chẽ và khó hơn so với các ngôn ngữ khác, và nếu bạn không có kế hoạch làm việc trên các chương trình giao tiếp với phần cứng (ví dụ, các driver thiết bị, hoặc các extension của hệ điều hành), thì việc học lập trình C có lẽ sẽ không cần thiết. Stack Overflow có một cuộc thảo luận rất hay về việc nên chọn C hay Java là ngôn ngữ đầu tiên, và hầu hết mọi người đều nghiêng về C. Tuy nhiên, cá nhân tôi, mặc dù tôi rất vui vì mình đã được tiếp xúc với C, nhưng tôi không nghĩ rằng đó là một ngôn ngữ thân thiện cho người mới bắt đầu. Nó sẽ dạy cho bạn kỷ luật, nhưng bạn sẽ phải tìm hiểu rất nhiều vấn đề khó trước khi có thể làm ra bất cứ điều gì hữu ích. 

Java: Một trong những ngôn ngữ thiết thực nhất để học

Java là ngôn ngữ lập trình phổ biến thứ hai, và đó là ngôn ngữ được giảng dạy trong khóa học nổi tiếng (và miễn phí) của trường đại học Stanford là Introduction to Computer Science. Java tuân theo nguyên tắc hướng đối tượng (OOP) mà đã được sử dụng trong các ngôn ngữ hiện đại bao gồm C++, Perl, Python, và PHP. Một khi bạn đã học Java thì bạn có thể học các ngôn ngữ OOP khác khá dễ dàng. 

Java có lợi thế của một ngôn ngữ có lịch sử sử dụng lâu đời. Có rất nhiều phần code ví dụ, nó đã được dạy trong nhiều thập kỷ, và được sử dụng rộng rãi cho nhiều mục đích khác nhau (bao gồm cả phát triển ứng dụng Android), do đó Java là một ngôn ngữ rất thực tế để tìm hiểu. Bạn sẽ không thể lập trình được cấp thấp ở mức máy như bạn làm với C, nhưng bạn sẽ có khả năng truy cập/thao tác với những phần quan trọng nhất của máy tính như hệ thống tập tin, đồ họa và âm thanh cho bất kỳ chương trình phức tạp và hiện đại nào - và điểm hay nhất là nó có thể chạy trên bất kỳ hệ điều hành nào.

Python: Vui và rất dễ học

Nhiều người khuyên Python là ngôn ngữ tốt nhất dành cho người mới bắt đầu vì tính đơn giản và những khả năng tuyệt vời của nó. Code của Python dễ đọc và tuân theo các phong cách lập trình tốt (ví dụ như việc canh thụt lề), mà không bị quá nghiêm ngặt về cú pháp (không phải nhớ để thêm một dấu chấm phẩy ở cuối mỗi dòng). Patrick Jordan tại công ty Ariel Computing đã so sánh thời gian để viết một script đơn giản bằng các ngôn ngữ khác nhau (BASIC, C, J, Java, và Python) và xác định rằng Python có những ưu điểm sau:

đòi hỏi ít thời gian hơn, ít dòng code, và ít khái niệm cần biết để đạt được một mục tiêu nhất định. [ ... ] Lập trình bằng Python thực sự rất thú vị! Chính sự vui vẻ và thu được những thành công nhất định đã làm tăng thêm lòng tự tin và mối quan tâm trong sinh viên, những người sau đó đã tiếp tục học lập trình lên mức cao hơn.

SOA cũng nói rằng Python là ngôn ngữ phải học cho người mới bắt đầu, những người muốn học nhiều hơn trong môi trường Linux (hoặc đã quen thuộc với Linux). Sự phổ biến của Python đang gia tăng nhanh chóng hiện nay là nhờ việc các trang web phổ biến như Pinterest và Instagram đang sử dụng nó.

JavaScript: Dành cho những ai muốn nhảy ngay vào để xây dựng các trang web

JavaScript (ít liên quan đến Java) đòi hỏi rất ít thiết lập để bắt đầu, vì nó đã được tích hợp vào các trình duyệt web. O'Reilly Media cũng đề nghị bạn bắt đầu với JavaScript vì nó có một cú pháp tương đối dễ dàng, bạn sẽ thấy kết quả ngay lập tức từ code của mình, và không cần phải có nhiều công cụ. Trong bài hướng dẫn Learn to Code night school trên Lifehacker, chúng tôi sử dụng JavaScript để chỉ cho bạn những khái niệm cơ bản như cách các biến và hàm làm việc. Nếu bạn muốn làm những tính năng tương tác thú vị cho các trang web thì JavaScript là một kỹ năng bắt buộc.

Lựa chọn con đường của bạn

Một xem xét cuối cùng đó là liệu bạn có muốn đi từ sở thích lập trình trở thành một nghề nghiệp hay không. Trang web Dev/Code/Hack đã phân tích các vai trò công việc khác nhau và những kỹ năng bạn cần phải có để phù hợp cho công việc đó:

Lập trình viên Back-end (Server-side): Thường sử dụng một trong số các ngôn ngữ sau đây: Python, Ruby, PHP, Java hoặc .NET. Có kiến thức về database. Có thể cần thêm một số kiến thức về quản trị hệ thống.

Lập trình viên Front-end (Client-side): Yêu cầu kiến thức về HTML, CSS, JavaScript và có thể cần thêm một số kỹ năng về thiết kế.

Lập trình viên mobile: Objective-C hoặc Java (cho Android). HTML/CSS cho các website mobile. Có thể cần thêm một số kiến thức về Server-side.

Lập trình viên về Games/3D: C/C++, OpenGL, Animation. Có thể cần thêm năng khiếu về mỹ thuật.

Lập trình viên phát triển các phần mềm cần tốc độ xử lý cao High-Performance (phần mềm trong Thị trường Chứng khoán…): C/C++, Java. Có thể cần thêm nền tảng về kiến thức toán học và khả năng phân tích định lượng tốt.

Cuối cùng, mặc dù không phải chỉ có một cách duy nhất để bắt đầu học lập trình. Điều quan trọng nhất là học các kiến thức nền tảng thông qua "thực hành thật nhiều", tức là làm việc trên các vấn đề bạn muốn giải quyết hoặc một cái gì đó bạn muốn xây dựng. Như trên blog programming is terrible đã nói rằng:

Ngôn ngữ lập trình đầu tiên bạn học có thể sẽ là khó khăn nhất. Hãy chọn lấy một cái gì đó nhỏ và thú vị để làm và tự khám phá cũng như thách thức bản thân. Không quan trọng là bạn bắt đầu từ đâu, miễn là bạn cứ tiếp tục - tiếp tục viết code, tiếp tục đọc code. Đừng quên kiểm thử lại phần code đó. Một khi bạn đã thành thạo một ngôn ngữ, thì việc học thêm một ngôn ngữ mới là chuyện nhỏ như con thỏ, và bạn sẽ thu được nhiều kỹ năng khác trên con đường khám phá tri thức của mình.

Một khi bạn đã quyết định, thì đây là các nguồn tài nguyên cần thiết và các khóa học để bạn bắt đầu với ngôn ngữ lập trình của mình.

Thân ái, 
Lifehacker