Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Sugeng rawuh, Habr! Aku menehi perhatian sampeyan terjemahan saka kiriman Stephen Wolfram "Repositori Fungsi Wolfram: Ngluncurake Platform Terbuka kanggo Ngembangake Basa Wolfram".

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Prasyarat kanggo konsistensi basa Wolfram

Dina iki kita ngadeg ing ambang prestasi gedhe bebarengan karo basa pamrograman Basa Wolfram. Mung telung minggu kepungkur kita diluncurake free Wolfram engine kanggo gawekanggo mbantu pangguna kita nggabungake Wolfram Language menyang proyek piranti lunak skala gedhe. Dina iki kita miwiti Repositori fungsi Wolfram, kanggo nyedhiyakake platform terkoordinasi kanggo fungsi sing digawe kanggo ngluwihi basa Wolfram, lan kita uga mbukak gudang fungsi kanggo sapa wae sing bisa nyumbang kanggo pangembangan produk piranti lunak.

Repositori Fungsi Wolfram minangka barang sing bisa ditindakake kanthi sifat unik saka Basa Wolfram ora mung minangka basa pamrograman, nanging uga minangka basa komputasi skala lengkap. Ing basa pemrograman tradisional, nambah fungsi anyar sing signifikan biasane kalebu nggawe kabeh perpustakaan tambahan sing bisa uga ora bisa digunakake nalika digunakake bebarengan. Nanging, ing Wolfram Language akeh banget sing wis dibangun ing basa dhewe, sing bisa nggedhekake fungsine kanthi signifikan kanthi nambahake fungsi anyar sing langsung digabungake menyang struktur sakabehe basa.

Contone, repositori fungsi Wolfram wis ngemot 532 fitur anyar disusun dadi 26 kategori tematik:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Semono uga luwih saka 6000 fungsi standar, dibangun ing basa Wolfram, saben fungsi saka gudang duwe kaca dokumentasi kanthi katrangan rinci babagan lan conto karya:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Kanggo pindhah menyang kaca, nyalin obyek ing ndhuwur (fungsi BLOB), tempel menyang baris input banjur jalanake fungsi kasebut - wis dibangun ing basa Wolfram lan didhukung kanthi standar diwiwiti karo versi 12.0:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Sampeyan kudu nyatet kene sing nalika Processing LogoQRCode Sampeyan ora perlu, contone, nyiyapake "perpustakaan pangolahan gambar" - amarga kita wis ngetrapake cara algoritma sing konsisten lan ati-ati ing Wolfram Language pangolahan gambar, sing bisa langsung diproses kanthi macem-macem fungsi basa grafis:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Mugi sing karo dhukungan komunitas apik lan bakat, sing wis akeh lan berkembang (adhedhasar Basa Wolfram) sajrone pirang-pirang dekade kepungkur. Gudang fungsi Wolfram bakal ngidini kanggo mangsa foreseeable kanggo Ngartekno nggedhekake sawetara (bisa duweni potensi pinunjul, specialized ing macem-macem lapangan ilmu lan teknologi) fungsi kasedhiya ing basa. Mangkono, dadi bisa nggunakake loro isi basa (fungsi sing dibangun ing) lan prinsip pembangunan, kang kaleksanan adhedhasar basa. (Perlu dicathet ing kene yen Basa Wolfram wis duwe luwih saka 30 taun sajarah pembangunan lan wutah stabil).
Fungsi saka gudang bisa ngemot potongan kode cilik utawa gedhe sing ditulis ing Wolfram Language. Contone, iki bisa dadi telpon API lan layanan eksternal utawa perpustakaan eksternal ing basa liyane. Sing unik babagan pendekatan iki yaiku nalika sampeyan ngebor fungsi tingkat pangguna, ora bakal ana inkonsistensi potensial amarga pendekatan kasebut dibangun ing ndhuwur struktur sing konsisten saka Wolfram Language - lan saben fungsi bakal kanthi otomatis bisa mlaku kanthi bener - persis kaya dimaksudaké. dheweke kudu.
Struktur cangkang lan pemrograman Wolfram Feature Repository dirancang supaya saben wong bisa nyumbang kanggo sabab umum kanthi cara sing paling gampang lan trep kanggo dheweke - nyatane, mung kanthi ngisi file teks notepad (karo ekstensi nb) WL. Fungsi otomatis sing dibangun ngidini sampeyan mriksa fungsi anyar sing ditambahake menyang repositori kanggo mesthekake integrasi menyang basa kasebut. Perusahaan kita taruhan ing macem-macem pangguna sing bisa nggabungake fungsi kasebut menyang basa, tinimbang babagan kerumitan fungsi anyar - lan sanajan ana proses review, kita ora meksa nindakake perkara kaya ngono. analisis desain painstaking utawa standar ketat kanggo nggenepi lan linuwih fitur panganggo anyar, minangka gantos kanggo testing luwih kaku fitur dibangun ing basa inti sing kita makaryakke.

Ana akeh trade-off lan rincian ing pendekatan iki, nanging goal kita kanggo ngoptimalake repositori fitur Wolfram loro kanggo pengalaman pangguna lan kanggo mesthekake yen fitur panganggo anyar kontribusi meaningful kanggo pangembangan basa. Nalika kita tuwuh, aku ora mangu-mangu yen kita kudu nggawe cara anyar kanggo ngolah lan validasi fungsi sing dibangun ing gudang, paling ora kanggo ngatur akeh fungsi lan nemokake sing dibutuhake pangguna. Nanging, nyemangati yen dalan sing wis dipilih minangka wiwitan sing apik. Aku pribadi ditambahake sawetara fitur menyang database asli. Akeh sing adhedhasar kode sing wis dikembangake dhewe kanggo sawetara wektu. Lan mung butuh sawetara menit kanggo push menyang gudang. Saiki wis ana ing gudang, pungkasane aku bisa - langsung lan kapan wae - nggunakake fungsi kasebut yen perlu, tanpa kudu kuwatir nggoleki file, ndownload paket, lsp.

Nambah efisiensi nalika nyuda biaya

