Hacker News new | past | comments | ask | show | jobs | submit login
Semicolon: A language of semicolons (pksunkara.github.com)
286 points by sunkarapk on April 17, 2012 | hide | past | favorite | 101 comments

Hi guys, just wanted to tag along with this thread, because I'm a huge fan of Semicolon! One thing I've always found aggravating though... Those darn semicolons! So I'm creating CoffeeColon, because all these semi-colons are such a hassle. It's probably easiest if I just show you the language in action, rather than going through a long diatribe. So here's my hello world!:

" "

^ Pretty elegant, right?

let's try something a little more complex:

" "

^ As you can see, the goal of this new language is to take the best of Semicolon and just make it more succinct, and to round out some of the minor historical abnormalities that have been dragged along in the language spec for a while now.

So my hope is that you all enjoy CoffeeColon as much as I do. It's just like Semicolon, maintaining it's expressiveness and dynamic nature, with just a little bit of smoothing out of the kinks.


Additionally, I've created a linter that I've named ColonCleaner. I think it'll be a real hit. Just relax and let it do its thing.

This is the perfect opportunity to share Acme::Bleach. From the docs;

The first time you run a program under use Acme::Bleach, the module removes all the unsightly printable characters from your source file. The code continues to work exactly as it did before, but now it looks like this:

        use Acme::Bleach;


Depressingly, I've been told of this being used in production.

Thanks for this! One question -- is " " still global by default or do I still have to declare " " to make " " local?

I prefer staying closer to the metal, but nice work anyway.

FYI: I tried writing a minifier for it, but briefly caused a small quantum singularity to the left of my monitor. CCMin considered harmful.

Elegant? Maybe, but how many semicolons is it compiled?

I always get coffee colon the morning after a night of drinking. Hiyo!

I want to see how a minified version look like.


wow, programming directly in gödel numbers... in brainfuck... in base one... in unicode! i think you win some kind of esolang prize for this one....

Yeah, but how in the world can you debug it?

This used to be a big problem, but now there is this brand new feature called semicolon maps. You should check it out.

Chrome supports source-mapping in 19, as long as the compiler supports it... and it transpiles to JS. ;)

I'm disappointed that the designer of this language has limited himself to just the semicolon (";", U+003B) and the reversed semicolon ("⁏", U+204F). What about the Arabic semicolon ("؛", U+061B) and the Greek question mark (";", U+037E)? They're both perfectly valid options.

