Poster | Thread |
HMK
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 17:26:39
| | [ #1 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| From interview:
Quote:
So, the grand vision of REBOL is that it must be a part of something much bigger than just a language. We proved that with REBOL/IOS. It was very powerful. Our plan is for REBOL to be the heart of programming a new type of virtual-OS that can span not only our office computers, but also our home systems, mobile devices, web browsers, web servers, and more.
And, of course, my ultimate goal is to someday press the power switch on my laptop or desktop computer and within just a second or two, the REBOL desktop appears on the screen, fully booted, with a wide range of smart and powerful distributed applications. No other OS under it. No other OS needed. |
This is why I work with REBOL and why it's so cool. |
|
Status: Offline |
|
|
DaFreak
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 18:00:11
| | [ #2 ] |
|
|
|
Regular Member |
Joined: 1-May-2005 Posts: 128
From: Berlin, Germany | | |
|
| That's a very interesting interview!
But about Rebol: > As a simple comparison example, a language like C has 5 primitive datatypes (integer, > float, char, etc). By comparison, REBOL 3 as 58 primitive datatypes. That factor gives > REBOL an entirely new dimension of expression. And expression is what language is all > about.
58 primitives?! Wow, I thought it's a pro for every programmer to have less as possible. That will be much easier (to compare, calculate, search.. like in databases). Expression is a fine thing but one can exaggerate it ...like at voice languages.
Or what's the experience of Rebol-programmers out there? _________________ Sam440ep & AmigaOS4.1 @ Morex 3677 case --- (DaFreak of Liquid Skies & Moods Plateau)
|
|
Status: Offline |
|
|
HMK
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 18:43:25
| | [ #3 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| Quote:
Or what's the experience of Rebol-programmers out there? |
It makes some things much easier as you can express code in much briefer syntax. For example, some normally cumbersome things to do become very simple:
Quote:
Purely because the data stored in my-emailaddress is of the email! datatype. REBOL figures this out entirely on its own. You have similar expressive power everywhere in the language.
The list of datatypes for REBOL 3 can be seen here.
But the number of datatypes is really one of the smaller (or more easy to explain) unusual features and it's tightly bound to other features like dialects (a kind of language subdomain), which provide a powerful and secure way to express yourself, using your very own words and language structures.
Dialects are built with parsers and provide a way to convey complex information in almost plain English:
Quote:
>> shares [buy AAPL shares at 100$] |
That's fully legal code, but it can be further used as leverage to generate dialect code dynamically via other REBOL code. Imagine a share buying and selling dialect as shown above to be an API that other coders can use in their own programs, for example a GUI built on top. That's how REBOL's GUI engine Visual Interface Dialect works:
Quote:
view layout [button "Hello world!" [print "Hello world"]] |
Try that in a REBOL console. Last edited by HMK on 05-May-2007 at 06:45 PM.
|
|
Status: Offline |
|
|
CodeSmith
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 20:58:11
| | [ #4 ] |
|
|
|
Elite Member |
Joined: 8-Mar-2003 Posts: 3045
From: USA | | |
|
| That's great, but what is the price you pay for it? the runtime library must be pretty huge to support so many primitive types and a built-in GUI and language definition engine. No doubt it's very cool and my inner nerd salivates at the thought but I cringe at the thought of a runtime library that's probably a few dozen megs in size. Last edited by CodeSmith on 05-May-2007 at 08:58 PM.
|
|
Status: Offline |
|
|
HMK
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 21:35:38
| | [ #5 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| Quote:
That's great, but what is the price you pay for it? the runtime library must be pretty huge to support so many primitive types and a built-in GUI and language definition engine. No doubt it's very cool and my inner nerd salivates at the thought but I cringe at the thought of a runtime library that's probably a few dozen megs in size. |
Let's ask REBOL:
Quote:
This is REBOL/View 1.3 (with the version 2 of the core, not version 3 which is not out yet) for Windows. This includes among other things full graphics engine, GUI system, built-in text editor, mini-desktop, installer and networking.
If you take out the UI and graphics engine, you get REBOL/Core:
Quote:
Unpacked, it's 289.280 bytes.
I know it can be hard to understand. I've confronted people who flat out refused to believe this is possible. But yes, this is the entire REBOL language kept in such small executables. It's possible with the SDK to get even smaller executables.
I made a simple video some time ago (requires flash) which demonstrates some simple GUI and networking, here.Last edited by HMK on 05-May-2007 at 09:37 PM.
|
|
Status: Offline |
|
|
CodeSmith
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 21:43:33
| | [ #6 ] |
|
|
|
Elite Member |
Joined: 8-Mar-2003 Posts: 3045
From: USA | | |
|
| @HMK
Cool
There must be some pretty cunning coding going on in there. |
|
Status: Offline |
|
|
newbee
| |
Re: Interview with Carl Sassenrath Posted on 5-May-2007 23:37:01
| | [ #7 ] |
|
|
|
Regular Member |
Joined: 18-Sep-2003 Posts: 175
From: Adelaide, Australia | | |
|
| @HMK
I consider myself a "tool writer" as i have very basic programming abilities (across a narrow range of languages) and only revert to coding when I cannot find any other option.
With that in mind, I am completely SOLD on REBOL based purely on your "Hello World" demo.
Are their on line tutorials or an "idiots guide" anywhere that i can get my hands on.... I think I have just found my "preferred language".
Cross platform Logical syntax (based on very limited sample... true)
Darren
edit: Typos, that's one reason why I'm not good at programming Last edited by newbee on 05-May-2007 at 11:38 PM.
|
|
Status: Offline |
|
|
Debaser
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 4:30:42
| | [ #8 ] |
|
|
|
Regular Member |
Joined: 25-Mar-2003 Posts: 192
From: Syracuse, NY | | |
|
| |
Status: Offline |
|
|
CodeSmith
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 4:47:43
| | [ #9 ] |
|
|
|
Elite Member |
Joined: 8-Mar-2003 Posts: 3045
From: USA | | |
|
| Language is a bit on the opaque side... reminds me of the Scheme assignments I had to do back in school. |
|
Status: Offline |
|
|
dirigent
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 6:25:29
| | [ #10 ] |
|
|
|
Regular Member |
Joined: 30-Mar-2003 Posts: 169
From: Unknown | | |
|
| @CodeSmith
I agree, it's a bit unusual if you are used to the standard high-level languages.. When I once looked at it a bit more closely, I was impressed by its self-referentiality, i.e. I believe there was something like "object.[property]", where [property] did not have to be specified at compile-time but was itself a variable. A little like C++ STL maps, only as standard language constructs. |
|
Status: Offline |
|
|
CodeSmith
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 6:29:27
| | [ #11 ] |
|
|
|
Elite Member |
Joined: 8-Mar-2003 Posts: 3045
From: USA | | |
|
| @dirigent
Yes, that sort of thing is quite common in very high level languages. |
|
Status: Offline |
|
|
dirigent
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 8:54:39
| | [ #12 ] |
|
|
|
Regular Member |
Joined: 30-Mar-2003 Posts: 169
From: Unknown | | |
|
| @CodeSmith
Is it? I know that Objective-C has a similar feature, which I also found very likeable. |
|
Status: Offline |
|
|
PsyDarken
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 9:26:22
| | [ #13 ] |
|
|
|
Member |
Joined: 24-Jul-2004 Posts: 22
From: France | | |
|
| A bit opaque at the first sight, for sure.
I make software for a living and know well common languages, C++ at the top, derivate forms like C, Java, PHP... and at the bottom 680x0 (old demo guy :)) and x86 assembly.
I began with the tutorial and I have to admit it was hard to guess what the sample code was doing without reading about the meaning of the syntax.
I will read a bit more about it, maybe it's a new approach for programing that needs a bit of investments at the beginning. |
|
Status: Offline |
|
|
HMK
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 9:47:26
| | [ #14 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| REBOL allows a lot of self creating code. You have an enourmous amount of freedom to machine build REBOL code from other REBOL code, so the dynamic aspect of the language during runtime is far greater than Objective C offers. In essence, in REBOL, code is data and data is code. The two terms are completely interchangable.
The term "word" is used here to describe, what is normally a variable in other languages, because the word can be manipulated as much as its content.
You can say:
Quote:
>> a: 7 == 7
>> set 'a 7 == 7
>> do reduce [to-set-word 'a 7] == 7
>> b: [to-set-word 'a 7] >> do b == 7
>> y: [5 7 9] >> do reduce [to-set-word 'a second y] == 7
>> y: [5 7 9] >> write/binary %set-a-to-7.r compress mold [to-set-word 'a second y] == #{ 789C8B2EC9D72D4E2DD12DCF2F4A51504F54284E4DCECF4B51A88C0500748F08 DB19000000 } >> do load decompress read/binary %set-a-to-7.r == 7
>> y: [5 7 9] >> set [i really want some cake] [set to-lit-word "a" second y] == [set to-lit-word 'a second y] >> i == set >> really == to-lit-word >> want == "a" >> some == second >> cake == y >> do reduce [i really want some cake] == 7
Continuing from the last example:
>> set [water is good for you] [i really want some cake] == [i really want some cake] >> reduce [water is good for you] == [i really want some cake] >> reduce reduce [water is good for you] == [set to-lit-word "a" second y] >> do reduce reduce [water is good for you] == 7
|
The two last ones are actually a simple dialect, created without parsing. All of them will set the word 'a to 7.
Another aspect is how to use it entirely without words. This is very strange to newcomers, but the thing is that you can create objects and series and manipulate them directly, without assigning them to a word. This reduces code size further.
Normally, if you want to make a block, containing the numbers 1, 2 and 3, and you want to create it with a little loop, you'd say:
Quote:
>> block: []
>> repeat i 3 [append block i]
>> block == [1 2 3]
|
When in fact you can eliminate the block word:
Quote:
>> repeat i 3 [append [] i] == [1 2 3]
|
Because the [], when first encountered during runtime, becomes allocated in memory at that time, you can start using it directly. When the loop is run through, multiple times, REBOL notices that a block is already allocated at that address and uses it again. This is just an example of how aggressively REBOL reuses existing data.Last edited by HMK on 06-May-2007 at 09:56 AM. Last edited by HMK on 06-May-2007 at 09:50 AM.
|
|
Status: Offline |
|
|
CodeSmith
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 11:41:15
| | [ #15 ] |
|
|
|
Elite Member |
Joined: 8-Mar-2003 Posts: 3045
From: USA | | |
|
| @HMK
OK, that looks *a lot* like Scheme (I'd give you some examples so you can see how similar the code would look, but I haven't done any Scheme or Lisp in about 10 years). It's a very powerful language, but it's let down by the constraint that *everything* (including code) is a list. You can do all sorts of crazy stuff with it because you can create a list, pass it around to other methods that modify it, and then execute it as if it were code, but the major downside is that any non-trivial program looks like bracket soup. Come to think of it, Lisp and Scheme also tend to have very small runtime libraries. Nice to see that someone has come up with a way to do the same sort of thing without the fugly syntax. Last edited by CodeSmith on 06-May-2007 at 11:46 AM.
|
|
Status: Offline |
|
|
Zorro
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 14:39:34
| | [ #16 ] |
|
|
|
Super Member |
Joined: 30-Apr-2003 Posts: 1081
From: Italy | | |
|
| Great interview...
Carl... one of the creators of the Myth... _________________ ------------------------------- AmigaOS, the last hope...
|
|
Status: Offline |
|
|
dirigent
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 14:57:44
| | [ #17 ] |
|
|
|
Regular Member |
Joined: 30-Mar-2003 Posts: 169
From: Unknown | | |
|
| Quote:
REBOL allows a lot of self creating code. You have an enourmous amount of freedom to machine build REBOL code from other REBOL code, so the dynamic aspect of the language during runtime is far greater than Objective C offers. |
I had that impression when I had a look at the language once. I was considering how good it would be for expression-handling stuff, and I had the impression that for such purposes it is really very powerful. (It's in the name, after all..)
Speaking of Objective-C, actually the heavy use of cornered brackets around things gives a slightly similar appearance in a way - if you have spent uncounted hours working on code with a C++-like appearance, this is a bit of a change and slightly irritating at the beginning. But maybe REBOL is not (yet) intended to be the logical alternative choice for a problem you might otherwise solve using C++. What kind of problems would you say REBOL is best for?
The language is definitely interesting, and I'll watch for opportunities to use it.
Quote:
>> set [water is good for you] [i really want some cake] |
My first thought was, what, is he creating two temporary, unnamed vector objects on the stack and then assigning one temporary vector object to the other? But I had a look at the REBOL docs and figured it out. |
|
Status: Offline |
|
|
HMK
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 16:25:46
| | [ #18 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| Quote:
What kind of problems would you say REBOL is best for? |
It's hard to narrow down, because it has functions for practically anything. The current limitations come from some weaknesses in the core, such as the lack of multithreading and the math library does not offer high precision calculations or access to vector operations. There is no way to handle 3D acceleration or complex sound at this time, but all of these issues are meant to be solved with REBOL 3 and then some.
It's probably better to say that it is very good for solving generic problems in a few minutes, although I use it mostly for creating and maintaining full-sized applications. If your boss wants to do something with a simple user interface, REBOL is excellent for that.
A few things I did with it in less than 30 minutes of coding:
- Dead link detector for websites. - Price tag creation form and emailer client, sends me emails with price tag specifications from my brother so I can create DTP layouts for new price tags. - Backup/restore system with a GUI for experimenting with an accounting system on a laptop. My brother needed a simple GUI to be able to use it himself.
In less than 1 day (1 hour and up):
- Proxy server to alter the contents of a German website to a Danish website with a different layout. - Filetransfer tool - Multi-file text search tool - Power Point like presentation tool (didn't have MS Office or Open Office at hand and needed to present something).
Some generic things I made for myself:
- Source packing system - On-demand compiler that works over network - GUI based code testing tool - List-view for the GUI - Website generator that uses a dialect to describe the structure of the site. - Bug database and management tool - Monitor membership payments to a specific website. - Social security card reader and parser - Relations Engine
A few REBOL'ers and I started the Wikibook for REBOL programming, because we wanted to create a complete and more updated guide to REBOL
That was a foolish idea, because we then realized just how comprehensive REBOL really is, and we couldn't figure out how to focus it. It's still unfinished, because we have no time to work on it. |
|
Status: Offline |
|
|
HMK
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 16:40:51
| | [ #19 ] |
|
|
|
Regular Member |
Joined: 17-Mar-2003 Posts: 246
From: Denmark | | |
|
| Quote:
But maybe REBOL is not (yet) intended to be the logical alternative choice for a problem you might otherwise solve using C++. What kind of problems would you say REBOL is best for? |
Perhaps I should list what REBOL is not so good for:
- High performance arcade games. The graphics display system in REBOL 2 is not very fast as there is no hardware acceleration. However image processing is pretty fast.
- Sound. The sound system is singlethreaded and blocks whenever a sound is played. However, people have made
- Integration with the underlying OS. You can't use drag'n'drop into a REBOL window and the clipboard is restricted to text only.
- Some file operations are slow, due to the port system design.
Keep in mind that these things are going to be solved for REBOL 3 with proper multi-threading and proper access to the system hardware and a new port design.
Another interesting way to put, what REBOL is good for, when saying "almost anything" is that you can compare it with a typical web content delivery system.
Normally you'd use something the following Web 2.0 technologies:
- SQL for database - PHP/ASP for server side scripting - XML/AJAX/JSON perhaps for data transport - HTML for structuring presentation - CSS for visual presentation - Javascript for client side scripting - Java for client side plugins - Webbrowser that upholds the standards for Web 2.0 usage.
When putting together a REBOL based solution for doing the same job:
- REBOL/Core database - REBOL/Core for server side scripting - REBOL/Core and View for data transactions between client and server using the built-in networking - REBOL/View for presenting a GUI on the client that displays the content from the server
It does exactly the same. AltME is built exactly like that. It's REBOL everywhere and there's no need to change the language at any point in the process.Last edited by HMK on 06-May-2007 at 04:41 PM. Last edited by HMK on 06-May-2007 at 04:41 PM.
|
|
Status: Offline |
|
|
BobC.
| |
Re: Interview with Carl Sassenrath Posted on 6-May-2007 16:51:24
| | [ #20 ] |
|
|
|
Cult Member |
Joined: 9-Mar-2003 Posts: 556
From: Mid Atlantic State USA | | |
|
| It's always interesting to read what Carl has to say. I find him to be a very talented, creative and seemingly nice guy!
This part nearly broke my heart though:
Quote:
At Apple, it was interesting to see what engineers thought of the Amiga. Most of them thought that the Amiga would totally destroy Apple. Technically, Amiga could have, but they did not know what I knew about Commodore marketing. |
Especially considering the (latest) mess we're in now! _________________
|
|
Status: Offline |
|
|