I did this while Applejack had more than 1.I sang " 'Applejack' jugs of cider on the wall, 'Applejack' jugs of cider," Applejack got one less.

When Applejack had more than 1, I sang "Take one down and pass it around, 'Applejack' jugs of cider on the wall."In the end, I did this instead.I sang "Take one down and pass it around, 1 jug of cider on the wall.1 jug of cider on the wall, 1 jug of cider.Take one down and pass it around, no more jugs of cider on the wall."That's what I did.

In the end, I did this instead.I sang "No more jugs of cider on the wall, no more jugs of cider.Go to the store and buy some more, 99 jugs of cider on the wall."That's what I did.

That's about Applejack's Drinking Song with Applejack!

Your faithful student, Twilight Sparkle.

P.S. Twilight's drunken state truly frightened me, so I couldn't disregard her order to send you this letter. Who would have thought her first reaction to hard cider would be this... explosive? I need your advice, your help, everything, on how to deal with her drunk... self. -Spike

I know the above is probably the worst way to implement 99 Bottles of Beer in the world, but I tried to keep it in a way that remotely resembles a letter to Princess Celestia.

For the name of the language, I humbly suggest... "Friendship Reports." With the actual period. (Abbreviated: FR., read "Ef Ar Dot.") Because dots are obviously important. You'll understand if you have played EVE long enough.

=> "Today I Learned..." : Main() function. Takes no arguments. May be omitted for letters without lessons(functions).=>=> "an important lesson about friendship." : Generic opening statement.=>=> "<comment>": Opening statement with comment on the entire letter(code). Everything written after "Today I Learned..." is considered a comment until the next period.

=> When <var> had more than <value> : if <var> > <value>=> I did this while <var> <comparison> <value> : for (<var> <comparison> <value>)=>=> That's what I did. : General closing statement for all at"I did this while" and "When" (while / if) statements.

=> Did you know that <var> is/likes (the <type>) <value>? : Assign value with enforced type.

=> P.S. : Text comment, as in // .=> By the way, <content>.: In-line comment with <content>. Comment ends at next period. (Similar to /* */ in C++.)

Ver. 0.01A - Modified "if" statements as "When," as per croaklieuhunt's input.Ver. 0.01B - Added "That's what I did.", general closing statement for all "When" and "I did this while" statements.Ver. 0.02 - Decided on main() function. Updated "Hello World!" program to make sense. Updated description with function definition. Updated description for performing a single method.

Sup, bronies! So I find that this is an original source of material for the language, so I feel it's my duty to put this here. I've made the language completely usable and many of us are racing to build the best compiler. It's currently defined in a Google doc and even has its own wiki!

Not only is is consistent and unambiguous, but it can still be read as a letter! I hope you guys like what it's become, and feel free to contribute your opinions!

The five lines of code you gave me earlier brought me much joy, more so because they arrived at the opportune moment of the end of today's day court.

You have my gratitude for your contributions to the development of the new cipher, hereby known as FiM++.

May your name be known in the history of logicians that helped Equestria become the nation as it stands today.

Best wishes,Princess Celestia of Equestria."

Oh, I almost forgot. Would you be able to give me access to the first page?While I myself is not much of a programmer, I should be able to write a foreword that details the purpose and quirks of the language. My user name there is SingleCrystal.

The first two sets didn't immediately strike me as code... but for that last one, it was hard to miss the conditional statements. I'm at least glad I could determine that P.S. was your commenting system. I'm an electrical engineering major that hasn't really pursued programming past some basic C (and a hint of Java), but this is really neat!

I'm reading the syntax specification from the Equestria Daily post ([link]) and I'm unsure about one thing. Do you have to close the main function i.e. the "Today I learned" function declaration? I would assume since it's c/java like you need to close the main function with the function close syntax "That's all about <function name>!"

In the first and second examples you should need to close the "an important lesson about friendship" function with "That's all about an important lesson about friendship!". I'm also confused with your if statement with two elses in the second example... I assume you're trying to say "go to the store and buy more cider" when the while loop is finished. If that's true you need to add an end to your while loop and place the last line of "100 bottles of cider" outside the for loop.

