Hacker News new | past | comments | ask | show | jobs | submit login
None Programming Language (bitbucket.org/duangle)
169 points by sputnikus on July 19, 2015 | hide | past | favorite | 41 comments

So it's basically an S-expression-syntax wrapper around Terra? So cool.

I really wish more languages picked up S-expressions, because they're easy to machine-generate. I can't count the number of times I've been annoyed at my otherwise favourite languages for not being able to do that.

I like how in NoneLang the file is no longer a unit of abstraction. In that test example, the entire contents of the file is wrapped in an s-expression. This most likely means that entire programs and libraries can be concatenated and still remain valid.

I absolutely love this mixture of a Lisp hosted on Terra so it can take advantage of the optional static typing.

If someone wanted to do something similar for Python they could use Hy and MyPy (would need LLVM backend).

> I really wish more languages picked up S-expressions, because they're easy to machine-generate.

There is an easy way to generate pretty much any AST using quasiquotations. S-expressions are nice, but certainly not mandatory for a full metaprogramming.

do you have more information on that?

Take a look at some of the languages with quasiquotation-based metaprogramming: Template Haskell, Converge, Nemerle.

I did quite a bit of exploration in this area too, here is one of the examples: https://github.com/combinatorylogic/clike

Excuse me, I want to discuss something with you. Please, write on my email lambda.ronin@gmail.com

> I really wish more languages picked up S-expressions, because they're easy to machine-generate.

This could easily be solved using a well-defined AST and a simple s-expression based AST printer/parser. That not many languages do that (one notable exception is Julia) is a shame!

If the language has a large enough community, someone's bound to come up with an AST format and parser/generator themselves.

JavaScript has https://github.com/estree/estree for example. I've written a (very experimental) S-expression syntax for JavaScript around it here https://github.com/anko/eslisp

Looks promising.

But it seems it's still at a very early stage and lacks any kind of documentation so I'm not sure where/how to start hacking.

The game that it's developed for (with?) is insanely original and the author totally got my attention with it: http://www.duangle.com/nowhere

Looks like None is a consequence of the author learning LISP some time ago and developing a new editor for the game - Conspire. It's described in this blog post: http://blog.duangle.com/2015/01/conspire-programming-environ...

Funny thing is that after I learned lisp (clojure in my case) I came up with a very similar prototype for an editor, but never went further than the prototype, given the complexity of getting it done properly..

Anyway, I wish duangle lots of luck with the game, None and Conspire, all these projects are very original and ambitious, my only concern is that author is overstretching himself.

Is there a way I could help ?

If you like IDE experiments you should checkout http://peaker.github.io/lamdu/

And it looks like it is being used to create this, http://www.duangle.com/nowhere - A Psychedelic RPG

Wow this thing really looks exciting, love the concept. Any idea of what the progress is ?

Delayed a year or so by having to switch engines and languages (and building new tools, including this language). Still in progress, but only two developers, so I have no idea what a reasonable ETA would be. They say they're aiming for the end of 2015 on their blog.

Looks interesting, but honestly building your own language to make a game rarely ends well. I know of a lot of failed projects that went this way.

At least with this, the work is open source, so even if the game never comes out, the language has a shot.

This project looks quite interesting I have to say.

It's worth mentioning that Terra (http://terralang.org/) is pretty cool on its own terms.

This is a really neat idea. I'd love to use this but unfortunately there is no documentation and a total of 2 example programs so I have no clue how to actually use it.

My normal approach in this situation is to read the source but the source is completely unreadable since it is meta-bootstrapped with weird internal stuff partly in lua, partly in terra and largely using odd meta-macros in None itself.

Dev here. I promise to make good on that. The language was part of another project, and most of the test cases haven't been moved over yet.

I hope so. I like the game you are developing too. I'd like to support both, but it is the None language that I am interested in most right now. I'll at least buy the game, since it has intrigued me beyond anything in quite a while. Plus you both have infectious personalities :)

An update on this: I added 13 new tests today that should help you get started.

I'm having trouble thinking of a less googleable name for a programming language.

I think that award goes to "S" [https://en.wikipedia.org/wiki/S_(programming_language)]. If you add a "-lang" suffix (the traditional fix for a poorly-named programming language), you just end up with "slang".

Plus it's already taken. http://www.jedsoft.org/slang/

The SQL-style query language called "ENGLISH" used for the Pick operating system by Microdata Corporation.

One conjecture I read was the name was chosen so sales could say "your users can query the database in ENGLISH".

How about C?

Or a language with meta characters in it, such as C++?

Obviously, these two languages are popular now so they are the first hit but you can bet in the early days of the web, it was a bit different.

I understand your point, though, whenever I create a project, I do my best to pick a unique name for that very reason, but overall, history tends to indicate that such decision will not prevent a good product from becoming popular.

Google didn't exist when C and C++ became popular, so naturally it had no effect on their popularity. But you can't say that new languages don't suffer from those problems, because newer languages so rarely reach the level of popularity of C/C++, even when they have easy to search names.

Not altogether unsurprisingly, for me "none programming language" works currently on Google. And while I may be jumping to conclusions, I suspect that the intersection of programmers to whom none appeals and those who think "programming language" is just too much to type into the Google it box to gain access to a tool is probably pretty low. In my experience, there are places where unique search terms really matter and those where it doesn't and developer tools tend to fall into the latter.

There are a lot of them, e.g: B, C, D, E, R, Go, Io.

Also my favorites Verbose(Java has nothing on it) and Intolerant("A language that wipes the user's hard drive if an error occurs").

Go I will give you, and maybe Io. But I actually think "None" is worse than any of your other examples.

C, D, R, and Go are the first links presented in Google search results searching simply on their name.

And do you know why?

1. Because Google already knows that you're a hacker (based on your search history and other info it has on you).

2. Because those are old and famous in their respective communities (ergo page rank and visibility).

3. Because there is actually content for them out there (so it actually has something to present).

Go uses golang for almost anything search-related on the internet.

I did a college project in Icon. You can find all the major docs and manuals by Googling "icon programming language," but any more specific Google queries tend to return results for things like changing the favicon of a website or changing a desktop icon in Windows.

It is, incidentally, a pretty neat programming language. It seems like it had a big influence on Python.

I've always had troubles with Factor. The suggestion is convert searches to "factorlang" but this has middling success.

Swift: http://swift-lang.org/main/

Hint: Not Apple's.

Not programming languages, but Apple's "Pages" and "Numbers" are pretty lousy when it comes to googleablility.

Inaccessibility is sweeping across the Internet but I honestly never thought I would see an introduction to a programming language, written by the creator of that language, include an example in an image. If it's "short", it's short enough to include in text. If it's long, it's short enough to include in text. I know I can (probably) view the example in the source repo, but your introduction is the place to communicate why your idea is a good one. If my screen reader can't read the example, I'm done.


I'm sorry you've been running into trouble. The practical problem was that neither Bitbucket nor github offer a lexer for the language on their site, and the markup doesn't allow custom styling. So I just screenshotted the editor.

I really couldn't go past the title "The Best Programming Language is None". Either the wiki isn't taking the language seriously or someone is really over confident. Who knows, it may be, but stating that when almost no one uses the language is certainly not the way to go.

I'm pretty sure it's a self-depreciative joke, in a "the best programming is no programming" kind of way, or at least that's how I saw it.

Just take it for what it is, don't get stuck on the details.

That said, as someone who really liked the idea of Terra and enjoys Scheme (but hasn't applied it to games yet), this is exciting.

Applications are open for YC Winter 2022

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