Chuyên gia ứng cứu sự cố (1) - Bộ nguồn máy tính

5. Bộ nguồn máy tính

5.1. Thông tin cơ bản

Bộ nguồn (còn có tên gọi khác là PSU - Power Supply Unit) cung cấp nguồn điện để giúp các linh kiện của hệ thống máy tính hoạt động. Các linh kiện gồm: bo mạch chủ, bộ tản nhiệt, CPU, các ổ đĩa, cạc màn hình, cạc âm thanh,...v.v.

Xem hình minh họa:

Bộ nguồn (nguồn ảnh: thegioididong.com)

Bộ nguồn gồm 3 mạch chính:

- Mạch chỉnh lưu: đổi điện áp xoay chiều 220V thành điện áp một chiều 300V, cung cấp cho nguồn cấp trước và nguồn chính

- Nguồn cấp trước: cung cấp điện áp 5V STB cho IC Chipset quản lý nguồn trên bo mạch chủ, cung cấp điện áp 12V nuôi IC tạo dao động cho nguồn chính hoạt động (nguồn cấp trước hoạt động liên tục khi máy tính được cắm điện).

- Nguồn chính: cung cấp điện áp cho bo mạch chủ, các ổ đĩa. Nguồn chính chỉ hoạt động khi có lệnh PS_ON gửi tới từ bo mạch chủ. Nguồn chính cung cấp điện áp +3.3V cho CPU và RAM, +5V cho bo mạch chủ, thiết bị ngoại vi, CPU (đời cũ), +12V cho ổ cứng, cạc mở rộng.

Có nhiều loại nguồn khác nhau, ví dụ ATX PS2, ATX PS3, SFX PSU

Các thương hiệu phổ biến: EVGA, Asus, Corsair, Cooler Master, Gigabyte, SilverStone, SeaSonic, Super Flower.

5.2. Thực hành kiểm tra và sửa nguồn

[1] Cách kiểm tra và sửa nguồn máy tính: https://maytinhgiakho.vn/cach-kiem-tra-va-sua-nguon-may-tinh.html

[2] Xem Kiểm tra nguồn: https://www.youtube.com/watch?v=GMkit0Yh35Y

https://www.youtube.com/watch?v=V8AWVytr-n0

[3] Bộ nguồn: https://www.thegioididong.com/hoi-dap/nguon-may-tinh-la-gi-cach-lua-chon-nguon-may-tinh-phu-hop-1318610
-----
Cập nhật: 26/3/2024
-----
Bài sau: 

Phân tích dữ liệu (2) - Excel cơ bản và nâng cao (1)

Bài trước: Phân tích dữ liệu (1) - Tổng quan

----- 

II.1. Excel cơ bản

II.1.1. Vài thông tin chung về Excel

- Excel là phần mềm của Microsoft, giúp bạn ghi chép, trình bày, tính toán, xử lý, phân tích, chia sẻ dữ liệu một cách hiệu quả.

- Bạn cũng có thể thực hiện được hầu hết các chức năng của Excel trên nền web bằng Google Sheets.

- Excel cung cấp các chức năng cơ bản để tạo bảng tính, nhập dữ liệu, định dạng dữ liệu, thực hiện các phép toán, lọc dữ liệu, tạo biểu đồ

- Cung cấp các công thức, các hàm để tự động tính toán trên dữ liệu, như hàm toán học, hàm thống kê, hàm logic, hàm tra cứu

- Cung cấp các chức năng nâng cao như pivot table, macro, chia sẻ dữ liệu, lập trình, phân tích tình huống

- Được sử dụng rộng rãi trong nhiều lĩnh vực, như kế toán, tài chính, kinh doanh, marketing, khoa học, giáo dục

II.1.2. Một số khái niệm cơ bản

- Khi mở Excel lần đầu, nó sẽ tự tạo ra cho chúng ta một cuốn sổ ghi chép, được gọi là workbook (hoặc book); bạn sẽ lưu workbook này thành một tập tin. Vậy, một tập tin tương đương với một workbook. Ví dụ: Book1.xlsx

- Mỗi workbook sẽ có nhiều trang tính gọi là sheet. Ví dụ: Sheet1

- Trong mỗi trang tính sẽ bao gồm các hàng (row), các cột (column), mỗi hàng được đánh số để phân biệt nhau (ví dụ: 1,2,3,…), tương tự, các cột được phân biệt nhau bằng các kí tự (ví dụ A,B,C,...)  