(I can understand avoiding the turned semicolon ("⸵", U+2E35), given that it doesn't seem to display properly. Can't be having unrenderable codes in one's language; it could severely reduce readability!)

To remedy this lack, I present to you my own semicolon-derived metalanguage, Hemidemisemicolon. A sample Hello World program follows:

    ؛;⁏⁏;;؛; ؛;⁏;
As you can see, the dramatically increased lexical vocabulary leads to conciseness of expression. This program code compares favourably with the original Semicolon code, and as an added bonus it is also a quine and prints out "FizzBuzz" every three or five years on Douglas Crockford's birthday.

An implementation note: the final semicolons on each line are optional. I was wondering if that was a good idea or not, but I'm sure it won't cause any trouble down the track.

I had this exact thought when the semicolon drama started days ago.

I'm a fan of removing ambiguity in code. I parenthesize when not necessary so that intent is clear (someone in the future will hire a complete newbie to read and "fix" this code.) I want the statement to end here --> ";" and anything else is an error - now the compiler can inform me when a mistake is made. I ask what appear to be the most asinine questions because when you say "smooth ass ride" there's a difference between a "smooth-ass ride" and a "smooth ass-ride."

And as I type all this, I begin to create a connection between all those txtspk hooligans and semicolon haters. Anyway, I'm happy that Semicolon now exists.

Like this kind of thing? The rabbit hole is frighteningly deep. Try the esoteric programming language wiki[1] or Chris Pressey’s site[2]. That ought to get you started.

[1] http://esolangs.org/wiki/Main_Page

[2] http://catseye.tc/cpressey/

Now you can take all the semi-colons from your javascript and re-use them elsewhere! Genius!

I believe this will revitalize the semicolon industry. There were serious sales shortages in the last few years with the rise of languages like ruby, python and even haskell, not needing this resource. In fact several major semicolon foundries were mothballed since the housing crash - the legalese markets were just not there any more, and lack of derivative generation really hurt the suppliers. The latest round of ASI abuse in javascript was hailed by some pundits as the nail in the coffin for the flagging industry, sending it to a niche role for legacy code and industrial/embedded systems support. With the release of this language, some analysts are suggesting a surge in semicolon production, and the commodities markets show q4 semicolon futures at the best they've been in 14 months. Expect to see a large push from advertisers in the form of articles like "why I like semicolon" and "can your language do this with only 5 characters?". Pessimists however are speculating that it is too little to late, and are advising shorts on semicolons in 6-10 hours, after the initial news leaves the front page. One pessimist says "This is just a pathetic showboat effort from a dying industry". Other suggest rumors of lobbyists pushing hard for the DoD to adopt this as the new standard language. More on this story as it develops.

This community is generally fairly dry and to the point, which is a great way to maintain high quality discussions, but I'm enjoying all these fun comments! :)

An astonishingly comprehensible comment from a regular expression.

A remarkably sincere comment from a politician.

So a politician and a RegEx walk into a bar...

Yes, I think this is the first HN thread I've seen where jokes aren't being downvoted into oblivion. (And I don't think it's terrible! Fingers crossed that nobody tells me to go back to reddit)

So when do you plan on implementing ASI?

There are lots of joke languages that are simply isomorphic to Brainfuck - Ook, Fuckfuck and so on - so congratulations on not just taking the easy way out (changing their eight keywords instantly gives you an interpreter, compiler, sample code, ...)

brainfuck itself is simply a minor variation of P", created back in 1964.

And I thought Reddit had a problem with tired memes..

Shouldn't this language be white-space insensitive in order to be truly pure as a semicolon language?

Clearly, practicality was chosen over purity; I find the added readability gained by the space separators to be much more pragmatic.

I agree. You should be able to delimit statements with the ! character.

My first reaction was fear of death: http://nethack.wikia.com/wiki/Electric_eel

I'm somewhat disappointed - I expected the implementation to be written using ASI keeping semicolons to a minimum.

While mildly amusing, this whole semicolon obsession that's sprung to the fore this past week is ridiculous. It was silly and inconsequential when it started and it's even sillier now.

Which makes this idea rather snarky in my opinion. All the hating on Crockford who takes the time to sit on the committee rubs me a bit the wrong way. I've been where he is and seen the weird constraints/politics/effort it takes to do standards work, and so I respect that.

In any other context, building what is essentially a Turing machine with a few symbols, might qualify as a clever hack which helps folks step outside their ISO-latin1 mindset, but coming as it does on the heels of this controversy it just feels mean.

Was there that much hating on Crockford? Most of the posts I saw were in support of his position, if not his (probably justified) grouchy attitude.

I find it hard to disagree with him. Eichs has admitted ASI was a mistake, every half-decent JS tutorial states unequivocally "use semicolons"... if you don't want semi-colons, don't use JS.

I find semicolon hilarious. We need to lighten up!

I think we can give the creator the benefit of the doubt and assume that this language was created as a parody of these debates.

most of these debates consists of parody. trolls trolling trolls.

It's trolls all the way down.

Sometimes the only way to escape is to go down into the crevasse.

This is an official announcement.

Please will everybody stop being silly.

We all have serious businesses to run, enabling people to find video of cats wearing mittens, making photographs square, all important stuff. So stop having fun and get back to work, those augmented media experiences wont write themselves you know.

I like Brainfuck better: http://www.muppetlabs.com/~breadbox/bf/

I don't know if anyone has made a DCPU-16 interpreter for it yet!

Seems like a nice companion to Whitespace:


Whitespace is too slow for big systems. The non-implicit nature of semicolon will really allow for prime-time server stacks. I do think though that whitespace will retain its market share on the front end.

So what I hear you saying is that Semicolon is webscale.

My right pinky is gonna get so huge.

This Semicolon language bears more than a passing resemblance to POP-11, the famous AI programming language for popping things on/off a stack!

To this day POP-11 holds the unsurpassed distinction of being the language for writing the most useless programs in the most intriquing way (after machine code, of course).

I'm already way ahead of the curve. I've started writing my scripts without semicolons and I'm getting 100% code compression using even the most rudimentary minifiers. Get with the times, already!

and I'm expecting there should be a post about how this is still better than PHP in 5... 4... 3... 2...


This would only be better than PHP if it also had goto statements.

it seems to have goto.

Indeed it does. Knowing this, re-read my statement ;)


