Hacker News new | ask | show | jobs
by weiwenhao 982 days ago
I'm the creator of the Nature programming language, and I'm incredibly thrilled to see my project featured on the front page of Hacker News. I've been developing this project in my spare time; initially, I focused on building the compiler back-end, which is something I'm deeply passionate about. That alone took me roughly 3 years of part-time effort. Only in the past year have I started to design and implement the front-end of the programming language.

I'm not one to give up halfway, and even though breaking into the programming language market is exceedingly difficult, I'm still committed to investing my enthusiasm and time into making this work.

The first goal for Nature right now is to reach a minimum viable product stage. The second goal is to "stand on the shoulders of giants"(go/rust). The third goal is to incorporate more innovative ideas and possibilities.

Even if Nature doesn't gain a user base, I will still use it to build interesting things.

3 comments

Hey, that’s a neat story! Genuinely, I’m not trying to be sarcastic with that- but you didn’t answer his question at all.

What’s the point? Your goal is an “MVP stage”- what is your MVP? What are the minimum requisite features that are the core features of the language, and why are they important / better than any other languages, and in what specific ways?

If the answer is just “because I like these syntax/feature choices and i just want to make a language, that’s okay- you’re allowed to do whatever you want on the internet lol- but answer the original question directly and specify it as such.

The goals “get an MVP”, “stand on the shoulders of giants” and “innovate”, mean and say literally nothing- it’s just a smash of buzzwords that says nothing about your intents. They translate literally to “I want to make my thing work”, “i vaguely want recognition for being like xyz things”, and “I want to make it have more things”

What does “make it work” mean? Why does “be popular like rust and go” matter to anyone/what does it mean for your product? Why are you talking about innovating more things when you haven’t even told us what the first thing is?

These questions aren’t meant to be mean / dismissive- you made a programming language, and that’s cool (to me at least!) I wanna know!! If you want to stand on the shoulders of giants, you have to know what you’re doing- or if you do, be able to explain it lol.

This is the first-phase goal for the Nature programming language, as outlined in the first section of the README on https://github.com/nature-lang/nature. To summarize:

- Type system, null safety, generics, and union types

- An in-house compiler/assembler/linker that is not reliant on LLVM and supports compilation for amd64, riscv64, and wasm architectures

- Non-intrusive interaction with C for efficient and high-performance development

- Progressive Garbage Collection, supporting both automatic and manual GC

- Built-in vec, map, set, and tup data structures

- Package and module management

- Function tags, closures, error prompts, runtime stack traces, and coroutines

- Integrated SSA, linear scan register allocation, reflection, and an assembler & linker

We anticipate that these key features will be completed around version 0.7.0, at which point a community-ready version will be released. By "community-ready," we mean that there will be stable and backward-compatible syntactic API support.

https://nature-lang.org/docs/prologue/release-notes Record the core features that have not yet been completed in the version release notes.

Very cool, very ambitious! I will keep my eye on this; good luck!
So zig with a gc once they get off of llvm
I just want you to know this was exactly my reaction.

I am working on a programming language, and I can tell you exactly why I’m bothering to write a whole new language, because it is based on all my frustrations spending my days writing code in other languages.

If this language is in the same space as Rust and Go, but different, even saying that (and how) might make me care about this language a little bit. My own language is compile-to-JS but not the same as TypeScript, Reason, PureScript, etc. I would never make the homepage just be marketing buzzwords. Whether I don’t care if anyone uses it or contributes, or I do care whether people take an interest in it, just being real and direct is the best approach. It feels good when someone understands why I’m doing what I’m doing and maybe cares and wants me to succeed because they also have been frustrated about the same things.

Some people aren’t trying to make something specifically new. They are starting a root beer company to make root beer that tastes like root beer, and one day maybe it will be sold in the local grocery store next to the other root beer, who knows. I always like to know if there is actually something special about this root beer or if someone just likes making root beer.

I apologize for not being clear in my previous statements. As of now, Nature does not even have a version that is community-ready. In my opinion, talking about various ideas and innovations is meaningless and deceptive if the programming language itself cannot be used by the community.

Additionally, my design philosophy is also included in the GitHub README.

ITT people thinking there has to be a point beyond “bc I like it.” Do what you like! This is a cool project.
I don't think many people are against personally motivated projects.

But it's frustrating to hear about a project, but not be able to tell who should be interested. And who it won't ring any bells for.

My take is:

1. There is a lot of personal motivation here. I.e. a productive hobby now, hopes for larger impact later.

2. "Reliable", "Concise", "Open" and the code examples suggest (to me) a collaborative cleanup of the imperative style of coding the author usually employs.

3. So not a strong new take on languages.

4. Despite references to "gaming", "science", "AI", "OS's", "IoT" and "WEB", there isn't anything I can see that brings anything special or breaks ground in those areas. Other than the "cleanup" aspect.

If there are aspects I am missing regarding point 4, it would be nice to have them described.

My suggestion would be to (in addition to the cleanup, all for that!), focus on one and only one application area for now. Find something really special to bring to it. Make these new capabilities so convenient to use that within some modest but interesting/fun scope the language has no competition. Then define the "MVP" around that, instead of lists of general programming features and areas.

Something to consider to get some attention: start a Nature leaderboard for Advent of Code in December. Lots of people who participate in AoC are looking for a new language to learn while solving each day's problems.
What was the main problem you were trying to solve with Nature? What did you find missing in other languages that motivated you to create Nature?
After the MVP (Minimum Viable Product) version of Nature is released, I plan to use it for game engine and game development. But that's probably not the answer you were looking for.

I have experience with many programming languages like PHP, Python, Golang, JS, C, Scheme, etc. Each of these languages has its shortcomings that bother me. Taking C as an example, it lacks package management and doesn't support generics. In contrast, Nature is designed to improve upon C by featuring generics, package management, and null safety, among other things.

Moreover, what drives me is simply the joy of the process.

I’m curious, did you try Swift? It’s has most (but not all) of your goals AFAICT.
It might be interesting to write up comparisons of Nature to each of the dominant languages.

My impression is you want to make something as welcoming as Python but more expressive and safer. Which, if true, is indeed a worthy effort.