Halo, Habr! Saya mempersembahkan kepada Anda terjemahan dari postingan Stephen Wolfram
Prasyarat konsistensi bahasa Wolfram
Hari ini kita berdiri di ambang pencapaian besar bersama dengan bahasa pemrograman
Repositori Fungsi Wolfram adalah sesuatu yang dimungkinkan oleh sifat unik Bahasa Wolfram tidak hanya sebagai bahasa pemrograman, tetapi juga sebagai
Misalnya, repositori fungsi Wolfram sudah berisi
Demikian juga lebih dari
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
Perlu dicatat di sini bahwa saat memproses
Saya berharap dengan dukungan tersebut
Fungsi dari repositori mungkin berisi potongan kode kecil atau besar yang ditulis dalam Bahasa Wolfram. Misalnya, ini bisa berupa panggilan telepon
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
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
Meningkatkan efisiensi sekaligus mengurangi biaya
Bahkan sebelum Internet, ada cara untuk berbagi kode Bahasa Wolfram (proyek terpusat pertama kami adalah
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.
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
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:
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
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:
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
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.
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:
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
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
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
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
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
Tujuan utama dari repositori fungsi (seperti namanya) adalah untuk memperkenalkan fitur-fitur baru ke dalam bahasa tersebut. Jika Anda ingin menambahkan data baru atau
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
Jadi, apa yang mungkin ada dalam kode fungsi di repositori fungsi?
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
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
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,
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: "
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
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
Bagaimana cara kerjanya?
Di dalam fungsi-fungsi dalam repositori Wolfram hal ini dimungkinkan dengan menggunakan fungsi yang persis sama
Mempertimbangkan
Di dalamnya Anda dapat melihat beberapa informasi menggunakan fungsi tersebut
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:
Setelah Anda membuat definisi, Anda dapat menggunakan fungsi sumber daya:
Perhatikan bahwa ada ikon hitam di gumpalan fungsi ini . 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 . Dan ada ikon oranye untuk fitur sumber daya resmi di Repositori Fitur 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
Penerapan lokal suatu fungsi dari repositori di komputer Anda dilakukan menggunakan perintah
Jika Anda mengklik tombol Kirim untuk Repositori Fungsi, apa yang terjadi di bawahnya
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
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
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
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
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
Repositori fungsi adalah untuk mendefinisikan fungsi baru. Dan fungsi-fungsi ini mungkin memiliki opsi. Seringkali parameter ini (misalnya,
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
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
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.
Untuk fungsi bawaan dalam Bahasa Wolfram ada yang disebut lapisan deteksi yang disediakan oleh
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
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