Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Merhaba Habr! Dikkatinize Stephen Wolfram'ın yazısının çevirisini sunuyorum "Wolfram İşlev Havuzu: Wolfram Dilini Genişletmek için Açık Bir Platformun Başlatılması".

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Wolfram dilinin tutarlılığı için önkoşullar

Bugün programlama diliyle birlikte büyük başarıların eşiğindeyiz Wolfram Dili. Sadece üç hafta önce başlattık geliştiriciler için ücretsiz Wolfram motorukullanıcılarımızın Wolfram Dilini büyük ölçekli yazılım projelerine entegre etmelerine yardımcı olmak. Bugün başlıyoruz Wolfram işlev deposuWolfram dilini genişletmek için oluşturulan işlevler için koordineli bir platform sağlamak amacıyla ve ayrıca yazılım ürünümüzün geliştirilmesine katkıda bulunabilecek herkese bir işlev deposu açıyoruz.

Wolfram İşlev Havuzu, Wolfram Dilinin benzersiz doğası sayesinde yalnızca bir programlama dili olarak değil aynı zamanda bir programlama dili olarak da mümkün kılınmıştır. tam ölçekli bilgi işlem dili. Geleneksel programlama dillerinde, önemli yeni işlevselliklerin eklenmesi genellikle birlikte kullanıldıklarında çalışabilecek veya çalışmayabilecek tüm ek kitaplıkların oluşturulmasını içerir. Ancak Wolfram Dilinde dilin kendisinde zaten pek çok şey yerleşiktirtüm dilin bütünsel yapısına hemen entegre edilen yeni işlevlerin eklenmesiyle işlevselliğini önemli ölçüde genişletmenin mümkün olduğunu.

Örneğin, Wolfram işlev deposu zaten şunları içeriyor: 532 yeni özellik 26 tematik kategoriye ayrılmıştır:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Aynı şekilde daha fazla 6000 standart fonksiyonWolfram dilinde yerleşik olarak, depodaki her işlevin ayrıntılı açıklamalarını ve çalışma örneklerini içeren bir dokümantasyon sayfası vardır:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Sayfaya ulaşmak için yukarıdaki nesneyi (BLOB işlevi) kopyalayın, giriş satırına yapıştırın ve ardından işlevi çalıştırın; bu, Wolfram dilinde zaten yerleşiktir ve ile başlayarak varsayılan olarak desteklenir: versiyon 12.0:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Burada şunu belirtmek gerekir ki, işlem yapılırken LogoQRCod Örneğin bir "görüntü işleme kütüphanesi" kurmanıza gerek yok - çünkü Wolfram Dilinde zaten tutarlı ve dikkatli bir algoritmik yol uyguladık görüntü işlemeçeşitli grafiksel dil işlevleriyle anında işlenebilen:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Umarım desteğinizle harika ve yetenekli topluluk, son birkaç on yılda (Wolfram Dilini temel alarak) büyüyor ve genişliyor. Wolfram işlev deposu, öngörülebilir gelecekte dilde mevcut olan işlevlerin (muhtemelen potansiyel olarak önemli, çeşitli bilim ve teknoloji alanlarında uzmanlaşmış) kapsamını önemli ölçüde genişletmeye olanak sağlayacaktır. Böylece hem dilin içeriğini (yerleşik işlevlerini) hem de geliştirme ilkeleri, dile göre uygulanır. (Burada Wolfram Dilinin halihazırda birden fazla dil içerdiğini belirtmek gerekir. 30 yıllık gelişme ve istikrarlı büyüme geçmişi).
Depodaki işlevler Wolfram Dilinde yazılmış küçük veya büyük kod parçaları içerebilir. Örneğin bunlar aramalar olabilir harici API'ler ve hizmetler veya diğer dillerdeki harici kütüphaneler. Bu yaklaşımın benzersiz özelliği, kullanıcı düzeyindeki işlevselliğe indiğinizde potansiyel tutarsızlıkların olmayacağıdır çünkü yaklaşım Wolfram Dilinin tutarlı yapısı üzerine inşa edilmiştir ve her işlev otomatik olarak doğru şekilde çalışacaktır. yapmalıydı.
Wolfram Özellik Havuzunun kabuk ve programlama yapısı, herkesin ortak amaca kendileri için en basit ve kullanışlı şekilde katkıda bulunabileceği şekilde tasarlanmıştır - aslında sadece not defteri metin dosyasını (nb uzantılı) WL doldurarak. Yerleşik otomatik işlevler, depoya eklenen yeni işlevlerin dile entegrasyonunu sağlamak için kontrol etmenize olanak tanır. Şirketimiz, yeni işlevlerin büyük karmaşıklığından ziyade, işlevlerini dile entegre edebilecek geniş kullanıcı yelpazesine güveniyor ve bir inceleme süreci olmasına rağmen, bunun gibi bir şeyde ısrar etmiyoruz. özenli tasarım analizi veya kullandığımız temel dilde yerleşik özelliklerin daha sıkı test edilmesinin aksine, yeni kullanıcı özelliklerinin eksiksizliği ve güvenilirliği için katı standartlar.

Bu yaklaşımda pek çok taviz ve ayrıntı var, ancak amacımız Wolfram özellik deposunu hem kullanıcı deneyimi için optimize etmek hem de yeni kullanıcı özelliklerinin dilin gelişimine anlamlı katkıda bulunmasını sağlamaktır. Büyüdükçe, özellikle çok sayıda işlevi düzenlemek ve kullanıcıların ihtiyaç duyduğu işlevleri bulmak için, depoda yerleşik işlevleri işlemek ve doğrulamak için yeni yöntemler icat etmemiz gerekeceğinden hiç şüphem yok. Ancak seçtiğimiz yolun iyi bir başlangıç ​​olması cesaret verici. şahsen çeşitli özellikler ekledi orijinal veritabanına. Birçoğu uzun süredir kişisel olarak geliştirdiğim kodlara dayanıyor. Ve onları depoya itmem sadece birkaç dakikamı aldı. Artık bunlar depoda olduğuna göre, nihayet - hemen ve istediğim zaman - bu işlevleri gerektiği gibi, dosya arama, paket indirme vb. endişeleri olmadan kullanabilirim.

Maliyetleri azaltırken verimliliği artırmak

