234

The Om Programming Language

Would recommend placing example language syntax above the fold. Was tough to have to scroll halfway down the entire site to see any syntax. Nobody cares about the EBNF syntax until they have a feel for the language.

7 hours agopgt

Aren't LLMs supposed to write machine code directly, no more programming languages at all, any day now? Joking aside, programming languages are a good mental exercise. Forth was my first language after assembly. Didn't like the stack juggling and ended up using its macro assembler more and more, it became something else, conventions over code I suppose, like what to keep in registers. Forth (and Unix) got the composability requirement right, the testing of individual units.

3 hours agodirk94018

I'm still waiting to see the first show HN I made a language designed for LLMs to write programs better.

an hour agofud101

It came up a few weeks ago already, can't find the link

an hour agomickael-kerjean

I worked with Jason (creator of Om) at my last job. He's awesome!

7 hours agowillquack

is it his first language design ?

4 hours agoagumonkey

> any UTF-8 text (without byte-order marker) defines a valid Om program.

What is the behavior of a program with unmatched braces? I am not sure a stray `}` would fit any of the defined syntax.

https://www.om-language.com/index.html#language__syntax__

7 hours agoomoikane

That would be parsed as a single operator and evaluated using the following rule:

> Evaluates to the operation defined for the operator in the environment. If none, evaluates to a constant function that pushes the operator, followed by all input terms, onto the output program.

I believe it would simply output itself.

7 hours agoitishappy

Another concatenative-ish one embedded in js .. just for fun - https://github.com/srikumarks/pjs

You may find the "genailang" module fun to play with.

3 hours agosriku

Missing a 'g'!

Omg would have a ring to it.

3 hours agoshevy-java

I confused this with https://github.com/omcljs/om

7 hours agobittermandel

Yeah Om was an extremely widely used Clojurescript library many years ago (maybe still is), and to me that's what this word will always refer to.

7 hours agojb1991

I think Hinduism might have a prior claim.

4 hours agoquesera

[dead]

5 hours agomaximgeorge

[flagged]

8 hours agoesafak

Can you please not post shallow dismissals of other people's work? This is in the site guidelines: https://news.ycombinator.com/newsguidelines.html. They also ask you not to be snarky.

