4 puan yazan GN⁺ 2024-12-09 | 1 yorum | WhatsApp'ta paylaş
  • Mathics Core 7.0.0, Mathematica uyumlu açık kaynaklı hesaplama sisteminin çekirdek motorunu düzenliyor ve gelecekte yerleşik işlevlerin tembel yüklenmesi için temel hazırlıyor
  • Yeni yerleşik işlevler olarak ComplexExpand, ConjugateTranspose, LeviCivitaTensor ve benzeri; formüller, lineer cebir ve reel sayı denetimiyle ilgili özellikler ekleniyor
  • Range[], DirectedInfinity, Indeterminate, Graphics hata gösterimi, $CharacterEncoding değişikliği gibi mevcut uyumluluk açıkları gideriliyor
  • Yerleşik işlev yükleme süreci, örtük import bağımlılığından çıkıp import_and_load_builtins() işlevinin açıkça çağrıldığı bir yapıya geçiyor
  • Python 3.11 ve SymPy 1.12 desteği eklenirken, Quantity, SparseArray, Derivative, Exit[], BaseForm ile ilgili düzeltmeler de pakete dahil ediliyor

Sürüm yönü ve iç düzenleme

  • Mathics Core 7.0.0, ileride yerleşik işlevlerin tembel yüklenmesini desteklemek için iç yapıda düzenlemeler içeriyor
  • Python kodu ve stil modernize edildi, tür açıklamaları artırıldı ve çeşitli yazım hataları düzeltildi
  • SymPy ve Python bağımlılıkları daha güncel sürümlere yükseltildi
  • Başlangıç yükleme hızını artırmak ve ilk bellek kullanımını azaltmak için de çalışmalar yapıldı

Yeni yerleşik işlevler

  • Bu sürümde eklenen yerleşik işlevler şunlar:
    • $MaxLengthIntStringConversion
    • Elements
    • ComplexExpand
    • ConjugateTranspose
    • LeviCivitaTensor
    • RealAbs, RealSign
    • RealValuedNumberQ

Belgeler ve test üretiminde iyileştirmeler

  • PDF belgelerdeki biçim sorunları çeşitli yerlerde düzeltildi
    • Bölüm ve alt bölüm içindekilerinde bölüm numaraları arasındaki boşluk artırıldı
    • Yerleşik işlev tanımlarının çevresindeki boşluk genişletildi
    • Belge genelindeki yazım hataları temizlendi
  • doctest çalıştırma ve LaTeX belge üretim kodu gözden geçirildi ve refaktör edildi
    • Yerleşik işlevlerde artımlı güncellemeye izin veriliyor
    • Yinelenen kodu azaltacak şekilde düzenlendi
  • “Expression Structure” bölümüne Section Head-Related Operations adlı yeni bir kısım eklendi
  • PDF başlığı Mathics yerine Mathics3 olarak değiştirildi ve tanıtım metni güncellendi
  • Eski biçimdeki görünmeyen ve eğitim amaçlı olmayan doctest'ler pytest'e taşındı

Uyumluluk ve kullanıcıya görünen davranış değişiklikleri

  • *Plot, değerlendirme sırasında mesaj göstermiyor
  • Range[], negatif di değerini işliyor
  • DirectedInfinity ve Indeterminate desteği iyileştirildi
  • Graphics ve Graphics3D, hatalı primitive veya directive içerdiğinde pembe arka planla gösteriliyor
    • Mathics-Django arayüzünde araç ipucu hata mesajı da birlikte gösteriliyor
  • $CharacterEncoding değeri oturum içinde değiştirilebiliyor

İç uygulama ve API değişiklikleri

  • Abs ve Sign için eval_abs, eval_sign ayrıştırıldı ve mathics.eval.arithmetic içine eklendi
  • Dizelerde izin verilen en yüksek sayı basamak sayısı 7000 olarak ayarlandı
    • Python'ın otomatik ayarlamadığı pyston gibi ortamlarda MATHICS_MAX_STR_DIGITS ortam değişkeniyle ayarlanabiliyor
  • Reel sayı karşılaştırma uygulaması iç tarafta RealSign uygulamasına alındı
  • Python 3.11'de $MaxLengthIntStringConversion, büyük tamsayılarla dizeler arasındaki literal dönüşümün en büyük boyutunu denetliyor
  • Yerleşik kod yükleme, örtük yöntem yerine açık yönerge modeline geçti
    • Bu değişiklik, gelecekte yerleşik işlevler için tembel yükleme veya GNU Emacs autoload benzeri bir “autoload” mekanizmasını mümkün kılmak için yapıldı
  • Yeni API ile import_and_load_builtins() işlevi açıkça çağrılmalı
    • Önceden, yerleşik işlevlerin yüklenme zamanı import sırasına bağlı olarak örtük ve belirsizdi
  • mpmath içine LRU önbelleği eklendi