İnternetten önce bile Wolfram Dil kodunu paylaşmanın yolları vardı (ilk büyük merkezi projemiz MatematikKaynağı, 1991 yılında Mathematica için CD-ROM vb. temel alınarak oluşturulmuştur). Elbette Wolfram fonksiyon deposunu temel alan uygulama için önerilen yaklaşım, yukarıdaki görevlerin uygulanması için daha güçlü ve güvenilir bir araçtır.

Şirketimiz 30 yılı aşkın bir süredir Wolfram dil yapısının bütünlüğünü korumak için özenle çalışmaktadır ve bu, Wolfram dilinin yalnızca bir programlama dili değil aynı zamanda bir programlama dili olmasını sağlamak için kritik öneme sahiptir. tam teşekküllü bilgi işlem dili. Ve bu nedenle, Wolfram işlev deposunu uygulamaya yönelik yaklaşımın özü, sırayla eklenen ve dilin gelişebilmesi ve birlikte gelişebilmesi için dilin çerçevesine uyan yeni işlevleri programlamak ve geliştirmek için birleşik bir yaklaşım kullanmaktır.

Her fonksiyonun uygulama yapısında çeşitli hesaplama süreçleri meydana gelir. Burada şunu belirtmek gerekir ki fonksiyonun net ve yeknesak bir görünüme sahip olması ve kullanıcı açısından görsel olarak okunabilir olması gerekmektedir. Bu bağlamda Wolfram Dilinin yerleşik işlevleri, işlevlerin nasıl doğru şekilde programlanacağına ilişkin 6000'den fazla sıralı örnekle sunulmaktadır (bunlar bizim çalışmamızdır). canlı programlama videolarıdahil yüzlerce saatlik standart programlar oluşturma süreci). Bu yaklaşımın sonuçta Wolfram özellik deposunu iyi performans gösterme kapasitesine sahip kılan şey, Wolfram Dilinin yapısal doğasıdır ve halihazırda dilin içine yerleştirilmiş çok sayıda ek ve çeşitli kitaplıkları vardır. Örneğin görüntüleri işleyen bir işleviniz varsa veya seyrek diziler, veya moleküler yapılarVe coğrafi veri veya diğerleri - bunların tutarlı sembolik temsilleri dilde zaten mevcuttur ve bu sayede işleviniz dildeki diğer işlevlerle anında uyumlu hale gelir.

Gerçekten iyi çalışan bir depo oluşturmak ilginç bir meta programlama görevidir. Örneğin, programdaki aşırı kısıtlamalar, algoritmanın gerekli birleşiminin ve evrenselliğinin elde edilmesine izin vermeyecektir. Yetersiz sayıda işlevsel kısıtlamada olduğu gibi, yeterince doğru bir algoritma yürütme sırasını uygulayamayacaksınız. Şirketimiz tarafından uygulanan bu yaklaşımların bir uzlaşmasının uygulanmasına ilişkin önceki birkaç örnek oldukça istikrarlı bir şekilde çalıştı - bunlar: Proje Tungsten Gösterileri2007'de piyasaya sürüldü ve şu anda 12000'den fazla kullanıcı etkileşimli demoyla çevrimiçi olarak çalışıyor. İÇİNDE Wolfram veritabanı Wolfram Dilinde kullanılabilecek 600'den fazla hazır veri tabanı bulunmaktadır ve Wolfram sinir ağı depolaması neredeyse her hafta yeni sinir ağları ile dolduruluyor (şu anda bunlardan 118 tane var) ve işlev aracılığıyla hemen bağlanıyorlar NetModeli Wolfram dilinde.

Yukarıdaki örneklerin hepsinin temel bir özelliği vardır - projede toplanan nesneler ve işlevler, süreçlerin çok yüksek düzeyde yapılandırılmasına ve dağıtılmasına sahiptir. Elbette bir demo veya sinir ağı veya başka bir şeyin yapısının ayrıntıları büyük ölçüde değişebilir, ancak mevcut herhangi bir veri havuzunun temel yapısı her zaman aynı kalır. Peki sevgili kullanıcı, Wolfram diline uzantılar ekleyen böyle bir veri havuzu oluşturma konusundaki fikriniz nedir? Wolfram Dili son derece esnek olacak şekilde tasarlanmıştır, dolayısıyla herhangi bir şekilde genişletilebilir ve değiştirilebilir. Bu durum Wolfram Dilinde çeşitli büyük ölçekli yazılım projelerinin hızlı bir şekilde oluşturulabilmesi için son derece önemlidir. Burada şunu belirtmek gerekir ki dilin esnekliği arttıkça böyle bir dilde yürütülen projelerin maliyeti de kaçınılmaz olarak artacaktır. Bunun nedeni, kullanıcı böyle bir dili ne kadar çok kullanırsa, o kadar çok özel işlevsellik alır, ancak bu yaklaşımın program modüllerinin tutarlı tutarlılığını sağlayamama açısından olumsuz yanlarının da olabileceğini unutmamalıyız.

Geleneksel programlama dillerindeki kitaplıklarla ilgili ortak bir sorun vardır - örneğin bir kitaplık kullanırsanız kod doğru çalışır, ancak birden fazla kitaplık kullanmaya çalışırsanız bunların birbirleriyle doğru şekilde etkileşime gireceğinin garantisi yoktur. . Ayrıca, geleneksel programlama dillerinde - tam teşekküllü bir bilgi işlem dilinin aksine - temel yapıları dışında herhangi bir işlev veya veri türü için tutarlı yerleşik temsillerin varlığını garanti etmenin bir yolu yoktur. Ancak aslında sorun ilk bakışta göründüğünden daha da büyük: Eğer büyük ölçekli bir işlevsellik dikeyi inşa ediliyorsa, o zaman Wolfram diline koyduğumuz merkezi proje programlamanın büyük maliyetleri olmadan bunu yapmak imkansızdır. tutarlılık elde edin. Bu nedenle tüm yazılım modüllerinin her zaman birlikte doğru şekilde çalışması önemlidir.