- Giao của mỗi hàng và cột gọi là một ô (cell), chúng ta sẽ nhập dữ liệu, tính toán dựa trên các ô này. Mỗi ô có một địa chỉ duy nhất là kết hợp của ký tự hàng và chỉ số cột. Ví dụ ô A3 là giao của cột A và hàng 3.

Xem hình minh họa:

- Dữ liệu trong mỗi ô sẽ có một kiểu dữ liệu (data type) tương ứng. Trong Excel có nhiều kiểu dữ liệu khác nhau, như kiểu mặc định (general - chưa xác định kiểu dữ liệu cụ thể nào), kiểu văn bản (text), kiểu số (number), kiểu ngày tháng (date), và nhiều kiểu khác. Bạn nên để ý đến kiểu dữ liệu vì nó liên quan đến quá trình tính toán sau này, ví dụ chúng ta không thể thực hiện các phép tính số học nếu dữ liệu đang là văn bản.

- Kỹ năng đầu tiên khi làm việc với ô dữ liệu là bạn phải nhập được dữ liệu, định dạng đúng kiểu dữ liệu, thao tác nhanh. Thực hành nhiều, làm nhiều thì sẽ quen.

II.1.3. Xem và đọc thêm

[1] Udemy (tiếng Anh): 

https://www.udemy.com/course/useful-excel-for-beginners/learn/lecture/304308#overview

- Section 1: Introduction

- Section 2: Basics of Excel

- Section 3: Entering Data

[2] Youtube (tiếng Việt): 

- Clip 00. Excel là gì?: https://www.youtube.com/watch?v=LC19SdKG4_c&list=PLApuTT4CRzA9XAywWsReLBID1UYrPCwWB&index=1

- Clip 01. Các thao tác với Excel: https://www.youtube.com/watch?v=t-RLqZ-FZuo&list=PLApuTT4CRzA9XAywWsReLBID1UYrPCwWB&index=2

- Clip 02. Nhập dữ liệu: https://www.youtube.com/watch?v=YUQODIm2hrE&list=PLApuTT4CRzA9XAywWsReLBID1UYrPCwWB&index=3

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

Bài 1. Trong Excel, bạn hãy định dạng dữ liệu như bảng sau.


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

Câu 1. What is a group of selected cells called?

A. Group

B. Range

C. Collection

D. Set

Câu 2. When you type a number in a cell, where would excel align in?

A. Left

B. Right

C. Justify

D. Center

Câu 3. When you type a text in a cell, where would excel align in?

A. Left

B. Right

C. Justify

D. Center

Câu 4. What is the keyboard shortcut to undo the last/previous operation?

A. Ctrl + U

B. Ctrl + I

C. Ctrl + Z

D. Ctrl + L

Câu 5. When you enter numbers or text in a cell, Excel applies this number format by default.

A. Text

B. Number

C. Default

D. General

Câu 6. When you apply 'NUMBER' number format to a cell, how many decimal places are shown by default?

A. 0

B. 1

C. 2

D. 3

-----

Cập nhật: 12/3/2024

Bài sau:

-----

Phân tích dữ liệu (1) - Tổng quan

 I. Tổng quan

I.1. Dữ liệu là gì?

Dữ liệu (data) là một tập hợp các giá trị rời rạc hoặc liên tục dùng để truyền tải thông tin, mô tả số lượng, chất lượng, sự kiện, số liệu thống kê, hoặc đơn giản chỉ là một chuỗi ký hiệu mà ý nghĩa của nó tùy thuộc vào cách thức diễn giải.

Dữ liệu được thể hiện ở nhiều dạng khác nhau, ví dụ dưới dạng số, ký tự, kí hiệu, màu sắc, hình ảnh, âm thanh, video.

Ví dụ về dữ liệu: nội dung văn bản trên các trang web, các bảng số liệu trong excel, hình ảnh có chứa 3 bóng đèn tín hiệu giao thông, tập tin video lấy về từ camera an ninh.

Dữ liệu ở dạng thô thường không mang nhiều ý nghĩa. Do vậy, chúng ta cần phải xử lý nó (với sự trợ giúp của máy tính, phần mềm) để rút ra được nhiều thông tin, tri thức, nhằm ứng dụng vào công việc và cuộc sống.

Chúng ta hãy quan sát quá trình xử lý dữ liệu ở hình sau: 



- Từ dữ liệu (data), chúng ta sẽ rút ra được thông tin (information), tri thức (knowledge), từ đó sẽ đưa ra được các quyết định khôn ngoan (wisdom).

