4 poin oleh GN⁺ 2024-12-09 | 1 komentar | Bagikan ke WhatsApp
  • Mathics Core 7.0.0 merapikan mesin inti dari sistem komputasi open source yang kompatibel dengan Mathematica, sekaligus menyiapkan fondasi untuk lazy loading fungsi bawaan di masa depan
  • Fungsi bawaan baru seperti ComplexExpand, ConjugateTranspose, LeviCivitaTensor, dan lainnya ditambahkan untuk formula, aljabar linear, dan fungsi terkait penentuan bilangan real
  • Celah kompatibilitas yang ada sebelumnya diperbaiki, termasuk Range[], DirectedInfinity, Indeterminate, tampilan error Graphics, dan perubahan pada $CharacterEncoding
  • Pemuatan fungsi bawaan berubah dari ketergantungan pada import implisit menjadi pemanggilan eksplisit import_and_load_builtins()
  • Mencakup dukungan Python 3.11 dan SymPy 1.12, serta perbaikan terkait Quantity, SparseArray, Derivative, Exit[], dan BaseForm

Arah rilis dan perapian internal

  • Mathics Core 7.0.0 mencakup perapian struktur internal untuk mendukung lazy loading fungsi bawaan di masa mendatang
  • Kode dan gaya Python dimodernisasi, anotasi tipe ditambah, dan berbagai kesalahan ejaan diperbaiki
  • Dependensi SymPy dan Python diperbarui ke versi yang lebih baru
  • Pekerjaan juga dilakukan untuk meningkatkan kecepatan pemuatan awal dan mengurangi penggunaan memori awal

Fungsi bawaan baru

  • Fungsi bawaan yang ditambahkan dalam rilis ini adalah sebagai berikut
    • $MaxLengthIntStringConversion
    • Elements
    • ComplexExpand
    • ConjugateTranspose
    • LeviCivitaTensor
    • RealAbs, RealSign
    • RealValuedNumberQ

Peningkatan pembuatan dokumentasi dan pengujian

  • Masalah pemformatan pada dokumentasi PDF diperbaiki di berbagai bagian
    • Jarak nomor bagian pada daftar isi bab dan seksi diperlebar
    • Margin di sekitar definisi fungsi bawaan diperbesar
    • Kesalahan ejaan di seluruh dokumentasi dirapikan
  • Kode untuk menjalankan doctest dan menghasilkan dokumen LaTeX direvisi dan direfaktor
    • Memungkinkan pembaruan inkremental pada fungsi bawaan
    • Dirapikan untuk mengurangi kode duplikat
  • Pada “Expression Structure”, seksi Section Head-Related Operations baru ditambahkan
  • Judul PDF diubah dari Mathics menjadi Mathics3, dan kalimat pengantar juga diperbarui
  • Doctest lama dengan format usang yang tidak ditampilkan dan tidak untuk tujuan edukasi diubah ke pytest

Perubahan kompatibilitas dan perilaku yang terlihat oleh pengguna

  • *Plot tidak menampilkan pesan selama evaluasi
  • Range[] menangani di negatif
  • Dukungan untuk DirectedInfinity dan Indeterminate ditingkatkan
  • Graphics dan Graphics3D ditampilkan dengan latar belakang merah muda saat berisi primitive atau directive yang salah
    • Pada antarmuka Mathics-Django, pesan error tooltip juga ditampilkan
  • $CharacterEncoding dapat diubah nilainya di dalam sesi

Implementasi internal dan perubahan API

  • Pada Abs dan Sign, eval_abs dan eval_sign dipisahkan lalu ditambahkan ke mathics.eval.arithmetic
  • Jumlah digit maksimum angka yang diizinkan dalam string ditetapkan menjadi 7000
    • Pada lingkungan seperti pyston yang tidak disesuaikan otomatis oleh Python, nilainya dapat diatur dengan variabel lingkungan MATHICS_MAX_STR_DIGITS
  • Implementasi perbandingan bilangan real secara internal dimasukkan ke implementasi RealSign
  • Pada Python 3.11, $MaxLengthIntStringConversion mengendalikan ukuran maksimum konversi literal antara bilangan bulat besar dan string
  • Pemuatan kode bawaan berubah dari cara implisit menjadi cara instruksi eksplisit
    • Perubahan ini dilakukan agar di masa depan dimungkinkan lazy loading fungsi bawaan atau “autoload” ala GNU Emacs autoload
  • Dengan API baru, import_and_load_builtins() harus dipanggil secara eksplisit
    • Sebelumnya, waktu pemuatan fungsi bawaan bersifat implisit dan tidak pasti, bergantung pada urutan import
  • LRU cache ditambahkan ke mpmath

