When comparing Nim vs Rebol, the Slant community recommends Nim for most people. In the question“What is the best programming language to learn first?” Nim is ranked 12th while Rebol is ranked 42nd. The most important reason people chose Nim is:
Checks your code at compile time.
Ranked in these QuestionsQuestion Ranking
Pro Strict typing
Checks your code at compile time.
Pro Really crossplatform
The same code can be used for web, server, desktop and mobile.
Pro Easy to read
Nim has a lot of common with Python in terms of syntax.
Indentation-based syntax, for/while loops
Pro Built-in Unicode support
You can use unicode names for variables, there is "unicode" module for operations with unicode
Pro Multi paradigm
Imperative, OOP, functional programming in one language.
Pro Great metaprogramming features
There are generics, templates, macros in Nim. They can allow you to write new DSL for your application, or avoid all boilerplate stuff.
Pro Type interferencing
You only need to specify types in your procedures and objects - you don't need to specify type when you're creating a new variable (unless you're creating it without initialization)
Pro Has built-in unittest module
With built-in "unittest" module you can create test with a very readable code
You don't need to deal with all those manual memory allocations, Nim can take care of it!
But also you can use another GC, or tweak it for you real-time application or a game
Pro Easy to integrate with another languages
You can use Nim with any language that can be interfaced with C.
There's a tool which helps you to create new C and C++ bindings for Nim - c2nim
Pro Compile-time execution
Nim has built-in VM, which executes macros and some other code at compile time.
For example - you can check if you're on Windows, and Nim will generate code only for it
Pro Supports UFCS (Unified Function Call Syntax)
writeLine(stdout, "hello") can be written as stdout.writeLine("hello")
proc add(a: int): int = a + 5 can be used like 6.add.echo or 6.add().echo()
Pro Has built-in async support
Nim has "asyncdispatch" module, which allows you to write async applications.
Pro Human friendly
Almost natural language, for example:
write %out.html read http://google.com.
Code is data, and data can be code. Rebol is based on a simple block data structure, used both for data and for the code itself. Blocks can be manipulated programmatically, and then evaluated as code. This makes metaprogramming easy in Rebol.
Pro Graphical user interface
Beginners are usually stuck making command-line applications in other languages, because GUIs are too hard. Rebol GUIs are easy enough to start with.
Pro Very simple syntax
Rebol's name came from "Relative Expression Based Object Language". Rebol is a functional language and everything is an expression that returns a value. Things that have to be baked into the grammar in other languages are simple function calls with block arguments in Rebol.
Pro Domain specific languages
Rebol's simple homoiconic syntax makes it easy to create "Rebol dialects"--domain-specific languages optimized for a particular purpose. The Rebol distribution includes many of these, and users are free to create more. These DSLs make tasks that would be complicated to express in other languages easy.
Con Still in pre 1.0
Not very stable and has a rather small community.
Con No separators
A function call expression has no parentheses, and there are no separators between sequenced expressions, not even newlines. This means that you have to know the arity of every function in an expression to know how to parse it. It also means you can run into subtle, hard-to-find bugs if you don't provide enough arguments, since the result of the next expression will be passed instead.
Con Not (yet?) Free Software
Rebol 2's core is free (gratis) for commercial use, but the license prohibits modification, a violation of the DFSG. Rebol 3 is Free Software (Apache 2.0), but isn't production ready.