Màn hình máy tính hiển thị đoạn code "Hello World" trong một ngôn ngữ lập trình.
Máy Tính

“Hello World” Là Gì? Lịch Sử Và Tầm Quan Trọng Với Mọi Lập Trình Viên

Bạn đã bao giờ nghe đến “Hello World” chưa? Đoạn mã mẫu này được xem là một nghi thức nhập môn đối với bất kỳ lập trình viên nào, nhưng nó có ý nghĩa gì và tại sao chúng ta lại sử dụng nó? Hãy cùng tincongngheso.com khám phá lịch sử của chương trình kinh điển này và tìm hiểu cách nó tiết lộ những đặc điểm độc đáo của các ngôn ngữ lập trình khác nhau.

“Hello World” Là Gì? Định Nghĩa Và Nguồn Gốc

Dù bạn là người mới bắt đầu học lập trình hay đã thành thạo nhiều ngôn ngữ khác, một chương trình mẫu đơn giản luôn là điểm khởi đầu hữu ích. Việc chạy thành công bất kỳ chương trình nào cũng là một bước tiến lớn, vì vậy điều khôn ngoan là bắt đầu với một ví dụ đã được kiểm chứng. Và ví dụ đó chính là “Hello World”.

“Hello World” là một đoạn mã gần như đơn giản nhất bạn có thể hình dung. Nó chỉ có một yêu cầu rất cơ bản:

  • In dòng chữ “hello, world” ra màn hình.

Và đó là tất cả! Tất nhiên, văn bản chính xác—bao gồm cả dấu câu—có thể khác nhau và không quá quan trọng. “Hello, world” chỉ đơn giản là một thông điệp vui vẻ, tích cực để bạn nhìn thấy khi chạy chương trình đầu tiên của mình.

Màn hình máy tính hiển thị đoạn code "Hello World" trong một ngôn ngữ lập trình.Màn hình máy tính hiển thị đoạn code "Hello World" trong một ngôn ngữ lập trình.

Thật khó để xác định chính xác nguồn gốc của “Hello World”, nhưng ví dụ cụ thể sớm nhất mà chúng ta có được là từ cuốn sách ‘A Tutorial Introduction to the Language B’ (1972):

