1.1 Lập trình phía server
Như chúng ta đã biết, sau khi trình duyệt gửi yêu cầu, web
server sẽ nhận yêu cầu, xử lý và trả về cho trình duyệt mã HTML, CSS,
JavaScript và các tài nguyên web khác (hình ảnh, âm thanh, video).
Vậy phía server sẽ cần một ngôn ngữ lập trình để xử lý các
yêu cầu từ phía client (trình duyệt) gửi tới.
1.1.1
Ngôn ngữ lập trình
Ngôn ngữ lập trình là gì?
Ngôn ngữ lập trình đề cập ở đây là cách gọi ngắn gọn của Ngôn
ngữ lập trình cấp cao (high-level programming language), 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ể. Về mặt
lý thuyết, để điều khiển máy tính bạn cũng có thể sử dụng mã máy hoặc hợp ngữ
(ngôn ngữ lập trình cấp thấp). Xem hình minh họa,
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 nền tảng, nhiều họ máy khác nhau. Có
nhiều ngôn ngữ lập trình khác nhau, tùy theo ứng dụng bạn muốn xây dựng để lựa
chọn ngôn ngữ cho phù hợp.
Một số ngôn ngữ lập trình đang được sử dụng phổ biến để lập
trình bên phía web server gồm (xếp theo thứ tự bảng chữ cái) C#, Golang, Java,
PHP, JavaScript, Python, Ruby.
Để 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 minh họa,
Chương trình thực hiện việc dịch từ ngôn ngữ lập trình sang
các dạng ngôn ngữ trung gian hoặc mã máy gọi là chương trình dịch. Có hai loại
chương trình dịch là trình thông dịch và trình biên dịch.
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 minh họa,
Với người lập trình, nếu làm web 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, website sẽ gồm các tập tin mã
nguồn ở dạng ngôn ngữ lập trình.
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 minh họa của quá trình biên dịch,
Với người lập trình, nếu làm web 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, website 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.
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.
Chương trình dịch cho
hệ thống web server
Trong máy web server, ngoài phần mềm web server (như Apache,
IIS, Nginx) có nhiệm vụ thiết lập kết nối, truyền dữ liệu bằng giao thức HTTP giữa
trình duyệt và web server, còn có nhiều thành phần khác. Ví dụ chương trình dịch
có nhiệm vụ chuyển đổi mã nguồn thành ngôn ngữ trung gian hoặc mã máy, giúp máy
server thực hiện các xử lý logic và trả về kết quả cho web client. Xem hình
minh họa,
Bảng sau là chương trình dịch của một số ngôn ngữ lập trình
tại web server:
Ngôn ngữ lập trình |
Chương trình dịch |
PHP |
PHP, Zend (interpreter) |
C# |
.NET (compiler) |
Python |
Python (interpreter) |
Java |
Java (compiler, interpreter) |
JavaScript |
Nodejs (interpreter) |
Ruby |
Ruby (interpreter) |
Golang/Go |
Go (compiler) |
Một phần mềm web server có thể hoạt động cùng với (hỗ trợ) một
hoặc nhiều ngôn ngữ lập trình khác nhau.
Ví dụ:
Phần mềm web server |
Hỗ trợ các ngôn ngữ lập trình (ví dụ) |
Apache |
PHP, Python, Perl |
Nodejs |
JavaScript |
Nginx |
PHP, Go, JavaScript, Perl, PHP, Python, Ruby |
IIS |
C#, PHP |
1.1.2 Framework và CMS là gì?
Framework là gì?
Từ framework có nghĩa
là bộ khung.
Framework là một
bộ khung được thiết kế sẵn, bao gồm các đoạn mã, thư viện, mô hình, kiến trúc hệ
thống,…v.v giúp việc xây dựng ứng dụng tiện lợi và nhanh hơn.
Nhờ đã có bộ
khung sẵn, lập trình viên ít phải viết lại các đoạn mã có tính lặp lại, phổ biến
trong các ứng dụng như đăng ký, đăng nhập, làm việc với cơ sở dữ liệu, thanh
toán…v.v. Lập trình viên sẽ tập trung thời gian nhiều hơn vào các công việc quan
trọng, có tính đặc thù của ứng dụng.
Tuy nhiên, sử dụng
framework cũng có một số hạn chế sau:
– Lập trình viên
phải bỏ thời gian để học cách làm việc với framework
– Kích thước dự
án lớn, do phải bao gồm cả mã nguồn của framework
– Lập trình viên
buộc phải tuân thủ các quy định, các chuẩn của framework
– Không thích hợp
cho các ứng dụng web nhỏ, đơn giản.
CMS là gì?
CMS, viết tắt của
content management system, là hệ quản trị nội dung.
CMS giúp người sử
dụng có thể dễ dàng xây dựng, cập nhật, thay đổi nội dung của một website. Với
những website đơn giản (ví dụ tin tức, bán hàng, giới thiệu sản phẩm, blog) người
sử dụng có thể tự xây dựng, cập nhật, vận hành website mà không nhất thiết phải
biết lập trình web.
Tuy nhiên, sử dụng
CMS cũng có một số hạn chế như:
– Giao diện bị đồng
nhất, dập khuôn
– Tính linh hoạt,
khả năng tùy chỉnh thấp
– Kích thước
website lớn
– Có thể chạy chậm
Với mỗi ngôn ngữ
lập trình phía server luôn có các framework, CMS (có phí, miễn phí) đi kèm, ví
dụ trong bảng sau (sắp xếp theo thứ tự bảng chữ cái):
Ngôn
ngữ lập trình |
Framework |
CMS |
C# |
.NET (ASP.NET,
ASP.NET core) |
Umbraco,
nopCommerce |
Golang |
Beego, Echo, Revel |
ButterCMS |
Java |
Spring, Struts, Grails |
Enonic XP,
Logical DOC |
PHP |
Laravel, CakePHP, CodeIgniter |
Joomla, Drupal, wordpress |
JavaScript |
Next.js, Express, MeteorJS |
Ghost, wiki.js |
Python |
Django, Flask, Pyramid |
Wagtail, django CMS |
Ruby |
Ruby on Rails, Sinatra, Grape |
Refinery CMS, Alchemy CMS |
1.1.3 Cài đặt trình thông dịch PHP
PHP là ngôn ngữ lập trình kịch bản (scripting language), chạy
ở chế độ thông dịch. Trình thông dịch PHP có thể chạy độc lập trên máy tính hoặc
tích hợp với một phần mềm web server.
Ngôn ngữ lập trình kịch bản thường có ít quyền truy cập vào
các tính năng gốc của máy tính.
Trong phần này, chúng ta sẽ cài đặt trình thông dịch PHP, chạy
trình thông dịch PHP ở chế độ độc lập, sau đó sẽ tích hợp trình thông dịch PHP
vào phần mềm web server (Apache).
Như vậy, để học ngôn ngữ lập trình PHP căn bản, bạn chỉ cần
cài đặt trình thông dịch PHP mà không cần phải cài đặt phần mềm web server.
Tải trình thông dịch PHP
– Vào trang web của PHP: https://windows.php.net/download
– Chọn các thông số phù hợp, ví dụ
+ Bản 64bit cho Windows 64bit, có
kí hiệu là x64; bản 32bit cho Windows 32bit có kí hiệu là x86
+ Phiên bản PHP, ví dụ PHP 8.0
+ Bản chạy ở chế độ đơn luồng
(Non Thread Safe)
+ Chọn bản Zip
– Ví dụ sẽ tải bản: VS16 x64 Non Thread Safe (2021-Sep-21
18:53:14) (file Zip)
Cài đặt trình thông dịch
PHP
– Để cài đặt trình thông dịch PHP, bạn chỉ cần giải nén tập
tin tải từ mạng vào thư mục bất kì trong đĩa cứng. Ví dụ: giải nén vào thư mục
C:\PHP.
– Để kiểm tra xem quá trình cài đặt được chưa? Bạn sẽ mở
chương trình cửa sổ dòng lệnh (CMD), di chuyển dấu nhắc lệnh vào thư mục C:\PHP,
gõ lệnh php –v nếu xuất hiện thông
tin về phiên bản của trình thông dịch PHP là được. Ví dụ,
C:\PHP>php -v
PHP 8.0.11 (cli)
(built: Sep 21 2021 18:25:57) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP
Group
Zend Engine v4.0.11,
Copyright (c) Zend Technologies
Viết và chạy một
chương trình PHP
– Sử dụng một Text editor (ví dụ Notepad) hoặc IDE bất kỳ,
nhập vào đoạn mã sau:
<?php
echo "PHP chao bac Teo.";
?>
– Lưu lại với tên bất kỳ, ví dụ myTest1.php
– Chép tập tin myTest1.php vào thư mục C:\PHP
– Trong chương trình cửa sổ dòng lệnh, tại dấu nhắc C:\PHP,
gõ lệnh php myTest1.php, để xem kết
quả, ví dụ:
C:\PHP>php
myTest1.php
PHP chao bac Teo.
– Xóa tập tin myTest1.php
để đảm bảo thư mục C:\PHP được gọn gàng.
– Cũng có thể để tập tin mã nguồn ở vị trí bất kì (ví dụ D:\),
tuy nhiên khi chạy thì phải chỉ rõ đường dẫn, ví dụ:
C:\PHP>php
d:/myTest1.php
PHP chao bac Teo.
Thiết lập biến môi
trường PATH cho trình thông dịch PHP
Biến môi trường trong Windows |
– Biến môi trường được sử dụng để tham chiếu tới ứng dụng – Giá trị của biến chính là đường dẫn tới tập tin thực thi (.exe) của
ứng dụng, các giá trị của biến được ngăn cách nhau bằng dấu chấm phẩy (;) – Trong cửa sổ dòng lệnh, gõ lệnh “set” để xem các biến môi trường và
giá trị tương ứng – Trong cửa sổ dòng lệnh, gõ lệnh “path” để xem giá trị của biến path – Biến môi trường gồm hai loại: biến hệ thống và biến người dùng; biến
hệ thống cho phép mọi người đều dùng được, admin mới được phép thay đổi biến
này; biến người dùng chỉ cho một người cụ thể được thay đổi giá trị và sử dụng. Cần thiết lập biến môi trường cho một lệnh (ví dụ php.exe). Mục đích
là: để khi vào cửa sổ dòng lệnh, gõ lệnh (ví dụ php) ở mọi vị trí thì Windows
đều tìm được tập tin thực thi (php.exe) để chạy. |
– Nhấn phím window (biểu tượng cửa sổ) trên bàn phím
– Nhập chữ “system”, sẽ thấy xuất hiện mục System (control
panel), bấm vào mục System
– Tại cửa sổ System, chọn mục Advanced system settings
– Trong cửa sổ System Properties, tab Advanced, chọn mục
Environment Variables…
– Trong cửa sổ Environment Variables, mục User variables
for…, chọn Path, chọn Edit
– Trong cửa sổ Edit environment variable, bấm nút New và nhập
giá trị của biến môi trường, ví dụ: C:\php
– Bấm OK (một số lần) để hoàn thành việc thiết lập biến môi
trường
– Để kiểm tra xem việc thiết lập thành công hay chưa, mở cửa
sổ dòng lệnh (cmd), ở vị trí bất kì, nhập lệnh php –v, nếu lệnh này chạy được, nghĩa việc thiết lập biến môi trường
đã thành công
Giờ có thể chạy trình thông dịch PHP ở mọi vị trí trong cửa
sổ dòng lệnh. Ví dụ:
D:\>php -v
PHP 8.0.11 (cli)
(built: Sep 21 2021 18:25:57) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP
Group
Zend Engine v4.0.11,
Copyright (c) Zend Technologies
Hoặc,
D:\>php myTest1.php
PHP chao bac Teo.
1.1.4 Xem và đọc thêm
– [1] Dùng các từ khóa sau tìm kiếm trên mạng để đọc thêm:
CMS, interpret, interpreter, compile, compiler, trình thông dịch, trình biên dịch,
web development framework
– [2] List of CMS: https://en.wikipedia.org/wiki/List_of_content_management_systems
– [3] Interpreter:
https://en.wikipedia.org/wiki/Interpreter_(computing)
– [4] High level language, assembly and machine language: https://www.cise.ufl.edu/~mssz/CompOrg/CDA-lang.html
– [5] PHP: https://www.php.net/
1.1.5 Bài tập và thực hành
Bài tập 1. Cài đặt PHP, chạy ở chế độ dòng lệnh CLI (command-line interface).
Bài tập 2. Lập trình các chương trình sau. (nguồn: https://www.w3resource.com/php-exercises/php-basic-exercises.php)
2.1. Write a PHP script to get the PHP version and
configuration information.
2.2. Write a PHP script to display the following strings.
Sample String:
'Tomorrow I \'ll learn
PHP global variables.'
'This is a bad command
: del c:\\*.*'
Expected Output :
Tomorrow I 'll learn
PHP global variables.
This is a bad command
: del c:\*.*
2.3. Write a PHP script, which will return the following
components of the url 'https://www.w3resource.com/php-exercises/php-basic-exercises.php'.
List of components : Scheme, Host, Path
Expected Output :
Scheme : http
Host :
www.w3resource.com
Path :
/php-exercises/php-basic-exercises.php
[Gợi ý]
Bài tập 2.
2.1. Write a PHP script to get the PHP version and
configuration information.
<?php
phpinfo();
?>
2.2. Write a PHP script to display the following strings.
<?php
echo "Tomorrow I 'll learn PHP
global variables."."\n";
echo "This is a bad command :
del c:\\*.*"."\n";
?>
or
<?php
echo 'Tomorrow I \'ll learn PHP
global variables.'."\n";
echo 'This is a bad command : del
c:\\*.* '."\n";
?>
2.3. Write a PHP script, which will return the following
components of the url
<?php
$url =
'https://www.w3resource.com/php-exercises/php-basic-exercises.php';
$url=parse_url($url);
echo 'Scheme :
'.$url['scheme']."\n";
echo 'Host :
'.$url['host']."\n";
echo 'Path : '.$url['path']."\n";
?>
1.1.6 Câu hỏi ôn tập
Câu 1. Ngôn ngữ nào sao đây không phải là ngôn ngữ kiểu
thông dịch?
A. PHP
B. Ruby
C. C#
D. JavaScript
Câu 2. Ngôn ngữ nào sau đây không phải là ngôn ngữ kiểu biên
dịch?
A. Java
B. C#
C. Python
D. PHP
Câu 3. 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 4. In computing, a ________ is a computer program that
translates computer code written in one programming language (the source
language) into another language (the target language).
A. translator
B. interpreter
C. compiler
D. assembler
Câu 5. Để làm ra một trang web bán hàng, cách làm nào là
nhanh nhất trong những cách sau?
A. Lập trình bằng hợp ngữ (assembly)
B. Sử dụng framework
C. Sử dụng CMS
D. Lập trình bằng ngôn ngữ cấp cao (thuần)
-----
Video 1 (bài giảng)
Slide 1 (bài giảng)
Video 2 (thực hành)
Slide 2 (thực hành)
-----
Cập nhật: 17/8/2023
-----
Bạn muốn tự học HTML bài bản? Xem thêm