Với mình ngoài yếu tố phải "chạy đúng" thì source code tốt cần đảm bảo ít nhất những yếu tố sau:
Data Structures + Algorithms
.
Một computer program là tập hợp nhiều câu lệch để thực hiện một nhiệm vụ cụ thể. Thông thường thì computer program sẽ cần phải lưu trữ, truy xuất và tính toán trên tệp dữ liệu nào đó. Ví dụ với một "phần mềm quản lý sinh viên", thì chúng sẽ phải quản lý (tạo mới, sửa, xoá...) thông tin sinh viên.
Cụ thể chúng ta có thể chia nhỏ data structures
thành 2 phần là data
và structure
:
Data
là những dữ liệu được lưu trữ, truy xuất và tính toán bởi computer program. Structure
là cách thức tổ chức và sắp xếp dữ liệu trong máy tính theo một cấu trúc để giúp computer program có thể truy xuất, cập nhật một cách hiệu quả. Về mặt khái niệm ta có thể hiểu rằng:
Data structures là một tập hợp dữ liệu có cấu trúc.
Trong thực tế có rất nhiều data structures (Arrays, Stacks, Queues, Linked List...) và sẽ tuỳ thuộc vào yêu cầu bài toán mà chúng ta lựa chọn sử dụng data structure một cách hợp lý. Đến đây các bạn cũng không cần phải lo lắng làm sao để học hết được nhiều data structures thế. Bởi vì chỉ cần nắm được 6-8 common data structures cũng đủ để các bạn làm việc hiệu quả rồi.
Algorithm
.
Về mặt khái niệm ta có thể hiểu rằng:
Algorithm là một phương pháp để giải quyết một bài toán nào đó. Nó bao gồm nhiều câu lệch để thực thi trên data structure đầu vào (Input) và cho ra một data structure mong đợt (Output).
Ví dụ: Thuật toán tìm số lớn nhất.
Thực tế có rất rất nhiều algorithms được định nghĩa sẵn và chính các bạn cũng có thể tạo ra thuật toán của riêng mình được. Tuy nhiên bạn cũng không cần quá lo lắng, vì nếu không phải nghiên cứu chuyên sâu thì chúng ta chỉ cần nắm được một số loại thuật toán phổ biến: sắp xếp, tìm kiếm, merge là có thể làm việc hiệu quả.
Việc đánh giá hiệu quả của một thuật toán không thể dùng trực quan để phán đoán. Chúng ta sẽ phải dùng Big O notation để so sánh mức độ hiệu quả của nhiều thuật toán khi giải quyết cùng 1 vấn đề. Topic này chúng ta sẽ cùng tìm hiểu chi tiết trong một bài viết khác nhé. Tuy nhiên có thể tóm tắt rằng một thuận toán tốt sẽ phụ thuộc vào 2 yếu tố:
Chúng ta thường nói lập trình bằng ngôn ngữ nào không quan trọng, mà quan trọng là có "tư duy lập trình" tốt. Nếu tư duy tốt thì việc tiếp cận một ngôn ngữ mới thực sự đơn giản. Và đứng trên cương vị người phỏng vấn, thì bản thân mình cũng đã nhiều lần tạo điều kiện cho các bạn ứng viên có tư duy lập trình tốt mặc dù tại thời điểm đó các bạn chưa đáp ứng được yêu cầu tuyển dụng.
Một lần nữa khẳng định 2 yếu tố này cực kỳ quan trọng. Hi vọng bài viết này cung cấp đến cho các bạn một cái nhìn cơ bản về Data Structures và Algorithms. Và là bước đệm để các bạn tiếp tục tìm hiểu và thực hành với rất nhiều Data Structures và Algorithms sau này.