VNR Content
Pearl
Nếu bạn không phải là lập trình viên hay nhà thiết kế web, bạn có thể không để ý về những gì đằng sau các chương trình và trang web mà bạn sử dụng hàng ngày. Chúng một phần dựa trên các hướng dẫn rất phức tạp và dài cho máy tính bạn đang dùng để duyệt web. Văn bản lệnh này được gọi là mã nguồn. Trên cơ sở của một ngôn ngữ lập trình cụ thể, lập trình viên đặt ra tất cả các quy tắc cho một ứng dụng máy tính thực thi. Nếu tác giả sơ sót để lỗi vi phạm các thông số kỹ thuật của ngôn ngữ lập trình thì chương trình sẽ không hoạt động bình thường, dẫn đến website sẽ không làm được gì hoặc sẽ bị lỗi.
Theo ngữ cảnh, “con người có thể đọc được” được hiểu là bản sao của thuật ngữ “máy có thể đọc được”. Trong khi máy tính chỉ hoạt động với các giá trị số, con người giao tiếp bằng lời nói. Vì vậy, cũng giống như ngoại ngữ, người ta phải học ít nhất một trong các ngôn ngữ lập trình khác nhau trước khi có thể lập trình...
Trình biên dịch Compiler: Loại ứng dụng này dịch (biên dịch) mã nguồn thành mã mà tiến trình hiểu và có thể thực thi. Mã máy này được lưu dưới dạng tệp thực thi executable file.
Trình thông dịch Interpreter; Trình thông dịch dịch dòng mã nguồn cho dòng và thực thi trực tiếp. Quá trình dịch nhanh hơn nhiều so với trình biên dịch nhưng quá trình thực thi chậm hơn và cần một lượng lớn bộ nhớ.
Tuy nhiên, bạn cũng không được lựa chọn: mỗi ngôn ngữ lập trình xác định xem trình biên dịch hay trình thông dịch được sử dụng kết hợp với nó. Ngày nay, một giải pháp trung gian đang được sử dụng ngày càng thường xuyên - Biên dịch đúng lúc (JIT). Kiểu dịch này cố gắng kết hợp các ưu điểm của cả hai biến thể (phân tích nhanh và thực thi nhanh chóng) được sử dụng trong các trình duyệt, chẳng hạn, để xử lý hiệu quả hơn JavaScript, PHP hoặc Java.
Lệnh - Commands: Các lệnh là quy tắc cơ sở cho tất cả các ứng dụng. Ở đây, lập trình viên nói rõ cho chương trình tương lai của họ những gì cần phải làm. Ví dụ, các lệnh như vậy có thể kích hoạt các phép tính nhất định hoặc hiển thị một văn bản.
Biến - Variables: Biến là những chỗ trống có thể được điền đầy đủ thông tin. Chúng được tham chiếu trong mã nguồn lặp đi lặp lại với một tên được chỉ định.
So sánh - Comparisons: Cấu trúc của hầu hết các chương trình được xây dựng bằng các truy vấn hoạt động trên lược đồ if-then, tức là nguyên tắc logic mệnh đề nếu-thì. Nếu một giá trị chân lý cụ thể được nhập, thì một giải pháp sẽ được kích hoạt thay vì một giải pháp khác.
Vòng lặp - Loop: Các truy vấn cũng có thể là nền tảng cho các vòng lặp trong mã nguồn. Một lệnh được lặp lại cho đến khi đạt đến một giá trị nhất định. Khi chương trình kết thúc vòng lặp và chạy phần còn lại của đoạn mã.
Nhận xét - Comments: Trong tất cả các ngôn ngữ lập trình phổ biến, bạn có thể nhận xét về các dòng trong mã. Điều này giúp bạn có thể viết văn bản trong mã nguồn mà chương trình không tính đến. Ví dụ: nhận xét được nhập vào mã nguồn để bạn hoặc nhà phát triển khác có thể tiếp tục hiểu các phần của mã trong tương lai.
Với việc tạo mã nguồn, luôn có một vấn đề cần giải quyết. Các nhà phát triển viết chương trình để cung cấp các giải pháp. Tuy nhiên, cách để làm điều đó không được đặt trong khuôn khổ. Khi hai lập trình viên đang giải quyết cùng một vấn đề, rất có thể xảy ra trường hợp hai mã nguồn kết quả hoàn toàn khác nhau - ngay cả khi chúng đang làm việc trong cùng một ngôn ngữ.
Mặc dù trong nhiều trường hợp không có một câu trả lời đúng, nhưng tất cả các công việc lập trình đều có một điểm chung - một mã nguồn tốt sẽ tránh các văn bản không cần thiết. Văn bản bổ sung làm cho vấn đề trở nên khó hiểu, chậm hơn và dễ xảy ra lỗi hơn. Mã nguồn đặc biệt khó hiểu, ngay cả các chuyên gia cũng không thể đọc được, được gọi là mã spaghetti vì cấu trúc có thể rối như mì ống lộn xộn trên đĩa.
Tạo mã nguồn
Để viết mã nguồn, tất cả những gì bạn thực sự cần là một trình soạn thảo văn bản đơn giản - như Notepad trên Windows hoặc TextEdit trên Mac. Mã nguồn có thể được lưu dưới dạng văn bản thuần túy (ví dụ: trong mã hóa ASCII hoặc với mã hóa UTF-8) với tên tệp chính xác kết thúc cho ngôn ngữ lập trình. Vì vậy, nếu bạn tìm thấy một tệp có đuôi “.cpp” trên ổ cứng, thì đó thực sự là một tệp văn bản, có thể chứa mã bằng ngôn ngữ lập trình C ++.
Làm nổi bật cú pháp - Syntax highlighting: Mọi ngôn ngữ lập trình đều sử dụng cú pháp riêng. Trong nhiều trình soạn thảo văn bản, trước tiên bạn chọn ngôn ngữ lập trình muốn tạo mã nguồn và sau đó chương trình sẽ tự động đánh dấu các phần tử quan trọng. Các dấu thụt lề làm rõ cấu trúc của mã nguồn cũng do chương trình tự tạo ra.
Tự động điền - Autocomplete: Nhiều trình soạn thảo văn bản dành cho người lập trình biết các lệnh tương ứng của ngôn ngữ lập trình, tự động hoàn thành chúng và tự đóng các dấu ngoặc đơn đang mở.
Đánh dấu ngoặc - Bracket highlighting: Ngôn ngữ lập trình sử dụng dấu ngoặc để nhóm các phần tử lại với nhau. Để theo dõi các tài liệu mã lớn, một số trình soạn thảo văn bản đánh dấu dấu ngoặc vuông mà bạn hiện đang làm việc.
Gấp mã - Code folding: Mã nguồn được xây dựng theo thứ bậc, trong hầu hết các trường hợp, thông qua các dấu ngoặc đơn. Để có cái nhìn tổng quan hơn trong quá trình lập trình, một số trình soạn thảo văn bản cho phép bạn thu gọn mã nguồn nằm ở các cấp độ sâu hơn, ẩn các phần của mã hiện không có liên quan.
Tích hợp trình biên dịch - Compiler integration: Một số trình soạn thảo văn bản có thể được nâng cấp bằng cách sử dụng các plugin có trình biên dịch. Điều này giúp bạn có thể kiểm tra trực tiếp chương trình vừa được viết.
Chỉnh sửa nhiều dòng - Multiline editing: Mã nguồn được viết bằng tay có thể là một nỗ lực rất công phu. Vì lý do này, các nhà phát triển thích khi họ có thể thực hiện nhiều bước nhất có thể cùng một lúc. Chỉnh sửa nhiều dòng cho phép họ thực hiện các thay đổi giống hệt nhau đối với nhiều phần của tài liệu, tiết kiệm thời gian.
Ngay cả khi bạn không phải là nhà thiết kế web, thì việc kiểm tra mã nguồn của một trang trên internet chẳng hạn, để phát hiện các phần tử bị lỗi cũng có thể là một việc làm cần thiết. Tất cả các trình duyệt phổ biến đều cung cấp cho bạn nhiều khả năng khác nhau để xem mã nguồn của một trang web.
Một tùy chọn để hiển thị mã nguồn của trang web là lưu nó dưới dạng tệp HTML. Bằng cách nhấp chuột phải hoặc truy cập menu, bạn có thể dễ dàng tải xuống trang. Điều quan trọng là bạn phải chọn "Chỉ HTML" làm loại tệp (nếu bạn lưu toàn bộ trang web, tệp sẽ được hiển thị như xuất hiện trong trình duyệt - bao gồm tất cả hình ảnh và không có thẻ HTML). Sau đó, bạn có thể mở tệp bằng trình soạn thảo văn bản. Tuy nhiên, các trình soạn thảo đơn giản đi kèm với hệ điều hành của bạn rất có thể sẽ trình bày mã theo một cách rất khó hiểu. Với trình soạn thảo văn bản có nhiều chức năng hơn, bạn có thể hiển thị mã nguồn ở dạng dễ đọc hơn.
Ngay cả khi không lưu trang, bạn vẫn có thể xem mã nguồn của một trang web. Các trình duyệt hiện đại có sẵn hai phương pháp - chỉ cần hiển thị mã HTML của toàn bộ trang web hoặc hiển thị một công cụ phân tích để giúp bạn kiểm tra mã. Tùy chọn đầu tiên không khác nhiều so với bản trình bày của tệp đã tải xuống. Nó mở ra một tab mới hoặc một trang mới hiển thị mã nguồn với việc đánh số dòng có cấu trúc.
Tùy chọn thứ hai thú vị hơn và cung cấp nhiều chức năng hơn: công cụ phân tích có thể được tìm thấy trong menu ngữ cảnh bên dưới “Kiểm tra” (Chrome) hoặc “Kiểm tra phần tử” (Internet Explorer & Firefox). Thao tác này sẽ mở ra một khu vực trong cửa sổ. Tại đây, bạn có thể hiển thị mã nguồn (ngoài các chức năng khác). Sự khác biệt giữa tùy chọn này và tùy chọn đầu tiên là trong công cụ dành cho nhà phát triển này, bạn có thể chọn trực tiếp các phần tử tương ứng trên trang web bằng cách di chuyển con trỏ chuột qua mã nguồn. Điều này có nghĩa là công cụ đang hiển thị cho bạn phần nào bị ảnh hưởng bởi một dòng mã. Các chuyên gia thiết kế web thường áp dụng cách này để kiểm tra việc trình bày các trang web của họ.
Bản quyền mã nguồn
Rất nhiều công việc và năng lượng sáng tạo tập trung ở một mã nguồn. Đây là lý do tại sao mã nguồn của một chương trình được bảo vệ bản quyền. Cũng giống như các quyền sở hữu trí tuệ khác, không được phép phân phối mã của bên thứ ba mà không được phép. Điều này đặc biệt áp dụng cho phần mềm độc quyền.
Nhưng với các chương trình mã nguồn mở lại là một câu chuyện khác. Trong thế giới phát triển phần mềm, nguồn mở rất năng động, tự do hơn nhiều. Động lực cơ bản của văn hóa mở giữa các nhà phát triển là làm việc tập thể trong các dự án, từ đó phát triển và cải tiến phần mềm trong dài hạn. Trên GitHub, SourceForge hoặc các nền tảng tương đương khác, các nhà phát triển cung cấp mã nguồn của họ rộng rãi cho các lập trình viên khác. Tuy nhiên, các nhà phát triển các chương trình mã nguồn mở thường phải tuân thủ các điều kiện nhất định, chẳng hạn như đặt tên tác giả và giấy phép, nếu họ muốn sử dụng mã.
Mã nguồn website là gì?
Máy tính - bất kể đó là PC, điện thoại thông minh hiện đại hay máy tính khoa học - hoạt động trong hệ thống nhị phân: bật / tắt, tải / không tải, 1/0. Một chuỗi các bit hướng dẫn máy tính biết nó phải làm gì. Mặc dù các lệnh được tạo ra theo cách này trong những ngày đầu của công nghệ máy tính, nhưng từ lâu chúng ta đã chuyển sang viết các ứng dụng bằng ngôn ngữ lập trình mà con người có thể đọc được. Điều này thoạt nghe có vẻ kỳ lạ vì mã nguồn cũng có thể trông giống như những thứ vô nghĩa khó hiểu đối với một người bình thường.Các ngôn ngữ lập trình khác nhau
Có hàng trăm ngôn ngữ lập trình khác nhau. Không thể nói chắc chắn cái nào tốt hơn hay tệ hơn, vì nó phụ thuộc vào bối cảnh của dự án và ứng dụng mà mã nguồn được sử dụng. Một số ngôn ngữ lập trình phổ biến nhất là:- BASIC
- Java
- C
- C++
- Pascal
- Python
- PHP
- JavaScript
Trình biên dịch & thông dịch viên
Để máy tính có thể tiếp tục xử lý mã nguồn lập trình viên viết ra cần phải có một bản dịch giữa hai phần này - điều này xảy ra dưới dạng một chương trình bổ sung. Ứng dụng hỗ trợ này có thể ở dạng trình biên dịch hoặc thông dịch viên:Trình biên dịch Compiler: Loại ứng dụng này dịch (biên dịch) mã nguồn thành mã mà tiến trình hiểu và có thể thực thi. Mã máy này được lưu dưới dạng tệp thực thi executable file.
Trình thông dịch Interpreter; Trình thông dịch dịch dòng mã nguồn cho dòng và thực thi trực tiếp. Quá trình dịch nhanh hơn nhiều so với trình biên dịch nhưng quá trình thực thi chậm hơn và cần một lượng lớn bộ nhớ.
Tuy nhiên, bạn cũng không được lựa chọn: mỗi ngôn ngữ lập trình xác định xem trình biên dịch hay trình thông dịch được sử dụng kết hợp với nó. Ngày nay, một giải pháp trung gian đang được sử dụng ngày càng thường xuyên - Biên dịch đúng lúc (JIT). Kiểu dịch này cố gắng kết hợp các ưu điểm của cả hai biến thể (phân tích nhanh và thực thi nhanh chóng) được sử dụng trong các trình duyệt, chẳng hạn, để xử lý hiệu quả hơn JavaScript, PHP hoặc Java.
Ngôn ngữ đánh dấu
Nền tảng của một trang web cũng được gọi là mã nguồn. Tuy nhiên, đây không phải là trường hợp của một ngôn ngữ lập trình mà là ngôn ngữ đánh dấu HTML. Ngôn ngữ đánh dấu ( là một ngôn ngữ chú thích văn bản để máy tính có thể thao tác văn bản đó) xác định cách cấu trúc nội dung. Ví dụ: sử dụng HTML cho phép bạn xác định tiêu đề, đoạn văn hoặc thông tin cần làm nổi bật. Tài liệu HTML không phải là một chương trình trong và của chính nó nhưng có thể chứa một chương trình, chẳng hạn như ở dạng Mã JavaScript. Nguyên tắc tương tự cũng áp dụng cho các ngôn ngữ đánh dấu khác, chẳng hạn như XML.Cấu trúc của một văn bản nguồn
Tùy thuộc vào ngôn ngữ lập trình được đề cập, có giới hạn trong một số quy ước nhất định khi viết chương trình. Tuy nhiên, rất ít ngôn ngữ lập trình tự nhiên xuất hiện và hầu hết chúng được xây dựng dựa trên nhau. Vì lý do này, các phần tử nhất định được sử dụng trong nhiều mã chương trình khác nhau:Lệnh - Commands: Các lệnh là quy tắc cơ sở cho tất cả các ứng dụng. Ở đây, lập trình viên nói rõ cho chương trình tương lai của họ những gì cần phải làm. Ví dụ, các lệnh như vậy có thể kích hoạt các phép tính nhất định hoặc hiển thị một văn bản.
Biến - Variables: Biến là những chỗ trống có thể được điền đầy đủ thông tin. Chúng được tham chiếu trong mã nguồn lặp đi lặp lại với một tên được chỉ định.
So sánh - Comparisons: Cấu trúc của hầu hết các chương trình được xây dựng bằng các truy vấn hoạt động trên lược đồ if-then, tức là nguyên tắc logic mệnh đề nếu-thì. Nếu một giá trị chân lý cụ thể được nhập, thì một giải pháp sẽ được kích hoạt thay vì một giải pháp khác.
Vòng lặp - Loop: Các truy vấn cũng có thể là nền tảng cho các vòng lặp trong mã nguồn. Một lệnh được lặp lại cho đến khi đạt đến một giá trị nhất định. Khi chương trình kết thúc vòng lặp và chạy phần còn lại của đoạn mã.
Nhận xét - Comments: Trong tất cả các ngôn ngữ lập trình phổ biến, bạn có thể nhận xét về các dòng trong mã. Điều này giúp bạn có thể viết văn bản trong mã nguồn mà chương trình không tính đến. Ví dụ: nhận xét được nhập vào mã nguồn để bạn hoặc nhà phát triển khác có thể tiếp tục hiểu các phần của mã trong tương lai.
Với việc tạo mã nguồn, luôn có một vấn đề cần giải quyết. Các nhà phát triển viết chương trình để cung cấp các giải pháp. Tuy nhiên, cách để làm điều đó không được đặt trong khuôn khổ. Khi hai lập trình viên đang giải quyết cùng một vấn đề, rất có thể xảy ra trường hợp hai mã nguồn kết quả hoàn toàn khác nhau - ngay cả khi chúng đang làm việc trong cùng một ngôn ngữ.
Mặc dù trong nhiều trường hợp không có một câu trả lời đúng, nhưng tất cả các công việc lập trình đều có một điểm chung - một mã nguồn tốt sẽ tránh các văn bản không cần thiết. Văn bản bổ sung làm cho vấn đề trở nên khó hiểu, chậm hơn và dễ xảy ra lỗi hơn. Mã nguồn đặc biệt khó hiểu, ngay cả các chuyên gia cũng không thể đọc được, được gọi là mã spaghetti vì cấu trúc có thể rối như mì ống lộn xộn trên đĩa.
Tạo mã nguồn
Để viết mã nguồn, tất cả những gì bạn thực sự cần là một trình soạn thảo văn bản đơn giản - như Notepad trên Windows hoặc TextEdit trên Mac. Mã nguồn có thể được lưu dưới dạng văn bản thuần túy (ví dụ: trong mã hóa ASCII hoặc với mã hóa UTF-8) với tên tệp chính xác kết thúc cho ngôn ngữ lập trình. Vì vậy, nếu bạn tìm thấy một tệp có đuôi “.cpp” trên ổ cứng, thì đó thực sự là một tệp văn bản, có thể chứa mã bằng ngôn ngữ lập trình C ++.
Lưu ý: Phần mở rộng tên tệp là quy ước. Hậu tố, thường được phân tách với tên tệp đính kèm bằng một dấu chấm, được dùng để chỉ định dạng của tệp. Windows sử dụng phần cuối của tệp - nếu biết - để xác định chương trình mà tệp tương ứng sẽ được chạy. Các hệ điều hành khác dựa trên Unix (ví dụ: macOS) tư vấn nội dung của tệp để xác định định dạng.
Trình soạn thảo văn bản
Ngoài các chương trình tiêu chuẩn của hệ điều hành, còn có các trình soạn thảo văn bản nâng cao giúp đơn giản hóa công việc mã nguồn thông qua các chức năng khác nhau:Làm nổi bật cú pháp - Syntax highlighting: Mọi ngôn ngữ lập trình đều sử dụng cú pháp riêng. Trong nhiều trình soạn thảo văn bản, trước tiên bạn chọn ngôn ngữ lập trình muốn tạo mã nguồn và sau đó chương trình sẽ tự động đánh dấu các phần tử quan trọng. Các dấu thụt lề làm rõ cấu trúc của mã nguồn cũng do chương trình tự tạo ra.
Tự động điền - Autocomplete: Nhiều trình soạn thảo văn bản dành cho người lập trình biết các lệnh tương ứng của ngôn ngữ lập trình, tự động hoàn thành chúng và tự đóng các dấu ngoặc đơn đang mở.
Đánh dấu ngoặc - Bracket highlighting: Ngôn ngữ lập trình sử dụng dấu ngoặc để nhóm các phần tử lại với nhau. Để theo dõi các tài liệu mã lớn, một số trình soạn thảo văn bản đánh dấu dấu ngoặc vuông mà bạn hiện đang làm việc.
Gấp mã - Code folding: Mã nguồn được xây dựng theo thứ bậc, trong hầu hết các trường hợp, thông qua các dấu ngoặc đơn. Để có cái nhìn tổng quan hơn trong quá trình lập trình, một số trình soạn thảo văn bản cho phép bạn thu gọn mã nguồn nằm ở các cấp độ sâu hơn, ẩn các phần của mã hiện không có liên quan.
Tích hợp trình biên dịch - Compiler integration: Một số trình soạn thảo văn bản có thể được nâng cấp bằng cách sử dụng các plugin có trình biên dịch. Điều này giúp bạn có thể kiểm tra trực tiếp chương trình vừa được viết.
Chỉnh sửa nhiều dòng - Multiline editing: Mã nguồn được viết bằng tay có thể là một nỗ lực rất công phu. Vì lý do này, các nhà phát triển thích khi họ có thể thực hiện nhiều bước nhất có thể cùng một lúc. Chỉnh sửa nhiều dòng cho phép họ thực hiện các thay đổi giống hệt nhau đối với nhiều phần của tài liệu, tiết kiệm thời gian.
Mã nguồn trang web
Ngay cả cấu trúc cơ bản của một trang web cũng thường được gọi là mã nguồn, mặc dù nó là một tài liệu chứ không phải một chương trình. Các trang web được viết bằng ngôn ngữ đánh dấu HTML. Mặc dù vậy, nói chung, không có gì lạ khi các trang web cũng chứa các phần tử được viết bằng ngôn ngữ lập trình như JavaScript. Điểm chung của cả hai ngôn ngữ là chúng có thể được viết trong một trình soạn thảo văn bản đơn giản.Ngay cả khi bạn không phải là nhà thiết kế web, thì việc kiểm tra mã nguồn của một trang trên internet chẳng hạn, để phát hiện các phần tử bị lỗi cũng có thể là một việc làm cần thiết. Tất cả các trình duyệt phổ biến đều cung cấp cho bạn nhiều khả năng khác nhau để xem mã nguồn của một trang web.
Một tùy chọn để hiển thị mã nguồn của trang web là lưu nó dưới dạng tệp HTML. Bằng cách nhấp chuột phải hoặc truy cập menu, bạn có thể dễ dàng tải xuống trang. Điều quan trọng là bạn phải chọn "Chỉ HTML" làm loại tệp (nếu bạn lưu toàn bộ trang web, tệp sẽ được hiển thị như xuất hiện trong trình duyệt - bao gồm tất cả hình ảnh và không có thẻ HTML). Sau đó, bạn có thể mở tệp bằng trình soạn thảo văn bản. Tuy nhiên, các trình soạn thảo đơn giản đi kèm với hệ điều hành của bạn rất có thể sẽ trình bày mã theo một cách rất khó hiểu. Với trình soạn thảo văn bản có nhiều chức năng hơn, bạn có thể hiển thị mã nguồn ở dạng dễ đọc hơn.
Tùy chọn thứ hai thú vị hơn và cung cấp nhiều chức năng hơn: công cụ phân tích có thể được tìm thấy trong menu ngữ cảnh bên dưới “Kiểm tra” (Chrome) hoặc “Kiểm tra phần tử” (Internet Explorer & Firefox). Thao tác này sẽ mở ra một khu vực trong cửa sổ. Tại đây, bạn có thể hiển thị mã nguồn (ngoài các chức năng khác). Sự khác biệt giữa tùy chọn này và tùy chọn đầu tiên là trong công cụ dành cho nhà phát triển này, bạn có thể chọn trực tiếp các phần tử tương ứng trên trang web bằng cách di chuyển con trỏ chuột qua mã nguồn. Điều này có nghĩa là công cụ đang hiển thị cho bạn phần nào bị ảnh hưởng bởi một dòng mã. Các chuyên gia thiết kế web thường áp dụng cách này để kiểm tra việc trình bày các trang web của họ.
Rất nhiều công việc và năng lượng sáng tạo tập trung ở một mã nguồn. Đây là lý do tại sao mã nguồn của một chương trình được bảo vệ bản quyền. Cũng giống như các quyền sở hữu trí tuệ khác, không được phép phân phối mã của bên thứ ba mà không được phép. Điều này đặc biệt áp dụng cho phần mềm độc quyền.
Nhưng với các chương trình mã nguồn mở lại là một câu chuyện khác. Trong thế giới phát triển phần mềm, nguồn mở rất năng động, tự do hơn nhiều. Động lực cơ bản của văn hóa mở giữa các nhà phát triển là làm việc tập thể trong các dự án, từ đó phát triển và cải tiến phần mềm trong dài hạn. Trên GitHub, SourceForge hoặc các nền tảng tương đương khác, các nhà phát triển cung cấp mã nguồn của họ rộng rãi cho các lập trình viên khác. Tuy nhiên, các nhà phát triển các chương trình mã nguồn mở thường phải tuân thủ các điều kiện nhất định, chẳng hạn như đặt tên tác giả và giấy phép, nếu họ muốn sử dụng mã.