Lập trình là gì ?

Lập trình là việc sử dụng cấu trúc dữ liệu và các lệnh của ngôn ngữ lập trình cụ thể (C, PHP, HTML,..) để mô tả dữ liệu và diễn đạt các thao tác của thuật toán để thiết kế và viết xử lý cho các chương trình (software) dành cho PC, thiết bị di động (Tablet, SmartPhone) bao gồm ứng dụng (application), trò chơi (game) hoặc website.

1. Ngôn ngữ lập trình là gì?

Ngôn ngữ lập trình (tiếng Anh programming language) là một tập con của ngôn ngữ máy tính. Đây là một dạng ngôn ngữ được chuẩn hóa (đối lập với ngôn ngữ tự nhiên). Nó được dùng để miêu tả những quá trình, những ngữ cảnh một cách rất chi tiết.
Định nghĩa (theo [Loud 94], T.3):
Ngôn ngữ lập trình là một hệ thống được ký hiệu hóa để miêu tả những tính toán (qua máy tính) trong một dạng mà cả con người và máy đều có thể đọc và hiểu được.
Theo định nghĩa ở trên thì một ngôn ngữ lập trình phải thỏa mãn được hai điều kiện cơ bản là:

1. Nó phải dễ hiểu và dễ sử dụng đối với người lập trình, để con người có thể dùng nó giải quyết các bài toán khác.
2. Nó phải miêu tả một cách đầy đủ và rõ ràng các tiến trình (tiếng Anh: process), để có thể chạy được trên các máy tính khác.

Một tập hợp các chỉ thị được biểu thị nhờ ngôn ngữ lập trình để thực hiện các thao tác máy tính nào đó thông qua một chương trình. Các tên khác của khái niệm này nếu không bị lầm lẫn là chương trình máy tính hay chương trình điện toán.
Lưu ý: Khái niệm chương trình (program) viết cho máy vi tính nhằm giải quyết một vấn đế nào đó thường được gọi là phần mềm máy tính. (Thí dụ chương trình MS Word là một cách gọi chung chung, chính xác hơn là phần mềm MS Word thì rõ hơn đó là một chương trình ứng dụng.)
Chữ lập trình dùng để chỉ thao tác của con người nhằm kiến tạo nên các chương trình máy tính thông qua các ngôn ngữ lập trình. Người ta còn gọi quá trình lập trình đó là quá trình mã hoá thông tin tự nhiên thành ngôn ngữ máy. Trong các trường hợp xác định thì chữ lập trình còn được viết là "viết mã" (cho chương trình máy tính).
Như vậy, theo định nghĩa, mỗi ngôn ngữ lập trình cũng chính là một chương trình, nhưng có thể được dùng để tạo nên các chương trình khác. Một chương trình máy tính được viết bằng một ngôn ngữ lập trình thì những chỉ thị (của riêng ngôn ngữ ấy) góp phần tạo nên chương trình được gọi là mã nguồn của chương trình ấy.
Thao tác chuyển dạng từ mã nguồn sang thành chuỗi các chỉ thị máy tính đuợc thực hiện hoàn toàn tương tự như là việc chuyển dịch giữa các ngôn ngữ tự nhiên của con người. Các thao tác này gọi là biên dịch (hay ngắn gọn hơn là dịch). Người ta còn phân việc biên dịch làm hai loại tùy theo quá trình dịch xảy ra trước quá trình thực thi các tính toán hay nó xảy ra cùng lúc với quá trình tính toán:

1. Một phần mềm thông dịch là một phần mềm có khả năng đọc, chuyển dịch mã nguồn của một ngôn ngữ và ra lệnh cho máy tính tiến hành các tính toán dựa theo cú pháp của ngôn ngữ.
2. Một phần mềm biên dịch hay ngắn gọn hơn trình dịch là phần mềm có khả năng chuyển dịch mã nguồn của một ngôn ngữ ban đầu sang dạng mã mới thuộc về ngôn ngữ cấp thấp hơn.
Ngôn ngữ cấp thấp nhất là một chuỗi các chỉ thị máy tính mà có thể được thực hiện trực tiếp bởi chính máy tính (thông qua các theo tác trên vùng nhớ). Trước đây, hầu hết các trình dịch cũ thường phải thông dịch từ mã nguồn sang bộ mã phụ (các tệp có dang *.obj), rồi sau đó, mới biên dịch tiếp sang các tập tin thi hành. Ngày nay, hầu hết các trình dịch đều có khả năng viên dịch mã nguồn trực tiếp sang thành các tập tin thi hành hay biên dịch sang các dạng mã khác thấp hơn tuỳ theo yêu cầu của người lập trình.

