Hello, Habr! Saya membentangkan kepada perhatian anda terjemahan siaran Stephen Wolfram
Prasyarat untuk konsistensi bahasa Wolfram
Hari ini kita berdiri di ambang pencapaian hebat bersama-sama dengan bahasa pengaturcaraan
Repositori Fungsi Wolfram adalah sesuatu yang dimungkinkan oleh sifat unik Bahasa Wolfram bukan sahaja sebagai bahasa pengaturcaraan, tetapi juga sebagai
Sebagai contoh, repositori fungsi Wolfram sudah mengandungi
Begitu juga lebih daripada
Untuk sampai ke halaman, salin objek di atas (fungsi BLOB), tampalkannya ke baris input dan kemudian jalankan fungsi - ia sudah terbina dalam bahasa Wolfram dan disokong secara lalai bermula dengan
Perlu diingatkan di sini bahawa apabila memproses
Saya harap dengan sokongan itu
Fungsi dari repositori mungkin mengandungi kepingan kecil atau besar kod yang ditulis dalam Bahasa Wolfram. Sebagai contoh, ini boleh menjadi panggilan
Struktur cangkerang dan pengaturcaraan Repositori Ciri Wolfram direka supaya semua orang boleh menyumbang kepada tujuan bersama dengan cara yang paling mudah dan mudah untuk mereka - sebenarnya, hanya
Terdapat banyak pertukaran dan butiran dalam pendekatan ini, tetapi matlamat kami adalah untuk mengoptimumkan repositori ciri Wolfram untuk manfaat pengguna dan untuk memastikan ciri pengguna baharu menyumbang secara bermakna kepada pembangunan bahasa. Semasa kami berkembang, saya tidak ragu-ragu bahawa kami perlu mencipta kaedah baharu untuk mengendalikan dan mengesahkan fungsi yang dibina ke dalam repositori, tidak kurang untuk mengatur sejumlah besar fungsi dan mencari fungsi yang diperlukan oleh pengguna. Walau bagaimanapun, adalah menggalakkan bahawa jalan yang kami pilih adalah permulaan yang baik. saya secara peribadi
Meningkatkan kecekapan sambil mengurangkan kos
Malah sebelum Internet, terdapat cara untuk berkongsi kod Bahasa Wolfram (projek terpusat utama kami yang pertama ialah
Selama lebih 30 tahun, syarikat kami telah bekerja dengan gigih untuk mengekalkan integriti struktur bahasa Wolfram, dan ini penting untuk memastikan bahawa bahasa Wolfram menjadi bukan sahaja bahasa pengaturcaraan, tetapi juga
Pelbagai proses pengiraan berlaku dalam struktur pelaksanaan setiap fungsi. Perlu diingatkan di sini bahawa fungsi itu perlu mempunyai penampilan yang jelas dan seragam serta kebolehbacaan visual untuk pengguna. Dalam konteks ini, fungsi terbina dalam Bahasa Wolfram dibentangkan dengan lebih daripada 6000 contoh berurutan tentang cara memprogramkan fungsi dengan betul (ini adalah kami
Mencipta repositori yang sebenarnya berfungsi dengan baik adalah tugas pengaturcaraan meta yang menarik. Sebagai contoh, lebihan sekatan dalam program tidak akan membenarkan mendapatkan penyatuan dan kesejagatan algoritma yang diperlukan. Sama seperti bilangan sekatan fungsi yang tidak mencukupi, anda tidak akan dapat melaksanakan urutan pelaksanaan algoritma yang cukup betul. Beberapa contoh sebelumnya untuk melaksanakan kompromi pendekatan ini, yang dilaksanakan oleh syarikat kami, berfungsi dengan agak stabil - ini adalah:
Semua contoh di atas mempunyai ciri asas - objek dan fungsi yang dikumpul dalam projek mempunyai tahap penstrukturan dan pengedaran proses yang sangat tinggi. Sudah tentu, perincian struktur apa itu demo atau rangkaian saraf atau sesuatu yang lain boleh berbeza-beza, tetapi struktur asas untuk mana-mana repositori semasa sentiasa kekal sama. Jadi apakah pendapat anda, pengguna yang dihormati, tentang membuat repositori sedemikian yang menambah sambungan pada bahasa Wolfram? Bahasa Wolfram direka bentuk untuk menjadi sangat fleksibel, jadi ia boleh dilanjutkan dan diubah suai dalam apa jua cara. Keadaan ini amat penting untuk keupayaan untuk mencipta pelbagai projek perisian berskala besar dengan cepat dalam Bahasa Wolfram. Perlu diingatkan di sini bahawa apabila fleksibiliti bahasa meningkat, kos projek yang dilaksanakan dalam bahasa sedemikian pasti akan meningkat. Ini disebabkan oleh fakta bahawa semakin banyak pengguna menggunakan bahasa sedemikian, semakin banyak fungsi khusus yang diterimanya, tetapi kita tidak harus lupa bahawa pendekatan ini juga mungkin mempunyai sisi negatif dari segi ketidakupayaan untuk memastikan konsistensi modul program yang konsisten.
Terdapat masalah biasa dengan perpustakaan dalam bahasa pengaturcaraan tradisional - jika anda menggunakan satu perpustakaan, sebagai contoh, kod akan berfungsi dengan betul, tetapi jika anda cuba menggunakan berbilang perpustakaan, tidak ada jaminan bahawa ia akan berinteraksi dengan betul antara satu sama lain . Juga, dalam bahasa pengaturcaraan tradisional - tidak seperti bahasa pengkomputeran sepenuhnya - tidak ada cara untuk menjamin kehadiran perwakilan terbina dalam yang konsisten untuk sebarang fungsi atau jenis data selain daripada struktur asasnya. Tetapi, sebenarnya, masalahnya lebih besar daripada yang kelihatan pada pandangan pertama: jika seseorang membina fungsi menegak berskala besar, maka tanpa kos besar pengaturcaraan projek terpusat yang kami masukkan ke dalam bahasa Wolfram, adalah mustahil untuk mencapai konsistensi. Oleh itu, adalah penting bahawa semua modul perisian sentiasa berfungsi bersama dengan betul.
Jadi idea di sebalik repositori ciri Wolfram adalah untuk mengelakkan masalah yang digariskan di atas dengan hanya menambah sambungan pada bahasa dalam kepingan kod yang agak kecil melalui ciri individu yang lebih mudah untuk dibangunkan sebagai modul yang koheren. Walaupun begitu, terdapat ciri pengaturcaraan yang tidak boleh dibuat dengan mudah menggunakan fungsi individu (dan syarikat kami merancang untuk mengeluarkan algoritma pengaturcaraan yang dioptimumkan dalam masa terdekat untuk membantu melaksanakan pakej perisian berskala besar). Walau bagaimanapun, berdasarkan fungsi yang telah dibina ke dalam Bahasa Wolfram, terdapat banyak kemungkinan pengaturcaraan yang dilaksanakan berdasarkan fungsi individu. Idea di sini ialah dengan usaha pengaturcaraan yang agak sedikit adalah mungkin untuk mencipta beberapa fungsi baru dan sangat berguna yang akan memberikan keselarasan yang mencukupi kepada reka bentuk, mereka akan diselaraskan dengan baik antara satu sama lain, dan juga, sebagai tambahan kepada ini, mereka akan dapat digunakan dengan mudah dan meluas dalam bahasa tersebut pada masa hadapan.
Pendekatan ini, sudah tentu, satu kompromi. Jika pakej yang lebih besar dilaksanakan, dunia kefungsian yang baru boleh dibayangkan yang akan menjadi sangat berkuasa dan berguna. Sekiranya terdapat keperluan untuk mendapatkan fungsi baharu yang sesuai dengan segala-galanya, tetapi anda tidak sanggup menghabiskan banyak usaha untuk membangunkan projek, malangnya, ini boleh membawa kepada pengurangan skop projek anda. Idea di sebalik repositori ciri Wolfram adalah untuk menyediakan kefungsian kepada bahagian yang menentukan projek; pendekatan ini akan menambah fungsi yang berkuasa sambil memudahkan untuk mengekalkan konsistensi yang baik dalam projek pengaturcaraan.
Bantu menambahkan fungsi tersuai pada repositori fungsi
Pasukan kami telah bekerja keras untuk memudahkan pengguna menyumbang kepada ciri repositori Wolfram. Pada desktop (sudah masuk
Terdapat dua langkah utama yang perlu anda lakukan: pertama, sebenarnya tulis kod untuk fungsi anda dan, kedua, tulis dokumentasi yang menggambarkan bagaimana fungsi anda harus berfungsi.
Klik butang "Sampel Terbuka" di bahagian atas untuk melihat contoh perkara yang perlu anda lakukan:
Pada asasnya, anda cuba mencipta sesuatu yang serupa dengan fungsi terbina dalam dalam Bahasa Wolfram. Kecuali ia boleh melakukan sesuatu yang lebih spesifik daripada fungsi terbina dalam. Pada masa yang sama, jangkaan mengenai kesempurnaan dan kebolehpercayaannya akan jauh lebih rendah.
Anda perlu memberi fungsi anda nama yang mengikut garis panduan penamaan fungsi Bahasa Wolfram. Selain itu, anda perlu membangunkan dokumentasi untuk fungsi anda, serupa dengan fungsi terbina dalam bahasa tersebut. Saya akan bercakap tentang ini dengan lebih terperinci kemudian. Buat masa ini, cuma perhatikan bahawa dalam barisan butang di bahagian atas fail buku nota definisi terdapat butang
Apabila anda pasti semuanya telah diisi dengan betul dan anda sudah bersedia, klik butang "Semak". Ia adalah perkara biasa bahawa anda belum mengetahui semua butiran lagi. Jadi fungsi "Semak" akan berjalan secara automatik dan melakukan banyak gaya dan semakan konsistensi. Selalunya, ia akan segera menggesa anda untuk mengesahkan dan menerima pembetulan (Sebagai contoh: "Baris ini mesti berakhir dengan titik bertindih", dan ia akan menggesa anda untuk memasukkan titik bertindih). Kadang-kadang dia akan meminta anda menambah atau mengubah sesuatu sendiri. Kami akan sentiasa menambah ciri baharu pada kefungsian automatik butang Semak, tetapi pada asasnya tujuannya adalah untuk memastikan semua yang anda serahkan ke repositori ciri telah mengikuti seberapa banyak garis panduan gaya yang mungkin.
Jadi, selepas menjalankan "Semak", anda boleh menggunakan "Pratonton". "Pratonton" mencipta pratonton halaman dokumentasi yang anda tentukan untuk fungsi anda. Anda juga boleh membuat pratonton untuk fail yang dibuat pada komputer anda atau untuk fail yang terletak dalam storan awan. Jika, atas sebab tertentu, anda tidak berpuas hati dengan apa yang anda lihat dalam pratonton, hanya kembali dan buat pembetulan yang diperlukan, dan kemudian klik butang Pratonton sekali lagi.
Kini anda sudah bersedia untuk menolak fungsi anda ke dalam repositori. Butang Deploy memberi anda empat pilihan:
Perkara penting pada langkah ini ialah anda boleh menyerahkan fungsi anda ke repositori fungsi Wolfram supaya ia tersedia kepada sesiapa sahaja. Pada masa yang sama, anda juga boleh meletakkan fungsi anda untuk bilangan pengguna yang terhad. Contohnya, anda boleh mencipta fungsi yang dihoskan secara setempat pada komputer anda supaya ia tersedia apabila anda menggunakan komputer tersebut. Atau anda boleh menyiarkannya dalam anda
Oleh itu, katakan anda sebenarnya ingin menyerahkan fungsi anda ke pangkalan pengetahuan fungsi Wolfram. Untuk melakukan ini, anda klik butang "Serah" ke repositori. Jadi apa yang berlaku pada masa ini? Permohonan anda segera beratur untuk semakan dan kelulusan oleh pasukan kurator kami yang berdedikasi.
Semasa permohonan anda berjalan melalui proses kelulusan (yang biasanya mengambil masa beberapa hari), anda akan menerima komunikasi mengenai statusnya dan mungkin cadangan untuk kegunaan masa hadapan. Tetapi sebaik sahaja ciri anda diluluskan, ia akan segera diterbitkan ke Repositori Ciri Wolfram dan akan tersedia untuk digunakan oleh sesiapa sahaja. (Dan ini akan muncul dalam
Apa yang perlu ada dalam simpanan?
Perlu diingat bahawa syarikat kami mempunyai standard yang sangat tinggi untuk kesempurnaan, kebolehpercayaan dan kualiti keseluruhan, dan daripada 6000+ fungsi yang telah kami bina ke dalam bahasa Wolfram sejak 30+ tahun yang lalu, semuanya memenuhi keperluan di atas. Matlamat Repositori Fungsi Wolfram adalah untuk menggunakan semua struktur dan kefungsian yang telah wujud dalam Bahasa Wolfram untuk menambah sebanyak mungkin fungsi yang lebih ringan (iaitu, fungsi prestasi yang lebih tinggi).
Sudah tentu, fungsi dalam repositori fungsi Wolfram mesti mematuhi prinsip reka bentuk Bahasa Wolfram - supaya mereka boleh berinteraksi sepenuhnya dengan fungsi lain dan jangkaan pengguna tentang cara fungsi itu berfungsi dengan betul. Walau bagaimanapun, fungsi tersebut tidak semestinya mempunyai kesempurnaan atau kebolehpercayaan yang sama.
Dalam fungsi terbina dalam bahasa Wolfram, kami bekerja keras untuk menjadikan fungsi pengaturcaraan seumum mungkin. Yang dikatakan, apabila dalam repositori fungsi Wolfram tidak ada yang salah dengan mempunyai fungsi di dalamnya yang hanya mengendalikan beberapa kes yang sangat spesifik tetapi berguna. Sebagai contoh, fungsi
Perkara lain yang berkaitan dengan fungsi terbina dalam ialah syarikat kami berusaha sedaya upaya untuk mengendalikan semua kes atipikal, untuk mengendalikan input yang salah dengan betul, dan sebagainya. Dalam repositori fungsi, adalah perkara biasa untuk terdapat fungsi khas yang mengendalikan kes utama menyelesaikan masalah dan mengabaikan semua yang lain.
Perkara yang jelas ialah lebih baik untuk mempunyai fungsi yang melakukan lebih banyak dan melakukannya dengan lebih baik, tetapi pengoptimuman untuk repositori fungsi - berbanding dengan fungsi terbina dalam bahasa Wolfram - sepatutnya mempunyai lebih banyak fungsi yang digabungkan dengan lebih banyak fungsi daripada menyelidikinya. proses pelaksanaan setiap fungsi tertentu.
Sekarang mari kita lihat contoh fungsi ujian dalam repositori. Jangkaan ketekalan untuk fungsi sedemikian secara semula jadi jauh lebih rendah daripada untuk fungsi bahasa terbina dalam. Ini benar terutamanya dalam kes di mana fungsi bergantung pada sumber luaran seperti API, adalah penting untuk sentiasa menjalankan ujian yang konsisten, yang secara automatik berlaku dalam algoritma pengesahan. Dalam fail nb, anda boleh menentukan definisi secara eksplisit (dalam bahagian Maklumat Tambahan) dan menentukan seberapa banyak ujian seperti yang ditakrifkan oleh sama ada rentetan input dan output atau objek jenis penuh aksara
Akibatnya, repositori fungsi akan mempunyai beberapa kerumitan pelaksanaan. Sesetengah akan menjadi hanya satu baris kod, yang lain mungkin melibatkan beribu-ribu atau berpuluh-puluh ribu baris, mungkin menggunakan banyak fungsi pembantu. Bilakah ia bernilai menambah fungsi yang memerlukan kod yang sangat sedikit untuk ditakrifkan? Basically, kalau untuk function ada
Tujuan utama repositori fungsi (seperti namanya) adalah untuk memperkenalkan ciri baharu ke dalam bahasa. Jika anda ingin menambah data baharu atau
Sebenarnya ada dua cara. Anda mungkin ingin memperkenalkan jenis objek baharu yang akan digunakan dalam fungsi baharu dalam repositori fungsi. Dan dalam kes ini, anda sentiasa boleh menulis perwakilan simboliknya dan menggunakannya semasa memasukkan atau mengeluarkan fungsi dalam repositori fungsi.
Tetapi bagaimana jika anda ingin mewakili objek dan kemudian mentakrifkan, melalui fungsi sedia ada dalam Bahasa Wolfram, yang anda mahu bekerja dengannya? Bahasa Wolfram sentiasa mempunyai mekanisme ringan untuk ini, dipanggil
Jadi, apakah yang mungkin ada dalam kod fungsi dalam repositori fungsi?
Sekiranya semua kod untuk repositori ciri Wolfram ditulis dalam Wolfram? Sudah tentu, kod di dalam API luaran tidak boleh ditulis dalam bahasa Wolfram, yang tidak membuat kod bahasa pun. Malah, jika anda menemui fungsi dalam hampir mana-mana bahasa atau pustaka luaran, anda boleh mencipta pembungkus yang membolehkan anda menggunakannya dalam repositori fungsi Wolfram. (Biasanya anda harus menggunakan fungsi terbina dalam untuk ini
Jadi apa gunanya melakukan ini? Pada asasnya, ini membolehkan anda menggunakan keseluruhan sistem Bahasa Wolfram bersepadu dan keseluruhan set keupayaan perisiannya yang bersatu. Jika anda memperoleh pelaksanaan asas daripada pustaka atau bahasa luaran, anda kemudian boleh menggunakan struktur simbolik yang kaya bagi Bahasa Wolfram untuk mencipta fungsi peringkat atas yang mudah yang membolehkan pengguna menggunakan mana-mana fungsi yang telah dilaksanakan dengan mudah. Sekurang-kurangnya, ini harus dilaksanakan dalam dunia yang ideal di mana semua blok bangunan perpustakaan memuatkan dll wujud, dalam hal ini ia akan dikendalikan secara automatik oleh Bahasa Wolfram. (Perlu diingatkan bahawa dalam amalan mungkin terdapat masalah dengan
Ngomong-ngomong, apabila anda mula-mula melihat perpustakaan luaran biasa, ia selalunya kelihatan terlalu rumit untuk diliputi dalam beberapa fungsi sahaja, tetapi dalam banyak kes, kebanyakan kerumitan datang daripada mencipta infrastruktur yang diperlukan untuk perpustakaan dan semua fungsi untuk menyokongnya. Walau bagaimanapun, apabila menggunakan Bahasa Wolfram, infrastruktur biasanya sudah terbina dalam pakej, jadi tidak perlu mendedahkan semua fungsi sokongan ini secara terperinci, tetapi hanya mencipta fungsi untuk fungsi khusus aplikasi "paling atas" dalam perpustakaan .
"Ekosistem" pangkalan pengetahuan
Jika anda telah menulis fungsi yang anda gunakan secara kerap, serahkannya ke Repositori Fungsi Wolfram! Jika sesuatu yang lebih tidak keluar daripada ini (pembangunan bahasa), maka itu akan menjadi lebih mudah untuk anda menggunakan fungsi untuk kegunaan peribadi. Walau bagaimanapun, adalah logik untuk mengandaikan bahawa jika anda menggunakan fungsi secara kerap, mungkin pengguna lain juga akan mendapati ia berguna.
Sememangnya, anda mungkin mendapati diri anda berada dalam situasi di mana anda tidak dapat - atau tidak mahu - untuk berkongsi fungsi anda atau sekiranya mendapat akses kepada sumber maklumat peribadi. Walaupun dalam kes sedemikian, anda hanya boleh menggunakan fungsi dalam akaun awan anda sendiri,
Fungsi yang anda serahkan ke repositori fungsi Wolfram tidak semestinya sempurna; mereka hanya perlu berguna. Ini sedikit seperti bahagian "Ralat" dalam dokumentasi Unix klasik - dalam "Bahagian Definisi" terdapat bahagian "Nota Pengarang" di mana anda boleh menerangkan had, masalah, dsb. yang anda sudah tahu tentang fungsi anda. Selain itu, apabila anda menyerahkan ciri anda ke repositori, anda boleh menambah nota penyerahan yang akan dibaca oleh pasukan kurator yang berdedikasi.
Sebaik sahaja ciri diterbitkan, halamannya sentiasa mempunyai dua pautan di bahagian bawah: "
Kadangkala anda hanya mahu menggunakan fungsi daripada repositori fungsi Wolfram, seperti fungsi terbina dalam, tanpa melihat kodnya. Walau bagaimanapun, jika anda ingin melihat bahagian dalam, sentiasa ada butang Notepad di bahagian atas. Klik padanya dan anda akan mendapat salinan buku nota definisi asal anda sendiri yang telah diserahkan kepada repositori ciri. Kadang-kadang anda boleh menggunakannya sebagai contoh untuk keperluan anda. Pada masa yang sama, anda juga boleh membangunkan pengubahsuaian anda sendiri untuk fungsi ini. Anda mungkin mahu menyiarkan fungsi ini yang anda temui daripada repositori pada komputer anda atau dalam akaun storan awan aphid anda, mungkin anda ingin menyerahkannya ke pangkalan pengetahuan fungsi, mungkin sebagai versi yang dipertingkatkan dan diperluas bagi fungsi asal.
Pada masa hadapan, kami bercadang untuk menyokong forking gaya Git untuk repositori ciri, tetapi buat masa ini kami cuba memastikannya mudah, dan kami sentiasa hanya mempunyai satu versi yang diterima bagi setiap ciri terbina dalam bahasa. Lebih kerap daripada tidak (melainkan pembangun berhenti mengekalkan ciri yang mereka bangunkan dan bertindak balas kepada penyerahan pengguna), pengarang asal ciri itu mengawal kemas kini padanya dan menyerahkan versi baharu, yang kemudiannya disemak dan, jika mereka lulus proses semakan. , diterbitkan dalam bahasa.
Mari kita pertimbangkan persoalan bagaimana "versi" fungsi yang dibangunkan berfungsi. Pada masa ini, apabila anda menggunakan fungsi daripada repositori fungsi, definisinya akan disimpan secara kekal pada komputer anda (atau dalam akaun awan anda jika anda menggunakan awan). Jika versi baharu sesuatu ciri tersedia, pada kali berikutnya anda menggunakannya, anda akan menerima mesej yang memberitahu anda tentang perkara ini. Dan jika anda ingin mengemas kini fungsi kepada versi baharu, anda boleh melakukannya menggunakan arahan
Salah satu perkara yang menarik tentang Repositori Fungsi Wolfram ialah mana-mana program Bahasa Wolfram, di mana-mana sahaja boleh menggunakan fungsi daripadanya. Jika program muncul dalam pad nota, selalunya mudah untuk memformatkan fungsi repositori sebagai fungsi "objek binari fungsi" yang mudah dibaca (mungkin dengan set versi yang sesuai).
Anda sentiasa boleh mengakses sebarang fungsi dalam repositori fungsi menggunakan teks
Bagaimana ia berfungsi?
Di dalam fungsi dalam repositori Wolfram ini mungkin menggunakan sama
Pertimbangkan
Di dalam anda boleh melihat beberapa maklumat menggunakan fungsi tersebut
Bagaimanakah penyediaan fungsi sumber berfungsi? Yang paling mudah ialah kes tempatan semata-mata. Berikut ialah contoh yang mengambil fungsi (dalam kes ini hanya fungsi tulen) dan mentakrifkannya sebagai fungsi sumber untuk sesi program tertentu:
Setelah anda membuat definisi, anda boleh menggunakan fungsi sumber:
Ambil perhatian bahawa terdapat ikon hitam dalam gumpalan fungsi ini . Ini bermakna fungsi BLOB merujuk kepada fungsi sumber dalam memori yang ditakrifkan untuk sesi semasa. Ciri sumber yang disimpan secara kekal pada komputer atau akaun awan anda mempunyai ikon kelabu . Dan terdapat ikon oren untuk ciri sumber rasmi dalam Repositori Ciri Wolfram .
Jadi apa yang berlaku apabila anda menggunakan menu Kembangkan dalam Buku Nota Definisi? Pertama, ia mengambil semua definisi dalam pad nota dan daripadanya mencipta simbolik
Penggunaan tempatan fungsi daripada repositori pada komputer anda dilakukan menggunakan arahan
Jika anda mengklik butang Hantar untuk Repositori Fungsi, perkara yang berlaku di bawahnya
Secara lalai, penyerahan dibuat di bawah nama yang dikaitkan dengan ID Wolfram anda. Tetapi jika anda menyerahkan permohonan bagi pihak pasukan pembangunan atau organisasi, anda boleh
Selepas anda menyerahkan mana-mana fungsi anda ke pangkalan pengetahuan fungsi, ia akan dibariskan dalam baris gilir untuk semakan. Jika anda menerima komen sebagai balasan, ia biasanya dalam bentuk fail teks dengan tambahan "sel ulasan" tambahan. Anda sentiasa boleh menyemak status permohonan anda dengan melawati
Beberapa kehalusan di tempat kerja
Pada pandangan pertama, nampaknya anda hanya boleh mengambil buku nota definisi dan meletakkannya secara verbatim ke dalam repositori fungsi, namun, sebenarnya terdapat banyak kehalusan yang terlibat - dan pengendaliannya memerlukan melakukan beberapa pengaturcaraan meta yang cukup kompleks, mengendalikan pemprosesan simbolik sebagai kod yang mentakrifkan fungsi , dan Notepad itu sendiri ditakrifkan. Kebanyakan perkara ini berlaku secara dalaman, di belakang tabir, tetapi ia boleh mempunyai beberapa implikasi yang patut difahami jika anda akan menyumbang kepada pangkalan pengetahuan ciri.
Kehalusan serta-merta pertama: Apabila anda mengisi Buku Nota Definisi, anda boleh merujuk kepada fungsi anda di mana-mana sahaja menggunakan nama seperti MyFunction, yang kelihatan seperti nama biasa untuk fungsi dalam Bahasa Wolfram, tetapi untuk dokumentasi repositori fungsi ini diganti
Kehalusan kedua: apabila anda mencipta fungsi sumber daripada Buku Nota Definisi, semua kebergantungan yang terlibat dalam definisi fungsi mesti ditangkap dan disertakan secara eksplisit. Walau bagaimanapun, untuk memastikan bahawa definisi kekal modular, anda perlu meletakkan segala-galanya dalam yang unik
Biasanya anda tidak akan melihat sebarang kesan kod yang digunakan untuk mengkonfigurasi ruang nama ini. Tetapi jika atas sebab tertentu anda memanggil simbol yang kurang dilaksanakan di dalam fungsi anda, maka anda akan melihat bahawa simbol ini berada dalam konteks dalaman fungsi tersebut. Walau bagaimanapun, apabila memproses Notepad Definisi, sekurang-kurangnya simbol yang sepadan dengan fungsi itu sendiri adalah
Repositori fungsi adalah untuk menentukan fungsi baru. Dan fungsi ini mungkin mempunyai pilihan. Selalunya parameter ini (contohnya,
Kebanyakan fungsi hanya melakukan perkara yang sepatutnya dilakukan setiap kali ia dipanggil, tetapi beberapa fungsi perlu dimulakan sebelum ia boleh dijalankan dalam sesi tertentu - dan untuk menyelesaikan masalah ini, terdapat bahagian "Initialization" dalam bahagian Definisi.
Fungsi daripada repositori boleh menggunakan fungsi lain yang sudah ada dalam repositori; untuk menyediakan definisi bagi repositori fungsi yang merangkumi dua (atau lebih) fungsi yang merujuk antara satu sama lain, anda mesti menggunakan fungsi tersebut dalam sesi program anda supaya anda boleh rujukan seperti pada mereka
Prospek pembangunan. Apa yang perlu berlaku apabila repositori menjadi sangat besar?
Hari ini kami baru sahaja melancarkan Repositori Ciri Wolfram, tetapi lama kelamaan kami menjangkakan bahawa saiz dan fungsinya mungkin meningkat secara mendadak, dan apabila ia berkembang dalam pembangunan akan ada pelbagai masalah yang kami jangkakan mungkin timbul.
Masalah pertama melibatkan nama fungsi dan keunikannya. Repositori fungsi direka bentuk sedemikian rupa, seperti fungsi terbina dalam Bahasa Wolfram, anda boleh merujuk mana-mana fungsi yang diberikan hanya dengan menyatakan namanya. Tetapi ini tidak dapat dielakkan bermakna bahawa nama fungsi mestilah unik secara global di seluruh repositori, supaya, sebagai contoh, hanya boleh ada satu
Ini mungkin kelihatan seperti masalah besar pada mulanya, tetapi perlu disedari bahawa ia pada asasnya adalah masalah yang sama seperti untuk perkara seperti domain internet atau pengendalian media sosial. Dan hakikatnya ialah sistem hanya perlu mempunyai pendaftar - dan ini adalah salah satu peranan yang akan dilaksanakan oleh syarikat kami untuk pangkalan pengetahuan fungsi Wolfram. (Untuk versi persendirian repositori, pendaftar mereka mungkin pentadbir.) Sudah tentu, domain Internet boleh didaftarkan tanpa apa-apa padanya, tetapi dalam repositori fungsi, nama fungsi hanya boleh didaftarkan jika terdapat definisi sebenar bagi fungsinya.
Sebahagian daripada peranan kami dalam mengurus pangkalan pengetahuan fungsi Wolfram adalah untuk memastikan bahawa nama yang dipilih untuk sesuatu fungsi adalah logik berdasarkan takrifan fungsi tersebut dan ia mengikut konvensyen penamaan Bahasa Wolfram. Kami mempunyai lebih 30 tahun pengalaman menamakan fungsi terbina dalam dalam Bahasa Wolfram, dan pasukan kurator kami akan membawa pengalaman itu ke repositori fungsi juga. Sudah tentu, sentiasa ada pengecualian. Sebagai contoh, nampaknya lebih baik untuk mempunyai nama pendek untuk beberapa fungsi, tetapi lebih baik untuk "mempertahankan" dengan nama yang lebih panjang dan lebih khusus kerana anda kurang berkemungkinan terserempak dengan seseorang yang ingin membuat nama fungsi yang serupa pada masa hadapan .
(Perlu diingatkan di sini bahawa hanya menambah beberapa teg ahli untuk menyahkekaburan fungsi tidak akan mempunyai kesan yang dimaksudkan. Kerana melainkan anda berkeras untuk sentiasa memberikan teg, anda perlu menentukan teg lalai untuk mana-mana fungsi tertentu, dan juga memperuntukkan teg pengarang , yang sekali lagi memerlukan penyelarasan global.)
Apabila asas pengetahuan tentang fungsi Wolfram berkembang, salah satu masalah yang mungkin timbul ialah kebolehtemuan fungsi, yang mana sistem menyediakan
Untuk fungsi terbina dalam Bahasa Wolfram terdapat lapisan pengesanan yang dipanggil yang disediakan oleh
Repositori fungsi Wolfram dikonfigurasikan sebagai repositori fungsi berterusan, di mana sebarang fungsi di dalamnya akan sentiasa berfungsi. Sudah tentu, versi ciri baharu mungkin tersedia dan kami menjangkakan bahawa beberapa ciri sudah tentu akan menjadi usang dari semasa ke semasa. Fungsi akan berfungsi jika ia digunakan dalam program, tetapi halaman dokumentasinya akan dipautkan ke fungsi baharu yang lebih maju.
Repositori Ciri Wolfram direka untuk membantu anda menemui ciri baharu dengan cepat dan mempelajari cara baharu untuk menggunakan bahasa Wolfram. Kami sangat optimis bahawa beberapa perkara yang telah diterokai dalam repositori ciri akhirnya akan masuk akal untuk menjadi bahagian terbina dalam Bahasa Wolfram teras. Sepanjang dekad yang lalu kami mempunyai set yang sama
Perkara yang paling penting di sini ialah fungsi dalam repositori fungsi adalah sesuatu yang tersedia untuk digunakan oleh setiap pengguna sekarang. Ada kemungkinan bahawa ciri bahasa ibunda boleh menjadi lebih baik dan lebih berprestasi, tetapi repositori ciri akan membolehkan pengguna mempunyai akses kepada semua ciri baharu dengan segera. Dan, yang paling penting, konsep ini membolehkan semua orang menambah sebarang ciri baharu yang mereka inginkan.
Terdahulu dalam sejarah bahasa Wolfram, idea ini tidak akan berfungsi sebaik yang ada, tetapi pada peringkat ini terdapat begitu banyak usaha yang dimasukkan ke dalam bahasa, dan pemahaman yang mendalam tentang prinsip reka bentuk bahasa, sehingga kini nampaknya sangat mungkin bagi komuniti pengguna yang besar untuk menambah ciri yang akan mengekalkan ketekalan reka bentuk untuk menjadikannya berguna kepada pelbagai pengguna.
Terdapat semangat bakat yang luar biasa(?) dalam komuniti pengguna Bahasa Wolfram. (Sudah tentu, komuniti ini merangkumi ramai ahli R&D terkemuka dalam pelbagai bidang.) Saya berharap Repositori Ciri Wolfram akan menyediakan platform yang berkesan untuk membuka kunci dan menyebarkan semangat bakat ini. Hanya bersama-sama kita boleh mencipta sesuatu yang akan meluaskan dengan ketara kawasan di mana paradigma pengkomputeran bahasa Wolfram boleh digunakan.
Dalam lebih daripada 30 tahun, kami telah melangkah jauh dengan bahasa Wolfram. Sekarang bersama-sama, mari kita pergi lebih jauh. Saya amat menggalakkan semua pengguna bahasa Wolfram yang dihormati di seluruh dunia untuk menggunakan repositori berfungsi sebagai platform untuk ini, serta projek perisian baharu seperti Enjin Wolfram Percuma untuk Pembangun.
Sumber: www.habr.com