|
h o m e s c h e d u l e a r c h i v e s f o r u m c h a t f a q t o o l s a b o u t dr. dobbs journal |
REBOL Resources at TechNetCast REBOL founder and CEO Carl Sassenrath discusses operating systems and programming languages: [VIDEO] [TEXT] REBOL Technologies VP Marketing Steve Mason on the REBOL network messaging language: [VIDEO] [TEXT] ALSO: Read Mike Swaine's Programming Paradigms column about REBOL in Dr. Dobb's Journal, February 1998 Want to know more about REBOL? Check out the Rebol Technologies website Submit advance questions, post and read messages about REBOL on the TechNetCast forum
Carl Sassenrath brings to REBOL over 18 years in operating systems,
computer languages, multimedia systems, and high-technology leadership. REBOL
was born out of his motivation to conquer the complexity of existing programming
and scripting languages, even in performing simple tasks. REBOL is the
realization of his dream to design and build a human-centric, Internet-based
messaging language. Prior to founding REBOL, Carl had been responsible for the
design and implementation of the highly acclaimed Amiga multitasking operating
system. He was also the President of Pantaray, Inc. where he headed the
development of several multimedia software products, including set-top boxes,
CD-ROM based computers, programming languages, content authoring systems, and
digital video tools. His background also includes management and engineering
positions at Apple Computer, Commodore Amiga, and Hewlett-Packard. Carl holds
a BS degree in electrical engineering and computer science from the University
of California at Davis. His other interests include architecture (he designed
his own home), wine-making, ham radio, powerboating, and never sleeping. Steve Mason, has over 14 years of entrepreneurial marketing, strategy, consulting, and contract negotiation experience, along with a professional background in designing and implementing compilers and translators. Prior to joining REBOL Technologies, he was the President of his own management and strategy consulting firm, which specialized in emerging software and Internet firms. Previously, he served as the VP of Marketing and Consulting for International Software Group and as the VP of Marketing, Sales, and Contracts for Software Leverage, where he doubled revenues and tripled profits for three years in a row and gained clients like HP, Digital, Citicorp, Stratus, AMETEK, Verdix, Sequent, Unisys, and Concurrent. Steve is now completing his Master's degree in psychology from Harvard University, and he is certified in the Myers-Briggs Type Indicator®. He holds a BS in electrical engineering, with a double major in computer science, from Tufts University. His other interests include philosophy, poetry, cosmology, futures trading, and adding a "1" to the beginning of speed limit signs. Contact Steve at steve@rebol.com. |
|
Transcript Steve Mason, VP Marketing, REBOL Technologies Download this transcript as MS Word document TNC: When confronted with a new programming language, it is convenient to characterize it from a high-level approach and use buzz-words such as functional, procedural interpreted, compiled, object-oriented... How would you describe REBOL? SM: In the terms you used, it is a functional language as opposed to a procedural language. It is also interpreted and object-oriented. We call it a Network Messaging Language. Let me explain what this means. When people talk, they communicate by exchanging messages. Our feeling is that through programming languages we do not communicate with just objects. Ultimately we are exchanging a message with a human being who is going to look at the program, or with a program that was written by a human being. So we tried to develop something that was more human-centric as opposed to computer-centric and which was also designed specifically for the medium of the Internet. TNC: So how do you go about making a programming language more human-centric? SM: Some of the listeners may be familiar with the Chomsky Hierarchy, which defines a number of different classes of languages. The highest class would include natural languages such as English, Russian or French or any other major language. These languages are incredibly powerful. They're also context-sensitive. They have homonyms and all sorts of different words that can be used in different places where inflection connotes different meanings. After the natural languages comes another class of languages called context-sensitive. The meaning of a word or a phrase depends on what surrounds it --what comes before and after it. Meaning actually depends on a context. TNC: Who determines what a word means in a certain context? SM: English would be certainly an example of a language that includes context-sensitive features. I could use a phrase with you that means one thing in one place. I could say "great," for example, and maybe we’ve just won a prize. So in that context it means this is wonderful. In the other case, maybe something bad had happened and I would say very sarcastically, "great." TNC: As a programmer how do I specify that "great" means something in a certain context and "great" means something entirely different in another context? Do I have to build a grammar to do this? Do I need to teach the language? SM: One of the great things about REBOL is you don't have to do that at all. You simply use the word as you would and as you would want to in a given context, and REBOL is going to understand what it means. REBOL has the ability to understand and make out the context of a word and the meaning of the word in that particular context. In other programming languages, the meaning of a word is always fixed, regardless of what comes before or after it. The word or the term or the expression still has the same meaning. These programming languages are classified as "context-free languages" --one class below "context-sensitive languages"-- in the Chomsky Hierarchy. Specific words in REBOL can be put into different places in statements, functions or expressions and the meaning will depend on what else is in that expression. TNC: In natural languages, there is a degree of accuracy associated with determining the meaning of an expression. Misunderstandings between people occur all the time. Is this also the case with the process REBOL uses to determine meaning? Is there a degree of fuzziness here? SM: You're right, languages like English do have that fuzziness, but REBOL is not a natural language. Context-sensitive languages don't have that fuzziness and at the same time have much of the power --although certainly not all of the power-- of natural languages like English. TNC: Let's get into practical details about REBOL. The package is available on your website. One striking characteristic is that it's available for many different platforms. SM: Platform- and operating-system independence is one of the key principles of REBOL. We believe that anyone should be able to take a program, script or bunch of code they have written and put it on the platform of their own choice regardless of what particular hardware or what particular operating system is being used. You can do that with REBOL. You can bring any working REBOL programmer's script to any other platform that we support. It will just run automatically without any system dependencies. One of the reasons we made the original release available on a lot of very different platforms --ranging from Windows 95/98, Win NT to Linux to FreeBSD to Solaris 2.6 to Macintosh and, of course, to the AmigaOS-- was to demonstrate by proof that REBOL would be able to work on all these different platforms, even though they reflect many different approaches to operating systems. A lot more platforms will be coming up. These include IRIX 6.2, OS/2, HP-UX, AIX, DEC Alpha NT, DEC Alpha Linux, EPOC PSION, WindowsCE, and BeOS. TNC: REBOL is available for download on your website. What is included in the distribution? SM: Let me just note for the listeners that REBOL is spelled R-E-B-O-L, not R-E-B-E-L. TNC: What does it stand for? SM: Relative Expression-Based Object Language. REBOL is really all about writing expressions and being able to express yourself on a language. TNC: Okay back to the distribution... What do I get when I download the file? The download is very small, by the way. SM: The file is about 200-250K in size and the download should only take a few seconds. As part of the distribution, you get the REBOL Executable so you can start writing REBOL immediately. You also get Online Documentation. There's a Quick Start guide, there's a General User's Guide and there's an Expert's Guide, which lists all the different features of the language. We're constantly updating it as we put out new releases. This documentation is also available separately. TNC: The language is interpreted. Scripts are written using any text editor and then fed to the interpreter. What are some of the features of the REBOL interpreter? SM: The interpreter goes through the script and it evaluates the expressions just like any other interpreter. If it comes upon an expression which has been used before the expression's value has been defined, then it will of course inform you about that. But in all other cases what it will do is it will simply go through it and will it. REBOL has a lot of very interesting features which most other languages do not have. For example, REBOL has something called "continuations." In fact they're called "First-class Continuations." Continuations basically allow you to do incredibly strong interrupt and exception-handling. They allow you to implement a lot of richness in terms of being able to define and use functions and they also enable you to do preemptive multitasking. The way that continuations work is really interesting. Normally, execution branches to an error handler when an interrupt occurs, and you can specify what must be done and where to go back. REBOL continuations can be inserted anywhere in the script --in the middle of an expression, for example. If you have an expression like 3*5+6, you can insert a continuation after 3*5 has been evaluated. At that point, execution can branch off anywhere and the entire program state is saved. Once that other operation is done, and it could involve some type of preemptive multitasking or error handler, execution will return right back to where the continuation took place, with the state fully preserved. So the result of 3*5 is preserved and the next operation to do is to add 6 - giving an expression value of 21. At any point in the script, you can indicate that an exception be triggered if a certain condition occurs. The REBOL kernel or run time system essentially is going to notice when interrupts occur, and the state will always be preserved regardless of where you are. This is ideal for exception handling and for preemptive multitasking. TNC: How is this different from what other languages offer? SM: Actually, most languages do not have continuations, not in the full and rich sense we described. The only language that would have something similar would be SCHEME. But other languages, including functional languages generally do not have that at the level that we do. TNC: So exception handling and concurrency are built into the language? SM: They are built into the language. Exception handling is there now and is going to be strengthened for the next releases. Preemptive multitasking is something that we have not implemented yet but all of this is already designed into the language. TNC: Can you tell us about some of the object-oriented capabilities of REBOL? SM: What's really important about REBOL is that you can treat everything as an object. You can, for example, create a function that enables you to create functions. So the argument to the "create function" function could be the name of the function you want to build and then a list of the arguments to that function. REBOL will create that function. To us that's something that's something that is very, very object oriented in the most abstract and good sense of the word and, of course, we would also obviously support inheritance and polymorphism. TNC: REBOL also features built-in Internet connectivity. What does this mean? SM: It means that you can deal with the Internet TCP/IP Protocols in a very direct way. Maybe the best example of that is sending E-mail. After you define a few parameters in an initialization file (the mail server, user name and so on), you can easily send email through the Internet in one line of code. Now in most other languages that would be very, very difficult to do if you could do it all in that sense. You end up having to write significantly more code in a way that is not self-evident. REBOL is very compact and natively handles many Internet protocols --SMTP, POP, FTP, HTTP and, real soon, NNTP. Proxy/firewall support will be out in approximately one month. TNC: In other languages you'd have to use third-party libraries or build implementations over the sockets layer provided by the operating system. This brings up the question of how REBOL binds to the operating system. Your distribution is actually very small so I assume REBOL uses operating system services to provide Internet protocol support. SM: REBOL uses whatever is appropriate on a given platform. We've established a totally independent and clean interface. This interface is all the user sees, and it is consistent. The bottom data link layer is something that is internal to REBOL, something that the outside world will never want to see. TNC: But does REBOL give users the ability to handle new protocols, for example? And use sockets? SM: There are two answers to that. We would certainly quickly provide an implementation if an important protocol came along. And it is possible, depending on the nature of the protocol, to use the existing features of REBOL to create a lot of different functions and a lot of new ways of handling that and of dealing with those dependencies. As to sockets, the answer is "yes." TNC: Can a user call the operating system directly and is this desirable? SM: Actually we don't consider it terribly desirable. Once you start binding to the operating system directly, you obviously get into a lot of proprietary issues and you run into the issue of portability. What you do won't work when moved to other platforms. TNC: How about graphical user interfaces, can users build GUI applications with REBOL? SM: At this point, you cannot build a pure GUI application. However, we are working on this and will be putting out a product that enables you to build totally platform-independent GUI applications without your having to worry about system dependencies. TNC: Where do you see REBOL now being used the most? SM: REBOL was actually officially released on September 30. In fact, in the first week, we had over 10,000 downloads of REBOL. This made us really happy and we now see it being used in a lot of different applications. Some people are using it to help to build websites, and we provide an example script that shows how our own website is built using REBOL . Some people exchange various types of email messages and then and create new files (through, for example, filtering. These files are then sent through FTP to either local or remote platforms.] Some people are using it for other sorts of interesting applications like creating baseball or soccer schedules. REBOL is quite efficient for performing simple tasks that could be rather tedious in some other languages. TNC: Is it possible to make REBOL code available to others so they can import it into their own scripts? SM: Absolutely. In fact, we are heavily supporting that effort and we have a place on our website where you can submit anything that you've written to us. We also have a page where people can go and see other scripts that people have written. Of course, we check them out and make sure that the script actually works and then we post it with the author's name on it. Anyone who is comfortable with having their script or their application used by someone else can contribute. We would love to see more of this. TNC: How about linking to a script that's available somewhere on somebody's web server through the Internet? That would be a great feature to be able to actually import it directly into the interpreter as it's running. SM: You can do that very easily. You can really just say "do" and then list the name of the file. You can say do read http://www.mysite.com/REBOLscript.r TNC: So that's already supported right now? SM: Yes it is. TNC: That's a great feature. How about REBOL on the back end? It seems to me that a good use of REBOL would be to build server side scripts. SM: Yes, we have seen a number of people who are using it specifically for that purpose. TNC: Is there some type of developer communications program effort at REBOL to centralize information about REBOL for programmers? SM: Yes, we will be putting that together over the next few months. TNC: What is some of the feedback that you've received from users since REBOL was released that may influence what you are doing with the language? SM: Let me give you a real classic example of feedback from users. Overall, we were amazed at how positive it was. We expected a lot of positive responses, but we're getting E-mails all the time that are just saying, "This is what I've been waiting for for years, this is really great." We're actually astounded by the reaction. It's really gratifying to see that. One of the most common requests we've seen is for proxy support because so many enterprises are behind firewalls and have various security measures. We're going to be putting proxy support in very soon, in the next release. TNC: The distribution is free right now, and it will remain free? SM: REBOL/Core will always be free. There will never be any case where anyone will say, "Oh, they just put this great new feature into it, but now I can't get it unless I pay." TNC: So how are you guys going to stay in business? SM: Well, there are a lot of different ways to accomplish this, and I'm probably not right now in a position to disclose all of our plans. But I can tell you that a lot of corporations are certainly interested in using REBOL and in using customized and other types of special products that would relate to REBOL and that would build on its core functionality. There's certainly a strong revenue stream from that area. Another aspect of REBOL is that REBOL can be customized for any particular industry or any particular terminology. You can develop a sub-grammar for a domain-specific dialect, and essentially create your own language based on REBOL. This gives you the ability to go into a lot of different vertical or domain-specific markets and provide them with a language and a tool that's speaks exactly their language, not anyone else's language. We also see a lot of potential business in that area. TNC: Okay Steve we have to wrap it up. Thanks a lot for joining us today. Back to TechNetCast Home |
|