Ngôn ngữ lập trình nào thực sự dễ học

Bắt đầu học một ngôn ngữ lập trình đầu tiên không phải lúc nào cũng dễ dàng đối với đa phần mọi người. Nếu bạn đến từ ngành kỹ thuật khác như sinh học, hóa học, cơ khí, điện tự, xây dựng, kiến trúc bạn sẽ vấp phải nhưng khái niệm, định nghĩa mới. Bạn muốn hiểu về Class, bạn sẽ tìm thấy hướng đối tượng (object oriented), rồi từ Hướng đối tượng lại lan ra Kế thừa (inhjeritance), che dấu dữ liệu (data encapsulation), đa hình (polymorphism), phạm vi thuộc tính (scope of property), phạm vi phương thức (scope of method), viết chồng (overload), viết đè phương thức (overwrite), giao diện lập trình (interface - protocol). Giang sơn nào, anh hùng đó. Bạn chuyển ngành, bạn sẽ phải chịu cảnh thất cơ một thời gian cỡ từ 2 tháng đến 6 tháng tùy thuộc vào sự mềm dẻo của bạn đến đâu.

Nếu bạn là người chỉnh chu, học cái gì cũng phải tường minh, cặn kẽ, khả năng nhiều bạn sẽ phải còn vật lộn để làm quen với lập trình một thời gian dài hơn so với những kẻ phóng khoáng, bạt mạng, đôi phần dễ dãi theo khẩu hiệu của Nike, "Just Do It" - Hãy cứ làm đi. Java, C++, Swift, Objective-C, Scala là những ngôn ngữ biên dịch chặt chẽ về cú pháp, tốc độ cao. Chúng giống như những xe máy phân khối lớn, tay côn vậy. Ai cũng thích vẻ mạnh mẽ, bứt tốc nhanh, tiếng pô rền uy lực của dòng xe này. Nhưng để sở hữu, chạy và vận hành xe tốt trên các cung đường, cần một ông chủ có sức khỏe và kinh nghiệm.

Trong một ngày tôi đã nhận được không biết bao nhiêu câu hỏi từ chat từ Facebook: "Em mới học lập trình, vậy em phải học khóa học nào? Em học kinh tế, đã ra trường, nếu học từ đâu, ngôn ngữ nào phù hợp với em?".

Nên học ngôn ngữ lập trình nào
Email từ học viên. Mỗi ngày khoảng 10 email, hoặc chat

Ban đầu câu trả lời của tôi rất thực dụng, cứ khóa học nào sắp mở, còn trống chỗ, thì tôi gợi ý học khóa đó. Cũng có nhiều bạn học được, đi làm được. Với một số em sinh viên trẻ từ quê lên thành phố, tiền chu cấp từ gia đình ít hơn nhiều so với chi tiêu, nỗ lực học để kiếm việc của họ thật kinh ngạc.

