Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Halo, Habr! Saya mempersembahkan kepada Anda terjemahan dari postingan Stephen Wolfram "Repositori Fungsi Wolfram: Meluncurkan Platform Terbuka untuk Memperluas Bahasa Wolfram".

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Prasyarat konsistensi bahasa Wolfram

Hari ini kita berdiri di ambang pencapaian besar bersama dengan bahasa pemrograman Bahasa Wolfram. Baru tiga minggu lalu kami meluncurkannya mesin Wolfram gratis untuk pengembanguntuk membantu pengguna kami mengintegrasikan Bahasa Wolfram ke dalam proyek perangkat lunak berskala besar mereka. Hari ini kami meluncurkannya Repositori fungsi Wolfram, untuk menyediakan platform terkoordinasi untuk fungsi-fungsi yang dibuat untuk memperluas bahasa Wolfram, dan kami juga membuka gudang fungsi bagi siapa saja yang dapat berkontribusi pada pengembangan produk perangkat lunak kami.

Repositori Fungsi Wolfram adalah sesuatu yang dimungkinkan oleh sifat unik Bahasa Wolfram tidak hanya sebagai bahasa pemrograman, tetapi juga sebagai bahasa komputasi skala penuh. Dalam bahasa pemrograman tradisional, penambahan fungsionalitas baru yang signifikan biasanya melibatkan pembuatan seluruh perpustakaan tambahan yang mungkin berfungsi atau tidak berfungsi saat digunakan bersama. Namun, dalam Bahasa Wolfram begitu banyak hal yang sudah tertanam dalam bahasa itu sendiri, bahwa fungsinya dapat diperluas secara signifikan hanya dengan menambahkan fungsi baru yang segera diintegrasikan ke dalam struktur holistik keseluruhan bahasa.

Misalnya, repositori fungsi Wolfram sudah berisi 532 fitur baru disusun menjadi 26 kategori tematik:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Demikian juga lebih dari 6000 fungsi standar, dibangun dalam bahasa Wolfram, setiap fungsi dari repositori memiliki halaman dokumentasi dengan penjelasan rinci tentang fungsi tersebut dan contoh kerjanya:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Untuk membuka halaman tersebut, salin objek di atas (fungsi BLOB), tempelkan ke baris input, lalu jalankan fungsinya - fungsi tersebut sudah ada di dalam bahasa Wolfram dan didukung secara default dimulai dengan versi 12.0:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Perlu dicatat di sini bahwa saat memproses LogoQRCode Anda tidak perlu, misalnya, menyiapkan "perpustakaan pemrosesan gambar" - karena kami telah menerapkan cara algoritmik yang konsisten dan cermat dalam Bahasa Wolfram pengolahan citra, yang dapat langsung diproses dengan berbagai fungsi bahasa grafis:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Saya berharap dengan dukungan tersebut komunitas yang luar biasa dan berbakat, yang telah tumbuh dan berkembang (berdasarkan Bahasa Wolfram) selama beberapa dekade terakhir. Repositori fungsi Wolfram akan memungkinkan di masa mendatang untuk secara signifikan memperluas jangkauan fungsi (mungkin berpotensi signifikan, terspesialisasi dalam berbagai bidang ilmu pengetahuan dan teknologi) yang tersedia dalam bahasa tersebut. Dengan demikian, menjadi mungkin untuk menggunakan konten bahasa (fungsi bawaannya) dan prinsip-prinsip pembangunan, yang diimplementasikan berdasarkan bahasa. (Perlu dicatat di sini bahwa Bahasa Wolfram sudah memiliki lebih dari Sejarah pembangunan selama 30 tahun dan pertumbuhan yang stabil).
Fungsi dari repositori mungkin berisi potongan kode kecil atau besar yang ditulis dalam Bahasa Wolfram. Misalnya, ini bisa berupa panggilan telepon API dan layanan eksternal atau perpustakaan eksternal dalam bahasa lain. Fitur unik dari pendekatan ini adalah ketika Anda menelusuri fungsionalitas tingkat pengguna, tidak akan ada potensi inkonsistensi karena pendekatan ini dibangun di atas struktur Bahasa Wolfram yang konsisten - dan setiap fungsi akan secara otomatis bekerja dengan benar - persis seperti dimaksudkan, dia seharusnya.
Struktur shell dan pemrograman dari Repositori Fitur Wolfram dirancang agar setiap orang dapat berkontribusi pada tujuan bersama dengan cara yang paling sederhana dan nyaman bagi mereka - pada kenyataannya, cukup dengan mengisi file teks notepad (dengan ekstensi nb) WL. Fungsi otomatis bawaan memungkinkan Anda memeriksa fungsi baru yang ditambahkan ke repositori untuk memastikan integrasinya ke dalam bahasa. Perusahaan kami bertaruh pada sejumlah besar pengguna yang dapat mengintegrasikan fungsi mereka ke dalam bahasa tersebut, dibandingkan pada kompleksitas fungsi baru yang besar - dan meskipun ada proses peninjauan, kami tidak memaksakan hal seperti itu analisis desain yang cermat atau standar yang ketat untuk kelengkapan dan keandalan fitur pengguna baru, dibandingkan dengan pengujian yang lebih ketat terhadap fitur yang dibangun dalam bahasa inti yang kami gunakan.

Ada banyak trade-off dan detail dalam pendekatan ini, namun tujuan kami adalah mengoptimalkan repositori fitur Wolfram baik untuk pengalaman pengguna dan untuk memastikan bahwa fitur pengguna baru memberikan kontribusi yang berarti terhadap pengembangan bahasa. Seiring pertumbuhan kami, saya yakin kami harus menemukan metode baru untuk memproses dan memvalidasi fungsi yang ada di dalam repositori, paling tidak untuk mengatur sejumlah besar fungsi dan menemukan fungsi yang dibutuhkan pengguna. Namun, sungguh menggembirakan bahwa jalan yang kami pilih adalah awal yang baik. saya sendiri menambahkan beberapa fitur ke database asli. Banyak di antaranya didasarkan pada kode yang telah saya kembangkan secara pribadi selama beberapa waktu. Dan saya hanya butuh beberapa menit untuk memasukkannya ke repositori. Sekarang setelah semuanya ada di repositori, saya akhirnya dapat - segera dan kapan saja - menggunakan fungsi-fungsi ini sesuai kebutuhan, tanpa harus khawatir mencari file, mengunduh paket, dll.

