Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Hello, Habr! Saya membentangkan kepada perhatian anda terjemahan siaran Stephen Wolfram "Repositori Fungsi Wolfram: Melancarkan Platform Terbuka untuk Memperluaskan Bahasa Wolfram".

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Prasyarat untuk konsistensi bahasa Wolfram

Hari ini kita berdiri di ambang pencapaian hebat bersama-sama dengan bahasa pengaturcaraan Bahasa Wolfram. Hanya tiga minggu yang lalu kami melancarkan Enjin Wolfram percuma untuk pemajuuntuk membantu pengguna kami menyepadukan Bahasa Wolfram ke dalam projek perisian berskala besar mereka. Hari ini kami melancarkan Repositori fungsi Wolfram, untuk menyediakan platform yang diselaraskan untuk fungsi yang dicipta untuk melanjutkan bahasa Wolfram, dan kami juga membuka repositori fungsi untuk sesiapa sahaja yang boleh menyumbang kepada pembangunan produk perisian kami.

Repositori Fungsi Wolfram adalah sesuatu yang dimungkinkan oleh sifat unik Bahasa Wolfram bukan sahaja sebagai bahasa pengaturcaraan, tetapi juga sebagai bahasa pengkomputeran skala penuh. Dalam bahasa pengaturcaraan tradisional, menambah fungsi baharu yang ketara biasanya melibatkan penciptaan keseluruhan perpustakaan tambahan yang mungkin berfungsi atau tidak apabila digunakan bersama. Walau bagaimanapun, dalam Bahasa Wolfram begitu banyak yang telah dibina ke dalam bahasa itu sendiri, bahawa adalah mungkin untuk mengembangkan fungsinya dengan ketara dengan hanya menambah fungsi baharu yang segera disepadukan ke dalam struktur holistik keseluruhan bahasa.

Sebagai contoh, repositori fungsi Wolfram sudah mengandungi 532 ciri baharu distrukturkan kepada 26 kategori tematik:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Begitu juga lebih daripada 6000 fungsi standard, dibina ke dalam bahasa Wolfram, setiap fungsi daripada repositori mempunyai halaman dokumentasi dengan penerangan terperinci mengenainya dan contoh kerja:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Untuk sampai ke halaman, salin objek di atas (fungsi BLOB), tampalkannya ke baris input dan kemudian jalankan fungsi - ia sudah terbina dalam bahasa Wolfram dan disokong secara lalai bermula dengan versi 12.0:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Perlu diingatkan di sini bahawa apabila memproses LogoQRCode Anda tidak perlu, sebagai contoh, untuk menyediakan "perpustakaan pemprosesan imej" - kerana kami telah melaksanakan cara algoritma yang konsisten dan berhati-hati dalam Bahasa Wolfram pemprosesan imej, yang boleh segera diproses oleh pelbagai fungsi bahasa grafik:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Saya harap dengan sokongan itu komuniti yang hebat dan berbakat, yang telah berkembang dan berkembang (berdasarkan Bahasa Wolfram) sejak beberapa dekad yang lalu. Repositori fungsi Wolfram akan membolehkan masa hadapan yang boleh dijangka untuk mengembangkan dengan ketara julat (mungkin berpotensi penting, khusus dalam pelbagai bidang sains dan teknologi) fungsi yang tersedia dalam bahasa. Oleh itu, ia menjadi mungkin untuk menggunakan kedua-dua kandungan bahasa (fungsi terbina dalam) dan prinsip pembangunan, yang dilaksanakan berdasarkan bahasa. (Perlu diperhatikan di sini bahawa Bahasa Wolfram sudah mempunyai lebih daripada Sejarah pembangunan 30 tahun dan pertumbuhan yang stabil).
Fungsi dari repositori mungkin mengandungi kepingan kecil atau besar kod yang ditulis dalam Bahasa Wolfram. Sebagai contoh, ini boleh menjadi panggilan API dan perkhidmatan luaran atau perpustakaan luaran dalam bahasa lain. Ciri unik pendekatan ini ialah apabila anda menelusuri kefungsian peringkat pengguna, tidak akan ada potensi ketidakkonsistenan kerana pendekatan itu dibina di atas struktur konsisten Bahasa Wolfram - dan setiap fungsi secara automatik akan berfungsi dengan betul - sama seperti dimaksudkan. dia sepatutnya.
Struktur cangkerang dan pengaturcaraan Repositori Ciri Wolfram direka supaya semua orang boleh menyumbang kepada tujuan bersama dengan cara yang paling mudah dan mudah untuk mereka - sebenarnya, hanya dengan mengisi fail teks notepad (dengan sambungan nb) WL. Fungsi automatik terbina dalam membolehkan anda menyemak fungsi baharu yang ditambahkan pada repositori untuk memastikan penyepaduannya ke dalam bahasa. Syarikat kami bertaruh pada julat luas pengguna yang boleh menyepadukan fungsi mereka ke dalam bahasa, dan bukannya pada kerumitan hebat fungsi baharu - dan walaupun terdapat proses semakan, kami tidak mendesak apa-apa seperti analisis reka bentuk yang teliti atau piawaian ketat untuk kesempurnaan dan kebolehpercayaan ciri pengguna baharu, berbanding ujian ciri yang lebih ketat yang dibina dalam bahasa teras yang kami gunakan.

Terdapat banyak pertukaran dan butiran dalam pendekatan ini, tetapi matlamat kami adalah untuk mengoptimumkan repositori ciri Wolfram untuk manfaat pengguna dan untuk memastikan ciri pengguna baharu menyumbang secara bermakna kepada pembangunan bahasa. Semasa kami berkembang, saya tidak ragu-ragu bahawa kami perlu mencipta kaedah baharu untuk mengendalikan dan mengesahkan fungsi yang dibina ke dalam repositori, tidak kurang untuk mengatur sejumlah besar fungsi dan mencari fungsi yang diperlukan oleh pengguna. Walau bagaimanapun, adalah menggalakkan bahawa jalan yang kami pilih adalah permulaan yang baik. saya secara peribadi menambah beberapa ciri ke pangkalan data asal. Kebanyakannya adalah berdasarkan kod yang saya telah bangunkan secara peribadi untuk beberapa lama. Dan saya hanya mengambil masa beberapa minit untuk menolaknya ke repositori. Memandangkan mereka berada dalam repositori, akhirnya saya boleh - serta-merta dan pada bila-bila masa - menggunakan fungsi ini mengikut keperluan, tanpa perlu risau tentang mencari fail, memuat turun pakej, dsb.

