Show HN: Introducing Nod, a new object-oriented language I'm working on
about-nod.devThis Is Nod
Nod is a new programming language I've been working on for five years. It's a serious effort to design a language that I wished someone else would have invented while I was still working as a professional software engineer.
This is my first post to HN, so hopefully I'm not stepping on any guidelines. It's real news, it's mine, and you can learn more about it on the Nod dev website.
Why I Built Nod
I was a professional programmer/software engineer for almost 40 years. During most of my career, C and its descendants ruled the day. In fact, it can't be overstated just how influential C was (is) on the field of programming. But that influence can also be characterized as burden. Newer C-based languages like C++, Java, C#, and others, are improvements over the original for sure, but backward compatibility and adherence to familiar constructs have stifled innovation and clarity. C++ in particular is an unapproachable Frankenstein. Powerful, yes, but arcane syntax and semantics has raised the barrier of entry to all but the most motivated.
Although C++ was usually my first or only choice for a lot of projects, I kept waiting (hoping) that a viable successor would come along. Something fresh, performant, and pragmatic. Something that broke cleanly from the past without throwing away what worked. But nothing really did. Or at least nothing worth the effort did. So, in 2019, newly retired and irrationally predisposed, I decided to build that fresh, performant, pragmatic language myself. That language, imho is Nod.
What Nod Is
Nod is an object-oriented language designed from the start to be a fresh and practical alternative to the current status quo. The goal is to balance real-world trade-offs in a language that is uniquely regular (consistent), efficient (fast), reliable (precautious), and convenient (automatic). While Nod respects the past, it's not beholden to it. You might say that Nod acknowledges the past with a respectful nod, then moves on.
Nod has wide applicability, but it's particularly well-suited for building low-level infrastructure that runs on multiple platforms. A keen awareness of portability issues allows many applications to be written without regard to runtime platform, while kernel abstraction and access to the native kernel provide the ultimate ability to go low. Furthermore, built-in modularity provides a simple and robust path for evolution and expansion of the Nod universe.
What Next?
Although I've worked on Nod for five years, it's a long way from being finished. But it's far enough along that I can put it out there to gauge interest and feedback from potential early adopters and collaborators.
The language itself is mature and stable, and there are the beginnings of a Nod Standard Library residing in a public GitHub archive.
I've written a compiler (in C++) that compiles source into intermediate modules, but it's currently in a private archive.
There's still much more that needs to be done.
If you're interested, please go to the website (https://www.about-nod.dev) to find links to the Nod Design Reference and GitHub archive. In the archive, there's a brief syntax overview that should let you get started reading Nod code.
Thanks for your interest.
What's the elevator pitch? If I'm already happy with the OO language I'm using today, why should I use Nod? What does it do better?
If you're truly happy with the language you're using, it's a hard pitch to make.
That said, Nod is my attempt to make a full-featured, professional-strength language that is easier to learn and easier to use in complex and demanding applications like servers and low-level infrastructure.
It has very regular and consistent syntax, making it easy (easier) to learn, read, comprehend, and write. It has simple and complete object-oriented features supporting multiple inheritance and polymorphism. It has simple and complete generic programming features. It has simple and complete exception handling. It has built-in modularity for extensibility and easier third-party integration. It has powerful features to enable simple and automatic external data serialization. It has a rich fundamental type set that supports collections, advanced mathematics, concurrency, real-time synchronization, and unicode. It ultimately compiles to machine code, making it performant.
Bottom line, Nod compares across the board with "modern" C++ and then some.
The "devil's in the details" though, and the details can be accessed via Nod's very basic website.
Most programmers in time will be burned by some aspect of their language, or they'll wish it would do something better. So, many will invest the time in learning a new language if they could see that it works better and/or pays better (especially if it pays better). But, in the end, I'm the first to admit that a new language is a hard pitch to make, even if it's "perfect."
Thanks for noticing.