Malah sadurunge Internet, ana cara kanggo nuduhake kode Wolfram Language (proyek terpusat utama pisanan kita yaiku MathSource, digawe kanggo Mathematica ing 1991 adhedhasar CD-ROM, etc.). Mesthi, pendekatan sing diusulake kanggo implementasine adhedhasar repositori fungsi Wolfram minangka alat sing luwih kuat lan dipercaya kanggo ngetrapake tugas ing ndhuwur.

Luwih saka 30 taun, perusahaan kita wis makarya kanthi tekun kanggo njaga integritas struktur basa Wolfram, lan iki penting kanggo mesthekake yen basa Wolfram ora mung dadi basa pamrograman, nanging uga dadi basa pamrograman. basa komputasi lengkap. Lan kanthi mangkono, inti saka pendekatan kanggo ngleksanakake repositori fungsi Wolfram yaiku nggunakake pendekatan terpadu kanggo program lan ngembangake fungsi-fungsi anyar sing ditambahake kanthi urut lan pas karo kerangka basa supaya bisa berkembang lan berkembang bebarengan.

Ana macem-macem proses komputasi ing struktur implementasine saben fungsi. Perlu dicathet ing kene yen fungsi kasebut nduweni tampilan sing jelas lan seragam lan keterbacaan visual kanggo pangguna. Ing konteks iki, fungsi sing dibangun ing Wolfram Language diwenehi luwih saka 6000 conto urut-urutan babagan carane fungsi program kanthi bener (iki video program uripkang kalebu atusan jam proses nggawe program standar). Apa pendekatan iki pungkasanipun ndadekake repositori fitur Wolfram bisa nindakake kanthi apik yaiku sifat struktural saka Wolfram Language, kanthi akeh perpustakaan tambahan lan macem-macem sing wis dibangun ing basa kasebut. Contone, yen sampeyan duwe fungsi sing ngolah gambar, utawa susunan jarang, utawa struktur molekulLan data geografis utawa sawetara liyane - perwakilan simbolis sing konsisten wis ana ing basa kasebut, lan amarga iki, fungsi sampeyan langsung dadi kompatibel karo fungsi liyane ing basa kasebut.

Nggawe repositori sing bener-bener bisa digunakake minangka tugas pemrograman meta sing menarik. Contone, keluwihan watesan ing program kasebut ora bakal ngidini entuk penyatuan lan universalitas algoritma sing dibutuhake. Kaya jumlah watesan fungsi sing ora cukup, sampeyan ora bakal bisa ngetrapake urutan eksekusi algoritma sing cukup bener. Sawetara conto sadurunge ngleksanakake kompromi saka pendekatan kasebut, sing ditindakake dening perusahaan kita, bisa ditindakake kanthi stabil - yaiku: Proyek Tungsten Demonstrasi, diluncurake ing 2007 lan saiki mlaku online kanthi luwih saka 12000 demo interaktif pangguna. ING database Wolfram ana luwih saka 600 database siap-digawe sing bisa digunakake ing Wolfram Language, lan Panyimpenan jaringan saraf Wolfram diisi maneh karo jaringan saraf anyar meh saben minggu (wis ana 118 saiki) lan langsung disambungake liwat fungsi kasebut. NetModel ing Basa Wolfram.

Kabeh conto ing ndhuwur duwe fitur dhasar - obyek lan fungsi sing diklumpukake ing proyek kasebut duwe tingkat struktur lan distribusi proses sing dhuwur banget. Mesthine, rincian struktur apa sing demo utawa jaringan saraf utawa liya-liyane bisa beda-beda, nanging struktur dhasar kanggo repositori saiki tetep padha. Dadi, apa pendapat sampeyan, pangguna sing dikasihi, babagan nggawe repositori sing nambah ekstensi ing basa Wolfram? Basa Wolfram dirancang kanthi fleksibel, saengga bisa ditambah lan diowahi kanthi cara apa wae. Kahanan iki penting banget kanggo kemampuan nggawe macem-macem proyek piranti lunak kanthi cepet ing Wolfram Language. Perlu dicathet ing kene yen keluwesan basa mundhak, biaya proyek sing ditindakake ing basa kasebut mesthi bakal mundhak. Iki amarga kasunyatan manawa pangguna luwih akeh nggunakake basa kasebut, luwih akeh fungsi darmabakti sing ditampa, nanging kita ora lali manawa pendekatan iki uga duwe sisi negatif babagan ketidakmampuan kanggo njamin konsistensi modul program.

Ana masalah umum karo perpustakaan ing basa pemrograman tradisional - yen sampeyan nggunakake siji perpustakaan, umpamane, kode kasebut bakal bisa digunakake kanthi bener, nanging yen sampeyan nyoba nggunakake macem-macem perpustakaan, ora ana jaminan manawa bakal sesambungan kanthi bener. . Uga, ing basa pamrograman tradisional - ora kaya basa komputasi lengkap - ora ana cara kanggo njamin anané representasi sing dibangun kanthi konsisten kanggo fungsi utawa jinis data liyane saka struktur dhasar. Nanging, nyatane, masalah kasebut luwih gedhe tinimbang sing katon sepisanan: yen ana sing mbangun fungsi vertikal skala gedhe, mula tanpa biaya pemrograman proyek terpusat sing dilebokake ing basa Wolfram, ora mungkin. entuk konsistensi. Mulane penting yen kabeh modul piranti lunak tansah bisa digunakake kanthi bener.

Dadi, ide ing mburi repositori fitur Wolfram yaiku kanggo ngindhari masalah kasebut ing ndhuwur kanthi mung nambah ekstensi menyang basa ing potongan kode sing relatif cilik liwat fitur individu sing luwih gampang dikembangake minangka modul sing koheren. Sing dikandhakake, ana fitur pemrograman sing ora bisa ditindakake kanthi nggunakake fungsi individu (lan perusahaan kita ngrancang ngeculake algoritma pemrograman sing dioptimalake ing mangsa ngarep kanggo mbantu ngetrapake paket piranti lunak skala gedhe). Nanging, adhedhasar fungsi sing wis dibangun ing Wolfram Language, ana akeh kemungkinan program sing dileksanakake adhedhasar fungsi individu. Ide ing kene yaiku kanthi gaweyan pemrograman sing rada sithik, bisa nggawe sawetara fungsi anyar lan migunani banget sing bakal nyedhiyakake koherensi sing cukup kanggo desain kasebut, bakal dikoordinasi kanthi apik, lan uga, saliyane iki, padha bakal bisa gampang lan akeh digunakake ing basa ing mangsa ngarep.