Meningkatkan kecekapan sambil mengurangkan kos

Malah sebelum Internet, terdapat cara untuk berkongsi kod Bahasa Wolfram (projek terpusat utama kami yang pertama ialah MathSource, dicipta untuk Mathematica pada tahun 1991 berdasarkan CD-ROM, dsb.). Sudah tentu, pendekatan yang dicadangkan untuk pelaksanaan berdasarkan repositori fungsi Wolfram adalah alat yang lebih berkuasa dan boleh dipercayai untuk melaksanakan tugas di atas.

Selama lebih 30 tahun, syarikat kami telah bekerja dengan gigih untuk mengekalkan integriti struktur bahasa Wolfram, dan ini penting untuk memastikan bahawa bahasa Wolfram menjadi bukan sahaja bahasa pengaturcaraan, tetapi juga bahasa pengkomputeran sepenuhnya. Oleh itu, intipati pendekatan untuk melaksanakan repositori fungsi Wolfram adalah menggunakan pendekatan bersatu untuk pengaturcaraan dan membangunkan fungsi baharu yang ditambah secara berurutan dan sesuai dengan rangka kerja bahasa supaya ia boleh berkembang dan berkembang bersama.

Pelbagai proses pengiraan berlaku dalam struktur pelaksanaan setiap fungsi. Perlu diingatkan di sini bahawa fungsi itu perlu mempunyai penampilan yang jelas dan seragam serta kebolehbacaan visual untuk pengguna. Dalam konteks ini, fungsi terbina dalam Bahasa Wolfram dibentangkan dengan lebih daripada 6000 contoh berurutan tentang cara memprogramkan fungsi dengan betul (ini adalah kami video pengaturcaraan langsungyang termasuk beratus-ratus jam proses mencipta program standard). Pendekatan ini akhirnya menjadikan repositori ciri Wolfram mampu berprestasi baik ialah sifat struktur Bahasa Wolfram, dengan sejumlah besar perpustakaan tambahan dan pelbagai yang telah dibina ke dalam bahasa tersebut. Contohnya, jika anda mempunyai fungsi yang memproses imej, atau susunan jarangAtau struktur molekulDan data geografi atau beberapa yang lain - perwakilan simboliknya yang konsisten sudah wujud dalam bahasa, dan terima kasih kepada ini, fungsi anda serta-merta menjadi serasi dengan fungsi lain dalam bahasa tersebut.

Mencipta repositori yang sebenarnya berfungsi dengan baik adalah tugas pengaturcaraan meta yang menarik. Sebagai contoh, lebihan sekatan dalam program tidak akan membenarkan mendapatkan penyatuan dan kesejagatan algoritma yang diperlukan. Sama seperti bilangan sekatan fungsi yang tidak mencukupi, anda tidak akan dapat melaksanakan urutan pelaksanaan algoritma yang cukup betul. Beberapa contoh sebelumnya untuk melaksanakan kompromi pendekatan ini, yang dilaksanakan oleh syarikat kami, berfungsi dengan agak stabil - ini adalah: Demonstrasi Projek Tungsten, dilancarkan pada 2007 dan kini berjalan dalam talian dalam talian dengan lebih 12000 demo interaktif pengguna. DALAM pangkalan data Wolfram terdapat lebih daripada 600 pangkalan data sedia yang boleh digunakan dalam Bahasa Wolfram, dan Storan rangkaian saraf Wolfram diisi semula dengan rangkaian saraf baharu hampir setiap minggu (sudah ada 118 daripadanya sekarang) dan ia segera disambungkan melalui fungsi NetModel dalam Bahasa Wolfram.

Semua contoh di atas mempunyai ciri asas - objek dan fungsi yang dikumpul dalam projek mempunyai tahap penstrukturan dan pengedaran proses yang sangat tinggi. Sudah tentu, perincian struktur apa itu demo atau rangkaian saraf atau sesuatu yang lain boleh berbeza-beza, tetapi struktur asas untuk mana-mana repositori semasa sentiasa kekal sama. Jadi apakah pendapat anda, pengguna yang dihormati, tentang membuat repositori sedemikian yang menambah sambungan pada bahasa Wolfram? Bahasa Wolfram direka bentuk untuk menjadi sangat fleksibel, jadi ia boleh dilanjutkan dan diubah suai dalam apa jua cara. Keadaan ini amat penting untuk keupayaan untuk mencipta pelbagai projek perisian berskala besar dengan cepat dalam Bahasa Wolfram. Perlu diingatkan di sini bahawa apabila fleksibiliti bahasa meningkat, kos projek yang dilaksanakan dalam bahasa sedemikian pasti akan meningkat. Ini disebabkan oleh fakta bahawa semakin banyak pengguna menggunakan bahasa sedemikian, semakin banyak fungsi khusus yang diterimanya, tetapi kita tidak harus lupa bahawa pendekatan ini juga mungkin mempunyai sisi negatif dari segi ketidakupayaan untuk memastikan konsistensi modul program yang konsisten.

Terdapat masalah biasa dengan perpustakaan dalam bahasa pengaturcaraan tradisional - jika anda menggunakan satu perpustakaan, sebagai contoh, kod akan berfungsi dengan betul, tetapi jika anda cuba menggunakan berbilang perpustakaan, tidak ada jaminan bahawa ia akan berinteraksi dengan betul antara satu sama lain . Juga, dalam bahasa pengaturcaraan tradisional - tidak seperti bahasa pengkomputeran sepenuhnya - tidak ada cara untuk menjamin kehadiran perwakilan terbina dalam yang konsisten untuk sebarang fungsi atau jenis data selain daripada struktur asasnya. Tetapi, sebenarnya, masalahnya lebih besar daripada yang kelihatan pada pandangan pertama: jika seseorang membina fungsi menegak berskala besar, maka tanpa kos besar pengaturcaraan projek terpusat yang kami masukkan ke dalam bahasa Wolfram, adalah mustahil untuk mencapai konsistensi. Oleh itu, adalah penting bahawa semua modul perisian sentiasa berfungsi bersama dengan betul.