- Dữ liệu luôn chứa những thứ dư thừa, do vậy cần nhiều đĩa cứng (hard disk) để lưu trữ hơn so với thông tin, và tri thức.

- Dữ liệu, thông tin và tri thức là những thứ đã xảy ra (past); dựa trên những thứ đã xảy ra để dự đoán cho tương lai (future).

Ví dụ:

Ứng dụng

Dừng xe

Tập trung nhiều vào mặt hàng sinh tố

Tri thức

Đèn đỏ thì không được phép đi

Mọi người thích sinh tố hơn cà phê

Thông tin

Đèn đỏ giao thông ở ngã tư bật sáng

Bán sinh tố được nhiều hơn cà phê

Dữ liệu

Màu đỏ

Số lượng bán:

- Cà phê: 5 ly

- Sinh tố: 30 ly

I.2. Phân tích dữ liệu là gì?

Phân tích dữ liệu (data analysis) là quá trình kiểm tra, làm sạch, chuyển đổi, và mô hình hóa dữ liệu; để tìm ra các thông tin hữu ích, các kết luận và hỗ trợ quá trình ra quyết định của doanh nghiệp. 

Dựa trên kết quả của quá trình phân tích dữ liệu, các quyết định của doanh nghiệp sẽ có thêm cơ sở thực tế, thay vì dựa hoàn toàn vào cảm tính.

Trong tiếng Anh cũng có một từ khác là data analytics, mà khi dịch ra tiếng Việt cũng là “phân tích dữ liệu”, tuy nhiên data analytics có thêm bước đi thu thập dữ liệu. Nghĩa là data analytics bao hàm luôn data analysis. Chưa biết dùng 2 từ tiếng Việt nào để phân biệt 2 cụm từ data analytics và data analysis.

Người làm nghề phân tích dữ liệu được gọi là chuyên viên phân tích dữ liệu (data analyst).

Muốn trở thành một chuyên viên phân tích dữ liệu cần học gì?

- Tìm hiểu về nghề phân tích dữ liệu xem có phù hợp với bản thân không

- Phân tích dữ liệu bằng Excel

- Thống kê trong phân tích dữ liệu

- SQL trong phân tích dữ liệu

- Các công cụ trực quan hóa dữ liệu (visualization tool)

- Python trong phân tích dữ liệu

I.3. Những tố chất, kỹ năng cần có để làm nghề

- Tư duy logic

- Khả năng tập trung

- Khả năng giao tiếp, thuyết trình

- Cẩn thận, tỉ mỉ, bảo mật

- Khả năng học kiến thức mới

- Toán thống kê cho phân tích dữ liệu

- Sử dụng thành thạo các công cụ, phần mềm để phân tích dữ liệu, trực quan hóa dữ liệu, báo cáo

- Kỹ năng lập trình

I.4. Xem và đọc thêm

[1] Phân biệt analytics và analysis: https://200lab.io/blog/su-khac-biet-giua-data-analytics-va-data-analysis/

[2] Analytics and analysis: https://www.questionpro.com/blog/data-analytics-vs-data-analysis

[3] Lộ trình học để trở thành một data analyst: https://www.youtube.com/watch?v=ZqvTVRWM5i4

I.5. Bài tập và thực hành

Bài 1. Liệt kê các nguồn tài liệu để học DA (data analysis)


- Tìm hiểu về nghề phân tích dữ liệu


- Phân tích dữ liệu bằng Excel


- Toán Thống kê trong phân tích dữ liệu


- SQL trong phân tích dữ liệu


- Các công cụ trực quan hóa dữ liệu (visualization tool)


- Python trong phân tích dữ liệu



Bài 2. Khảo sát nhu cầu tuyển dụng, mức lương của một DA tại Việt Nam

I.6. Câu hỏi ôn tập

Câu 1. Thuật ngữ nào có nghĩa là chuyên viên phân tích dữ liệu?

A. Data analysis

B. Data analytics

C. Data analyst

D. Data scientist

Câu 2. Công việc của bạn là xử lý trên dữ liệu có sẵn, nhằm rút ra các thông tin, kết luận hữu ích. Thuật ngữ tiếng Anh của việc này là gì?

A. Data analysis

B. Data analytics

C. Data analyst

D. Data scientist

Câu 3. Để trở thành một chuyên viên phân tích dữ liệu, bạn cần phải học những nội dung sau. Phát biểu nào không đúng?

A. Tìm hiểu về nghề phân tích dữ liệu

B. Excel, SQL