Dolayısıyla Wolfram özellik deposunun ardındaki fikir, tutarlı modüller olarak geliştirilmesi daha kolay olan bireysel özellikler aracılığıyla dile nispeten küçük kod parçaları halinde basit uzantılar ekleyerek yukarıda özetlenen sorunu önlemektir. Bununla birlikte, bireysel işlevler kullanılarak kullanışlı hale getirilemeyen programlama özellikleri vardır (ve şirketimiz, büyük ölçekli yazılım paketlerinin uygulanmasına yardımcı olmak için yakın gelecekte optimize edilmiş bir programlama algoritması yayınlamayı planlamaktadır). Ancak Wolfram Dilinde halihazırda yerleşik olan işlevlere dayalı olarak, bireysel işlevlere dayalı olarak uygulanan birçok programlama olanağı vardır. Buradaki fikir, nispeten az programlama çabasıyla, yeterli tasarım tutarlılığı sağlayacak, birbirleriyle iyi uyum sağlayacak bir dizi yeni ve çok kullanışlı fonksiyon oluşturmanın mümkün olmasıdır. gelecekte dilde kolaylıkla ve yaygın olarak kullanılabilecektir.

Bu yaklaşım elbette bir uzlaşmadır. Daha büyük bir paket uygulamaya konulsaydı, son derece güçlü ve kullanışlı olacak tamamen yeni bir işlevsellik dünyası hayal edilebilirdi. Her şeye uyum sağlayacak yeni işlevsellik edinme ihtiyacı varsa ancak projeyi geliştirmek için çok fazla çaba harcamaya istekli değilseniz, bu ne yazık ki projenizin kapsamının daralmasına yol açabilir. Wolfram özellik deposunun arkasındaki fikir, bir projenin tanımlayıcı bir kısmına işlevsellik sağlamaktır; bu yaklaşım, bir programlama projesinde iyi bir tutarlılığın korunmasını kolaylaştırırken aynı zamanda güçlü bir işlevsellik katacaktır.

İşlev deposuna özel işlevler eklemeye yardımcı olun

Ekibimiz, kullanıcıların Wolfram veri havuzu özelliklerine katkıda bulunmalarını kolaylaştırmak için çok çalıştı. Masaüstünde (zaten versiyon 12.0), Ana menü sekmelerinden sırayla geçebilirsiniz: Dosya > Yeni > Depo Öğesi > İşlev Depo Öğesi ve şunu elde edersiniz: "Tanımlı Defter" (programlı olarak tezgahın içinde. Analog işlevi de kullanabilirsiniz - Not Defteri Oluştur["İşlev Kaynağı"]):

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Gerçekleştirmeniz gereken iki ana adım vardır: birincisi, işlevinizin kodunu yazın ve ikincisi, işlevinizin nasıl çalışması gerektiğini gösteren belgeleri yazın.
Yapmanız gerekenlerin bir örneğini görmek için üstteki "Örneği Aç" düğmesini tıklayın:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Temel olarak Wolfram Dilinde yerleşik bir işleve benzer bir şey oluşturmaya çalışıyorsunuz. Yerleşik bir işlevden çok daha spesifik bir şey yapabilmesi dışında. Aynı zamanda bütünlüğü ve güvenilirliği ile ilgili beklentiler çok daha düşük olacaktır.
İşlevinize Wolfram Dilinin işlev adlandırma kurallarına uygun bir ad vermeniz gerekir. Ek olarak, dilin yerleşik işlevlerine benzer şekilde, işleviniz için belgeler geliştirmeniz gerekecektir. Bu konu hakkında daha sonra daha detaylı konuşacağım. Şimdilik, tanım not defteri dosyasının üst kısmındaki düğme satırında bir düğme olduğuna dikkat edin "Stil Yönergeleri"ne yapmanız gerektiğini açıklayan ve işlevinizin belgelerini biçimlendirmek için araçlar sağlayan Araçlar düğmesi.
Her şeyin doğru bir şekilde doldurulduğundan ve hazır olduğunuzdan emin olduğunuzda “Kontrol Et” butonuna tıklayın. Henüz tüm detayları çözememeniz tamamen normal. Böylece "Kontrol Et" işlevi otomatik olarak çalışacak ve birçok stil ve tutarlılık kontrolü yapacaktır. Çoğu zaman sizden düzeltmeleri hemen onaylamanızı ve kabul etmenizi ister (Örneğin: "Bu satır iki nokta üst üste işaretiyle bitmelidir" ve iki nokta üst üste girmenizi ister). Bazen sizden bir şeyi kendiniz eklemenizi veya değiştirmenizi isteyecektir. Kontrol düğmesinin otomatik işlevselliğine sürekli olarak yeni özellikler ekleyeceğiz, ancak temel olarak amacı, özellik deposuna gönderdiğiniz her şeyin mümkün olduğunca çok sayıda stil yönergesine yakından uymasını sağlamaktır.

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Yani "Kontrol Et" i çalıştırdıktan sonra "Önizleme"yi kullanabilirsiniz. "Önizleme", işleviniz için tanımladığınız dokümantasyon sayfasının bir önizlemesini oluşturur. Bilgisayarınızda oluşturulan bir dosya veya bulut depolama alanında bulunan bir dosya için de önizleme oluşturabilirsiniz. Herhangi bir nedenle önizlemede gördüklerinizden memnun kalmazsanız, geri dönüp gerekli düzeltmeleri yapın ve ardından Önizleme düğmesine tekrar tıklayın.
Artık işlevinizi depoya göndermeye hazırsınız. Dağıt düğmesi size dört seçenek sunar:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Bu adımdaki önemli şey, fonksiyonunuzu Wolfram fonksiyon deposuna göndererek herkesin kullanımına sunabilmenizdir. Aynı zamanda fonksiyonunuzu sınırlı sayıda kullanıcıya da yerleştirebilirsiniz. Örneğin, bilgisayarınızda yerel olarak barındırılan bir işlev oluşturabilirsiniz, böylece söz konusu bilgisayarı kullandığınızda bu işlev kullanılabilir hale gelebilir. Veya bunu yayınlayabilirsiniz bulut hesabıböylece buluta bağlandığınızda kullanımınıza sunulur. Ayrıca özelliği, bulut hesabınız aracılığıyla herkese açık olarak barındırabilir (dağıtabilirsiniz). Merkezi Wolfram özellik deposunda olmayacaktır ancak birisine, özelliğinizi hesabınızdan almasına olanak sağlayacak bir URL verebileceksiniz. (Gelecekte şirketimiz genelindeki merkezi depoları da destekleyeceğiz.)

Diyelim ki fonksiyonunuzu gerçekten Wolfram fonksiyon bilgi tabanına göndermek istiyorsunuz. Bunu yapmak için depoya “Gönder” düğmesini tıklayın. Peki şu anda ne oluyor? Başvurunuz, özel küratör ekibimiz tarafından incelenmek ve onaylanmak üzere hemen sıraya alınır.