Meningkatkan efisiensi sekaligus mengurangi biaya

Bahkan sebelum Internet, ada cara untuk berbagi kode Bahasa Wolfram (proyek terpusat pertama kami adalah Sumber Matematika, dibuat untuk Mathematica pada tahun 1991 berdasarkan CD-ROM, dll.). Tentu saja, pendekatan yang diusulkan untuk implementasi berdasarkan repositori fungsi Wolfram adalah alat yang lebih kuat dan andal untuk mengimplementasikan tugas-tugas di atas.

Selama lebih dari 30 tahun, perusahaan kami telah bekerja dengan tekun untuk menjaga integritas struktur bahasa Wolfram, dan ini penting untuk memastikan bahwa bahasa Wolfram tidak hanya menjadi bahasa pemrograman, tetapi juga bahasa pemrograman. bahasa komputasi lengkap. Oleh karena itu, inti dari pendekatan penerapan repositori fungsi Wolfram adalah dengan menggunakan pendekatan terpadu dalam pemrograman dan mengembangkan fungsi-fungsi baru yang ditambahkan secara berurutan dan disesuaikan dengan kerangka bahasa sehingga dapat berkembang dan berevolusi bersama.

Berbagai proses komputasi terjadi pada struktur implementasi setiap fungsi. Perlu dicatat di sini bahwa fungsi tersebut perlu memiliki tampilan yang jelas dan seragam serta keterbacaan visual bagi pengguna. Dalam konteks ini, fungsi bawaan Bahasa Wolfram disajikan dengan lebih dari 6000 contoh berurutan tentang cara memprogram fungsi dengan benar (ini adalah contoh kami video pemrograman langsungyang termasuk ratusan jam proses pembuatan program standar). Pendekatan ini pada akhirnya membuat repositori fitur Wolfram mampu bekerja dengan baik adalah sifat struktural Bahasa Wolfram, dengan sejumlah besar perpustakaan tambahan dan beragam yang sudah dibangun ke dalam bahasa tersebut. Misalnya, jika Anda memiliki fungsi yang memproses gambar, atau array yang jarangAtau struktur molekulDan data geografis atau yang lainnya - representasi simbolisnya yang konsisten sudah ada dalam bahasa tersebut, dan berkat ini, fungsi Anda segera kompatibel dengan fungsi lain dalam bahasa tersebut.

Membuat repositori yang benar-benar berfungsi dengan baik adalah tugas pemrograman meta yang menarik. Misalnya, pembatasan yang berlebihan dalam program tidak akan memungkinkan diperolehnya penyatuan dan universalitas algoritma yang diperlukan. Sama seperti jika jumlah batasan fungsional tidak mencukupi, Anda tidak akan dapat menerapkan urutan eksekusi algoritma yang cukup benar. Beberapa contoh penerapan kompromi pendekatan ini sebelumnya, yang diterapkan oleh perusahaan kami, bekerja cukup stabil - ini adalah: Demonstrasi Proyek Tungsten, diluncurkan pada tahun 2007 dan sekarang berjalan online dengan lebih dari 12000 demo interaktif pengguna. DI DALAM Basis data Wolfram ada lebih dari 600 database siap pakai yang dapat digunakan dalam Bahasa Wolfram, dan Penyimpanan jaringan saraf Wolfram diisi ulang dengan jaringan saraf baru hampir setiap minggu (sekarang sudah ada 118 jaringan) dan mereka segera terhubung melalui fungsi Model Bersih dalam Bahasa Wolfram.

Semua contoh di atas memiliki ciri mendasar - objek dan fungsi yang dikumpulkan dalam proyek memiliki tingkat penataan dan distribusi proses yang sangat tinggi. Tentu saja, detail struktur demo atau jaringan saraf atau yang lainnya bisa sangat bervariasi, namun struktur dasar untuk repositori saat ini selalu tetap sama. Jadi apa pendapat Anda, pengguna yang budiman, tentang membuat repositori yang menambahkan ekstensi ke bahasa Wolfram? Bahasa Wolfram dirancang sangat fleksibel, sehingga dapat diperluas dan dimodifikasi dengan cara apa pun. Keadaan ini sangat penting untuk kemampuan dengan cepat membuat berbagai proyek perangkat lunak berskala besar dalam Bahasa Wolfram. Perlu dicatat di sini bahwa seiring dengan meningkatnya fleksibilitas bahasa, biaya proyek yang dilaksanakan dalam bahasa tersebut pasti akan meningkat. Hal ini disebabkan oleh fakta bahwa semakin banyak pengguna menggunakan bahasa tersebut, semakin banyak fungsionalitas khusus yang diterimanya, namun kita tidak boleh lupa bahwa pendekatan ini mungkin juga memiliki sisi negatif dalam hal ketidakmampuan untuk memastikan konsistensi modul program yang konsisten.

Ada masalah umum dengan perpustakaan dalam bahasa pemrograman tradisional - jika Anda menggunakan satu perpustakaan, misalnya, kode akan berfungsi dengan benar, tetapi jika Anda mencoba menggunakan beberapa perpustakaan, tidak ada jaminan bahwa mereka akan berinteraksi dengan benar satu sama lain. . Selain itu, dalam bahasa pemrograman tradisional - tidak seperti bahasa komputasi lengkap - tidak ada cara untuk menjamin keberadaan representasi bawaan yang konsisten untuk fungsi atau tipe data apa pun selain struktur dasarnya. Namun, pada kenyataannya, masalahnya bahkan lebih besar daripada yang terlihat pada pandangan pertama: jika seseorang membangun fungsionalitas vertikal berskala besar, maka tanpa biaya besar dari pemrograman proyek terpusat yang kami masukkan ke dalam bahasa Wolfram, mustahil untuk melakukannya. mencapai konsistensi. Oleh karena itu, penting agar semua modul perangkat lunak selalu bekerja sama dengan benar.

