Programming as Gaeilge
This might appear a little left-field, but it's always surprised me how the morphology of the Irish language lends itself to programming constructs.
Before I continue, I should point out the inspiration for this post originated with Michal Měchura's excellent article here which touches on the same thoughts
The grammatical quirks of Irish
Irish or Gaeilge is an insular Celtic language spoken in, well, Ireland. From a grammatical perspective, it has some unusual traits that set it apart from other modern Indo-European languages.
Specifically its use of inflected prepositions, initial consonant mutations and verb-subject-object word ordering.
While these linguistic aspects can be difficult for language learners, they have certain analogies with programming.
The Copula - An Chopail
Irish in fact, has two verbs that correspond to the English "to be". One of which is called, "the copula" or is.
A copula is defined as a word that connects a subject and predicate in a relationship of equivalence, i.e. copulates
The copula is primarily used to describe identity or quality in a permanence sense. Depending on its usage, it's either termed a classifying copula or identifying copula.
Classification
The classifying copula construction is used to express a "class membership" relation in Irish.
Irish | English |
---|---|
Is dochtúir é | He is a doctor |
Is múinteoir í | She is a teacher |
struct Múinteoir {};
int main()
{
// classification: "í" (subject) belongs to class "múinteoir" (predicate)
// i.e. "í" is an instance of the class "múinteoir"
Múinteoir í;
}
Identification
The identifying copula construction is used to express a shared identity for the subject and predicate.
Irish | English |
---|---|
Is é an dochtúir é | He is the doctor |
Is í an múinteoir an bhean | The woman is the teacher |
struct Identity {};
int main()
{
// "í" identity object
Identity í;
// identification: "an_múinteoir" (predicate) and "an bhean" (subject) refer to same identity
// i.e. both variables point to the same "í" object
Identity *an_múinteoir, *an_bhean = &í;
}
Word ordering - Ord na bhfocal
Irish follows a verb -> subject -> object word ordering:
Verb | Subject | Object | English |
---|---|---|---|
Múineann | sí | Gaeilge | She teaches Irish |
This unique word arrangement can coincidentally be interpreted to a function declaration:
struct Múinteoir {};
// verb(subject, object)
void múineann(Múinteoir múinteoir, std::string teanga) {};
int main()
{
Múinteoir í;
// "múineann" (verb) "(s)í" (subject) "gaeilge" (object)
// word order preserved
múineann(í, "gaeilge");
}
So not only does Irish satisfy the syntax of the programming language, it's also semantically and (almost) grammatically correct. Pretty cool.
To use the correct grammar, it should be "múineann sí gaeilge" using the subject form of the pronoun, sí, rather than the copula form í introduced earlier
Literally translating "múineann sí teanga" would be "teaches she Irish"
Prepositional Pronouns - Forainmneacha Réamhfhoclacha
Prepositions are words such as "with", "for", "at" or "on". Unlike a lot of other languages, these words can be conjugated (sometimes referred to as inflection) in Irish.
So a simple word like "on" can be translated to ar. And for ar we can make compound forms with personal pronouns like so:
Pronoun | On |
---|---|
me | orm |
you | ort |
he | air |
she | uirthi |
us | orainn |
ye | oraibh |
them | orthu |
enum class ar { orm, ort, air, uirthi, orainn, oraibh, orthu };
void cuir(std::string object, ar pronoun) {};
int main()
{
// "cuir" (verb) "agallamh" (object) "air" (pronoun)
cuir("agallamh", ar::air);
}
As Michal Měchura pointed out in his article, Irish is strongly periphrastic. In other words, Irish places greater emphasis on multi-word constructions to convey meaning, rather than using verbs.
This is apparent in the example above, "cuir agallamh air" which literally translates to "put interview on him". Or in proper English, "interview him" in the imperative sense.
Conclusion - An Deireadh
I'm by no means a linguistic savant, so I hope I got all my terminology correct! But I enjoyed exploring how to translate Irish into a very different context.
It's interesting to see parallels between two unlikely subjects. There's probably even more grammatic forms that have equivalency that I haven't discovered yet.