Başvurunuz onay sürecinde ilerledikçe (genellikle birkaç gün sürer), durumuyla ilgili iletişimler ve muhtemelen gelecekte kullanım önerileri alacaksınız. Ancak özelliğiniz onaylandıktan sonra hemen Wolfram Özellik Havuzunda yayınlanacak ve herkesin kullanımına açık olacaktır. (Ve bu şu şekilde görünecektir: yeni özelliklerin haber özetleri ve benzeri)

Depoda neler olmalı?

Şirketimizin bütünlük, güvenilirlik ve genel kalite açısından çok yüksek standartlara sahip olduğu ve son 6000 yılı aşkın süredir Wolfram diline halihazırda yerleştirdiğimiz 30'den fazla işlevin hepsinin yukarıdaki gereksinimleri karşıladığı unutulmamalıdır. Wolfram İşlev Havuzunun amacı, mümkün olduğu kadar çok daha hafif işlevler (yani daha yüksek performanslı işlevler) eklemek için Wolfram Dilinde zaten mevcut olan tüm yapı ve işlevleri kullanmaktır.

Tabii ki, Wolfram işlev deposundaki işlevler Wolfram Dilinin tasarım ilkelerine uygun olmalıdır; böylece diğer işlevlerle ve kullanıcıların işlevin nasıl düzgün çalışması gerektiğine ilişkin beklentileriyle tam olarak etkileşime girebilirler. Ancak işlevlerin eşit derecede eksiksiz veya güvenilir olması gerekmez.

Wolfram dilinin yerleşik fonksiyonlarında, programlama fonksiyonlarını mümkün olduğunca genel hale getirmek için çok çalışıyoruz. Söylenen o ki, Wolfram işlev deposunda olduğunuzda, burada çok özel ama kullanışlı bazı durumları ele alan bir işlevin bulunmasında yanlış bir şey yoktur. Örneğin, fonksiyon SendMailFromNotebook dosyaları belirli bir biçimde alabilir ve belirli bir şekilde posta oluşturabilir. Çokgen Diyagram yalnızca belirli renkler ve etiketlemeler vb. içeren grafikler oluşturur.

Yerleşik işlevlerle ilgili bir diğer nokta da şirketimizin tüm alışılmadık durumları ele almak, yanlış girişi doğru şekilde ele almak vb. için her türlü çabayı göstermesidir. Bir işlev deposunda, bir sorunun çözümüne ilişkin ana durumları ele alan ve diğerlerini göz ardı eden özel bir işlevin bulunması tamamen normaldir.

Açık olan nokta, daha fazlasını yapan ve daha iyi yapan işlevlere sahip olmanın daha iyi olduğu, ancak bir işlev deposu için optimizasyonun - Wolfram dilinin yerleşik işlevlerinin aksine - daha fazla işlevin daha fazla işlevle birlikte paketlenmesi gerektiğidir. Her bir spesifik fonksiyonun uygulama süreçleri.

Şimdi bir depodaki test fonksiyonlarının bir örneğine bakalım. Bu tür işlevlere ilişkin tutarlılık beklentileri doğal olarak yerleşik dil işlevlerine göre çok daha düşüktür. Bu, özellikle işlevlerin API'ler gibi harici kaynaklara bağlı olduğu durumlarda geçerlidir; doğrulama algoritmaları içerisinde otomatik olarak gerçekleşen tutarlı testlerin sürekli olarak yapılması önemlidir. Nb dosyasında, tanımları açıkça belirtebilir (Ek Bilgiler bölümünde) ve giriş ve çıkış dizeleri veya türdeki tam karakter nesneleri tarafından tanımlanan sayıda test belirleyebilirsiniz. Doğrulama Testi, uygun gördüğünüz kadar. Ayrıca sistem, sağladığınız dokümantasyon örneklerini sürekli olarak bir doğrulama sürecine dönüştürmeye çalışmaktadır (ve bazen bu, örneğin sonucu rastgele sayılara veya günün saatine bağlı olan bir işlev için oldukça kaynak yoğun olabilir).

Sonuç olarak, işlev deposunda bir takım uygulama karmaşıklıkları olacaktır. Bazıları yalnızca tek bir kod satırından oluşacak, bazıları ise muhtemelen birçok yardımcı işlevin kullanıldığı binlerce veya onbinlerce satırdan oluşacaktır. Tanımlanması çok az kod gerektiren bir işlevi ne zaman eklemeye değer? Temel olarak, eğer bir fonksiyon için varsa iyi anımsatıcı isimKullanıcıların bunu bir kod parçasında görseler kolayca anlayacakları bir şey varsa, o zaman zaten eklenebilir. Aksi takdirde, her kullanmanız gerektiğinde kodu programınıza yeniden eklemek muhtemelen daha iyidir.

Bir işlev deposunun temel amacı (adından da anlaşılacağı gibi) dile yeni özellikler kazandırmaktır. Yeni veriler eklemek istiyorsanız veya yeni varlıklar, kullanmak Wolfram Veri deposu. Peki ya hesaplamalarınız için yeni nesne türleri eklemek isterseniz?

Aslında iki yol var. İşlev deposundaki yeni işlevlerde kullanılacak yeni bir nesne türünü tanıtmak isteyebilirsiniz. Ve bu durumda, her zaman sembolik gösterimini yazabilir ve bunu bir işlev deposuna işlevler girerken veya çıktısını alırken kullanabilirsiniz.

Peki ya bir nesneyi temsil etmek ve ardından Wolfram Dili'ndeki mevcut işlevler aracılığıyla onunla çalışmak istediğinizi tanımlamak istiyorsanız? Wolfram Dili bunun için her zaman hafif bir mekanizmaya sahiptir. Yukarı Değerler. Bazı kısıtlamalarla (özellikle aşağıdaki işlevler için) Argümanlarını değerlendiremiyorum), bir işlev deposu, bir işlevi basitçe temsil etmenize ve onun için değerleri tanımlamanıza olanak tanır. (Wolfram Dili ile tamamen entegre yeni bir ana tasarım oluştururken tutarlılık beklentisini yükseltmek, genellikle sadece projenin maliyetini artırarak elde edilemeyecek çok önemli bir prosedürdür ve şirketimizin projelerin bir parçası olarak yaptığı bir şeydir. dilin uzun vadeli gelişimi için bu görev, havuzun geliştirilmesinin bir parçası olarak belirlenen bir hedef değildir).

