- 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 errorGraphics, 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[], danBaseForm
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
$MaxLengthIntStringConversionElementsComplexExpandConjugateTransposeLeviCivitaTensorRealAbs,RealSignRealValuedNumberQ
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
*Plottidak menampilkan pesan selama evaluasiRange[]menanganidinegatif- PR terkait: #951
- Dukungan untuk
DirectedInfinitydanIndeterminateditingkatkan GraphicsdanGraphics3Dditampilkan dengan latar belakang merah muda saat berisi primitive atau directive yang salah- Pada antarmuka Mathics-Django, pesan error tooltip juga ditampilkan
$CharacterEncodingdapat diubah nilainya di dalam sesi
Implementasi internal dan perubahan API
- Pada
AbsdanSign,eval_absdaneval_signdipisahkan lalu ditambahkan kemathics.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
- Pada lingkungan seperti pyston yang tidak disesuaikan otomatis oleh Python, nilainya dapat diatur dengan variabel lingkungan
- Implementasi perbandingan bilangan real secara internal dimasukkan ke implementasi
RealSign - Pada Python 3.11,
$MaxLengthIntStringConversionmengendalikan 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
Definitionskompatibel dengan pickle- Dukungan untuk ekspresi
Quantityditingkatkan- Mencakup konversi, pemformatan, dan operasi aritmetika
- Opsi
BackgroundpadaGraphicsdanGraphics3Dkembali berfungsi - Masalah perbandingan numerik untuk ekspresi yang mengandung
Stringdiperbaiki- Isu terkait: #797
- Masalah
Switch[]yang melibatkanInfinitydiperbaiki- Isu terkait: #956
- Masalah
Outer[]padaSparseArraydiperbaiki- Isu terkait: #939
ArrayQ[]kini mendeteksiSparseArray- PR terkait: #947
- Eksepsi
BoxExpressionErrorkini ditangani - Perilaku
Derivativesaat mengevaluasiTrue,False, danList[]diperbaiki - Termasuk perbaikan pada paket
Combinatorica Exit[]yang sebelumnya tidak berfungsi kini diperbaikiBaseFormdimasukkan ke$OutputForms
Versi dukungan paket
- Mendukung Python 3.11
- Mendukung SymPy 1.12
1 komentar
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.
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.
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.
Pengantar yang lebih sederhana tentang Mathics ada di sini:
https://mathics.org/
Entah kenapa saya merasa ini akan diintegrasikan ke SageMath :D
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.
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/
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
Duplikasi besar yang terpikir hanya beberapa fungsi Plot