Tuy nhiên để tìm ra một ngôn ngữ lập trình đích thực cho người chưa biết gì, trẻ em mới chập chững học lập trình, thì Python là một lựa chọn sáng giá nhất:

  • Python là ngôn ngữ kịch bản (scripting language). Ngôn ngữ kịch bản luôn dễ học và dễ chạy đa nền tảng hơn số với những ngôn ngữ biên dịch (compile language như C++, Java, C#, Objective-C). Gõ đến đâu, trình thông dịch sẽ thực thi trả về kết quả đến đó thay vì quá trình biên dịch, liên kết, tối ưu nhiều bước của ngôn ngữ biên dịch. Lập trình viên làm việc trên Python giống như đang chatting , trò chuyện vậy. Phản hồi ngay tức thì, lỗi ở đâu, báo đúng dòng đó. Nếu bạn đã từng dò lỗi thất thoát bộ nhớ (memory leaking) của ứng dụng chạy đa luồng viết bằng C++ hoặc Objective-C, vùng nhớ được khởi tạo trong heap ở đây, sẽ được giải phóng đâu đó trong tương lai., bạn sẽ hiểu "Trò chuyện được với máy tính thú vị đến nhường nào".
    Chả thế mà Scala, rồi Swift cũng bổ xung công nghệ REPL (Read Evaluate Print Loop - Vòng lặp, Đọc Lệnh, Tính toán và In ra) một kiểu tương tự như trình thông dịch của Python hay Ruby vậy.
  • Python chỉ có 4 kiểu dữ liệu căn bản: Integer, Float, Boolean, String và một số kiểu tập hợp: List, Tuple, Array, Set, Dictionary. So với Objective-C, C++ có vô vàn những kiểu, class, struct bổ xung. Tham khảo: tiếng Anh có khoảng 615,100 mục từ, 171,476 từ đang được sử dụng. Một người ngoại quốc chỉ cần nắm 200 từ vận dụng tốt là có thể sống và làm việc tại các nước nói tiếng Anh.
  • Python sử dụng dấu cách, dầu tab và dấu : để mô tả khối lệnh, thay vì dấu ; { }. Để thực hiện một tác vụ thông thường, thì Python code ngắn hơn Java 3-5 lần, và với C++ là 5-10 lần. Tuy nhiên Python không ngắn đến mức cộc lốc, hoặc làm dụng nhiều ký tự khó hiểu làm toán tử của Scala. Thử vào đây xem các toán tử của Scala nhé. Đội của tôi đã từng lập trình 2 dự án Scala trong 12 tháng thì nhận ra rằng chỉ cần 2 tuần không code Scala, lập trình viên sẽ quên gần hết các cú pháp, toán tử do Scala đặt ra.
  • Cú pháp của Python khá giống với toán đại số thường thức được dạy ở cấp 1, cấp 2. Python console hoạt động giống với máy tính cầm tay Casio mà  bao đời học sinh VN đã bấm mòn tay.

Python là ngôn ngữ lập trình rất dễ học

Vòng lặp for trong Python

items = [1,2,3,4]
for i in items:
  print(i)

Vòng lặp for trong Ruby

items = [1, 2, 3, 4]
items.each do [i]
  puts i
end

Vòng lặp theo cách Scala

val items = Array(1, 2, 3, 4)
items.foreach(println)

Vòng lặp while trong Python

x = 1
while x <= 5
  print("The number is : ", str(x))
  x += 1

Vòng lặp while trong PHP

<?php
$x=1;
while ($x <= 5) {
  echo "The number is: $x <br>";
  x++;
}
?>

Cộng mảng trong Python

listA = [1, 2, 3]
listA += [4, 5, 6]
print(listA)

Cộng mảng trong Objective-C. Cool không ?

NSMutableArray* listA = [[NSMutableArray alloc] initWithArray:@[@1, @2, @3]];
[listA addObjectsFromArray:@[@4, @5, @6]];
NSLog(@"%@", listA);

Cộng mảng trong C/C++. Cool không?

int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6};
int size1 = sizeof(arr1) / sizeof(int);
int size2 = sizeof(arr2) / sizeof(int);
int * result = new int[size1 + size2];
copy(arr1, arr1 + size1, result);
copy(arr2, arr2 + size2, result + size1);
for (int i = 0; i < size1 + size2; i++) {
   cout << *(result + i) << endl;
}

Cộng mảng trong Scala. Có vẻ hiện đại hơn cả !

val listA = Array(1, 2, 3)
val listB = listA ++ Array(4, 5, 6)
listB.foreach(println)

Kết luận

Về mức độ gọn gàng khi viết code, Scala là số 1. Tuy nhiên khi làm sâu, Scala có quá nhiều toán tử đặc biệt, lambda function , khiến người mới học sẽ rất bỡ ngỡ. Ngược lại ngôn ngữ Python rất dễ học, giống với cú pháp toán học phổ thông cơ sở phù hợp với bất kỳ đối tượng người học nào.