Jadi ide di balik repositori fitur Wolfram adalah untuk menghindari masalah yang diuraikan di atas dengan hanya menambahkan ekstensi ke bahasa dalam potongan kode yang relatif kecil melalui fitur individual yang lebih mudah dikembangkan sebagai modul yang koheren. Meskipun demikian, terdapat fitur pemrograman yang tidak dapat dibuat nyaman menggunakan fungsi individual (dan perusahaan kami berencana merilis algoritme pemrograman yang dioptimalkan dalam waktu dekat untuk membantu mengimplementasikan paket perangkat lunak berskala besar). Namun berdasarkan fungsi yang sudah dibangun ke dalam Bahasa Wolfram, ada banyak kemungkinan pemrograman yang diimplementasikan berdasarkan fungsi individual. Idenya di sini adalah bahwa dengan upaya pemrograman yang relatif sedikit, dimungkinkan untuk membuat sejumlah fungsi baru dan sangat berguna yang akan memberikan koherensi yang cukup pada desain, mereka akan terkoordinasi dengan baik satu sama lain, dan juga, selain itu, mereka akan dapat dengan mudah dan luas digunakan dalam bahasa tersebut di masa depan.

Pendekatan ini, tentu saja, merupakan sebuah kompromi. Jika paket yang lebih besar diimplementasikan, dapat dibayangkan sebuah dunia fungsionalitas baru yang sangat kuat dan berguna. Jika ada kebutuhan untuk mendapatkan fungsionalitas baru yang sesuai dengan yang lainnya, tetapi Anda tidak bersedia menghabiskan banyak upaya untuk mengembangkan proyek, sayangnya hal ini dapat menyebabkan pengurangan cakupan proyek Anda. Ide di balik repositori fitur Wolfram adalah untuk menyediakan fungsionalitas pada bagian penentu suatu proyek; pendekatan ini akan menambah fungsionalitas yang kuat sekaligus membuatnya lebih mudah untuk menjaga konsistensi yang baik dalam proyek pemrograman.

Membantu menambahkan fungsi khusus ke repositori fungsi

Tim kami telah bekerja keras untuk memudahkan pengguna berkontribusi pada fitur repositori Wolfram. Di desktop (sudah ada di versi 12.0), Anda cukup membuka tab menu utama secara berurutan: File > New > RepositoryItem > Function Repository Item dan Anda akan mendapatkan "Buku Catatan Definisi" (secara terprogram di dalam meja kerja. Anda juga dapat menggunakan fungsi analog - BuatBuku Catatan["Sumber Daya Fungsi"]):

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Ada dua langkah utama yang perlu Anda lakukan: pertama, tuliskan kode untuk fungsi Anda dan, kedua, tulis dokumentasi yang mengilustrasikan cara kerja fungsi Anda.
Klik tombol "Buka Sampel" di bagian atas untuk melihat contoh hal yang perlu Anda lakukan:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Pada dasarnya, Anda mencoba membuat sesuatu yang mirip dengan fungsi bawaan dalam Bahasa Wolfram. Kecuali bahwa ia dapat melakukan sesuatu yang jauh lebih spesifik daripada fungsi bawaan. Pada saat yang sama, ekspektasi mengenai kelengkapan dan keandalannya akan jauh lebih rendah.
Anda perlu memberi nama fungsi Anda yang mengikuti pedoman penamaan fungsi Bahasa Wolfram. Selain itu, Anda perlu mengembangkan dokumentasi untuk fungsi Anda, serupa dengan fungsi bawaan bahasa tersebut. Saya akan membicarakan hal ini lebih detail nanti. Untuk saat ini, perhatikan saja bahwa pada deretan tombol di bagian atas file notebook definisi terdapat sebuah tombol "Pedoman Gaya", yang menjelaskan apa yang harus dilakukan, dan tombol Alat, yang menyediakan alat untuk memformat dokumentasi fungsi Anda.
Jika Anda yakin semuanya sudah diisi dengan benar dan Anda siap, klik tombol “Periksa”. Wajar jika Anda belum mengetahui semua detailnya. Jadi fungsi "Periksa" akan otomatis berjalan dan melakukan banyak pemeriksaan gaya dan konsistensi. Seringkali, ia akan segera meminta Anda untuk mengonfirmasi dan menerima koreksi (Misalnya: “Baris ini harus diakhiri dengan titik dua,” dan ia akan meminta Anda memasukkan titik dua). Terkadang dia akan meminta Anda untuk menambahkan atau mengubah sesuatu sendiri. Kami akan terus menambahkan fitur baru ke fungsi otomatis tombol Periksa, namun pada dasarnya tujuannya adalah untuk memastikan bahwa semua yang Anda kirimkan ke repositori fitur sudah mengikuti sebanyak mungkin pedoman gaya.

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Jadi, setelah menjalankan "Periksa", Anda dapat menggunakan "Pratinjau". "Pratinjau" membuat pratinjau halaman dokumentasi yang Anda tetapkan untuk fungsi Anda. Anda juga dapat membuat pratinjau untuk file yang dibuat di komputer Anda atau untuk file yang terletak di penyimpanan cloud. Jika, karena alasan tertentu, Anda tidak puas dengan apa yang Anda lihat di pratinjau, cukup kembali dan lakukan koreksi yang diperlukan, lalu klik lagi tombol Pratinjau.
Sekarang Anda siap untuk memasukkan fungsi Anda ke dalam repositori. Tombol Deploy memberi Anda empat opsi:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Hal penting pada langkah ini adalah Anda dapat mengirimkan fungsi Anda ke repositori fungsi Wolfram sehingga tersedia bagi siapa saja. Pada saat yang sama, Anda juga dapat menempatkan fungsi Anda untuk sejumlah pengguna terbatas. Misalnya, Anda dapat membuat fungsi yang dihosting secara lokal di komputer Anda sehingga tersedia saat Anda menggunakan komputer tersebut. Atau Anda dapat mempostingnya di akun awan, sehingga tersedia untuk Anda saat Anda tersambung ke cloud. Anda juga dapat menghosting (menyebarkan) fitur tersebut secara publik melalui akun cloud Anda. Itu tidak akan ada di repositori fitur Wolfram pusat, tetapi Anda akan dapat memberikan seseorang URL yang memungkinkan mereka mendapatkan fitur Anda dari akun Anda. (Di masa depan, kami juga akan mendukung repositori pusat di seluruh perusahaan kami.)

Jadi katakanlah Anda ingin mengirimkan fungsi Anda ke basis pengetahuan fungsi Wolfram. Untuk melakukan ini, Anda mengklik tombol “Kirim” ke repositori. Lalu apa yang terjadi saat ini? Permohonan Anda segera dimasukkan ke dalam antrean untuk ditinjau dan disetujui oleh tim kurator kami yang berdedikasi.

