Đây là một bài dịch trên forum hackthissite
Image result


Quyết định thứ bạn cần
Tôi đã nghe, thấy hết lần này tới lần khác trên các forums, phòng chat một câu hỏi. "Tôi nên học ngôn ngữ lập trình nào đầu tiên?". Câu trả lời là tùy thuộc vào bản thân bạn muốn học lập trình để làm gì thôi. Một số lưu ý nhỏ sau đây có thể giúp những người mà muốn chọn ngôn ngữ đầu tiên để học lập trình tìm được ngôn ngữ lập trình đầu tiên của họ. Nên hãy nhanh chân đi lấy bút và giấy.
Đầu tiên bạn phải thực sự ngồi xuống và nghĩ về cái mà bạn muốn làm khi lập trình. Bạn có muốn làm những websites hoành tráng hay là một ứng dụng nhỏ trên windows tính toán tổng số thùng sơn cần để sơn một căn phòng? Thế còn tạo ra videos game thì sao hoặc là làm một hệ điều hành và trở thành người giàu có như Bill Gates? Có thể bạn muốn thử hết tất cả. Bạn cần phải biết được cái bạn cần và muốn. Search google, tìm hiểu một số ngôn ngữ phổ biến và xem nó làm được cái gì.
Tiếp theo, bạn cần quyết định độ khó của ngôn ngữ. Đừng sợ thử những thứ khó hơn mà bạn nghĩ bạn không thể giải quyết. Hầu hết các ngôn ngữ đều giống nhau. Bạn sẽ biết tại sao khi mà bạn học lập trình.
Một điều nữa mà bạn cần phải xem xét đó chính là sự tương thích. Bạn cần ứng dụng của bạn chạy trên Linux hay là Windows hay là Mac? Thường thì đây không phải là câu hỏi khó. Bởi vì bạn những người mới học lập trình nên chọn hệ điều hành mà họ đang sử dụng.
Bạn đã có nhiều thông tin để chọn ngôn ngữ lập trình cho bạn chưa? Sau đó đến những cuốn sách  bạn sẽ đọc, các bài hướng dẫn trên internet hoặc tài liệu. Bạn cũng nên tìm kiếm một cộng đồng để trao đổi. Hãy nhớ rằng Google là bạn của bạn. Cứ tìm kiếm những thông tin về ngôn ngữ của bạn trên Google. Ghé qua Borders và Amazon để kiếm một vài cuốn sách.
Loại ngôn ngữ cũng rất quan trọng. Có 3 loại ngôn ngữ chính (có thể nhiều thơn). Đầu tiên là ngôn ngữ web. Loại ngôn ngữ này dùng để làm website. Khi bạn mở trình duyệt lên như Chrome, Firefox. Nó sẽ đọc đoạn code biễu diễn nó theo cách mà nó được viết. Tiếp theo là thông dịch, một số ngôn ngữ làm web cũng thuộc loại ngôn ngữ này. Với loại ngôn ngữ này, máy tính sẽ đọc từng dòng code mà thực hiện dòng code đó. Nó không giống với loại ngôn ngữ tiếp theo gọi là ngôn ngữ biên dịch. Loại ngôn ngữ này phải được một chương trình đặc biệt là compiler đọc những dòng code và chuyển nhưng thứ mà con người đọc hiểu được thành những thứ mà máy tính đọc hiểu được với những con số 0 và 1
Một vài giải thích. Máy tính không thể hiểu được những mã nguồn mà thay vào đó nó chỉ hiểu được các số 0 và 1. Khi mà một ngôn ngữ gọi là ngôn ngữ bậc thấp thì mã nguồn của nó gần giống so với các số 0 và 1. Nếu một ngôn ngữ là ngôn ngữ bậc cao thì nó lại gần giống với ngôn ngữ con người. (mình có thể giải thích ở đây nếu bạn chưa hiểu, ý tác giả muốn nói là ngôn ngữ càng thấp thì mã nguồn của nó càng khó đọc và viết). Điểm lởi của những ngôn ngữ bậc thấp là tốc độ và hiệu suất. Nhưng vấn đề là nó rất khó viết và hiểu.
Cũng đừng căng thẳng quá về việc suy nghĩ nên chọn ngôn ngữ nào. Nếu học cho vui thì cứ chọn ngôn ngữ nào bạn thích nhất thôi. Còn nếu bạn muốn trở thành một lập trình viên hoặc là trở thành một con người công nghệ thì kiểu nào sau này bạn cũng phải học thêm một số ngôn ngữ khác. Nhưng đừng lo lắng, miễn là bạn có kiến thức, kĩ thuật cơ bản về lập trình thì việc đó sẽ trở nên rất dễ dàng. Quang trọng là bạn phải có hứng thú với việc này.
Review
Bây giờ tôi sẽ đưa ra một số thông tin hữu ích về một số ngôn ngữ đang phổ biến hiện giờ. Tôi cũng phải nói tới những ngôn ngữ làm web. Lưu ý là một số thực sự không phải là ngôn ngữ lập trình mà chỉ là ngôn ngữ thiết kế, một điều nữa là tôi sẽ không nói hết tất cả những ngôn ngữ lập trình. Bạn nên tìm hiểu nhiều hơn nữa.
Đây không phải là một dãy gồm tất cả các ngôn ngữ lập trình! Tôi đã cố gắng chọn ra những ngôn ngữ chính bởi vì nhiều thì đôi lúc cũng làm bối zối những người mới bắt đầu. Để có nhiều hơn thì tham khảo một số đường link dưới đây
Phần sau một số chỗ mình sẽ để tiếng Anh. Vì nhiều thứ được xem như thuật ngữ. Bạn sẽ tìm kiếm được nhiều thông tin hơn khi dùng những từ khóa đó.
Web Applications (Ứng dụng websites)
* HTML (viết tắt của HyperText Markup Language)
Loại: Markup Language (ngôn ngữ thiết kế)
Dùng để: Web Development (phát triển web)
Độ khó: rất dễ
Tương thích với: bất cứ trình duyệt và hệ điều hành nào, thiết kế web thì không cần lo lắng tới vấn đề này
Tài liệu tham khảo: Rất nhiều trên internet, tôi nghĩ không cần thiết phải tìm một cuốn sách đâu.
Links: www.w3schools.com

