[Công nghệ Thông tin] -- [Web] -- [Công nghệ phần mềm] -- [PhoThong] -- [TỪ ĐIỂN] -- [----] -- [Học viên cũ] -- [10.000 giờ]
--------------- <> -----------------
---  KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
---  Nhận làm website, web app, chạy quảng cáo, digital marketing --->>>  LIÊN HỆ...

Tìm kiếm trong Blog

Hiển thị các bài đăng có nhãn Nhập môn lập trình. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Nhập môn lập trình. Hiển thị tất cả bài đăng

Nhập môn lập trình (4) - Kỹ năng, Kiểu ngôn ngữ, Mẫu hình lập trình

Bài trước: Nhập môn lập trình (3) - Ngôn ngữ và phần mềm lập trình

-----

[Video]

1.1       Các kĩ năng cần có khi sử dụng một phần mềm lập trình

Đối với mỗi phần mềm lập trình, để chọn được phần mềm phù hợp, sử dụng hiệu quả, bạn cần phải có các thông tin và kĩ năng cơ bản sau:

– Tính tương thích của phần mềm với các họ hệ điều hành (Windows, macOS, Linux)

– Phần mềm hỗ trợ làm việc với các ngôn ngữ lập trình nào

– Phần mềm miễn phí hay có phí

– Cách tải và cài đặt

– Sử dụng thuần thục các chức năng trên giao diện người dùng

– Cài đặt và chọn tông màu giao diện (theme) theo ý thích

– Thuần thục các thao tác với thư mục và tập tin

– Định dạng mã nguồn tự động

– Sử dụng gợi ý trong lúc viết mã (IntelliSense)

– Dịch và chạy mã nguồn

– Tìm, cài đặt và gỡ bỏ các chức năng mở rộng (extensions)

– Học các kỹ năng soạn thảo mã nguồn nhanh (ví dụ gõ tắt, tạo văn bản ngẫu nhiên, sử dụng đa con trỏ)

1.2       Các kiểu ngôn ngữ và mẫu hình lập trình

Các kiểu ngôn ngữ lập trình

Như các bạn đã biết, hiện nay đang có rất nhiều ngôn ngữ lập trình (hàng ngàn ngôn ngữ). Tùy theo mục đích sử dụng, môi trường phát triển và yêu cầu của công nghệ, người ta đã tạo ra các kiểu ngôn ngữ lập trình khác nhau. Dựa vào đặc tính hoạt động, phương pháp lập trình mà nó hỗ trợ, người ta chia các ngôn ngữ lập trình thành một số kiểu chính sau:

– Ngôn ngữ lập trình hướng đối tượng (object-oriented programming language). Ví dụ: Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, và Smalltalk

– Ngôn ngữ lập trình logic (logic programming language). Ví dụ: Prolog, Datalog

– Ngôn ngữ lập trình thủ tục (procedural programming language). Ví dụ: FORTRAN, ALGOL, BASIC, COBOL, Pascal, C, Ada.

– Ngôn ngữ lập trình hàm hay lập trình chức năng (functional programming language). Ví dụ: Scheme, Erlang, Objective Caml, Haskell; các ngôn ngữ lập trình chuyên biệt: R, F#, SQL, JavaScript, bảng tính Excel cũng có thể xem là thuộc kiểu ngôn ngữ này.

– Ngôn ngữ lập trình kịch bản (scripting programming language). Ví dụ: Bash, PowerShell, Perl, Python, PHP, JavaScript.

Tuy nhiên, hiện nay các ngôn ngữ không ngừng được cải tiến, bổ sung thêm nhiều đặc tính, giúp lập trình được nhiều loại ứng dụng, chạy được trên nhiều nền tảng, lập trình tiện lợi và tối ưu hơn. Do vậy, một ngôn ngữ có thể thuộc vào nhiều loại ngôn ngữ cùng lúc. Ví dụ, JavaScript, PHP thuộc kiểu ngôn ngữ kịch bản, tuy nhiên, nó vẫn có những đặc điểm của kiểu ngôn ngữ hướng đối tượng, lập trình hàm, và thủ tục. Để tạo ra một chương trình, bạn sẽ sử dụng duy nhất một ngôn ngữ lập trình, hoặc có thể phải sử dụng nhiều ngôn ngữ lập trình. Ví dụ: để viết một chương trình đơn giản, bạn có thể chỉ cần sử dụng C#, tuy nhiên, nếu bạn viết một ứng dụng web thì bạn phải sử dụng nhiều ngôn ngữ khác nhau (HTML, CSS, JavaScript, SQL, PHP).

Mẫu hình lập trình

Tùy theo mục đích lập trình, loại ứng dụng muốn tạo ra và ngôn ngữ lập trình đang sử dụng, bạn có thể lựa chọn một, hoặc kết hợp nhiều mẫu hình (mô hình, paradigm) lập trình phổ biến sau:

– Lập trình hướng đối tượng (object-oriented programming)

– Lập trình thủ tục (procedural programming)

– Lập trình tổng quát, lập trình khái quát (generic programming)

– Lập trình hàm (functional programming)

– Và nhiều mẫu hình lập trình khác

Một ngôn ngữ có thể hỗ trợ một hoặc nhiều mẫu hình lập trình, do đó bạn có thể viết một chương trình chỉ sử dụng một mẫu hình cụ thể hoặc kết hợp nhiều mẫu hình lập trình. Ví dụ bạn chỉ sử dụng lập trình thủ tục; hoặc chỉ sử dụng lập trình hướng đối tượng; hoặc có thể sử dụng cùng lúc cả hai mẫu hình này.