Saat permohonan Anda melewati proses persetujuan (yang biasanya memakan waktu beberapa hari), Anda akan menerima komunikasi mengenai statusnya dan kemungkinan saran untuk penggunaan di masa mendatang. Namun begitu fitur Anda disetujui, fitur tersebut akan segera dipublikasikan ke Repositori Fitur Wolfram dan akan tersedia untuk digunakan siapa saja. (Dan ini akan muncul di intisari berita tentang fitur-fitur baru dan seterusnya)

Apa yang harus ada di penyimpanan?

Perlu dicatat bahwa perusahaan kami memiliki standar yang sangat tinggi untuk kelengkapan, keandalan, dan kualitas keseluruhan, dan dari 6000+ fungsi yang telah kami bangun ke dalam bahasa Wolfram selama 30+ tahun terakhir, semuanya memenuhi persyaratan di atas. Tujuan dari Repositori Fungsi Wolfram adalah untuk menggunakan semua struktur dan fungsionalitas yang sudah ada dalam Bahasa Wolfram untuk menambahkan sebanyak mungkin fungsi yang lebih ringan (yaitu, fungsi dengan kinerja lebih tinggi).

Tentu saja, fungsi-fungsi dalam repositori fungsi Wolfram harus sesuai dengan prinsip-prinsip desain Bahasa Wolfram - sehingga fungsi-fungsi tersebut dapat sepenuhnya berinteraksi dengan fungsi-fungsi lain dan harapan pengguna tentang bagaimana fungsi tersebut harus bekerja dengan baik. Namun, fungsinya tidak harus memiliki kelengkapan atau keandalan yang sama.

Dalam fungsi bawaan bahasa Wolfram, kami bekerja keras untuk membuat fungsi pemrograman seumum mungkin. Meskipun demikian, ketika berada dalam repositori fungsi Wolfram tidak ada salahnya memiliki fungsi di dalamnya yang hanya menangani beberapa kasus yang sangat spesifik namun berguna. Misalnya saja fungsinya KirimMailDariNotebook dapat menerima file dalam satu format tertentu dan membuat email dengan satu cara tertentu. Diagram Poligonal membuat bagan hanya dengan warna dan label tertentu, dll.

Hal lain yang terkait dengan fungsi bawaan adalah bahwa perusahaan kami berupaya semaksimal mungkin untuk menangani semua kasus yang tidak biasa, menangani input yang salah dengan benar, dan sebagainya. Dalam repositori fungsi, sangatlah normal jika terdapat fungsi khusus yang menangani kasus utama penyelesaian masalah dan mengabaikan yang lainnya.

Poin yang jelas adalah lebih baik memiliki fungsi yang dapat melakukan lebih banyak dan melakukannya dengan lebih baik, namun pengoptimalan untuk repositori fungsi - dibandingkan dengan fungsi bawaan bahasa Wolfram - harus memiliki lebih banyak fungsi yang digabungkan dengan lebih banyak fungsi daripada mempelajarinya lebih dalam. proses implementasi setiap fungsi tertentu.

Sekarang mari kita lihat contoh fungsi pengujian di repositori. Harapan konsistensi untuk fungsi-fungsi tersebut secara alami jauh lebih rendah dibandingkan dengan fungsi-fungsi bahasa bawaan. Hal ini terutama berlaku jika fungsi bergantung pada sumber daya eksternal seperti API, penting untuk terus melakukan pengujian yang konsisten, yang secara otomatis terjadi dalam algoritme verifikasi. Dalam file nb, Anda dapat secara eksplisit menentukan definisi (di bagian Informasi Tambahan) dan menentukan tes sebanyak yang ditentukan oleh string input dan output atau objek karakter lengkap bertipe Tes Verifikasi, sebanyak yang Anda inginkan. Selain itu, sistem terus-menerus mencoba mengubah contoh dokumentasi yang Anda berikan menjadi proses verifikasi (dan terkadang ini bisa memakan banyak sumber daya, misalnya, untuk fungsi yang hasilnya bergantung pada angka acak atau waktu).

Akibatnya, repositori fungsi akan memiliki sejumlah kompleksitas implementasi. Beberapa hanya berupa satu baris kode, yang lain mungkin melibatkan ribuan atau puluhan ribu baris, kemungkinan besar menggunakan banyak fungsi pembantu. Kapan sebaiknya menambahkan fungsi yang memerlukan sedikit kode untuk didefinisikan? Pada dasarnya, jika untuk suatu fungsi ada nama mnemonik yang bagus, yang akan mudah dipahami pengguna jika mereka melihatnya dalam bentuk kode, maka kode tersebut sudah dapat ditambahkan. Jika tidak, mungkin lebih baik menambahkan kembali kode tersebut ke program Anda setiap kali Anda perlu menggunakannya.

Tujuan utama dari repositori fungsi (seperti namanya) adalah untuk memperkenalkan fitur-fitur baru ke dalam bahasa tersebut. Jika Anda ingin menambahkan data baru atau entitas baru, menggunakan Penyimpanan Data Wolfram. Namun bagaimana jika Anda ingin memperkenalkan jenis objek baru untuk perhitungan Anda?

Sebenarnya ada dua cara. Anda mungkin ingin memperkenalkan tipe objek baru yang akan digunakan dalam fungsi baru di repositori fungsi. Dan dalam hal ini, Anda selalu dapat menuliskan representasi simbolisnya dan menggunakannya saat memasukkan atau mengeluarkan fungsi dalam repositori fungsi.

Namun bagaimana jika Anda ingin merepresentasikan suatu objek dan kemudian mendefinisikan, melalui fungsi yang ada dalam Bahasa Wolfram, Anda ingin mengerjakannya? Bahasa Wolfram selalu memiliki mekanisme ringan untuk ini, yang disebut Nilai Naik. Dengan beberapa batasan (terutama untuk fungsi itu tidak dapat mengevaluasi argumen mereka), repositori fungsi memungkinkan Anda untuk merepresentasikan suatu fungsi dan menentukan nilainya. (Untuk meningkatkan harapan konsistensi ketika membuat desain besar baru yang terintegrasi penuh di seluruh Bahasa Wolfram umumnya merupakan prosedur yang sangat penting yang tidak dapat dicapai hanya dengan meningkatkan biaya proyek dan merupakan sesuatu yang dilakukan perusahaan kami sebagai bagian dari proyek untuk pengembangan bahasa jangka panjang, tugas ini bukanlah tujuan yang ditetapkan sebagai bagian dari pengembangan repositori).

