curayious Language Lab

Human Languages — Method Sketch

Status: planned. This is the reason the repo is split by domain, written down far enough to check that the split is worth having. Nothing here has been used yet. Expect the question list to be wrong in at least two places and to find that out only by doing Korean.

The method that makes the programming side work is not "learn languages". It is:

  1. A fixed question set, asked identically of every language
  2. One constant artifact, built in every language, so the answers are comparable
  3. Mechanical verification, so a claim of "done" is checkable

Question 1 and 2 port over cleanly. Question 3 mostly does not, and pretending otherwise would be the fastest way to make this half worthless.

What replaces logagg

logagg works because it is small, forces every language to reveal the same eight things, and produces output that can be diffed. The human-language analogue is a fixed sentence set — somewhere around twenty sentences, the same twenty every time, chosen so that rendering them forces the language to show its hand:

Sentence forces Reveals
"The dog bit the man." / "The man bit the dog." Word order, and whether it is even load-bearing
"I gave her the book." Ditransitives, case marking, particle systems
"I am eating." / "I ate." / "I have eaten." Tense versus aspect, and whether the distinction exists
"I don't know." Negation — a separate word, an affix, or a different verb
"Are you coming?" Question formation: particle, inversion, or intonation alone
"Three cats" / "three sheets of paper" Classifiers and counters — where CJK diverges hardest from English
Same request to a friend / to a stranger / to your boss Politeness register, which in Korean and Japanese is grammar, not tone
"It's raining." Dummy subjects, and whether the language needs a subject at all
"The book I read yesterday" Relative clauses and their direction
"I think he said she would come." Embedding, reported speech, evidentiality

Each sentence gets: the target-language form, a transliteration, a morpheme-by-morpheme gloss, and a note on what it revealed. The gloss is the part that does the teaching — it is the equivalent of the annotated code walkthrough, not of the program.

Twenty sentences in Korean, Japanese, and Chinese side by side would show, on one page, that Korean and Japanese are structurally close and Chinese is not remotely related to either despite sharing a script history. That comparison is the payoff, and it is only possible because the sentences are held constant.

The ten questions, ported

  1. Origin and family — genetic family, writing-system history, who speaks it and where. The analogue of "what problem was it invented for".
  2. The writing system — the toolchain question. What do you have to be able to read before anything else works? Hangul is a weekend. Kana is a week. Hanzi/kanji is the whole project.
  3. Phonology — the sound inventory, what is contrastive, and what your ear does not yet hear. Tone in Mandarin, pitch accent in Japanese, the Korean three-way stop distinction.
  4. Morphology — isolating, agglutinative, or fusional. What a "word" is. The analogue of the type/memory model question, and about as foundational.
  5. Word order and marking — SOV versus SVO, particles versus case versus position, what is allowed to be omitted. (Korean and Japanese omit almost anything recoverable from context; English omits almost nothing.)
  6. Register and politeness — the analogue of the error model, in that it is the axis that shapes the most output and is taught last and badly. In Korean and Japanese it is inflectional and not optional.
  7. The sentence set — the constant artifact. This is the heart of the track.
  8. How it fails — the errors a competent adult learner actually makes, with a real example of each. False friends, the particle you keep dropping, the tone pair you cannot hear.
  9. Read real text — one real paragraph, annotated. A news lede, a menu, a forum post. Not a textbook dialogue, for the same reason Q9 on the programming side is not a framework tutorial.
  10. What transfers — to the next language. Hanzi to kanji. Korean-to-Japanese syntax. And the harder direction: what the linguistics taught you that changes how you hear English.

The taxonomy axes are different

The programming axes — memory, typing, concurrency — mean nothing here, which is why the site generator scopes the comparison matrix to the programming domain rather than growing extra columns. The human-language axes would be something like:

family · script · morphology · word-order · tone · register-grammar · speakers · distance-from-english

That last one is worth making explicit and honest: the US Foreign Service Institute puts Korean, Japanese, and Mandarin in its hardest category for English speakers, roughly four times the hours of Spanish. Planning as though a track is a few evenings would be the same mistake as the original "a language a week" framing, and worse, because here it is not recoverable by reading faster.

The property that does not transfer

There is no byte-exact diff. Nothing can tell you your Korean sentence is correct the way verify.py tells you the Go output is. That is a real asymmetry and the sketch should not paper over it.

What can be mechanised — and is worth a human/bench/verify.py — is consistency:

That is a linter, not a proof. It catches the failure mode this repo is actually prone to — notes that quietly go incomplete and inconsistent — and it leaves correctness to a native speaker, a tutor, or a good dictionary. Claiming more than that would be the same error as marking the Go track done because the code looks right.

Sequencing, if it happens

Korean first: Hangul is a genuinely excellent writing system that can be read in a weekend, so the writing-system barrier is nearly zero and the grammar — agglutination, SOV, honorifics — gets full attention. Japanese second: nearly the same syntax, so Q5 is largely transfer, while three scripts at once makes Q2 the hard part. Mandarin third, and treated as unrelated to both, because it is: isolating, SVO, tonal, with the writing system as the entire project.

Not started. The programming domain is four tracks in and one of those does not compile yet.