Peki bir işlev deposundaki işlev kodunda ne olabilir? Wolfram Dilinde yerleşik olan her şey, elbette (en azından temsil etmiyorsa) угрозы için Güvenlik ve bir bilgi işlem ortamı olarak programın kendisinin performansının yanı sıra işlev deposundaki herhangi bir işlev. Ancak başka işlevler de vardır: işlev deposundaki bir işlev, bir API'yi çağırabilir veya Wolfram BulutuVeya başka bir kaynaktan. Elbette bununla ilgili bazı riskler de var. API'nin değişmeyeceğinin garantisi olmadığından fonksiyon deposundaki fonksiyon çalışmayı durduracaktır. Bu tür sorunların belirlenmesine yardımcı olmak için, yerleşik Wolfram Dili işlevselliğinden daha fazlasına dayanan herhangi bir işlev için belge sayfasında (Gereksinimler bölümünde) bir not bulunmaktadır. (Elbette gerçek veri söz konusu olduğunda bu işlevsellikte bile sorunlar yaşanabiliyor; çünkü gerçek dünya verileri sürekli değişiyor, hatta bazen tanımları ve yapısı bile değişiyor.)

Wolfram özellik deposunun tüm kodları Wolfram'da mı yazılmalıdır? Elbette harici API'nin içindeki kodun, dil kodunu bile yapmayan Wolfram dilinde yazılmaması gerekir. Aslında, hemen hemen herhangi bir harici dilde veya kitaplıkta bir işlev bulursanız, onu Wolfram işlev deposunda kullanmanıza olanak tanıyan bir sarmalayıcı oluşturabilirsiniz. (Genellikle bunun için yerleşik işlevleri kullanmalısınız. Dış Değerlendirme veya HariciFonksiyon Wolfram dil kodunda.)

Peki bunu yapmanın amacı nedir? Temel olarak bu, entegre Wolfram Dil sisteminin tamamını ve onun tüm birleşik yazılım yeteneklerini kullanmanıza olanak tanır. Temel uygulamayı harici bir kitaplıktan veya dilden edinirseniz, Wolfram Dilinin zengin sembolik yapısını kullanarak kullanıcıların önceden uygulanmış herhangi bir işlevi kolayca kullanmasına olanak tanıyan kullanışlı bir üst düzey işlev oluşturabilirsiniz. En azından, yükleme kitaplıkları vb.'nin tüm yapı taşlarının mevcut olduğu ideal bir dünyada bu mümkün olmalıdır; bu durumda bunlar Wolfram Dili tarafından otomatik olarak işlenir. (Uygulamada sorunlar olabileceği unutulmamalıdır. harici dilleri ayarlama belirli bir bilgisayar sistemi ve bulut depolama ek güvenlik sorunlarına neden olabilir).

Bu arada, tipik dış kitaplıklara ilk baktığınızda, yalnızca birkaç işlevle anlatılamayacak kadar karmaşık görünürler, ancak çoğu durumda karmaşıklığın büyük bir kısmı, kitaplık için gereken altyapının ve tüm işlevlerin oluşturulmasından kaynaklanır. destekleyin. Bununla birlikte, Wolfram Dili kullanıldığında, altyapı genellikle zaten paketlerin içine yerleştirilmiştir ve bu nedenle tüm bu destek işlevlerinin ayrıntılı olarak ortaya çıkarılmasına gerek yoktur; yalnızca kitaplıktaki "en üstteki" uygulamaya özel işlevler için işlevler oluşturulur. .

Bilgi tabanının "Ekosistem"i

Düzenli olarak kullandığınız işlevleri yazdıysanız bunları Wolfram İşlev Havuzuna gönderin! Bundan daha fazlası çıkmazsa (dil gelişimi), o zaman bile işlevleri kişisel kullanım için kullanmanız sizin için çok daha uygun olacaktır. Ancak, işlevleri düzenli olarak kullanırsanız belki diğer kullanıcıların da bunları yararlı bulacağını varsaymak mantıklı olacaktır.

Doğal olarak, işlevlerinizi paylaşamadığınız veya paylaşmak istemediğiniz veya özel bilgi kaynaklarına erişim elde ettiğiniz bir durumda kendinizi bulabilirsiniz. Bu gibi durumlarda bile işlevleri kendi bulut hesabınızda kolayca dağıtabilirsiniz, hakları belirtmek onlara erişim. (Kuruluşunuz varsa Wolfram Kurumsal özel bulut, daha sonra kısa süre içinde kuruluşunuz içinden yönetilebilecek ve görünümlerin üçüncü taraf kullanıcılar tarafından görüntülenmeye zorlanıp zorlanmayacağını ayarlayabilecek kendi özel özellik deposunu barındırabilecektir.)

Wolfram işlev deposuna gönderdiğiniz işlevlerin mükemmel olması gerekmez; sadece faydalı olmaları gerekiyor. Bu biraz klasik Unix belgelerindeki "Hatalar" bölümüne benzer - "Tanımlar Bölümü"nde, işleviniz hakkında zaten bildiğiniz sınırlamaları, sorunları vb. tanımlayabileceğiniz bir "Yazarın Notları" bölümü vardır. Ayrıca özelliğinizi veri havuzuna gönderdiğinizde, özel bir küratör ekibi tarafından okunacak gönderim notları ekleyebilirsiniz.

Bir özellik yayınlandıktan sonra sayfasının alt kısmında her zaman iki bağlantı bulunur: "Bu özellik hakkında mesaj gönderin"Ve"Wolfram topluluğunda tartışın" Bir not ekliyorsanız (örneğin, bana hataları bildirin), mesajınızın ve iletişim bilgilerinizin özelliğin yazarıyla paylaşılmasını istediğinizi belirten kutuyu işaretleyebilirsiniz.

