Các phương pháp thư viện toán học trong Ngôn ngữ lập trình Go của Google


9

Tôi đã lập trình trên google Golang và đã rất thích nó do tính ngắn gọn của nó nhưng tôi thấy ngạc nhiên khi hầu hết tất cả các phương thức thư viện chuẩn Toán học của nó đều dành cho kiểu dấu phẩy động. Có bất kỳ lý do cụ thể tại sao các phương thức này không tồn tại cho ints?

Câu trả lời:


9

Câu trả lời ngắn gọn là Go là sự kế thừa của C và thư viện toán học tiêu chuẩn của C cũng được định nghĩa gần như độc quyền về các giá trị dấu phẩy động chính xác đơn và kép.

Câu trả lời dài hơn là trong một ngôn ngữ gõ tĩnh mà không đa hình hoặc quá tải chức năng, như Go (hoặc C), bạn cần giải quyết một loại cho một chức năng để lấy và trả về trước, và một khi bạn sẽ xử lý các loại cụ thể trong thư viện toán học của bạn, có nhiều thao tác thú vị hơn về số dấu phẩy động so với số nguyên. Để chọn một vài ví dụ

  • căn bậc hai hoặc bậc n của một số nguyên hoặc số dấu phẩy động thường không thể biểu diễn dưới dạng một số nguyên

  • rất ít giá trị thú vị của các hàm siêu việt được biểu diễn dưới dạng số nguyên

  • phân chia các giá trị dấu phẩy động đòi hỏi làm tròn ít hơn so với phân chia số nguyên

Lưu ý rằng điều này không quá khó khăn vì có vẻ như nếu các giá trị đầu vào của bạn là số nguyên - một giá trị tích phân có thể được chuyển đổi thành giá trị dấu phẩy động với một kiểu chữ đơn giản và chủ yếu là chính xác.

Vì vậy, đó là câu chuyện cho các ngôn ngữ như Go hoặc C. Các ngôn ngữ khác có các tùy chọn khác:

  • Một ngôn ngữ được gõ động có thể cung cấp các hàm thư viện toán học có hoặc trả về nhiều loại tùy thuộc vào những gì chúng được gọi với hoặc liệu giá trị trả về có thể biểu diễn dưới dạng một số nguyên hay không.

  • Một ngôn ngữ có chức năng nạp chồng có thể cung cấp nhiều phiên bản của cùng một chức năng, tùy thuộc vào loại bạn chuyển (đúng, đây là nhiều chức năng có cùng tên, khác với trường hợp được nhập động ở trên)

  • Một ngôn ngữ có tính đa hình kiểu (như ngôn ngữ hướng đối tượng có tính kế thừa) có thể định nghĩa "Số" siêu lớp với các lớp con cho cả số nguyên và giá trị dấu phẩy động, sau đó xác định các hàm toán học theo lớp Số này. Cách tiếp cận này có nhiều tính linh hoạt của cách tiếp cận ngôn ngữ động, trong khi vẫn giữ được nhiều sự nghiêm ngặt của cách tiếp cận tĩnh hoặc quá tải chức năng.

Go không có những tính năng này, tuy nhiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.