Mathics 7.0 – Mathematica का ओपन सोर्स विकल्प
(github.com/Mathics3)- Mathics Core 7.0.0, Mathematica-संगत ओपन सोर्स कंप्यूटेशन सिस्टम के कोर इंजन को व्यवस्थित करता है और आगे built-in functions की lazy loading के लिए आधार तैयार करता है
- नए built-in functions के रूप में
ComplexExpand,ConjugateTranspose,LeviCivitaTensorआदि जोड़े गए हैं, जिनमें सूत्र, linear algebra और real-number determination से जुड़ी क्षमताएँ शामिल हैं Range[],DirectedInfinity,Indeterminate,Graphicserror display,$CharacterEncodingबदलाव आदि के जरिए मौजूदा compatibility की कमियाँ भरी गई हैं- built-in function loading अब implicit import dependency से हटकर
import_and_load_builtins()को explicitly call करने के तरीके में बदल गया है - Python 3.11 और SymPy 1.12 support शामिल है, साथ ही
Quantity,SparseArray,Derivative,Exit[],BaseFormसे जुड़े fixes भी जोड़े गए हैं
रिलीज़ दिशा और आंतरिक पुनर्गठन
- Mathics Core 7.0.0 में आगे built-in functions की lazy loading को support करने के लिए internal structure cleanup शामिल है
- Python code और style को modernize किया गया है, type annotations बढ़ाए गए हैं, और कई spelling errors ठीक किए गए हैं
- SymPy और Python dependencies को नए versions पर अपडेट किया गया है
- initial loading speed बढ़ाने और शुरुआती memory usage कम करने के लिए भी काम किया गया है
नए built-in functions
- इस रिलीज़ में जोड़े गए built-in functions ये हैं
$MaxLengthIntStringConversionElementsComplexExpandConjugateTransposeLeviCivitaTensorRealAbs,RealSignRealValuedNumberQ
दस्तावेज़ और टेस्ट जनरेशन में सुधार
- PDF दस्तावेज़ों में formatting issues कई जगह ठीक की गई हैं
- अध्याय और अनुभाग सूची में section number spacing बढ़ाई गई है
- built-in function definitions के आसपास margins बढ़ाए गए हैं
- पूरे दस्तावेज़ में spelling errors साफ किए गए हैं
- doctest execution और LaTeX document generation code को revise और refactor किया गया है
- built-in functions के incremental updates की अनुमति दी गई है
- duplicate code कम करने की दिशा में साफ-सफाई की गई है
- “Expression Structure” में Section Head-Related Operations अनुभाग नया जोड़ा गया है
- PDF title को Mathics से Mathics3 में बदला गया है, और introduction text भी अपडेट किया गया है
- पुराने format के non-exposed, non-educational doctests को pytest में बदला गया है
compatibility और user-visible behavior changes
*Plotevaluation के दौरान messages नहीं दिखाताRange[]negativediको handle करता है- संबंधित PR: #951
DirectedInfinityऔरIndeterminatesupport में सुधार किया गया हैGraphicsऔरGraphics3D, गलत primitive या directive शामिल होने पर गुलाबी background के साथ दिखते हैं- Mathics-Django interface में tooltip error message भी साथ दिखता है
$CharacterEncodingका मान session के भीतर बदला जा सकता है
internal implementation और API changes
AbsऔरSignमेंeval_abs,eval_signको अलग करकेmathics.eval.arithmeticमें जोड़ा गया है- strings में अनुमत maximum numeric digits की संख्या 7000 तय की गई है
- pyston जैसे environments, जहाँ Python इसे अपने-आप adjust नहीं करता, वहाँ
MATHICS_MAX_STR_DIGITSenvironment variable से इसे बदला जा सकता है
- pyston जैसे environments, जहाँ Python इसे अपने-आप adjust नहीं करता, वहाँ
- real-number comparison implementation को internal रूप से
RealSignimplementation में रखा गया है - Python 3.11 में
$MaxLengthIntStringConversion, बड़े integers और strings के बीच literal conversion के maximum size को नियंत्रित करता है - built-in code loading implicit तरीके के बजाय explicit instruction तरीके में बदल गया है
- यह आगे built-in functions की lazy loading या GNU Emacs autoload शैली के “autoload” को संभव बनाने के लिए किया गया बदलाव है
- नए API में
import_and_load_builtins()को explicitly call करना होगा- पहले import order के आधार पर built-in function loading का timing implicit और अनिश्चित था
mpmathमें LRU cache जोड़ा गया है
Quantity·SparseArray आदि bug fixes
Definitionsअब pickle के साथ compatible हैQuantityexpressions के support में सुधार किया गया है- इसमें conversion, formatting और arithmetic operations शामिल हैं
GraphicsऔरGraphics3DकाBackgroundoption फिर से काम करता हैStringशामिल expressions के लिए numeric comparison issue ठीक किया गया है- संबंधित issue: #797
InfinityशामिलSwitch[]issue ठीक किया गया है- संबंधित issue: #956
SparseArrayके लिएOuter[]issue ठीक किया गया है- संबंधित issue: #939
ArrayQ[]अबSparseArrayको detect करता है- संबंधित PR: #947
BoxExpressionErrorexception को handle किया गया हैDerivativeद्वाराTrue,False,List[]को evaluate करने का behavior ठीक किया गया हैCombinatoricapackage fixes शामिल हैं- काम न करने वाला
Exit[]ठीक किया गया है BaseFormको$OutputFormsमें शामिल किया गया है
पैकेज support versions
- Python 3.11 supported है
- SymPy 1.12 supported है
1 टिप्पणियां
Hacker News की राय
मैं इस प्रोजेक्ट को कई सालों से देख रहा हूँ और यह लगातार अच्छे से आगे बढ़ रहा है। अगर आपकी दिलचस्पी open source computer algebra system में है, तो GNU Octave या Maxima जैसे क्लासिक विकल्पों से लेकर SAGEmath, Symbolics.jl, sympy जैसे आधुनिक विकल्पों तक, कई ज़्यादा परिपक्व समाधान मौजूद हैं
GiNaC जैसी symbolic computation लाइब्रेरी से लेकर SAGEmath जैसे batteries-included IDE तक इसका दायरा बड़ा है, और community भी सक्रिय है। उदाहरण के लिए, मेरे हिसाब से SAGEmath ने web notebook interface को लगभग pioneered किया था, जो आज Jupyter के अलग-अलग रूपों तक पहुँचा
व्यक्तिगत रूप से मुझे Mathematica(MMA) का Lisp जैसा style पसंद है, लेकिन MMA को ताकतवर बनाने वाली चीज़ सिर्फ core नहीं, बल्कि इसकी विशाल library है। symbolic integration, 2D/3D graphics, finite element method जैसे बुनियादी विषयों में इसके पास industry-leading समाधान हैं, और bioinformatics जैसे कई specialized क्षेत्र भी हैं
Mathics ने core की नकल अच्छी तरह की लगती है, लेकिन स्वाभाविक है कि वे सारी libraries इसमें नहीं हैं। Matlab और कई “toolkit” की तुलना numpy clone से करते समय भी यही तर्क लागू होता है, लेकिन Python flow अब Matlab में न चलने वाले बहुत सारे नए code को numpy world में ले आया है
करीब 5 साल पहले जब यह पहली बार आया था, तो मैंने सोचा था “symbolic evaluation engine तो सच में अच्छा बनाया है, अब देखते हैं आगे क्या होता है।” आगे जब भी नया project शुरू करने का मन होगा, तो पुराने project को लगातार refine करते रहने का यह उदाहरण याद रखना चाहिए
ये एक-दूसरे के पूरक हैं और अक्सर साथ में भी इस्तेमाल होते हैं। Mathematica और Mathics दोनों paradigms को support करते लगते हैं, लेकिन वे एक ही चीज़ नहीं हैं
sympy based लगता है: https://www.sympy.org/en/index.html
अगर आपको सिर्फ personal use चाहिए, तो Wolfram Cloud मुफ्त में इस्तेमाल किया जा सकता है। लगता है files करीब 30 दिन बाद delete हो जाती हैं। Wolfram Engine भी command line से Mathematica मुफ्त में इस्तेमाल करने का तरीका है। खैर, कुछ न होने से तो बेहतर है
Mathics का और सरल परिचय यहाँ है:
https://mathics.org/
पता नहीं क्यों, लगता है यह SageMath में integrate हो जाएगा :D
SageMath सबसे बड़े Cython projects में से एक है, इसका एक कारण यह भी है कि Cython Sage में तेज़ C/C++ libraries का फायदा उठाने देता है
Mathics फिलहाल performance को बहुत गंभीरता से लेता नहीं लगता। उदाहरण के लिए Mathics में
"AbsoluteTiming[Sum[i, {i, 1, 100000}]]"जैसा छोटा microbenchmark चला कर देख सकते हैं, या roadmap पढ़ सकते हैंबेशक यह ठीक है। Mathematica programming language में कई दिलचस्प applications हैं जहाँ performance महत्वपूर्ण नहीं होती, जैसे किसी symbolic operation को expression के साथ सावधानी से step-by-step follow करना
लेकिन Sage developers की मुख्य motivation cutting-edge research mathematics है, और वहाँ लगभग हमेशा performance बहुत महत्वपूर्ण होती है। Sage सिर्फ sympy का उपयोग न करके बहुत सारी समान functionality खुद implement करता है, इसकी वजह भी performance है। sympy installation में आसानी को प्राथमिकता देता है, इसलिए अपेक्षाकृत धीमा हो सकता है, जबकि SageMath में easy installation बिल्कुल priority नहीं है
SageMath का mission Mathematica, Matlab, Magma, Maple का viable alternative बनना है, लेकिन इसका मतलब clone बनना नहीं था। उदाहरण के लिए इसका मतलब Mathematica code को सीधे चलाना नहीं, बल्कि उस research को open source math software पर support करने वाला alternative होना है जिसे वरना ऐसे closed-source programs से किया जाता
software engineers software cost न देने के लिए कुछ भी कर लेते हैं
Mathematica Raspberry Pi पर मुफ़्त में उपलब्ध है[1], और ज़्यादातर विश्वविद्यालयों के पास पूरे site का license होता है। “Home & Hobby” license भी इतना महंगा नहीं है: subscription सालाना 195 डॉलर है, perpetual license 390 डॉलर है, और renewal सिर्फ़ 175 डॉलर है[2]
सच कहूं तो अगर कोई tinkering में दिलचस्पी रखता है लेकिन वह कीमत नहीं चुका सकता, तो crack version ढूंढना या install करना भी मुश्किल नहीं है
निजी तौर पर मुझे Mathematica, सटीक कहें तो “Wolfram Language”, काफ़ी पसंद है और hobby license के लिए पैसे देने में भी संतोष है। मुझे न सिर्फ़ लगता है कि इसकी कीमत वसूल है, बल्कि math software को support करना पैसे खर्च करने का एक “अच्छा कारण” भी मानता हूं
इसके अलावा, amateur photographers अक्सर Adobe CC जैसे tools पर उतना खर्च कर देते हैं जितना कई programmers अपने सारे tools पर भी नहीं करते; मुझे समझ नहीं आता क्यों। कई subscription services पर महीने के 20–40 डॉलर से ज़्यादा खर्च करना, लेकिन 200–400 डॉलर के license fee पर हिचकना भी वैसा ही है
हालांकि मेरे मामले में, कंप्यूटर पर install लगभग किसी भी program से ज़्यादा समय मैं Mathematica में बिताता हूं
फिर भी open-source math software की अब भी एक महत्वपूर्ण जगह है। Mathematica आम तौर पर व्यापक है, लेकिन advanced math में अब भी बड़ी कमियां हैं
खासकर ज़्यादा “niche” math क्षेत्रों को भी यह पूरा कर पाएगा, इस पर भरोसा करना कठिन होने के दो कारण हैं। पहला, जितना ज़्यादा advanced या obscure क्षेत्र होगा, return on investment उतनी ही तेज़ी से घटेगा। दूसरा, Wolfram Language में पहले से ही 6000 से ज़्यादा built-in functions हैं, इसलिए group theory जैसे क्षेत्रों को व्यापक रूप से support करने के लिए सैकड़ों और functions जोड़ना बहुत समझदारी भरा नहीं लगता
इसे packages के ज़रिए support किया जा सकता है, लेकिन kernel में first-class support न मिलने से performance cost आती है, और users को जानबूझकर ढूंढकर इस्तेमाल करना पड़ता है, इसलिए usability cost भी होती है
इसलिए GAP, M2, PARI/GP जैसे open-source software Wolfram Language की gaps भरने में महत्वपूर्ण भूमिका निभाते हैं। मेरे मामले में, जितना मैं Mathematica license पर खर्च करता हूं, उतना ही FOSS projects में भी contribute करता हूं। जिन projects में आर्थिक योगदान आसान नहीं होता, उनमें समय और skills लगाकर सुधार करने की कोशिश करता हूं
सच कहूं तो Mathematica की functionality को clone करने की कोशिश करने वाले projects में मेरी ज़्यादा रुचि नहीं है। बेशक ऐसे projects भी develop और improve होते रहेंगे, और कम-से-कम Wolfram Research पर core functionality को लगातार बेहतर करने का दबाव तो डाल सकते हैं। लेकिन ऐसे project को आज के Mathematica/WL की बराबरी करने में शायद 10–20 साल लगेंगे
[1]: https://www.wolfram.com/raspberry-pi/
[2]: https://www.wolfram.com/mathematica/pricing/home-hobby/
integrated notebook, mouse-over documentation, और हैरानी की बात है कि हजारों functions वाला एक single विशाल namespace — ये सब somehow मिलकर एक ऐसा सरल और productive experience देते हैं, जैसा मैंने किसी और में नहीं देखा। जबकि आम तौर पर मैं “heavy” IDEs पसंद करने वालों में भी नहीं हूं
Mathematica में परेशान करने वाली बातों में से एक यह है कि सारे functions को उसी namespace में ठूंस दिया गया है, और अलग-अलग parameterization options के हिसाब से overloading नहीं है
याद आने वाला बड़ा duplication बस कई Plot functions के आसपास ही है