I think it is kind of interesting that assembly and forth are regular expression tier languages (aside from beefy modern macro assemblers). They can be done by scanners alone. The theoretical top speed of compilation is trivial for these. It really is good enough to get work done. Nobody actually needs to include infinity in the programs search space. The grammar level can be really simple. Even something like java byte code has machine independence.
But optimization and correctness steps of a compiler are really desirable. And that where this dream of simplicity dies. optimization and correctness use a lot of potentially exponential time algorithms, or may not successfully terminate for every problem. They also allow for more intricate grammars, far beyond what a parse tree covers. Languages like C are theoretically much slower due to their lack of expressiveness of these grammars. And that might become even more obvious a few decades from now as more people get into developing optimizations for higher level language compilers.
Then there are neural network based solutions, or solutions that come out of higher math proofs, which have an even higher level infinity to their search space. Everybody wants safe and fast code, but it is impractical to learn all of it. These kinds of optimizations and correctness additions are coming out of bodies of research. And this is also kind of a problem because languages could be made impossible to specify outside of using the compiler as the specification.
@zpartacoos Early compilers were referred to as automated programming. Back in the day, translating mnemonics of assembly to binary was simple enough, but automatically optimizing, or checking a program for correctness, was AI magic. Now it is the only way to code for most problems.
Presently, there is a field called "program synthesis" which is basically compiler engineering with even more automated reasoning. This all part of the symbolic artificial intelligence branch of general AI research.
There are scanner generators. There are parser generators. But why do we avoid semantics generators? What would be a good language to specify this part of a compiler?
Reasoning About Recursive Tree Traversals
https://engineering.purdue.edu/~xqiu/ppopp2021_authorversion.pdf
Commutativity and associativity are some weird properties.
Like a few mathematicians I know like commutative algebra quite a bit more than the non-commutative stuff. Symmetry is nice because it is simple. But the basic element of vector spaces, and grammars, is that they are naturally non-commutative. It is like there is something about non-commutativity that does not scale I guess.
And associativity properties is basically the entire parallel programming research field in a nutshell. (at least the PL side, electronics is different)
Eh, I guess a lot of things are age old algebra with a different coat of paint.
@skells
1a) It could always happen randomly, plenty of inventions are from accidental discoveries.
2a) Being able to change one's own reward mechanisms on the fly is a research area. But most systems do not have that ability, because it is like short circuiting the whole bot. I think it mostly converges down to simpler form. Like where rodents will press a button to get dopamine, and then do nothing else, not even eat food.
3a) Yes. That is often ideal, toy universes and toy goals. For example, classifying cat and dog pictures if given an image. But having no possible actions or goals outside of that space.
1b) not always
2b) sometimes, NEAT and other methods before the deep learning craze commonly used that to their advantage.
@fribbledom and most people became Linux users through Google phones.
@skells It is kind of a metaphysical question if that is possible.
You can have problems that are naturally framed with infinite dimensions or incomplete space. Or it can be like balancing on the head of a pin, there are not a good set of states that transition from balanced and unbalanced.
This last one, if taken to the weirder infinite spaces, has the consequence that there could be a lot of really intelligent behavior that is not learn-able.
https://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
@skells The simple way that I think of it is this:
Everything exists in a multidimensional space. Each move in a chess game, pixels that looks like a picture of a cat, the value and location to sell a product, all follow this format.
Some subset of that space is defined as optimal behavior based on set criteria. Finding that space is learning, being deeper within that space is more intelligent behavior.
This ends up being a kind of problem that can be tackled without thinking about intelligence. But, thinking about how humans and animals tackle this problem can be really helpful too, such as neural networks. Neural networks are really easy to parallel compute, but it was a feat of mathematics to understand how applying back propagation would allow for training several layers of neurons. And the fact that single layer neurons have limitations to what they can learn, is also a mathematical fact.
It is weird how AI has a lot to do with programming language theory. Everything is always blending together in the formal sciences. The actual boundaries between topics are nuanced.
It is kind of like the feeling that math is all one subject, even though to an undergrad something like analysis and algebra might feel miles apart.
@fribbledom It feels like this is the decade for lawyers. Too many legal and social power plays going on in software right now.
@skyblond Being poor is even worse for understanding other people's perspectives.
@256 Woah. There is some memories right there.
@DeveloperMemes I think for openBSD it would actually be randomized, but only once at compile time. Good way to test if your operating system is secure. Probably. lol
@lucifargundam and algebraic geometry is the modern king.
@arxiv_math amazing news. Very cool. 😊
Types are Internal $\infty$-Groupoids. (arXiv:2105.00024v1 [cs.LO]) http://arxiv.org/abs/2105.00024
I am pretty curious about how to use automated reasoning systems to help discover new things, use and verify old ideas, and generally make my life easier.
Current events I try to keep up on
- Math Logic community (The Journal of Symbolic Logic)
- Statistics community (JASML, AoS)
- Algebra community (JoA, JoAG, JoPaAA, SIGSAM)
- Formal Methods community (CAV/TACAS)
Passing the learning curve up to current events
- Abstract Algebra (Dummit, Foote)
- Commutative Algebra (Eisenbud)
- Algebraic Geometry (Hartshorne)
- Mathematical Logic (Mendelson)
- Model Theory (Marker)