Bazen Wolfram işlev deposundaki yerleşik işlevler gibi işlevleri, kodlarına bakmadan kullanmak istersiniz. Ancak içine bir göz atmak isterseniz üst kısımda her zaman bir Not Defteri düğmesi bulunur. Üzerine tıkladığınızda, özellik deposuna gönderilen orijinal tanım not defterinin kendi kopyasını alırsınız. Bazen ihtiyaçlarınıza örnek olarak kullanabilirsiniz. Aynı zamanda bu fonksiyon üzerinde kendi modifikasyonunuzu da geliştirebilirsiniz. Bilgisayarınızdaki depodan bulduğunuz bu işlevleri veya yaprak biti bulut depolama hesabınızdaki bu işlevleri, belki de orijinal işlevin geliştirilmiş, genişletilmiş bir sürümü olarak işlev bilgi tabanına göndermek isteyebilirsiniz.

Gelecekte, özellik depoları için Git tarzı çatallamayı desteklemeyi planlıyoruz, ancak şimdilik bunu basit tutmaya çalışıyoruz ve her özelliğin dilde yerleşik olarak yalnızca bir kabul edilen sürümüne sahibiz. Çoğu zaman (geliştiriciler geliştirdikleri özellikleri sürdürmekten vazgeçmedikçe ve kullanıcı gönderimlerine yanıt vermedikçe), özelliğin orijinal yazarı, özelliğin güncellemelerinin kontrolünü ele alır ve yeni sürümler gönderir; bunlar daha sonra incelenir ve eğer inceleme sürecini geçerlerse dilinde yayınlandı.

Geliştirilen fonksiyonların “versiyonlama”sının nasıl çalıştığı sorusunu ele alalım. Şu anda, işlev deposundaki bir işlevi kullandığınızda, bu işlevin tanımı bilgisayarınızda (veya bulut kullanıyorsanız bulut hesabınızda) kalıcı olarak depolanacaktır. Bir özelliğin yeni bir sürümü mevcutsa, onu bir sonraki kullanımınızda bunu size bildiren bir mesaj alacaksınız. İşlevi yeni bir sürüme güncellemek istiyorsanız bunu şu komutu kullanarak yapabilirsiniz: Kaynak Güncellemesi. ("İşlev blobu" aslında daha fazla sürüm bilgisi depolar ve bunu gelecekte kullanıcılarımız için daha erişilebilir hale getirmeyi planlıyoruz.)

Wolfram İşlev Havuzunun güzel yanlarından biri, herhangi bir Wolfram Dil programının, herhangi bir yerde, buradaki işlevleri kullanabilmesidir. Bir program not defterinde görünüyorsa, depo işlevlerini, okunması kolay "işlev ikili nesnesi" işlevleri olarak (belki uygun bir sürüm kümesiyle) biçimlendirmek genellikle uygundur.

Metin kullanarak işlev deposundaki herhangi bir işleve her zaman erişebilirsiniz. Kaynakİşlevi[...]. Ve Wolfram Engine için doğrudan kod veya komut dosyaları yazıyorsanız, bu çok kullanışlıdır; örneğin: bir IDE veya metin kodu düzenleyicisi kullanma (İşlev deposunun aşağıdakilerle tamamen uyumlu olduğuna özellikle dikkat edilmelidir: Geliştiriciler için Ücretsiz Wolfram Motoru).

Nasıl çalışır?

Wolfram deposundaki işlevler içinde bu, tam olarak aynısını kullanarak mümkündür. kaynak sistemleri bazlar, olduğu gibi diğer tüm mevcut depolarımız (Bilgi deposu, Sinir Ağı Deposu, demo projelerinin toplanması vb.), diğer tüm Wolfram sistem kaynakları gibi, Kaynakİşlevi sonuçta işleve dayalı KaynakNesnesi.

Consider Kaynakİşlevi:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

İçeride işlevi kullanarak bazı bilgileri görebilirsiniz. Bilgi:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Kaynak işlevinin ayarlanması nasıl çalışır? En basiti tamamen yerel bir durumdur. Aşağıda bir işlevi (bu durumda yalnızca saf bir işlev) alan ve onu belirli bir program oturumu için bir kaynak işlevi olarak tanımlayan bir örnek verilmiştir:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Tanımı yaptıktan sonra kaynak fonksiyonunu kullanabilirsiniz:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Bu işlev bloğunda siyah bir simge bulunduğunu unutmayın Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu. Bu, BLOB işlevinin geçerli oturum için tanımlanan bellek içi kaynak işlevini ifade ettiği anlamına gelir. Bilgisayarınızda veya bulut hesabınızda kalıcı olarak depolanan bir kaynak özelliğinin gri simgesi vardır Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu. Ve Wolfram Özellik Havuzunda resmi bir kaynak özelliği için turuncu bir simge var Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu.

Peki Tanım Not Defteri'ndeki Genişlet menüsünü kullandığınızda ne olur? Öncelikle not defterindeki tüm tanımları alır ve onlardan sembolik bir anlam oluşturur. KaynakNesnesi). (Ve eğer metin tabanlı bir IDE veya program kullanıyorsanız, o zaman açıkça KaynakNesnesi)

Bir işlevin bilgisayarınızdaki bir depodan yerel dağıtımı şu komut kullanılarak gerçekleştirilir: Yerel Önbellek bir kaynak nesnesinin onu farklı kaydetmesi için Yerel Nesne dosya sisteminizde. Bir bulut hesabına dağıtım şu komut kullanılarak gerçekleştirilir: BulutDeploy bir kaynak nesnesi için ve genel bulut dağıtımı CloudPublish. Her durumda KaynakKayıt kaynak işlevi adını kaydetmek için de kullanılır; dolayısıyla Kaynakİşlevi["isim"] çalışacak.

Bir İşlev Havuzu için Gönder düğmesini tıklarsanız altında ne olur? KaynakGönder bir kaynak nesnesine çağrılır. (Ve eğer bir metin giriş arayüzü kullanıyorsanız, KaynakGönder direkt olarak.)

Varsayılan olarak gönderimler Wolfram Kimliğinizle ilişkili ad altında yapılır. Ancak bir geliştirme ekibi veya kuruluş adına başvuruda bulunuyorsanız, ayrı yayıncı kimliği belirleyin ve bunun yerine görünümlerinizle etkileşimde bulunmak için bunu ad olarak kullanın.

İşlevlerinizden herhangi birini işlev bilgi tabanına gönderdikten sonra incelenmek üzere sıraya alınacaktır. Yanıt olarak yorumlar alırsanız, bunlar genellikle ek "yorum hücreleri" eklenmiş bir metin dosyası biçiminde olacaktır. Başvurunuzun durumunu her zaman ziyaret ederek kontrol edebilirsiniz. kaynak sistemi üye portalı. Ancak özelliğiniz onaylandığında (e-posta yoluyla) bilgilendirileceksiniz ve özelliğiniz Wolfram özellik deposunda yayınlanacaktır.