Perbaikan bug pada Quantity·SparseArray dan lainnya

  • Definitions kompatibel dengan pickle
  • Dukungan untuk ekspresi Quantity ditingkatkan
    • Mencakup konversi, pemformatan, dan operasi aritmetika
  • Opsi Background pada Graphics dan Graphics3D kembali berfungsi
  • Masalah perbandingan numerik untuk ekspresi yang mengandung String diperbaiki
  • Masalah Switch[] yang melibatkan Infinity diperbaiki
  • Masalah Outer[] pada SparseArray diperbaiki
  • ArrayQ[] kini mendeteksi SparseArray
  • Eksepsi BoxExpressionError kini ditangani
  • Perilaku Derivative saat mengevaluasi True, False, dan List[] diperbaiki
  • Termasuk perbaikan pada paket Combinatorica
  • Exit[] yang sebelumnya tidak berfungsi kini diperbaiki
  • BaseForm dimasukkan ke $OutputForms

Versi dukungan paket

  • Mendukung Python 3.11
  • Mendukung SymPy 1.12

1 komentar

 
GN⁺ 2024-12-09
Opini Hacker News
  • Saya sudah mengikuti proyek ini selama beberapa tahun, dan perkembangannya terus bagus. Jika tertarik pada sistem aljabar komputer open source, ada banyak solusi yang lebih matang, mulai dari pilihan klasik seperti GNU Octave atau Maxima hingga pilihan modern seperti SAGEmath, Symbolics.jl, dan sympy.
    Rentangnya luas, dari pustaka komputasi simbolik seperti GiNaC hingga IDE lengkap seperti SAGEmath, dan komunitasnya juga aktif. Misalnya, menurut saya SAGEmath praktis memelopori antarmuka notebook web, yang kemudian berlanjut menjadi berbagai bentuk Jupyter saat ini.
    Secara pribadi saya menyukai gaya Mathematica (MMA) yang terasa seperti Lisp, tetapi yang membuat MMA kuat bukan hanya intinya, melainkan pustaka raksasanya. Ada solusi tingkat terbaik di industri untuk topik dasar seperti integrasi simbolik, grafik 2D/3D, dan metode elemen hingga, serta banyak bidang khusus seperti bioinformatika.
    Mathics tampaknya berhasil mereplikasi intinya, tetapi tentu saja kekurangan semua pustaka itu. Logika yang sama berlaku saat membandingkan Matlab dan berbagai “toolkit” dengan klon numpy, tetapi arus Python sekarang sudah membawa banyak kode baru yang tidak berjalan di Matlab ke dunia numpy.

    • Saya setuju soal kemajuannya. Proyek ini terlihat seperti contoh bagus dari menekuni hal yang disukai secara diam-diam dan konsisten.
      Saat pertama kali muncul sekitar 5 tahun lalu, saya berpikir, “mesin evaluasi simboliknya benar-benar dibuat dengan baik, mari lihat akan jadi apa nanti.” Setiap kali saya ingin memulai proyek baru ke depannya, saya harus mengingat contoh ini: terus memoles proyek lama.
    • Dari sisi Lisp, Maxima memudahkan masuk ke Common Lisp. Lebih baik lagi jika memakai SBCL demi performa.
    • Mungkin saya keliru, tetapi saya tidak melihat Octave, Matlab, dan numpy berada di ranah yang sama dengan sistem aljabar komputer. Semuanya adalah bahasa atau pustaka yang berfokus pada komputasi numerik, jadi digunakan untuk mencari solusi numerik atas masalah, bukan ekspresi simbolik eksak.
      Keduanya saling melengkapi dan sering dipakai bersama. Mathematica dan Mathics tampaknya mendukung kedua paradigma, tetapi keduanya bukan hal yang sama.
  • Sepertinya berbasis sympy: https://www.sympy.org/en/index.html

  • Jika hanya untuk penggunaan pribadi, Wolfram Cloud bisa dipakai gratis. Sepertinya file akan dihapus setelah sekitar 30 hari. Wolfram Engine juga cara gratis untuk memakai Mathematica dari command line. Yah, lebih baik daripada tidak ada.

    • Bisa juga membeli Raspberry Pi yang sudah menyertakan lisensi Mathematica.
    • Jika WLJS dipasang di atas Wolfram Engine, pemakaiannya cukup menyenangkan.
  • Pengantar yang lebih sederhana tentang Mathics ada di sini:
    https://mathics.org/

  • Entah kenapa saya merasa ini akan diintegrasikan ke SageMath :D

    • Saya tidak tahu ada upaya nyata untuk memasukkan Mathics ke SageMath. Kalau menebak, mungkin karena SageMath terutama dikembangkan oleh matematikawan riset dan kriptografer, sehingga saat memasukkan komponen, performa sering menjadi perhatian utama.
      Salah satu alasan SageMath menjadi proyek Cython terbesar adalah karena Cython memungkinkan Sage memanfaatkan pustaka C/C++ yang cepat.
      Saat ini Mathics tampaknya belum terlalu serius memikirkan performa. Misalnya, coba jalankan mikrobenchmark kecil seperti "AbsoluteTiming[Sum[i, {i, 1, 100000}]]" di Mathics, atau baca roadmap-nya.
      Tentu saja itu tidak masalah. Bahasa pemrograman Mathematica punya banyak aplikasi menarik yang performanya tidak penting, misalnya untuk mengikuti langkah demi langkah suatu manipulasi simbolik secara hati-hati bersama ekspresinya.
      Namun motivasi utama para pengembang Sage adalah matematika riset mutakhir, dan di sana performa hampir selalu sangat penting. Performa juga alasan Sage tidak sekadar memakai sympy dan justru mengimplementasikan sendiri banyak fungsi serupa. sympy memprioritaskan kemudahan instalasi sehingga bisa relatif lambat, sedangkan di SageMath kemudahan instalasi sama sekali bukan prioritas.
      Misi SageMath adalah menjadi alternatif yang layak untuk Mathematica, Matlab, Magma, dan Maple, tetapi itu tidak berarti menjadi klon. Misalnya, bukan berarti menjalankan kode Mathematica secara langsung, melainkan menjadi alternatif yang dapat mendukung riset yang semula akan dilakukan dengan program tertutup semacam itu, di atas perangkat lunak matematika open source.
  • Insinyur perangkat lunak akan melakukan apa saja agar tidak perlu membayar biaya perangkat lunak.

    • Saya punya lisensi Mathematica, tetapi menurut saya proyek ini juga cukup keren. Saya juga insinyur perangkat lunak. Saya malah akan terkejut kalau para pengembang Mathics bukan pengguna Mathematica.
    • Ini bukan soal harga, melainkan soal kebebasan.
    • Sebagian orang membuat perangkat lunak untuk diri sendiri, bahkan merilisnya sebagai open source.
    • Dulu saya pernah membayar 20 dolar untuk kotak DVD 3 keping Debian Sarge dan buku panduan seukuran majalah.
  • Mathematica tersedia gratis di Raspberry Pi[1], dan sebagian besar universitas memiliki lisensi untuk seluruh situs. Lisensi “Home & Hobby” juga tidak terlalu mahal: langganannya 195 dolar AS per tahun, lisensi permanennya 390 dolar AS, dan perpanjangannya hanya 175 dolar AS[2]
    Jujur saja, kalau seseorang tertarik untuk tinkering tetapi tidak mampu membayar harga itu, versi crack juga tidak sulit ditemukan atau dipasang
    Secara pribadi saya cukup menyukai Mathematica, tepatnya “Wolfram Language”, dan senang membayar biaya lisensi untuk hobi. Bukan hanya karena menurut saya sepadan dengan harganya, tetapi juga karena mendukung perangkat lunak matematika adalah “alasan baik” yang layak untuk mengeluarkan uang
    Selain itu, fotografer amatir sering menghabiskan lebih banyak uang untuk alat seperti Adobe CC daripada yang banyak programmer keluarkan untuk seluruh alat mereka, dan saya tidak mengerti kenapa begitu. Hal yang sama berlaku ketika orang menghabiskan 20–40 dolar AS atau lebih per bulan untuk berbagai layanan berlangganan, tetapi ragu membayar biaya lisensi 200–400 dolar AS
    Namun dalam kasus saya, saya menghabiskan lebih banyak waktu di Mathematica daripada di hampir semua program lain yang terpasang di komputer saya
    Meski begitu, perangkat lunak matematika open-source tetap punya tempat penting. Mathematica pada umumnya komprehensif, tetapi dalam matematika tingkat lanjut masih memiliki kekurangan besar
    Ada dua alasan khusus mengapa sulit percaya bahwa ia akan memenuhi kebutuhan bidang matematika yang lebih “niche”. Pertama, makin lanjut atau makin esoteris suatu bidang, imbal hasil investasinya turun drastis. Kedua, Wolfram Language sudah memiliki lebih dari 6000 fungsi bawaan, jadi menambahkan ratusan lagi untuk mendukung bidang seperti teori grup secara komprehensif tidak terlalu masuk akal
    Bisa saja didukung lewat paket, tetapi karena tidak mendapat dukungan kelas satu di kernel, ada biaya performa, dan karena pengguna harus sengaja mencari dan memakainya, ada juga biaya dari sisi kegunaan
    Karena itu, perangkat lunak open-source seperti GAP, M2, dan PARI/GP berperan penting dalam mengisi celah Wolfram Language. Dalam kasus saya, saya juga berkontribusi ke proyek FOSS sebesar yang saya keluarkan untuk lisensi Mathematica. Untuk proyek yang kontribusi finansialnya tidak sederhana, saya mencoba memperbaikinya dengan menyumbangkan waktu dan keterampilan
    Sejujurnya saya tidak terlalu tertarik pada proyek yang mencoba mereplikasi fitur Mathematica. Tentu saja proyek-proyek seperti itu akan terus dikembangkan dan ditingkatkan, dan setidaknya bisa memberi tekanan kepada Wolfram Research agar terus memperbaiki fungsi dasar. Namun agar proyek semacam itu bisa mengejar Mathematica/WL saat ini, mungkin perlu 10–20 tahun
    [1]: https://www.wolfram.com/raspberry-pi/
    [2]: https://www.wolfram.com/mathematica/pricing/home-hobby/

    • Stephen Wolfram tampaknya cukup dibenci di HN, tetapi untuk matematika eksperimental, memecahkan puzzle, visualisasi data cepat, dan sejenisnya, Wolfram adalah bahasa yang mendalam dan indah
      Notebook terpadu, dokumentasi saat mouse-over, dan—secara mengejutkan—satu namespace raksasa berisi ribuan fungsi somehow berpadu menjadi pengalaman yang sederhana dan produktif, berbeda dari apa pun yang pernah saya gunakan. Padahal biasanya saya juga bukan penggemar IDE yang “berat”
  • Salah satu hal yang menjengkelkan di Mathematica adalah semua fungsi dijejalkan ke namespace yang sama, dan tidak ada overloading berdasarkan opsi parameterisasi yang berbeda

    • Saya tidak paham apa yang dimaksud dengan overloading. Fungsi dapat dengan mudah berperilaku berbeda berdasarkan jumlah argumen. Misalnya Fold dengan 2 argumen dan Fold dengan 3 argumen, dan fungsi seperti Graphics, Graphics3D, Solve, Import/Export juga bisa memiliki opsi sebanyak yang diperlukan
      Duplikasi besar yang terpikir hanya beberapa fungsi Plot