In this example you also declare the main function (how to sing applejack's drinking song) but never call your Applejack's drinking song function or do anything with the return (with Applejack implies you're going to return an object of Applejack type).

Therefore the implementation of "100 bottles of cider" should look more like this:

Dear Princess Celestia: Letter One

I learned applejack's drinking song.

Did you know applejack's number is 100?

I did this while applejack's number was greater than 0:

I sang applejack's number " bottles of cider on the wall " applejack's number " bottles of cider ".applejack's number is one less.

If applejack's number was greater than 1,I sang "take one down, pass it around, " applejack's number " bottles of cider on the wall".That's what I did.

Otherwise,I sang "take one down and pass it around, no more jugs of cider on the wall."That's what I did.

That's what I did.

I sang "No more jugs of cider on the wall, no more jugs of cider. Go to the store and buy some more, 99 jugs of cider on the wall."

This is one of the best examples for what ponykind can achieve. Knowing that by now, the programming language is about to be completed, interpreters on their way... Holy shit! A Turing-complete, object- orientated pony programming language? When I first heard about it, I spent a good quarter of an hour laughing hysterically. I will definitely learn this language once it's finished.

Since the syntax of the finalized language would mirror that of Java, the same language Minecraft is written with, Brony programmers would be able to rewrite the entire source code in FiM++. At least theoretically.

I say, go for it! It can either be an independent effort, or a collaboration between the guys who replied below.

The specifications given at Cereal's post is a bit wonky, so this is the list of stuff that has to be addressed to make FiM++ a more usable language:

=> Name? I'd probably say "Friendship Reports".=> Compiled Language? Interpreted Language?=> What will the tense of the key lines be? So far they're all in past tense, which I like because writing as if everything happened before provides the benefit of automatic rubberducking.=> Need a better main() function, such as Today I learned an important lesson about friendship., "an important lesson about friendship" being main(). (Or, if we're using Python syntax, there won't be a need for the main function at all.)=> Need a better way of making function calls.=> Needs basic arithmetic support, i.e. multiplication, division, etc.=> Implementation of printf() or Python print?=> Importing external modules, complete with letter-like language. Language to write external modules.

A few things, firstly, I don't like how you did the statement for the Hello World. I think it'd be better to say something like this: "I said, 'Hello World!' ", (or something like that) but idk, that might just be me. The other thing is the redundancy, I think it's mostly because you're writing this like any other programming code when it could easily be made into a more paragraph-like form, but maybe try using more common identifiers for the functions.

Oh yea, and when you said "That's about Applejack's Drinking Song with Applejack" you probably didn't have to say "with Applejack" again, because it was already connected.

But I love the code as is, or rather, the idea. Hopefully PK can put all our different versions into a full language. ^.^

Thanks for pointing it out! I didn't like that part myself, so I rewrote it based on the only two languages I barely know, C++ and Python. Both are valid as far as specs go, so I'll need your opinion on which you would like.

The bracket for the function will need a bit more attention, as you've mentioned. I'll probably have to fix the function call as well, so that the code actually calls the function to execute.

I learned about testing with a number. Did you know that many is a number minus 1? I did this many times, Did you know that Pinkie Pie likes a number modulo many? When Pinkie Pie liked zero and many had more than 1, I said "Pinkie! 'a number' isn't prime!". That's about testing. That's what I did. Did you know that many had less? That's what I did. When many was 1, I said "Pinkie! 'a number is prime!". That's what I did.That's about testing.

Did you know that Pinkie Pie likes 3?I did this while Pinkie Pie had more than 0. That's about the testing with Pinkie Pie!That's what I did.

Your faithful student, Twilight Sparkle.

P.S. There are still a number of parts of the spec that need to be nailed down, but I think this letter is somewhat correctly written...

ArraysGuess considering them to be a book would be ideal since both are indexed in exactly the same way (suppose FiM++ uses 1 based arrays)

I found a book titled "Numbers" today and it was full of numbers // var int *NumbersOn the 1st page of the book "Numbers" I wrote 9. // Numbers[1] = 9On the 2nd page of the book "Numbers" I wrote what I knew about Applejack. // Numbers[2] = ApplejackOn the 1st page of the book "Numbers" I read about Applejack. // Applejack = Numbers[1]

I used "about" because otherwise it just feels awkward. Oh and I guess FiM could have variables with spaces in them since it would only make sense to write 'Rainbow Dash' rather than Rainbow_Dash in a letter.

CommentsHow about using "Because" for a comment line? It would work really well for explaining weird behavior to the princess that you'd kind of need for a programming language (like destroying something).I tore out some pages out of the book "Numbers" so now there's only 3 pages left because the other pages were ruined.

That looks like a fantastic idea. I was thinking of a "book" as an external module or library, so it's my turn to wrack my brain for more appropriate terms then.

The way I'm thinking of this language is, that each line effectively becomes a sentence and ends with a period, so that the compiler/interpreter would have an easier time reading through the code based on the location of periods. Perhaps the interpreter can read ", because" or Because as a line comment as in //(C++) or #(Python).

You can find my partial implementation of this at [link] . So far, it can only interpret the printing statements, but I can add more easily when I have the time this weekend. you can keep an eye on it at [link] .