C. Toán rời rạc

D. Python, Toán thống kê, Công cụ trực quan hóa dữ liệu

Câu 4. Những tố chất, kỹ năng cần có của một người làm nghề phân tích dữ liệu. Phát biểu nào không đúng?

A.  Tư duy logic, Khả năng tập trung, Kỹ năng lập trình, Toán thống kê cho phân tích dữ liệu

B. Kỹ năng lãnh đạo

C. Khả năng học kiến thức mới, Sử dụng thành thạo các công cụ, phần mềm để phân tích dữ liệu, trực quan hóa dữ liệu, báo cáo

D. Cẩn thận, tỉ mỉ, bảo mật, Khả năng giao tiếp, thuyết trình

-----

Cập nhật: 12/3/2024

Bài sau: Phân tích dữ liệu (2) - Excel cơ bản và nâng cao (1)

-----

JavaScript từ cơ bản đến nâng cao (1) - Tổng quan

 

Chương 1. Tổng quan về JavaScript

Chương này sẽ giới thiệu về ngôn ngữ lập trình JavaScript, cũng như thiết lập môi trường để lập trình với ngôn ngữ này. Chúng ta cũng sẽ làm quen với việc lập trình và viết một số chương trình bằng JavaScript.

Chương này đề cập tới các nội dung sau:

  • Lập trình là gì?

  • Lịch sử của JavaScript

  • Các công cụ cần thiết để lập trình với JavaScript

  • Cài đặt Node.js

  • Chạy JavaScript ở chế độ dòng lệnh

  • Chương trình JavaScript đầu tiên

  • JavaScript trong trình duyệt web

  • Tương thích ngược (graceful degradation) và tối ưu từng bước (progressive enhancement)

  • Một chương trình JavaScript phức tạp hơn

  • Làm một dự án đơn giản

1.1 Lập trình

Lập trình là chỉ dẫn cho máy tính làm việc theo ý bạn.Hiểu một cách đơn giản, chương trình máy tính là một chuỗi các chỉ dẫn, giúp máy tính biết cách thực hiện một công việc. Tuy nhiên, không may là máy tính không thể hiểu được ngôn ngữ của con người, chúng chỉ biết tới những con số 1 và 0. Con người đã viết ra các chương trình đầu tiên cho máy tính bằng các thẻ đục lỗ (punched card), muốn biểu diễn số 1 thì đục một lỗ, nếu không đục lỗ thì là số 0.

Các chương trình máy tính đầu tiên được viết bằng mã máy (machine code) và hợp ngữ (assembly). Đây là các ngôn ngữ lập trình bậc thấp (low-level programming language), gắn liền với phần cứng máy tính, rất khó để lập trình, mã nguồn khó hiểu và phụ thuộc vào kiến trúc của tập lệnh máy tính. Tuy nhiên, nếu bạn quan tâm tới tốc độ xử lý của chương trình thì mã máy hoặc hợp ngữ là lựa chọn tốt nhất.

Ngược lại, các chỉ dẫn (lệnh) trong ngôn ngữ lập trình bậc cao có tính trừu tượng nhiều hơn (gần với ngôn ngữ giao tiếp của con người hơn), điều này giúp con người có thể đọc và viết mã dễ dàng hơn. Chúng ta có thể sử dụng các ngôn ngữ như C, C++, hoặc Java để viết các chương trình, sau đó biên dịch chương trình thành mã máy và thực thi. Chương trình viết bằng các ngôn ngữ này thường chạy rất nhanh, do vậy, nó thích hợp cho các phần mềm thương mại, hoặc các chương trình trò chơi video cần tốc độ xử lý cao. Hầu hết các chương trình ứng dụng di động (native app) cũng được viết bằng các ngôn ngữ lập trình bậc cao.

Ngôn ngữ kịch bản (scripting language) cũng là ngôn ngữ lập trình bậc cao, chúng là ngôn ngữ kiểu thông dịch (interpreted), nghĩa là khi chạy chương trình chúng mới được dịch sang mã máy. Mặc dù các trình thông dịch (interpreter) đang ngày càng phức tạp hơn, xóa dần lằn ranh phân biệt giữa ngôn ngữ lập trình kiểu thông dịch và biên dịch, nhưng các chương trình viết bằng ngôn ngữ lập trình kiểu thông dịch vẫn có tốc độ xử lý chậm hơn so với kiểu biên dịch.

1.2 Về JavaScript

