237 lines
11 KiB
Scheme
237 lines
11 KiB
Scheme
(article
|
||
(h1 "beginning work on LATL")
|
||
(p
|
||
"a little introduction to a project i started thinking about in early 2020,
|
||
as i was learning how to do web development and wanted to try my hand at
|
||
combining some hobbies")
|
||
(p (a ((href "#the-point")) "skip the story and get to the point"))
|
||
(section ((id "the-story"))
|
||
(hgroup
|
||
(h2 "what even is this?")
|
||
(p (em "a story of linguistics and hubris"))
|
||
(hr))
|
||
(p
|
||
"so, when i was a wee little child, i discovered language. like, most
|
||
wee little children discover language, but some wee little children
|
||
get given the lord of the rings when they're ten or something and get
|
||
into the narrative and the characters, sure. but those appendices....
|
||
there's .. a language here? called quenya? and it's written in this
|
||
script? called tengwar? and there's a related language, sindarin? and
|
||
this tolkien guy just made all this up? ")
|
||
(p
|
||
"so, i did the precocious kid thing and said to myself \"if this dead
|
||
british weirdo (who's like really into the concept of royalty) can
|
||
make a whole new language, then surely i can too\"")
|
||
(p
|
||
"i did not, in fact, make a language. i made a relex of the language
|
||
i already spoke (my own peculiar idiolect of u.s. english,) but we all
|
||
gotta start somewhere" )
|
||
(p
|
||
"for a long time the internet to me was mostly "
|
||
(a ((href "https://listserv.brown.edu/archives/conlang.html"))
|
||
"the brown university conlang listserv.")
|
||
" here i learned about different phonology, what the heck
|
||
morphosyntactic alignment is, diachronicity and how different
|
||
languages can be related. i got exposed to awkwords and sca2 (tools
|
||
for generating words and modeling changes to those words.) but i
|
||
never interacted with ppl much. i was a kid and the ppl in there
|
||
really knew their stuff, and i never much felt comfy with the idea
|
||
of being just "
|
||
(em "in public") " on the internet like that")
|
||
(p
|
||
"anyway i got better at making languages and learning about how
|
||
language works, and it's just been a (sometimes more consistent, at
|
||
times less) hobby of mine for most of my life")
|
||
(p
|
||
"flash forward to a few years ago, i'm working on a language that has
|
||
turned into the passion project that i've spend the majority of my
|
||
conlanging on and i'm getting frustrated with my tools. other
|
||
conlangers have made some really cool tools that i've used forever,
|
||
but i wanted to change my workflow. i wanted to do more complex,
|
||
phonological-feature-aware, sound change rules; i wanted diachroinc
|
||
tooling for morhposyntactic bits of my languages; i wanted a tighter
|
||
feedback loop between defining some changes, or lexical items, or
|
||
whathave you, and seeing the results; i wanted to see how a
|
||
derivational pattern at one stage in a parent form of a language
|
||
branches out or collapses into different derivational patterns in a
|
||
child language")
|
||
(p
|
||
"all was not well in my conlanging")
|
||
(p
|
||
"i would need to " (strong "do some programming"))
|
||
(p
|
||
"the thing is, i had just learned javascript. i had built a few
|
||
little toy web apps, and i was not ready to execute on a vision
|
||
for a multi-purpose conlanging tool that was beginning to take shape in my head")
|
||
(p "i tried anyway")
|
||
(p "and i made "
|
||
(a ((href "/settled/1"))
|
||
"a bad first draft of a sound change tool"))
|
||
(p
|
||
"there's an e-bnf grammar in that project somewhere! the hubris i
|
||
had then, to think i could make a little javascript-backed
|
||
language tool with all of the bells and whistles i needed! with
|
||
the knowledge that i had then! (or more accurately, didn't have)")
|
||
(br)
|
||
(p "but now..."))
|
||
(section ((id "the-point"))
|
||
(hgroup
|
||
(h2 "reviving this project")
|
||
(p (em "whatcha gonna do sorrel?"))
|
||
(hr))
|
||
(p "i'm still not ready")
|
||
(p
|
||
"but at least, today i'm forgoing bells and whistles for
|
||
execution models. core abstractions. experience using "
|
||
(a ((href "https://racket-lang.org"))
|
||
"a (programming) language-oriented programming language")
|
||
" maybe. there's a lot to think about")
|
||
(p
|
||
"so, i'm going to try reviving this project. or, more accurately,
|
||
reimagining this project. from the little sound change tool that
|
||
was merely an unusably buggy iteration on tools that other
|
||
conlangers had executed better, to a more robust environment for
|
||
conlanging. one which gives language nerds the power to solve
|
||
all of their language nerding problems in one runtime, with an
|
||
extensible and reflective interface. and which is written in such
|
||
a way, with the appropriate abstractions, that lanuage nerdy
|
||
hackers can hack their own tools on top of it")
|
||
(p
|
||
"and i'm going to be doing "
|
||
(a ((href "https://www.recurse.com/"))
|
||
"a hecking hacking retreat")
|
||
" about it. i'll spend some full-time programming days making a
|
||
goofy little thing for goofy little language nerds surrounded by
|
||
goofy programming nerds doing whatever rad things they happen
|
||
to be getting up to when i happen to be there")
|
||
(p
|
||
"like many of the communities i am a part of, i am a quiet part of
|
||
the conlanging community. so, we'll see how this goes. maybe it
|
||
is only ever something of interest to me and the conlangers i
|
||
interact with in meatspace. maybe it only teaches me some things
|
||
about designing and building a tool of the type that i'm designing
|
||
and building. hoooopefully it is helpful in a way to other
|
||
conlangers such that it evolves beyond what i could do on
|
||
my own (cause i ain't no whiz kid 10x programmer)")
|
||
(p
|
||
"but that's all me getting ahead of myself (as is often my wont.)
|
||
first! to pack for the trip!"))
|
||
(section
|
||
(hgroup
|
||
(h2 "packing for the trip")
|
||
(p (em "a biggg heap of things to expand"))
|
||
(hr))
|
||
(p
|
||
"i'm just gonna fly right through these. there's going to be a lot
|
||
to read up on, to explore, to think and talk through, to build
|
||
toy versions of before it gets time for larger prototyping and
|
||
building a workable tool. so, here's the very start of the
|
||
thinking-in-public. each of these little thoughts is going to get
|
||
at least it's own writeup (if not several) and i'll update with
|
||
additional sections and links to the writeups as i go. a note: it
|
||
would be impossible for me (and probably most ppl) to create the
|
||
full vision in the time i'll be working on it fulltime")
|
||
(section
|
||
(h3 "notes on the goals")
|
||
(p
|
||
"it's good to have goals! to define what it even is yr tring to
|
||
do. so here's my attempt. my goal is to create a foss+ working
|
||
runtime that *can* serve as a singular tool for conlangers with
|
||
some basic programming capacity. it should be linguistically
|
||
*theory neutral* to the extant that such a thing is possible.
|
||
it should allow for the definition of all relevant structures
|
||
of a language *in code* and support the construction of grammars,
|
||
dictionaries, text documents and (stretch goal) non-programmer
|
||
friendly tools *from code*. it should support phonological,
|
||
lexical, syntactic, morphological, semantic, etc transformations
|
||
across different 'epochs' be they diachronic or synchronic.
|
||
these transformations should work on transformations, ie
|
||
morphological transformations should themselves be transformed
|
||
by phonological transformations. users of the tool should be
|
||
able to edit their work and see the consequences of their changes
|
||
quickly. hopefully, this can all happen on the web, i guess,
|
||
cause ppl like using their browser as the everything app"))
|
||
(section
|
||
(h3 "notes on existing tools")
|
||
(p
|
||
"i'm going to talk a bunch about existing tools made by
|
||
conlangers or made for professional linguists and used by
|
||
conlangers or just yr regular old spreedsheets and such. i'm
|
||
going to be doing some research about how conlangers do their
|
||
conlanging, lest this truly be a just-for-me type project"))
|
||
(section
|
||
(h3 "notes on primitives")
|
||
(p
|
||
"i think some interesting things start to bubble out of some of
|
||
those goals up there. like the idea of supporting a bunch of
|
||
different kinds of transformations that should themselves be
|
||
transformable. the primitives we're working with have to work
|
||
below the level of \"lexeme\" or \"phoneme\" to have something
|
||
abstract that can apply to both. i'm not going to get into
|
||
specifics even a little bit at this point-you'll have to stay
|
||
tuned for more"))
|
||
(section
|
||
(h3 "notes on execution model")
|
||
(p
|
||
"this is going to be the crunchiest stuff to think about. i'm
|
||
going to make some arguments for some things that (it is my
|
||
belief) fall out of these goals. things like dynamic typing.
|
||
things like reflectivity (this is sooo important it gets its
|
||
own section.) things like lazy evaluation (because languages
|
||
are big and sometimes you only want to look at a subset of a
|
||
language.) there's also some hypothetical notions that will
|
||
require some experiments to determine applicability to the
|
||
project. i'm just going to list them as questions and not
|
||
expound upon or defend their existence as questions here:
|
||
propositions as a means of combination? propagation networks
|
||
as primitives?"))
|
||
(section
|
||
(h3 "notes on reflectivity and interaction")
|
||
(p
|
||
"this is so important! i want conlangers to use this tool to
|
||
iterate and that requires ~something like a REPL~ in a
|
||
dynamic environment. my dream is to have a bidirectional
|
||
flow of information; whereby a user of the system can define
|
||
some rules about their language, evaluate those rules on some
|
||
data in an interpreter, inspect those data, modify those data
|
||
and run the interpreter such that it produces possible rules
|
||
that would yield the new result. wether or not that experience
|
||
results from the project, users should be able to rebind
|
||
anything their project needs *at runtime*"))
|
||
(section
|
||
(h3 "notes on portability")
|
||
(p
|
||
"as the project develops i will have to give some thought to
|
||
how to make it available to conlangers with different kinds
|
||
of computation experience. the ideal would be for a full
|
||
featured web implementation that interoperates with hosted
|
||
implementations, but we'll see"))
|
||
(section
|
||
(h3 "notes on the substrate")
|
||
(p
|
||
"not a lot to say here. i will begin this project in racket
|
||
because i have some familiarity with it and it is
|
||
specifically built for developing languages. i will be using
|
||
other tools to explore other aspects of the project and may
|
||
ultimately move away from the racket ecosystem, but a girl
|
||
has gotta start somewhere")))
|
||
(section
|
||
(hgroup
|
||
(h2 "about the name")
|
||
(p (em "it's pronouced ˈlæ.ɾɫ̩"))
|
||
(hr))
|
||
(p
|
||
"i don't know dude, naming things is hard. it's a working name,
|
||
it works good as an extension. "
|
||
(code "my-conlang.latl") "anyone?")
|
||
(p
|
||
"i also just like syllabic laterals? they sound neat to me. the
|
||
official initialism is " (u "l") "inguistic " (u "a") "nalytic "
|
||
(u "t") "ransformation " (u "l") "anguage, but it also double
|
||
entendres to " (u "l") "ower " (u "a" ) "nterior " (u "t")
|
||
"emporal " (u "l" ) "obe, so that's just kind of fun.")
|
||
(p
|
||
"and the l means there can be lambda iconography-this is crucial
|
||
for a new computer project. [ˈλæ.ɾɫ̩] as a typographic image is
|
||
so perfectly specific to the kinds of things i dream about.")
|
||
(p "maybe it'll have a different name some day, idk")))
|