5 ms·
Disclaimer: Author of the language / web page speaking. This one is hopelessly outdated. See https://github.com/c3d/xl https://github.com/c3d/xl for the curren
by c3d 7y ago
Disclaimer: Author of the language / web page speaking.
This one is hopelessly outdated. See https://github.com/c3d/xl https://github.com/c3d/xl for the current state of things. A bit of history of the language here: https://github.com/c3d/xl/blob/master/doc/HISTORY.md https://github.com/c3d/xl/blob/master/doc/HISTORY.md.
Warning: this is currently under heavy repair / refactoring, so Nothing Works™.
An interesting (if old, 2010) application of the language here: http://tao3d.sourceforge.net http://tao3d.sourceforge.net.
Contributions and ideas welcome.
- WesternStar 7y agoSo I was thinking about something similar to this in the sense of a language where syntax was extendable but with making different choices. I was interested in forming some sort of base lingua franca with additional composable dialects that are available per translation unit. Imagine if you could take go know for sure you don't have any concurrency in a section or the memory management section is missing so no worries about memory management. Increasing expressiveness but also reducing cognitive load to the calling code and its interfaces and nowhere else. Want to run very complicated domain specific code and not have the guy who designs the webserver know anymore than what is nessecary to rout it great. Want to add hot code,io, complexity annotations in the code, Great(Obviously this isn't free you need good tooling and to do sampled profiling and for complexity you need to make choices about what code is complex, etc.But if we're dreaming why not dream big.). Metrics,Explicit resource bounds etc. In this context for the things most people would want i.e. concurrency you would have a readily available dialect that fits 80% of use cases which would be infrequently changed. I don't know if that makes much sense in what you have in mind but I did find what you're doing interesting.
- axilmar 7y agoWhat you did there is very cool! I am speaking for both LX as presented in the old link and the new work that you are doing. Personally I have given up creating a new programming language about a decade ago because I realized no matter what language I create, people will not use it, it it comes from a random github page. Also, existing languages cover almost all business needs and while languages like LX provide a lot of improvements, the cost of change seems to be greater than the cost of not having these improvements. As for ideas, what I'd like to see in a programming language is signal-based programming: the execution flow of a program is not 'one instruction after the other' but reactions to signals. A program shall be built by wiring output signals to input signals. I'd also like to see types morph based on run-time conditions. The most fundamental problem of all the current programming languages is that types are too rigid and don't allow for catching all the possible outcomes. For example, a File morphs between a closed file and an opened file, however in current systems any operation can be applied to a file, irrespectively of whether the file is actually opened or closed. I believe that the combination of signal-based programming and type morphing will increase the reliability of programs, leaving only bugs that cannot be proven to be solved due to their nature (aka like the halting problem). I may not be necessarily correct, but I have a strong belief in the above.
- wwright 7y agoYou should check out Idris: https://www.idris-lang.org/ https://www.idris-lang.org/
- heavenlyblue 7y ago>> For example, a File morphs between a closed file and an opened file, however in current systems any operation can be applied to a file, irrespectively of whether the file is actually opened or closed. But not in Rust. As a matter of fact anything based on intuitionistic logic could do that for you (e.g. use-only-once, must-use, etc).
- Shoop 7y agoThe thing you are referring to with open and closed files is called typestate. Check out its implementation in the Plaid programming language: http://www.cs.cmu.edu/~aldrich/papers/onward2009-state.pdf http://www.cs.cmu.edu/~aldrich/papers/onward2009-state.pdf
- codetrotter 7y agoThere was a post here on HN about typestates in Rust too yesterday. For anyone that didn’t see it: https://news.ycombinator.com/item?id=21413174 https://news.ycombinator.com/item?id=21413174
- RossBencina 7y agoSee also: https://edwinb.wordpress.com/2016/10/21/state-machines-all-the-way-down/ https://edwinb.wordpress.com/2016/10/21/state-machines-all-t...
- _bxg1 7y agoMy own realization that I'll probably never do anything on the frontier of language design hasn't killed my interest in designing a language, but redirected it. These days my thoughts drift towards novelty and niche domains. What would be the most interesting way of describing a subset of things? The most fun? The most intuitive? What's a way to break a specific domain down into a vocabulary that lets you populate it while forgetting you're even using a computer? I think there's still a lot to explore even if you aren't shooting for maximum productivity or even general-purpose programming.
- ptrott2017 7y agoHaving played around with XL, Tao3D and Elfe, I have to say there was/is a lot of fun to be had and some very compelling concepts and unique ideas in these projects. Its great to see them mentioned on HN. I found the parse tree approach very educational and its a very nice and powerful alternative to S-expressions. Tao3D was an very quick way to build simple interactive graphics apps and a lot of fun. ELFE has some interesting concepts for distributed computing. While I ended up using Erlang and LISP rather than ELFE it was defintely eye opening in a good way and reminded me of the fun and creativity to be had - - so a huge thank you for the past projects and good luck with the next evolution.
- yiyus 7y ago> I found the parse tree approach very educational and its a very nice and powerful alternative to S-expressions. Do you have at hand a link where I can read more about this? Thank you in advance!
- c3d 7y agoWell, a starting point would be this: https://github.com/c3d/xl/tree/master/doc https://github.com/c3d/xl/tree/master/doc. It's not finished, but it gives you a good idea. For Tao3D, you have https://tao3d.sf.net https://tao3d.sf.net.
- yiyus 7y agoThank you! I was actually looking for something specific about parse trees vs S-expressions. That would be https://github.com/c3d/xl/blob/master/doc/HANDBOOK_1-syntax.md https://github.com/c3d/xl/blob/master/doc/HANDBOOK_1-syntax.... But I'm reading the whole thing now. Very interesting language! I don't see myself using it in production any time soon, but it looks like a wonderful tool for programming languages research. Thank you again!
- dang 7y agoOk, we changed the URL from http://mozart-dev.sourceforge.net/lx.html http://mozart-dev.sourceforge.net/lx.html to the github.com page. If you'd prefer a different URL just let us know. Thanks!
- fluffything 7y agoHows the performance compared to say C++ or Rust ?