Trong quyển sách này, chúng ta sẽ học về ngôn ngữ lập trình JavaScript, thường được gọi là ngôn ngữ của web.

Gần như tất cả các trình duyệt đều có thể chạy JavaScript, nhờ đó, nó trở thành một trong những ngôn ngữ lập trình phổ biến nhất thế giới. Để học JavaScript, đơn giản, bạn chỉ cần một trình soạn thảo văn bản thô (text editor) và trình duyệt web là đủ. Với JavaScript, bạn rất dễ để làm quen, nhưng rất khó để hiểu hết các tính năng của nó, bởi đây là một ngôn ngữ có nhiều tính năng độc đáo và thú vị. Tuy nhiên, khi bạn đã thành thạo với nó rồi, thì bạn sẽ thấy nó là một ngôn ngữ ấn tượng, linh hoạt và có thể tạo ra các ứng dụng lớn.

JavaScript là ngôn ngữ kịch bản, bậc cao, được biên dịch và thông dịch tại thời điểm thực thi. Do đó, nó cần có chương trình dịch (engine, gọi tắt là trình dịch) để thông dịch mã nguồn và thực thi nó. Các trình dịch này có trong các trình duyệt web như Firefox, Chrome hoặc Safari. Ngoài trình duyệt, bạn cũng có thể sử dụng Google V8 để thực thi mã JavaScript. Các trình thực thi JavaScript hiện đại có lồng kĩ thuật biên dịch động (hay biên dịch Just-In-Time, gọi tắt là JIT) vào quá trình thông dịch, giúp chương trình chạy nhanh hơn.

JavaScript cũng là một ngôn ngữ động (dynamic language), vì vậy trong lúc thực thi chương trình, nhiều thành phần của chương trình vẫn có thể thay đổi, nhiều thao tác liên quan đến quá trình thông dịch/biên dịch vẫn được thực hiện (như kiểm tra kiểu dữ liệu của biến, chúng ta sẽ tìm hiểu ở phần sau). Ví dụ với ngôn ngữ C++ thì những thao tác này phải được hoàn thành trong giai đoạn biên dịch mã nguồn.

1.3 Lịch sử JavaScript

Ban đầu, hệ thống web (WWW) chỉ gồm các trang web được kết nối với nhau bằng các liên kết (hyperlinks). Tuy nhiên, người dùng thì lại muốn tương tác được với các trang web. Vậy là Netscape (một công ty cung cấp trình duyệt thời kỳ đầu) đã yêu cầu Brendan Eich, là một nhân viên công ty, phát triển một ngôn ngữ lập trình mới cho trình duyệt Navigator của họ. Yêu cầu này phải được thực hiện gấp rút vì sự cạnh tranh gay gắt giữa Netscape và Microsoft.

Chỉ trong 10 ngày, Eich đã tạo ra được một ngôn ngữ lập trình mới (mặc dù mới chỉ ở dạng bản mẫu - prototype). Để làm được như vậy, anh ấy đã vay mượn nhiều thành tố từ các ngôn ngữ khác, gồm AWK, Java, Perl, Scheme, HyperTalk và Self. Mặc dù đây là một thành tích đáng nể, tuy nhiên, do áp lực buộc phải ra mắt sớm đã dẫn tới ngôn ngữ vẫn có những điểm kỳ quặc và mắc các lỗi mà cho đến tận bây giờ vẫn hầu như không thể khắc phục được một cách trọn vẹn.

Khi mới được tạo ra, họ đặt tên ngôn ngữ này là Mocha, sau đó đổi tên thành LiveScript, rồi lại được đổi tên thành JavaScript để “ăn theo” sự nổi tiếng của ngôn ngữ Java do Sun Microsystems phát triển. Thoạt nghe cái tên JavaScript, mọi người thường tưởng đây là bản rút gọn của ngôn ngữ Java. Tuy nhiên, hai ngôn ngữ này không liên quan gì đến nhau, dù cú pháp của JavaScript cũng có những điểm tương đồng với Java.

JavaScript xuất hiện lần đầu trong trình duyệt Navigator (ver 2.0) vào năm 1995. Một năm sau, Microsoft đã phân tích hoạt động của JavaScript (reverse-engineered - phân tích chương trình để hiểu cấu trúc, do không có bản mã nguồn gốc) để tạo ra một phiên bản riêng của họ, đặt tên là JScript để tránh vi phạm bản quyền với tên Java của Sun Microsystems. JScript được tích hợp vào trình duyệt Internet Explorer (ver 3.0), nó gần như giống hệt JavaScript, cả các lỗi và các điểm kỳ quặc. JScript có thêm một số tính năng chỉ dành riêng cho Internet Explorer. Thời điểm này, Microsoft cũng tạo ra một ngôn ngữ kịch bản khác cho Internet Explorer có tên là VBScript.

