TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Symbolics.jl: A Modern Computer Algebra System for a Modern Language

379 点作者 natemcintosh大约 4 年前

17 条评论

meta2meta大约 4 年前
Rackauckas has done a lot of work to create the whole scientific machine learning (SciML) ecosystem (with collaborators).<p>Symbolics.jl is the new step to a universal CAS tool in Julia to bridge the gap between symbolic manipulation and numerical computation<p>It is especially useful as a foundation for equation-based simulation package ModelingToolkit.jl. In the foreseeable future, I expect ModelingToolkit.jl can be comparable with the Modelica ecosystem to provide fast, accurate modeling and simulation capability and easy integration with machine learning methods for Julia ecosystem, which is crucial for engineering application and scientific research.
评论 #26359078 未加载
Robotbeat大约 4 年前
This is very cool. Computer Algebra Systems are like a super power. I’ve been able to use the TI-89’s arbitrary precision to do pretty sophisticated cryptography work. Symbolics.jl has the ability to modify some of the rules of the algebra, which should allow even easier implementation of number theory related cryptographic concepts (as well as compression and error correcting codes... or quaternions or bra-ket quantum mechanics) without needing specific libraries. I love this as I’m trying to teach myself the fundamental concepts in mathematical terms and not just something in a specialized black box library. (And without paying the insanely high price of Mathematica if I ever want to use it professionally.)<p>I’ve looked briefly into Julia in the past, but if stuff like this becomes pretty standard (in the way numpy is for Python), I think I could become pretty comfortable in Julia.
评论 #26363622 未加载
junippor大约 4 年前
I&#x27;ll make one (probably unpopular) comment.<p>On HN every time the subject of language wars or platform wars or browser wars comes up, the idea also comes up that &quot;everything is about the number of users&quot;. The self-reinforcing cycle is that the language&#x2F;platform&#x2F;browser with the most users also has the most development time put into it, which then attracts more users, etc.<p>Fine, I don&#x27;t deny that the phenomenon exists. But I think that it&#x27;s often overlooked that it&#x27;s not just about the number of users. It&#x27;s also about the quality of the users. If we could quantify &quot;an excellent developer&quot;, I wouldn&#x27;t claim that Julia has more of those than Python. But I&#x27;m convinced that Julia has more &quot;excellent developers who are also excellent at numerics&quot; than Python. I think the idea that the productivity as function of &quot;developer excellence percentile&quot; is a power-law applies even more strongly in multi-domain expertise situations, like numerical computing. So forget about 100x coders. The contributions of some people like Chris et al are closer to 10_000x as significant as that of an ok contributor.<p>It&#x27;s not just about the quantity, it&#x27;s also about quality.
评论 #26360124 未加载
hcarvalhoalves大约 4 年前
Computer Algebra is criminally underused - it has the potential to make math-heavy critical-path code a lot more clear, testable, observable and bug-free by design.<p>I feel I need to mention &quot;Structure and Interpretation of Classical Mechanics&quot; by Wisdom and Sussman, and the accompanying &quot;scmutils&quot; library, which first implemented in Scheme many of the same features, although this Julia library seems to be more complete.<p>There&#x27;s also a great one-to-one port to Clojure by Colin Smith [2] in case you want to use it on a more production-friendly environment. The Strange Loop talk [3] is a good showcase of the power and simplicity of these kind of systems.<p>[1] <a href="https:&#x2F;&#x2F;groups.csail.mit.edu&#x2F;mac&#x2F;users&#x2F;gjs&#x2F;6946&#x2F;" rel="nofollow">https:&#x2F;&#x2F;groups.csail.mit.edu&#x2F;mac&#x2F;users&#x2F;gjs&#x2F;6946&#x2F;</a><p>[2] <a href="https:&#x2F;&#x2F;github.com&#x2F;sicmutils&#x2F;sicmutils" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sicmutils&#x2F;sicmutils</a><p>[3] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7PoajCqNKpg&amp;ab_channel=ClojureTV" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=7PoajCqNKpg&amp;ab_channel=Cloju...</a>
评论 #26359387 未加载
评论 #26358290 未加载
评论 #26358673 未加载
评论 #26359860 未加载
reikonomusha大约 4 年前
CASes are one of the most difficult things to write and they’re never complete. There are always bugs, performance concerns, anemic mathematical domains, etc. Every major free or commercial CAS that’s still in use is under active development to battle these inadequacies. Dozens of CASes have come and gone in the past 30 years, the majority of which have bitrotted or stopped being maintained. And not a single CAS has reigned supreme as the CAS that beats all CASes.<p>It’s very exciting to see more work in CASes being done, but I worry that “starting a CAS from scratch” isn’t the right approach. The Axiom [0, 1] project rightly identified that building a general-purpose CAS for working practitioners of computational mathematics is an effort requiring nearly generational timespans [2], and that you <i>must</i> have the right language to describe mathematical objects and their relationships. They had a literate programming policy, where <i>all</i> math code must be accompanied by publication-quality documentation, precisely because it’s so hard to build and maintain these systems. Some of the greatest computational discoveries and expositions came out of the development of Axiom, like the richest and most complete implementation of the renowned Risch algorithm for doing symbolic integrals.<p>Axiom fell into disuse for a variety of reasons, but from my perspective, found new life in a fork called FriCAS [3, 4], which is actively developed and allows a more “software engineer friendly” approach to the development of the system. The code they have is enormously complex and has mountains of knowledge from foremost experts in computer algebra.<p>I really wish new computer algebra initiatives attempted in earnest to make use of and extend Axiom&#x2F;FriCAS so that we could continue to build up our knowledge of this exceedingly delicate and tricky subject without constantly starting from zero. Axiom has a manual that is over 1,000 pages of dense mathematics and that’s <i>really</i> hard to rebuild correctly.<p>(The only project I know who honestly tried to build upon and subsequently extend CAS functionality is Sage [5], which builds upon a plethora of existing open source general-purpose and specialized computational math systems.)<p>[0] <a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Axiom_(computer_algebra_system)" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Axiom_(computer_algebra_syst...</a><p>[1] <a href="http:&#x2F;&#x2F;www.axiom-developer.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.axiom-developer.org&#x2F;</a><p>[2] Quote from Axiom manual (<a href="http:&#x2F;&#x2F;fricas.sourceforge.net&#x2F;doc&#x2F;book.pdf" rel="nofollow">http:&#x2F;&#x2F;fricas.sourceforge.net&#x2F;doc&#x2F;book.pdf</a>):<p>&gt; With that in mind I’ve introduced the theme of the “30 year horizon”. We must invent the tools that support the Computational Mathematician working 30 years from now. How will research be done when every bit of mathematical knowledge is online and instantly available? What happens when we scale Axiom by a factor of 100, giving us 1.1 million domains? How can we integrate theory with code? How will we integrate theorems and proofs of the mathematics with space-time complexity proofs and running code? What visualization tools are needed? How do we support the conceptual structures and semantics of mathematics in effective ways? How do we support results from the sciences? How do we teach the next generation to be effective Computational Mathematicians? The “30 year horizon” is much nearer than it appears.<p>[3] <a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;FriCAS" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;FriCAS</a><p>[4] <a href="http:&#x2F;&#x2F;fricas.sourceforge.net&#x2F;" rel="nofollow">http:&#x2F;&#x2F;fricas.sourceforge.net&#x2F;</a><p>[5] <a href="https:&#x2F;&#x2F;www.sagemath.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.sagemath.org&#x2F;</a>
评论 #26359759 未加载
UncleOxidant大约 4 年前
I won&#x27;t pretend to understand all or this, but from what I can understand the Julia ecosystem is about to be light years ahead of anything else out there. It&#x27;s an amazing community at the intersection of programming language theory and numerics&#x2F;math. Exciting to see what&#x27;s going to emerge.
评论 #26360015 未加载
评论 #26364035 未加载
评论 #26363954 未加载
max_streese大约 4 年前
Could someone explain to me what the difference between a computer algebra system like Symbolics.jl and a theorem prover like Coq is?<p>Is that more in the nuances or is there a fundamental difference between these two (referring to the terms and not their specific implementations in Symbolics.jl and Coq respectively)?<p>Or is this question unreasonable to ask in the first place?
评论 #26360012 未加载
评论 #26364089 未加载
Roark66大约 4 年前
Is there a tutorial somewhere for absolute beginners with some examples of use? I used octave in the past and I used pandas&#x2F;numpy before, but reading documentation linked to from the github site I have no idea how this can be used.
评论 #26357912 未加载
metreo大约 4 年前
I&#x27;ve always found computer algebra systems a particularly fascinating niche in computing, implementations in accessible languages like Julia are really doing a service to enthusiasts and learners everywhere!
cb321大约 4 年前
There is also FriCAS: <a href="https:&#x2F;&#x2F;fricas.github.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;fricas.github.io&#x2F;</a>
davnn大约 4 年前
Really interesting work! I&#x27;m really happy that people at MIT are pushing forward Julia. In my opinion, Julia is incredibly powerful once you understand the language. It often feels like writing pseudocode that performs like C++. The ecosystem is still pretty barebones compared to Python, but, while I&#x27;m using both tools extensively, I begin to prefer Julia over Python more and more.
评论 #26357411 未加载
评论 #26357206 未加载
xvilka大约 4 年前
Please add ways to donate for your cause. Looking forward for a CAS in a modern language rather than what we have now.
cobaltoxide大约 4 年前
Can I use this now? Is there a getting-started guide or gallery of examples?
评论 #26362764 未加载
eschaton大约 4 年前
Please don’t call this “Symbolics,” that name is already taken by the Lisp Machine vendor that had its own excellent CAS, Maxima, derived from the original MACSYMA at MIT.
评论 #26379227 未加载
评论 #26373837 未加载
konjin大约 4 年前
After playing around with them for a while types seem like the wrong paradigm for symbolic work.<p>Term rewriting systems based on rules capture most mathematical manipulation far better than ones based on functions and classes.<p>Differentiation was a breeze to solve when I sat down and figured out how to formulate it so everything had an understandable normal form. Then I could feed the output of that into another algorithm that brought simple algebraic equations into a normal form.<p>It&#x27;s not a way I&#x27;ve seen much programming done outside of niches in academia, but it was extremely powerful.
评论 #26360198 未加载
评论 #26359373 未加载
centimeter大约 4 年前
One problem with CAS systems in general is that they either make restrictive assumptions about the types of algebraic objects, or they require you to provide extremely detailed type information yourself, beyond that which most people are capable of explicitly expressing. There are so many ambiguities and domain-specific assumptions people make when they perform algebraic manipulation that only a very small fraction of people are actually equipped to express. This is especially problematic if you mix multiple kinds of algebraic extensions - for example, I’ve had a hard time getting CAS systems to correctly deal with functions over tensors over Clifford (sub)algebras.<p>I think the only way you could get something like that to work would be a type system so aggressive that it would turn off most mathematicians, who tend to have a narrow understanding of type theory.
评论 #26359878 未加载
评论 #26360257 未加载
rowanG077大约 4 年前
Computer algebra systems are incredibly useful. It&#x27;s a shame another project is started that&#x27;s not in C. The world is really waiting for a library that can be used in effectively all programming languages.
评论 #26360763 未加载