|
|
|
|
|
by al2o3cr
3305 days ago
|
|
Isomorf seems like a great way to write Isomorf code in many languages, in much the same way that you can "translate" Lisps to any language by writing a tiny interpreter. If you can push one button and get either Haskell or Javascript, either weird Haskell or weird Javascript is likely coming out. Further, watching that video I was reminded of using the Equation Editor in Word long long ago. Frightfully un-ergonomic pixel-fiddling ("no, I meant put the insertion point INSIDE that expression!") compared to entering the same formulas boring-ASCII-style in LaTeX. For example we will get structured version control. No need to have something like git tracking lines in files.
If there's "no syntax", what exactly is this showing diffs of? ASTs? "We will get" is handwaving a lot of R&D here, even before you get to "how can Programmer A communicate about a diff to Programmer B when they read the code with different syntax?"I don't see a huge difference between things like "tests embedded in metadata" and "tests embedded in comments"; they're both blocks of associated bytes that tooling is responsible for interpreting. Many of the examples you're describing are entirely possible with things like static analysis, annotations, etc. The difference is that in order to get them we didn't have to throw away EVERY tool we were using and start over. Bootstrapping a new non-text environment would be a substantial effort, and doing it without ending up in the same spot as M-expressions (where an intended for-machines-only representation displaced the more-complex planned notation) would be even harder. I'd recommend checking out some of Joe Armstrong's stuff - he's been pondering the "global registry of functions with unique name" thing for a couple years. |
|
The changeset still has a textual representation.
So the diff could be like a webpage that is showing:
On 5 June 2017 John Smith authored the following changeset:
- Added new function that calculates sum of given numbers (click to view)
- Removed function called "old calculate sum"
The program is not the syntax the syntax is just a representation of it.
So if I have added a new function we can both look at the diff.
We will both see that I have added a function.
We could both choose to view the body of the function in the same syntax, or you could configure your editor to show it in a different way. In the same way that you could configure the font size or the colour scheme.
The point is to reduce the importance of things that are not inherently part of the domain and give that importance to the problem/domain itself.
So you could view a "number node" like "5,000,000" and I could view it like "5_000_000".
I could view a function definition like "declare function named blah" you could view it as "def fun blah".
Because we are still looking at the exact same thing it makes no difference in the result of the program.