JavaScript (và JScript) ngay lập tức nổi tiếng. Đây là ngôn ngữ dễ học, dễ tiếp cận, do vậy nó đã dẫn đến sự bùng nổ trong việc tạo ra các trang web động, các trang web có tính tương tác. Thật không may, dễ tiếp cận cũng là một cái dở, kết quả là có nhiều người viết ra các đoạn mã mà chẳng biết nó dùng vào việc gì; hoặc người ta dễ dàng sao chép mã nguồn trên web và thường sử dụng sai cách, dẫn đến xuất hiện nhiều tình huống dở khóc dở cười trên các website.

JavaScript cũng bị mang tiếng xấu bởi người ta thường sử dụng nó để tạo ra các cửa sổ quảng cáo, xuất hiện đột ngột khi duyệt web, gây khó chịu cho người dùng; hoặc tạo ra các đoạn mã để âm thầm thăm dò, thu thập thông tin trình duyệt.

1.4 Cuộc đua giữa các trình duyệt

Tại thời điểm Netscape Navigator 4 và Internet Explorer 4 ra đời, JavaScript đã rất phổ biến. Microsoft đã quảng cáo rầm rộ về thuật ngữ Dynamic HTML (viết tắt là DHTML), ám chỉ về việc sử dụng JavaScript giúp HTML có khả năng tương tác và năng động hơn. Nhận thấy tiềm năng này, cả Netscape và Microsoft đều cố gắng bổ sung thêm những tính năng độc quyền mới, dẫn đến mỗi trình duyệt sử dụng một cú pháp lập trình riêng. Cuộc đua bổ sung thêm các tính năng mới cho trình duyệt được mọi người gán cho cái tên là “chiến tranh giữa các trình duyệt” (browser wars). Đáng tiếc, mặt trái của cuộc đua này là, với mỗi chức năng, các lập trình viên luôn phải viết 2 phiên bản mã nguồn cho mỗi trình duyệt. Các lập trình viên chuyên nghiệp thường coi JavaScript chỉ là một ngôn ngữ “chơi bời”, không phù hợp với các công việc lập trình nghiêm túc. Tuy nhiên, đây là nhận định không công bằng, vấn đề không phải là ngôn ngữ lập trình mà là cách sử dụng nó.

Cuối cùng, Microsoft đã thắng trong cuộc chạy đua, Internet Explorer đã trở thành trình duyệt vượt trội với nhiều ưu thế. Mọi người ngày càng quan tâm nhiều hơn tới các “tiêu chuẩn” (standard), phần lớn nhờ vào những nỗ lực của Dự án chuẩn hóa Web (Web Standards Project - WaSP). Các nhà phát triển và nhà cung cấp trình duyệt bắt đầu hợp tác và áp dụng các tiêu chuẩn do Hiệp hội web (W3C - World Wide Web Consortium) và ECMA đề ra.

Các trình duyệt mã nguồn mở như Firefox (ra mắt 2002), Safari (2003), Chrome (2008), đều hỗ trợ mạnh mẽ các tiêu chuẩn, điều này giúp các nhà phát triển có thể tạo ra các ứng dụng JavaScript tốt hơn, hoạt động nhất quán trên các trình duyệt khác nhau.

1.5 Web 2.0

Vào năm 2005, các trang Google Maps, Flickr và Gmail bắt đầu xuất hiện, chúng là các minh chứng cho khả năng tạo ra các ứng dụng web phong phú, các chức năng hoạt động giống như một Ứng dụng desktop của JavaScript. Cùng thời điểm này, Jesse James Garrett cũng đưa ra thuật ngữ Ajax, là viết tắt của Asynchronous JavaScript And XML. Ajax là kỹ thuật lấy dữ liệu từ máy server về máy client, chỉ cập nhật các thành phần có liên quan mà không tải lại toàn bộ trang web, trong khi vẫn cho người dùng tiếp tục tương tác với phần còn lại của trang. Kỹ thuật này giúp việc duyệt web được mượt mà hơn và đã được sử dụng rộng rãi trong các ứng dụng web 2.0. Do vậy, các lập trình viên chuyên nghiệp bắt đầu chú ý đến JavaScript nhiều hơn và nó bắt đầu được coi là một ngôn ngữ lập trình mạnh mẽ, linh hoạt, có khả năng tạo ra các ứng dụng web chất lượng cao.

