Tại sao khoảng cách trong Python lại quan trọng?
Python nổi tiếng trong số các ngôn ngữ lập trình vì cú pháp khá độc đáo của nó. thay vì được phân định bằng dấu ngoặc nhọn hoặc từ khóa “bắt đầu/kết thúc”, các khối được phân cách bằng dấu thụt đầu dòng. Thụt lề một dòng giống như thêm một dấu ngoặc nhọn mở và khử răng cưa giống như một dấu ngoặc nhọn đóng. Khi mọi người chỉ trích Python, đó thường là lời phàn nàn đầu tiên. "tại sao tôi muốn sử dụng một ngôn ngữ yêu cầu tôi phải thụt lề mã?" . Tôi thường không muốn đi sâu vào các lập luận cú pháp, bởi vì tôi thấy chúng rất hời hợt — thảo luận về ngữ nghĩa của một ngôn ngữ quan trọng hơn nhiều so với cú pháp của nó. Nhưng đây là một lập luận phổ biến giữa những người gièm pha Python, tôi muốn giải quyết nó. Python đã đúng, và nó gần như là ngôn ngữ duy nhất Show Tôi nghĩ vấn đề là các lập trình viên thích coi ngôn ngữ như một công cụ và các công cụ đó phải linh hoạt nhất có thể. Tôi nghĩ nói chung, đó là một nguyên tắc tốt cho các ngôn ngữ lập trình không thực thi các quy ước. Các ngôn ngữ có xu hướng làm phiền những người không đăng ký cùng một quy ước. Ví dụ: ngôn ngữ lập trình Go thực thi dấu “” — mọi dấu ngoặc nhọn mở phải xuất hiện trên cùng một dòng với tiêu đề hàm hoặc câu lệnh điều khiển. Điều này làm tôi khó chịu vì đó không phải là quy ước ưa thích của tôi. Nhưng quy ước thụt đầu dòng phổ biến đến mức việc không thụt lề trong mọi trường hợp được coi là thực hành lập trình tồi. (Có sự bất đồng về tab so với khoảng trắng, số lượng khoảng trắng, v.v., nhưng tất cả chúng ta đều đồng ý rằng thụt lề là tốt. ) Không có một tình huống nào ở bất kỳ quốc gia nào, trong bất kỳ ngôn ngữ lập trình nào hoặc ở bất kỳ cấp độ kỹ năng nào, trong đó việc không thụt lề mã của bạn theo cách Python yêu cầu là có thể chấp nhận được. Do đó, về mặt kỹ thuật, việc có một ngôn ngữ không nhạy cảm với khoảng trắng là điều cần thiết. Bất kỳ ngôn ngữ nào không nhạy cảm với khoảng trắng đều yêu cầu (theo quy ước chung) rằng các lập trình viên truyền đạt phạm vi của mã theo hai cách riêng biệt cho mỗi dòng mã. niềng răng (hoặc bắt đầu/kết thúc) và thụt đầu dòng. Bạn được yêu cầu đảm bảo rằng hai điều này khớp với nhau và nếu không, thì bạn có một chương trình không hoạt động theo cách nó hoạt động và trình biên dịch sẽ không cho bạn biết Có hai giải pháp cho vấn đề này. 1. Làm cho trình biên dịch cho bạn biết. Buộc lập trình viên thụt lề và đặt dấu ngoặc nhọn, đồng thời yêu cầu trình biên dịch kiểm tra phần thụt lề và đưa ra cảnh báo hoặc lỗi nếu chúng không khớp. Bây giờ bạn đã giải quyết được vấn đề vô tình làm sai, nhưng bây giờ yêu cầu dấu ngoặc nhọn để làm gì? . Chúng tôi cũng có thể đi với 2. loại bỏ các dấu ngoặc nhọn và chỉ cần trình biên dịch xác định các khối dựa trên thụt đầu dòng Khi bạn thực sự phân tích nó, độ nhạy khoảng trắng của Python thực sự là lựa chọn hợp lý duy nhất cho ngôn ngữ lập trình, bởi vì bạn chỉ truyền đạt ý định của mình theo một cách và ý định đó được con người và máy tính đọc theo cùng một cách. Lý do duy nhất để sử dụng ngôn ngữ không phân biệt khoảng trắng là đó là cách chúng tôi luôn làm mọi việc và đó không bao giờ là lý do chính đáng. Đó là lý do tại sao ngôn ngữ lập trình của tôi, Mars, có quy tắc thụt đầu dòng giống như Python * * * Một điều thú vị sang một bên. có một quy tắc cú pháp liên quan trong Python có vẻ không hợp lý lắm. bạn được yêu cầu đặt dấu hai chấm ở cuối bất kỳ dòng nào trước thụt lề. Tôi chưa kiểm tra đầy đủ điều này, nhưng tôi khá chắc chắn rằng không có lý do kỹ thuật nào cho việc đó (trình phân tích cú pháp vẫn có thể hoạt động rõ ràng nếu không có dấu hai chấm đó) và dường như nó cũng không bổ sung nhiều vào khả năng đọc. Tôi cũng tuân theo quy tắc này một cách mù quáng ở Mars, bởi vì với tư cách là một lập trình viên Python, điều đó “cảm thấy đúng” đối với tôi. Nhưng có lẽ bỏ nó đi thì tốt hơn Chia sẻ cái nàyNhư thế nàyThích Đang tải. Có liên quan77 phản hồi cho “Tại sao quy tắc khoảng trắng của Python lại đúng”
|