Xin chào, Habr! Tôi xin giới thiệu với các bạn bản dịch bài viết của Stephen Wolfram
Điều kiện tiên quyết cho tính nhất quán của ngôn ngữ Wolfram
Ngày nay chúng ta đang đứng trước ngưỡng cửa của những thành tựu to lớn cùng với ngôn ngữ lập trình
Kho lưu trữ hàm Wolfram là thứ được tạo ra nhờ tính chất độc đáo của Ngôn ngữ Wolfram không chỉ với tư cách là ngôn ngữ lập trình mà còn là một
Ví dụ: kho lưu trữ hàm Wolfram đã chứa
Tương tự như vậy hơn
Để truy cập trang, hãy sao chép đối tượng trên (hàm BLOB), dán nó vào dòng đầu vào rồi chạy hàm - nó đã được tích hợp sẵn trong ngôn ngữ Wolfram và được hỗ trợ theo mặc định bắt đầu bằng
Điều cần lưu ý ở đây là khi xử lý
Tôi mong rằng với sự hỗ trợ
Các hàm từ kho lưu trữ có thể chứa các đoạn mã nhỏ hoặc lớn được viết bằng Ngôn ngữ Wolfram. Ví dụ: đây có thể là các cuộc gọi
Cấu trúc vỏ và lập trình của Kho lưu trữ tính năng Wolfram được thiết kế để mọi người có thể đóng góp cho sự nghiệp chung một cách đơn giản và thuận tiện nhất cho họ - trên thực tế, chỉ cần
Có nhiều sự đánh đổi và chi tiết trong cách tiếp cận này, nhưng mục tiêu của chúng tôi là tối ưu hóa kho tính năng Wolfram cho cả trải nghiệm người dùng và đảm bảo rằng các tính năng mới của người dùng đóng góp có ý nghĩa cho sự phát triển của ngôn ngữ. Khi chúng tôi phát triển, tôi tin chắc rằng chúng tôi sẽ phải phát minh ra các phương pháp mới để xử lý và xác thực các hàm được tích hợp trong kho lưu trữ, đặc biệt là để tổ chức số lượng lớn các hàm và tìm những hàm mà người dùng cần. Tuy nhiên, điều đáng khích lệ là con đường chúng ta đã chọn là một khởi đầu tốt đẹp. Cá nhân tôi
Tăng hiệu quả đồng thời giảm chi phí
Ngay cả trước khi có Internet, đã có nhiều cách để chia sẻ mã Ngôn ngữ Wolfram (dự án tập trung lớn đầu tiên của chúng tôi là
Trong hơn 30 năm, công ty chúng tôi đã làm việc chăm chỉ để duy trì tính toàn vẹn của cấu trúc ngôn ngữ Wolfram và điều này rất quan trọng để đảm bảo rằng ngôn ngữ Wolfram không chỉ trở thành ngôn ngữ lập trình mà còn là một ngôn ngữ lập trình.
Các quá trình tính toán khác nhau xảy ra trong cấu trúc thực hiện của từng chức năng. Cần lưu ý ở đây rằng chức năng này cần có hình thức rõ ràng, thống nhất và khả năng đọc trực quan cho người dùng. Trong bối cảnh này, các hàm tích hợp của Ngôn ngữ Wolfram được trình bày với hơn 6000 ví dụ tuần tự về cách lập trình các hàm đúng cách (đây là những ví dụ của chúng tôi
Tạo một kho lưu trữ thực sự hoạt động tốt là một nhiệm vụ lập trình meta thú vị. Ví dụ, việc vượt quá các hạn chế trong chương trình sẽ không cho phép đạt được sự thống nhất và tính phổ quát cần thiết của thuật toán. Cũng giống như khi không có đủ số lượng hạn chế chức năng, bạn sẽ không thể thực hiện một trình tự thực thi thuật toán đủ chính xác. Một số ví dụ trước đây về việc thực hiện thỏa hiệp các phương pháp tiếp cận này do công ty chúng tôi thực hiện đã hoạt động khá ổn định - đó là:
Tất cả các ví dụ trên đều có một đặc điểm cơ bản - các đối tượng và chức năng được thu thập trong dự án có mức độ cấu trúc và phân bổ quy trình rất cao. Tất nhiên, chi tiết về cấu trúc của bản demo hoặc mạng lưới thần kinh hay thứ gì khác có thể khác nhau rất nhiều, nhưng cấu trúc cơ bản cho bất kỳ kho lưu trữ hiện tại nào luôn giữ nguyên. Vậy ý kiến của bạn là gì, người dùng thân mến, về việc tạo một kho lưu trữ bổ sung các phần mở rộng cho ngôn ngữ Wolfram? Ngôn ngữ Wolfram được thiết kế cực kỳ linh hoạt, vì vậy nó có thể được mở rộng và sửa đổi theo bất kỳ cách nào. Tình huống này cực kỳ quan trọng đối với khả năng nhanh chóng tạo ra nhiều dự án phần mềm quy mô lớn khác nhau bằng Ngôn ngữ Wolfram. Cần lưu ý ở đây rằng khi tính linh hoạt của ngôn ngữ tăng lên, chi phí của các dự án được thực hiện bằng ngôn ngữ đó chắc chắn sẽ tăng lên. Điều này là do người dùng càng sử dụng ngôn ngữ như vậy thì càng nhận được nhiều chức năng chuyên dụng hơn, nhưng chúng ta không nên quên rằng cách tiếp cận này cũng có thể có những mặt tiêu cực về việc không thể đảm bảo tính nhất quán nhất quán của các mô-đun chương trình.
Có một vấn đề phổ biến với các thư viện trong các ngôn ngữ lập trình truyền thống - ví dụ: nếu bạn sử dụng một thư viện, mã sẽ hoạt động chính xác, nhưng nếu bạn cố gắng sử dụng nhiều thư viện, không có gì đảm bảo rằng chúng sẽ tương tác chính xác với nhau . Ngoài ra, trong các ngôn ngữ lập trình truyền thống - không giống như ngôn ngữ điện toán chính thức - không có cách nào đảm bảo sự hiện diện của các biểu diễn tích hợp nhất quán cho bất kỳ hàm hoặc loại dữ liệu nào ngoài cấu trúc cơ bản của chúng. Tuy nhiên, trên thực tế, vấn đề thậm chí còn lớn hơn so với cái nhìn thoáng qua: nếu một người đang xây dựng một chức năng theo chiều dọc quy mô lớn, thì nếu không có chi phí khổng lồ cho việc lập trình dự án tập trung mà chúng tôi đưa vào ngôn ngữ Wolfram, thì không thể đạt được sự nhất quán. Do đó, điều quan trọng là tất cả các mô-đun phần mềm luôn hoạt động chính xác cùng nhau.
Vì vậy, ý tưởng đằng sau kho lưu trữ tính năng Wolfram là tránh vấn đề được nêu ở trên bằng cách chỉ cần thêm các phần mở rộng vào ngôn ngữ trong các đoạn mã tương đối nhỏ thông qua các tính năng riêng lẻ dễ phát triển hơn dưới dạng mô-đun mạch lạc. Tuy nhiên, có những tính năng lập trình không thể trở nên thuận tiện khi sử dụng các chức năng riêng lẻ (và công ty chúng tôi đang có kế hoạch phát hành thuật toán lập trình được tối ưu hóa trong tương lai gần để giúp triển khai các gói phần mềm quy mô lớn). Tuy nhiên, dựa trên các chức năng đã được tích hợp trong Ngôn ngữ Wolfram, có nhiều khả năng lập trình được triển khai dựa trên các chức năng riêng lẻ. Ý tưởng ở đây là với nỗ lực lập trình tương đối ít, có thể tạo ra một số chức năng mới và rất hữu ích nhằm cung cấp đủ sự gắn kết cho thiết kế, chúng sẽ phối hợp tốt với nhau và ngoài ra, chúng còn sẽ có thể được sử dụng dễ dàng và rộng rãi trong ngôn ngữ này trong tương lai.
Tất nhiên, cách tiếp cận này là một sự thỏa hiệp. Nếu một gói lớn hơn được triển khai, người ta có thể tưởng tượng rằng một thế giới chức năng hoàn toàn mới sẽ cực kỳ mạnh mẽ và hữu ích. Nếu cần có chức năng mới phù hợp với mọi thứ khác, nhưng bạn không sẵn sàng dành nhiều công sức để phát triển dự án, thì thật không may, điều này có thể dẫn đến việc giảm phạm vi dự án của bạn. Ý tưởng đằng sau kho lưu trữ tính năng Wolfram là cung cấp chức năng cho một phần xác định của dự án; cách tiếp cận này sẽ bổ sung chức năng mạnh mẽ đồng thời giúp duy trì tính nhất quán tốt trong dự án lập trình dễ dàng hơn.
Giúp thêm các chức năng tùy chỉnh vào kho chức năng
Nhóm của chúng tôi đã làm việc chăm chỉ để giúp người dùng dễ dàng đóng góp vào các tính năng của kho lưu trữ Wolfram. Trên máy tính để bàn (đã có trong
Có hai bước chính bạn cần thực hiện: thứ nhất, viết mã cho hàm của bạn và thứ hai, viết ra tài liệu minh họa cách hàm của bạn sẽ hoạt động.
Nhấp vào nút "Mở mẫu" ở trên cùng để xem ví dụ về những gì bạn cần làm:
Về cơ bản, bạn đang cố gắng tạo ra thứ gì đó tương tự như chức năng tích hợp sẵn trong Ngôn ngữ Wolfram. Ngoại trừ việc nó có thể làm điều gì đó cụ thể hơn nhiều so với chức năng tích hợp sẵn. Đồng thời, những kỳ vọng về tính đầy đủ và độ tin cậy của nó sẽ thấp hơn nhiều.
Bạn cần đặt tên cho hàm của mình tuân theo nguyên tắc đặt tên hàm của Ngôn ngữ Wolfram. Ngoài ra, bạn sẽ cần phát triển tài liệu cho chức năng của mình, tương tự như các chức năng tích hợp sẵn của ngôn ngữ. Tôi sẽ nói về điều này chi tiết hơn sau. Bây giờ, chỉ cần lưu ý rằng trong hàng nút ở đầu tệp sổ ghi chép định nghĩa có một nút
Khi bạn chắc chắn mọi thứ đã được điền đúng và bạn đã sẵn sàng, hãy nhấp vào nút “Kiểm tra”. Việc bạn chưa tìm hiểu hết các chi tiết là điều hoàn toàn bình thường. Vì vậy, chức năng "Kiểm tra" sẽ tự động chạy và thực hiện nhiều kiểm tra về kiểu dáng và tính nhất quán. Thông thường, nó sẽ ngay lập tức nhắc bạn xác nhận và chấp nhận các chỉnh sửa (Ví dụ: “Dòng này phải kết thúc bằng dấu hai chấm” và nó sẽ nhắc bạn nhập dấu hai chấm). Đôi khi cô ấy sẽ yêu cầu bạn tự thêm hoặc thay đổi điều gì đó. Chúng tôi sẽ liên tục bổ sung các tính năng mới vào chức năng tự động của nút Kiểm tra, nhưng về cơ bản mục đích của nó là đảm bảo rằng mọi thứ bạn gửi tới kho tính năng đều tuân thủ chặt chẽ nhiều nguyên tắc về kiểu dáng nhất có thể
Vì vậy, sau khi chạy "Kiểm tra", bạn có thể sử dụng "Xem trước". "Xem trước" tạo bản xem trước của trang tài liệu mà bạn đã xác định cho chức năng của mình. Bạn cũng có thể tạo bản xem trước cho tệp được tạo trên máy tính của mình hoặc cho tệp nằm trong bộ lưu trữ đám mây. Nếu vì lý do nào đó mà bạn không hài lòng với những gì bạn thấy trong bản xem trước, chỉ cần quay lại và thực hiện các chỉnh sửa cần thiết, sau đó nhấp lại vào nút Xem trước.
Bây giờ bạn đã sẵn sàng đẩy chức năng của mình vào kho lưu trữ. Nút Triển khai cung cấp cho bạn bốn tùy chọn:
Điều quan trọng ở bước này là bạn có thể gửi hàm của mình đến kho lưu trữ hàm Wolfram để bất kỳ ai cũng có thể sử dụng nó. Đồng thời, bạn cũng có thể đặt chức năng của mình cho một số lượng người dùng hạn chế. Ví dụ: bạn có thể tạo một chức năng được lưu trữ cục bộ trên máy tính của mình để chức năng này khả dụng khi bạn sử dụng máy tính cụ thể đó. Hoặc bạn có thể đăng nó trong
Vì vậy, giả sử bạn thực sự muốn gửi hàm của mình tới cơ sở kiến thức về hàm Wolfram. Để thực hiện việc này, bạn nhấp vào nút “Gửi” tới kho lưu trữ. Vậy điều gì đang xảy ra vào lúc này? Đơn đăng ký của bạn sẽ ngay lập tức được xếp hàng để đội ngũ giám tuyển tận tâm của chúng tôi xem xét và phê duyệt.
Khi đơn đăng ký của bạn tiến triển trong quá trình phê duyệt (thường mất vài ngày), bạn sẽ nhận được thông tin liên lạc về trạng thái của nó và có thể có các đề xuất để sử dụng trong tương lai. Nhưng sau khi tính năng của bạn được phê duyệt, nó sẽ ngay lập tức được xuất bản lên Kho lưu trữ tính năng Wolfram và sẽ có sẵn cho bất kỳ ai sử dụng. (Và điều này sẽ xuất hiện trong
Những gì nên có trong kho?
Cần lưu ý rằng công ty chúng tôi có các tiêu chuẩn rất cao về tính đầy đủ, độ tin cậy và chất lượng tổng thể, đồng thời trong số hơn 6000 chức năng mà chúng tôi đã tích hợp vào ngôn ngữ Wolfram trong hơn 30 năm qua, tất cả đều đáp ứng các yêu cầu trên. Mục tiêu của Kho lưu trữ chức năng Wolfram là sử dụng tất cả cấu trúc và chức năng đã tồn tại trong Ngôn ngữ Wolfram để thêm càng nhiều chức năng nhẹ hơn (nghĩa là các chức năng hiệu suất cao hơn) càng tốt.
Tất nhiên, các hàm trong kho hàm Wolfram phải tuân thủ các nguyên tắc thiết kế của Ngôn ngữ Wolfram - để chúng có thể tương tác đầy đủ với các hàm khác và kỳ vọng của người dùng về cách hàm này hoạt động bình thường. Tuy nhiên, các chức năng không nhất thiết phải có độ đầy đủ hoặc độ tin cậy như nhau.
Trong các hàm tích hợp của ngôn ngữ Wolfram, chúng tôi làm việc chăm chỉ để làm cho các hàm lập trình trở nên tổng quát nhất có thể. Điều đó đang được nói, khi trong kho lưu trữ hàm Wolfram, không có gì sai khi có một hàm trong đó chỉ xử lý một số trường hợp rất cụ thể nhưng hữu ích. Ví dụ, chức năng
Một điểm khác liên quan đến các chức năng tích hợp là công ty chúng tôi nỗ lực hết sức để xử lý tất cả các trường hợp không điển hình, xử lý chính xác dữ liệu nhập sai, v.v. Trong kho lưu trữ hàm, việc có một hàm đặc biệt xử lý các trường hợp chính để giải quyết một vấn đề là điều hoàn toàn bình thường và bỏ qua tất cả các trường hợp khác.
Điểm rõ ràng là sẽ tốt hơn nếu có các hàm làm được nhiều việc hơn và làm tốt hơn, nhưng việc tối ưu hóa cho kho lưu trữ hàm - trái ngược với các hàm tích hợp sẵn của ngôn ngữ Wolfram - nên có nhiều hàm đi kèm với nhiều hàm hơn thay vì đi sâu vào quá trình thực hiện từng chức năng cụ thể.
Bây giờ hãy xem một ví dụ về các chức năng kiểm tra trong kho lưu trữ. Kỳ vọng về tính nhất quán đối với các hàm như vậy đương nhiên thấp hơn nhiều so với các hàm ngôn ngữ tích hợp. Điều này đặc biệt đúng trong trường hợp các chức năng phụ thuộc vào tài nguyên bên ngoài như API, điều quan trọng là phải liên tục tiến hành các thử nghiệm nhất quán, việc này sẽ tự động diễn ra trong các thuật toán xác minh. Trong tệp nb, bạn có thể chỉ định rõ ràng các định nghĩa (trong phần Thông tin bổ sung) và chỉ định số lượng kiểm tra được xác định bởi chuỗi đầu vào và đầu ra hoặc các đối tượng ký tự đầy đủ thuộc loại
Kết quả là kho chức năng sẽ có một số vấn đề phức tạp khi triển khai. Một số sẽ chỉ là một dòng mã, một số khác có thể bao gồm hàng nghìn hoặc hàng chục nghìn dòng, có thể sử dụng nhiều hàm trợ giúp. Khi nào nên thêm một hàm yêu cầu rất ít mã để xác định? Về cơ bản, nếu đối với một chức năng có
Mục đích chính của kho lưu trữ chức năng (như tên gọi của nó) là giới thiệu các tính năng mới vào ngôn ngữ. Nếu bạn muốn thêm dữ liệu mới hoặc
Thực tế có hai cách. Bạn có thể muốn giới thiệu một loại đối tượng mới sẽ được sử dụng trong các hàm mới trong kho hàm. Và trong trường hợp này, bạn luôn có thể chỉ cần ghi lại biểu diễn ký hiệu của nó và sử dụng nó khi nhập hoặc xuất các hàm trong kho hàm.
Nhưng điều gì sẽ xảy ra nếu bạn muốn biểu thị một đối tượng và sau đó xác định rằng bạn muốn làm việc với nó thông qua các hàm hiện có trong Ngôn ngữ Wolfram? Ngôn ngữ Wolfram luôn có một cơ chế gọn nhẹ cho việc này, được gọi là
Vì vậy, mã chức năng trong kho chức năng có thể có những gì?
Tất cả mã cho kho lưu trữ tính năng Wolfram có nên được viết bằng Wolfram không? Chắc chắn, mã bên trong API bên ngoài không được viết bằng ngôn ngữ Wolfram, ngôn ngữ này thậm chí không tạo ra mã ngôn ngữ. Trên thực tế, nếu bạn tìm thấy một hàm ở hầu hết mọi ngôn ngữ hoặc thư viện bên ngoài, bạn có thể tạo một trình bao bọc cho phép bạn sử dụng hàm đó trong kho lưu trữ hàm Wolfram. (Thông thường bạn nên sử dụng các hàm có sẵn cho việc này
Vậy ý nghĩa của việc làm này là gì? Về cơ bản, điều này cho phép bạn sử dụng toàn bộ hệ thống Ngôn ngữ Wolfram tích hợp và toàn bộ bộ khả năng phần mềm thống nhất của nó. Nếu bạn có được triển khai cơ sở từ thư viện hoặc ngôn ngữ bên ngoài, thì bạn có thể sử dụng cấu trúc biểu tượng phong phú của Ngôn ngữ Wolfram để tạo một hàm cấp cao thuận tiện cho phép người dùng dễ dàng sử dụng bất kỳ chức năng nào đã được triển khai. Ít nhất, điều này sẽ khả thi trong một thế giới lý tưởng nơi tồn tại tất cả các khối xây dựng của thư viện tải, v.v., trong trường hợp đó chúng sẽ được Ngôn ngữ Wolfram xử lý tự động. (Cần lưu ý rằng trong thực tế có thể có vấn đề với
Nhân tiện, khi bạn nhìn vào các thư viện bên ngoài điển hình lần đầu tiên, chúng thường có vẻ quá phức tạp để chỉ đề cập đến một vài chức năng, nhưng trong nhiều trường hợp, phần lớn sự phức tạp đến từ việc tạo cơ sở hạ tầng cần thiết cho thư viện và tất cả các chức năng để ủng hộ nó. Tuy nhiên, khi sử dụng Ngôn ngữ Wolfram, cơ sở hạ tầng thường đã được tích hợp sẵn trong các gói và do đó không cần phải trình bày chi tiết tất cả các chức năng hỗ trợ này mà chỉ tạo các chức năng cho các chức năng dành riêng cho ứng dụng "trên cùng" trong thư viện .
“Hệ sinh thái” cơ sở tri thức
Nếu bạn đã viết các hàm mà bạn sử dụng thường xuyên, hãy gửi chúng đến Kho lưu trữ hàm Wolfram! Nếu điều gì đó không xảy ra nữa (phát triển ngôn ngữ), thì thậm chí khi đó bạn sẽ thuận tiện hơn nhiều khi sử dụng các chức năng cho mục đích cá nhân. Tuy nhiên, thật hợp lý khi cho rằng nếu bạn sử dụng các chức năng này thường xuyên, có thể những người dùng khác cũng sẽ thấy chúng hữu ích.
Đương nhiên, bạn có thể rơi vào tình huống không thể - hoặc không muốn - chia sẻ các chức năng của mình hoặc trong trường hợp có được quyền truy cập vào các tài nguyên thông tin cá nhân. Ngay cả trong những trường hợp như vậy, bạn chỉ cần triển khai các chức năng trong tài khoản đám mây của riêng mình,
Các hàm bạn gửi tới kho lưu trữ hàm Wolfram không cần phải hoàn hảo; chúng chỉ cần hữu ích. Điều này hơi giống phần "Lỗi" trong tài liệu Unix cổ điển - trong "Phần định nghĩa" có phần "Ghi chú của tác giả" nơi bạn có thể mô tả các hạn chế, vấn đề, v.v. mà bạn đã biết về chức năng của mình. Ngoài ra, khi bạn gửi tính năng của mình đến kho lưu trữ, bạn có thể thêm ghi chú gửi sẽ được đọc bởi một nhóm người phụ trách chuyên trách.
Khi một tính năng được xuất bản, trang của nó luôn có hai liên kết ở cuối: "
Đôi khi bạn chỉ muốn sử dụng các hàm từ kho lưu trữ hàm Wolfram, chẳng hạn như các hàm tích hợp sẵn mà không cần xem mã của chúng. Tuy nhiên, nếu bạn muốn nhìn vào bên trong thì luôn có nút Notepad ở trên cùng. Nhấp vào nó và bạn sẽ nhận được bản sao sổ ghi chép định nghĩa ban đầu của riêng mình đã được gửi tới kho lưu trữ tính năng. Đôi khi bạn chỉ có thể sử dụng nó làm ví dụ cho nhu cầu của mình. Đồng thời, bạn cũng có thể phát triển bản sửa đổi của riêng mình cho chức năng này. Bạn có thể muốn đăng các chức năng này mà bạn tìm thấy từ kho lưu trữ trên máy tính hoặc trong tài khoản lưu trữ đám mây rệp của mình, có lẽ bạn muốn gửi chúng đến cơ sở kiến thức về chức năng, có thể dưới dạng phiên bản cải tiến, mở rộng của chức năng ban đầu.
Trong tương lai, chúng tôi dự định hỗ trợ phân nhánh kiểu Git cho các kho tính năng, nhưng hiện tại, chúng tôi đang cố gắng làm cho nó đơn giản và chúng tôi luôn chỉ có một phiên bản được chấp nhận của mỗi tính năng được tích hợp trong ngôn ngữ. Thường xuyên hơn không (trừ khi các nhà phát triển từ bỏ việc duy trì các tính năng họ đã phát triển và phản hồi nội dung gửi của người dùng), tác giả ban đầu của tính năng này sẽ kiểm soát các bản cập nhật cho tính năng đó và gửi các phiên bản mới, sau đó sẽ được xem xét và nếu chúng vượt qua quá trình xem xét , được xuất bản bằng ngôn ngữ.
Chúng ta hãy xem xét câu hỏi "phiên bản" của các chức năng đã phát triển hoạt động như thế nào. Hiện tại, khi bạn sử dụng một hàm từ kho hàm, định nghĩa của hàm đó sẽ được lưu trữ vĩnh viễn trên máy tính của bạn (hoặc trong tài khoản đám mây của bạn nếu bạn đang sử dụng đám mây). Nếu có phiên bản mới của một tính năng, lần tiếp theo sử dụng tính năng đó, bạn sẽ nhận được thông báo về điều này. Và nếu bạn muốn cập nhật chức năng lên phiên bản mới, bạn có thể thực hiện bằng lệnh
Một trong những điều hay về Kho lưu trữ chức năng Wolfram là bất kỳ chương trình Ngôn ngữ Wolfram nào, ở bất cứ đâu đều có thể sử dụng các chức năng từ nó. Nếu một chương trình xuất hiện trong notepad, việc định dạng các hàm của kho lưu trữ là các hàm "đối tượng nhị phân hàm" dễ đọc (có thể với một bộ phiên bản thích hợp) thường rất thuận tiện.
Bạn luôn có thể truy cập bất kỳ chức năng nào trong kho chức năng bằng văn bản
Nó hoạt động như thế nào?
Bên trong các hàm trong kho lưu trữ Wolfram, điều này có thể thực hiện được bằng cách sử dụng chính xác
Hãy xem xét
Bên trong bạn có thể xem một số thông tin bằng cách sử dụng chức năng
Việc thiết lập chức năng tài nguyên hoạt động như thế nào? Trường hợp đơn giản nhất là trường hợp thuần túy cục bộ. Sau đây là ví dụ lấy một hàm (trong trường hợp này chỉ là một hàm thuần túy) và định nghĩa nó là hàm tài nguyên cho một phiên chương trình nhất định:
Khi bạn đã xác định xong, bạn có thể sử dụng hàm tài nguyên:
Lưu ý rằng có một biểu tượng màu đen trong đốm màu chức năng này . Điều này có nghĩa là hàm BLOB đề cập đến hàm tài nguyên trong bộ nhớ được xác định cho phiên hiện tại. Tính năng tài nguyên được lưu trữ vĩnh viễn trên máy tính hoặc tài khoản đám mây của bạn có biểu tượng màu xám . Và có một biểu tượng màu cam cho tính năng tài nguyên chính thức trong Kho lưu trữ tính năng Wolfram .
Vậy điều gì sẽ xảy ra khi bạn sử dụng menu Mở rộng trong Sổ tay Định nghĩa? Đầu tiên, nó lấy tất cả các định nghĩa trong sổ ghi chú và từ đó tạo ra một biểu tượng
Việc triển khai cục bộ một chức năng từ kho lưu trữ trên máy tính của bạn được thực hiện bằng lệnh
Nếu bạn nhấp vào nút Gửi cho Kho lưu trữ chức năng, điều gì sẽ xảy ra bên dưới nó
Theo mặc định, việc gửi được thực hiện dưới tên được liên kết với ID Wolfram của bạn. Nhưng nếu bạn gửi đơn đăng ký thay mặt cho một nhóm hoặc tổ chức phát triển, bạn có thể
Sau khi bạn gửi bất kỳ chức năng nào của mình tới cơ sở kiến thức về chức năng, chức năng đó sẽ được xếp hàng đợi để xem xét. Nếu bạn nhận được phản hồi, chúng thường ở dạng tệp văn bản có thêm “ô nhận xét” bổ sung. Bạn luôn có thể kiểm tra trạng thái đơn đăng ký của mình bằng cách truy cập
Một số sự tinh tế trong công việc
Thoạt nhìn, có vẻ như bạn chỉ cần lấy một cuốn sổ ghi chép định nghĩa và đặt nguyên văn nó vào một kho lưu trữ hàm, tuy nhiên, thực tế có khá nhiều điều phức tạp liên quan - và việc xử lý chúng đòi hỏi phải thực hiện một số lập trình meta khá phức tạp, xử lý việc xử lý biểu tượng là mã xác định hàm và chính Notepad cũng được xác định. Hầu hết điều này xảy ra trong nội bộ, ở hậu trường, nhưng nó có thể có một số hàm ý đáng để hiểu nếu bạn định đóng góp cho cơ sở kiến thức về tính năng.
Sự tinh tế ngay lập tức đầu tiên: Khi bạn điền vào Sổ tay định nghĩa, bạn có thể chỉ cần tham khảo chức năng của mình ở mọi nơi bằng cách sử dụng một cái tên như chức năng của tôi, trông giống như tên thông thường của một hàm trong Ngôn ngữ Wolfram, nhưng đối với tài liệu kho lưu trữ hàm thì tên này được thay thế
Điều tinh tế thứ hai: khi bạn tạo một hàm tài nguyên từ Sổ tay định nghĩa, tất cả các phần phụ thuộc liên quan đến định nghĩa hàm phải được ghi lại và đưa vào một cách rõ ràng. Tuy nhiên, để đảm bảo rằng các định nghĩa vẫn mang tính mô-đun, bạn cần đặt mọi thứ trong một
Thông thường, bạn sẽ không bao giờ thấy bất kỳ dấu vết nào của mã được sử dụng để định cấu hình không gian tên này. Nhưng nếu vì lý do nào đó mà bạn gọi một biểu tượng chưa được thực thi bên trong hàm của mình thì bạn sẽ thấy biểu tượng này nằm trong ngữ cảnh bên trong của hàm. Tuy nhiên, khi xử lý Notepad Định nghĩa, ít nhất ký hiệu tương ứng với chính hàm đó là
Kho lưu trữ chức năng là để xác định các chức năng mới. Và các chức năng này có thể có các tùy chọn. Thông thường các tham số này (ví dụ:
Hầu hết các hàm chỉ đơn giản thực hiện những gì chúng phải làm mỗi khi được gọi, nhưng một số hàm cần được khởi tạo trước khi chúng có thể chạy trong một phiên cụ thể - và để giải quyết vấn đề này, có phần "Khởi tạo" trong phần Định nghĩa.
Các hàm từ kho lưu trữ có thể sử dụng các hàm khác đã có trong kho lưu trữ; để thiết lập các định nghĩa cho kho lưu trữ hàm bao gồm hai (hoặc nhiều) hàm tham chiếu lẫn nhau, bạn phải triển khai chúng trong phiên chương trình của mình để có thể tham khảo như trên chúng
Triển vọng phát triển. Điều gì sẽ xảy ra khi kho lưu trữ thực sự lớn?
Hôm nay, chúng tôi mới ra mắt Kho lưu trữ tính năng Wolfram, nhưng theo thời gian, chúng tôi hy vọng rằng quy mô và chức năng của nó có thể tăng lên đáng kể và khi nó phát triển trong quá trình phát triển, sẽ có nhiều vấn đề khác nhau mà chúng tôi dự đoán có thể phát sinh.
Vấn đề đầu tiên liên quan đến tên hàm và tính duy nhất của chúng. Kho lưu trữ hàm được thiết kế theo cách giống như các hàm tích hợp trong Ngôn ngữ Wolfram, bạn có thể tham chiếu bất kỳ hàm nhất định nào chỉ bằng cách chỉ định tên của nó. Nhưng điều này chắc chắn có nghĩa là tên hàm phải là duy nhất trên toàn bộ kho lưu trữ, do đó, chẳng hạn, chỉ có thể có một
Điều này ban đầu có vẻ giống như một vấn đề lớn, nhưng cần nhận ra rằng về cơ bản, đây là vấn đề tương tự như đối với những thứ như tên miền internet hoặc địa chỉ mạng xã hội. Và thực tế là hệ thống chỉ cần có một nhà đăng ký - và đây là một trong những vai trò mà công ty chúng tôi sẽ thực hiện đối với cơ sở tri thức chức năng Wolfram. (Đối với các phiên bản riêng tư của một kho lưu trữ, người đăng ký của chúng có thể là quản trị viên.) Tất nhiên, một miền Internet có thể được đăng ký mà không cần bất kỳ thứ gì trên đó, nhưng trong kho chức năng, tên chức năng chỉ có thể được đăng ký nếu có định nghĩa thực tế về chức năng.
Một phần vai trò của chúng tôi trong việc quản lý cơ sở kiến thức về hàm Wolfram là đảm bảo rằng tên được chọn cho hàm là hợp lý theo định nghĩa của hàm và nó tuân theo các quy ước đặt tên của Ngôn ngữ Wolfram. Chúng tôi có hơn 30 năm kinh nghiệm đặt tên cho các hàm tích hợp bằng Ngôn ngữ Wolfram và nhóm người phụ trách của chúng tôi cũng sẽ mang trải nghiệm đó vào kho lưu trữ hàm. Tất nhiên, luôn có những trường hợp ngoại lệ. Ví dụ: có vẻ thích hợp hơn khi đặt một tên ngắn cho một số chức năng, nhưng tốt hơn là nên "bảo vệ" bằng một tên dài hơn, cụ thể hơn vì bạn sẽ ít gặp phải trường hợp ai đó muốn đặt một tên chức năng tương tự trong tương lai. .
(Cần lưu ý ở đây rằng việc chỉ thêm một số thẻ thành viên vào các hàm phân biệt sẽ không có tác dụng như mong muốn. Bởi vì trừ khi bạn nhấn mạnh rằng một thẻ luôn được gán, bạn sẽ cần xác định một thẻ mặc định cho bất kỳ hàm nhất định nào và cũng phân bổ tác giả thẻ, một lần nữa sẽ yêu cầu sự phối hợp toàn cầu.)
Khi nền tảng kiến thức về các hàm Wolfram phát triển, một trong những vấn đề có thể sẽ nảy sinh là khả năng khám phá các hàm mà hệ thống cung cấp.
Đối với các chức năng tích hợp trong Ngôn ngữ Wolfram, có một lớp được gọi là lớp phát hiện được cung cấp bởi
Kho lưu trữ hàm Wolfram được cấu hình như một kho lưu trữ hàm liên tục, trong đó mọi hàm trong đó sẽ luôn hoạt động. Tất nhiên, các phiên bản tính năng mới có thể được cung cấp và chúng tôi hy vọng rằng một số tính năng tất nhiên sẽ trở nên lỗi thời theo thời gian. Các chức năng sẽ hoạt động nếu chúng được sử dụng trong các chương trình, nhưng các trang tài liệu của chúng sẽ liên kết đến các chức năng mới, nâng cao hơn.
Kho lưu trữ tính năng Wolfram được thiết kế để giúp bạn nhanh chóng khám phá các tính năng mới và tìm hiểu những cách mới để sử dụng ngôn ngữ Wolfram. Chúng tôi rất lạc quan rằng một số nội dung đã được khám phá trong kho tính năng cuối cùng sẽ có ý nghĩa để trở thành các phần tích hợp của Ngôn ngữ Wolfram cốt lõi. Trong thập kỷ qua chúng ta đã có một bộ tương tự
Điều quan trọng nhất ở đây là chức năng trong kho lưu trữ chức năng là thứ có sẵn cho mọi người dùng sử dụng ngay bây giờ. Có thể tính năng ngôn ngữ bản địa có thể tốt hơn và hiệu quả hơn nhiều, nhưng kho lưu trữ tính năng sẽ cho phép người dùng có quyền truy cập vào tất cả các tính năng mới ngay lập tức. Và quan trọng nhất, khái niệm này cho phép mọi người thêm bất kỳ tính năng mới nào họ muốn.
Trước đây trong lịch sử của ngôn ngữ Wolfram, ý tưởng này có thể đã không hoạt động tốt như hiện tại, nhưng ở giai đoạn này, ngôn ngữ đã nỗ lực rất nhiều và sự hiểu biết sâu sắc về các nguyên tắc thiết kế ngôn ngữ, đến mức bây giờ nó có vẻ khá một cộng đồng lớn người dùng có thể thêm các tính năng sẽ duy trì tính nhất quán trong thiết kế để làm cho chúng hữu ích cho nhiều người dùng.
Có một tinh thần tài năng(?) đáng kinh ngạc trong cộng đồng người dùng Ngôn ngữ Wolfram. (Tất nhiên, cộng đồng này bao gồm nhiều chuyên gia R&D hàng đầu trong nhiều lĩnh vực khác nhau.) Tôi hy vọng rằng Kho lưu trữ tính năng Wolfram sẽ cung cấp một nền tảng hiệu quả để khai thác và phổ biến tinh thần tài năng này. Chỉ cùng nhau, chúng ta mới có thể tạo ra thứ gì đó có thể mở rộng đáng kể lĩnh vực mà mô hình điện toán ngôn ngữ Wolfram có thể được áp dụng.
Trong hơn 30 năm, chúng ta đã đi được một chặng đường dài với ngôn ngữ Wolfram. Bây giờ cùng nhau, chúng ta hãy tiến xa hơn nữa. Tôi thực sự khuyến khích tất cả những người dùng ngôn ngữ Wolfram được kính trọng trên toàn thế giới sử dụng kho lưu trữ chức năng làm nền tảng cho việc này, cũng như dự án phần mềm mới như Công cụ Wolfram miễn phí dành cho nhà phát triển.
Nguồn: www.habr.com