Pendekatan iki, mesthi, kompromi. Yen paket sing luwih gedhe dileksanakake, bisa dibayangake fungsionalitas anyar sing bakal banget kuat lan migunani. Yen ana perlu kanggo njaluk fungsi anyar sing bakal pas karo kabeh liya, nanging sampeyan ora gelem nglampahi akèh gaweyan ing ngembangaken project, iki, sayangé, bisa mimpin kanggo abang ing orane katrangan saka project. Gagasan ing mburi repositori fitur Wolfram yaiku nyedhiyakake fungsi kanggo bagean sing ditemtokake saka proyek; pendekatan iki bakal nambah fungsi sing kuat nalika nggawe luwih gampang kanggo njaga konsistensi sing apik ing proyek pemrograman.

Mbantu nambahake fungsi khusus menyang repositori fungsi

Tim kita wis kerja keras kanggo nggampangake pangguna kanggo menehi kontribusi menyang fitur repositori Wolfram. Ing desktop (wis ing versi 12.0), Sampeyan mung bisa mbukak tab menu utama kanthi urutan: File > New > RepositoryItem > Function Repository Item lan sampeyan bakal entuk "Notebook definisi" (secara terprogram ing meja kerja. Sampeyan uga bisa nggunakake fungsi analog - NggaweNotebook["Sumber Fungsi"]):

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Ana rong langkah utama sing kudu sampeyan lakoni: pisanan, tulis kode kanggo fungsi sampeyan lan, kapindho, tulisake dokumentasi sing nggambarake cara fungsi sampeyan kudu bisa digunakake.
Klik tombol "Open Sample" ing sisih ndhuwur kanggo ndeleng conto apa sing kudu sampeyan lakoni:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Ateges, sampeyan nyoba nggawe sing padha karo fungsi sing dibangun ing Wolfram Language. Kajaba iku bisa nindakake soko luwih spesifik saka fungsi dibangun ing. Ing wektu sing padha, pangarepan babagan kelengkapan lan linuwih bakal luwih murah.
Sampeyan kudu menehi jeneng fungsi sing miturut pedoman jeneng fungsi Wolfram Language. Kajaba iku, sampeyan kudu ngembangake dokumentasi kanggo fungsi sampeyan, padha karo fungsi basa sing dibangun. Aku bakal ngomong babagan iki kanthi luwih rinci mengko. Saiki, mung sok dong mirsani yen ing baris tombol ing ndhuwur file notebook definisi ana tombol "Pedoman Gaya", sing nerangake apa sing kudu ditindakake, lan tombol Alat, sing nyedhiyakake alat kanggo ngowahi format dokumentasi fungsi sampeyan.
Yen sampeyan yakin kabeh wis diisi kanthi bener lan sampeyan wis siyap, klik tombol "Mriksa". Iku pancen normal yen sampeyan durung ngerti kabeh rincian. Dadi fungsi "Priksa" bakal kanthi otomatis mbukak lan nindakake akeh gaya lan mriksa konsistensi. Asring, bakal langsung njaluk sampeyan konfirmasi lan nampa koreksi (Contone: "Baris iki kudu diakhiri karo titik titik," lan bakal njaluk sampeyan ngetik titik titik). Kadhangkala dheweke bakal njaluk sampeyan nambah utawa ngganti dhewe. Kita bakal terus nambah fitur-fitur anyar menyang fungsi otomatis tombol Priksa, nanging tujuane yaiku kanggo mesthekake yen kabeh sing dikirim menyang repositori fitur wis ngetutake pedoman gaya sabisa.

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Dadi, sawise mbukak "Priksa", sampeyan bisa nggunakake "Preview". "Pratinjau" nggawe pratinjau kaca dokumentasi sing ditetepake kanggo fungsi sampeyan. Sampeyan uga bisa nggawe pratinjau kanggo file sing digawe ing komputer utawa kanggo file sing ana ing panyimpenan awan. Yen, sakperangan alesan, sampeyan ora puas karo apa sing katon ing pratinjau, mung bali lan nggawe koreksi sing dibutuhake, banjur klik tombol Pratinjau maneh.
Saiki sampeyan siyap kanggo push fungsi menyang repositori. Tombol Deploy menehi sampeyan papat opsi:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Sing penting ing langkah iki yaiku sampeyan bisa ngirim fungsi menyang gudang fungsi Wolfram supaya kasedhiya kanggo sapa wae. Ing wektu sing padha, sampeyan uga bisa nyelehake fungsi kanggo pangguna sing winates. Contone, sampeyan bisa nggawe fungsi sing di-host sacara lokal ing komputer supaya kasedhiya nalika sampeyan nggunakake komputer kasebut. Utawa sampeyan bisa ngirim ing Panjenengan akun awan, supaya kasedhiya kanggo sampeyan nalika disambungake menyang maya. Sampeyan uga bisa dadi host umum (nyebar) fitur kasebut liwat akun maya. Ora bakal ana ing repositori fitur Wolfram tengah, nanging sampeyan bakal bisa menehi wong URL sing bakal ngidini dheweke entuk fitur saka akun sampeyan. (Ing mangsa ngarep, kita uga bakal ndhukung repositori pusat ing saindhenging perusahaan kita.)

Dadi ayo ngomong sampeyan pengin ngirim fungsi sampeyan menyang basis kawruh fungsi Wolfram. Kanggo nindakake iki, klik tombol "Kirim" menyang repositori. Dadi apa sing kedadeyan saiki? Aplikasi sampeyan langsung antri kanggo ditinjau lan disetujoni dening tim kurator khusus.