1.6 Các tiêu chuẩn

Khi JavaScript được sử dụng để tạo ra các ứng dụng phức tạp hơn và các trình duyệt bắt đầu tuân theo các tiêu chuẩn, thì bối cảnh của JavaScript đã thay đổi. Một cuộc chạy đua mới giữa các trình duyệt lại bắt đầu, nhưng cuộc chạy đua lần này là “trình duyệt nào tuân thủ các tiêu chuẩn tốt nhất”. Bên cạnh đó cũng có sự cạnh tranh về tốc độ xử lý của các trình thực thi mã JavaScript trong các trình duyệt (JavaScript engine). Cuộc cạnh tranh này bắt đầu vào năm 2008, khi các kỹ sư của Google đã tạo ra trình thực thi mã có tên V8 trong trình duyệt Chrome. Nó chạy nhanh hơn khá nhiều so với các trình thực thi mã JavaScript trước đó. Các trình duyệt khác cũng tăng tốc độ xử lý của các trình thực thi mã để cạnh tranh với Google. Hiện nay, JavaScript đã chạy khá nhanh trong các trình duyệt, và việc cải thiện vẫn được duy trì theo thời gian.

1.7 HTML5

HTML5 là phiên bản mới nhất của ngôn ngữ HTML, tuy nhiên thực tế nó là một thuật ngữ bao trùm tất cả các công nghệ mới nhất đang được sử dụng trong lĩnh vực web. Nó bao gồm HTML, CSS3 và rất nhiều các API sử dụng JavaScript để tương tác với các trang web. Những nội dung này sẽ được đề cập chi tiết trong chương 10.

HTML5 đã được hoàn thiện vào năm 2014, và mọi người đề xuất năm 2016 sẽ đưa ra phiên bản 5.1. HTML5 đã nhanh chóng trở thành tiêu chuẩn phổ biến trong quá trình phát triển ứng dụng web. Trong đó, JavaScript là nhân tố chính góp phần làm cho lĩnh vực phát triển ứng dụng web trở nên thú vị hơn.

1.8 Node.js

Năm 2009, Ryan Dahl đã phát triển nền tảng Node.js (thường gọi tắt là Node). Nó cho phép chúng ta viết các ứng dụng phía server bằng JavaScript. Node hoạt động dựa trên trình thực thi mã V8 (V8 engine) của Google, cho phép tạo ra các ứng dụng web thời gian thực, chạy nhanh, khả năng xử lý mạnh mẽ chỉ bằng JavaScript. Dựa trên Node, người ta đã tạo ra nhiều ứng dụng và thư viện JavaScript không cần đến trình duyệt. Số người biết đến Node.js và sử dụng nó đã tăng lên nhanh chóng, điều này kéo theo ngày càng có nhiều người quan tâm và sử dụng JavaScript, cả trong và ngoài lĩnh vực web.

Sự phổ biến của Node.js đã dẫn đến một kỹ thuật lập trình mới có tên là Isomorphic JavaScript (hoặc Universal JavaScript). Ý tưởng là một đoạn mã JavaScript có thể chạy được ở cả phía client và phía server: nếu trình duyệt không thể chạy được đoạn mã, thì bên server sẽ chạy và gửi kết quả về client; nếu máy server không chạy được đoạn mã thì gửi đoạn mã đó về máy client để thực thi.

1.9 Các phiên bản của JavaScript

Năm 1996, Netscape và Sun Microsystem đã quyết định chuẩn hóa ngôn ngữ JavaScript, cùng với sự trợ giúp của Tổ chức quản lý các tiêu chuẩn có tên là ECMA (Hiệp hội nhà sản xuất máy tính châu Âu - European Computer Manufacturers Association). Ngôn ngữ JavaScript sau khi được chuẩn hóa sẽ có tên gọi là ECMAScript để tránh vi phạm nhãn hiệu Java của Sun. Nhưng điều này cũng gây thêm nhiều nhầm lẫn, nên cuối cùng cái tên ECMAScript được sử dụng như là một đặc tả (một tiêu chuẩn), còn tên ngôn ngữ lập trình thì vẫn là JavaScript.