main( ) {
    extrn a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
 a 'hell';
b 'o, w';
c 'orld';

B là một ngôn ngữ cổ xưa, tiền thân của C. “Hello World” thực tế có thể có từ sớm hơn, vào năm 1967 trong một ngôn ngữ có tên BCPL, nhưng không có bằng chứng chắc chắn nào về điều này.

Khái niệm này thực sự trở nên nổi tiếng với sự xuất bản của cuốn sách kinh điển về khoa học máy tính The C Programming Language vào năm 1978. Cuốn sách này, bằng cách đưa chương trình “Hello World” làm ví dụ mã nguồn đầu tiên, đã thiết lập một truyền thống kéo dài cho đến tận ngày nay.

Tại Sao “Hello World” Lại Hữu Ích Đến Vậy?

“Hello World” có hai mục đích chính. Thứ nhất, nó đóng vai trò là một ví dụ chuẩn hữu ích để so sánh các ngôn ngữ lập trình. Bởi vì mục đích của chương trình này rất đơn giản và dễ hiểu, nó có thể dạy cho chúng ta rất nhiều về cú pháp của một ngôn ngữ. Một lập trình viên có kinh nghiệm có thể nhìn vào chương trình “Hello World”, được viết bằng một ngôn ngữ mà họ hoàn toàn không biết, và bắt đầu tìm hiểu về nó.

Nhưng “Hello World” cũng có các ứng dụng thực tế. Chạy thành công chương trình mẫu này là một bước tiến lớn để viết bất kỳ chương trình nào khác trong cùng ngôn ngữ. Nó đòi hỏi một trình biên dịch (compiler) hoặc trình thông dịch (interpreter) phù hợp để chạy chương trình. Nó sẽ xác nhận rằng hệ điều hành cơ bản xử lý đầu ra của nó một cách chính xác. Và nó có thể giúp bạn cấu hình môi trường phát triển tích hợp (IDE) để làm việc với ngôn ngữ đó.

“Hello World” Trong Các Ngôn Ngữ Lập Trình Phổ Biến

Bạn có thể học hỏi rất nhiều về một ngôn ngữ thông qua cách triển khai “Hello World” của nó. Vì mỗi chương trình này đều phải hoạt động chính xác như nhau, bạn cũng có thể sử dụng một bộ tệp nguồn hello.* để kiểm tra môi trường phát triển của mình.

“Hello World” Trong Ngôn Ngữ C

Như đã đề cập, ví dụ đáng tin cậy đầu tiên về “Hello World” mà chúng ta biết là trong C, có từ năm 1978:

main() {
    printf("hello, worldn");
}

Mười năm sau, phiên bản thứ hai của cuốn sách đã cập nhật ví dụ này để tương thích với ANSI C:

#include <stdio.h>

main() {
    printf("hello, worldn");
}

Tuy nhiên, ngày nay, ngay cả phiên bản này cũng cần được cập nhật; một trình biên dịch C hiện đại sẽ báo lỗi khi bạn cố gắng biên dịch chương trình này:

Thông báo lỗi từ trình biên dịch gcc khi cố gắng biên dịch phiên bản Hello World cũ của C.Thông báo lỗi từ trình biên dịch gcc khi cố gắng biên dịch phiên bản Hello World cũ của C.

C99 nghiêm ngặt hơn ANSI C; nó yêu cầu cú pháp sau:

#include <stdio.h>

int main() {
    printf("hello, worldn");
}

Có ba phần chính trong phiên bản “Hello World” của C:

  • Một lệnh gọi đến hàm printf (“print formatted”), thực hiện công việc chính. Hàm này in một đối số chuỗi (văn bản bên trong dấu ngoặc kép) ra đầu ra tiêu chuẩn. Ký tự n ở cuối chuỗi đại diện cho ký tự xuống dòng mới.
  • Câu lệnh #include ở đầu tải một thư viện (stdio) cung cấp chức năng đầu ra (và đầu vào). Thư viện này chứa mã thực tế cho hàm printf. Một điểm đặc biệt của C là nó không chứa bất kỳ hàm dựng sẵn nào; bạn có thể tự viết hàm của mình, nhưng để gọi bất kỳ hàm nào khác, bạn sẽ cần một câu lệnh #include thích hợp.
  • Dòng printf nằm bên trong một hàm được gọi là “main.” Đối với C, đây là một hàm đặc biệt sẽ tự động chạy khi bạn thực thi chương trình đã biên dịch. Lưu ý rằng phiên bản C gần đây nhất yêu cầu bạn khai báo kiểu trả về “int” (số nguyên) cho main, ngay cả khi hàm của bạn không trả về giá trị nào.

Tuy nhiên, mã “Hello World” chỉ là một phần của câu đố. Nửa còn lại là chạy chương trình. Với một ngôn ngữ biên dịch như C, bạn cần chạy một chương trình để dịch mã nguồn của mình thành một tệp nhị phân có thể thực thi độc lập:

gcc hello.c

Nếu mọi việc suôn sẻ, trình biên dịch sẽ chạy ngầm và tạo một tệp thực thi trong thư mục hiện tại của bạn có tên a.out. Chạy chương trình đó (./a.out), và bạn sẽ thấy mã của mình hoạt động:

Kết quả chạy chương trình Hello World trong ngôn ngữ C trên terminal, hiển thị dòng chữ &quot;hello, world&quot;.Kết quả chạy chương trình Hello World trong ngôn ngữ C trên terminal, hiển thị dòng chữ "hello, world".

Đây chính xác là cách một chương trình “Hello World” đúng phải hoạt động, in văn bản ra terminal của bạn, với một dòng mới ở cuối, sau đó kết thúc.

“Hello World” Trong Ngôn Ngữ Go

Go là một ngôn ngữ tương đối hiện đại, được phát hành vào năm 2009 và được tạo ra bởi các kỹ sư của Google, bao gồm Ken Thompson, người đã phát minh ra ngôn ngữ B. Go có cú pháp đơn giản, rất giống với C:

package main

import "fmt"

func main() {
    fmt.Println("hello, world")
}

Bạn có thể chạy chương trình này bằng lệnh go run hello.go hoặc biên dịch một tệp thực thi bằng go compile hello.go và chạy nó bằng ./hello.

Hệ thống package của Go sẽ giúp bạn tổ chức mã của mình và tái sử dụng chức năng theo các nguyên tắc kỹ thuật vững chắc. Tuy nhiên, đối với một chương trình đơn giản như “Hello World”, bạn chỉ cần khai báo rằng nó thuộc về “package main” và đảm bảo bạn có một hàm main để hoạt động như điểm vào mặc định.

“Hello World” Trong Ngôn Ngữ Rust

Việc triển khai “Hello World” của Rust rất tối giản, bạn có thể nghĩ rằng nó không nói lên điều gì. Nhưng ngay cả đoạn mã đơn giản này cũng chứa một số sắc thái thú vị của ngôn ngữ.

fn main() {
    println!("hello, world");
}

Lệnh gọi đến println—trông rất giống một hàm—bao gồm một dấu chấm than sau tên của nó. Điều này có nghĩa là println thực sự là một macro, không phải một hàm; bạn phải gọi nó bằng cú pháp dấu chấm than.

Máy tính xách tay hiển thị logo ngôn ngữ lập trình Rust, minh họa môi trường phát triển code.Máy tính xách tay hiển thị logo ngôn ngữ lập trình Rust, minh họa môi trường phát triển code.

Giống như C, hàm main đóng vai trò là điểm vào cho chương trình độc lập này. Không giống như C—và hầu hết các ngôn ngữ khác—từ khóa của Rust để khai báo một hàm rất ngắn gọn: fn. Điều này nhất quán với phần lớn ngôn ngữ, vốn sử dụng các từ khóa ngắn như “pub,” “mut,” và “ref.”

Bạn có thể biên dịch chương trình này bằng rustc hello.rs, và chạy tệp thực thi được tạo bằng ./hello.

“Hello World” Trong Ngôn Ngữ Python

“Hello World” của Python nổi bật là một trong những chương trình tối giản nhất. Điều này phù hợp với danh tiếng của nó là một ngôn ngữ đơn giản, đặc biệt phù hợp cho người mới bắt đầu. Toàn bộ chương trình chỉ là:

print('hello, world')

Python là một ngôn ngữ thông dịch, vì vậy bạn có thể sử dụng lệnh python để chạy các chương trình Python trực tiếp. Lưu mã trên vào một tệp (ví dụ hello.py), chạy nó (python hello.py), và bạn sẽ thấy đầu ra quen thuộc.

Lưu ý rằng hàm print() của Python tự động thêm ký tự xuống dòng theo mặc định, vì vậy bạn không cần phải thêm n vào chuỗi của mình. Cũng cần lưu ý rằng, không giống như C, bạn có thể đặt một chuỗi văn bản Python trong dấu nháy đơn hoặc dấu nháy kép.

“Hello World” Trong Ngôn Ngữ Java

Java khá ngược lại với Python. Nó thường được gọi là một ngôn ngữ dài dòng, và chương trình “Hello World” của nó không làm thay đổi định kiến đó:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.print("hello, worldn");
    }
}

