When comparing Assembly vs Rebol, the Slant community recommends Rebol for most people. In the question“What is the best programming language to learn first?” Rebol is ranked 33rd while Assembly is ranked 39th. The most important reason people chose Rebol is:
Almost natural language, for example: `write %out.html read http://google.com`.
Ranked in these QuestionsQuestion Ranking
Pro Low Level - it's how the computer works
One of the best ways to learn how a computer actually works is to work your way up from lower level abstractions. Assembly, being only a level above machine code, is low enough level to make it clear how the computer is actually performing a computation, including code flow and loops, but high enough level to not be excessively tedious for the type of small projects that a student would do at the beginning of their first programming class. Use of an assembler with macros can stretch this even a bit further.
Pro Useful for embedded systems
A curriculum that involves an embedded component, such as an Arduino or a Raspberry Pi, can encourage students by allowing them to immediately connect their work with 'real systems'. Assembly is the ideal language for getting started with and understanding these devices, and since Assembly can be called from C, the code will still be useful if students move on to C later in the program.
Pro Naturally creates fast and small programs
Because of its natural syntax and low-level nature, assembly language programs are typically really small and fast.
Unlike other programming languages, in assembly language it is really hard to create a slow and over-bloated program.
Pro Uniform syntax
Assembly language syntax is relatively uniform, and so there's less room for a student to get confused by obscure characters, or miss some meaning implied by structure, such as with scoping rules, or call-by-name/value/reference semantics. While there may be a lot of mnemonics to look up, most work involves only a very small subset of them.
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 Difficult learning curve
Starting off as a beginner with assembly language could prove very daunting. I suggest learning a high level language first (e.g. C) to get a good grasp of programming - especially dealing with bits, bytes, numbers, accessing memory with pointers (which is why I suggest C).
Then once that person is comfortable writing C (or whatever high level language) programs, they would find moving to assembler a little less of a "What the hell?!!!" experience.
Con Rarely a requirement or used in professional employment
Con Hyperspecific syntax isn't a good first step to learning other modern languages
Con Not very portable
The instruction set may change depending on what CPU architecture is being used. Also, there will be some differences in implementations due to different assemblers being used, such as with changes in OS.
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.