Nasty swipes like this routinely get upvoted, and then we end up with them at the top of a thread, choking out everything HN is supposed to be for. (I've downweighted it now.)

5 hours agodang
[deleted]
4 hours ago

It's clearly a language designed for people interested in programming languages. Plenty of straightforward examples to show what makes this language interesting/different/worth your time.

But if you're incurious about things that aren't immediately practical (which has sadly been a growing number of HN community in more recent years), you will probably not be interested.

In an era when so much "practical" coding can be offloaded to an LLM, I'm particularly interested in seeing languages that are doing something different even if it makes them initially impractical.

7 hours agocrystal_revenge

> In an era when so much "practical" coding can be offloaded to an LLM

I see what you did there with the parentheses.

6 hours agoeinpoklum

Turned them into quotation marks?

4 hours agolgas

I don't think the project wants any "takers" per se. The first sentence describes it as:

> a novel, maximally-simple concatenative, homoiconic programming and algorithm notation language

This is a toy language designed to showcase a novel programming paradigm.

Personally, I like tech demonstrations, so I scrolled down and found the examples section. That's all I was hoping to get out of this interaction.

7 hours agoitishappy

Seems totally appropriate to the project. It’s like going to a GitHub repo and scrolling to the Readme.

6 hours agotravisjungroth

I would at least update body tag to add basic css to make this more readable:

    <body style="width:80%;margin:auto;">
7 hours agocodegeek

There is nothing wrong with the site as it is. The text reflows, so you can size your window to any width that you find comfortable. With a decent window manager this is just a few keystrokes at most.

7 hours agoleephillips

A huge chunk of people don't have, want or care about a "decent window manager" (and many of them are competent developers) and they'll just bail.

3 hours agooblio

Life can be a dream if you don't treat everything as a pitch

7 hours agompalmer

Yeah show me the 5-line HTTP server

8 hours agomeisel

not that kind of language, it does not even come with integer types or "plus" operator by default.. they do give an example of

    define { minutes { dequote choose {minutes} {} = {:} <-[characters] } } { minutes {1:23} }
which does Python's equivalent of

    "1:23".split(":", 1)[1]
or for a more direct translation:

    def minutes(x): 
        return x[1:] if x[0] == ':' else minutes(x[1:])
    minutes("1:23")
7 hours agotheamk

"The Om language is not:

complete. Although the intent is to develop it into a full-featured language, the software is currently at a very early "proof of concept" stage, requiring the addition of many operations (such as basic number and file operations) and optimizations before it can be considered useful for any real-world purpose. It has been made available in order to demonstrate the underlying concepts and welcome others to get involved in early development."

7 hours agoKPGv2

At least it has examples!

6 hours agoamelius

I am always kind of surprised when I go to a landing page for a language and there isn't any actual code. This is one of my biggest complaints about the rust language page, it feels crazy to me that there's no code and I think this is just a ridiculous choice (and I know this has been brought up before).

The old page had a built-in sandbox. Go used to have a more "Front and center" sandbox too but at least it's there if you scroll down https://go.dev/

8 hours agostaticassertion

> I am always kind of surprised when I go to a landing page for a language and there isn't any actual code.

So, you're not surprised that this Om page has an extensive section called "Examples", right? https://www.om-language.com/#language__examples__

7 hours agochriswarbo
[deleted]
7 hours ago

I didn't scroll that far, and I shouldn't have to.

4 hours agostaticassertion

One time, this annoyed me so much that I made a website.

https://anaminus.github.io/langding/

om would fall under "Yes, must scroll".

7 hours agoAnaminus

Fascinating! It almost seems like the more popular a language is the less likely it is to have syntax on the landing page.

2 hours agoitishappy

Popular languages don’t have to sell themselves anymore. No one goes to rust or pythons website to see if they would enjoy the syntax

an hour agoedgyquant

There is code. Small examples start halfway down the page, and there's one 20-line example. Not much, but it's not accurate to say there's none.

It would be helpful to see any kind of motivation for the project though. Anything at all.

7 hours agorobotresearcher

On my phone that code is about 250+ lines down, probably 4-5 screens down.

It basically doesn't exist as far as marketing is concerned.

7 hours agooblio

So it just needs a TOC.

5 hours agojohnisgood

No, it needs a 5 line code snippet above the fold.

3 hours agooblio

There is code, search for 'examples'.

It concludes by implementing a fold:

   define
   {
       [Fold]<- {
           rearrange
           {
               rearrange
               {
                   dequote
                   choose
                   quote Result
                   pair pair pair {[Fold]<-} Function Result Remainder
                   Remainder
               }
               {Result Remainder}
               dequote Function Base <-[terms] Source
           }
           {Function Base Source}
        }
   }
   {
       [Fold]<- {[literal]<-} {} {1 2 3}
   }
7 hours agocess11

great example! as someone who writes a Fold function every day, this explains the power of the language very well. ;)

6 hours agodstanko

As is clearly explained on the web page, this is not a programming language for everyday tasks, it's an early stage proof of concept that can be used to explore how computer science might be expressed in unusual ways.

Implementing fold would be something of a milestone in such a language.

5 hours agocess11

It perplexes me that someone would not have a few cookbook style examples above the fold on a website that describes a novel programming language.

5 hours agowhalesalad

Will never not complain about languages not giving code examples. It’s like writing a charting/UI/style library and showing no examples. Just what?

7 hours agojwilber

You overlooked the examples. They might not satisfy you, but there are examples.

7 hours agorobotresearcher

To be fair, the examples are extremely easy to overlook. They are also, to put it delicately, not the most helpful.

4 hours agodented42

Absolutely agree. But fairness precludes denying the existence of examples.

They are not prominent, but they are in a section with the heading 'Examples'.

3 hours agorobotresearcher

apparently fold example is very helpful to some.

3 hours agodstanko

if it's something you do 100% of the time, is it really adding any information to the world?

7 hours agokeeganpoppen

absolutely does! for a new language that no one has heard of, it is essential that examples make at least a parallel with other languages. providing examples for mundane things is very useful to build the understanding with the reader who hasn't been writing a paper on OM language.

3 hours agodstanko
[deleted]