Jadi, apa yang mungkin ada dalam kode fungsi di repositori fungsi? Semuanya dibangun ke dalam Bahasa Wolfram, tentu saja (setidaknya jika tidak mewakili ancaman untuk keamanan dan kinerja program itu sendiri, sebagai lingkungan komputasi) serta fungsi apa pun dari repositori fungsi. Namun, ada fungsi lain: fungsi dalam repositori fungsi dapat memanggil API, atau di Awan WolframAtau dari sumber lain. Tentu saja, ada beberapa risiko yang terkait dengan hal ini. Karena tidak ada jaminan bahwa API tidak akan berubah, dan fungsi di penyimpanan fungsi akan berhenti bekerja. Untuk membantu mengidentifikasi masalah seperti ini, terdapat catatan di halaman dokumentasi (di bagian Persyaratan) untuk fitur apa pun yang mengandalkan lebih dari sekadar fungsionalitas Bahasa Wolfram bawaan. (Tentu saja, jika menyangkut data nyata, mungkin ada masalah bahkan dengan fungsi ini - karena data dunia nyata terus berubah, dan terkadang bahkan definisi dan strukturnya pun berubah.)

Haruskah semua kode untuk repositori fitur Wolfram ditulis dalam Wolfram? Tentu saja, kode di dalam API eksternal tidak boleh ditulis dalam bahasa Wolfram, yang bahkan tidak membuat kode bahasa tersebut. Faktanya, jika Anda menemukan suatu fungsi di hampir semua bahasa atau pustaka eksternal, Anda bisa membuat wrapper yang memungkinkan Anda menggunakannya di repositori fungsi Wolfram. (Biasanya Anda harus menggunakan fungsi bawaan untuk ini Evaluasi Eksternal или Fungsi Eksternal dalam kode bahasa Wolfram.)

Jadi apa gunanya melakukan ini? Pada dasarnya, ini memungkinkan Anda untuk menggunakan seluruh sistem Bahasa Wolfram yang terintegrasi dan seluruh rangkaian kemampuan perangkat lunaknya. Jika Anda mendapatkan implementasi dasar dari perpustakaan atau bahasa eksternal, Anda kemudian dapat menggunakan struktur simbolik yang kaya dari Bahasa Wolfram untuk membuat fungsi tingkat atas yang nyaman yang memungkinkan pengguna dengan mudah menggunakan fungsionalitas apa pun yang sudah diterapkan. Paling tidak, hal ini dapat dilakukan di dunia ideal di mana semua elemen penyusun perpustakaan pemuatan, dll. ada, yang dalam hal ini akan ditangani secara otomatis oleh Bahasa Wolfram. (Perlu dicatat bahwa dalam praktiknya mungkin ada masalah menyiapkan bahasa eksternal sistem komputer tertentu, dan penyimpanan cloud dapat menimbulkan masalah keamanan tambahan).

Ngomong-ngomong, ketika Anda pertama kali melihat perpustakaan eksternal pada umumnya, perpustakaan tersebut sering kali tampak terlalu rumit untuk dibahas hanya dalam beberapa fungsi, namun dalam banyak kasus, sebagian besar kerumitan berasal dari pembuatan infrastruktur yang diperlukan untuk perpustakaan dan semua fungsi untuk mendukungnya. Namun, ketika menggunakan Bahasa Wolfram, infrastruktur biasanya sudah dibangun ke dalam paket, sehingga tidak perlu memaparkan semua fungsi pendukung ini secara rinci, namun hanya membuat fungsi untuk fungsi khusus aplikasi "paling atas" di perpustakaan .

"Ekosistem" dari basis pengetahuan

Jika Anda telah menulis fungsi yang biasa Anda gunakan, kirimkan ke Repositori Fungsi Wolfram! Jika tidak ada hasil lebih dari ini (pengembangan bahasa), maka akan lebih mudah bagi Anda untuk menggunakan fungsi-fungsi tersebut untuk penggunaan pribadi. Namun, masuk akal untuk berasumsi bahwa jika Anda menggunakan fungsi-fungsi tersebut secara teratur, mungkin pengguna lain juga akan merasakan manfaatnya.

Tentu saja, Anda mungkin berada dalam situasi di mana Anda tidak dapat - atau tidak ingin - berbagi fungsi atau jika Anda mendapatkan akses ke sumber informasi pribadi. Bahkan dalam kasus seperti itu, Anda cukup menerapkan fungsi tersebut di akun cloud Anda sendiri, menentukan hak akses kepada mereka. (Jika organisasi Anda memiliki Cloud pribadi Wolfram Enterprise, maka ia akan segera dapat meng-host repositori fitur pribadinya, yang dapat dikelola dari dalam organisasi Anda dan mengatur apakah akan memaksa tampilan untuk dilihat oleh pengguna pihak ketiga atau tidak.)

Fungsi yang Anda kirimkan ke repositori fungsi Wolfram tidak harus sempurna; mereka hanya harus berguna. Ini mirip dengan bagian "Kesalahan" dalam dokumentasi Unix klasik - di "Bagian Definisi" terdapat bagian "Catatan Penulis" tempat Anda dapat menjelaskan batasan, masalah, dll. yang sudah Anda ketahui tentang fungsi Anda. Selain itu, saat Anda mengirimkan fitur Anda ke repositori, Anda dapat menambahkan catatan pengiriman yang akan dibaca oleh tim kurator khusus.

Setelah fitur dipublikasikan, halamannya selalu memiliki dua link di bagian bawah: "Kirim pesan tentang fitur ini"Dan"Diskusikan di komunitas Wolfram" Jika Anda melampirkan catatan (misalnya, beri tahu saya tentang bug), Anda dapat mencentang kotak yang menyatakan Anda ingin pesan dan informasi kontak Anda dibagikan kepada pembuat fitur.

Terkadang Anda hanya ingin menggunakan fungsi dari repositori fungsi Wolfram, seperti fungsi bawaan, tanpa melihat kodenya. Namun jika ingin melihat ke dalamnya, selalu ada tombol Notepad di bagian atas. Klik di atasnya dan Anda akan mendapatkan salinan buku catatan definisi asli Anda sendiri yang dikirimkan ke repositori fitur. Terkadang Anda bisa menggunakannya sebagai contoh untuk kebutuhan Anda. Pada saat yang sama, Anda juga dapat mengembangkan modifikasi Anda sendiri untuk fungsi ini. Anda mungkin ingin memposting fungsi-fungsi yang Anda temukan dari repositori di komputer Anda atau di akun penyimpanan cloud aphid Anda, mungkin Anda ingin mengirimkannya ke basis pengetahuan fungsi, mungkin sebagai versi fungsi asli yang lebih baik dan diperluas.