Quantity, SparseArray ve diğer hata düzeltmeleri

  • Definitions, pickle ile uyumlu hale getirildi
  • Quantity ifadeleri için destek iyileştirildi
    • Dönüştürme, biçimlendirme ve aritmetik işlemler buna dahil
  • Graphics ve Graphics3D içindeki Background seçeneği yeniden çalışır hale getirildi
  • String içeren ifadelerdeki sayısal karşılaştırma sorunu düzeltildi
    • İlgili sorun: #797
  • Infinity içeren Switch[] sorunu düzeltildi
    • İlgili sorun: #956
  • SparseArray için Outer[] sorunu düzeltildi
    • İlgili sorun: #939
  • ArrayQ[], SparseArray yapısını algılıyor
  • BoxExpressionError istisnası ele alındı
  • Derivative için True, False, List[] değerlendirme davranışı düzeltildi
  • Combinatorica paketiyle ilgili düzeltmeler eklendi
  • Çalışmayan Exit[] düzeltildi
  • BaseForm, $OutputForms içine eklendi

Paket destek sürümleri

  • Python 3.11 destekleniyor
  • SymPy 1.12 destekleniyor

1 yorum

 
GN⁺ 2024-12-09
Hacker News yorumları
  • Bu projeyi birkaç yıldır takip ediyorum; istikrarlı biçimde iyi gelişiyor. Açık kaynak bilgisayarlı cebir sistemleri ile ilgileniyorsanız GNU Octave veya Maxima gibi klasik seçeneklerden SAGEmath, Symbolics.jl, sympy gibi modern seçeneklere kadar daha olgun pek çok çözüm var.
    GiNaC gibi sembolik hesaplama kütüphanelerinden SAGEmath gibi pilleri dahil IDE’lere kadar geniş bir yelpaze var ve toplulukları da aktif. Örneğin SAGEmath’in web not defteri arayüzüne fiilen öncülük ettiğini ve bunun bugün çeşitli biçimlerde Jupyter’a uzandığını düşünüyorum.
    Kişisel olarak Mathematica’nın (MMA) Lisp’i andıran tarzını seviyorum; ancak MMA’yı güçlü kılan şey yalnızca çekirdeği değil, devasa kütüphanesi. Sembolik integrasyon, 2D/3D grafikler, sonlu elemanlar yöntemi gibi temel konularda sektörün en iyi düzeyinde çözümleri var; biyoinformatik gibi pek çok özel alan da mevcut.
    Mathics çekirdeği kopyalama konusunda iyi iş çıkarmış gibi görünüyor, ama doğal olarak o kütüphanelerin tamamı eksik. Matlab ve çeşitli “toolkit”leri bir numpy klonuyla karşılaştırırken de aynı mantık geçerli; ancak Python akımı artık Matlab’da çalışmayan pek çok yeni kodu numpy dünyasına taşımış durumda.

    • İlerleme hakkındaki yoruma katılıyorum. Bu proje, sevdiği bir işi sessizce ve istikrarlı biçimde derinlemesine sürdürmenin harika bir örneği gibi görünüyor.
      Yaklaşık 5 yıl önce ilk çıktığında “sembolik değerlendirme motorunu gerçekten iyi yapmışlar, bakalım şimdi nereye gidecek” diye düşünmüştüm. İleride ne zaman yeni bir projeye başlama isteği duysam, eski bir projeyi sürekli iyileştirmeye devam eden bu örneği hatırlamalıyım.
    • Lisp tarafında Maxima üzerinden Common Lisp’e kolayca girilebilir. Performans nedeniyle SBCL kullanmak daha da iyi olur.
    • Yanılıyor olabilirim ama Octave, Matlab ve numpy’nin bilgisayarlı cebir sistemleriyle aynı alanda olduğunu düşünmüyorum. Bunların hepsi sayısal hesaplama odaklı diller veya kütüphaneler; bu yüzden kesin sembolik ifadelerden çok problemlerin sayısal çözümlerini bulmak için kullanıldıklarını düşünüyorum.
      Birbirlerini tamamlıyorlar ve çoğu zaman birlikte de kullanılıyorlar. Mathematica ve Mathics iki paradigmayı da destekliyor gibi görünüyor, ama aynı şey değiller.
  • sympy tabanlı gibi görünüyor: https://www.sympy.org/en/index.html

  • Yalnızca kişisel kullanım istiyorsanız Wolfram Cloud ücretsiz kullanılabiliyor. Dosyalar yaklaşık 30 gün sonra siliniyor gibi. Wolfram Engine de Mathematica’yı komut satırından ücretsiz kullanmanın bir yolu. Eh, hiç yoktan iyidir.

    • Mathematica lisansı dahil gelen bir Raspberry Pi de satın alabilirsiniz.
    • Wolfram Engine’in üstüne WLJS koyunca oldukça keyifli kullanılabiliyor.
  • Mathics için daha basit bir tanıtım burada:
    https://mathics.org/

  • Nedense bunun SageMath’e entegre edileceğini düşünüyorum :D

    • SageMath’e Mathics’i dahil etmeye yönelik gerçek bir hareket var mı, pek bilmiyorum. Tahminimce SageMath çoğunlukla araştırmacı matematikçiler ve kriptograflar tarafından geliştirildiği için, bileşen eklerken performans çoğu zaman temel ilgi alanı oluyor.
      SageMath’in en büyük Cython projelerinden biri olmasının nedenlerinden biri de Cython’ın Sage’de hızlı C/C++ kütüphanelerinden yararlanmayı mümkün kılması.
      Mathics şu anda performansı ciddi biçimde dert ediyor gibi görünmüyor. Örneğin Mathics’te "AbsoluteTiming[Sum[i, {i, 1, 100000}]]" gibi küçük bir mikrobenchmark çalıştırabilir veya yol haritasını okuyabilirsiniz.
      Elbette bunda bir sorun yok. Mathematica programlama dilinde performansın önemli olmadığı pek çok ilginç uygulama var; örneğin bazı sembolik işlemleri ifadeyle birlikte dikkatle adım adım izlemek gibi.
      Ancak Sage geliştiricilerinin başlıca motivasyonu en ileri düzey araştırma matematiği ve orada performans neredeyse her zaman çok önemli. Sage’in yalnızca sympy kullanmayıp benzer pek çok işlevi kendisinin uygulamasının nedeni de performans. sympy kurulum kolaylığını önceliklendirdiği için görece yavaş olabiliyor; SageMath’te ise kurulum kolaylığı hiç öncelik değil.
      SageMath’in misyonu Mathematica, Matlab, Magma ve Maple’a uygulanabilir bir alternatif olmaktı; ama bu bir klon olacağı anlamına gelmiyordu. Örneğin Mathematica kodunu doğrudan çalıştırmak değil, normalde bu kapalı kaynak programlarla yapılacak araştırmaları açık kaynak matematik yazılımları üzerinde destekleyebilen bir alternatif olmak anlamına geliyordu.
  • Yazılım mühendisleri yazılım maliyeti ödememek için her şeyi yapar.

    • Mathematica lisansım var ama bu projenin de oldukça harika olduğunu düşünüyorum. Ben de yazılım mühendisiyim. Mathics geliştiricileri Mathematica kullanıcısı değilse asıl buna şaşırırım.
    • Mesele fiyat değil, özgürlük meselesi.
    • Bazı insanlar kendileri için yazılım yapar, hatta bunu açık kaynak olarak yayımlar.
    • Eskiden Debian Sarge’ın 3 DVD’lik kutusuna ve dergi boyutunda el kitabına 20 dolar ödemiştim.
  • Mathematica, Raspberry Pi üzerinde ücretsiz sunuluyor[1] ve çoğu üniversitenin tüm kampüsü kapsayan lisansı var. “Home & Hobby” lisansı da o kadar pahalı değil: abonelik yılda 195 dolar, kalıcı lisans 390 dolar ve yenileme yalnızca 175 dolar[2]
    Açıkçası tinkering ile ilgilenip de bu fiyatı karşılayamayan biri için crack’li sürüm bulmak ya da kurmak da zor değil
    Kişisel olarak Mathematica’yı, daha doğrusu “Wolfram Language”i oldukça seviyorum ve hobi lisansının ücretini ödemekten memnunum. Sadece parasının karşılığını verdiğini düşünmekle kalmıyorum; matematik yazılımlarını desteklemeyi para harcamaya değer “iyi bir amaç” olarak görüyorum
    Üstelik amatör fotoğrafçıların Adobe CC gibi araçlara, birçok programcının tüm araçlarına harcadığından daha fazla para harcaması yaygın; bunun nedenini anlamıyorum. Çeşitli abonelik hizmetlerine ayda 20–40 dolar ya da daha fazlasını harcarken 200–400 dolarlık lisans ücreti konusunda tereddüt etmek de aynı şekilde
    Gerçi benim durumumda, bilgisayarımda kurulu neredeyse tüm programlardan daha fazla zamanı Mathematica’da geçiriyorum
    Yine de açık kaynak matematik yazılımları için hâlâ önemli bir yer var. Mathematica genel olarak kapsamlı olsa da ileri matematikte hâlâ büyük eksikleri var
    Özellikle daha “niş” matematik alanlarını da karşılayacağına inanmayı zorlaştıran iki neden var. Birincisi, daha ileri ya da anlaşılması güç alanlara gidildikçe yatırımın geri dönüşü hızla düşüyor. İkincisi, Wolfram Language’da zaten 6000’den fazla yerleşik fonksiyon var; grup teorisi gibi alanları kapsamlı desteklemek için yüzlercesini daha eklemek pek mantıklı değil
    Paketlerle desteklenebilir ama çekirdekte birinci sınıf destek almadığı için performans maliyeti olur; kullanıcıların özellikle arayıp kullanması gerektiğinden kullanılabilirlik maliyeti de doğar
    Bu yüzden GAP, M2, PARI/GP gibi açık kaynak yazılımlar Wolfram Language’ın boşluklarını doldurmada önemli bir rol oynuyor. Ben Mathematica lisansına harcadığım kadar FOSS projelerine de katkıda bulunuyorum. Maddi katkının kolay olmadığı projelerde ise zaman ve becerilerimi harcayarak iyileştirmeye çalışıyorum
    Açıkçası Mathematica’nın işlevlerini kopyalamaya çalışan projelere pek ilgi duymuyorum. Elbette bu projeler de geliştirilmeye ve iyileştirilmeye devam edecek; en azından Wolfram Research’ün temel işlevleri sürekli geliştirmesi için baskı oluşturabilirler. Ama böyle bir projenin bugünkü Mathematica/WL’ye yetişmesi muhtemelen 10–20 yıl alır gibi görünüyor
    [1]: https://www.wolfram.com/raspberry-pi/
    [2]: https://www.wolfram.com/mathematica/pricing/home-hobby/

    • Stephen Wolfram HN’de epey sevilmiyor gibi görünüyor, ama deneysel matematik, bulmaca çözme, hızlı veri görselleştirme gibi işler için Wolfram derinlikli ve güzel bir dil
      Entegre notebook’lar, fareyle üzerine gelince çıkan belgeler ve şaşırtıcı biçimde binlerce fonksiyon içeren tek bir dev isim alanı bir şekilde birleşip, kullandığım hiçbir şeye benzemeyen basit ve üretken bir deneyim sunuyor. Normalde “ağır” IDE’leri seven biri olmamama rağmen böyle
  • Mathematica’da can sıkan şeylerden biri, tüm fonksiyonların aynı isim alanına tıkıştırılmış olması ve farklı parametrelendirme seçeneklerine göre overload olmaması

    • Overload ile ne kastedildiğini bilmiyorum. Fonksiyonlar argüman sayısına göre kolayca farklı davranabilir. Örneğin 2 argümanlı Fold ve 3 argümanlı Fold böyle; Graphics, Graphics3D, Solve, Import/Export gibi fonksiyonların da istendiği kadar seçeneği olabilir
      Aklıma gelen büyük tekrar, olsa olsa çeşitli Plot fonksiyonları