สวัสดีฮับ! ฉันขอนำเสนอคำแปลของโพสต์ของ Stephen Wolfram แก่คุณ
ข้อกำหนดเบื้องต้นสำหรับความสอดคล้องของภาษา Wolfram
วันนี้เรายืนอยู่บนเกณฑ์แห่งความสำเร็จอันยิ่งใหญ่พร้อมกับภาษาการเขียนโปรแกรม
Wolfram Function Repository เป็นสิ่งที่เกิดขึ้นได้โดยธรรมชาติอันเป็นเอกลักษณ์ของภาษา Wolfram ไม่เพียงแต่เป็นภาษาโปรแกรมเท่านั้น แต่ยังเป็น
ตัวอย่างเช่น ที่เก็บฟังก์ชัน Wolfram มีอยู่แล้ว
มากกว่าเช่นกัน
หากต้องการไปที่เพจ ให้คัดลอกออบเจ็กต์ด้านบน (ฟังก์ชัน BLOB) วางลงในบรรทัดอินพุต จากนั้นเรียกใช้ฟังก์ชัน - มีอยู่แล้วในภาษา Wolfram และได้รับการสนับสนุนตามค่าเริ่มต้นโดยเริ่มจาก
ควรสังเกตที่นี่ว่าเมื่อประมวลผล
ฉันหวังว่าด้วยการสนับสนุน
ฟังก์ชั่นจากพื้นที่เก็บข้อมูลอาจมีโค้ดขนาดเล็กหรือใหญ่ที่เขียนด้วยภาษา Wolfram ตัวอย่างเช่น สิ่งเหล่านี้อาจเป็นการโทร
โครงสร้างเชลล์และการเขียนโปรแกรมของ Wolfram Feature Repository ได้รับการออกแบบเพื่อให้ทุกคนสามารถมีส่วนร่วมในสาเหตุทั่วไปในวิธีที่ง่ายและสะดวกที่สุดสำหรับพวกเขา - อันที่จริงเพียงแค่
มีข้อดีข้อเสียและรายละเอียดมากมายในแนวทางนี้ แต่เป้าหมายของเราคือการเพิ่มประสิทธิภาพพื้นที่เก็บข้อมูลฟีเจอร์ Wolfram ทั้งเพื่อประสบการณ์ผู้ใช้ และเพื่อให้แน่ใจว่าฟีเจอร์ผู้ใช้ใหม่มีส่วนช่วยอย่างมีความหมายต่อการพัฒนาภาษา เมื่อเราเติบโตขึ้น ฉันไม่สงสัยเลยว่าเราจะต้องคิดค้นวิธีการใหม่ๆ ในการประมวลผลและตรวจสอบความถูกต้องของฟังก์ชันที่สร้างไว้ใน Repository อย่างน้อยก็สำหรับการจัดระเบียบฟังก์ชันจำนวนมากและค้นหาฟังก์ชันที่ผู้ใช้ต้องการ อย่างไรก็ตาม เป็นกำลังใจให้กับเส้นทางที่เราเลือกไว้เป็นจุดเริ่มต้นที่ดี โดยส่วนตัวแล้วฉัน
เพิ่มประสิทธิภาพพร้อมลดต้นทุน
แม้กระทั่งก่อนอินเทอร์เน็ต มีหลายวิธีในการแบ่งปันรหัสภาษา Wolfram (โครงการรวมศูนย์หลักโครงการแรกของเราคือ
เป็นเวลากว่า 30 ปีที่บริษัทของเราทำงานอย่างขยันขันแข็งเพื่อรักษาความสมบูรณ์ของโครงสร้างภาษา Wolfram และนี่เป็นสิ่งสำคัญในการรับรองว่าภาษา Wolfram ไม่ใช่แค่ภาษาการเขียนโปรแกรมเท่านั้น แต่ยังเป็น
กระบวนการคำนวณต่างๆ เกิดขึ้นในโครงสร้างการใช้งานของแต่ละฟังก์ชัน ควรสังเกตไว้ที่นี่ว่าจำเป็นที่ฟังก์ชันจะต้องมีลักษณะที่ชัดเจนและสม่ำเสมอและผู้ใช้สามารถอ่านด้วยภาพได้ ในบริบทนี้ ฟังก์ชันในตัวของ Wolfram Language จะถูกนำเสนอพร้อมตัวอย่างมากกว่า 6000 ตัวอย่างตามลำดับของวิธีการตั้งโปรแกรมฟังก์ชันต่างๆ อย่างเหมาะสม (นี่คือของเรา
การสร้างพื้นที่เก็บข้อมูลที่ใช้งานได้จริงเป็นงานเขียนโปรแกรมเมตาที่น่าสนใจ ตัวอย่างเช่น ข้อ จำกัด ที่มากเกินไปในโปรแกรมจะไม่อนุญาตให้ได้รับการรวมและความเป็นสากลของอัลกอริทึมที่จำเป็น เช่นเดียวกับข้อจำกัดด้านการทำงานที่ไม่เพียงพอ คุณจะไม่สามารถใช้ลำดับการดำเนินการอัลกอริทึมที่ถูกต้องเพียงพอได้ ตัวอย่างก่อนหน้านี้หลายประการของการดำเนินการประนีประนอมแนวทางเหล่านี้ซึ่งดำเนินการโดยบริษัทของเรานั้นทำงานได้ค่อนข้างเสถียร - เหล่านี้คือ:
ตัวอย่างข้างต้นทั้งหมดมีคุณสมบัติพื้นฐาน - วัตถุและฟังก์ชั่นที่รวบรวมในโครงการมีการจัดโครงสร้างและการกระจายกระบวนการในระดับที่สูงมาก แน่นอนว่ารายละเอียดของโครงสร้างของสิ่งที่เป็นการสาธิตหรือโครงข่ายประสาทเทียมหรืออย่างอื่นอาจแตกต่างกันอย่างมาก แต่โครงสร้างพื้นฐานสำหรับพื้นที่เก็บข้อมูลปัจจุบันจะยังคงเหมือนเดิมเสมอ ผู้ใช้ที่รักมีความคิดเห็นอย่างไรเกี่ยวกับการสร้างพื้นที่เก็บข้อมูลที่เพิ่มส่วนขยายให้กับภาษา Wolfram? ภาษา Wolfram ได้รับการออกแบบให้มีความยืดหยุ่นสูง จึงสามารถขยายและแก้ไขได้ไม่ว่าด้วยวิธีใดก็ตาม สถานการณ์นี้มีความสำคัญอย่างยิ่งต่อความสามารถในการสร้างโครงการซอฟต์แวร์ขนาดใหญ่ต่างๆ ในภาษา Wolfram ได้อย่างรวดเร็ว ควรสังเกตว่าเมื่อความยืดหยุ่นของภาษาเพิ่มขึ้น ต้นทุนของโครงการที่ดำเนินการในภาษาดังกล่าวก็จะเพิ่มขึ้นอย่างหลีกเลี่ยงไม่ได้ นี่เป็นเพราะความจริงที่ว่ายิ่งผู้ใช้ใช้ภาษาดังกล่าวมากเท่าใดก็ยิ่งได้รับฟังก์ชันการทำงานเฉพาะมากขึ้นเท่านั้น แต่เราไม่ควรลืมว่าแนวทางนี้อาจมีด้านลบในแง่ของการไร้ความสามารถเพื่อให้แน่ใจว่าโมดูลโปรแกรมมีความสอดคล้องสม่ำเสมอ
มีปัญหาทั่วไปกับไลบรารี่ในภาษาการเขียนโปรแกรมแบบเดิม เช่น หากคุณใช้ไลบรารีเดียว โค้ดจะทำงานได้อย่างถูกต้อง แต่ถ้าคุณพยายามใช้หลายไลบรารี ก็ไม่รับประกันว่าไลบรารีทั้งสองจะโต้ตอบกันอย่างถูกต้อง . นอกจากนี้ในภาษาการเขียนโปรแกรมแบบดั้งเดิมซึ่งต่างจากภาษาคอมพิวเตอร์ที่เต็มเปี่ยม - ไม่มีวิธีใดที่จะรับประกันได้ว่าจะมีการนำเสนอในตัวที่สอดคล้องกันสำหรับฟังก์ชันหรือประเภทข้อมูลใด ๆ นอกเหนือจากโครงสร้างพื้นฐาน แต่ในความเป็นจริง ปัญหานั้นใหญ่กว่าที่คิดเมื่อมองแวบแรก: หากใครก็ตามสร้างฟังก์ชันการทำงานแนวดิ่งขนาดใหญ่ โดยไม่ต้องเสียค่าใช้จ่ายมหาศาลในการเขียนโปรแกรมโปรเจ็กต์แบบรวมศูนย์ที่เราใส่ไว้ในภาษา Wolfram มันเป็นไปไม่ได้ที่จะ บรรลุความสม่ำเสมอ ดังนั้นจึงเป็นเรื่องสำคัญที่โมดูลซอฟต์แวร์ทั้งหมดจะทำงานร่วมกันได้อย่างถูกต้องเสมอ
ดังนั้นแนวคิดเบื้องหลังพื้นที่เก็บข้อมูลฟีเจอร์ Wolfram คือการหลีกเลี่ยงปัญหาที่อธิบายไว้ข้างต้นโดยเพียงแค่เพิ่มส่วนขยายให้กับภาษาด้วยโค้ดขนาดค่อนข้างเล็กผ่านฟีเจอร์แต่ละรายการที่ง่ายต่อการพัฒนาเป็นโมดูลที่สอดคล้องกัน ดังที่กล่าวไปแล้ว มีคุณสมบัติการเขียนโปรแกรมที่ไม่สามารถอำนวยความสะดวกได้โดยใช้แต่ละฟังก์ชัน (และบริษัทของเรากำลังวางแผนที่จะเปิดตัวอัลกอริธึมการเขียนโปรแกรมที่ได้รับการปรับปรุงให้เหมาะสมในอนาคตอันใกล้นี้ เพื่อช่วยปรับใช้แพ็คเกจซอฟต์แวร์ขนาดใหญ่) อย่างไรก็ตาม ขึ้นอยู่กับฟังก์ชันที่สร้างไว้แล้วในภาษา Wolfram มีความเป็นไปได้ในการเขียนโปรแกรมมากมายที่นำไปใช้ตามฟังก์ชันแต่ละอย่าง แนวคิดก็คือ ด้วยความพยายามในการเขียนโปรแกรมเพียงเล็กน้อย จึงเป็นไปได้ที่จะสร้างฟังก์ชันใหม่ๆ ที่มีประโยชน์มากจำนวนหนึ่ง ซึ่งจะให้ความสอดคล้องที่เพียงพอกับการออกแบบ ฟังก์ชันเหล่านี้จะได้รับการประสานงานกันอย่างดี และนอกเหนือจากนี้ จะสามารถนำไปใช้ในภาษาได้ง่ายและแพร่หลายในอนาคต
แน่นอนว่าแนวทางนี้เป็นการประนีประนอม หากมีการนำแพ็คเกจที่ใหญ่กว่ามาใช้ โลกแห่งฟังก์ชันการทำงานแบบใหม่สามารถจินตนาการได้ว่าจะทรงพลังและมีประโยชน์อย่างมาก หากมีความจำเป็นต้องได้รับฟังก์ชันใหม่ๆ ที่จะเข้ากับทุกสิ่งทุกอย่างได้ แต่คุณไม่เต็มใจที่จะใช้เวลามากมายในการพัฒนาโปรเจ็กต์ โชคไม่ดีที่สิ่งนี้สามารถนำไปสู่การลดขอบเขตของโปรเจ็กต์ของคุณได้ แนวคิดเบื้องหลังพื้นที่เก็บข้อมูลคุณลักษณะ Wolfram คือการจัดหาฟังก์ชันการทำงานให้กับส่วนที่กำหนดของโครงการ แนวทางนี้จะเพิ่มฟังก์ชันการทำงานที่มีประสิทธิภาพในขณะที่ทำให้ง่ายต่อการรักษาความสอดคล้องที่ดีในโครงการการเขียนโปรแกรม
ช่วยเพิ่มฟังก์ชันที่กำหนดเองไปยังที่เก็บฟังก์ชัน
ทีมงานของเราทำงานอย่างหนักเพื่อให้ผู้ใช้สามารถมีส่วนร่วมในฟีเจอร์พื้นที่เก็บข้อมูล Wolfram ได้อย่างง่ายดาย บนเดสก์ท็อป (อยู่ในแล้ว
มีสองขั้นตอนหลักที่คุณต้องดำเนินการ ขั้นแรก เขียนโค้ดสำหรับฟังก์ชันของคุณจริงๆ และขั้นที่สอง จดเอกสารที่แสดงให้เห็นว่าฟังก์ชันของคุณควรทำงานอย่างไร
คลิกปุ่ม "เปิดตัวอย่าง" ที่ด้านบนเพื่อดูตัวอย่างสิ่งที่คุณต้องทำ:
โดยพื้นฐานแล้ว คุณกำลังพยายามสร้างสิ่งที่คล้ายกับฟังก์ชันในตัวในภาษา Wolfram ยกเว้นว่ามันสามารถทำสิ่งที่เฉพาะเจาะจงมากกว่าฟังก์ชันในตัวได้ ในขณะเดียวกัน ความคาดหวังเกี่ยวกับความสมบูรณ์และความน่าเชื่อถือจะลดลงมาก
คุณต้องตั้งชื่อฟังก์ชันของคุณให้เป็นไปตามแนวทางการตั้งชื่อฟังก์ชันของ Wolfram Language นอกจากนี้ คุณจะต้องพัฒนาเอกสารสำหรับฟังก์ชันของคุณ ซึ่งคล้ายกับฟังก์ชันในตัวของภาษา ฉันจะพูดถึงเรื่องนี้โดยละเอียดในภายหลัง ในตอนนี้ โปรดสังเกตว่าในแถวของปุ่มที่ด้านบนของไฟล์สมุดบันทึกคำจำกัดความจะมีปุ่มหนึ่งปุ่ม
เมื่อคุณแน่ใจว่าทุกอย่างถูกต้องและคุณพร้อมแล้ว ให้คลิกปุ่ม “ตรวจสอบ” เป็นเรื่องปกติที่คุณจะไม่ทราบรายละเอียดทั้งหมด ดังนั้นฟังก์ชัน "ตรวจสอบ" จะทำงานโดยอัตโนมัติและทำการตรวจสอบสไตล์และความสอดคล้องจำนวนมาก บ่อยครั้งระบบจะแจ้งให้คุณยืนยันและยอมรับการแก้ไขทันที (เช่น “บรรทัดนี้ต้องลงท้ายด้วยเครื่องหมายทวิภาค” และจะแจ้งให้คุณป้อนเครื่องหมายทวิภาค) บางครั้งเธอจะขอให้คุณเพิ่มหรือเปลี่ยนแปลงบางสิ่งบางอย่างด้วยตัวคุณเอง เราจะเพิ่มคุณสมบัติใหม่ๆ ให้กับฟังก์ชันอัตโนมัติของปุ่มตรวจสอบอย่างต่อเนื่อง แต่โดยพื้นฐานแล้วจุดประสงค์คือเพื่อให้แน่ใจว่าทุกสิ่งที่คุณส่งไปยังที่เก็บคุณลักษณะนั้นเป็นไปตามหลักเกณฑ์ด้านรูปแบบมากที่สุดเท่าที่จะเป็นไปได้
ดังนั้นหลังจากเรียกใช้ "ตรวจสอบ" คุณสามารถใช้ "ดูตัวอย่าง" ได้ "แสดงตัวอย่าง" สร้างการแสดงตัวอย่างหน้าเอกสารที่คุณกำหนดไว้สำหรับฟังก์ชันของคุณ คุณยังสามารถสร้างการแสดงตัวอย่างสำหรับไฟล์ที่สร้างบนคอมพิวเตอร์ของคุณหรือสำหรับไฟล์ที่อยู่ในที่เก็บข้อมูลบนคลาวด์ หากด้วยเหตุผลบางประการ คุณไม่พอใจกับสิ่งที่คุณเห็นในภาพตัวอย่าง เพียงย้อนกลับไปและทำการแก้ไขที่จำเป็น จากนั้นคลิกปุ่มแสดงตัวอย่างอีกครั้ง
ตอนนี้คุณพร้อมที่จะผลักดันฟังก์ชันของคุณไปยังพื้นที่เก็บข้อมูลแล้ว ปุ่มปรับใช้มีสี่ตัวเลือกให้คุณ:
สิ่งสำคัญในขั้นตอนนี้คือคุณสามารถส่งฟังก์ชันของคุณไปยังที่เก็บฟังก์ชัน Wolfram เพื่อให้ทุกคนสามารถใช้ได้ ในเวลาเดียวกัน คุณยังสามารถวางฟังก์ชันของคุณสำหรับผู้ใช้ในจำนวนที่จำกัดได้ ตัวอย่างเช่น คุณสามารถสร้างฟังก์ชันที่โฮสต์ไว้ภายในคอมพิวเตอร์ของคุณ เพื่อให้สามารถใช้งานได้เมื่อคุณใช้คอมพิวเตอร์เครื่องนั้น หรือจะโพสต์ไว้ในของคุณก็ได้
สมมติว่าคุณต้องการส่งฟังก์ชันของคุณไปยังฐานความรู้ฟังก์ชัน Wolfram ในการดำเนินการนี้ ให้คลิกปุ่ม "ส่ง" ไปยังพื้นที่เก็บข้อมูล แล้วจะเกิดอะไรขึ้นในตอนนี้? ใบสมัครของคุณจะถูกเข้าคิวเพื่อตรวจสอบและอนุมัติทันทีโดยทีมภัณฑารักษ์ของเราโดยเฉพาะ
เมื่อใบสมัครของคุณดำเนินไปตามขั้นตอนการอนุมัติ (ซึ่งโดยทั่วไปจะใช้เวลาหลายวัน) คุณจะได้รับการสื่อสารเกี่ยวกับสถานะของใบสมัครและคำแนะนำสำหรับการใช้งานในอนาคต แต่เมื่อคุณสมบัติของคุณได้รับการอนุมัติ มันจะถูกเผยแพร่ไปยัง Wolfram Feature Repository ทันที และจะพร้อมให้ทุกคนใช้งานได้ (และสิ่งนี้จะปรากฏอยู่ใน.
สิ่งที่ควรมีในการจัดเก็บ?
ควรสังเกตว่าบริษัทของเรามีมาตรฐานที่สูงมากในด้านความสมบูรณ์ ความน่าเชื่อถือ และคุณภาพโดยรวม และฟังก์ชันมากกว่า 6000 รายการที่เราได้สร้างไว้ในภาษา Wolfram ตลอดระยะเวลากว่า 30 ปีที่ผ่านมา ทั้งหมดตรงตามข้อกำหนดข้างต้น เป้าหมายของ Wolfram Function Repository คือการใช้โครงสร้างและฟังก์ชันทั้งหมดที่มีอยู่แล้วในภาษา Wolfram เพื่อเพิ่มฟังก์ชันที่เบากว่าให้มากที่สุดเท่าที่จะเป็นไปได้ (นั่นคือ ฟังก์ชันที่มีประสิทธิภาพสูงกว่า)
แน่นอนว่า ฟังก์ชันต่างๆ ในพื้นที่เก็บข้อมูลฟังก์ชัน Wolfram จะต้องเป็นไปตามหลักการออกแบบของภาษา Wolfram เพื่อให้สามารถโต้ตอบกับฟังก์ชันอื่นๆ ได้อย่างเต็มที่ และความคาดหวังของผู้ใช้ว่าฟังก์ชันควรทำงานอย่างถูกต้องอย่างไร อย่างไรก็ตาม ฟังก์ชันต่างๆ ไม่จำเป็นต้องมีความสมบูรณ์หรือความน่าเชื่อถือเท่ากัน
ในฟังก์ชันในตัวของภาษา Wolfram เราทำงานอย่างหนักเพื่อทำให้ฟังก์ชันการเขียนโปรแกรมเป็นแบบทั่วไปที่สุดเท่าที่จะเป็นไปได้ ดังที่กล่าวไว้ เมื่ออยู่ในที่เก็บฟังก์ชัน Wolfram ไม่มีอะไรผิดที่จะมีฟังก์ชันในนั้นที่จัดการเฉพาะบางกรณีที่เฉพาะเจาะจงแต่มีประโยชน์ ตัวอย่างเช่นฟังก์ชัน
อีกจุดที่เกี่ยวข้องกับฟังก์ชันในตัวคือบริษัทของเราพยายามทุกวิถีทางเพื่อจัดการกับกรณีที่ผิดปกติทั้งหมด เพื่อจัดการกับอินพุตที่ไม่ถูกต้องอย่างถูกต้อง และอื่นๆ ในที่เก็บฟังก์ชัน เป็นเรื่องปกติที่จะมีฟังก์ชันพิเศษที่จัดการกรณีหลักของการแก้ปัญหาและละเว้นฟังก์ชันอื่นๆ ทั้งหมด
จุดที่ชัดเจนก็คือ ดีกว่าที่จะมีฟังก์ชันที่ทำได้มากกว่าและทำได้ดีกว่า แต่การปรับให้เหมาะสมสำหรับที่เก็บฟังก์ชัน ซึ่งต่างจากฟังก์ชันในตัวของภาษา Wolfram ควรมีฟังก์ชันเพิ่มเติมที่มาพร้อมกับฟังก์ชันมากกว่า แทนที่จะเจาะลึกลงไป กระบวนการดำเนินการของแต่ละฟังก์ชันเฉพาะ
ตอนนี้เรามาดูตัวอย่างการทดสอบฟังก์ชันในพื้นที่เก็บข้อมูลกัน ความคาดหวังด้านความสอดคล้องสำหรับฟังก์ชันดังกล่าวจะต่ำกว่าฟังก์ชันภาษาในตัวอย่างมาก โดยเฉพาะอย่างยิ่งในกรณีที่ฟังก์ชันต้องอาศัยทรัพยากรภายนอก เช่น API สิ่งสำคัญคือต้องทำการทดสอบอย่างต่อเนื่อง ซึ่งจะเกิดขึ้นโดยอัตโนมัติภายในอัลกอริธึมการตรวจสอบ ในไฟล์ nb คุณสามารถระบุคำจำกัดความได้อย่างชัดเจน (ในส่วนข้อมูลเพิ่มเติม) และระบุการทดสอบได้มากตามที่กำหนดโดยสตริงอินพุตและเอาต์พุตหรืออ็อบเจ็กต์อักขระเต็มประเภท
เป็นผลให้ที่เก็บฟังก์ชันจะมีความซับซ้อนในการใช้งานจำนวนหนึ่ง บางส่วนอาจเป็นเพียงโค้ดบรรทัดเดียว บางส่วนอาจเกี่ยวข้องกับบรรทัดหลายพันหรือหลายหมื่นบรรทัด ซึ่งมีแนวโน้มว่าจะใช้ฟังก์ชันตัวช่วยมากมาย เมื่อใดจึงควรเพิ่มฟังก์ชันที่ต้องใช้โค้ดเพียงเล็กน้อยในการกำหนด โดยพื้นฐานแล้วถ้ามีฟังก์ชันอยู่
วัตถุประสงค์หลักของพื้นที่เก็บข้อมูลฟังก์ชัน (ตามชื่อของมัน) คือการแนะนำคุณสมบัติใหม่ในภาษา หากต้องการเพิ่มข้อมูลใหม่หรือ
จริงๆ แล้วมีสองวิธี คุณอาจต้องการแนะนำประเภทอ็อบเจ็กต์ใหม่ที่จะใช้ในฟังก์ชันใหม่ในพื้นที่เก็บข้อมูลฟังก์ชัน และในกรณีนี้ คุณสามารถเขียนการแสดงสัญลักษณ์ของมันได้ตลอดเวลา และใช้มันเมื่ออินพุตหรือเอาท์พุตฟังก์ชันในที่เก็บฟังก์ชัน
แต่ถ้าคุณต้องการแสดงวัตถุแล้วกำหนดว่าคุณต้องการทำงานกับวัตถุนั้นผ่านฟังก์ชันที่มีอยู่ใน Wolfram Language ล่ะ? ภาษาวุลแฟรมมีกลไกที่เบาสำหรับสิ่งนี้มาโดยตลอด เรียกว่า
แล้วโค้ดฟังก์ชันในที่เก็บฟังก์ชันอาจมีอะไรบ้าง?
โค้ดทั้งหมดสำหรับที่เก็บฟีเจอร์ Wolfram ควรเขียนด้วย Wolfram หรือไม่ แน่นอนว่าโค้ดภายใน API ภายนอกไม่ควรเขียนด้วยภาษา Wolfram ซึ่งไม่ได้สร้างโค้ดภาษาด้วยซ้ำ ในความเป็นจริง หากคุณพบฟังก์ชันในเกือบทุกภาษาหรือไลบรารีภายนอก คุณสามารถสร้าง wrapper ที่อนุญาตให้คุณใช้ฟังก์ชันนั้นในพื้นที่เก็บข้อมูลฟังก์ชัน Wolfram (โดยปกติคุณควรใช้ฟังก์ชันในตัวสำหรับสิ่งนี้
แล้วจะทำแบบนี้ไปเพื่ออะไร? โดยพื้นฐานแล้ว สิ่งนี้ทำให้คุณสามารถใช้ระบบ Wolfram Language ที่บูรณาการทั้งหมดและชุดความสามารถของซอฟต์แวร์ที่รวมเป็นหนึ่งเดียวทั้งหมด หากคุณได้รับการนำไปใช้พื้นฐานจากไลบรารีหรือภาษาภายนอก คุณสามารถใช้โครงสร้างสัญลักษณ์ที่หลากหลายของภาษา Wolfram เพื่อสร้างฟังก์ชันระดับบนสุดที่สะดวกสบาย ซึ่งช่วยให้ผู้ใช้สามารถใช้ฟังก์ชันการทำงานใดๆ ที่ใช้งานอยู่แล้วได้อย่างง่ายดาย อย่างน้อยที่สุด สิ่งนี้ควรจะเป็นไปได้ในโลกอุดมคติที่มีส่วนประกอบทั้งหมดของการโหลดไลบรารี่ ฯลฯ อยู่ ซึ่งในกรณีนี้พวกมันจะถูกจัดการโดยอัตโนมัติโดยภาษา Wolfram (ควรสังเกตว่าในทางปฏิบัติอาจจะมีปัญหากับ
อย่างไรก็ตาม เมื่อคุณดูไลบรารีภายนอกทั่วไปเป็นครั้งแรก ไลบรารีเหล่านั้นมักจะดูซับซ้อนเกินกว่าจะครอบคลุมได้ในฟังก์ชันเพียงไม่กี่ฟังก์ชัน แต่ในหลายกรณี ความซับซ้อนส่วนใหญ่มาจากการสร้างโครงสร้างพื้นฐานที่จำเป็นสำหรับไลบรารีและฟังก์ชันทั้งหมดเพื่อ สนับสนุนมัน อย่างไรก็ตาม เมื่อใช้ภาษา Wolfram โดยทั่วไปโครงสร้างพื้นฐานจะถูกสร้างขึ้นในแพ็คเกจแล้ว ดังนั้นจึงไม่จำเป็นต้องเปิดเผยฟังก์ชันการสนับสนุนเหล่านี้ทั้งหมดอย่างละเอียด แต่สร้างเฉพาะฟังก์ชันสำหรับฟังก์ชันเฉพาะแอปพลิเคชัน "บนสุด" ในไลบรารีเท่านั้น .
“ระบบนิเวศ” ของฐานความรู้
หากคุณเคยเขียนฟังก์ชันที่คุณใช้เป็นประจำ ให้ส่งไปที่ Wolfram Function Repository! หากไม่มีอะไรเกิดขึ้นมากกว่านี้ (การพัฒนาภาษา) การใช้ฟังก์ชั่นเพื่อการใช้งานส่วนตัวก็จะสะดวกกว่ามากสำหรับคุณ อย่างไรก็ตาม เป็นเหตุผลที่จะถือว่าหากคุณใช้ฟังก์ชันเหล่านี้เป็นประจำ ผู้ใช้รายอื่นอาจพบว่าฟังก์ชันเหล่านี้มีประโยชน์เช่นกัน
โดยปกติแล้ว คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่ไม่สามารถ - หรือไม่ต้องการ - แบ่งปันหน้าที่ของคุณหรือในกรณีที่เข้าถึงทรัพยากรข้อมูลส่วนตัว แม้แต่ในกรณีเช่นนี้ คุณก็สามารถปรับใช้ฟังก์ชันต่างๆ ในบัญชีคลาวด์ของคุณเองได้
ฟังก์ชันที่คุณส่งไปยังที่เก็บฟังก์ชัน Wolfram ไม่จำเป็นต้องสมบูรณ์แบบ พวกเขาแค่ต้องมีประโยชน์ นี่จะเหมือนกับส่วน "ข้อผิดพลาด" ในเอกสาร Unix แบบคลาสสิก - ใน "ส่วนคำจำกัดความ" จะมีส่วน "หมายเหตุของผู้เขียน" ที่คุณสามารถอธิบายข้อจำกัด ปัญหา ฯลฯ ที่คุณรู้อยู่แล้วเกี่ยวกับฟังก์ชันของคุณ นอกจากนี้ เมื่อคุณส่งฟีเจอร์ของคุณไปยังพื้นที่เก็บข้อมูล คุณสามารถเพิ่มบันทึกการส่งที่ทีมภัณฑารักษ์เฉพาะจะอ่านได้
เมื่อเผยแพร่คุณลักษณะแล้ว หน้าของคุณลักษณะนั้นจะมีลิงก์สองลิงก์ที่ด้านล่างเสมอ: "
บางครั้งคุณเพียงต้องการใช้ฟังก์ชันจากที่เก็บฟังก์ชัน Wolfram เช่น ฟังก์ชันในตัว โดยไม่ต้องดูโค้ด อย่างไรก็ตาม หากคุณต้องการดูด้านใน ก็จะมีปุ่ม Notepad อยู่ที่ด้านบนเสมอ คลิกที่มันแล้วคุณจะได้รับสำเนาสมุดบันทึกคำจำกัดความดั้งเดิมของคุณเองที่ถูกส่งไปยังที่เก็บฟีเจอร์ บางครั้งคุณสามารถใช้เป็นตัวอย่างสำหรับความต้องการของคุณได้ ในเวลาเดียวกัน คุณยังสามารถพัฒนาการปรับเปลี่ยนฟังก์ชันนี้ของคุณเองได้ คุณอาจต้องการโพสต์ฟังก์ชันเหล่านี้ที่คุณพบจากพื้นที่เก็บข้อมูลบนคอมพิวเตอร์ของคุณหรือในบัญชีที่เก็บข้อมูลบนคลาวด์ของเพลี้ยอ่อน บางทีคุณอาจต้องการส่งฟังก์ชันเหล่านี้ไปยังฐานความรู้ของฟังก์ชัน อาจเป็นเวอร์ชันปรับปรุงและขยายของฟังก์ชันดั้งเดิม
ในอนาคต เราวางแผนที่จะสนับสนุนการฟอร์กกิ้งแบบ Git สำหรับที่เก็บฟีเจอร์ แต่สำหรับตอนนี้ เรากำลังพยายามทำให้มันเรียบง่าย และเรามักจะมีฟีเจอร์แต่ละเวอร์ชันที่ได้รับการยอมรับในตัวภาษานั้นเพียงเวอร์ชันเดียวเท่านั้น บ่อยกว่านั้น (เว้นแต่นักพัฒนาจะละทิ้งการดูแลรักษาคุณสมบัติที่พวกเขาพัฒนาและตอบสนองต่อการส่งของผู้ใช้) ผู้เขียนดั้งเดิมของคุณสมบัติจะควบคุมการอัปเดตและส่งเวอร์ชันใหม่ ซึ่งจะได้รับการตรวจสอบและหากผ่านกระบวนการตรวจสอบ เผยแพร่ในภาษา
ลองพิจารณาคำถามว่า "การกำหนดเวอร์ชัน" ของฟังก์ชันที่พัฒนาแล้วทำงานอย่างไร ขณะนี้ เมื่อคุณใช้ฟังก์ชันจากที่เก็บฟังก์ชัน คำจำกัดความของฟังก์ชันจะถูกเก็บไว้อย่างถาวรบนคอมพิวเตอร์ของคุณ (หรือในบัญชีคลาวด์ของคุณ หากคุณใช้คลาวด์) หากฟีเจอร์เวอร์ชันใหม่พร้อมใช้งาน ครั้งถัดไปที่คุณใช้ฟีเจอร์ดังกล่าว คุณจะได้รับข้อความแจ้งให้คุณทราบ และหากต้องการอัพเดตฟังก์ชันให้เป็นเวอร์ชันใหม่ก็สามารถทำได้โดยใช้คำสั่ง
สิ่งที่สวยงามประการหนึ่งเกี่ยวกับ Wolfram Function Repository ก็คือโปรแกรม Wolfram Language ทุกที่สามารถใช้ฟังก์ชันจากมันได้ หากโปรแกรมปรากฏในแผ่นจดบันทึก มักจะสะดวกในการจัดรูปแบบฟังก์ชันพื้นที่เก็บข้อมูลเป็นฟังก์ชัน "function binary object" ที่อ่านง่าย (อาจมีชุดเวอร์ชันที่เหมาะสม)
คุณสามารถเข้าถึงฟังก์ชันต่างๆ ในพื้นที่เก็บข้อมูลฟังก์ชันได้ตลอดเวลาโดยใช้ข้อความ
มันทำงานอย่างไร
ภายในฟังก์ชันต่างๆ ในพื้นที่เก็บข้อมูล Wolfram สามารถทำได้โดยใช้สิ่งเดียวกันทุกประการ
พิจารณา
ภายในคุณสามารถดูข้อมูลบางอย่างได้โดยใช้ฟังก์ชัน
การตั้งค่าฟังก์ชันทรัพยากรทำงานอย่างไร กรณีที่ง่ายที่สุดคือกรณีท้องถิ่นล้วนๆ ต่อไปนี้คือตัวอย่างที่รับฟังก์ชัน (ในกรณีนี้เป็นเพียงฟังก์ชันล้วนๆ) และกำหนดให้เป็นฟังก์ชันทรัพยากรสำหรับเซสชันของโปรแกรมที่กำหนด:
เมื่อคุณสร้างคำจำกัดความแล้ว คุณสามารถใช้ฟังก์ชันทรัพยากรได้:
โปรดทราบว่ามีไอคอนสีดำในหยดฟังก์ชันนี้ . ซึ่งหมายความว่าฟังก์ชัน BLOB อ้างอิงถึงฟังก์ชันทรัพยากรในหน่วยความจำที่กำหนดไว้สำหรับเซสชันปัจจุบัน คุณลักษณะทรัพยากรที่เก็บไว้อย่างถาวรบนคอมพิวเตอร์หรือบัญชีคลาวด์ของคุณจะมีไอคอนสีเทา . และมีไอคอนสีส้มสำหรับคุณลักษณะทรัพยากรอย่างเป็นทางการใน Wolfram Feature Repository .
แล้วจะเกิดอะไรขึ้นเมื่อคุณใช้เมนูขยายในสมุดบันทึกคำจำกัดความ ขั้นแรก จะใช้คำจำกัดความทั้งหมดในแผ่นจดบันทึกและสร้างสัญลักษณ์ขึ้นมา
การปรับใช้ฟังก์ชันในเครื่องจากที่เก็บบนคอมพิวเตอร์ของคุณจะดำเนินการโดยใช้คำสั่ง
หากคุณคลิกปุ่มส่งสำหรับ Function Repository จะเกิดอะไรขึ้นข้างใต้นั้น
ตามค่าเริ่มต้น การส่งจะทำภายใต้ชื่อที่เชื่อมโยงกับ Wolfram ID ของคุณ แต่ถ้าคุณส่งใบสมัครในนามของทีมพัฒนาหรือองค์กร คุณก็สามารถทำได้
หลังจากที่คุณได้ส่งฟังก์ชันใดๆ ของคุณไปยังฐานความรู้เกี่ยวกับฟังก์ชันแล้ว ฟังก์ชันนั้นจะถูกเข้าคิวเพื่อตรวจสอบ หากคุณได้รับความคิดเห็นตอบกลับ โดยปกติแล้วความคิดเห็นเหล่านั้นจะอยู่ในรูปแบบของไฟล์ข้อความโดยมีการเพิ่ม "เซลล์ความคิดเห็น" เพิ่มเติม คุณสามารถตรวจสอบสถานะการสมัครของคุณได้ตลอดเวลาโดยไปที่
รายละเอียดปลีกย่อยบางอย่างในที่ทำงาน
เมื่อมองแวบแรกอาจดูเหมือนว่าคุณสามารถใช้โน้ตบุ๊กที่มีคำจำกัดความและใส่คำต่อคำลงในที่เก็บฟังก์ชันได้ อย่างไรก็ตาม จริงๆ แล้วยังมีรายละเอียดปลีกย่อยอีกมากมายที่เกี่ยวข้อง - และการจัดการสิ่งเหล่านี้จำเป็นต้องทำการเขียนโปรแกรมเมตาที่ค่อนข้างซับซ้อน การจัดการการประมวลผลสัญลักษณ์ เป็นรหัสที่กำหนดฟังก์ชัน และกำหนด Notepad เอง สิ่งนี้ส่วนใหญ่เกิดขึ้นเป็นการภายใน เบื้องหลัง แต่อาจมีนัยยะบางอย่างที่ควรค่าแก่การทำความเข้าใจหากคุณจะมีส่วนร่วมในฐานความรู้ของฟีเจอร์
ความละเอียดอ่อนขั้นแรก: เมื่อคุณกรอกสมุดบันทึกคำจำกัดความ คุณสามารถอ้างถึงฟังก์ชันของคุณได้ทุกที่โดยใช้ชื่อเช่น ฟังก์ชั่นของฉันซึ่งดูเหมือนชื่อปกติสำหรับฟังก์ชันในภาษา Wolfram แต่สำหรับเอกสารที่เก็บฟังก์ชัน สิ่งนี้จะถูกแทนที่
รายละเอียดปลีกย่อยที่สอง: เมื่อคุณสร้างฟังก์ชันทรัพยากรจากสมุดบันทึกข้อกำหนด การอ้างอิงทั้งหมดที่เกี่ยวข้องกับข้อกำหนดฟังก์ชันจะต้องถูกบันทึกและรวมไว้อย่างชัดเจน อย่างไรก็ตาม เพื่อให้แน่ใจว่าคำจำกัดความยังคงเป็นแบบโมดูลาร์ คุณจะต้องทำให้ทุกอย่างไม่ซ้ำกัน
โดยทั่วไป คุณจะไม่เห็นร่องรอยของโค้ดที่ใช้ในการกำหนดค่าเนมสเปซนี้ แต่หากคุณเรียกสัญลักษณ์ที่ยังไม่ได้ดำเนินการในฟังก์ชันของคุณด้วยเหตุผลบางประการ คุณจะเห็นว่าสัญลักษณ์นี้อยู่ในบริบทภายในของฟังก์ชัน อย่างไรก็ตาม เมื่อประมวลผล Definition Notepad อย่างน้อยสัญลักษณ์ที่สอดคล้องกับฟังก์ชันนั้นก็คือ
ที่เก็บฟังก์ชันมีไว้สำหรับกำหนดฟังก์ชันใหม่ และฟังก์ชั่นเหล่านี้ก็อาจมีออปชั่นให้เลือก บ่อยครั้งพารามิเตอร์เหล่านี้ (เช่น
ฟังก์ชันส่วนใหญ่เพียงทำในสิ่งที่พวกเขาควรจะทำทุกครั้งที่ถูกเรียกใช้ แต่ฟังก์ชันบางอย่างจำเป็นต้องเริ่มต้นก่อนจึงจะสามารถรันในเซสชันใดเซสชันหนึ่งได้ และเพื่อแก้ไขปัญหานี้ จึงมีส่วน "การเริ่มต้น" ในส่วนคำจำกัดความ
ฟังก์ชันจาก repository สามารถใช้ฟังก์ชันอื่นที่มีอยู่แล้วใน repository ได้ เพื่อตั้งค่าคำจำกัดความสำหรับที่เก็บฟังก์ชันที่มีสองฟังก์ชัน (หรือมากกว่า) ที่อ้างอิงถึงกัน คุณต้องปรับใช้ฟังก์ชันเหล่านั้นในเซสชันโปรแกรมของคุณ เพื่อให้คุณสามารถ อ้างอิงเช่นเดียวกับพวกเขา
แนวโน้มการพัฒนา จะเกิดอะไรขึ้นเมื่อพื้นที่เก็บข้อมูลมีขนาดใหญ่มาก?
วันนี้เราเพิ่งเปิดตัว Wolfram Feature Repository แต่เมื่อเวลาผ่านไป เราคาดว่าขนาดและฟังก์ชันการทำงานของมันอาจเพิ่มขึ้นอย่างมาก และในขณะที่การพัฒนาเติบโตขึ้น ก็อาจเกิดปัญหาต่างๆ ที่เราคาดการณ์ไว้แล้วเกิดขึ้น
ปัญหาแรกเกี่ยวข้องกับชื่อฟังก์ชันและความเป็นเอกลักษณ์ ที่เก็บฟังก์ชันได้รับการออกแบบในลักษณะที่เหมือนกับฟังก์ชันในตัวในภาษา Wolfram คุณสามารถอ้างอิงฟังก์ชันใดๆ ที่กำหนดได้ง่ายๆ โดยการระบุชื่อฟังก์ชัน แต่นี่หมายความว่าชื่อฟังก์ชันจะต้องไม่ซ้ำกันทั่วโลกทั่วทั้งที่เก็บ ดังนั้น ตัวอย่างเช่น จะมีได้เพียงชื่อเดียวเท่านั้น
นี่อาจดูเหมือนเป็นปัญหาใหญ่ในตอนแรก แต่ก็คุ้มค่าที่จะตระหนักว่า โดยพื้นฐานแล้วมันเป็นปัญหาเดียวกันกับโดเมนอินเทอร์เน็ตหรือการจัดการโซเชียลมีเดีย และความจริงก็คือระบบจำเป็นต้องมีนายทะเบียน - และนี่คือหนึ่งในบทบาทที่บริษัทของเราจะดำเนินการสำหรับฐานความรู้เกี่ยวกับฟังก์ชัน Wolfram (สำหรับพื้นที่เก็บข้อมูลเวอร์ชันส่วนตัว ผู้รับจดทะเบียนอาจเป็นผู้ดูแลระบบ) แน่นอนว่า โดเมนอินเทอร์เน็ตสามารถลงทะเบียนได้โดยไม่ต้องมีอะไรอยู่ แต่ในพื้นที่เก็บข้อมูลฟังก์ชัน ชื่อฟังก์ชันสามารถลงทะเบียนได้ก็ต่อเมื่อมีคำจำกัดความจริงของ ฟังก์ชั่น.
บทบาทส่วนหนึ่งของเราในการจัดการฐานความรู้ฟังก์ชัน Wolfram คือเพื่อให้แน่ใจว่าชื่อที่เลือกสำหรับฟังก์ชันนั้นมีเหตุผลตามคำจำกัดความของฟังก์ชัน และเป็นไปตามแบบแผนการตั้งชื่อของภาษา Wolfram เรามีประสบการณ์มากกว่า 30 ปีในการตั้งชื่อฟังก์ชันในตัวในภาษา Wolfram และทีมภัณฑารักษ์ของเราจะนำประสบการณ์นั้นมาสู่คลังฟังก์ชันด้วยเช่นกัน แน่นอนว่าย่อมมีข้อยกเว้นอยู่เสมอ ตัวอย่างเช่น อาจดูเหมือนดีกว่าที่จะมีชื่อย่อสำหรับบางฟังก์ชัน แต่เป็นการดีกว่าที่จะ "ปกป้อง" ด้วยชื่อที่ยาวและเฉพาะเจาะจงมากกว่า เพราะคุณมีโอกาสน้อยที่จะเจอคนที่ต้องการสร้างชื่อฟังก์ชันที่คล้ายกันในอนาคต .
(ควรสังเกตไว้ที่นี่ว่าการเพิ่มแท็กสมาชิกบางส่วนเพื่ออธิบายฟังก์ชันที่ไม่กำกวมจะไม่เกิดผลตามที่ตั้งใจไว้ เพราะเว้นแต่คุณจะยืนยันที่จะกำหนดแท็กเสมอ คุณจะต้องกำหนดแท็กเริ่มต้นสำหรับฟังก์ชันที่กำหนด และจัดสรรแท็กผู้เขียนด้วย ซึ่งจะต้องอาศัยการประสานงานระดับโลกอีกครั้ง)
เมื่อฐานความรู้ของฟังก์ชัน Wolfram เติบโตขึ้น ปัญหาอย่างหนึ่งที่อาจเกิดขึ้นคือการค้นพบฟังก์ชันต่างๆ ซึ่งระบบจัดเตรียมไว้ให้
สำหรับฟังก์ชันในตัวในภาษา Wolfram มีสิ่งที่เรียกว่าเลเยอร์การตรวจจับที่จัดทำโดย
พื้นที่เก็บข้อมูลฟังก์ชัน Wolfram ได้รับการกำหนดค่าให้เป็นพื้นที่เก็บข้อมูลฟังก์ชันถาวร โดยที่ฟังก์ชันใดๆ ในนั้นจะทำงานได้เสมอ แน่นอนว่าคุณลักษณะเวอร์ชันใหม่อาจมีให้ใช้งาน และเราคาดว่าคุณลักษณะบางอย่างจะล้าสมัยเมื่อเวลาผ่านไป ฟังก์ชันต่างๆ จะทำงานหากใช้ในโปรแกรม แต่หน้าเอกสารจะเชื่อมโยงไปยังฟังก์ชันใหม่ขั้นสูงยิ่งขึ้น
พื้นที่เก็บข้อมูลคุณลักษณะ Wolfram ได้รับการออกแบบมาเพื่อช่วยให้คุณค้นพบคุณลักษณะใหม่ ๆ ได้อย่างรวดเร็วและเรียนรู้วิธีใหม่ ๆ ในการใช้ภาษา Wolfram เรามองโลกในแง่ดีว่าบางสิ่งที่ได้รับการสำรวจในพื้นที่เก็บข้อมูลฟีเจอร์จะสมเหตุสมผลในที่สุดที่จะกลายเป็นส่วนสำคัญของภาษา Wolfram หลัก ในช่วงทศวรรษที่ผ่านมา เรามีฉากที่คล้ายกัน
สิ่งที่สำคัญที่สุดที่นี่คือฟังก์ชันในที่เก็บฟังก์ชันคือสิ่งที่ผู้ใช้ทุกคนสามารถใช้ได้ในขณะนี้ อาจเป็นไปได้ว่าคุณลักษณะภาษาพื้นเมืองอาจดีกว่าและมีประสิทธิภาพมากกว่ามาก แต่พื้นที่เก็บข้อมูลคุณลักษณะจะช่วยให้ผู้ใช้สามารถเข้าถึงคุณลักษณะใหม่ทั้งหมดได้ทันที และที่สำคัญที่สุด แนวคิดนี้ทำให้ทุกคนสามารถเพิ่มคุณสมบัติใหม่ๆ ที่พวกเขาต้องการได้
ก่อนหน้านี้ในประวัติศาสตร์ของภาษา Wolfram แนวคิดนี้คงไม่ได้ผลดีเท่าที่ควร แต่ในขั้นตอนนี้มีการใช้ความพยายามอย่างมากกับภาษา และความเข้าใจอย่างลึกซึ้งเกี่ยวกับหลักการออกแบบภาษา ซึ่งขณะนี้ดูเหมือนว่าจะเป็นอย่างมาก เป็นไปได้สำหรับชุมชนผู้ใช้ขนาดใหญ่ในการเพิ่มคุณสมบัติที่จะรักษาความสอดคล้องของการออกแบบเพื่อให้มีประโยชน์ต่อผู้ใช้ในวงกว้าง
มีจิตวิญญาณแห่งความสามารถอันน่าทึ่ง(?) ในชุมชนผู้ใช้ภาษา Wolfram (แน่นอนว่าชุมชนนี้ประกอบด้วยบุคลากรด้านการวิจัยและพัฒนาชั้นนำจำนวนมากในหลากหลายสาขา) ฉันหวังว่า Wolfram Feature Repository จะเป็นแพลตฟอร์มที่มีประสิทธิภาพสำหรับการปลดล็อกและเผยแพร่จิตวิญญาณแห่งความสามารถนี้ มีเพียงความร่วมมือเท่านั้นที่เราสามารถสร้างบางสิ่งที่จะขยายขอบเขตของกระบวนทัศน์การคำนวณภาษา Wolfram ได้อย่างมาก
กว่า 30 ปีที่ผ่านมา เราได้พัฒนาภาษาวุลแฟรมไปไกลมาก ตอนนี้ไปกันต่อดีกว่า ฉันขอแนะนำให้ผู้ใช้ภาษา Wolfram ที่เคารพนับถือทั่วโลกใช้พื้นที่เก็บข้อมูลที่ใช้งานได้เป็นแพลตฟอร์มสำหรับสิ่งนี้ เช่นเดียวกับโครงการซอฟต์แวร์ใหม่ เช่น Free Wolfram Engine สำหรับนักพัฒนา
ที่มา: will.com