That's my history too. I remember spending hours in the 80's drawing LINEs and CIRCLEs in a loop, making tunnels, flowers, and whatever else I could come up with that looked cool. I didn't ever finish anything really, I mostly just played around, but it felt like I was on the cusp of something new and exciting, and that anything was possible.
That's the feeling I'm trying to capture with Enu. I'm sure it won't land for a lot of people, and that's ok, but I hope someone out there finds it and makes something really amazing, even if they're the only one who can see it.
Enu author here. I taught it to a group of 11 year olds at a community coding club a few years ago, with reasonable success. At the time Enu didn't work very well, but by the end the kids were able to code simple structures and make monsters chase them around. I just started teaching it to my 8 year old and he's picked up a few things, but so far he's mostly interested in building things with blocks. We've only been at it for a couple of hours though.
Enu was designed to be usable by non-readers and new typists. There's a shorthand version of common commands, and as long as you're happy with 90 degree angles you can specify direction without numbers. For example, a box could be:
f 10 # forward 10
r 10 # right 10
b 10 # back 10
l 10 # left 10
or:
4.x: # 4 times
f 10 # forward 10
t r # turn right
It can also be configured to interpret both `;` and `:` as `:`, which makes it possible to type a lot of common Enu code without needing the SHIFT key.
Enu only recently got to a state that I'd consider usable, so whether or not this is enough to make it work for younger kids, I'm not sure. But I'm hopeful.
This looks quite neat; it reminds me of TurtleSpaces, a great Logo-based environment. Question (and sorry if the answer's evident, but a cursory glance at the website didn't solve it): are there any examples with source code we can look at, written by enthusiasts and/or people familiar with Enu-big or small, to learn about idioms, "best way to do X", etc? I've found that understanding programs written by my betters is a pretty good way of becoming acquainted with something new.
Yes. It’s so you can maintain a consistent style in your code base even if your dependencies use different styles. Nim has excellent C/C++ interop and it’s relatively common to interact with C or C++ symbols directly, and being able to do this without needing to adopt the dependency’s style or wrap everything is nice.
In python, for historical reasons the logging module uses camelCase while most other modules use snake_case, so it isn’t really possible to use the logging module and maintain a consistent style. This is a non-issue in Nim.
The downsides of this approach are unfortunately that it makes wrapping certain low-level libraries an absolute pain in the ass (especially anything to do with keyboards). But overall it's a non-issue, tooling recognizes both styles and you don't notice it.
Enu is a multiplayer programming environment powered by Nim and Godot. It's meant to teach kids to code, make 3D game programming easier, and for experimenting and having fun. It's MIT licensed and will be usable to create standalone games.
Enu is powered by the belief that text based programming can be accessible to kids if made simple enough, and that text is more flexible than visual programming using tools like Scratch and Game Builder Garage. I still have lots of work to do to improve discoverability, but based on my experience using it to run a coding club and teaching my own children, I believe the theory mostly holds. It's inspired by Logo and Minecraft, has a terse syntax for building nested state machines (although it calls them Command Loops), and tries to make it possible to build full games using only simple concepts like loops and conditionals.
I've been working on Enu for almost 4 years now (very much part time) and have put out a few releases already, but I believe this is the first version that really captures what Enu is all about. Let me know what you think!
Hey all. Enu is my project, and it's really nice to see some interest. It looks like I'm a few days late to this thread, but I'd be very happy to answer questions if anyone is still around.
The first real MVP of Enu will be releasing before the end of the month. 1.0 is years off, but the basics are mostly there and it seems like a good time to put up a web site, write some docs, and see if people actually want to use the thing.
Thank you! I hope so. My bet is that text based code can be as easy as drag and drop (but much more flexible) if things are kept extremely simple and concise, and the commands and keywords are discoverable. I think I've made good progress on the simple and concise bit. Discoverability needs work, but I believe it's solvable.
Thanks! I suppose it's primarily, but not exclusively, aimed at kids. It has rudimentary multiplayer support now, and my hope is that it can be a place for people to build and learn together. I want schools to use it for programming classes, and for friends and families to hang out, teach each other, and build simple games together.
Initially I used Godot’s scene format to store Enu’s levels, so someone could learn and prototype in Enu, then load the project into Godot for things Enu didn’t support. That didn’t really pan out though and I’ve dropped the idea for now. I’d love to revisit some day.
Currently Enu is just a consumer of Godot. I’ll update the description soon. Thanks for the interest!
This particular example isn't actually an issue in Nim. The first letter of a nim identifier is case sensitive, so while `my_thing` and `myThing` are normalized to the same name, `my_thing` and `MyThing` are different.
Essentially nobody was a "JavaScript Developer" in 2005, 10 years after JS's release. JQuery didn't exist yet, the term "AJAX" hadn't been coined, and NodeJS was years away. Web developers were using JS to enhance pages, but it wasn't a language that was widely used to write applications. I don't know what the popularity numbers looked like so I'm not saying you're wrong, but it was definitely closer to 15 years before people started to take JS seriously.
JS aside, I think there's probably some survivorship bias going on here. I don't think there are a lot of 15 year old, relatively unpopular languages that are still under active development. Maybe it's not that languages that don't become popular in 10 years never will, but rather that languages that don't become popular in 10 years tend to be abandoned by their developers, thus sealing their fate.
JS was a very popular language in 2006 (at least in the top 10 if not top 5) -- a lot of people were doing at least some JS development -- even though it grew bigger later. Nevertheless, JS (like Objective-C and Swift) is indeed special in the sense that it's the "monopoly language" for a particular platform.
> I don't think there are a lot of 15 year old, relatively unpopular languages that are still under active development.
There are quite a few. If you look in virtually any language ranking, places 10-40 have many 10 year-old and even 15 year-old language. Here are some continuously developed >=15yo languages that are less-than-middling-popular and have always been so: Common Lisp, Racket, Clojure, OCaml, SML/NJ, F#, TCL, Haskell, Idris, Groovy, Squeak, Erlang, D, Ada, Nim. There are more of these than there are super-popular languages. (I didn't include any language that was, at one time, at least somewhat popular but is no longer, such as Visual Basic, Delphi, and Perl 5).
There might still be survivorship bias, but I am not saying all that is fate, just a clear historical observation.
That's the feeling I'm trying to capture with Enu. I'm sure it won't land for a lot of people, and that's ok, but I hope someone out there finds it and makes something really amazing, even if they're the only one who can see it.