İş yerinde bazı incelikler

İlk bakışta, bir tanım not defterini alıp onu bir işlev deposuna kelimesi kelimesine koyabiliyormuşsunuz gibi görünebilir, ancak aslında işin içinde pek çok incelik vardır ve bunları yönetmek, oldukça karmaşık bir meta programlama yapmayı, sembolik işlemeyi yönetmeyi gerektirir. işlevi tanımlayan kod olarak ve Not Defteri'nin kendisi tanımlanır. Bunların çoğu dahili olarak, perde arkasında gerçekleşir, ancak özellik bilgi tabanına katkıda bulunacaksanız, bunun anlamaya değer bazı sonuçları olabilir.

İlk acil incelik: Tanım Defterini doldurduğunuzda, gibi bir ad kullanarak her yerde işlevinize basitçe başvurabilirsiniz. İşlevimWolfram Dilinde bir işlev için normal bir ad gibi görünen ancak işlev deposu belgeleri için bu değiştirilmiştir. Kaynakİşlevi["İşlevim"] kullanıcıların işlevle çalışırken gerçekte kullanacakları şeydir.

İkinci incelik: Tanım Not Defteri'nden bir kaynak işlevi oluşturduğunuzda, işlev tanımına dahil olan tüm bağımlılıkların yakalanması ve açıkça dahil edilmesi gerekir. Ancak tanımların modüler kalmasını sağlamak için her şeyi benzersiz bir şekilde yerleştirmeniz gerekir. ad alanı. (Elbette, her şeyi yapan işlevler, işlev deposundadır.)

Genellikle bu ad alanını yapılandırmak için kullanılan kodun hiçbir izini görmezsiniz. Ancak herhangi bir nedenle fonksiyonunuzun içinde az çalıştırılan bir sembolü çağırırsanız, o zaman bu sembolün fonksiyonun iç bağlamında olduğunu göreceksiniz. Ancak Tanım Not Defteri işlenirken en azından fonksiyonun kendisine karşılık gelen sembol en iyi görüntü için ayarlanabilir iç bağlamda ham bir karakter yerine işlevsel bir BLOB olarak.

İşlev deposu yeni işlevleri tanımlamak içindir. Ve bu işlevlerin seçenekleri olabilir. Genellikle bu parametreler (örneğin, Yöntem veya Görüntü boyutu) yerleşik işlevlerin yanı sıra yerleşik simgelerin zaten mevcut olduğu işlevler için de kullanılabilecektir. Ancak bazen yeni bir özellik yeni seçenekler gerektirebilir. Modülerliği korumak için, bu parametrelerin benzersiz bir iç bağlamda tanımlanan semboller (veya tüm kaynak fonksiyonları, yani kendileri gibi bir şey) olması gerekir. Basitlik açısından, işlev deposu dize tanımlarında yeni seçenekler tanımlamanıza olanak tanır. Kullanıcıya kolaylık sağlamak amacıyla bu tanımlar (kullanıldıkları varsayılarak) Opsiyon değeri и SeçeneklerDesen) ayrıca, işlevler kullanılırken parametrelerin yalnızca dizeler olarak değil, aynı adlara sahip genel simgeler olarak da belirtilebilmesi için işlenir.

Çoğu işlev, her çağrıldıklarında yapmaları gereken şeyi yapar, ancak bazı işlevlerin belirli bir oturumda çalıştırılmadan önce başlatılması gerekir - ve bu sorunu çözmek için Tanım bölümünde bir "Başlatma" bölümü vardır.

Bir depodaki işlevler, halihazırda depoda bulunan diğer işlevleri kullanabilir; birbirine başvuran iki (veya daha fazla) işlevi içeren bir işlev deposuna yönelik tanımları ayarlamak için, bunları program oturumunuza dağıtmanız gerekir; onlar gibi referans Kaynakİşlevi["isim"], daha sonra ihtiyacınız olan bu işlevlerin kombinasyonlarını, örnekleri (anlamadım) oluşturabilir ve daha önce gönderilmiş olanlara dayanarak depoya yeni bir işlev ekleyebilirsiniz. (veya zaten veya önceden – her iki kelime de beceriksizdir)

Kalkınma beklentileri. Depo gerçekten büyüdüğünde ne olmalı?

Bugün Wolfram Özellik Deposunu piyasaya sürüyoruz, ancak zamanla boyutunun ve işlevselliğinin önemli ölçüde artacağını ve geliştirme süreci büyüdükçe zaten ortaya çıkabileceğini öngördüğümüz çeşitli sorunların ortaya çıkacağını bekliyoruz.

İlk sorun, işlev adları ve bunların benzersizliğiyle ilgilidir. İşlev deposu, Wolfram Dilindeki yerleşik işlevler gibi, verilen herhangi bir işleve yalnızca adını belirterek başvurabileceğiniz şekilde tasarlanmıştır. Ancak bu kaçınılmaz olarak işlev adlarının depo genelinde küresel olarak benzersiz olması gerektiği anlamına gelir; böylece örneğin yalnızca bir tane olabilir. Kaynakİşlevi["Favori İşlevim"].

Bu ilk başta büyük bir sorun gibi görünebilir, ancak bunun temelde internet etki alanları veya sosyal medya tanıtıcıları gibi şeylerle aynı sorun olduğunu fark etmeye değer. Ve gerçek şu ki, sistemin sadece bir kayıt memuruna sahip olması gerekiyor ve bu, şirketimizin Wolfram işlevi bilgi tabanı için gerçekleştireceği rollerden biri. (Bir veri havuzunun özel sürümleri için, bunların kayıt memurları yöneticiler olabilir.) Elbette, bir İnternet alanı, üzerinde hiçbir şey olmadan kaydedilebilir, ancak bir işlev deposunda, bir işlev adı, ancak gerçek bir tanım varsa kaydedilebilir. işlev.