Trong Java, ngay cả một chương trình độc lập đơn giản cũng phải được đại diện bởi một lớp (class), và hàm tương đương với main() của C trong Java có ba từ khóa bổ trợ:

  • public là một chỉ định truy cập cho biết hàm có thể truy cập được trong toàn bộ chương trình.
  • static là một từ khóa cho biết đây là một phương thức của lớp, không phải một phương thức của đối tượng.
  • void là một kiểu trả về cho biết hàm không trả về giá trị nào.

Bạn không cần phải biết tất cả các chi tiết đằng sau ba từ khóa này ngay lập tức, nhưng bạn sẽ cần nhớ chúng để viết bất kỳ chương trình Java nào.

Thậm chí, việc gọi hàm in của Java cũng tốn khá nhiều ký tự. Chuỗi “System.out.” trước “print” xác định luồng đầu ra tiêu chuẩn, điều mà các ngôn ngữ khác thường sử dụng theo mặc định.

Bạn sẽ cần biết một điểm đặc biệt cuối cùng của Java trước khi có thể chạy “Hello World”: tên tệp. Do cách tiếp cận ưu tiên lớp của Java, tệp bạn lưu mã của mình cần được đặt tên theo lớp công khai của nó: HelloWorld.java. Sau khi bạn đã tạo tệp đó, hãy chạy javac HelloWorld.java theo sau là java HelloWorld để yêu cầu trình thông dịch Java chạy chương trình của bạn:

Chương trình Hello World trong Java được thực thi qua trình thông dịch, hiển thị kết quả trên terminal.Chương trình Hello World trong Java được thực thi qua trình thông dịch, hiển thị kết quả trên terminal.

Mỗi ngôn ngữ lập trình đều độc đáo, nhưng ngay cả giữa các ngôn ngữ đa dạng như trên, bạn vẫn có thể nhận ra những điểm tương đồng. Quan trọng nhất, một khi bạn có thể chạy “Hello World”, bạn có thể tập trung vào các đặc điểm cụ thể của ngôn ngữ bạn đang học. Hãy bắt đầu hành trình lập trình của bạn với “Hello World” và khám phá thế giới công nghệ rộng lớn!

Related posts

CotEditor: Trình Soạn Thảo Văn Bản Thuần Túy Mạnh Mẽ Dành Cho macOS

Administrator

Tối ưu hóa Windows với AutoHotkey: Hướng dẫn toàn diện và các Script nâng cao năng suất

Administrator

10 Phím Tắt KDE Plasma Cực Kỳ Hữu Ích: Tăng Năng Suất Làm Việc Trên Linux

Administrator