Nalika aplikasi sampeyan maju liwat proses persetujuan (sing biasane njupuk sawetara dina), sampeyan bakal nampa komunikasi babagan status lan bisa uga saran kanggo panggunaan ing mangsa ngarep. Nanging yen fitur sampeyan disetujoni, bakal langsung diterbitake menyang Wolfram Feature Repository lan bakal kasedhiya kanggo sapa wae sing bisa digunakake. (Lan iki bakal katon ing warta Digests fitur anyar lsp.)

Apa sing kudu ana ing panyimpenan?

Perlu dicathet yen perusahaan kita nduweni standar sing dhuwur banget kanggo kelengkapan, linuwih lan kualitas sakabèhé, lan saka 6000+ fungsi sing wis dibangun ing basa Wolfram sajrone 30+ taun kepungkur, kabeh nyukupi syarat ing ndhuwur. Sasaran saka Wolfram Function Repository yaiku nggunakake kabeh struktur lan fungsi sing wis ana ing Wolfram Language kanggo nambah akeh fungsi sing luwih entheng (yaiku, fungsi kinerja sing luwih dhuwur).

Mesthi, fungsi ing gudang fungsi Wolfram kudu salaras karo prinsip desain saka Wolfram Language - supaya padha bisa sesambungan kanthi lengkap karo fungsi liyane lan pangarepan pangguna carane fungsi kudu mlaku kanthi bener. Nanging, fungsi kasebut ora kudu padha karo jangkep utawa linuwih.

Ing fungsi sing dibangun ing basa Wolfram, kita kerja keras kanggo nggawe fungsi pemrograman kanthi umum. Menawi mekaten, nalika sampeyan lagi ing repositori fungsi Wolfram, ana apa-apa salah karo duwe fungsi sing mung nangani sawetara kasus banget tartamtu nanging migunani. Contone, fungsi SendMailFromNotebook bisa nampa file ing format tartamtu lan nggawe mail ing siji cara tartamtu. Diagram Poligonal nggawe denah karo mung werna tartamtu lan Labeling, etc.

Titik liyane sing ana gandhengane karo fungsi sing dibangun yaiku perusahaan kita ngupayakake kabeh upaya kanggo nangani kabeh kasus sing ora umum, kanggo nangani input sing salah, lan liya-liyane. Ing repositori fungsi, iku pancen normal kanggo ana fungsi khusus sing nangani kasus utama kanggo ngatasi masalah lan nglirwakake kabeh liyane.

Titik sing jelas yaiku luwih becik duwe fungsi sing nindakake luwih akeh lan nindakake luwih apik, nanging optimasi kanggo gudang fungsi - minangka lawan saka fungsi sing dibangun ing basa Wolfram - kudu luwih akeh fungsi sing digabungake karo fungsi luwih akeh tinimbang nggoleki. proses implementasine saben fungsi tartamtu.

Saiki ayo goleki conto fungsi tes ing repositori. Pangarepan konsistensi kanggo fungsi kasebut mesthi luwih murah tinimbang fungsi basa sing dibangun. Iki utamané bener ing kasus ngendi fungsi gumantung ing sumber daya external kayata API, iku penting kanggo terus-terusan nganakake tes konsisten, kang otomatis kedaden ing kalkulus verifikasi. Ing file nb, sampeyan bisa nemtokake definisi kanthi jelas (ing bagean Informasi Tambahan) lan nemtokake akeh tes kaya sing ditetepake dening string input lan output utawa obyek karakter lengkap. Tes Verifikasi, minangka akeh sing katon cocok. Kajaba iku, sistem tansah nyoba kanggo nguripake conto dokumentasi sing nyedhiyani menyang proses verifikasi (lan kadhangkala iki bisa cukup sumber-intensif, contone, kanggo fungsi sing asil gumantung ing nomer acak utawa wektu).

Akibaté, repositori fungsi bakal duwe sawetara kerumitan implementasine. Sawetara bakal mung siji baris kode, liyane bisa ndherek ewu utawa puluhan ewu baris, kamungkinan nggunakake akeh fungsi helper. Nalika iku worth nambah fungsi sing mbutuhake kode banget sethitik kanggo nemtokake? Sejatine, yen kanggo fungsi ana jeneng mnemonic apik, sing bakal gampang dimangerteni dening pangguna yen ndeleng ing potongan kode, banjur bisa ditambahake. Yen ora, luwih becik sampeyan nambahake kode kasebut menyang program sampeyan saben-saben sampeyan kudu nggunakake.

Tujuan utama repositori fungsi (kaya jenenge) yaiku kanggo ngenalake fitur-fitur anyar menyang basa kasebut. Yen sampeyan pengin nambah data anyar utawa entitas anyar, nggunakake Repositori Data Wolfram. Nanging kepiye yen sampeyan pengin ngenalake jinis obyek anyar kanggo petungan sampeyan?

Ana rong cara. Sampeyan bisa uga pengin ngenalake jinis obyek anyar sing bakal digunakake ing fungsi anyar ing gudang fungsi. Lan ing kasus iki, sampeyan bisa tansah mung nulis mudhun perwakilan simbolis lan nggunakake nalika inputting utawa outputting fungsi ing gudang fungsi.

Nanging yen sampeyan pengin makili obyek lan banjur nemtokake, liwat fungsi sing ana ing Wolfram Language, sing pengin digarap? Wolfram Language wis mesthi wis mekanisme entheng kanggo iki, disebut UpValues. Kanthi sawetara watesan (utamane kanggo fungsi sing ora bisa ngevaluasi argumentasi), repositori fungsi ngidini sampeyan mung makili fungsi lan nemtokake nilai kasebut. (Kanggo ngunggahake pangarepan konsistensi nalika nggawe desain utama anyar sing terintegrasi kanthi lengkap ing saindhenging Wolfram Language umume minangka prosedur sing penting banget sing ora bisa digayuh kanthi mung nambah biaya proyek lan minangka proyek sing ditindakake perusahaan kita minangka bagean saka proyek. kanggo pangembangan basa jangka panjang, tugas iki dudu tujuan sing disetel minangka bagéan saka pangembangan repositori).

