Goals in language engineering

Federico asked via email

what do you want to achieve using Language Engineering?

Software engineering is a very new discipline, and we are still discovering what is possible, so for me I am trying to learn as much as I can.

I feel language-oriented programming (LOP) #lop as described in A Programmable Programming Language is the next step in language engineering and the next stage in the evolution of programming languages - with the enabling genes quietly evolving in the Lisp and Scheme languages since the 1960’s.

The ‘staged metaprogramming’ of the compiler intermediate layer described by Robby Findler in his PADL keynote at POPL’23 changed how I see compilers: [PADL'23] Modern Macros - General - Racket Discussions

For me the #lang mechanism in Racket is an exciting approach supporting both completely different languages with new syntax and semantics (#lang datalog) or extending the parser of existing languages with reader extensions (e.g. #lang 2d racket/base or #lang at-exp racket/gui, where 2d and at-exp specify reader extensions)

That I get language specific IDE tooling and a fast incremental compiler for free when I use the #lang protocol is a bonus😁. (code typed at the REPL is compiled to native x86 or arm code so quickly people assume it is an interpreter - but people can and do write interpreters in racket too)

A programmable programming language. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. 2018. Communications of the ACM 61, 3 (March 2018), 62–71. https://doi.org/10.1145/3127323
links at ACM access to A Programmable Programming Language - General - Racket Discussions

I’d like to apply my learning to making programming accessible to clinicians and health information workers in a way that is safe - but I’m still pondering the opportunities. (Python was a step in the right direction but is is still inaccessible to too many people)

Best regards

Stephen :beetle:

On Fri, 14 Apr 2023 at 13:15, federico@tomassetti.me federico@tomassetti.me wrote:

Hi,

Ok, this is going to be an hard one.

I would like you to think about your goals: what do you want to achieve using Language Engineering?

Do you want to write a simple parser because your boss asked it?

Do you want to solve an open research problem?

Do you want to adopt a DSL to make your organization more efficient?

Do you want to build your own editor?

Do you want to migrate from some old language to a new fancy language using a transpiler?

Do you dream to concrete a revolutionary programming language?

Is it your goal to use a code generator to automatize the boring bits of your job?

Let us know by creating a new post. Maybe someone will be able to help, maybe someone will have a similar need and you can vent about it together. Who knows what can come out of it if you take a few minutes to share it.

Sometimes it is helpful to stop and reflect on your goals, as it brings clarity to ourselves. So why not doing so inside a community of peers?

Cheers,
Federico

P.S. For these posts you can use the “introduction” category

Unsubscribe | Update your profile | Corso Siccardi 11/BIS, Turin, TO 10122

2 Likes