Điểm khác nhau giữa thông dịch và biên dịch là: Trình thông dịch sẽ dịch từng câu lệnh một và chương trình đích sẽ không được lưu lại. Còn trình biên dịch sẽ dịch toàn bộ chương trình, cho ra chương trình đích được lưu lại trong máy tính rồi mới thực hiện chương trình.
Một chương trình máy tính có thể được thực thi bằng cách tổ hợp của việc biên dịch và thông dịch.
Vì yêu cầu đòi hỏi độ chính xác chi tiết cao nên việc viết mã thường gây khó khăn cho người đọc để theo dõi và đôi khi gây khó cho chính lập trình viên đã tạo ra mã nguồn đó. Do đó, một lời khuyên là nên dùng thêm nhiều chú giải trong lúc lập trình. Các chú giải này thường rất quan trọng cho người khác đọc và hiểu các mã nguồn.

 

- Ngôn ngữ máy : Các lệnh được mã hóa bằng các kí hiệu 0 – 1. Chương trình được viết trên ngôn ngữ máy có thể được nạp vào bộ nhớ và thực hiện ngay.

- Hợp ngữ: sử dụng các từ viết tắt tiếng Anh để diễn tả câu lệnh.

- Ngôn ngữ bậc cao : Các lệnh được mã hóa bằng một ngôn ngữ gần với ngôn ngữ Tiếng Anh. Chương trình viết trên ngôn ngữ bậc cao phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể  thực hiện được. Phải sử dụng một chương trình dịch để chuyển đổi. Lập trình bằng ngôn ngữ bậc cao dễ viết  hơn vì các lệnh được mã hóa gần với ngôn ngữ tự nhiên. Lập trình trên ngôn ngữ máy rất khó, thường các chuyên gia lập trình mới lập trình được.

 

2. Lập trình bằng ngôn ngữ nào?

 

Ít nhất ta có thể nói rằng máy tính là một cỗ máy kì lạ: chỉ nhận và gửi lại những số 0 và 1.

Ví dụ, nếu dịch: ”thực hiện phép tính 3 + 5” về ngôn ngữ tin học, nó sẽ có dạng như sau:

0010110110010011010011110

Những số mà bạn thấy ở trên, là ngôn ngữ của máy tính, gọi là ngôn ngữ nhị phân (langage binaire, language binary). Máy tính của bạn chỉ hiểu đươc ngôn ngữ này. Nhưng bạn và tôi, chúng ta hoàn toàn không thể hiểu và học được ngôn ngữ đó. 

 

Làm cách nào để giao tiếp với máy tính đơn giản hơn việc dùng những số 0 hay 1?

Máy tính của bạn không nói được tiếng anh cũng như tiếng pháp. Và không ai quan niệm phải viết một chương trình bằng ngôn ngữ nhị phân, kể cả những nhà lập trình điên nhất cũng không làm chuyện đó.

Và ý tưởng là phải tạo ra một ngôn ngữ mới đơn giản hơn và nó sẽ được chuyển sang ngôn ngữ nhị phân sau đó. Đây là việc của những nhà lập trình chuyên về ngôn ngữ. Và các chương trình trình này đã đuợc tạo ra bởi họ, và chúng ta sẽ không cần phải thực hiện lại, thật là may mắn phải không ?  .

Tôi sẽ lập một biểu đồ để giúp bạn hiểu rõ hơn:

 

Biểu đồ cực kì đơn giản về việc thi hành một chương trình

 

Ở đây tôi chỉ dùng những từ ngữ đơn giản để giải thích, nhưng trong tin học mỗi vấn đề như vậy đều có một thuật ngữ riêng. Suốt các bài học, bạn sẽ phải học không ít những thuật ngữ đó. Điều đó không chỉ giúp bạn có thể dễ dàng biểu đạt những vẫn đề về tin học, hơn nữa, bạn có thể hiểu được ý của một nhà lập trình nào đó mà bạn sẽ trò chuyện sau này. Hẳn là lúc đó, những người khác xung quanh sẽ nhìn các bạn với ánh mắt khác thường, đó là lý do mà bạn phải chú ý đến việc học những thuật ngữ đó 

Quay lại với biểu đồ ở trên.

Trong ô đầu tiên:” Chương trình được viết bằng ngôn ngữ lập trình đơn giản”. Cụm từ “Ngôn ngữ lập trình đơn giản” còn đuợc gọi là “ngôn ngữ bậc cao”. (langage de haut niveau, high-level programming language).

 

Có rất nhiều "cấp bậc" trong ngôn ngữ. Và ngôn ngữ bậc càng cao càng gần và giống với ngôn ngữ của chúng ta (cũng giống như tiếng Pháp hay tiếng Anh). Ngôn ngữ bậc cao giúp ta dễ dàng hơn trong sử dụng, nhưng nó vẫn có một vài thiếu sót mà bạn sẽ thấy về sau. Có rất nhiều ngôn ngữ bậc cao hay thấp trong tin học, trong số đó bạn có thể dùng để lập trình. Và đây là một vài ví dụ:

3. Lập trình có khó không ?

 

Đây chính là câu hỏi khiến bạn phải suy nghĩ nhiều đúng không ? 

Và có phải chúng ta bắt buộc phải là một nhà toán học cực giỏi sau nhiều năm học tập để có thể bắt đầu với việc lâp trình?