Dadi, apa sing bisa ana ing kode fungsi ing repositori fungsi? Kabeh dibangun ing Wolfram Language, mesthi (paling ora yen ora makili ancaman kanggo keamanan lan kinerja program kasebut dhewe, minangka lingkungan komputasi) uga fungsi apa wae saka repositori fungsi. Nanging, ana fungsi liyane: fungsi ing repositori fungsi bisa nelpon API, utawa ing Awan Wolfram, utawa saka sumber liyane. Mesthi, ana sawetara risiko sing ana gandhengane karo iki. Amarga kasunyatan manawa ora ana jaminan yen API ora bakal diganti, lan fungsi ing toko fungsi bakal mandheg. Kanggo mbantu ngenali masalah kaya iki, ana cathetan ing kaca dhokumèntasi (ing bagean Requirements) kanggo fitur apa wae sing ngandelake luwih saka fungsi Wolfram Language sing dibangun. (Mesthi wae, nalika nerangake data nyata, bisa uga ana masalah sanajan fungsi iki - amarga data donya nyata terus saya ganti, lan kadhangkala uga definisi lan owah-owahan struktur.)

Apa kabeh kode kanggo repositori fitur Wolfram kudu ditulis ing Wolfram? Mesthine, kode ing API eksternal ora kudu ditulis nganggo basa Wolfram, sing malah ora nggawe kode basa. Ing kasunyatan,, yen sampeyan nemokake fungsi ing meh wae basa external utawa perpustakaan, sampeyan bisa nggawe pambungkus sing ngijini sampeyan kanggo nggunakake ing gudang fungsi Wolfram. (Biasane sampeyan kudu nggunakake fungsi sing dibangun kanggo iki ExternalEvaluate utawa Fungsi Eksternal ing kode basa Wolfram.)

Dadi apa gunane nindakake iki? Intine, iki ngidini sampeyan nggunakake kabeh sistem Wolfram Language sing terintegrasi lan kabeh kemampuan piranti lunak sing digabungake. Yen sampeyan entuk implementasi dhasar saka perpustakaan utawa basa eksternal, sampeyan bisa nggunakake struktur simbolis sing sugih saka Wolfram Language kanggo nggawe fungsi tingkat ndhuwur sing trep sing ngidini pangguna gampang nggunakake fungsi sing wis ditindakake. Paling ora, iki kudu bisa ditindakake ing jagad sing cocog ing ngendi kabeh blok bangunan ngemot perpustakaan lan liya-liyane, mula bakal ditangani kanthi otomatis dening Wolfram Language. (Perlu dicathet yen ing praktik bisa uga ana masalah nyetel basa njaba sistem komputer tartamtu, lan panyimpenan maya bisa nyebabake masalah keamanan tambahan).

Miturut cara, nalika pisanan katon ing perpustakaan external khas, padha asring katon banget Komplek kanggo dilindhungi mung sawetara fungsi, nanging ing akeh kasus, akeh kerumitan teka saka nggawe infrastruktur sing dibutuhake kanggo perpustakaan lan kabeh fungsi kanggo. ndhukung iku. Nanging, nalika nggunakake Wolfram Language, prasarana biasane wis dibangun ing paket, lan ora perlu kanggo mbabarake kabeh fungsi dhukungan ing rinci, nanging mung nggawe fungsi kanggo "paling ndhuwur" fungsi aplikasi-tartamtu ing perpustakaan. .

"Ekosistem" saka basis kawruh

Yen sampeyan wis nulis fungsi sing sampeyan gunakake kanthi rutin, kirimake menyang Repositori Fungsi Wolfram! Yen soko liyane ora metu saka iki (pangembangan basa), banjur bakal luwih trep kanggo nggunakake fungsi kanggo panggunaan pribadi. Nanging, logis kanggo nganggep yen sampeyan nggunakake fungsi kasebut kanthi rutin, bisa uga pangguna liyane bakal migunani.

Mesthi wae, sampeyan bisa nemokake dhewe ing kahanan sing ora bisa - utawa ora pengin - nuduhake fungsi sampeyan utawa yen sampeyan entuk akses menyang sumber informasi pribadi. Malah ing kasus kaya mengkono, sampeyan mung bisa masang fungsi ing akun maya dhewe, nemtokake hak akses menyang wong-wong mau. (Yen organisasi sampeyan duwe Cloud pribadi Wolfram Enterprise, banjur bakal bisa dadi tuan rumah repositori fitur pribadhi dhewe, sing bisa ditindakake saka organisasi sampeyan lan nyetel apa ora meksa tampilan supaya dideleng dening pangguna pihak katelu.)

Fungsi sing dikirim menyang gudang fungsi Wolfram ora kudu sampurna; mung kudu migunani. Iki kaya bagean "Kasalahan" ing dokumentasi Unix klasik - ing "Bagian Definisi" ana bagean "Cathetan Penulis" sing bisa njlèntrèhaké watesan, masalah, lan liya-liyane sing wis ngerti babagan fungsi sampeyan. Kajaba iku, nalika ngirim fitur menyang repositori, sampeyan bisa nambah cathetan kiriman sing bakal diwaca dening tim kurator khusus.

Sawise fitur diterbitake, kaca kasebut mesthi duwe rong tautan ing sisih ngisor: "Kirimi pesen babagan fitur iki"Lan"Rembugan ing komunitas Wolfram" Yen sampeyan nglampirake cathetan (contone, ngandhani babagan kewan omo), sampeyan bisa mriksa kothak sing ujar manawa sampeyan pengin pesen lan informasi kontak dituduhake karo penulis fitur.