Jadi idea di sebalik repositori ciri Wolfram adalah untuk mengelakkan masalah yang digariskan di atas dengan hanya menambah sambungan pada bahasa dalam kepingan kod yang agak kecil melalui ciri individu yang lebih mudah untuk dibangunkan sebagai modul yang koheren. Walaupun begitu, terdapat ciri pengaturcaraan yang tidak boleh dibuat dengan mudah menggunakan fungsi individu (dan syarikat kami merancang untuk mengeluarkan algoritma pengaturcaraan yang dioptimumkan dalam masa terdekat untuk membantu melaksanakan pakej perisian berskala besar). Walau bagaimanapun, berdasarkan fungsi yang telah dibina ke dalam Bahasa Wolfram, terdapat banyak kemungkinan pengaturcaraan yang dilaksanakan berdasarkan fungsi individu. Idea di sini ialah dengan usaha pengaturcaraan yang agak sedikit adalah mungkin untuk mencipta beberapa fungsi baru dan sangat berguna yang akan memberikan keselarasan yang mencukupi kepada reka bentuk, mereka akan diselaraskan dengan baik antara satu sama lain, dan juga, sebagai tambahan kepada ini, mereka akan dapat digunakan dengan mudah dan meluas dalam bahasa tersebut pada masa hadapan.

Pendekatan ini, sudah tentu, satu kompromi. Jika pakej yang lebih besar dilaksanakan, dunia kefungsian yang baru boleh dibayangkan yang akan menjadi sangat berkuasa dan berguna. Sekiranya terdapat keperluan untuk mendapatkan fungsi baharu yang sesuai dengan segala-galanya, tetapi anda tidak sanggup menghabiskan banyak usaha untuk membangunkan projek, malangnya, ini boleh membawa kepada pengurangan skop projek anda. Idea di sebalik repositori ciri Wolfram adalah untuk menyediakan kefungsian kepada bahagian yang menentukan projek; pendekatan ini akan menambah fungsi yang berkuasa sambil memudahkan untuk mengekalkan konsistensi yang baik dalam projek pengaturcaraan.

Bantu menambahkan fungsi tersuai pada repositori fungsi

Pasukan kami telah bekerja keras untuk memudahkan pengguna menyumbang kepada ciri repositori Wolfram. Pada desktop (sudah masuk versi 12.0), Anda hanya boleh melalui tab menu utama secara berurutan: Fail > Baru > Item Repositori > Item Repositori Fungsi dan anda akan mendapat "Buku Nota Definisi" (secara pemrograman di dalam meja kerja. Anda juga boleh menggunakan fungsi analog - CreateNotebook["Sumber Fungsi"]):

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Terdapat dua langkah utama yang perlu anda lakukan: pertama, sebenarnya tulis kod untuk fungsi anda dan, kedua, tulis dokumentasi yang menggambarkan bagaimana fungsi anda harus berfungsi.
Klik butang "Sampel Terbuka" di bahagian atas untuk melihat contoh perkara yang perlu anda lakukan:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Pada asasnya, anda cuba mencipta sesuatu yang serupa dengan fungsi terbina dalam dalam Bahasa Wolfram. Kecuali ia boleh melakukan sesuatu yang lebih spesifik daripada fungsi terbina dalam. Pada masa yang sama, jangkaan mengenai kesempurnaan dan kebolehpercayaannya akan jauh lebih rendah.
Anda perlu memberi fungsi anda nama yang mengikut garis panduan penamaan fungsi Bahasa Wolfram. Selain itu, anda perlu membangunkan dokumentasi untuk fungsi anda, serupa dengan fungsi terbina dalam bahasa tersebut. Saya akan bercakap tentang ini dengan lebih terperinci kemudian. Buat masa ini, cuma perhatikan bahawa dalam barisan butang di bahagian atas fail buku nota definisi terdapat butang "Garis Panduan Gaya", yang menerangkan perkara yang perlu dilakukan dan butang Alat, yang menyediakan alatan untuk memformat dokumentasi fungsi anda.
Apabila anda pasti semuanya telah diisi dengan betul dan anda sudah bersedia, klik butang "Semak". Ia adalah perkara biasa bahawa anda belum mengetahui semua butiran lagi. Jadi fungsi "Semak" akan berjalan secara automatik dan melakukan banyak gaya dan semakan konsistensi. Selalunya, ia akan segera menggesa anda untuk mengesahkan dan menerima pembetulan (Sebagai contoh: "Baris ini mesti berakhir dengan titik bertindih", dan ia akan menggesa anda untuk memasukkan titik bertindih). Kadang-kadang dia akan meminta anda menambah atau mengubah sesuatu sendiri. Kami akan sentiasa menambah ciri baharu pada kefungsian automatik butang Semak, tetapi pada asasnya tujuannya adalah untuk memastikan semua yang anda serahkan ke repositori ciri telah mengikuti seberapa banyak garis panduan gaya yang mungkin.

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Jadi, selepas menjalankan "Semak", anda boleh menggunakan "Pratonton". "Pratonton" mencipta pratonton halaman dokumentasi yang anda tentukan untuk fungsi anda. Anda juga boleh membuat pratonton untuk fail yang dibuat pada komputer anda atau untuk fail yang terletak dalam storan awan. Jika, atas sebab tertentu, anda tidak berpuas hati dengan apa yang anda lihat dalam pratonton, hanya kembali dan buat pembetulan yang diperlukan, dan kemudian klik butang Pratonton sekali lagi.
Kini anda sudah bersedia untuk menolak fungsi anda ke dalam repositori. Butang Deploy memberi anda empat pilihan:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Perkara penting pada langkah ini ialah anda boleh menyerahkan fungsi anda ke repositori fungsi Wolfram supaya ia tersedia kepada sesiapa sahaja. Pada masa yang sama, anda juga boleh meletakkan fungsi anda untuk bilangan pengguna yang terhad. Contohnya, anda boleh mencipta fungsi yang dihoskan secara setempat pada komputer anda supaya ia tersedia apabila anda menggunakan komputer tersebut. Atau anda boleh menyiarkannya dalam anda akaun awan, supaya ia tersedia untuk anda apabila anda disambungkan ke awan. Anda juga boleh mengehos (mengerahkan) ciri secara terbuka melalui akaun awan anda. Ia tidak akan berada dalam repositori ciri Wolfram pusat, tetapi anda akan dapat memberi seseorang URL yang membolehkan mereka mendapatkan ciri anda daripada akaun anda. (Pada masa hadapan, kami juga akan menyokong repositori pusat di seluruh syarikat kami.)

Oleh itu, katakan anda sebenarnya ingin menyerahkan fungsi anda ke pangkalan pengetahuan fungsi Wolfram. Untuk melakukan ini, anda klik butang "Serah" ke repositori. Jadi apa yang berlaku pada masa ini? Permohonan anda segera beratur untuk semakan dan kelulusan oleh pasukan kurator kami yang berdedikasi.

