Sunday, September 10, 2017

Lập trình không phải là 0 và 1

Khi xem các chương trình công nghệ thông tin trên tivi bạn hay thấy có minh họa các dòng số 0, 1 lê thê chạy ngang chạy dọc. Nếu từng xem chương trình “Hồ sơ bí ẩn của Nasa” trên kênh Discovery bạn sẽ biết có một tập trong đó một vệ tinh đã bị lỗi do một số 0 đã bị ai đó hoặc cái gì đó sửa thành 1 trong mã máy tính của nó.
Điều này khiến nhiều người tưởng rằng lập trình là 0 và 1.
Thực tế không hề như vậy. 0 và 1 là mã nhị phân, hai trạng thái cơ bản này được dùng để tạo ra mã code cho máy tính. Những mã đó do trình biên dịch của những người đẻ ra ngôn ngữ lập trình thực hiện.
Còn là lập trình viên, bạn không bao giờ động đến nó cả. Việc bạn làm chỉ là gõ code của ngôn ngữ lập trình đó.
Đây là một đoạn code Java.
public static void main(String args[])
{
      String name="Nguyen Van A";
      int age=20;
      System.out.println( name + " is "+ age + " years old!");
}
Còn đây là đoạn code trong Android.
    TextView t;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.baidoc);   
           t = (TextView)findViewById(R.id.t);           
           String a = “Hello World!";
           t.setText(a);
}
Đây mới chính là cái bạn sẽ thường xuyên nhìn thấy khi học lập trình chứ không phải là các số 0, 1. Thực tế bạn không bao giờ nhìn thấy các số này, mà chỉ có các dòng lệnh như trên mà thôi.
Khi xem clip trên mạng về các lập trình viên chuyên nghiệp, bạn thường thấy họ gõ code ra rào rào như mưa. Hình như họ suy nghĩ cực nhanh, kinh khủng thật, e là mình không bao giờ làm được !
Thực tế thì không hẳn như vậy. Trong lập trình bạn có phần mềm để hỗ trợ, không cần phải gõ từng chữ như Word. Bạn gõ vài chữ rồi enter nó sẽ bung ra cả đoạn lệnh thậm chí đến 10 dòng. Và khi đã làm quá quen thuộc, lập trình viên có thể gõ code ra nhanh hơn là đi copy.
Phần mềm hay dùng với Android là Eclipse hoặc Android Studio, với Ios là Xcode. Trong các phần mềm này có chỗ để gõ lệnh, chỗ để thiết kế giao diện. Khi làm xong, để tạo ra gói ứng dụng cài đặt vào điện thoại, phần mềm lập trình cũng làm luôn cho bạn. Bạn chỉ cần điền tên version, nhập password, tìm vị trí lưu ra. Với Android, file tạo thành có đuôi .apk, bạn upload file này lên Google Play chờ duyệt, sau vài tiếng ứng dụng đã sẵn sàng để người dùng tải về.
Vậy có thể coi lập trình là việc viết ra các dòng lệnh dựa trên một nền tảng ngôn ngữ có sẵn, trên một phần mềm máy tính có sẵn. Không có các nền tảng này, bạn không thể lập trình được.
Vì là ngôn ngữ nên nó có các từ đặc biệt gọi là từ khóa, các khái niệm riêng gọi là phương thức, đối tượng, kiểu dữ liệu, biến, hằng…
Trong ngoại ngữ, bạn phải học đánh vần các chữ cái, rồi các câu, từ đơn giản nhất. Lập trình cũng vậy, bạn học từng khái niệm, cú pháp, từng lệnh của nó từ đơn giản đến phức tạp.
Nhưng lập trình khác ngoại ngữ là bạn không cần khả năng nhớ thật nhiều từ.
Có không nhiều lắm các từ chuyên môn, các câu lệnh. Bạn cũng không cần cố ghi nhớ làm gì. Cú pháp mẫu có sẵn, nếu quên thì copy là xong. Sau một thời gian quen thì tự nhiên sẽ nhớ.
Lập trình cũng không giống toán. Nếu có tính toán bạn chỉ gõ lệnh rồi máy tính sẽ thực hiện.
Ví dụ, để nhân hai số a, b với nhau ra số c bạn sẽ gõ:
int c = a*b;
Kết quả c bạn không biết là gì nhưng cứ dùng đi, máy tính đã tính cho rồi. Với toán thì bạn phải tự làm dần cho đến khi ra kết quả cuối cùng. Lập trình là gõ lệnh để máy tính tự làm. Bạn có thể xem thêm bài viết có cần giỏi toán để học lập trình.
Rốt cuộc không có chỗ nào bạn thấy 0 và 1 như người ta minh họa, chỉ có các đoạn lệnh theo cú pháp mẫu. Cũng không cần phải biết gõ code rào rào như mưa.
Thực tế khi bạn bắt đầu học lập trình, thầy dạy sẽ không nói rõ như tôi đang viết đây. Bạn cứ học vài buổi, làm theo thầy rồi tự biết à đấy, lập trình nó là như thế.

Vậy nếu sau này bạn có đến lớp học, hãy thử hỏi thầy xem sao em không thấy có 0 và 1 như tivi hay minh họa. Lúc đó thầy dạy sẽ nói cho bạn về trình biên dịch, máy ảo Java. Những thứ bạn không cần biết nó là gì cũng vẫn học lập trình được như thường. 

No comments:

Post a Comment