Kadhangkala sampeyan mung pengin nggunakake fungsi saka repositori fungsi Wolfram, kayata fungsi sing dibangun, tanpa ndeleng kode kasebut. Nanging, yen sampeyan pengin ndeleng ing njero, mesthi ana tombol Notepad ing sisih ndhuwur. Klik lan sampeyan bakal entuk salinan notebook definisi asli sing dikirim menyang repositori fitur. Kadhangkala sampeyan mung bisa nggunakake minangka conto kanggo kabutuhan sampeyan. Ing wektu sing padha, sampeyan uga bisa ngembangake modifikasi dhewe saka fungsi iki. Sampeyan bisa uga pengin ngirim fungsi iki sing ditemokake saka gudang ing komputer utawa ing akun panyimpenan maya aphid, mbok menawa sampeyan pengin ngirim menyang basis kawruh fungsi, mbok menawa minangka apik, versi ditambahi saka fungsi asli.

Ing mangsa ngarep, kita rencana kanggo ndhukung Git-gaya forking kanggo repositori fitur, nanging saiki kita nyoba kanggo tetep prasaja, lan kita tansah mung siji versi ditampa saka saben fitur dibangun ing basa. Luwih kerep tinimbang ora (kajaba pangembang nyerah kanggo njaga fitur sing dikembangake lan nanggapi kiriman pangguna), penulis asli fitur kasebut ngontrol nganyari kasebut lan ngirim versi anyar, sing banjur dideleng lan, yen lulus proses review. , diterbitake ing basa.

Ayo nimbang pitakonan babagan "versi" fungsi sing dikembangake. Saiki, yen sampeyan nggunakake fungsi saka gudang fungsi, definisi kasebut bakal disimpen kanthi permanen ing komputer (utawa ing akun maya yen sampeyan nggunakake awan). Yen versi anyar saka fitur kasedhiya, ing wektu sabanjuré sampeyan nggunakake, sampeyan bakal nampa pesen notifikasi iki. Lan yen sampeyan pengin nganyari fungsi kanggo versi anyar, sampeyan bisa nindakake iku nggunakake printah ResourceUpdate. ("function blob" bener-bener nyimpen informasi versi luwih akeh, lan kita arep nggawe iki luwih gampang diakses dening pangguna ing mangsa ngarep.)

Salah sawijining perkara sing apik babagan Repositori Fungsi Wolfram yaiku program Wolfram Language, ing ngendi wae bisa nggunakake fungsi kasebut. Yen program katon ing notepad, asring trep kanggo ngowahi format fungsi repositori minangka fungsi "obyek binar fungsi" sing gampang diwaca (mbok menawa nganggo versi sing cocog).

Sampeyan bisa ngakses sembarang fungsi ing gudang fungsi nggunakake teks Fungsi Sumber Daya[...]. Lan iki trep banget yen sampeyan nulis kode utawa script langsung kanggo Wolfram Engine, contone, karo nggunakake IDE utawa editor kode teks (kudu dicathet utamane yen repositori fungsi kompatibel karo Mesin Wolfram Gratis kanggo Pangembang).

Carane ora iku bisa?

Nang fungsi ing gudang Wolfram iki bisa nggunakake persis padha sistem sumber daya dhasar, kaya ing kabeh repositori liyane sing ana (simpen data, Neural Net Repository, koleksi proyek demo etc.), kaya kabeh sumber daya sistem Wolfram liyane, Fungsi Sumber Daya wekasanipun adhedhasar fungsi ResourceObject.

Coba Fungsi Sumber Daya:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Nang sampeyan bisa ndeleng sawetara informasi nggunakake fungsi informasi:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Kepiye cara nyetel fungsi sumber daya? Sing paling gampang yaiku kasus lokal. Iki minangka conto sing njupuk fungsi (ing kasus iki mung fungsi murni) lan nemtokake minangka fungsi sumber daya kanggo sesi program tartamtu:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Sawise nggawe definisi, sampeyan bisa nggunakake fungsi sumber daya:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Elinga yen ana lambang ireng ing blob fungsi iki Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram. Iki tegese fungsi BLOB nuduhake fungsi sumber daya ing memori sing ditetepake kanggo sesi saiki. Fitur sumber daya sing disimpen kanthi permanen ing komputer utawa akun maya sampeyan duwe lambang abu-abu Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram. Lan ana lambang oranye kanggo fitur sumber resmi ing Wolfram Feature Repository Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram.

Dadi apa sing kedadeyan nalika sampeyan nggunakake menu Expand ing Notebook Definition? Pisanan, njupuk kabeh definisi ing notepad lan saka wong-wong mau nggawe simbolis ResourceObject). (Lan yen sampeyan nggunakake IDE utawa program adhedhasar teks, sampeyan uga bisa nggawe kanthi jelas ResourceObject)

Panyebaran lokal fungsi saka repositori ing komputer ditindakake kanthi nggunakake perintah kasebut LocalCache kanggo obyek sumber kanggo nyimpen minangka LocalObject ing sistem file sampeyan. Panyebaran menyang akun maya wis rampung nggunakake printah CloudDeploy kanggo obyek sumber daya, lan penyebaran awan umum CloudPublish. Ing kabeh kasus ResourceRegister uga digunakake kanggo ndhaftar jeneng fungsi sumber daya, supaya Fungsi Sumber Daya["jeneng"] bakal nyambut gawe.

Yen sampeyan ngeklik tombol Kirim kanggo Repositori Fungsi, apa sing kedadeyan ing ngisor iki Sumber DayaKirim disebut obyek sumber daya. (Lan yen sampeyan nggunakake antarmuka input teks, sampeyan uga bisa nelpon Sumber DayaKirim langsung.)

Kanthi gawan, kiriman digawe miturut jeneng sing digandhengake karo ID Wolfram sampeyan. Nanging yen sampeyan ngirim aplikasi kanggo tim pangembangan utawa organisasi, sampeyan bisa nyetel ID penerbit sing kapisah lan tinimbang nggunakake jeneng kasebut kanggo sesambungan karo tampilan sampeyan.

Sawise sampeyan wis ngirim sembarang fungsi kanggo basis kawruh fungsi, iku bakal queued kanggo review. Yen sampeyan nampa komentar kanggo nanggepi, biasane bakal ana ing wangun file teks kanthi tambahan "sel komentar". Sampeyan bisa tansah mriksa status aplikasi kanthi ngunjungi portal anggota sistem sumber daya. Nanging yen fitur sampeyan disetujoni, sampeyan bakal diwenehi kabar (liwat email) lan fitur sampeyan bakal dikirim menyang repositori fitur Wolfram.

