Talk:Programming Languages Diversity Project
Add topicHello
[edit]I talked to @Hogü-456 at the WikiCon 2023 in Linz. Now I find the time to write it down. Some time ago, I tried to develop a kind of programming language for professionals with limited IT knowledge. Although it is not open source, I am happy to share some of my experiences with my first domain specific language. Currently I have limited capacity for wiki projects, but I hope this place will be suitable.
After investigating some already existing programming concepts I ended up with some domain specific language (in short: DSL) based on an already existing human-readable data serialization language. I tried to avoid the Halting problem with limiting the DSL to be not turing complete. For my purpose was it ok to lock down the language but for a real programming language it would not work.
Here are some lessons that I have learnt or that have been confirmed for me:
- Involvement of the intended target group(s) is just as important as diverse and interdisciplinary teams
- Exchange of experience with experienced creators of programming languages can be very helpful
- Good theoretical groundwork helps, but clean technical implementation is also necessary
I started with a search for reference books and found the following:
- Parr, Terence; (2010). Language implementation patterns / create your own domain-specific and general programming languages. The pragmatic programmers. Raleigh, NC [u.a.]: Pragmatic Bookshelf. ISBN 978-1-934356-45-6.
- Fowler, Martin; (2010). Domain-specific languages /. The Addison-Wesley signature series. Upper Saddle River, NJ ; Munich [u.a.]: Addison-Wesley. ISBN 978-0-321-71294-3.
It is mainly about designing languages and building interpreters (and parsers too).
I also found it very interesting to look at different kind of programming (visual programming, spreadsheet, text based) and programming paradigms (e.g.: object oriented, imperative, functional).
Maybe the following tools are helpful:
- Eclipse GLSP
- Langium
- the Parsergenerator Antlr and tools
- https://github.com/antlr/grammars-v4/tree/master/cobol85 (tried to be good readable for humans)
- https://github.com/antlr/grammars-v4/tree/master/lisp (compact but powerful)