Semasa permohonan anda berjalan melalui proses kelulusan (yang biasanya mengambil masa beberapa hari), anda akan menerima komunikasi mengenai statusnya dan mungkin cadangan untuk kegunaan masa hadapan. Tetapi sebaik sahaja ciri anda diluluskan, ia akan segera diterbitkan ke Repositori Ciri Wolfram dan akan tersedia untuk digunakan oleh sesiapa sahaja. (Dan ini akan muncul dalam ringkasan berita tentang ciri baharu dan sebagainya)

Apa yang perlu ada dalam simpanan?

Perlu diingat bahawa syarikat kami mempunyai standard yang sangat tinggi untuk kesempurnaan, kebolehpercayaan dan kualiti keseluruhan, dan daripada 6000+ fungsi yang telah kami bina ke dalam bahasa Wolfram sejak 30+ tahun yang lalu, semuanya memenuhi keperluan di atas. Matlamat Repositori Fungsi Wolfram adalah untuk menggunakan semua struktur dan kefungsian yang telah wujud dalam Bahasa Wolfram untuk menambah sebanyak mungkin fungsi yang lebih ringan (iaitu, fungsi prestasi yang lebih tinggi).

Sudah tentu, fungsi dalam repositori fungsi Wolfram mesti mematuhi prinsip reka bentuk Bahasa Wolfram - supaya mereka boleh berinteraksi sepenuhnya dengan fungsi lain dan jangkaan pengguna tentang cara fungsi itu berfungsi dengan betul. Walau bagaimanapun, fungsi tersebut tidak semestinya mempunyai kesempurnaan atau kebolehpercayaan yang sama.

Dalam fungsi terbina dalam bahasa Wolfram, kami bekerja keras untuk menjadikan fungsi pengaturcaraan seumum mungkin. Yang dikatakan, apabila dalam repositori fungsi Wolfram tidak ada yang salah dengan mempunyai fungsi di dalamnya yang hanya mengendalikan beberapa kes yang sangat spesifik tetapi berguna. Sebagai contoh, fungsi SendMailFromNotebook boleh menerima fail dalam satu format tertentu dan membuat mel dalam satu cara tertentu. PoligonalDiagram mencipta carta dengan hanya warna dan pelabelan tertentu, dsb.

Perkara lain yang berkaitan dengan fungsi terbina dalam ialah syarikat kami berusaha sedaya upaya untuk mengendalikan semua kes atipikal, untuk mengendalikan input yang salah dengan betul, dan sebagainya. Dalam repositori fungsi, adalah perkara biasa untuk terdapat fungsi khas yang mengendalikan kes utama menyelesaikan masalah dan mengabaikan semua yang lain.

Perkara yang jelas ialah lebih baik untuk mempunyai fungsi yang melakukan lebih banyak dan melakukannya dengan lebih baik, tetapi pengoptimuman untuk repositori fungsi - berbanding dengan fungsi terbina dalam bahasa Wolfram - sepatutnya mempunyai lebih banyak fungsi yang digabungkan dengan lebih banyak fungsi daripada menyelidikinya. proses pelaksanaan setiap fungsi tertentu.

Sekarang mari kita lihat contoh fungsi ujian dalam repositori. Jangkaan ketekalan untuk fungsi sedemikian secara semula jadi jauh lebih rendah daripada untuk fungsi bahasa terbina dalam. Ini benar terutamanya dalam kes di mana fungsi bergantung pada sumber luaran seperti API, adalah penting untuk sentiasa menjalankan ujian yang konsisten, yang secara automatik berlaku dalam algoritma pengesahan. Dalam fail nb, anda boleh menentukan definisi secara eksplisit (dalam bahagian Maklumat Tambahan) dan menentukan seberapa banyak ujian seperti yang ditakrifkan oleh sama ada rentetan input dan output atau objek jenis penuh aksara Ujian Pengesahan, seberapa banyak yang anda lihat patut. Selain itu, sistem sentiasa cuba menjadikan contoh dokumentasi yang anda berikan kepada proses pengesahan (dan kadangkala ini boleh menjadi agak intensif sumber, contohnya, untuk fungsi yang hasilnya bergantung pada nombor rawak atau masa dalam sehari).

Akibatnya, repositori fungsi akan mempunyai beberapa kerumitan pelaksanaan. Sesetengah akan menjadi hanya satu baris kod, yang lain mungkin melibatkan beribu-ribu atau berpuluh-puluh ribu baris, mungkin menggunakan banyak fungsi pembantu. Bilakah ia bernilai menambah fungsi yang memerlukan kod yang sangat sedikit untuk ditakrifkan? Basically, kalau untuk function ada nama mnemonik yang baik, yang mudah difahami oleh pengguna jika mereka melihatnya dalam sekeping kod, maka ia sudah boleh ditambah. Jika tidak, mungkin lebih baik untuk menambahkan semula kod pada program anda setiap kali anda perlu menggunakannya.

Tujuan utama repositori fungsi (seperti namanya) adalah untuk memperkenalkan ciri baharu ke dalam bahasa. Jika anda ingin menambah data baharu atau entiti baharu, gunakan Repositori Data Wolfram. Tetapi bagaimana jika anda ingin memperkenalkan jenis objek baharu untuk pengiraan anda?

Sebenarnya ada dua cara. Anda mungkin ingin memperkenalkan jenis objek baharu yang akan digunakan dalam fungsi baharu dalam repositori fungsi. Dan dalam kes ini, anda sentiasa boleh menulis perwakilan simboliknya dan menggunakannya semasa memasukkan atau mengeluarkan fungsi dalam repositori fungsi.

Tetapi bagaimana jika anda ingin mewakili objek dan kemudian mentakrifkan, melalui fungsi sedia ada dalam Bahasa Wolfram, yang anda mahu bekerja dengannya? Bahasa Wolfram sentiasa mempunyai mekanisme ringan untuk ini, dipanggil UpValues. Dengan beberapa sekatan (terutama untuk fungsi yang tidak dapat menilai hujah mereka), repositori fungsi membolehkan anda hanya mewakili fungsi dan menentukan nilai untuknya. (Untuk meningkatkan jangkaan ketekalan apabila mencipta reka bentuk utama baharu yang disepadukan sepenuhnya di seluruh Bahasa Wolfram secara amnya merupakan prosedur yang sangat penting yang tidak boleh dicapai dengan hanya meningkatkan kos projek dan merupakan sesuatu yang syarikat kami lakukan sebagai sebahagian daripada projek untuk pembangunan jangka panjang bahasa, tugas ini bukanlah matlamat yang ditetapkan sebagai sebahagian daripada pembangunan repositori).