Di masa mendatang, kami berencana untuk mendukung forking gaya Git untuk repositori fitur, namun untuk saat ini kami mencoba membuatnya tetap sederhana, dan kami selalu hanya memiliki satu versi yang diterima dari setiap fitur yang disertakan dalam bahasa tersebut. Lebih sering daripada tidak (kecuali pengembang menyerah untuk mempertahankan fitur yang mereka kembangkan dan menanggapi kiriman pengguna), pembuat asli fitur tersebut mengambil kendali atas pembaruannya dan mengirimkan versi baru, yang kemudian ditinjau dan, jika mereka lulus proses peninjauan. , diterbitkan dalam bahasa tersebut.

Mari kita pertimbangkan pertanyaan tentang cara kerja "pembuatan versi" dari fungsi yang dikembangkan. Saat ini, saat Anda menggunakan suatu fungsi dari repositori fungsi, definisinya akan disimpan secara permanen di komputer Anda (atau di akun cloud Anda jika Anda menggunakan cloud). Jika versi baru suatu fitur tersedia, saat Anda menggunakannya lagi, Anda akan menerima pesan yang memberitahukan Anda tentang hal ini. Dan jika Anda ingin memperbarui fungsinya ke versi baru, Anda dapat melakukannya menggunakan perintah Pembaruan Sumber Daya. ("Blob fungsi" sebenarnya menyimpan lebih banyak informasi pembuatan versi, dan kami berencana menjadikannya lebih mudah diakses oleh pengguna kami di masa mendatang.)

Salah satu hal menarik tentang Repositori Fungsi Wolfram adalah program Bahasa Wolfram apa pun, di mana pun, dapat menggunakan fungsi darinya. Jika suatu program muncul di notepad, seringkali akan lebih mudah untuk memformat fungsi repositori sebagai fungsi "objek biner fungsi" yang mudah dibaca (mungkin dengan kumpulan versi yang sesuai).

Anda selalu dapat mengakses fungsi apa pun di repositori fungsi menggunakan teks Fungsi Sumber Daya[...]. Dan ini sangat nyaman jika Anda menulis kode atau skrip langsung untuk Mesin Wolfram, misalnya dengan menggunakan IDE atau editor kode teks (Perlu dicatat secara khusus bahwa repositori fungsi sepenuhnya kompatibel dengan Mesin Wolfram Gratis untuk Pengembang).

Bagaimana cara kerjanya?

Di dalam fungsi-fungsi dalam repositori Wolfram hal ini dimungkinkan dengan menggunakan fungsi yang persis sama sistem sumber daya dasar, seperti pada semua repositori kami yang lain yang ada (penyimpanan data, Repositori Jaringan Neural, kumpulan proyek demo dll.), seperti semua sumber daya sistem Wolfram lainnya, Fungsi Sumber Daya pada akhirnya berdasarkan fungsi Objek Sumber Daya.

Mempertimbangkan Fungsi Sumber Daya:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Di dalamnya Anda dapat melihat beberapa informasi menggunakan fungsi tersebut Informasi:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Bagaimana cara kerja pengaturan fungsi sumber daya? Yang paling sederhana adalah kasus yang murni lokal. Berikut ini contoh yang mengambil suatu fungsi (dalam hal ini hanya fungsi murni) dan mendefinisikannya sebagai fungsi sumber daya untuk sesi program tertentu:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Setelah Anda membuat definisi, Anda dapat menggunakan fungsi sumber daya:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Perhatikan bahwa ada ikon hitam di gumpalan fungsi ini Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram. Artinya, fungsi BLOB mengacu pada fungsi sumber daya dalam memori yang ditentukan untuk sesi saat ini. Fitur sumber daya yang disimpan secara permanen di komputer atau akun cloud Anda memiliki ikon abu-abu Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram. Dan ada ikon oranye untuk fitur sumber daya resmi di Repositori Fitur Wolfram Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram.

Lalu apa yang terjadi bila Anda menggunakan menu Perluas di Notebook Definisi? Pertama, ia mengambil semua definisi di notepad dan darinya menciptakan sebuah simbolik Objek Sumber Daya). (Dan jika Anda menggunakan IDE atau program berbasis teks, Anda juga dapat membuatnya secara eksplisit Objek Sumber Daya)

Penerapan lokal suatu fungsi dari repositori di komputer Anda dilakukan menggunakan perintah Cache Lokal untuk objek sumber daya untuk menyimpannya sebagai Objek Lokal pada sistem file Anda. Penyebaran ke akun cloud dilakukan menggunakan perintah Penerapan Cloud untuk objek sumber daya, dan penerapan cloud publik Penerbitan Cloud. Dalam semua kasus Daftar Sumber Daya juga digunakan untuk mendaftarkan nama fungsi sumber daya, jadi Fungsi Sumber Daya["nama"] akan bekerja.

Jika Anda mengklik tombol Kirim untuk Repositori Fungsi, apa yang terjadi di bawahnya Pengiriman Sumber Daya dipanggil pada objek sumber daya. (Dan jika Anda menggunakan antarmuka input teks, Anda juga dapat menelepon Pengiriman Sumber Daya secara langsung.)

Secara default, pengiriman dilakukan atas nama yang terkait dengan ID Wolfram Anda. Namun jika Anda mengajukan permohonan atas nama tim atau organisasi pengembangan, Anda bisa tetapkan ID penerbit terpisah dan sebagai gantinya gunakan itu sebagai nama untuk berinteraksi dengan pandangan Anda.

Setelah Anda mengirimkan salah satu fungsi Anda ke basis pengetahuan fungsi, fungsi tersebut akan dimasukkan ke dalam antrean untuk ditinjau. Jika Anda menerima komentar sebagai tanggapan, biasanya komentar tersebut akan berbentuk file teks dengan tambahan “sel komentar”. Anda selalu dapat memeriksa status permohonan Anda dengan mengunjungi portal anggota sistem sumber daya. Namun setelah fitur Anda disetujui, Anda akan diberi tahu (melalui email) dan fitur Anda akan diposting ke repositori fitur Wolfram.