Trong điều kiện lý tưởng, tiêu chuẩn ECMAScript yêu cầu tất cả các JavaScript engine phải thông dịch mã nguồn theo cùng một cách. Nhưng cách viết của đặc tả đôi khi rất khó hiểu, dẫn đến khi triển khai trong các engine sẽ có sai khác, kết quả là cùng một chương trình JavaScript nhưng sẽ cho ra kết quả khác nhau trên mỗi trình duyệt. JavaScript thường xuyên bổ sung các tính năng không có trong đặc tả của ECMAScript, ví dụ hàm alert().

Nhóm chịu trách nhiệm duy trì bộ đặc tả ECMAScript được gọi là Ủy ban kỹ thuật 39 (gọi tắt là TC-39). Nhóm này bao gồm đại diện của các nhà cung cấp trình duyệt phổ biến như Apple, Goolgle, Microsoft và Mozilla, cùng với các chuyên gia và đại diện của các công ty có quan tâm tới lĩnh vực phát triển ứng dụng web. Họ có các cuộc họp định kỳ để bàn về phương hướng phát triển của ngôn ngữ JavaScript.

Năm 1997, khi TC-39 thực hiện chuẩn hóa JavaScript, họ đã đặt tên là cho đặc tả này là ECMAScript phiên bản 1. Một năm sau đó, phiên bản 2 ra đời, nhưng không có nhiều thay đổi. Năm 1999, phiên bản 3 ra đời với nhiều tính năng mới.

Quá trình tạo ra phiên bản ECMAScript 4 đã gặp nhiều bế tắc do những bất đồng trong ủy ban TC-39 về hướng đi của ngôn ngữ. Một số thành viên cho rằng ngôn ngữ cần có thay đổi lớn để trở nên mạnh mẽ hơn, trong khi những thành viên khác lại nghĩ rằng nó chỉ cần những thay đổi nhỏ. Nhiều tính năng mới được đề xuất, nhưng thường được cho là quá tham vọng hoặc quá khó để triển khai trong trình duyệt. Sau nhiều năm bế tắc, cuối cùng phiên bản 4 đã bị hủy bỏ, nhóm làm việc đã bỏ qua phiên bản này và tập trung vào phát triển phiên bản 5. Họ đồng ý là bản đặc tả cần tinh gọn hơn, có thể triển khai được, và cuối cùng nó cũng được công bố vào 12/2009. ECMAScript 5 (viết tắt ES5) có thêm nhiều tính năng mới, nhưng vẫn ít tham vọng hơn nhiều so với phiên bản 4. Dù vậy, cũng phải mất một thời gian dài thì các JavaScript engine của trình duyệt mới hỗ trợ hết các tính năng này.

Sau khi ES5 được phát hành, ủy ban TC-39 đã đưa ra phương pháp làm việc mới, gọi là “Harmony”. Ý tưởng của Harmony là sẽ phác thảo tất cả các tính năng mong muốn cho các phiên bản JavaScript kế tiếp. Phải mất đến 6 năm để đưa hầu hết các tính năng này vào ES6, thậm chí có những tính năng đến ES7 hoặc các phiên bản sau mới được đưa vào.

Vào 2015, TC-39 đã quyết định áp dụng cách tiếp cận mới là sẽ xuất bản mỗi năm một bản đặc tả kỹ thuật, và tên của phiên bản sẽ là năm tương ứng. Như vậy các tính năng mới được phê duyệt năm nào thì sẽ đưa vào đặc tả của năm đó. Kết quả là phiên bản ECMAScript 6 được đổi tên thành ECMAScript 2015, nó được xuất bản vào 6/2015 với nhiều tính năng mới. Theo kế hoạch, các bản đặc tả sẽ được xuất bản vào tháng 6 hàng năm, như vậy các tính năng mới sẽ được thêm vào một cách đều đặn, thay vì thêm vào bất thường theo chu kỳ 5 năm hoặc nhiều hơn. Chỉ có ES2015 mới được thêm nhiều tính năng mới, phiên bản ES2016 chỉ được bổ sung thêm 2 tính năng mới so với phiên bản trước.

Trong sách này, chúng ta sẽ tìm hiểu và thực hành trên bản ES2015 hay ES6. Đồng thời cũng có các chú thích kèm theo, cho biết tính năng đó được thêm vào từ phiên bản nào.

Chúng tôi cũng giả định là bạn đang sử dụng trình duyệt web mới nhất (cố gắng cập nhật trình duyệt của bạn lên phiên bản mới nhất).

----

Thành viên nhóm dịch: nvteo, Triệu Quang Học, Võ Lâm Chí Vĩnh. [tham gia nhóm dịch]

-----

Cập nhật: 1/2/2024