1.3       Xem và đọc thêm

– Dùng các từ khóa sau để tìm kiếm trên mạng và đọc thêm: lập trình, mã máy, hợp ngữ, ngôn ngữ lập trình cấp cao, chương trình dịch

– T.Đ.Thư, N.T.Phương, Đ.B.Tiến, T.M.Triết, Nhập môn lập trình, NXB Khoa học kĩ thuật, 2011, tr14 – 28

– List of programming languages: https://en.wikipedia.org/wiki/List_of_programming_languages

– Stackoverflow (Programming, scripting, and markup languages): https://survey.stackoverflow.co/2022/#most-popular-technologies-language-prof

– List of scripting language: https://kinsta.com/blog/scripting-languages/

– List of markup language: https://computerscience.fandom.com/wiki/List_Of_Markup_Languages

– Các mẫu hình (mô hình) lập trình (programming paradigm): https://vi.wikipedia.org/wiki/M%E1%BA%ABu_h%C3%ACnh_l%E1%BA%ADp_tr%C3%ACnh

1.4       Bài tập và thực hành

Bài tập 1. Đọc thông tin trong khảo sát (survey) mới nhất của Stackoverflow và liệt kê tất cả các ngôn ngữ phổ biến hiện nay.

Bài tập 2. Viết một chương trình bằng JavaScript (đây là ngôn ngữ chạy theo kiểu thông dịch), xuất ra một thông báo bất kì.

Bài tập 3. Liệt kê tên của 5 ngôn ngữ lập trình, 5 ngôn ngữ kịch bản, và 5 ngôn ngữ đánh dấu.

Bài tập 4. Xem qua các clip trên youtube về cách sử dụng một code editor, IDE, môi trường lập trình trực tuyến. Ví dụ : VS code: https://www.youtube.com/watch?v=VqCgcpAypFQ&t=911s

Bài tập 5. Tải và cài đặt VS code

Bài tập 6. Tải và cài đặt Visual Studio

Bài tập 7. Sử dụng môn trường lập trình online, viết một đoạn mã bằng ngôn ngữ JavaScript, xuất một câu chào ra màn hình.

Gợi ý:

Bài tập 1. Vào trang Google > gõ từ khóa survey stackoverflow > tìm tới surver của năm mới nhất > tìm tới mục Technology > tìm tới mục Most popular technologies > tìm tới mục Programming, Scripting and Markup Language.

Bài tập 2. Xem hướng dẫn trong phần lý thuyết về Trình thông dịch.

Bài tập 3. Tìm kiếm trên Internet.

Bài tập 4. Tìm kiếm trên Youtube.

Bài tập 5. Tải và cài đặt VS code: vào trang google > tìm kiếm từ khóa VS code > vào trang web của VS code để tải về. Ví dụ: https://code.visualstudio.com/

