Not specifically game related, but adjacent. Sonic Pi (https://sonic-pi.net/) is designed for making music specifically with kids in mind, and they might accidentally learn a whole bunch of programming concepts as a side-effect.
It's certainly possible to interpret numbers as types, but it's not particularly common AFAIK, since there are generally more convenient interpretations of arithmetic for a given problem domain (von Neumann sets, Dedekind cuts, IEEE 754 floating point values, &c &c).
Personally, I've always found that the non-rigidity of the complex numbers (i.e. that when considered as a field, they admit a non-trivial automorphism), which requires the introduction of the Re and Im operators (i.e. projection back to the reals) to banish, to be strongly suggestive that the reals have a somehow more "real" ontological status.
I can't say that I specifically learnt COBOL for fun because I did it in 1997 or so in India when the entire Indian IT industry was bidding on a host Y2K migration projects. I only graduated college in May 2000, so I never actually used COBOL to solve any Y2K problems, however, I did figure out that you could use a large number of paragraphs in the SCREEN SECTION to build animation frames and use that to build fun animations. It was tedious though, so I wrote a C++ program to generate the SCREENs for the COBOL program.
Hangul is phonetic, but doesn't have the capability to represent all phonetic sounds of a language. For example, Hindi has 4 distinct letters and consequently sounds for the each of D and T (D: ड ढ द ध, T: ट ठ त थ), which all correspond to the single Hangul letter diot (ㄷ). I have Korean friends who write their names in the Chinese script because they don't have the necessary letters to represent the sounds.
Perl counts from 1900, so the year 2000 was actually stored as 100. You'd get 2 digit years in the 1990s and suddenly 3 digit years after 2000. The solution was to arithmetically add 1900 to the year before rendering. Newer perl functions would handle that internally.
That's a direct translation of struct_tm from time.h.
External declarations, as well as the tm structure definition, are
contained in the <time.h> include file. The tm structure includes at
least the following fields:
int tm_sec; /∗ seconds (0 - 60) ∗/
int tm_min; /∗ minutes (0 - 59) ∗/
int tm_hour; /∗ hours (0 - 23) ∗/
int tm_mday; /∗ day of month (1 - 31) ∗/
int tm_mon; /∗ month of year (0 - 11) ∗/
int tm_year; /∗ year - 1900 ∗/
int tm_wday; /∗ day of week (Sunday = 0) ∗/
int tm_yday; /∗ day of year (0 - 365) ∗/
int tm_isdst; /∗ is summer time in effect? ∗/
char ∗tm_zone; /∗ abbreviation of timezone name ∗/
long tm_gmtoff; /∗ offset from UTC in seconds ∗/
You'll note that tm_year is years since 1900.
While working support at SGI in the late 90s, got a number of support tickets (there was a woman who worked for a government department (NASA?) who was very good at finding them in doing their y2k checks) about dates showing up as `20100`.
COBOL programs will be fine. They use 4 characters just for the year since it's stored as the decimal characters. I was trained in COBOL in the late 90s to work on Y2K migrations. It's done this way so that COBOL programs stored on punched cards are readable (also why COBOL has its line-length limitations).