Beberapa kehalusan di tempat kerja

Pada pandangan pertama mungkin tampak seperti Anda hanya dapat mengambil buku catatan definisi dan memasukkannya kata demi kata ke dalam repositori fungsi, namun, sebenarnya ada cukup banyak seluk-beluk yang terlibat - dan penanganannya memerlukan melakukan beberapa pemrograman meta yang cukup rumit, menangani pemrosesan simbolik sebagai kode yang mendefinisikan fungsi, dan Notepad itu sendiri yang didefinisikan. Sebagian besar hal ini terjadi secara internal, di balik layar, namun hal ini dapat memiliki beberapa implikasi yang perlu dipahami jika Anda ingin berkontribusi pada basis pengetahuan fitur.

Kehalusan langsung pertama: Saat Anda mengisi Buku Catatan Definisi, Anda cukup merujuk ke fungsi Anda di mana saja menggunakan nama seperti Fungsi Saya, yang tampak seperti nama biasa untuk fungsi dalam Bahasa Wolfram, namun untuk dokumentasi repositori fungsi, nama ini diganti Fungsi Sumber Daya["Fungsi Saya"] adalah apa yang sebenarnya akan digunakan pengguna saat bekerja dengan fungsi tersebut.

Kehalusan kedua: saat Anda membuat fungsi sumber daya dari Buku Catatan Definisi, semua dependensi yang terlibat dalam definisi fungsi harus ditangkap dan disertakan secara eksplisit. Namun, untuk memastikan bahwa definisinya tetap modular, Anda perlu memasukkan semuanya ke dalam keunikannya ruang nama. (Tentu saja, fungsi yang melakukan semuanya, ada di repositori fungsi.)

Biasanya Anda tidak akan pernah melihat jejak kode apa pun yang digunakan untuk mengonfigurasi namespace ini. Tetapi jika karena alasan tertentu Anda memanggil simbol yang kurang dieksekusi di dalam fungsi Anda, maka Anda akan melihat bahwa simbol ini berada dalam konteks internal fungsi tersebut. Namun, saat memproses Notepad Definisi, setidaknya ada simbol yang sesuai dengan fungsi itu sendiri dapat disesuaikan untuk tampilan terbaik sebagai BLOB fungsional dan bukan karakter mentah dalam konteks internal.

Repositori fungsi adalah untuk mendefinisikan fungsi baru. Dan fungsi-fungsi ini mungkin memiliki opsi. Seringkali parameter ini (misalnya, metode или Ukuran gambar) akan dapat digunakan untuk fungsi bawaan, serta fungsi yang simbol bawaannya sudah ada. Namun terkadang fitur baru mungkin memerlukan opsi baru. Untuk mempertahankan modularitas, parameter ini harus berupa simbol yang didefinisikan dalam konteks internal yang unik (atau sesuatu seperti seluruh fungsi sumber daya, yaitu fungsi sumber daya itu sendiri). Untuk mempermudah, repositori fungsi memungkinkan Anda menentukan opsi baru dalam definisi string. Dan demi kenyamanan pengguna, definisi ini (dengan asumsi mereka menggunakan OpsiNilai и OpsiPola) juga diproses sehingga saat menggunakan fungsi, parameter dapat ditentukan tidak hanya sebagai string, tetapi juga sebagai simbol global dengan nama yang sama.

Sebagian besar fungsi hanya melakukan apa yang seharusnya mereka lakukan setiap kali dipanggil, tetapi beberapa fungsi perlu diinisialisasi sebelum dapat dijalankan dalam sesi tertentu - dan untuk mengatasi masalah ini, terdapat bagian "Inisialisasi" di bagian Definisi.

Fungsi dari repositori bisa menggunakan fungsi lain yang sudah ada di repositori; untuk menyiapkan definisi repositori fungsi yang mencakup dua (atau lebih) fungsi yang saling mereferensikan, Anda harus menerapkannya dalam sesi program Anda sehingga Anda bisa referensi seperti pada mereka Fungsi Sumber Daya["nama"], lalu Anda dapat membuat kombinasi fungsi-fungsi yang Anda perlukan, contoh (saya tidak mengerti) dan menambahkan fungsi baru ke repositori berdasarkan yang sudah diposting sebelumnya. (atau sudah atau sebelumnya – kedua kata tersebut canggung)

Prospek pengembangan. Apa yang akan terjadi jika repositori menjadi sangat besar?

Hari ini kami baru saja meluncurkan Repositori Fitur Wolfram, namun seiring berjalannya waktu kami berharap ukuran dan fungsinya dapat meningkat secara dramatis, dan seiring dengan pertumbuhan pengembangan akan ada berbagai masalah yang telah kami antisipasi mungkin muncul.

Masalah pertama menyangkut nama fungsi dan keunikannya. Repositori fungsi dirancang sedemikian rupa sehingga, seperti fungsi bawaan dalam Bahasa Wolfram, Anda dapat mereferensikan fungsi apa pun hanya dengan menentukan namanya. Namun hal ini berarti bahwa nama fungsi harus unik secara global di seluruh repositori, sehingga, misalnya, hanya ada satu fungsi Fungsi Sumber Daya["Fungsi Favorit Saya"].

Ini mungkin tampak seperti masalah besar pada awalnya, tetapi perlu disadari bahwa pada dasarnya masalah ini sama dengan masalah seperti domain internet atau akun media sosial. Dan faktanya adalah sistem hanya perlu memiliki registrar - dan ini adalah salah satu peran yang akan dilakukan perusahaan kami untuk basis pengetahuan fungsi Wolfram. (Untuk repositori versi pribadi, pendaftarnya mungkin adalah administrator.) Tentu saja, domain Internet dapat didaftarkan tanpa memiliki apa pun di dalamnya, tetapi dalam repositori fungsi, nama fungsi hanya dapat didaftarkan jika terdapat definisi sebenarnya dari repositori tersebut. fungsinya.