Wolfram işlevi bilgi tabanını yönetmedeki rolümüzün bir kısmı, bir işlev için seçilen adın, işlevin tanımı göz önüne alındığında mantıksal olmasını ve Wolfram Dili adlandırma kurallarına uygun olmasını sağlamaktır. Wolfram Dilinde yerleşik işlevleri adlandırma konusunda 30 yılı aşkın deneyime sahibiz ve küratör ekibimiz bu deneyimi işlev deposuna da taşıyacak. Elbette her zaman istisnalar vardır. Örneğin, bazı işlevler için kısa bir ad kullanmak tercih edilebilir gibi görünebilir, ancak daha uzun, daha spesifik bir adla "savunmak" daha iyidir çünkü gelecekte benzer bir işlev adı oluşturmak isteyen biriyle karşılaşma olasılığınız daha düşüktür. .

(Belirsizliği gidermek için yalnızca bazı üye etiketlerinin eklenmesinin amaçlanan etkiye sahip olmayacağı burada belirtilmelidir. Çünkü her zaman bir etiket atama konusunda ısrar etmediğiniz sürece, herhangi bir işlev için varsayılan bir etiket tanımlamanız ve ayrıca yazar etiketlerini ayırmanız gerekecektir. , bu da yine küresel koordinasyonu gerektirecektir.)

Wolfram fonksiyonlarının bilgi tabanı büyüdükçe ortaya çıkması muhtemel sorunlardan biri de sistemin sağladığı fonksiyonların keşfedilebilirliğidir. arama fonksiyonu (ve tanım dosyaları anahtar sözcükler vb. içerebilir). Wolfram Dilindeki yerleşik işlevler için, işlevlerin "reklamının yapılmasına" yardımcı olacak belgelerde her türlü çapraz referans bulunmaktadır. Bir işlev deposundaki işlevler yerleşik işlevlere referans verebilir. Peki ya tam tersi? Bunu yapmak için, yerleşik işlevlere ilişkin belge sayfalarında depo işlevlerini ortaya çıkarmak üzere farklı tasarımlar deneyeceğiz.

Wolfram Dilindeki yerleşik işlevler için, aşağıdakiler tarafından sağlanan algılama katmanı adı verilen bir katman vardır: "yardım sayfaları" ağıBelirli alanlarla ilgili düzenli özellik listeleri sağlayan. Kılavuz sayfalarını düzgün bir şekilde dengelemek her zaman zordur ve Wolfram dili büyüdükçe kılavuz sayfalarının genellikle tamamen yeniden düzenlenmesi gerekir. Bir havuzdaki işlevleri geniş kategorilere ayırmak ve hatta bu kategorileri tutarlı bir şekilde parçalara ayırmak oldukça kolaydır, ancak düzgün bir şekilde düzenlenmiş dil referans sayfalarına sahip olmak çok daha değerlidir. Bunların tüm fonksiyon bilgi tabanı için en iyi şekilde nasıl oluşturulacağı henüz belli değil. Örneğin, CreateResourceObjectGallery özellik deposunda, herkes depodan kendi "seçimlerini" içeren bir web sayfası yayınlayabilir:

Wolfram İşlev Havuzu: Wolfram dil uzantıları için açık erişim platformu

Wolfram işlev deposu, içindeki herhangi bir işlevin her zaman çalışacağı kalıcı bir işlev deposu olarak yapılandırılmıştır. Elbette özelliklerin yeni sürümleri mevcut olabilir ve bazı özelliklerin elbette zaman içinde geçerliliğini yitirmesini bekliyoruz. İşlevler, programlarda kullanıldıkları takdirde çalışacaktır ancak belge sayfaları yeni, daha gelişmiş işlevlere bağlantı verecektir.

Wolfram Özellik Havuzu, yeni özellikleri hızla keşfetmenize ve Wolfram dilini kullanmanın yeni yollarını öğrenmenize yardımcı olmak için tasarlanmıştır. Özellik deposunda araştırılanlardan bazılarının eninde sonunda temel Wolfram Dilinin yerleşik parçaları haline gelmesinin anlamlı olacağı konusunda oldukça iyimseriz. Son on yılda benzer bir set yaşadık ilk olarak Wolfram'da tanıtılan özellikler | Alfa. Bu deneyimden öğrenilen derslerden biri de Wolfram dilindeki her şeyde odaklandığımız kalite ve tutarlılık standartlarına ulaşmanın çok fazla çalışma gerektirmesidir ve bu genellikle fikrin uygulanmasına yönelik ilk çabadan daha zordur. Öyle bile olsa, işlev bilgi tabanındaki bir işlev, gelecekte Wolfram dilinde oluşturulabilecek bir işlev için çok yararlı bir kavram kanıtı olarak hizmet edebilir.

Burada en önemli şey, fonksiyon deposundaki bir fonksiyonun, her kullanıcının şu anda kullanabileceği bir şey olmasıdır. Bir ana dil özelliğinin çok daha iyi ve daha performanslı olması mümkündür, ancak bir özellik deposu, kullanıcıların tüm yeni özelliklere hemen erişmesine olanak tanır. Ve en önemlisi bu konsept herkesin istediği yeni özellikleri eklemesine olanak tanıyor.

Wolfram dilinin tarihinin daha önceki dönemlerinde bu fikir bu kadar işe yaramayabilirdi, ancak bu aşamada dil için o kadar çok çaba harcanıyor ve dil tasarımı ilkelerine ilişkin o kadar derin bir anlayış var ki, artık çok basit görünüyor. Geniş bir kullanıcı topluluğunun, tasarım tutarlılığını koruyacak ve bunları geniş bir kullanıcı kitlesine faydalı kılacak özellikler eklemesi mümkündür.

Wolfram Language kullanıcı topluluğunda inanılmaz bir yetenek(?) ruhu var. (Tabii ki bu topluluk, çeşitli alanlarda önde gelen Ar-Ge çalışanlarını içermektedir.) Wolfram Özellik Havuzunun bu yetenek ruhunu ortaya çıkarmak ve yaymak için etkili bir platform sağlayacağını umuyorum. Wolfram dili hesaplama paradigmasının uygulanabileceği alanı önemli ölçüde genişletecek bir şeyi ancak birlikte yaratabiliriz.

30 yıldan fazla bir sürede Wolfram diliyle uzun bir yol kat ettik. Şimdi birlikte daha da ileri gidelim. Wolfram dilinin dünya çapındaki tüm saygın kullanıcılarının bunun için bir platform olarak özellik deposunu ve ayrıca Geliştiriciler için Ücretsiz Wolfram Motoru gibi yeni yazılım projesini kullanmalarını şiddetle tavsiye ediyorum.

Kaynak: habr.com

Yorum ekle