Jadi, apakah yang mungkin ada dalam kod fungsi dalam repositori fungsi? Semuanya terbina dalam Bahasa Wolfram, sudah tentu (sekurang-kurangnya jika ia tidak mewakili ancaman untuk Keselamatan dan prestasi program itu sendiri, sebagai persekitaran pengkomputeran) serta sebarang fungsi daripada repositori fungsi. Walau bagaimanapun, terdapat fungsi lain: fungsi dalam repositori fungsi boleh memanggil API, atau masuk Awan WolframAtau dari sumber lain. Sudah tentu, terdapat beberapa risiko yang berkaitan dengan ini. Disebabkan oleh fakta bahawa tiada jaminan bahawa API tidak akan berubah, dan fungsi dalam stor fungsi akan berhenti berfungsi. Untuk membantu mengenal pasti isu seperti ini, terdapat nota pada halaman dokumentasi (dalam bahagian Keperluan) untuk sebarang ciri yang bergantung pada lebih daripada fungsi Bahasa Wolfram terbina dalam. (Sudah tentu, apabila ia datang kepada data sebenar, mungkin terdapat masalah walaupun dengan fungsi ini - kerana data dunia sebenar sentiasa berubah, malah kadangkala definisi dan strukturnya berubah.)

Sekiranya semua kod untuk repositori ciri Wolfram ditulis dalam Wolfram? Sudah tentu, kod di dalam API luaran tidak boleh ditulis dalam bahasa Wolfram, yang tidak membuat kod bahasa pun. Malah, jika anda menemui fungsi dalam hampir mana-mana bahasa atau pustaka luaran, anda boleh mencipta pembungkus yang membolehkan anda menggunakannya dalam repositori fungsi Wolfram. (Biasanya anda harus menggunakan fungsi terbina dalam untuk ini ExternalEvaluate atau Fungsi Luaran dalam kod bahasa Wolfram.)

Jadi apa gunanya melakukan ini? Pada asasnya, ini membolehkan anda menggunakan keseluruhan sistem Bahasa Wolfram bersepadu dan keseluruhan set keupayaan perisiannya yang bersatu. Jika anda memperoleh pelaksanaan asas daripada pustaka atau bahasa luaran, anda kemudian boleh menggunakan struktur simbolik yang kaya bagi Bahasa Wolfram untuk mencipta fungsi peringkat atas yang mudah yang membolehkan pengguna menggunakan mana-mana fungsi yang telah dilaksanakan dengan mudah. Sekurang-kurangnya, ini harus dilaksanakan dalam dunia yang ideal di mana semua blok bangunan perpustakaan memuatkan dll wujud, dalam hal ini ia akan dikendalikan secara automatik oleh Bahasa Wolfram. (Perlu diingatkan bahawa dalam amalan mungkin terdapat masalah dengan menyediakan bahasa luar sistem komputer tertentu, dan storan awan mungkin menimbulkan isu keselamatan tambahan).

Ngomong-ngomong, apabila anda mula-mula melihat perpustakaan luaran biasa, ia selalunya kelihatan terlalu rumit untuk diliputi dalam beberapa fungsi sahaja, tetapi dalam banyak kes, kebanyakan kerumitan datang daripada mencipta infrastruktur yang diperlukan untuk perpustakaan dan semua fungsi untuk menyokongnya. Walau bagaimanapun, apabila menggunakan Bahasa Wolfram, infrastruktur biasanya sudah terbina dalam pakej, jadi tidak perlu mendedahkan semua fungsi sokongan ini secara terperinci, tetapi hanya mencipta fungsi untuk fungsi khusus aplikasi "paling atas" dalam perpustakaan .

"Ekosistem" pangkalan pengetahuan

Jika anda telah menulis fungsi yang anda gunakan secara kerap, serahkannya ke Repositori Fungsi Wolfram! Jika sesuatu yang lebih tidak keluar daripada ini (pembangunan bahasa), maka itu akan menjadi lebih mudah untuk anda menggunakan fungsi untuk kegunaan peribadi. Walau bagaimanapun, adalah logik untuk mengandaikan bahawa jika anda menggunakan fungsi secara kerap, mungkin pengguna lain juga akan mendapati ia berguna.

Sememangnya, anda mungkin mendapati diri anda berada dalam situasi di mana anda tidak dapat - atau tidak mahu - untuk berkongsi fungsi anda atau sekiranya mendapat akses kepada sumber maklumat peribadi. Walaupun dalam kes sedemikian, anda hanya boleh menggunakan fungsi dalam akaun awan anda sendiri, menyatakan hak akses kepada mereka. (Jika organisasi anda mempunyai awan peribadi Wolfram Enterprise, maka ia tidak lama lagi akan dapat mengehoskan repositori ciri peribadinya sendiri, yang boleh ditadbir dari dalam organisasi anda dan menetapkan sama ada untuk memaksa atau tidak paparan untuk dilihat oleh pengguna pihak ketiga.)

Fungsi yang anda serahkan ke repositori fungsi Wolfram tidak semestinya sempurna; mereka hanya perlu berguna. Ini sedikit seperti bahagian "Ralat" dalam dokumentasi Unix klasik - dalam "Bahagian Definisi" terdapat bahagian "Nota Pengarang" di mana anda boleh menerangkan had, masalah, dsb. yang anda sudah tahu tentang fungsi anda. Selain itu, apabila anda menyerahkan ciri anda ke repositori, anda boleh menambah nota penyerahan yang akan dibaca oleh pasukan kurator yang berdedikasi.

Sebaik sahaja ciri diterbitkan, halamannya sentiasa mempunyai dua pautan di bahagian bawah: "Hantar mesej tentang ciri ini"Dan"Bincangkan dalam komuniti Wolfram" Jika anda melampirkan nota (cth, beritahu saya tentang pepijat), anda boleh menandai kotak yang menyatakan anda mahu mesej dan maklumat hubungan anda dikongsi dengan pengarang ciri.