Bagian dari peran kami dalam mengelola basis pengetahuan fungsi Wolfram adalah memastikan bahwa nama yang dipilih untuk suatu fungsi logis berdasarkan definisi fungsi tersebut dan mengikuti konvensi penamaan Bahasa Wolfram. Kami memiliki pengalaman lebih dari 30 tahun dalam memberi nama fungsi bawaan dalam Bahasa Wolfram, dan tim kurator kami juga akan membawa pengalaman tersebut ke repositori fungsi. Tentu saja selalu ada pengecualian. Misalnya, mungkin tampak lebih baik untuk memiliki nama pendek untuk beberapa fungsi, namun lebih baik untuk "mempertahankan" dengan nama yang lebih panjang dan lebih spesifik karena kecil kemungkinannya Anda akan bertemu seseorang yang ingin membuat nama fungsi serupa di masa depan. .

(Perlu dicatat di sini bahwa hanya menambahkan beberapa tag anggota untuk memperjelas fungsi tidak akan memberikan efek yang diinginkan. Karena kecuali Anda bersikeras bahwa sebuah tag selalu ditetapkan, Anda perlu menentukan tag default untuk fungsi tertentu, dan juga mengalokasikan penulis tag, yang lagi-lagi memerlukan koordinasi global.)

Seiring dengan berkembangnya basis pengetahuan tentang fungsi-fungsi Wolfram, salah satu masalah yang mungkin akan muncul adalah kemampuan untuk menemukan fungsi-fungsi yang disediakan oleh sistem. fungsi pencarian (dan file definisi mungkin menyertakan kata kunci, dll.). Untuk fungsi bawaan dalam Bahasa Wolfram, ada berbagai macam referensi silang dalam dokumentasi untuk membantu “mengiklankan” fungsi tersebut. Fungsi dalam repositori fungsi dapat mereferensikan fungsi bawaan. Tapi bagaimana dengan sebaliknya? Untuk melakukan ini, kita akan bereksperimen dengan desain berbeda untuk mengekspos fungsi repositori di halaman dokumentasi untuk fungsi bawaan.

Untuk fungsi bawaan dalam Bahasa Wolfram ada yang disebut lapisan deteksi yang disediakan oleh jaringan "halaman bantuan", yang menyediakan daftar fitur terorganisir yang terkait dengan area tertentu. Selalu sulit untuk menyeimbangkan halaman manual dengan benar, dan seiring berkembangnya bahasa Wolfram, halaman manual sering kali perlu ditata ulang sepenuhnya. Cukup mudah untuk menempatkan fungsi dari repositori ke dalam kategori yang luas, dan bahkan mengelompokkan kategori tersebut secara konsisten, namun jauh lebih berharga jika memiliki halaman referensi bahasa yang terorganisir dengan baik. Belum jelas cara terbaik untuk membuatnya untuk seluruh basis pengetahuan fungsi. Misalnya, BuatResourceObjectGallery di repositori fitur, siapa pun dapat memposting halaman web yang berisi "pilihan" mereka dari repositori:

Repositori Fungsi Wolfram: Platform akses terbuka untuk ekstensi bahasa Wolfram

Repositori fungsi Wolfram dikonfigurasikan sebagai repositori fungsi persisten, dimana fungsi apa pun di dalamnya akan selalu berfungsi. Tentu saja, versi fitur baru mungkin akan tersedia, dan kami memperkirakan beberapa fitur akan menjadi usang seiring berjalannya waktu. Fungsi-fungsi tersebut akan berfungsi jika digunakan dalam program, namun halaman dokumentasinya akan tertaut ke fungsi-fungsi baru yang lebih canggih.

Repositori Fitur Wolfram dirancang untuk membantu Anda menemukan fitur baru dengan cepat dan mempelajari cara baru menggunakan bahasa Wolfram. Kami sangat optimis bahwa beberapa dari apa yang telah dieksplorasi dalam repositori fitur pada akhirnya akan masuk akal untuk menjadi bagian bawaan dari inti Bahasa Wolfram. Selama dekade terakhir kami memiliki rangkaian serupa fitur yang awalnya diperkenalkan di Wolfram | Alfa. Dan salah satu pembelajaran dari pengalaman ini adalah bahwa mencapai standar kualitas dan konsistensi yang kami fokuskan dalam segala hal yang dibangun dalam bahasa Wolfram memerlukan banyak usaha, yang seringkali lebih sulit daripada upaya awal untuk mengimplementasikan ide tersebut. Meski begitu, suatu fungsi dalam basis pengetahuan fungsi dapat berfungsi sebagai bukti konsep yang sangat berguna untuk fungsi masa depan yang pada akhirnya dapat dibangun ke dalam bahasa Wolfram.

Hal terpenting di sini adalah bahwa suatu fungsi dalam repositori fungsi adalah sesuatu yang tersedia untuk digunakan setiap pengguna saat ini. Ada kemungkinan bahwa fitur bahasa asli bisa jauh lebih baik dan lebih berkinerja, namun repositori fitur akan memungkinkan pengguna untuk memiliki akses ke semua fitur baru dengan segera. Dan yang terpenting, konsep ini memungkinkan setiap orang menambahkan fitur baru apa pun yang mereka inginkan.

Sebelumnya dalam sejarah bahasa Wolfram, ide ini tidak akan berhasil sebaik yang diharapkan, namun pada tahap ini ada begitu banyak upaya yang dilakukan dalam bahasa tersebut, dan pemahaman yang mendalam tentang prinsip-prinsip desain bahasa, sehingga sekarang tampak sangat berguna. memungkinkan komunitas pengguna yang besar untuk menambahkan fitur yang akan menjaga konsistensi desain agar berguna bagi banyak pengguna.

Ada semangat bakat(?) yang luar biasa dalam komunitas pengguna Bahasa Wolfram. (Tentu saja, komunitas ini mencakup banyak orang R&D terkemuka di berbagai bidang.) Saya berharap Repositori Fitur Wolfram akan menyediakan platform yang efektif untuk membuka dan menyebarkan semangat bakat ini. Hanya bersama-sama kita dapat menciptakan sesuatu yang secara signifikan akan memperluas area penerapan paradigma komputasi bahasa Wolfram.

Dalam lebih dari 30 tahun, kami telah mencapai kemajuan besar dalam bahasa Wolfram. Sekarang bersama-sama, mari melangkah lebih jauh. Saya sangat menganjurkan semua pengguna bahasa Wolfram yang dihormati di seluruh dunia untuk menggunakan repositori fungsional sebagai platform untuk ini, serta proyek perangkat lunak baru seperti Mesin Wolfram Gratis untuk Pengembang.

Sumber: www.habr.com

Tambah komentar