Bài tập 6. Tải và cài đặt Visual Studio: vào trang google > tìm kiếm từ khóa visual studio > vào trang web của visual studio > chọn bản miễn phí (chọn tab Free Visual Studio) > chọn bản phù hợp với máy tính bạn đang sử dụng để tải về > ví dụ bản Visual Studio Community (https://visualstudio.microsoft.com/free-developer-offers/).

Bài tập 7. Sử dụng môn trường lập trình online, viết một đoạn mã bằng ngôn ngữ JavaScript, xuất một câu chào ra màn hình: mở một trang web cho phép lập trình online bất kì, ví dụ codepen (https://codepen.io/) > đăng nhập vào tài khoản của bạn (nếu bạn chưa có thì tạo mới một tài khoản) > nhập mã nguồn JavaScript (console.log('Hi cu Teo');) > mở cửa số console của code pen để xem kết quả. 

1.5       Câu hỏi ôn tập

Câu 1. Về mặt lý thuyết có thể viết đoạn mã điều khiển máy tính bằng?

A. Mã máy

B. Hợp ngữ

C. Ngôn ngữ lập trình cấp cao

D. Tất cả các cách trên

Câu 2. In computer science, an _______ is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.

A. compiler

B. interpreter

C. assembler

D. coder

Câu 3. Bạn có thể lập trình bằng các công cụ nào?

A. text editor, code editor, IDE, web browser

B. microsoft word, code editor, IDE, web browser

C. text editor, code editor, CMD, web browser

D. text editor, code editor, IDE, HTML

Câu 4. Các kiểu ngôn ngữ lập trình (cấp cao) phổ biến gồm:

A. Java, Logic, Thủ tục, Hàm, Kịch bản

B. Hướng đối tượng, Hợp ngữ, Thủ tục, Hàm, Kịch bản

C. Hướng đối tượng, Logic, Thủ tục, Hàm, Kịch bản

D. Logic, Hướng đối tượng, C, Hàm, Kịch bản

Câu 5. Các mẫu hình (mô hình, paradigm) lập trình phổ biến gồm:

A. Tổng quát, Desktop, Thủ tục, Hàm

B. Hướng đối tượng, Thủ tục, Tổng quát, Hàm

C. Thủ tục, Hướng đối tượng, Tổng quát, Web

D. Tổng quát, Di động, Thủ tục, Hàm

Đáp án: 1 (D), 2(B), 3 (A), 4(C), 5(B)

-----//4

[Video]

--------

Cập nhật: 22/7/2022

Bài tiếp theo: Nhập môn lập trình (5) - C#, .NET và Visual Studio

Nhập môn lập trình (3) - Ngôn ngữ và phần mềm lập trình

Bài trước: Nhập môn lập trình (2) - Chương trình dịch

-----

[Video]

1.1       Ngôn ngữ và phần mềm lập trình

Để viết một chương trình cho máy tính, bạn cần thực hiện một số việc sau:

– Lựa chọn ngôn ngữ lập trình phù hợp

– Lựa chọn phần mềm (công cụ) để lập trình

– Thực hiện quá trình biên dịch hoặc thông dịch mã nguồn

– Thực thi chương trình.

Lựa chọn ngôn ngữ lập trình

Việc lựa chọn ngôn ngữ lập trình sẽ tùy thuộc vào nhiều yếu tố, như loại ứng dụng bạn muốn tạo ra (desktop, di động, web, nhúng), kĩ thuật lập trình bạn sử dụng, môi trường thực thi (hạ tầng phần cứng, phần mềm, công nghệ). Để tạo ra một ứng dụng, bạn có thể chỉ cần sử dụng duy nhất một ngôn ngữ lập trình. Tuy nhiên, trong nhiều trường hợp, bạn cần phải sử dụng kết hợp một vài ngôn ngữ cùng nhau, gồm ngôn ngữ lập trình (programming language), ngôn ngữ kịch bản (scripting language) và ngôn ngữ đánh dấu (markup language).

Hiện nay có rất nhiều ngôn ngữ đang được mọi người sử dụng, ví dụ:

JavaScript

HTML/CSS

SQL

Python

TypeScript

Java

C#

Bash/Shell

PHP

C++

C

PowerShell

Go

Kotlin

Rust

Ruby

Dart

Swift

Assembly

VBA

Groovy

R

Delphi

MATLAB

Lua

Scala

Objective-C

Elixir

Perl

Haskell

Clojure

Solidity

LISP

F#

Julia

Erlang

Fortran

COBOL

OCaml

SAS

Phần mềm lập trình

Sau khi đã chọn được ngôn ngữ để lập trình. chúng ta cần phải có công cụ để viết mã nguồn, dịch mã nguồn và chạy thử ứng dụng. Có những công cụ chỉ giúp bạn làm được một công việc, ví dụ chỉ để viết mã nguồn, hoặc chỉ để dịch mã nguồn, hoặc chỉ để chạy thử ứng dụng. Tuy nhiên, cũng có công cụ giúp bạn có thể làm được nhiều công việc, vừa viết mã, dịch mã nguồn và chạy thử ứng dụng. Ví dụ: notepad để viết mã nguồn, trình duyệt web để dịch và thực thi mã nguồn.

Có thể chia các phần mềm lập trình thành 3 loại:

– Phần mềm soạn thảo văn bản thô (text editor)

– Trình viết mã (code editor)

– Phần mềm phát triển tích hợp (IDE)

Hình 1‑9 thể hiện tính tiện dụng của mỗi loại phần mềm, để ý phần mềm càng tiện dụng thì dung lượng càng lớn.

Khi mới học lập trình, bạn có thể lựa chọn các phần mềm viết mã đơn giản để có thể dễ dàng hiểu được bản chất của các ngôn ngữ lập trình. Tuy nhiên, khi làm việc thì nên chọn phần mềm giúp thao tác nhanh, hiệu quả, phù hợp với ngôn ngữ lập trình và môi trường làm việc thực tế.

Phần mềm soạn thảo văn bản thô

Như đã biết, mã nguồn của các ứng dụng chỉ là văn bản thô hay văn bản thuần (plain text), do vậy có thể sử dụng bất kì trình soạn thảo nào cho phép tạo mới, nhập và lưu văn bản thô là có thể viết mã nguồn được.

Văn bản thô là văn bản không bao gồm thông tin định dạng (ví dụ in đậm, màu sắc, gạch chân), ví dụ khi soạn thảo văn bản bằng Microsoft Word, nó đã tự động thêm vào các thông tin định dạng cho văn bản, vì vậy không thể dùng Microsoft Word để viết mã nguồn.

Text editor là trình soạn thảo văn bản thô, cho phép lập trình viên viết mã nguồn và lưu lại thành một tập tin. Ưu điểm của text editor là gọn, nhẹ, dễ sử dụng và thường có sẵn trong các hệ điều hành.

Ví dụ: Notepad, Notepad++, Vim

Trình viết mã

Trình viết mã (code editor) có chức năng cơ bản giống với một phần mềm soạn thảo văn bản thô; tuy nhiên nó cho phép người dùng tích hợp thêm các chức năng mở rộng, giúp việc soạn thảo, lập trình, lưu trữ, dịch mã nguồn được thuận tiện và linh hoạt hơn.

Các chức năng mở rộng của code editor so với text editor:

– Chức năng tô màu mã nguồn, giúp lập trình viên dễ dàng nhận ra các thành phần trong mã nguồn như từ khóa, tên biến, chuỗi, giá trị.

– Chức năng hỗ trợ gõ mã nguồn nhanh, tự động hoàn thành lệnh

– Chức năng kiểm tra lỗi cú pháp

– Tích hợp trình quản lý phiên bản (version control)

– Liên kết với chương trình dịch

– Các tính năng mở rộng khác

Ví dụ: VS code, Sublime Text, Atom

Phần mềm phát triển tích hợp

IDE (Integrated Development Environtment – môi trường phát triển tích hợp, hay phần mềm phát triển tích hợp) là phần mềm mạnh mẽ nhất dùng để lập trình, trong đó đã được tích hợp sẵn rất nhiều các thành phần liên quan đến quá trình phát triển phần mềm, từ viết mã, dịch mã, kiểm thử, quản lý phiên bản, đóng gói.

Trong IDE đã được tích hợp sẵn các thành phần như text editor, code editor, debugger (trình sửa lỗi), trình dịch mã, máy ảo, trình quản lý phiên bản và nhiều công cụ khác.

IDE có nhiều loại, có loại phức tạp của các công ty lớn, cũng có loại đơn giản; có loại miễn phí, có loại phải trả phí. Tùy theo nhu cầu sử dụng để lựa chọn IDE cho phù hợp.

Ví dụ: Visual Studio, Eclipse, PHPStorm, Pycharm.

Chọn code editor hay IDE

Trong một số trường hợp, khi mới học lập trình (ví dụ học lập trình web front-end), bạn được khuyến khích sử dụng các phần mềm soạn mã nguồn đơn giản (text editor) để nhớ các thẻ HTML, các lệnh CSS. Tuy nhiên, để tăng tốc độ viết mã, nâng cao tính chuyên nghiệp thì bạn phải làm quen và sử dụng code editor hoặc IDE.

Việc lựa chọn giữa code editor hay IDE phụ thuộc vào thói quen, sở thích, yêu cầu của từng công việc, dự án, nhóm làm việc.

Code editor thường gọn nhẹ, miễn phí. Muốn sử dụng các chức năng mở rộng thì bạn phải tự thêm vào. Một code editor thường hỗ trợ cho nhiều ngôn ngữ lập trình khác nhau.

IDE thường có kích thước lớn, có bản miễn phí và có phí, các chức năng được được tích hợp sẵn, sử dụng thuận tiện, dễ dàng. Mỗi IDE thường hỗ trợ cho một hoặc một vài ngôn ngữ lập trình nhất định.

Bảng sau là một số phần mềm được dùng nhiều trong lập trình (theo khảo sát của stackoverflow):

Visual Studio Code (code editor)

Visual Studio (IDE)

Notepad++ (text/code editor)

IntelliJ (IDE)

Vim (text/code editor)

Android Studio (IDE)

Sublime Text (code editor)

PyCharm (IDE)

Eclipse (IDE)

Atom (code editor)

Ipython (IDE)

Xcode (IDE)

Webstorm (IDE)

PHPStorm (IDE)

Netbeans (IDE)

Emacs (text/code editor)

Notepad (text editor)

 

 

 

Lập trình trực tuyến

Ngoài các công cụ lập trình đã giới thiệu ở trên, bạn cũng có thể sử dụng môi trường lập trình trực tuyến trên Internet. Đó là các trang web, cho phép bạn nhập mã nguồn, dịch mã nguồn và xuất kết quả ngay trên môi trường web. Thực tế, trang web chỉ là nơi cho phép lập trình viên nhập mã nguồn, sau đó mã nguồn được gửi về server để dịch và thực thi; sau đó kết quả thực thi sẽ được hiển thị lại lên trang web.

Ưu điểm của môi trường lập trình trực tuyến là bạn không cần phải cài đặt, dễ dàng cộng tác, chia sẻ mã nguồn thuận lợi, miễn phí.

Tuy nhiên, môi trường lập trình trực tuyến cũng có một số bất lợi như bắt buộc phải có kết nối Internet khi lập trình, tốc độ mạng không ổn định sẽ ảnh hưởng rất lớn đến hiệu quả lập trình, do môi trường lập trình do nhà cung cấp thiết lập sẵn nên người học không có cơ hội để tìm hiểu chi tiết về cách hoạt động, cách phối hợp giữa các thành phần tham gia vào quá trình viết mã, dịch mã, chạy chương trình và xuất kết quả.

Môi trường lập trình trực tuyến thích hợp trong việc dạy và học lập trình, tìm hiểu về ngôn ngữ lập trình, chia sẻ mã nguồn; trao đổi và cộng tác trong lập trình.

Sau đây là một số trang web cho phép bạn có thể lập trình trực tuyến:

https://replit.com/

https://codepen.io/

https://codesandbox.io/

http://codepad.org/

https://codeshare.io/

https://jsfiddle.net/

https://jsbin.com/?html,output

http://sqlfiddle.com/

-----//3

[Video]

--------

Cập nhật: 4/7/2022

Bài tiếp theo: Nhập môn lập trình (4) - Kỹ năng, Kiểu ngôn ngữ, Mẫu hình lập trình

Nhập môn lập trình (2) - Chương trình dịch

Bài trước: Nhập môn lập trình (1) - Chương trình, mã máy, hợp ngữ

-----

[Video]

1.1       Chương trình dịch

Với hợp ngữ, chúng ta sẽ sử dụng trình hợp dịch để dịch từ mã hợp ngữ sang dạng mã máy. Tương tự, với ngôn ngữ cấp cao, chúng ta cũng phải sử dụng một chương trình để dịch từ ngôn ngữ cấp cao (thường gọi là chương trình nguồn – source code program hay mã nguồn - source code) sang dạng mã máy.

Tổng quát hơn, chương trình dịch là chương trình dùng để dịch mã nguồn từ dạng này sang dạng khác; có thể dịch từ ngôn ngữ cấp cao sang mã máy, từ ngôn ngữ cấp cao sang dạng mã đối tượng, từ ngôn ngữ cấp cao này sang dạng ngôn ngữ cấp cao khác, thậm chí từ ngôn ngữ cấp thấp thành ngôn ngữ cấp cao hơn.

Để đơn giản, ở đây chỉ xét đến chương trình dịch thực hiện chuyển từ ngôn ngữ cấp cao sang dạng mã máy hoặc dạng mã đối tượng. CPU hoặc máy ảo sẽ thực thi các chương trình mã máy hoặc mã đối tượng này (xem Hình 1.5).

Như vậy, để có thể điều khiển được máy tính, cần phải chuyển đổi ngôn ngữ lập trình sang dạng mã máy, khi đó CPU sẽ thực thi mã máy để thực hiện các công việc. Để chuyển từ ngôn ngữ lập trình sang mã máy cần có quá trình dịch ngôn ngữ, gồm quá trình thông dịch hoặc quá trình biên dịch, hoặc kết hợp cả hai quá trình này (xem Hình 1‑6).


Trình thông dịch

Trình thông dịch (interpreter) là một chương trình máy tính, giúp CPU thực thi trực tiếp các lệnh được viết bằng một ngôn ngữ lập trình hay ngôn ngữ kịch bản mà không yêu cầu phải biên dịch trước thành một chương trình ngôn ngữ máy (xem Hình 1‑7).


Với người lập trình, nếu lập trình bằng ngôn ngữ kiểu thông dịch sẽ không thấy tập tin kết quả của quá trình dịch, phần mềm sẽ gồm các tập tin mã nguồn ở dạng ngôn ngữ lập trình.

Ví dụ, bạn có thể viết một chương trình đơn giản bằng ngôn ngữ JavaScript để hiểu về quá trình thông dịch.

– Mở chương trình Notepad

– Nhập vào đoạn mã nguồn sau:

 

– Lưu tập tin với phần mở rộng là html (ví dụ testThongDich.html)

<script>

    alert('hi cu Teo');

</script>

– Mở tập tin vừa tạo bằng trình duyệt, sẽ thấy xuất hiện một cửa sổ với nội dung “hi cu Teo”.

– Trong trường hợp này, tạm hiểu Trình duyệt web chính là một Trình thông dịch, nó thực thi trực tiếp các dòng mã trong tập tin mã nguồn, và xuất ra kết quả. Bạn sẽ không thể tìm thấy tập tin thực thi dạng .EXE hoặc DLL.

Trình biên dịch

Trình biên dịch (compiler) là một chương trình máy tính, thực hiện dịch một chuỗi các câu lệnh của một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn, mã nguồn) thành một chương trình tương đương nhưng ở dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ cấp thấp hơn (dạng mã đối tượng, hoặc dạng mã máy).

CPU hoặc máy ảo sẽ thực thi mã đối tượng hoặc mã máy do trình biên dịch tạo ra.

Cũng có loại trình biên dịch chuyển đổi từ ngôn ngữ lập trình cấp thấp sang ngôn ngữ lập trình cấp cao gọi là bộ biên dịch ngược; cũng có trình biên dịch chuyển đổi từ ngôn ngữ cấp cao này sang ngôn ngữ cấp cao khác, hoặc sang một ngôn ngữ trung gian để xử lý tiếp về sau gọi là bộ biên dịch phân tầng (xem Hình 1‑8).


Với người lập trình, nếu lập trình bằng ngôn ngữ kiểu biên dịch sẽ thấy tập tin kết quả của quá trình dịch, phần mềm sẽ gồm các tập tin mã nguồn ở dạng ngôn ngữ lập trình, các tập tin mã trung gian, hoặc tập tin dạng mã máy.

Bạn sẽ hiểu rõ hơn về quá trình biên dịch khi lập trình bằng ngôn ngữ C, C++ hoặc C#.

Thông dịch hay biên dịch?

Bạn có thể chia ngôn ngữ lập trình thành các nhóm, như ngôn ngữ lập trình kiểu thông dịch, hay ngôn ngữ lập trình kiểu biên dịch. Tuy nhiên, việc phân chia này không thực sự rõ ràng, vì thực tế nhiều ngôn ngữ lập trình được thiết kế để chạy theo kiểu vừa thông dịch vừa biên dịch, tùy thuộc vào giai đoạn khác nhau của quá trình chuyển đổi và thực thi mã nguồn. Các ngôn ngữ lập trình hiện đại cũng được triển khai trên các nền tảng cho phép tùy chọn cả hai hình thức thông dịch và biên dịch.

Như vậy việc xác định một ngôn ngữ thuộc kiểu thông dịch hay biên dịch cũng không quá quan trọng. Điều quan trọng là bạn cần phải hiểu rõ các bước, các thành phần đã tham gia vào quá trình chuyển đổi từ ngôn ngữ lập trình sang dạng mã máy.

-----//2

[Video]

--------

Cập nhật: 4/7/2022

Bài tiếp theo: Nhập môn lập trình (3) - Ngôn ngữ và phần mềm lập trình


Nhập môn lập trình (1) - Chương trình, mã máy, hợp ngữ

 

Lời nói đầu

Sau khi học xong môn Nhập Môn Công Nghệ Thông Tin, bạn đã có cái nhìn tổng quan về thông tin, biểu diễn và xử lý thông tin; đã có những kiến thức căn bản để có thể sử dụng máy tính, Internet một cách an toàn, hiệu quả; đã có thể sử dụng các phần mềm, email trong việc học, làm báo cáo và trình bày.

Môn học Nhập Môn Công Nghệ Thông Tin cũng đã giúp bạn có cái nhìn tổng quan về một số chuyên ngành, nghề nghiệp và vị trí công việc liên quan đến Công Nghệ Thông Tin. Bạn chưa nhất thiết phải chọn chuyên ngành cho mình mà hãy tập trung học tốt các môn thuộc phần Kiến Thức Đại Cương và Kiến Thức Cơ Sở Ngành. Lâu lâu ngó lại các chuyên ngành để chiêm nghiệm xem mình hợp với chuyên ngành nào hơn, điểm mạnh của mình là gì, chuyên ngành nào đang cần nhiều người làm, từ đó sẽ tự định hướng cho mình. Nếu lỡ chọn chưa đúng thì cứ chọn lại không sao hết, học cái gì cũng có lợi.

Nhập Môn Lập Trình là môn học tiếp theo bạn cần học. Môn học này giúp bạn có những khái niệm, kiến thức cơ bản liên quan đến lập trình như: thuật toán, lưu đồ, mã giả, ngôn ngữ lập trình, chương trình, trình dịch; cung cấp cho bạn các kĩ năng lập trình căn bản để giải quyết các bài toán đơn giản; làm quen với các thuật ngữ tiếng Anh chuyên ngành.

Một điều quan trọng các bạn cần biết là nên tập trung học các khái niệm quan trọng, các kiến thức nền tảng. Việc lấy ngôn ngữ lập trình nào để minh họa không thực sự quan trọng. Vì trong thực tế có hàng vài chục ngôn ngữ lập trình đang tồn tại, có cái mới sinh ra, có cái mất đi, nhưng nguyên lý chung nhất trong lập trình thì rất ít thay đổi.

Mục tiêu môn học:

– Hiểu các khái niệm: thuật toán, lưu đồ, mã giả, ngôn ngữ lập trình, chương trình, trình dịch

– Biết, hiểu và sử dụng được các kiểu dữ liệu, các cấu trúc điều khiển trong một ngôn ngữ lập trình

– Biết, hiểu và sử dụng được kiểu lập trình cấu trúc; tạo các hàm, thủ tục con để giải quyết các bài toán đơn giản

– Cài đặt được các chương trình bằng một ngôn ngữ lập trình cụ thể

– Nắm được các thuật ngữ chuyên ngành bằng tiếng Anh

Bạn nào còn yếu tiếng Anh thì theo dõi các bài giảng của các thầy, và đọc các tài liệu tiếng Việt. Bạn nào khá tiếng Anh hoặc có quyết tâm cao thì nên đọc, hiểu và làm theo cuốn sách tiếng Anh, đây là mục tiêu cao nhất của môn học.

Trong tài liệu này sẽ cố gắng ghi càng nhiều càng tốt các thuật ngữ tiếng Anh đi kèm, nhằm giúp các bạn có vốn từ vựng ban đầu, trước khi có thể đọc được các tài liệu bằng tiếng Anh. Bạn nào cẩn thận nên ghi lại các thuật ngữ tiếng Anh cùng với nghĩa của nó ra một tập tin Excel để tra lại khi cần.

Chúc các bạn kiên trì.

1.Tổng quan về lập trình cho máy tính

1.1       Chương trình

Chương trình (program) là một dãy các chỉ thị (instruction) hay các lệnh (statement), gọi chung là các lệnh, dùng để điều khiển máy tính thực hiện một công việc cụ thể.

Ví dụ, chương trình trong Bảng 1 sẽ xuất câu “Chao bac Teo” ra màn hình máy tính:





Người tạo ra (hay viết ra) các chương trình được gọi là lập trình viên (programmer, coder).

Một chương trình có thể tồn tại ở nhiều dạng, như chương trình mã máy, chương trình hợp ngữ, hoặc chương trình ngôn ngữ cấp cao (hay bậc cao). Tương ứng, cũng có nhiều cách để tạo ra một chương trình máy tính, ví dụ tạo ra bằng mã máy, tạo ra bằng hợp ngữ và tạo ra bằng ngôn ngữ cấp cao. Phần tiếp theo sẽ tìm hiểu lần lượt về ba cách tạo ra một chương trình máy tính.

1.2       Mã máy

Mã máy (machine code) là các lệnh tồn tại ở dạng các bit 0, 1; CPU có thể hiểu và thực thi trực tiếp các lệnh này. Mỗi lệnh thực hiện một tác vụ cụ thể như nạp (load), nhảy (jump) tới một vùng nhớ, các thao tác số học trên một đơn vị dữ liệu.

Chương trình mã máy (machine code program) là chương trình tồn tại ở dạng mã máy hay ở dạng ngôn ngữ máy (machine language).

Chương trình mã máy có tính phụ thuộc vào phần cứng, nghĩa là mỗi họ máy tính sẽ có tập lệnh riêng. Như vậy, một chương trình mã máy của họ máy tính này sẽ không thực thi được trên họ máy tính khác.

Con người rất khó để đọc và hiểu được chương trình mã máy, do vậy, con người ít khi tạo ra hoặc làm việc trực tiếp với các chương trình dạng mã máy. Thường thì CPU sẽ đọc, hiểu và thực thi các lệnh trong chương trình mã máy.

Chương trình mã máy được lưu trên đĩa dưới dạng các tập tin thực thi (executable program file), ví dụ các tập tin có phần mở rộng (extension) là EXE hoặc DLL.

Ví dụ một phần chương trình mã máy (Hình 1.1):





Quá trình máy tính thực thi một chương trình mã máy (xem Hình 1.2):

– Bước 1: người dùng, hệ điều hành hoặc một chương trình khác sẽ kích hoạt để thực thi một chương trình mã máy. Ví dụ, người dùng nhấp đúp chuột vào biểu tượng của chương trình trên màn hình Desktop;

– Bước 2: hệ điều hành sẽ tìm và nạp các lệnh của chương trình đang được lưu trên đĩa vào bộ nhớ chính (RAM);

– Bước 3: bộ đếm chương trình của CPU (program counter) sẽ trỏ tới lệnh đầu tiên của chương trình, cũng được gọi là đầu vào của chương trình (program entry point). CPU sẽ thực thi từng lệnh của chương trình cho tới khi gặp lệnh kết thúc.



Chương trình mã máy khi nằm trên đĩa cứng hoặc RAM sẽ là các bit 0, 1 liên tiếp nhau. Tuy nhiên, chúng được chia thành các lệnh riêng biệt với kích thước cụ thể, ví dụ mỗi lệnh sẽ là 16 bit, 32 bit, hoặc 64 bit tùy theo họ máy.

Mỗi lệnh riêng biệt lại được chia theo một cấu trúc cụ thể, gồm nhiều trường, mỗi trường có số bit và chức năng riêng. Ví dụ, một lệnh theo kiến trúc MIPS32 sẽ có chiều dài 32 bit, gồm các trường (Hình 1.3):


Do tính phức tạp, khó hiểu của chương trình mã máy, cộng với tính phụ thuộc phần cứng, nên mọi người hầu như không xây dựng các ứng dụng trực tiếp bằng mã máy mà sẽ dùng một ngôn ngữ lập trình khác, sau đó dịch thành chương trình mã máy.

Phần tiếp theo sẽ tìm hiểu một kiểu ngôn ngữ lập trình khác, để xây dựng chương trình cho máy tính, đó là hợp ngữ.

1.3       Hợp ngữ

Hợp ngữ (assembly language) là ngôn ngữ lập trình cấp thấp (hay bậc thấp) (low-level programming language). Nó đơn giản hơn chương trình mã máy nhờ vào việc dùng các từ viết tắt thay cho mã lệnh, mỗi từ viết tắt tương đương với một mã lệnh, ví dụ mã lệnh 100000 trong chương trình mã máy sẽ được thay bằng từ ADD (nghĩa là cộng) trong hợp ngữ. Địa chỉ vùng nhớ trong chương trình mã máy được thay bằng tên mô tả trong hợp ngữ.

CPU của máy tính không thể thực thi trực tiếp được mã hợp ngữ, do vậy lập trình viên cần phải dịch (assembling) chương trình viết bằng hợp ngữ sang chương trình mã máy. Chương trình dịch này được gọi là trình hợp dịch (nghĩa là chương trình dịch hợp ngữ) (assembler).

Cũng như chương trình mã máy, chương trình hợp dịch cũng có tính phụ thuộc vào họ máy tính cụ thể, mỗi họ máy tính có trình hợp dịch riêng.

Mỗi lệnh trong chương trình hợp ngữ sẽ được dịch thành một lệnh tương ứng trong chương trình mã máy. Ví dụ:

Mã hợp ngữ

add $s0, $s1, $s2

Mã máy

0000001000110010100000000100000

Quá trình dịch và thực thi một chương trình hợp ngữ được minh họa trong Hình 1.4:


Hợp ngữ được sử dụng nhiều trong các lĩnh vực hẹp, cần lập trình giao tiếp trực tiếp với phần cứng, yêu cầu tốc độ xử lý cao, ví dụ như các trình điều khiển thiết bị, hệ thống nhúng cấp thấp và các ứng dụng thời gian thực.

Hai điều nên để ý khi lập trình bằng hợp ngữ là tính phụ thuộc vào phần cứng và rất khó để tạo ra các chương trình lớn, phức tạp, có tính tương thích cao.

Để tạo ra các chương trình ứng dụng có tính tương thích tốt; tiết kiệm thời gian và công sức cho lập trình viên thì nên lựa chọn các ngôn ngữ lập trình cấp cao.

1.4       Ngôn ngữ lập trình cấp cao

Ngôn ngữ lập trình cấp cao (high-level programming language) thường được gọi ngắn gọn là ngôn ngữ lập trình, là một ngôn ngữ hình thức, gồm tập hợp các lệnh, cú pháp và ngữ nghĩa được sử dụng để điều khiển máy tính, thực hiện một công việc cụ thể.

Chương trình viết bằng các ngôn ngữ lập trình cấp cao có tính tương thích tốt, có thể chạy trên nhiều họ máy.

Có nhiều ngôn ngữ lập trình cấp cao khác nhau, tùy theo ứng dụng bạn muốn xây dựng là gì, để lựa chọn ngôn ngữ cho phù hợp. Ví dụ, sẽ có các ngôn ngữ chuyên để tạo ra các ứng dụng desktop, ứng dụng web, ứng dụng di động, ứng dụng nhúng. Cũng có những ngôn ngữ đa năng, có thể dùng để tạo ra nhiều loại ứng dụng khác nhau.

Một số ngôn ngữ lập trình phổ biến: C, C++, Java, C#, PHP, Python, JavaScript, Ruby, Go.

– Để viết ra hệ điều hành, hệ quản trị cơ sở dữ liệu, các chương trình hệ thống có thể sử dụng ngôn ngữ C, C++

– Để làm web có thể sử dụng ngôn ngữ C#, PHP, Java, JavaScript, Ruby, Python

– Để phát triển các ứng dụng quản lý cho các hệ thống lớn có thể sử dụng ngôn ngữ C++, C#, Java

Vì CPU của máy tính không thể trực tiếp thực thi được các lệnh của ngôn ngữ lập trình cấp cao, nên lập trình viên phải sử dụng một chương trình khác để dịch từ ngôn ngữ cấp cao sang dạng mã máy. Phần tiếp theo sẽ tìm hiểu về loại chương trình này.

-----//1

[Video]

--------

Cập nhật: 4/7/2022

Bài tiếp theo: Nhập môn lập trình (2) - Chương trình dịch




Nhập môn lập trình


1         Mở đầu


Sau khi học xong môn Nhập Môn Công Nghệ Thông Tin, bạn đã có cái nhìn tổng quan về thông tin, biểu diễn và xử lý thông tin; đã có những kiến thức căn bản để có thể sử dụng máy tính, Internet một cách an toàn, hiệu quả; đã có thể sử dụng các phần mềm, email trong việc học, làm báo cáo và trình bày.

Môn học Nhập Môn Công Nghệ Thông Tin cũng đã giúp bạn có cái nhìn tổng quan về một số chuyên ngành, nghề nghiệp và vị trí công việc liên quan đến Công Nghệ Thông Tin. Bạn chưa nhất thiết phải chọn chuyên ngành cho mình mà hãy tập trung học tốt các môn thuộc phần Kiến Thức Đại Cương và Kiến Thức Cơ Sở Ngành. Lâu lâu ngó lại các chuyên ngành để chiêm nghiệm xem mình hợp với chuyên ngành nào hơn, điểm mạnh của mình là gì, chuyên ngành nào đang cần nhiều người làm, từ đó sẽ tự định hướng cho mình. Nếu lỡ chọn chưa đúng thì cứ chọn lại không sao hết, học cái gì cũng có lợi.

Nhập Môn Lập Trình là một học tiếp theo bạn cần học. Môn học này giúp bạn có những khái niệm, kiến thức cơ bản liên quan đến lập trình như: thuật toán, lưu đồ, mã giả, ngôn ngữ lập trình, chương trình, trình dịch; cung cấp cho bạn các kĩ năng lập trình căn bản để giải quyết các bài toán đơn giản; làm quen với các thuật ngữ tiếng Anh chuyên ngành.

Mục tiêu môn học:

– Hiểu các khái niệm: thuật toán, lưu đồ, mã giả, ngôn ngữ lập trình, chương trình, trình dịch

– Biết, hiểu và sử dụng được các kiểu dữ liệu, các cấu trúc điều khiển trong một ngôn ngữ lập trình

– Biết, hiểu và sử dụng được kiểu lập trình cấu trúc; tạo các hàm, thủ tục con để giải quyết các bài toán đơn giản

– Cài đặt được các chương trình bằng một ngôn ngữ lập trình cụ thể

– Nắm được các thuật ngữ chuyên ngành bằng tiếng Anh

Bạn nào còn yếu tiếng Anh thì theo dõi các bài giảng của các thầy, và đọc các tài liệu tiếng Việt. Bạn nào khá tiếng Anh hoặc có quyết tâm cao thì nên đọc, hiểu và làm theo cuốn sách tiếng Anh, đây là mục tiêu cao nhất của môn học.

Chúc các bạn kiên trì.
-------------------------
Cho các bạn khá tiếng Anh
 (Download ebook)
(Bản dịch tiếng Việt để đối chiếu, giúp học tiếng Anh chuyên ngành: Lập trình với C++ )

2         Introduction to C++ programming, input/output and Operators (p38)


In this chapter you’ll learn:

– To write simple computer programs in C++

– To write simple input and output statements

– To use fundamental types

– Basic computer memory concepts

– To use arithmetic operators

– The precedence of arithmetic operators

– To write simple decision making statements

2.1       Introduction (p39)

-------------------------

Cho các bạn tự học & chưa khá tiếng Anh
(Đọc ngược từ dưới lên)

Căn bản

Loạt bài giảng của thầy: Nguyễn Trần Thi Văn – Khoa CNTT – Đại học Sư phạm kĩ thuật – TP.HCM.

Clip 09: (Buổi 03_1) Tạo và chạy chương trình C++ đầu tiên với MS Visual Studio

Clip 08: Hướng dẫn nộp bài

Clip 07: Cách sửa lỗi biên dịch C++ cơ bản trong VS 2015
– Nên tạo mới project cho mỗi bài tập. Cách làm: vào menu File/New/Project, đặt tên mới cho project, trong mục Solution nhớ chọn là Add to solution.

– Để lựa chọn dự án sẽ được ưu tiên biên dịch: chuột phải vào dự án, chọn Set as Startup Project.

Clip 06: Cách tạo project mới để lập trình C++ trong VS 2015

Clip 05: Sử dụng Flowgorithm để vẽ lưu đồ thuật giải (tiếp)
Một cách làm tham khảo (flowchart để kiểm tra số nguyên tố):



Clip 04: Sử dụng Flowgorithm để vẽ lưu đồ thuật giải (tiếp)

Clip 03: Sử dụng Flowgorithm để vẽ lưu đồ thuật giải

Tải phần mềm Flowgorithm tại đây: http://www.flowgorithm.org/download/

Clip 02: Cách vẽ lưu đồ thuật giải


Clip 01: Giới thiệu môn học
Quan trọng nhất là nắm được ý tưởng của lập trình, việc lựa chọn ngôn ngữ C hay C++ là như nhau.

Với mỗi ngôn ngữ lập trình, khi nào cũng đặt ra câu hỏi: dùng chương trình gì để viết mã (Text Editor hay IDE) và dùng phần mềm nào để biên dịch (compile)/thông dịch (interpret) mã nguồn thành chương trình thực thi.
------

Cập nhật: 17/11/2019