Sawetara subtleties ing karya

Sepisanan bisa uga katon kaya sampeyan mung bisa njupuk notebook definisi lan sijine iku verbatim menyang repositori fungsi, Nanging, ana bener cukup akeh subtleties melu - lan nangani wong-wong mau mbutuhake nindakake sawetara meta-programming cantik Komplek, nangani pangolahan simbolis. minangka kode sing nemtokake fungsi, lan Notepad dhewe ditetepake. Umume kedadeyan kasebut sacara internal, ing mburi layar, nanging bisa uga duwe sawetara implikasi sing kudu dingerteni yen sampeyan bakal menehi kontribusi ing basis kawruh fitur.

Subtlety langsung pisanan: Nalika sampeyan ngisi Notebook Definition, sampeyan mung bisa ngrujuk menyang fungsi ing ngendi wae nggunakake jeneng kaya MyFunction, sing katon kaya jeneng biasa kanggo fungsi ing Wolfram Language, nanging kanggo dokumentasi repositori fungsi iki diganti. Fungsi Sumber Daya["MyFunction"] yaiku apa sing bakal digunakake pangguna nalika nggarap fungsi kasebut.

Subtlety kapindho: nalika sampeyan nggawe fungsi sumber daya saka Notebook Definition, kabeh dependensi sing melu ing definisi fungsi kudu dijupuk lan eksplisit klebu. Nanging, kanggo mesthekake yen definisi tetep modular, sampeyan kudu sijine kabeh ing unik papan jeneng. (Mesthi, fungsi sing nindakake kabeh, ana ing repositori fungsi.)

Biasane sampeyan ora bakal weruh jejak kode sing digunakake kanggo ngatur ruang jeneng iki. Nanging yen sakperangan alesan sampeyan nelpon simbol sing ora dileksanakake ing njero fungsi sampeyan, sampeyan bakal weruh yen simbol iki ana ing konteks internal fungsi kasebut. Nanging, nalika ngolah Definition Notepad, paling ora simbol sing cocog karo fungsi kasebut luwes kanggo tampilan paling apik minangka BLOB fungsional tinimbang karakter mentah ing konteks internal.

Repositori fungsi kanggo nemtokake fungsi anyar. Lan fungsi kasebut bisa uga duwe pilihan. Asring paramèter kasebut (contone, cara utawa Ukuran Gambar) bakal bisa digunakake kanggo fungsi sing dibangun, uga kanggo fungsi sing wis ana simbol sing dibangun. Nanging kadhangkala fitur anyar mbutuhake opsi anyar. Kanggo njaga modularitas, parameter kasebut kudu dadi simbol sing ditetepake ing konteks internal sing unik (utawa kaya kabeh fungsi sumber daya, yaiku dhewe). Kanggo gamblang, repositori fungsi ngidini sampeyan nemtokake opsi anyar ing definisi senar. Lan kanggo kepenak pangguna, definisi kasebut (assuming digunakake OptionValue и PilihanPola) uga diproses supaya nalika nggunakake fungsi, paramèter bisa ditemtokake ora mung minangka strings, nanging uga minangka simbol global kanthi jeneng sing padha.

Umume fungsi mung nindakake apa sing kudu ditindakake saben-saben diarani, nanging sawetara fungsi kudu diwiwiti sadurunge bisa mbukak ing sesi tartamtu - lan kanggo ngatasi masalah iki, ana bagean "Initialization" ing bagean Definition.

Fungsi saka repositori bisa nggunakake fungsi liyane sing wis ana ing repositori; kanggo nyetel definisi kanggo repositori fungsi sing kalebu rong (utawa luwih) fungsi sing ngrujuk saben liyane, sampeyan kudu masang ing sesi program supaya sampeyan bisa referensi kaya ing wong-wong mau Fungsi Sumber Daya["jeneng"], banjur sampeyan bisa nggawe kombinasi fungsi iki sampeyan kudu, conto (Aku ora ngerti) lan nambah fungsi anyar kanggo gudang adhedhasar sing wis dikirim sadurungé. (utawa wis utawa sadurunge - loro tembung kikuk)

Prospek pembangunan. Apa sing kudu kedadeyan nalika gudang dadi gedhe?

Dina iki kita mung ngluncurake Wolfram Feature Repository, nanging suwe-suwe kita ngarepake ukuran lan fungsine bisa nambah sacara dramatis, lan nalika tuwuh ing pangembangan, bakal ana macem-macem masalah sing wis diantisipasi.

Masalah pisanan babagan jeneng fungsi lan keunikane. Repositori fungsi dirancang kanthi cara, kaya fungsi sing dibangun ing Wolfram Language, sampeyan bisa ngrujuk fungsi apa wae mung kanthi nemtokake jenenge. Nanging iki mesthi tegese jeneng fungsi kudu unik sacara global ing repositori, saengga, umpamane, mung ana siji. Fungsi Sumber Daya["Fungsi Favoritku"].

Iki bisa uga katon kaya masalah gedhe ing wiwitan, nanging kudu dingerteni manawa sejatine masalah kasebut padha karo babagan domain internet utawa media sosial. Lan kasunyatane, sistem kasebut mung kudu duwe registrar - lan iki minangka salah sawijining peran sing bakal ditindakake perusahaan kita kanggo basis pengetahuan fungsi Wolfram. (Kanggo versi pribadi saka repositori, registrar bisa dadi administrator.) Mesthi wae, domain Internet bisa didaftar tanpa ana apa-apa, nanging ing repositori fungsi, jeneng fungsi mung bisa didaftar yen ana definisi nyata babagan fungsi kasebut.