Câu trả lời khiến bạn yên tâm hơn là điều đó không đúng. Tất cả chỉ phụ thuộc vào chương trình mà bạn muốn thực hiện, nếu đó là chương trình liên quan đến toán học, bạn bắt buộc phải hiểu biết về toán. Nếu bạn muốn làm một game 3D thì đòi hỏi bạn phải có kiến thức về hình học không gian.

 

4. Những yếu tố để trở thành Lập trình viên?

Nghề lập trình đòi hỏi sự sáng tạo cũng như các kỹ năng đánh giá, phân tích yêu cầu của dự án, đưa ra các giải pháp thiết kế hoặc cách tiếp cận công nghệ mới khi gặp những framework thiết kế chưa kỹ hoặc công nghệ thay đổi.

 

Suy nghĩ một cách logic

Logic là điều quan trọng nhất trong lập trình. Bạn phải có đủ nhạy bén, linh hoạt và khả năng phán xét cao để giải quyết một vấn đề triệt để bằng phương pháp logic. Vì thế, nếu không có khả năng suy luận logic thì chắc chắn một điều nghề lập trình không thích hợp với bạn. Bạn sẽ cảm thấy nhàm chán và nhức đầu khi theo đuổi các đoạn code của chương trình, các vấn đề về debug (gỡ rối), về lỗi, về dấu chấm, dấu phẩy…

 

Tiếp cận vấn đề có thứ tự và luôn chú ý tới chi tiết

Các lập trình viên nên tập cho mình thói quen cẩn thận và luôn chú ý đến từng chi tiết. Đôi khi những chi tiết rất nhỏ, bạn vô tình bỏ qua, thì bạn phải ân hận khi mất hàng ngàn giờ chỉ để tìm những lỗi nhỏ đó. Bạn cần có kỹ năng truyền đạt thông tin tốt cũng như viết chương trình của mình một cách mạch lạc, có cấu trúc để đồng nghiệp của bạn có thể biết được tại sao bạn lại viết đoạn mã như vậy và cái gì tiếp theo sẽ xảy ra trong chương trình của bạn.

 

Làm việc nhóm

Đa số, công việc lập trình đều làm việc theo nhóm. Khả năng để bạn thích ứng, và chia sẻ những ý kiến của bạn tại công ty chiếm vị trí rất quan trọng. Bạn phải biết cách phối hợp công việc với cộng sự, khả năng thuyết trình, giao tiếp, ứng xử của bạn sẽ được sử dụng tối đa trong môi trường làm việc này.

 

Làm việc một mình trong thời gian dài

Thời hạn của dự án luôn làm bạn đau đầu. Có đôi lúc, bạn phải ngồi làm việc một mình, do đó, bạn cần phải có tính độc lập cao hơn, biết tổ chức và sắp xếp thời gian để hoàn thành dự án đúng lúc. Để được như vậy, bạn cần phải ghi danh sách những việc bạn phải làm và có ý chí quyết tâm cao khi làm việc một mình.

 

Kỹ năng thiết kế

Công việc phân tích và thiết kế luôn là công việc rất quan trọng của lập trình. Bạn có thể phải thiết kế toàn bộ một hệ thống cho Kinh doanh, bao gồm các bảng lưu trữ thông tin, các giao diện để nhập xuất thông tin hay các tài liệu kỹ thuật liên quan đến chương trình... Bạn phải giỏi trong việc lắng nghe và chuyển đổi các yêu cầu của các khách hàng đơn lẻ, các nhóm khách hàng và thậm chí cả việc kinh doanh thành các ứng dụng. Các chương trình của bạn phải dễ dùng và có hiệu quả cao. Do vậy, bất kỳ kỹ năng thiết kế nào của bạn cũng sẽ rất hữu ích trong lĩnh vực này.

 

Kiên nhẫn

Các vấn đề mà các lập trình viên phải giải quyết thường là các vấn đề khó có thể giải quyết ngay lập tức. Nó mất nhiều giờ, nhiều ngày, thậm chí nhiều tháng làm việc một cách cẩn thận để giải quyết, tìm hướng đi. Nhiều khi bạn đi sai hướng lại phải quay lại giải quyết từ phần đã giải quyết đúng và bắt đầu lại.

 

Tự học

Không trường lớp nào có thể đào tạo cho bạn tất cả những thứ bạn cần cho công việc lập trình sau này. Chính vì thế, khả năng tự học qua sách vở, tài liệu, internet và qua cả bạn bè nữa là không thể thiếu. Kết hợp với những dự án làm việc trong thực tế, bạn sẽ dần dần thành thạo những gì mình đã tự học được.

Quan trọng nhất đối với các bạn muốn theo đuổi nghề lập trình đó là lòng đam mê và mong muốn chinh phục những thử thách. Ngay bây giờ, nếu bạn đã có sẵn niềm đam mê hãy bắt đầu bằng việc tham gia một trong những khoá đào tạo căn bản để mở đầu một chân trời mới và tiếp cận với kho tàng kiến thức khổng lồ

lập trình là gì, khái niệm lập trình, ngôn ngữ lập trình, lập trình, lập trình C, lập trình PHP