Kadangkala anda hanya mahu menggunakan fungsi daripada repositori fungsi Wolfram, seperti fungsi terbina dalam, tanpa melihat kodnya. Walau bagaimanapun, jika anda ingin melihat bahagian dalam, sentiasa ada butang Notepad di bahagian atas. Klik padanya dan anda akan mendapat salinan buku nota definisi asal anda sendiri yang telah diserahkan kepada repositori ciri. Kadang-kadang anda boleh menggunakannya sebagai contoh untuk keperluan anda. Pada masa yang sama, anda juga boleh membangunkan pengubahsuaian anda sendiri untuk fungsi ini. Anda mungkin mahu menyiarkan fungsi ini yang anda temui daripada repositori pada komputer anda atau dalam akaun storan awan aphid anda, mungkin anda ingin menyerahkannya ke pangkalan pengetahuan fungsi, mungkin sebagai versi yang dipertingkatkan dan diperluas bagi fungsi asal.

Pada masa hadapan, kami bercadang untuk menyokong forking gaya Git untuk repositori ciri, tetapi buat masa ini kami cuba memastikannya mudah, dan kami sentiasa hanya mempunyai satu versi yang diterima bagi setiap ciri terbina dalam bahasa. Lebih kerap daripada tidak (melainkan pembangun berhenti mengekalkan ciri yang mereka bangunkan dan bertindak balas kepada penyerahan pengguna), pengarang asal ciri itu mengawal kemas kini padanya dan menyerahkan versi baharu, yang kemudiannya disemak dan, jika mereka lulus proses semakan. , diterbitkan dalam bahasa.

Mari kita pertimbangkan persoalan bagaimana "versi" fungsi yang dibangunkan berfungsi. Pada masa ini, apabila anda menggunakan fungsi daripada repositori fungsi, definisinya akan disimpan secara kekal pada komputer anda (atau dalam akaun awan anda jika anda menggunakan awan). Jika versi baharu sesuatu ciri tersedia, pada kali berikutnya anda menggunakannya, anda akan menerima mesej yang memberitahu anda tentang perkara ini. Dan jika anda ingin mengemas kini fungsi kepada versi baharu, anda boleh melakukannya menggunakan arahan Kemas Kini Sumber. ("gumpalan fungsi" sebenarnya menyimpan lebih banyak maklumat versi dan kami merancang untuk menjadikannya lebih mudah diakses oleh pengguna kami pada masa hadapan.)

Salah satu perkara yang menarik tentang Repositori Fungsi Wolfram ialah mana-mana program Bahasa Wolfram, di mana-mana sahaja boleh menggunakan fungsi daripadanya. Jika program muncul dalam pad nota, selalunya mudah untuk memformatkan fungsi repositori sebagai fungsi "objek binari fungsi" yang mudah dibaca (mungkin dengan set versi yang sesuai).

Anda sentiasa boleh mengakses sebarang fungsi dalam repositori fungsi menggunakan teks Fungsi Sumber[...]. Dan ini sangat mudah jika anda menulis kod atau skrip terus untuk Enjin Wolfram, contohnya, dengan menggunakan IDE atau editor kod teks (Perlu diingatkan terutamanya bahawa repositori fungsi serasi sepenuhnya dengan Enjin Wolfram Percuma untuk Pembangun).

Bagaimana ia berfungsi?

Di dalam fungsi dalam repositori Wolfram ini mungkin menggunakan sama sistem sumber asas, seperti dalam semua repositori sedia ada kami yang lain (simpanan data, Repositori Neural Net, koleksi projek demo dll.), seperti semua sumber sistem Wolfram yang lain, Fungsi Sumber akhirnya berdasarkan fungsi ResourceObject.

Pertimbangkan Fungsi Sumber:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Di dalam anda boleh melihat beberapa maklumat menggunakan fungsi tersebut Maklumat:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Bagaimanakah penyediaan fungsi sumber berfungsi? Yang paling mudah ialah kes tempatan semata-mata. Berikut ialah contoh yang mengambil fungsi (dalam kes ini hanya fungsi tulen) dan mentakrifkannya sebagai fungsi sumber untuk sesi program tertentu:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Setelah anda membuat definisi, anda boleh menggunakan fungsi sumber:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Ambil perhatian bahawa terdapat ikon hitam dalam gumpalan fungsi ini Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram. Ini bermakna fungsi BLOB merujuk kepada fungsi sumber dalam memori yang ditakrifkan untuk sesi semasa. Ciri sumber yang disimpan secara kekal pada komputer atau akaun awan anda mempunyai ikon kelabu Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram. Dan terdapat ikon oren untuk ciri sumber rasmi dalam Repositori Ciri Wolfram Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram.

Jadi apa yang berlaku apabila anda menggunakan menu Kembangkan dalam Buku Nota Definisi? Pertama, ia mengambil semua definisi dalam pad nota dan daripadanya mencipta simbolik ResourceObject). (Dan jika anda menggunakan IDE atau program berasaskan teks, maka anda juga boleh mencipta secara eksplisit ResourceObject)

Penggunaan tempatan fungsi daripada repositori pada komputer anda dilakukan menggunakan arahan LocalCache untuk objek sumber menyimpannya sebagai LocalObject pada sistem fail anda. Penyerahan ke akaun awan dilakukan menggunakan arahan CloudDeploy untuk objek sumber, dan penggunaan awan awam adalah CloudPublish. Dalam semua kes Daftar Sumber juga digunakan untuk mendaftarkan nama fungsi sumber, jadi Fungsi Sumber["nama"] akan bekerja.

Jika anda mengklik butang Hantar untuk Repositori Fungsi, perkara yang berlaku di bawahnya SumberSerah dipanggil pada objek sumber. (Dan jika anda menggunakan antara muka input teks, anda juga boleh memanggil SumberSerah secara langsung.)

Secara lalai, penyerahan dibuat di bawah nama yang dikaitkan dengan ID Wolfram anda. Tetapi jika anda menyerahkan permohonan bagi pihak pasukan pembangunan atau organisasi, anda boleh tetapkan ID penerbit yang berasingan dan sebaliknya gunakannya sebagai nama untuk berinteraksi dengan pandangan anda.

Selepas anda menyerahkan mana-mana fungsi anda ke pangkalan pengetahuan fungsi, ia akan dibariskan dalam baris gilir untuk semakan. Jika anda menerima komen sebagai balasan, ia biasanya dalam bentuk fail teks dengan tambahan "sel ulasan" tambahan. Anda sentiasa boleh menyemak status permohonan anda dengan melawati portal ahli sistem sumber. Tetapi setelah ciri anda diluluskan, anda akan dimaklumkan (melalui e-mel) dan ciri anda akan diposkan ke repositori ciri Wolfram.

Beberapa kehalusan di tempat kerja

