Rebol is a very interesting internet-oriented programming language (for example, you can create a brand new instant messaging application with only 5k of source code) but they are now extending their language even more. From the Rebol web site: “REBOL/IOS is an enabling technology, consisting of protocols, concepts, APIs, hierarchies, modules, security models and algorithms etc. REBOL/IOS (Internet Operating System) is not a traditional computer operating system. It is an Internet-wide operating system, providing Internet-wide services and a common framework for distributed, platform-independent applications. IOS is to the Internet what an OS is to a PC. IOS does not replace existing operating systems, but augments them, providing some OS-like services across networks. Products using IOS still need an operating system (or at least some BIOS or other kernel) on whatever machine they run on. IOS is independent of the OS in the sense that it is a separate layer, i.e. it can run on any OS and thus any type of machine, all the way down to hand-held devices with minimal kernels.“
I’m very interested in hearing opinions about REBOL’s weaknesses and strengths. What it is good for? What it isn’t? What do you see in the future for it?
Cheers,
Mikko
Because of its built-in support for Internet protocols, REBOL is a great language for linking data, content, and people using the internet; the current rage over peer-to-peer applications is one example.
REBOL is Machine and System Independent. Programs run on more than 40 platforms without modification. Programs that you create on your PC will run on your Windows/CE portable, your graphic artist’s Macintosh, your system administrator’s Linux, your web site’s Sun Solaris, and dozens of other platforms.
REBOL has Integrated Networking. REBOL comes with several common Internet protocols built-in. No includes, imports, or special libraries are needed. Protocols include HTTP, FTP, SMTP, POP, APOP, IMAP, NNTP, Finger, Daytime and more. You can also roll your own with our TCP and UDP support.
REBOL has a Rich Set of Built-in Datatypes. In addition to the datatypes found in most languages, REBOL can also express money, times, dates, words, tags, logic, lists, hashes, tuples, XY pairs, and many other datatypes. These are built-in. No other REBOL modules or libraries are required. This eliminates the “run anywhere but you don’t have everything you need” syndrome and provides a high level of consistency between all platforms.
REBOL offers Domain Specific Dialecting. Doctors express their ideas in medical terms, stockbrokers in trade terms, and quarterbacks in football terms. Why? Because it’s more efficient and productive. That’s the benefit of dialecting. Dialecting is the ability to create sub-languages that provide you with extra leverage and productivity by expressing your solutions in terms that are best suited to your purpose. As an example, check out REBOL/View’s Visual Interface Dialect.
REBOL offers Multi-level Sandboxes. Several levels of operational security are built-in. The default is a “safe” mode, where absolutely no files can be written to or deleted from your system without your permission. You can adjust the security to your level of comfort and the trust you place in the script you are running.
REBOL has Clean Syntax. REBOL is intended to be read by ordinary humans. The language is consistent and free from unnecessary punctuation. Datatypes such as dates, times, money, URLS, email, TCP addresses, are written exactly how you would expect. No special “constructor” syntax is required.
REBOL has Compression Built-in. You can compress and decompress text and binary files directly from the language, providing you greater efficiency in data transfer.
REBOL has a Small Program Footprint. REBOL downloads from the net in seconds, or fits on a floppy with room to spare for your scripts. On most platforms the REBOL system is less than 250 KB in size… but, don’t underestimate it! Every one of those bytes is packed with substantial power.
Mikko Mäkelä
http://www.escribe.com/internet/rebol/index.html?
You can read thru the list and get an excelent idea of strengths/weaknesses. Rebol does take a bit of getting used to tho’…it’s a functional language in the same way HASKEL is.
Many of the folks on that list are activly developing products for sale…a visual developing environment built in Rebol…a collaborative computing solution–which will compete with Rebol\Express and Groove–which is really what Rebol is about:
True platform independent distributed computing over the internet. Peer-to-Peer is a SUBSET of the Rebol model…IMO
–mdv
…between real programmers and <insert euphemism here>. This will make it popular in business circles, like VisualBasic and spread-sheets.
No doubt, REBOL is a powerful tool. Above, Norselord lists a great number of features, with great emphasis on built in functionality. And it is powerful precisely because the inventors placed all this functionality into the run-time.
But make no mistake, REBOL is not a systems programming language. If any systems functionality was missing, you would not be able to implement it with the REBOL language itself and make it integrated into the REBOL language as the built-in functionality is. The concept of language dialects is powerful and convenient, but the ability to create dialects is outside the reach of the REBOL programmer.
The programs are small, to a degree perhaps far beyond the reach of most other virtual machines, but also small, just like Javascript is small. You will note that REBOL applications although they could potentially look and feel like any other application, are in general much simpler. For many applications the ability to write it quickly is more important than having it look glamourous. Rightly so, REBOL introduces the concept of disposable programs.
The performance is good, because the built-in functionality is not implemented in REBOL. Like the gels and filters demo, those just call built-in functions. Much like the smoke and mirrors of the “tiny” Athene programs (like REBOL they also make claims of being a reflective meta-language), the scripts mostly contain calls to much larger components that contain all of the complexity and do all of the work, hence the script looks “tiny” and simple.
Consider how a typical web-page is only a few dozen kilo-bytes, but Mozilla is 8-12 mega-bytes and will be in it’s 5th year of development. Understand this division of labor and how complexity is shifted to the run-time environment, making the script simple, and you’ll understand how REBOL works it’s magic.
Has anyone else had stability problems with it in BeOS? How is the stability on other platforms?
I have several in-house apps that could be merged into one uber-app if Rebol works well. I really like what I see so far and I think this could be a phenomenal resource for a powerful in-house software that I don’t have to worry about users upgrading when needed.
I’m glad I tried it out…
Why even make it.
“But make no mistake, REBOL is not a systems programming language. If any systems functionality was missing,..”
System depend functions you can get with Rebol/Command module.
-jr-
I’ve not had problems with core on BeOS, but view seems to freeze when it
loses focus on occassions. The Win32 version doesn’t seem to suffer the samew problems.
Dave
Yes, REBOL/View has problems under BeOS and I already submitted information to feedback (and all you guys using it under BeOS should do the same). They are aware of the problems and I hope they will get them fixed in the next version.
Glad I’m not the only one with probs then. It sure seems like a cool development platform. Has anyone noticed any web browsers in Rebol? I keep thinking that it could help with one of BeOS’s major shortcomings: higher-end web broswers.
I have used about 12 programming lauguages over 20 years. Java was high on my list of better laugages, but it lost out to Rebol. Have been using it for 18 months now and would not think of going back to Java. Note both have the write once run anywhere, but Rebol is much smaller in size for the same punch.