Bagéyan saka peran kita ngatur basis kawruh fungsi Wolfram kanggo mesthekake yen jeneng sing dipilih kanggo fungsi iku logis diwenehi definisi fungsi lan nderek konvensi jeneng Wolfram Language. Kita duwe pengalaman luwih saka 30 taun kanggo menehi jeneng fungsi sing dibangun ing Wolfram Language, lan tim kurator kita bakal nggawa pengalaman kasebut menyang repositori fungsi uga. Mesthi wae, mesthi ana pangecualian. Contone, misale jek luwih becik duwe jeneng cendhak kanggo sawetara fungsi, nanging luwih becik "mbela" kanthi jeneng sing luwih dawa lan luwih spesifik amarga sampeyan ora bakal nemoni wong sing pengin nggawe jeneng fungsi sing padha ing mangsa ngarep. .

(Sampeyan kudu dicathet ing kene yen mung nambah sawetara tag anggota kanggo disambiguasi fungsi ora bakal duwe efek sing dikarepake. Amarga yen sampeyan ora ngeyel yen tag tansah ditugasake, sampeyan kudu nemtokake tag standar kanggo fungsi apa wae, lan uga menehi pangarang. tags, sing maneh mbutuhake koordinasi global.)

Minangka basis kawruh saka fungsi Wolfram mundak akeh, salah siji saka masalah sing kamungkinan bakal njedhul yaiku nemokake fungsi, kang sistem nyedhiyani fungsi telusuran (lan file definisi bisa uga kalebu tembung kunci, lsp). Kanggo fungsi sing dibangun ing Wolfram Language, ana kabeh jinis referensi silang ing dokumentasi kanggo mbantu "iklan" fungsi kasebut. Fungsi ing repositori fungsi bisa ngrujuk fungsi sing dibangun. Nanging kepiye cara liya? Kanggo nindakake iki, kita bakal nyoba macem-macem desain kanggo mbabarake fungsi repositori ing kaca dokumentasi kanggo fungsi sing dibangun.

Kanggo fungsi sing dibangun ing Wolfram Language ana sing diarani lapisan deteksi sing diwenehake dening jaringan "help page", sing nyedhiyakake dhaptar fitur sing ana gandhengane karo wilayah tartamtu. Iku tansah angel kanggo ngimbangi kaca manungsa kanthi bener, lan nalika basa Wolfram saya tambah akeh, kaca manual asring kudu ditata maneh. Cukup gampang kanggo nglebokake fungsi saka gudang menyang kategori sing wiyar, lan malah ngilangi kategori kasebut kanthi konsisten, nanging luwih penting yen kaca referensi basa diatur kanthi bener. Iku durung cetha carane paling apik kanggo nggawe kanggo kabeh basis kawruh fungsi. Tuladhane, CreateResourceObjectGallery ing repositori fitur, sapa wae bisa ngirim kaca web sing ngemot "pilihan" saka gudang:

Repositori Fungsi Wolfram: Bukak platform akses kanggo ekstensi basa Wolfram

Repositori fungsi Wolfram dikonfigurasi minangka gudang fungsi sing terus-terusan, ing ngendi fungsi apa wae bakal bisa digunakake. Mesthi, versi anyar saka fitur bisa dadi kasedhiya, lan kita ngarepake sawetara fitur bakal dadi lungse liwat wektu. Fungsi kasebut bakal bisa digunakake yen digunakake ing program, nanging kaca dokumentasi bakal nyambung menyang fungsi anyar sing luwih maju.

Repositori Fitur Wolfram dirancang kanggo mbantu sampeyan nemokake fitur anyar kanthi cepet lan sinau cara anyar kanggo nggunakake basa Wolfram. Kita optimis banget yen sawetara sing wis ditliti ing repositori fitur pungkasane bakal dadi bagian sing dibangun ing inti Wolfram Language. Ing dasawarsa pungkasan, kita duwe set sing padha fitur sing Originally ngenalaken ing Wolfram | Alpha. Lan salah siji saka piwulang sing disinaoni saka pengalaman iki yaiku nggayuh standar kualitas lan konsistensi sing kita fokusake ing kabeh sing dibangun ing basa Wolfram mbutuhake akeh karya, sing asring luwih angel tinimbang upaya awal kanggo implementasine ide kasebut. Sanajan mangkono, fungsi ing basis kawruh fungsi bisa dadi bukti konsep sing migunani banget kanggo fungsi mangsa sing bisa uga dibangun ing basa Wolfram.

Sing paling penting ing kene yaiku fungsi ing repositori fungsi yaiku sing kasedhiya kanggo saben pangguna saiki. Bisa uga fitur basa asli bisa luwih apik lan luwih apik, nanging repositori fitur bakal ngidini pangguna bisa ngakses kabeh fitur anyar kanthi langsung. Lan, sing paling penting, konsep iki ngidini saben wong nambah fitur anyar sing dikarepake.

Sadurungé ing sajarah basa Wolfram, gagasan iki ora bakal bisa kaya sing wis ana, nanging ing tahap iki ana akeh gaweyan ing basa kasebut, lan pemahaman sing jero babagan prinsip desain basa, sing saiki katon banget. bisa kanggo komunitas gedhe pangguna kanggo nambah fitur sing bakal njaga konsistensi desain supaya migunani kanggo sawetara saka sudhut pangguna.

Ana semangat bakat sing luar biasa (?) ing komunitas pangguna Wolfram Language. (Mesthi, komunitas iki kalebu akeh ahli R & D anjog ing macem-macem lapangan.) Mugi sing Wolfram Feature Repository bakal nyedhiyani platform efektif kanggo mbukak kunci lan disseminating semangat bakat iki. Mung bebarengan kita bisa nggawe soko sing Ngartekno nggedhekake wilayah sing bisa Applied paradigma komputasi basa Wolfram.

Ing luwih saka 30 taun, kita wis teka adoh karo basa Wolfram. Saiki bebarengan, ayo luwih maju. Aku banget nyengkuyung kabeh pangguna sing dihormati saka basa Wolfram ing saindenging jagad nggunakake gudang fungsional minangka platform kanggo iki, uga proyek piranti lunak anyar kayata Mesin Wolfram Gratis kanggo Pangembang.

Source: www.habr.com

Add a comment