Pada pandangan pertama, nampaknya anda hanya boleh mengambil buku nota definisi dan meletakkannya secara verbatim ke dalam repositori fungsi, namun, sebenarnya terdapat banyak kehalusan yang terlibat - dan pengendaliannya memerlukan melakukan beberapa pengaturcaraan meta yang cukup kompleks, mengendalikan pemprosesan simbolik sebagai kod yang mentakrifkan fungsi , dan Notepad itu sendiri ditakrifkan. Kebanyakan perkara ini berlaku secara dalaman, di belakang tabir, tetapi ia boleh mempunyai beberapa implikasi yang patut difahami jika anda akan menyumbang kepada pangkalan pengetahuan ciri.

Kehalusan serta-merta pertama: Apabila anda mengisi Buku Nota Definisi, anda boleh merujuk kepada fungsi anda di mana-mana sahaja menggunakan nama seperti MyFunction, yang kelihatan seperti nama biasa untuk fungsi dalam Bahasa Wolfram, tetapi untuk dokumentasi repositori fungsi ini diganti Fungsi Sumber["Fungsi Saya"] ialah perkara yang sebenarnya akan digunakan oleh pengguna apabila bekerja dengan fungsi tersebut.

Kehalusan kedua: apabila anda mencipta fungsi sumber daripada Buku Nota Definisi, semua kebergantungan yang terlibat dalam definisi fungsi mesti ditangkap dan disertakan secara eksplisit. Walau bagaimanapun, untuk memastikan bahawa definisi kekal modular, anda perlu meletakkan segala-galanya dalam yang unik ruang nama. (Sudah tentu, fungsi yang melakukan semuanya, berada dalam repositori fungsi.)

Biasanya anda tidak akan melihat sebarang kesan kod yang digunakan untuk mengkonfigurasi ruang nama ini. Tetapi jika atas sebab tertentu anda memanggil simbol yang kurang dilaksanakan di dalam fungsi anda, maka anda akan melihat bahawa simbol ini berada dalam konteks dalaman fungsi tersebut. Walau bagaimanapun, apabila memproses Notepad Definisi, sekurang-kurangnya simbol yang sepadan dengan fungsi itu sendiri adalah boleh laras untuk paparan terbaik sebagai BLOB berfungsi dan bukannya watak mentah dalam konteks dalaman.

Repositori fungsi adalah untuk menentukan fungsi baru. Dan fungsi ini mungkin mempunyai pilihan. Selalunya parameter ini (contohnya, kaedah atau Saiz gambar) akan dapat digunakan untuk fungsi terbina dalam, dan juga untuk fungsi yang simbol terbina dalam sudah wujud. Tetapi kadangkala ciri baharu mungkin memerlukan pilihan baharu. Untuk mengekalkan modulariti, parameter ini perlu ditakrifkan sebagai simbol dalam konteks dalaman yang unik (atau sesuatu seperti keseluruhan fungsi sumber, iaitu, diri mereka sendiri). Untuk kesederhanaan, repositori fungsi membolehkan anda menentukan pilihan baharu dalam definisi rentetan. Dan untuk kemudahan pengguna, definisi ini (dengan andaian mereka menggunakan OptionValue ΠΈ Corak Pilihan) juga diproses supaya apabila menggunakan fungsi, parameter boleh ditentukan bukan sahaja sebagai rentetan, tetapi juga sebagai simbol global dengan nama yang sama.

Kebanyakan fungsi hanya melakukan perkara yang sepatutnya dilakukan setiap kali ia dipanggil, tetapi beberapa fungsi perlu dimulakan sebelum ia boleh dijalankan dalam sesi tertentu - dan untuk menyelesaikan masalah ini, terdapat bahagian "Initialization" dalam bahagian Definisi.

Fungsi daripada repositori boleh menggunakan fungsi lain yang sudah ada dalam repositori; untuk menyediakan definisi bagi repositori fungsi yang merangkumi dua (atau lebih) fungsi yang merujuk antara satu sama lain, anda mesti menggunakan fungsi tersebut dalam sesi program anda supaya anda boleh rujukan seperti pada mereka Fungsi Sumber["nama"], maka anda boleh mencipta gabungan fungsi ini yang anda perlukan, contoh (saya tidak faham) dan menambah fungsi baharu pada repositori berdasarkan yang telah disiarkan sebelum ini. (atau sudah atau sebelumnya - kedua-dua perkataan adalah kekok)

Prospek pembangunan. Apa yang perlu berlaku apabila repositori menjadi sangat besar?

Hari ini kami baru sahaja melancarkan Repositori Ciri Wolfram, tetapi lama kelamaan kami menjangkakan bahawa saiz dan fungsinya mungkin meningkat secara mendadak, dan apabila ia berkembang dalam pembangunan akan ada pelbagai masalah yang kami jangkakan mungkin timbul.

Masalah pertama melibatkan nama fungsi dan keunikannya. Repositori fungsi direka bentuk sedemikian rupa, seperti fungsi terbina dalam Bahasa Wolfram, anda boleh merujuk mana-mana fungsi yang diberikan hanya dengan menyatakan namanya. Tetapi ini tidak dapat dielakkan bermakna bahawa nama fungsi mestilah unik secara global di seluruh repositori, supaya, sebagai contoh, hanya boleh ada satu Fungsi Sumber["Fungsi Kegemaran Saya"].

Ini mungkin kelihatan seperti masalah besar pada mulanya, tetapi perlu disedari bahawa ia pada asasnya adalah masalah yang sama seperti untuk perkara seperti domain internet atau pengendalian media sosial. Dan hakikatnya ialah sistem hanya perlu mempunyai pendaftar - dan ini adalah salah satu peranan yang akan dilaksanakan oleh syarikat kami untuk pangkalan pengetahuan fungsi Wolfram. (Untuk versi persendirian repositori, pendaftar mereka mungkin pentadbir.) Sudah tentu, domain Internet boleh didaftarkan tanpa apa-apa padanya, tetapi dalam repositori fungsi, nama fungsi hanya boleh didaftarkan jika terdapat definisi sebenar bagi fungsinya.

