hehe...viết nhảm hoài...hôm nay đổi tông viết bài mang tính chất đóng góp vậy ....ngoài ra bài viết còn mang tính chất mở ...tức là hoan nghênh thắc mắc, ý kiến và tranh luận mang tính xây dựng và học hỏi...
So với các môn khoa học tự nhiên đàn anh của mình ( Toán học, vật lý học, hoá học v.v..) thì ngành khoa học vi tính (Computer Science) là một ngành học khá trẻ, nhưng không kém phần lí thú và thu hút những bộ óc đam mê tìm tòi. Một trong những đề tài quan trọng mà ngành học này bao trùm đó là: Lập Trình. Vậy lập trình là gì?
1.Lập trình là gì?
Trước khi trả lời câu hỏi này chúng ta hãy làm rỏ một số khái niệm.
a.Program: chương trình
b.Programming hay coding: viết chương trình ( lập trình)
c.Programmer: người viết chương trình( lập trình viên)
Chúng ta bắt đầu từ "Chương trình". Một "Chương trình" không gì khác hơn là một chuỗi các bước (cần được thực hiện theo thứ tự để hoàn thành mộ vấn đề) được viết bằng một thứ ngôn ngữ nào đó. "Chương trình" ở khắp mọi nơi xung quanh chúng ta. Hằng ngày khi bước ra khỏi nhà để đi làm hay đi học, chúng ta thực hiện một chương trình. Ví dụ: V muốn đến chổ làm nằm trên con đường C, anh ấy phải đi qua đường A, rồi quẹo vào đường B, và cuối cùng quẹo vào đường C. Một ví dụ rỏ ràng hơn là một công thức nấu ăn, để thành công nấu được món ăn thì chúng ta phải thực hiện các bước theo thứ tự được ghi trên tờ giấy có công thức nấu ăn( rửa thịt, băm tỏi ớt, ướp 15 phút v.v...). Một lần nữa chúng ta đang "chạy một chương trình". Nếu như công thức nấu ăn được viết bằng một ngôn ngữ mà chúng ta có thể hiểu được thì việc thực hiện các bước trong công thức là không thành vấn đề. Sau khi hiểu được "Chương trình" là gì thì việc định nghĩa "Lập trình" thất sự là không có gì khó khăn. Lập trình hay viết chương trình là hành động viết xuống những bước để giả quyết một vấn đề.
vd: chương trình để giải phương trình " 2x^2 + x -3 = 0"
1.Tìm delta
2.Ráp delta vào công thức để tìm nghiệm.
Và người viết chương trình không ai khác hơn là môt lập trình viên.
Bonus: "Lập trình là một nghệ thuật, và lập trình viên là một nghệ sĩ".
Bây giờ chúng ta áp dụng những lý thuyết trên vào thế giới vi tính. Để một cái máy tính thực hiện điều mình muốn thì chúng phải phải đưa cho nó một cái công thức chỉ nó một cách chính xác các bước, giúp nó thực hiện điều mà mình mong muốn. Nhưng có một vấn đề là, máy vi tính không hiểu tiếng người. Nó chỉ hiểu các dãy số nhị phân (0010011000) mà thôi. Và vì việc lập trình chỉ bằng : 0 và 1 là một việc thật sự khó khăn, chúng ta cần môt người thông dịch. Người thông dịch này sẽ có nhiệm vụ thông dịch môt công thức được viết bằng ngôn ngữ mà người này hiểu thành ngôn ngữ của máy vi tính. Người thông dịch đầu tiên mà bạn Vũ muốn nói đến là: "Assembler". Một Assembler có khả thông dịch "ngôn ngữ Assembly" thành ngôn ngữ máy vi tính. Ngôn ngữ Assembly khác nhau từ hệ thống này xang hệ thống khác, vd: ngôn ngữ Assembly cho hệ thống máy xài x86 processors khác với ngôn ngữ Assembly cho hệ thống máy xài Sparc processors.
So với các dãy nhị phân thì ngôn ngữ Assembly thật sự khá hơn rất nhiền. Trong ngôn ngữ Assembly chúng ta bắt gặp việc sự dụng tên cho các thuật toán và biến số. Nhưng một lần nữa, việc lập trình bằng ngôn ngữ Assembly thật sự rất là cực và mấy không khả quan. Chúng ta cấn một thức ngôn ngữ mà chúng ta có thể thoải mái học cũng như sử dụng, đó chính là ngôn ngữ cấp cao (high-level language). Môt số các ngôn ngữ lập trình cấp cao thông dụng hiện nay: C/C++, Java, Scheme, PHP, Perl v.v.....Những ngôn ngữ cấp cao này sẽ được biên dịch bằng "Compiler"(người thông dịch thứ 2) thành ngôn ngữ máy tính. Và các Compilers hoạt động hầu như độc lập với tất cả hệ thống, cho nên chúng ta không phải để ý đến sự khác nhau giữa các hệ thống.
Tóm tắt:
High-level languages ---(compiler)---> machine language.
Assembly languages--(assembler)--> machine language.
(to be continued --part II--Control structures)
So với các môn khoa học tự nhiên đàn anh của mình ( Toán học, vật lý học, hoá học v.v..) thì ngành khoa học vi tính (Computer Science) là một ngành học khá trẻ, nhưng không kém phần lí thú và thu hút những bộ óc đam mê tìm tòi. Một trong những đề tài quan trọng mà ngành học này bao trùm đó là: Lập Trình. Vậy lập trình là gì?
1.Lập trình là gì?
Trước khi trả lời câu hỏi này chúng ta hãy làm rỏ một số khái niệm.
a.Program: chương trình
b.Programming hay coding: viết chương trình ( lập trình)
c.Programmer: người viết chương trình( lập trình viên)
Chúng ta bắt đầu từ "Chương trình". Một "Chương trình" không gì khác hơn là một chuỗi các bước (cần được thực hiện theo thứ tự để hoàn thành mộ vấn đề) được viết bằng một thứ ngôn ngữ nào đó. "Chương trình" ở khắp mọi nơi xung quanh chúng ta. Hằng ngày khi bước ra khỏi nhà để đi làm hay đi học, chúng ta thực hiện một chương trình. Ví dụ: V muốn đến chổ làm nằm trên con đường C, anh ấy phải đi qua đường A, rồi quẹo vào đường B, và cuối cùng quẹo vào đường C. Một ví dụ rỏ ràng hơn là một công thức nấu ăn, để thành công nấu được món ăn thì chúng ta phải thực hiện các bước theo thứ tự được ghi trên tờ giấy có công thức nấu ăn( rửa thịt, băm tỏi ớt, ướp 15 phút v.v...). Một lần nữa chúng ta đang "chạy một chương trình". Nếu như công thức nấu ăn được viết bằng một ngôn ngữ mà chúng ta có thể hiểu được thì việc thực hiện các bước trong công thức là không thành vấn đề. Sau khi hiểu được "Chương trình" là gì thì việc định nghĩa "Lập trình" thất sự là không có gì khó khăn. Lập trình hay viết chương trình là hành động viết xuống những bước để giả quyết một vấn đề.
vd: chương trình để giải phương trình " 2x^2 + x -3 = 0"
1.Tìm delta
2.Ráp delta vào công thức để tìm nghiệm.
Và người viết chương trình không ai khác hơn là môt lập trình viên.
Bonus: "Lập trình là một nghệ thuật, và lập trình viên là một nghệ sĩ".
Bây giờ chúng ta áp dụng những lý thuyết trên vào thế giới vi tính. Để một cái máy tính thực hiện điều mình muốn thì chúng phải phải đưa cho nó một cái công thức chỉ nó một cách chính xác các bước, giúp nó thực hiện điều mà mình mong muốn. Nhưng có một vấn đề là, máy vi tính không hiểu tiếng người. Nó chỉ hiểu các dãy số nhị phân (0010011000) mà thôi. Và vì việc lập trình chỉ bằng : 0 và 1 là một việc thật sự khó khăn, chúng ta cần môt người thông dịch. Người thông dịch này sẽ có nhiệm vụ thông dịch môt công thức được viết bằng ngôn ngữ mà người này hiểu thành ngôn ngữ của máy vi tính. Người thông dịch đầu tiên mà bạn Vũ muốn nói đến là: "Assembler". Một Assembler có khả thông dịch "ngôn ngữ Assembly" thành ngôn ngữ máy vi tính. Ngôn ngữ Assembly khác nhau từ hệ thống này xang hệ thống khác, vd: ngôn ngữ Assembly cho hệ thống máy xài x86 processors khác với ngôn ngữ Assembly cho hệ thống máy xài Sparc processors.
So với các dãy nhị phân thì ngôn ngữ Assembly thật sự khá hơn rất nhiền. Trong ngôn ngữ Assembly chúng ta bắt gặp việc sự dụng tên cho các thuật toán và biến số. Nhưng một lần nữa, việc lập trình bằng ngôn ngữ Assembly thật sự rất là cực và mấy không khả quan. Chúng ta cấn một thức ngôn ngữ mà chúng ta có thể thoải mái học cũng như sử dụng, đó chính là ngôn ngữ cấp cao (high-level language). Môt số các ngôn ngữ lập trình cấp cao thông dụng hiện nay: C/C++, Java, Scheme, PHP, Perl v.v.....Những ngôn ngữ cấp cao này sẽ được biên dịch bằng "Compiler"(người thông dịch thứ 2) thành ngôn ngữ máy tính. Và các Compilers hoạt động hầu như độc lập với tất cả hệ thống, cho nên chúng ta không phải để ý đến sự khác nhau giữa các hệ thống.
Tóm tắt:
High-level languages ---(compiler)---> machine language.
Assembly languages--(assembler)--> machine language.
(to be continued --part II--Control structures)