oxaliq.net/in-progress/beginning-latl.txt

238 lines
11 KiB
Text
Raw Normal View History

(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, before it
gets time to prototyping and to 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")))