* CSS
Loại: Cascading Style Sheets (Mình không biết dịch sao nhưng theo mình là ngôn ngữ trang trí)
Dùng để: Web Development (phát triển web)
Độ khó: Dễ
Tương thích với: Hầu hết với các trình duyệt hiện đại bây giờ.
Tài liệu: Rất nhiều trên mạng. Bạn cũng nên tìm mua một cuốn sách, có thể nó sẽ có nhiều thứ hữu ích với bạn.
Links: www.w3schools.com

JavaScript
Loại: Thông dịch / Scripting (kịch bản, loại này nó cũng na ná với thông dịch)
Dùng để: Web Development (phát triển web)
Độ khó: Dễ - Vừa
Tương thích với: Hầu hết với các trình duyệt hiện đại bây giờ.
Tài liệu: Rất nhiều trên mạng. Bạn cũng nên tìm mua một cuốn sách, có thể nó sẽ có nhiều thứ hữu ích với bạn.
Links: www.w3schools.com

PHP
Loại: Scripting
Dùng để: Web Development (phát triển web)
Độ khó: Vừa
Tương thích với: Code được chạy trên server do đó trình duyệt không liên quan gì đến ngôn ngữ này
Tài liệu: Rất nhiều trên mạng. Bạn cũng nên tìm mua một cuốn sách, có thể nó sẽ có nhiều thứ hữu ích với bạn.
Links: www.w3schools.com

ASP
Loại: Scripting
Dùng để: Web Development (phát triển web)
Độ khó: Vừa
Tương thích với: Code được chạy trên server do đó trình duyệt không liên quan gì đến ngôn ngữ này
Tài liệu: Rất nhiều trên mạng. Bạn cũng nên tìm mua một cuốn sách, có thể nó sẽ có nhiều thứ hữu ích với bạn.
Links: www.w3schools.com


Computer Applications (Ứng dụng máy tính)

* Python
Loại: Thông dịch - Scripting
Bậc ngôn ngữ: rất cao (có nghĩa là dễ đọc)
Dùng để: Làm đủ thứ
Độ khó: dễ
Tương thích với: Đa nền tàng
Tài liệu: Rất nhiều trên mạng. Bạn cũng nên tìm mua một cuốn sách, có thể nó sẽ có nhiều thứ hữu ích với bạn.
Links: www.python.org

Perl
Loại: Thông dịch
Bậc ngôn ngữ: cao
Dùng để: General Purpose, Text Processing, CGI scripts, Automating Tasks (mấy cái này không dịch thì hay hơn)
Độ khó: Vừa
Tương thích với: Đa nền tàng
Tài liệu: Ông tác giả này có đúng một câu à, nên có lẽ phần sau mình không đề cập nữa
Links: http://www.perl.com/

Ruby
Loại: Thông dịch
Bâc ngôn ngữ: cao
Dùng để: General Purpose, Web Scripting
Độ khó: Vừa
Tương thích với: Đa nền tàng
Links: http://www.ruby-lang.org/en/

VB / VB.net
Loại: Biên dịch
Bậc ngôn ngữ: Cao
Dùng để: Windows applications (ứng dụng windows)
Độ khó: dễ
Tương thích với: Windows
Links: http://msdn.microsoft.com/en-us/vbasic/default.aspx

** C / C++
Loại: Biên dịch
Bậc: Trung
Dùng cho: mọi thứ
Độ khó: Vừa - Khó
Tương thích với: Đa nền tàng
Links: http://www.cplusplus.com/doc/tutorial/
http://www.cprogramming.com/

* C#
Type: Biên dịch
Bậc: cao
Dùng cho: General, The Dot Net Platform
Độ khó: Vừa
Tương thích với: Native to Windows, Cross Platform
Links: http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx
http://www.microsoft.com/express/vcsharp/
http://mono-project.com/Main_Page

Java
Type: Biên dịch
Bậc: cao
Dùng cho: Everything and portability (portability có thể hiểu với một khẩu hiệu truyền thống của Java "viết một lần, chạy mọi nơi")
Độ khó: Vừa - Khó
Tương thích với: Đa nền tàng
Links: http://java.sun.com/docs/books/tutorial/

** Assembly
Loại: Biên dịch
Bậc: thấp
Dùng cho: những việc đặc biệt khi bạn cần
Độ khó: Rất khó
Tương thích với: Mỗi kiến trúc của bộ xử lý máy tính thì lại cố một phiên bản khác nhau (gốc: Each processor architecture has Its own version)
Tài liệu: Đủ dùng
Links: http://webster.cs.ucr.edu/

Remember to have fun and learn all you can!