pine
pine (パイン, short for 'programming in the net') was a small, PHP-flavoured, browser-based scripting language written by a Japanese hobbyist known only as 'uechi' for their own make-a-program website, mkprog.jp. Its entire surviving public record is one 99 Bottles of Beer program submitted on 12 July 2012 and a single one-paragraph help page captured by the Wayback Machine; the site, the domain and the language itself have since vanished
Created by A Japanese hobbyist who signed the 99 Bottles of Beer submission as 'uechi' and gave http://mkprog.jp/ as their site. No real name, affiliation or location beyond the .jp domain and the Japanese-language documentation is recorded anywhere
pine - the author always wrote it in lower case, and glossed it in Japanese as パイン, “pine” - was a small scripting language created by a Japanese hobbyist for a website called mkprog.jp, where visitors could write and run programs in their browser. Its help page explained the name as an abbreviation of “programming in the net” and described it as “a programming language for making programs on the Internet. It is used to make programs on this site.” That sentence, one 19-line program and a handful of Wayback Machine timestamps are the whole of what survives. The site is gone, the domain is unregistered, the author is known only by the handle “uechi”, and the catalogue that preserved the single program has itself gone offline. This page is therefore less a biography of a language than a forensic report on how a language leaves traces, and on how those traces get garbled once it is gone.
pine should not be confused with the University of Washington’s Pine mail client, with TradingView’s Pine Script, with the PINE64 single-board computers, or with any of the several later hobby languages on GitHub that share the name (see “Not to be confused with” below).
History and Origins
What the record shows
Everything datable about pine comes from 2012. On 12 July 2012 (the catalogue’s “07/12/12”, in the month-first format it used throughout) a user signing as “uechi” submitted a program to 99-bottles-of-beer.net, the long-running German-maintained collection of the song “99 Bottles of Beer” in as many programming languages as its readers could supply. The submission form asked for a language name, an author, a website and an “Info” link; uechi gave “pine”, “uechi”, http://mkprog.jp/ and http://mkprog.jp/pine/help/pine.txt. The site’s volunteer editors - Oliver Schade, with Gregor Scheithauer and Stefan Scheler, according to its team page - reportedly reviewed submissions before publishing them; pine was filed under the category “real language” (the catalogue’s other categories included “esoteric language”) and assigned entry number 2913. By the time the Internet Archive first captured the page, on 27 November 2012, two visitors had rated it, for an average of 2.50 out of 5. Nobody ever left a comment.
The Internet Archive’s crawlers also followed the “Info” link, twice: on 1 September 2012 and again on 28 October 2012. Both times they retrieved the same file, about 1.2 kilobytes long (the Archive’s index lists it as 743 bytes, the size of the compressed record). It is not really a text file, despite its name, but a short Shift_JIS-encoded HTML page with a stylesheet for “MS Pゴシック” fonts, a link labelled ヘルプトップ (“help top”) pointing at ../pinehelp.exe, and one paragraph:
pine(パイン)は “programming in the net” の略で、インターネットでプログラムを作るためのプログラミング言語です。このサイトでプログラムを作るのに使います。
pine is short for “programming in the net”, and is a programming language for making programs on the Internet. It is used to make programs on this site.
That is the only page of mkprog.jp the Archive ever saved. Its home page, the help index behind pinehelp.exe, the program editor and whatever else the site contained were never captured, and no other web archive, search engine or blog is known to hold a copy. A WHOIS query to the Japanese registry on 30 August 2026 returned “No match”: the domain has not merely gone dark but has been released.
What can be inferred
A few things follow from the fragments with reasonable confidence. The domain name mkprog.jp reads naturally as “make program”, and the help text says pine “is used to make programs on this site”, so mkprog.jp was evidently an in-browser programming service: a form into which a visitor typed pine source, and a server that executed it and returned the output - the same idea as the online code-runners that were multiplying at the time, but with a home-made language rather than an existing one. The help system was served by a CGI executable with a .exe extension, which says something about the hosting but nothing that can be stated as a platform claim. The documentation was in Japanese only, the character encoding was Shift_JIS, and the only known user is the author.
Nothing can be said about when pine was written. The 12 July 2012 submission is a latest bound on its creation, not a date of birth, and it is entirely possible that the site had existed for some time before uechi decided to advertise it on 99 Bottles. But nothing supports the year 2004 that appears against pine in derived language lists; the earliest evidence of any kind is from 2012, and 2004 is most plausibly a re-cataloguing artifact of the sort documented on this site’s hackMongo page, where a mid-1990s language acquired a spurious “2010” in the same way.
Design Philosophy
The one sentence of stated intent - a language “for making programs on the Internet” - places pine in the tradition of languages designed to be typed into a web page rather than installed. That tradition imposes its own design pressure: the syntax must be learnable from a short help page, must tolerate being typed into a <textarea>, and must be executable safely by a server on behalf of strangers. The surviving program is consistent with all three. It uses no declarations, no types, no imports and no I/O beyond print; its syntax is the lowest common denominator of C, PHP and JavaScript that anyone who had seen any of those languages could write from memory.
Whether uechi had further ambitions - functions, a standard library, persistence, a community of mkprog.jp programmers - is unknown, and it would be dishonest to invent a philosophy from a single program.
Key Features
The complete surviving corpus
Here is every line of pine known to exist, exactly as published on 99-bottles-of-beer.net in July 2012:
| |
(The program, incidentally, has the plural slightly wrong: it prints “1 bottle of beer” correctly but also “99 bottle of beer”, because ary[0] and ary[1] are singular for every verse. That is a property of the sample, not necessarily of the language.)
What the program reveals
Reading the program as a linguist would read an inscription, the following features of pine can be stated with confidence:
| Feature | Evidence in the program |
|---|---|
Statements end with ;, including after a } that closes a block | }; closes both the if chain and the for loop |
| Variables are created by plain assignment, without declaration or sigil | i=99;, str="no more"; |
Arrays are indexed with [ ] from zero and grow on first assignment | ary[0] … ary[3], swary[0], swary[1] with no prior declaration |
| String literals use double quotes and C-style escapes | " bottle of beer.\n" |
Strings are concatenated with ., as in PHP and Perl | i.ary[0].i.ary[1]… |
| Numbers convert to text implicitly in concatenation | i.ary[0] and (i-1).ary[3] |
| Parenthesised arithmetic can appear inside a concatenation | .(i-1). |
C-style for(init; condition; step) with -- decrement | for(i=i;0<=i;i--) |
Comparison with == and <=, the latter written Yoda-style | i==1, 0<=i |
if / elseif / else with braces; elseif is one word, as in PHP | }elseif(i==0){ |
Output through a print(...) call | print(...) |
| Tab indentation is accepted (so whitespace is insignificant) | the body lines |
The for(i=i; …) idiom - initialising the loop variable to itself because it was already set - hints that the for header may have required an initialiser expression, but a single instance is thin evidence and it may simply be a stylistic quirk.
Equally telling is what is absent. There are no function definitions, no var/let/$ markers, no semicolon-free lines, no comments (so the comment syntax is unknown), no string-formatting function, and no sign of anything functional: no first-class functions, no recursion, no immutability, no expression-oriented constructs. The “Functional” paradigm attached to pine in some catalogues is not supported by the only pine program in existence; the program is straightforwardly imperative.
Family resemblance
The dot concatenation operator, the elseif keyword and print are the fingerprints of PHP; the brace-and-semicolon skeleton, == and i-- are shared by C, JavaScript and PHP alike; the bare, undeclared, dynamically created variables and arrays are what a designer arrives at when the goal is a language that can be typed into a web form without ceremony. It is reasonable to describe pine as PHP-flavoured. It is not reasonable to say more, and this page records PHP as an influence only in that limited sense.
Evolution
There is no evolution to record. No version number, changelog, release or second program has been found. The help page captured in September 2012 was byte-for-byte identical when captured again in October 2012, and the language’s only external footprint, the 99 Bottles entry, was never updated, commented on or given an alternative version in the twelve years of snapshots (2012 to 2024) that exist for it.
Current Relevance
pine is extinct in the strict sense: there is no implementation anywhere. It was never distributed as a download or as source code, so when mkprog.jp went offline the interpreter went with it, and the lapse of the domain registration means there is no longer even a server to come back. The Internet Archive holds the two captures of the help page and roughly two dozen captures of the 99 Bottles entry, the last from November 2024; those files are the entire archaeological site.
As of 30 August 2026 - the date the research for this page was done - the situation has become slightly worse, because 99-bottles-of-beer.net itself no longer resolves. The Wayback Machine captured the live front page as recently as 8 May 2026, and by 30 May 2026 the domain was showing only a hosting provider’s placeholder page, so the outage dates from mid-2026 and may be temporary, but for the moment the only copies of the only pine program are in the Archive. Anyone wishing to cite it should use the archived URL given under Further Reading.
The name, meanwhile, has been thoroughly overwritten. “Pine” now means TradingView’s Pine Script to almost everyone who searches for a “Pine programming language”, and several unrelated hobby compilers named Pine have appeared on GitHub since 2015. None of them has any connection to uechi’s language, and none of their authors is likely to have known it existed.
Why It Matters
pine matters as a specimen. It is a near-perfect example of a class of language that programming-language history mostly ignores: the private scripting language written by one person for one website, documented in one paragraph, and used - as far as anyone can tell - by its author alone. Thousands of such languages must have existed in the 2000s and 2010s; this one happens to have left a trace because its author took ten minutes to submit a 99 Bottles of Beer program.
It also matters as a cautionary tale about provenance. Between 2012 and 2026 the record of pine passed through at least three hands: the author’s own help page (Japanese, accurate, minimal), the 99 Bottles catalogue (accurate but sparse: a name, a handle, a date, a link), and the derived language lists scraped from that catalogue, which somehow acquired a first-appearance year of 2004, a paradigm of “functional” and a category of “academic”. Each of those three attributes is confidently wrong or unsupported, and each is exactly the kind of plausible-looking metadata that a later compiler of a language list would copy without checking. The two surviving artifacts, one of a single paragraph and one of nineteen lines, are enough to show this - but only just. Had the Internet Archive’s crawler not followed one “Info” link in September 2012, there would be no way to know what pine was at all.
Not to be confused with
- Pine (mail client) - the University of Washington’s text-mode e-mail program, first written in 1989, announced in March 1992, and frozen at version 4.64 when the university announced in 2006 that development had moved to Alpine. Its editor, Pico, gave its name to the unrelated Pico teaching language covered on this site.
- Pine Script - TradingView’s language for charting indicators and trading strategies, introduced in the 2010s (secondary sources say 2013) and now at version 6. Essentially all current search results for “Pine programming language” refer to it.
- PINE64 - a maker of ARM single-board computers and devices, not a language.
- Later GitHub projects named Pine - among them a natively compiled ML-like language (repository created May 2015), a C++ implementation of a “pine programming language” (February 2018), a Rust-inspired type-checked language (December 2018) and an x86-64 compiler-construction exercise (July 2018), plus “pine”, a runtime environment for Elm, and a Haskell game framework of the same name on Hackage. All post-date uechi’s language and none refers to it.
- Pico - the VUB teaching language whose page on this site sits alphabetically beside this one; no relation.
Further Reading
- The archived 99 Bottles of Beer entry:
http://www.99-bottles-of-beer.net/language-pine-2913.html, as captured by the Wayback Machine on 27 November 2012 (web.archive.org/web/20121127202214/…) and on roughly two dozen later dates up to 9 November 2024 - the only public pine program - The archived help page:
http://mkprog.jp/pine/help/pine.txt, captured 1 September 2012 (web.archive.org/web/20120901203233/…) and 28 October 2012 - Shift_JIS HTML, the only surviving documentation - The archived 99 Bottles letter-P index (2013), which lists “pine | uechi | 07/12/12” between Pilot and PiXCEL, a few rows after Pike
- This site’s pages on hackMongo and GWScript, two other languages whose public record consists almost entirely of a 99 Bottles of Beer submission, for the pattern of catalogue-induced date errors discussed above
Timeline
Notable Uses & Legacy
mkprog.jp
The only place pine ever ran. The help page describes pine as 'a programming language for making programs on the Internet' that 'is used to make programs on this site', which, together with the domain name (evidently 'make program'), indicates an in-browser service where visitors typed pine source into a form and the server executed it - the same model as the online code-runners of the same period. The server-side components were CGI executables such as pinehelp.exe. Nothing is known about how many people used it
99 Bottles of Beer, entry 2913
The complete surviving corpus of pine: a 19-line program that prints the song, submitted by uechi on 12 July 2012 and rated 2.50 from two votes. It is the only pine program anyone outside mkprog.jp is known to have seen, and it is reproduced in full on this page
Programming-language catalogues
pine's afterlife is as a row in language lists compiled from the 99 Bottles of Beer catalogue. Those rows typically carry a first-appearance year of 2004, a 'functional' paradigm and an 'academic' category, none of which can be traced to any source; the record of a hobby web-scripting language of 2012 has been rewritten by re-cataloguing