Sebahagian daripada peranan kami dalam mengurus pangkalan pengetahuan fungsi Wolfram adalah untuk memastikan bahawa nama yang dipilih untuk sesuatu fungsi adalah logik berdasarkan takrifan fungsi tersebut dan ia mengikut konvensyen penamaan Bahasa Wolfram. Kami mempunyai lebih 30 tahun pengalaman menamakan fungsi terbina dalam dalam Bahasa Wolfram, dan pasukan kurator kami akan membawa pengalaman itu ke repositori fungsi juga. Sudah tentu, sentiasa ada pengecualian. Sebagai contoh, nampaknya lebih baik untuk mempunyai nama pendek untuk beberapa fungsi, tetapi lebih baik untuk "mempertahankan" dengan nama yang lebih panjang dan lebih khusus kerana anda kurang berkemungkinan terserempak dengan seseorang yang ingin membuat nama fungsi yang serupa pada masa hadapan .

(Perlu diingatkan di sini bahawa hanya menambah beberapa teg ahli untuk menyahkekaburan fungsi tidak akan mempunyai kesan yang dimaksudkan. Kerana melainkan anda berkeras untuk sentiasa memberikan teg, anda perlu menentukan teg lalai untuk mana-mana fungsi tertentu, dan juga memperuntukkan teg pengarang , yang sekali lagi memerlukan penyelarasan global.)

Apabila asas pengetahuan tentang fungsi Wolfram berkembang, salah satu masalah yang mungkin timbul ialah kebolehtemuan fungsi, yang mana sistem menyediakan fungsi carian (dan fail definisi mungkin termasuk kata kunci, dsb.). Untuk fungsi terbina dalam dalam Bahasa Wolfram, terdapat pelbagai jenis rujukan silang dalam dokumentasi untuk membantu "mengiklankan" fungsi tersebut. Fungsi dalam repositori fungsi boleh merujuk fungsi terbina dalam. Tetapi bagaimana pula sebaliknya? Untuk melakukan ini, kami akan bereksperimen dengan reka bentuk yang berbeza untuk mendedahkan fungsi repositori dalam halaman dokumentasi untuk fungsi terbina dalam.

Untuk fungsi terbina dalam Bahasa Wolfram terdapat lapisan pengesanan yang dipanggil yang disediakan oleh rangkaian "halaman bantuan", yang menyediakan senarai tersusun ciri yang berkaitan dengan kawasan tertentu. Selalunya sukar untuk mengimbangi halaman manual dengan betul, dan apabila bahasa Wolfram berkembang, halaman manual selalunya perlu disusun semula sepenuhnya. Agak mudah untuk meletakkan fungsi daripada repositori ke dalam kategori yang luas, dan juga untuk memecahkan kategori tersebut secara konsisten, tetapi adalah lebih berharga untuk mempunyai halaman rujukan bahasa yang teratur. Masih belum jelas cara terbaik untuk menciptanya untuk keseluruhan pangkalan pengetahuan fungsi. Sebagai contoh, CreateResourceObjectGallery dalam repositori ciri, sesiapa sahaja boleh menyiarkan halaman web yang mengandungi "pilihan" mereka daripada repositori:

Repositori Fungsi Wolfram: Platform akses terbuka untuk sambungan bahasa Wolfram

Repositori fungsi Wolfram dikonfigurasikan sebagai repositori fungsi berterusan, di mana sebarang fungsi di dalamnya akan sentiasa berfungsi. Sudah tentu, versi ciri baharu mungkin tersedia dan kami menjangkakan bahawa beberapa ciri sudah tentu akan menjadi usang dari semasa ke semasa. Fungsi akan berfungsi jika ia digunakan dalam program, tetapi halaman dokumentasinya akan dipautkan ke fungsi baharu yang lebih maju.

Repositori Ciri Wolfram direka untuk membantu anda menemui ciri baharu dengan cepat dan mempelajari cara baharu untuk menggunakan bahasa Wolfram. Kami sangat optimis bahawa beberapa perkara yang telah diterokai dalam repositori ciri akhirnya akan masuk akal untuk menjadi bahagian terbina dalam Bahasa Wolfram teras. Sepanjang dekad yang lalu kami mempunyai set yang sama ciri yang pada asalnya diperkenalkan dalam Wolfram | Alfa. Dan salah satu pengajaran yang dipelajari daripada pengalaman ini ialah mencapai piawaian kualiti dan konsistensi yang kami fokuskan dalam segala-galanya yang terbina dalam bahasa Wolfram memerlukan banyak kerja, yang selalunya lebih sukar daripada usaha awal untuk melaksanakan idea itu. Walaupun begitu, fungsi dalam pangkalan pengetahuan fungsi boleh berfungsi sebagai bukti konsep yang sangat berguna untuk fungsi masa hadapan yang akhirnya boleh dibina ke dalam bahasa Wolfram.

Perkara yang paling penting di sini ialah fungsi dalam repositori fungsi adalah sesuatu yang tersedia untuk digunakan oleh setiap pengguna sekarang. Ada kemungkinan bahawa ciri bahasa ibunda boleh menjadi lebih baik dan lebih berprestasi, tetapi repositori ciri akan membolehkan pengguna mempunyai akses kepada semua ciri baharu dengan segera. Dan, yang paling penting, konsep ini membolehkan semua orang menambah sebarang ciri baharu yang mereka inginkan.

Terdahulu dalam sejarah bahasa Wolfram, idea ini tidak akan berfungsi sebaik yang ada, tetapi pada peringkat ini terdapat begitu banyak usaha yang dimasukkan ke dalam bahasa, dan pemahaman yang mendalam tentang prinsip reka bentuk bahasa, sehingga kini nampaknya sangat mungkin bagi komuniti pengguna yang besar untuk menambah ciri yang akan mengekalkan ketekalan reka bentuk untuk menjadikannya berguna kepada pelbagai pengguna.

Terdapat semangat bakat yang luar biasa(?) dalam komuniti pengguna Bahasa Wolfram. (Sudah tentu, komuniti ini merangkumi ramai ahli R&D terkemuka dalam pelbagai bidang.) Saya berharap Repositori Ciri Wolfram akan menyediakan platform yang berkesan untuk membuka kunci dan menyebarkan semangat bakat ini. Hanya bersama-sama kita boleh mencipta sesuatu yang akan meluaskan dengan ketara kawasan di mana paradigma pengkomputeran bahasa Wolfram boleh digunakan.

Dalam lebih daripada 30 tahun, kami telah melangkah jauh dengan bahasa Wolfram. Sekarang bersama-sama, mari kita pergi lebih jauh. Saya amat menggalakkan semua pengguna bahasa Wolfram yang dihormati di seluruh dunia untuk menggunakan repositori berfungsi sebagai platform untuk ini, serta projek perisian baharu seperti Enjin Wolfram Percuma untuk Pembangun.

Sumber: www.habr.com

Tambah komen