This is the PERFECT place to give a link to my poem, <b><a href=http://www.tonynoland.com/2009/09/ode-to-semicolon.htm>O... to the Semicolon"</b</a>. The semicolon is my favorite punctuation mark.

At that page, you can hear me read the poem, too; be sure to stop by and comment!

better link, http://www.tonynoland.com/2009/09/ode-to-semicolon.html no need for the html and it's .html apparently not .htm

I don't even know how to type an inversed semicolon.

In vim just do (copy and paste it if you don't know how to get the initial ⁏):

   :imap <buffer> l ⁏
and whenever you want an inverted semi, type l. For best effects put that line in your ftplugin directory, in semi.vim (or whatever your autodetect filetype name for semicolon is).

some people like to map j to ⁏ and k to ;, other like to map f to ⁏ and j to ;, but this is all just homerow keeping. I'm a purist, i like to keep the mappings minimal.

So when will Objective-Semicolon and Semicolon.NET be available?

;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;! ;;;;;;;;;;;;;;. ;;;? ;;;;;;;;!?

Can't wait for the Light Table IDE to support this language :P Debugging will be so much easier.

Now we just need an LLVM backend.

It's nearly a rudimentary FORTH.

Silly as may be, could be interesting to replace the goofy ; stuff with sensible keywords and have a nice, simple language to work with.

@fat and @douglascrockford, the HN community is now satirizing both of you. It's time for you both to do the right thing; add the semicolon to the bootstrap-dropdown.js code and change JSMin to support the original edge case.

bootstrap was changed to avoid jsmin's bug before the ticket was even filed, and crockford added the missing operator cases in jsmin several days ago.

Surely, that should be add all the semicolons to bootstrap-dropdown.js?

No. Twitter has every right to implement their Bootstrap code as they see fit.

But it is just common courtesy to make small accommodations for people who are having difficulty using the code that Twitter has so generously released as open source.

This certainly takes things further than my simple SemicolonScript idea, nicely done. http://rodhowarth.com/semicolonscript/

I'd like to point out that it's theoretically possible to define a program without semicolons. Which major Semicolon library will be the first to ditch semicolons?

How do you type a reversed semicolon on a Mac?

Press the ⁏ key

Don't forget in vim to

     :set list 
     :set lischars=eol:;
.. Now all newlines will be semicolon'd

hey guys! I think I'm going to start on a semicolon meta-language using this new semicolon IDE I'm writing. ;

My first thought when I saw the site was 'Someone has way too much free time on their hands.'

It'd be better if this were just semicolons and reverse semicolons.

The reversed semicolon appears as a square here (Windows/Chrome).

It depends on your font to support the character.

I hear the author is adding support for rectangular boxes using SVG.

Now the reversed semicolon renders with perfect reversion of normal semicolon.


Cool, why interpret it? Right a compiler for it now :-)

DCPU-16 port anyone?

A path exists from the Semicolon language to Robert Klein's aphorism that "a sigmoidoscopy is just a semicolonoscopy". Someone please do that.

Gives new meaning to "insanely stupid code."

Can you please make this configurable? Instead of ;, we can use : @ * etc or something like language of smiley's :)

Surely someone will implement an asynchronous framework on top of this and we'll have next year's Node.js :P

Does this mean; that when I context switch mind sentence; using semi-colons; I'm also programming? Sweet!

Upvoted because there is no such thing as too many semicolon-related threads :sigh:

would be a joy to code with this drunk

Does it have a working minimizer?

now i'll wait for the logging evaluator. ps: does it compatible with uterus.js?

that's just too much like Python to be funny

looking forward to node;

you'd think a program consisting of "only semicolons" would be easier to type. (no pun intended). reverse semicolon? Not only does my keyboard not have one, but Google doesn't even know what it is (other than a unicode character). apparently it was invented by the unicode group.

next time go back to the definition of semicolon, and you will see why it is made of the glyphs , and .

Then you can make a true semicolon language, by mixing ; and ., (horizontal, if you will).

the first line given as an example program would go from ;;;;⁏;;⁏;;; (which doesnt even render in this browser text box for me atm) to ;;;;.,;;.,;;;

I added a special glyph for the reversed semicolon and used it in @font-face for the website. Can you reload the page and try again?

I meant here on hackernews. Your site looks fine!

I <3 you so hard, Internet.

I feel like it's April Fools day but only in this comment thread.

Applications are open for YC Winter 2024

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact