What made the most sense to me was the approach SPIN took, compiler to do the heavy lifting, interpreter to run the bytecode.
Ultimately, BASIC wouldn't make the P2 any more useful to me, because I'm just not interested in hacking BASIC because the syntax is so different from C and other languages, I can copy and paste.
I've ported C code to PHP with minimal effort, Javascript is fairly C like for some stuff.
David Betz' xbasic has a compiler and a bytecode interpreter. It is optimized and I have written a substantial LCD program using it. Xbasic's little brother, ebasic could easily run on P2, and is just a few steps away from a self-programmed compiler and interpreter for P2. My take is that David just needs some long lost encouragement and proof that a P2 Propeller stand-alone computer has value to finish.
It's great to be thinking about going back to simple systems. but the isolated or "stand-alone" BASIC computer is actually a concept that scares (or bores) the younger "always connected" generation.
Almost every student in junior high / highschool (in the US) encounters these standalone BASIC interpreting battery powered LCD systems in the form of a graphing calculator from Texas Instruments in their math class. Unfortunately the rate of engagement for anything beyond math and games is negligible.
It's great to be thinking about going back to simple systems. but the isolated or "stand-alone" BASIC computer is actually a concept that scares (or bores) the younger "always connected" generation.
Almost every student in junior high / highschool (in the US) encounters these standalone BASIC interpreting battery powered LCD systems in the form of a graphing calculator from Texas Instruments in their math class. Unfortunately the rate of engagement for anything beyond math and games is negligible.
I think the focus has to somewhere other than the desktop computer. The BBB and Rpi are far better platforms than the P2, with both higher performance and better memory integration. Their weakness is partly their strength. That being Linux, which has come a long way from its roots. Originally unix ran on very slow and small CPUs, it was quite efficient, but these days like all software has grown a lot of bloat. But that bloat makes for lots of applications, tools and drivers.
The P2 will always boil down to a 200 MHz CPU with a slow pipe to its large memory. Yes there are 8 CPUs, but they all get to wait for that one memory that consumes 1 COG to service it. Yes you can build some hobbyist retro emulators, but will that ever be a sustaining market? No
It's more likely someone may build a striped Linux aimed at the BBB. Those platforms are here to stay. I think there is probably more benefit in a simple to use education platform which might be oriented around a P2. But the P2 is not the supercomputer on the desktop. Rember the BBB has a 1GHz CPU, 2 additional CPUs, graphics hardware, floating point engine, tightly coupled caching. It's a completely different class.
I think there is a difference between marketing and things people would do with the chip.
As for that powerful 1Ghz CPU, etc... machine. Yeah. Killer stuff, cheap too. But, it's not all that knowable, and it sometimes isn't all that accessible either. Of course, both of those are subjective based on the task and people, but overall there are a lot of layers in there, complexity, things to be managed, known, dealt with.
Since the P2 has great math in PASM now, it's kind of cake to prototype something, or just get a display of something else, etc... Seems to me, that could be extended some too, making for an awesome calculator. Just a program away on an SD card. What do you do with that powerful system when you want a bunch of smart I/O? I'm mentoring somebody right now who got a Pi because they thought it would be easier than Propeller is for many things. Turns out that "knowable" factor is significant. At times, I don't think we appreciate all the understanding we build up over the years. People jumping in fresh, or who want a lean experience do. Take that same Pi and a comms library that works with a pluggable P2 board of some kind? Could be golden. It's compelling to me. I really don't care whether or not it's a PC. Frankly, a Pi running Linux is good enough for the basics and communications, programming, etc... I could ditch the laptop altogether on a scenario like that.
As for the 8 CPU's waiting on that one memory... Well, I think that's highly arguable. One can do anything with a Prop in this respect. It's entirely possible to be running some code out of the HUB, some in the COG, some from the SDRAM, data going various places, more code and data from SD, flash, hook up two SDRAMS, or vary the bus width, etc... Whether or not this is true really depends on how things are written and what the end goals are more than it does anything else.
The average PC running whatever is a great communications tool, and it's a great general purpose computing tool. Going beyond that on either axis requires investments in time, understanding, dollars, etc... Lots of people seeking to do a lot of that stuff on phones / tablets. Seems to me, a P2 that is connectable, programmable in the way being described here couples with something like that perfectly. Do the cool stuff, get it done, use the pad to show 'n tell, or get paid... It's a plausible use case for sure. Maybe not a primary one, but it could be a compelling one for those who really don't want to futz with a PC beyond the basics, or just don't use one at all and stick with simpler devices.
BASIC was intended as a simple language to introduce people to computing and programming. I suffered that introduction in 1975 using a teletype connected to a remote mainframe. It kind of made sense back then as there pretty much wasn't anything else. Things like ALGOL were perceived as being too much for a beginner to tackle and that whole edit/compile/run palaver was a tedious distraction. Then came the micro-computers and BASIC again, thanks Bill Gates, Again it kind of made sense as there was nothing else and as Bill showed you could make a programming environment fit int 4K of memory which would actually make your Altair or whatever useful in some way.
BASIC was magical in that it was amazingly simple to get your machine to do something. How many kids started off doing this when they saw a C64 or some such micro in a store:
10 PRINT "Some rude message"
20 GOTO 10
After that it was pretty useless and the curious kids were soon into assembler.
History suggests to me that BASIC is no longer required.
We have an ocean of tinkerers putting things together with C++ on Arduino's. Good grief, C++.Really, who would have guessed that would happen?
Then we have an ocean of people trying out their Raspberry Pi's. They have access to pretty much any language. Things like Python are very popular, powerful and easy to pick up.
Against this new world order BASIC becomes rather unimpressive. Was it ever really required? Looks to me, now, like the whole reason for it's existence is questionable.
The idea if getting the PII running Arduino "sketches" is great. There is something that is familiar to hundreds of thousand of Arduino users.
I kind of agree. The focus cannot be a fully fledged stand alone computer. It's hard to imagine that would amount to much more than a C64 level machine and the world expects a lot more now a days. That's not to say I would not like to see it done though.
I was thinking about that software bloat issue recently. Looking at my ARM boards, including Raspberry Pi's I see that the famous software bloat occupies a few square millimeters of SD card when not in use. When running it sits on a few square millimeters of processor/RAM on the board. I start to wonder why people are complaining about "bloat", one can hardly see it. In general when my little programs run they have the whole machine to themselves.
Of course bloat has repercussions in "knowability". There is a satisfaction in knowing every single line of code running on your machine. From an educational standpoint that is brilliant. But really if you want a pile of complex features you need a pile of code and soon it will become unknowable to any single human being.
It's more likely someone may build a striped Linux aimed at the BBB.
I'm sure it's done already. And nothing stripped down about it. Just yesterday I completed installation of Debian on an ARM board of similar specs. That is bog standard, full up Debian with KDE desktop, FireFox, webserver, video players etc etc.
I concur with those that suggest the PII should be pushed as real-time real world interface. I'd like to see PII boards for piggy backing on RaspberryPi's, BBB's and other machines in common use. Even the Arduino.
Is there a dialect of BASIC that allows for variable scope?
(Local variables and global variables)
I say this because I too see the desire for "copy and paste" of source code.
If every variable is a global variable, then this code reuse concept falls flat on its face.
Any even moderately modern Basic allows local variable scope. In fact, even ebasic, my PropGCC demo program does as well as functions with parameters. The ebasic demo needs work if it is to be used for anything serious though but it currently runs on P1 in CMM mode and also P2. It doesn't, however, have the immediate mode that would make it good as a fancy calculator. I've worked on adding that but haven't finished yet.
I agree with this and what followed in your message. I got involved with writing Basic interpreters back a few years ago when Andre' LaMothe wanted one for his XGS PIC/AVR boards. I'm still not convinced that many people actually want Basic other than some retro-computer enthusiasts.
Someone mentioned JavaScript. Excellent idea!
I'm afraid that JavaScript may not perform very well on the Propeller since it requires a garbage collector and is dynamically typed. It can certainly be made to run using the PropGCC XMM modes or other external memory approaches but I doubt that the performance will ever be acceptable.
I'm afraid that JavaScript may not perform very well on the Propeller since it requires a garbage collector and is dynamically typed.
I guess that means that a "Netpeller" board is out of the question then.
Though that does make me wonder if the propeller actually is suited for a GC-based language. One cog, running multiple tasks, could be the memory manager: one task to process memory requests from the other cogs, one task to perform garbage collection. Hub ram could be used as a hot cache, while external ram would hold onto the rest. Because the GC would always be running, you wouldn't necessarily encounter the occasional (and unacceptable, in this case) pauses that VMs like Java and CLR encounter. Propeller's lack of interrupts might actually make it an ideal platform for an efficient GC implementation.
I'm not sure I'm ready to give up on BASIC. Parallax still has a large installed base of Stamp customers, and they would know how many have looked for a path to upgrade.
The Arduino success is part of the fact that while it is c++, it has buried most of that object oriented stuff behind a couple walls. That is how they attract the artist community who want that knowability, these people are not programmers and really don't want to become that. With gcc it would be easy to support the sketch style of programming. The challenge would be to move the libraries over.
I cringe at the idea of teaching java or other object oriented language as the intro to programming. I see a large number of people that had struggled through that and most have given up on programming. That's part of my motivation to BASIC, it is pretty easy to pick up for the non-programmer and for them to focus on the problem.
I'll probably get dumped on, but ASM is not the path for most of the world. Yes there are hardcore people here who love to get down and dirty with it, but talk about knowability, it is probably more like don't careability. I program for a living and I've only had to write a handful of lines of assembly in the last 10 years, and those because the language c did not have a construct for them. If you care those were RBIT and WFI on an ARM.
It's much more important to get that casual user to turn on an LED or move that motor, than to have them set some bits in a register.
Parallax needs to leverage their strengths, which include these forums and the user base.
BASIC would be useful if it ran on a C++ backbone. However, don't expect BASIC by itself to be popular again, it won't happen. If you need convincing on this look to the Arduino community.
I've been immersed in the Arduino community for a while now and seen what is useful. People just want something that is full of features/flexible and easy to use. The hardware in particular is of little importance. Its the software that is important. Truly good software on both the computer and the microcontroller is what is needed.
As for the prop lacking memory or other hardware elements... a standard board design solves this. Like what Arduino provides.
I'm not sure I'm ready to give up on BASIC. Parallax still has a large installed base of Stamp customers, and they would know how many have looked for a path to upgrade.
The Arduino success is part of the fact that while it is c++, it has buried most of that object oriented stuff behind a couple walls. That is how they attract the artist community who want that knowability, these people are not programmers and really don't want to become that. With gcc it would be easy to support the sketch style of programming. The challenge would be to move the libraries over.
...
Parallax needs to leverage their strengths, which include these forums and the user base.
I find it hard to fault the logic here. Again, I'm not a fan of BASIC, but I realize that many people are. That goes for beyond just the Parallax user base too -- Maximite (Duinomite), BASCOM, PICBASIC, Proton BASIC, Swordfish BASIC... and no telling how many more examples could be given. Clearly there is considerable interest, still, in programming with BASIC on bare metal. And in terms of simply learning microcontroller/embedded programming, it's hardly any worse than Arduino's dumbed down C++ or programming hardware in some HLL on a bloated Linux system.
One more thing. I wouldn't spend too much effort chasing the Arduino crowd specifically. I suspect that Arduino has passed, or nearly has, its peak now -- what with RPi et al. and especially now BeagleBone Black.
I was kind of kidding about the JavaScript idea. Howevever I'm old enough to learn that even the most brain dead and implausibly stupid ideas can take off (Starting with BASIC on micros and ending with FaceBook).
I don't expect JS on the Propeller to have impressive performance but JavaScript is already among us in the micro-controller world: http://www.espruino.com/
Thing is it's another "hook". There are a billion people out there who know something about JS.
On the PC JavaScript may be interpreted and slow but it matters not because most of what you are doing is written in C libraries anyway. JS is only the "glue" holding all that together.
Similarly JS on the Prop might be slow, more so than Spin, but there are the seven other COGs out there doing the real work.
Brucee,
The Arduino success is part of the fact that while it is c++, it has buried most of that object oriented stuff behind a couple walls.
Yes indeed. A stroke of genius on the part of the Arduino guys. They never mention C or C++ in their documentation. No, they talk about "Processing" and "Sketches" and what ever other Smile. Importantly in all their tutorials and guides they only introduce the "easy" parts of C++. That is how a user can use objects.
Supporting the Arduino API on Prop cannot be so hard.
I cringe at the idea of teaching java or other object oriented language as the intro to programming.
That's interesting. C++ as used in the Arduino is object oriented and people get on with it just fine. Spin is also object oriented to the same level as the Arduino guys present.
Java is, of course, a complete nightmare that does not address any real problems.
Oddly I was recently watching two sets of videos on YouTube from Berkeley. Both introductions to computer science and covering much the same ground in algorithms etc. One used Scheme and took two hours to introdue the language before getting in to the real subjct matter. The other used Java and spent half the course time explaining how to use Java before getting anything meaningful done.
I'm reading this thread with great interest, and I agree with almost all viewpoints.
I'm seeing Martin Hodge (Propeller ASC) and Jeff Ledger (OldBitCollector -- Pocket Mini Computer) are following too so I'm wondering if no-one has thought of creating a self-hosting Arduino?
What I mean is a board that has Arduino headers (including the silly botched header that will make you never use Arduino on a breadboard), plus an SD card slot, plus connectors for audio/video (3.5mm) plus PS/2 for keyboard/mouse. Just plug in a TV or video monitor and a PS/2 keyboard and you'll see the familiar Arduino GUI so you can type away!
With the Propeller 1 you get into trouble building this, because you run out of memory pretty quickly and you run out of pins slightly less quickly and there are no real analog pins. But with a Propeller 2, this should not be too far-fetched. Heck it may even be possible to have TWO sets of Arduino headers with all those pins available :-)
If this would be marketed well, it could be something that a lot of Arduino users don't even realize they're looking for. "What could be easier than debugging an Arduino project with a PC or a Mac? Debugging it on the same board as the one you're running it on! WHILE IT'S RUNNING! Buy Now Prop2ino!"
I'm just bringing this up because I *KNOW* it's probably impossible :cool:
I think the focus has to somewhere other than the desktop computer. The BBB and Rpi are far better platforms than the P2, ...
It's more likely someone may build a striped Linux aimed at the BBB. Those platforms are here to stay. I think there is probably more benefit in a simple to use education platform which might be oriented around a P2. But the P2 is not the supercomputer on the desktop. Rember the BBB has a 1GHz CPU, 2 additional CPUs, graphics hardware, floating point engine, tightly coupled caching. It's a completely different class.
Exactly. Might as well forget about that right now (other than maybe a "Hey, Look what I did!" sort of thing).
For the Propeller think in terms of ...
Bare metal
I/O intensive
Real-time
Niche applications, places that would normally fall into the gray area between a relatively powerful MCU and a small- to mid-sized FPGA
Pairing Prop with RPi and other SBCs to expand their real-world interfacing capabilities.
Educational/hobbyist boards with diverse/unique hardware abilities and an easy-to-use programming environment with direct access to that hardware.
No doubt there is more as well. But here in these criteria is where it likely starts for the Propeller to be viable commercially.
BASIC would be useful if it ran on a C++ backbone.
Can you elaborate on that idea? I don't understand what it is about.
Truly good software on both the computer and the microcontroller is what is needed.
Yes indeed. Remember the totally unusable Altair machine and the take off of MS BASIC.
KC_Rob
...on a bloated Linux system.
Perhaps this is just a nit-picky language thing but what is "bloated" about a Linux system?
Sure it's big. Comapared to the good old C64 days but it also does a lot more. But is it unecessarilly big (i.e. bloated)?
Yesterday I insatlled a Debian Linux on an ARM board. The base system giving me all the normal command line tools and network connectivity came to 300MB or so.
Is that bloated? Which proram, module or library could we do without? Which line of code is in there that we can take away?
"bloated" to me implies the existance of unecessary code, duplication of code etc. I don't see that in my systems so far.
Perhaps this is just a nit-picky language thing but what is "bloated" about a Linux system?
What I'm doing is, I believe, repeating a point you were making earlier: Is, say, an RPi really appropriate for every embedded task? Probably not, because it's overkill and adds many layers between you (the programmer/engineer) and the hardware. Why even talk of stripped down (or "real-time") Linux if there isn't excess code for the task at hand ("bloat") in there?
Were you not yourself saying something similar to this just a few comments back?
I was thinking about that software bloat issue recently. Looking at my ARM boards, including Raspberry Pi's I see that the famous software bloat occupies a few square millimeters of SD card when not in use. When running it sits on a few square millimeters of processor/RAM on the board. I start to wonder why people are complaining about "bloat", one can hardly see it. In general when my little programs run they have the whole machine to themselves.
I guess you were making the same point earlier (sorry, confused you with Brucee it seems).
Regardless, this "bloat" is costly (in terms of space, cost, complexity) when it truly isn't required. Ie, I don't need an RPi (or even anything remotely like it) for every embedded/real-time task and would be very mistaken to think otherwise.
Maybe the wrong term, and maybe part of my perspective. I do bare metal programming all the time on ARMs with limited memory (for a living, and yes they even pay me to do this).
Anyway, unix ran on PDP-11s with less than 128K (maybe even 64K) of memory, and while it did not have the graphical user interface, it did have a lot of the pieces people needed to communicate and program. Now you've got an Rpi that once you load it all up is definitely a dog when running a browser. And the first Macs only had 128K of memory running on an 8 MHz 68000.
So from an outsiders perspective 8MHz / 128K vs 700 MHz / 512M and are your getting 100x performance?
I'm wondering if no-one has thought of creating a self-hosting Arduino?
The Alamode by Wyolum for the Raspberry Pi. It's pretty much the self hosting Arduino. Put it on top of a $35 RasPi and you have a place to run your full Arduino IDE plus bunches of other glue tools for a total cost of $85. That's a pretty sweet self-hosting package. Plus the software to work between the Arbuino hardware and the RasPi. The self-hosting Propeller2 version of the Alamode is what I'd like to see. A RasPi shield with a P2 and all the needed connectors (P2 standard) to use it as a development platform. Run SimpleIDE/PropGCC on the RasPi and put together some really nice glue software to make interfacing really easy.
Maybe the P2 (and P1 for that matter) also need a Firmata support to provide a standard way to talk to the hardware from a host computer. That way everyone doesn't have to roll their own protocol just to exploit the P1/2 hardware from a host computer. The P1/P2 hardware close to the real world becomes a very smart and capable peripheral to a host system. This seems like another viable way to increase the P2 presence and open doors for new users to explore the hardware.
I do agree. Sometimes I wonder why things get so big. Of course back in the day, or even now on the Prop for example , if you only want to wiggle a GPIO of do simple graphics it was done with amazingly small amounts of code.
But I challenge you to show me the "bloat" in a minimal Linux install. What is it that need not be there? What is it that can be optimized for size? And so on.
All that code, as big and scary as it may seem is there for a reason. Take code away and you remove functionality that I might like to have.
As for the Raspi being a "dog" when running a browser. That is true compared to running a browser on a modern PC. Hardly the fault of Linux. Modern browsers are like that. They have a lot of work to do.
brucee,
...8MHz / 128K vs 700 MHz / 512M and are your getting 100x performance?
A very good question. I do believe that my Fast Fourier Transform bench mark runs a 100 or so times faster than it would on an old 8MHz machine.
KC_Rob,
Context, Heater, context. In certain contexts, one can quite accurately say that "bloat" is present.
I don't understand. If I want the functionality: multi-user operating system, file system, networking, security (SSL/TLS), webserver, etc etc etc then I need the code to do all that. Hopefully it's not much bigger/slower than it actually has to be to get the job done.
If I only want to flash a LED then that's a few lines of code and all the other stuff seems like "bloat". Well, if you don't use it don't include it in your project.
I don't understand. If I want the functionality: multi-user operating system, file system, networking, security (SSL/TLS), webserver, etc etc etc then I need the code to do all that. Hopefully it's not much bigger/slower than it actually has to be to get the job done.
Heater, once again we're talking past each other. When you get down to it, we agree (I'm fairly certain anyway). What I'm talking about are the many many instances where you don't need all that stuff; maybe a small fraction of it, if even that. It just wouldn't make sense to throw an embedded Linux platform at every real-time/embedded project. Sometimes bare metal is the better, more logical choice. Ask yourself why, and methinks you will see that in the end we're not so far apart.
....The technical people tend to see Arduino for what it is but they use it anyway because there's so much Smile made for it now.....
Yes indeed. The technical people seem motivated to bring their creations to the masses, to appear relevant to the Maker movement, to play the hip card, etc. and to drive down costs thanks to crowdsourcing, etc. I'm afraid that in the eyes of these younger maker people, I look like I'm being either snooty or unbearably old-fashioned when I'm not able to interface somehow with their Arduino culture. You know you're a real outcast when you're kinda brainy but even the geeks and nerds reject you.
KC_Rob, Yes we agree. No problem with using the minimal appropriate solutions here. And for sure I would probably not employ Linux or similar OS for many small real-time tasks. The only nit pick is the use of the word "bloated". It comes over a a slur implying the code is not well written and unnecessarily slow and big. This is clearly not the case with Linux and a lot of the programs that normally come with it. Or if it is the case, one has the obligation to point out where and how it can be improved and perhaps even make those improvements.As I said, if you don't need the features in the code it looks like "bloat", so don't use it and it's not bloat anymore. If you do need those features then you have to except that some code size comes with them.
Comments
Ultimately, BASIC wouldn't make the P2 any more useful to me, because I'm just not interested in hacking BASIC because the syntax is so different from C and other languages, I can copy and paste.
I've ported C code to PHP with minimal effort, Javascript is fairly C like for some stuff.
My one no need Compiler.
It is text based direct in line interpreter
It's great to be thinking about going back to simple systems. but the isolated or "stand-alone" BASIC computer is actually a concept that scares (or bores) the younger "always connected" generation.
Almost every student in junior high / highschool (in the US) encounters these standalone BASIC interpreting battery powered LCD systems in the form of a graphing calculator from Texas Instruments in their math class. Unfortunately the rate of engagement for anything beyond math and games is negligible.
In first place it will be Loaded from Flash -- So You decide if You will load it in Flash and use.
Second -- I made it mostly for me -- If anyone will be interested OK for me.
The P2 will always boil down to a 200 MHz CPU with a slow pipe to its large memory. Yes there are 8 CPUs, but they all get to wait for that one memory that consumes 1 COG to service it. Yes you can build some hobbyist retro emulators, but will that ever be a sustaining market? No
It's more likely someone may build a striped Linux aimed at the BBB. Those platforms are here to stay. I think there is probably more benefit in a simple to use education platform which might be oriented around a P2. But the P2 is not the supercomputer on the desktop. Rember the BBB has a 1GHz CPU, 2 additional CPUs, graphics hardware, floating point engine, tightly coupled caching. It's a completely different class.
As for that powerful 1Ghz CPU, etc... machine. Yeah. Killer stuff, cheap too. But, it's not all that knowable, and it sometimes isn't all that accessible either. Of course, both of those are subjective based on the task and people, but overall there are a lot of layers in there, complexity, things to be managed, known, dealt with.
Since the P2 has great math in PASM now, it's kind of cake to prototype something, or just get a display of something else, etc... Seems to me, that could be extended some too, making for an awesome calculator. Just a program away on an SD card. What do you do with that powerful system when you want a bunch of smart I/O? I'm mentoring somebody right now who got a Pi because they thought it would be easier than Propeller is for many things. Turns out that "knowable" factor is significant. At times, I don't think we appreciate all the understanding we build up over the years. People jumping in fresh, or who want a lean experience do. Take that same Pi and a comms library that works with a pluggable P2 board of some kind? Could be golden. It's compelling to me. I really don't care whether or not it's a PC. Frankly, a Pi running Linux is good enough for the basics and communications, programming, etc... I could ditch the laptop altogether on a scenario like that.
As for the 8 CPU's waiting on that one memory... Well, I think that's highly arguable. One can do anything with a Prop in this respect. It's entirely possible to be running some code out of the HUB, some in the COG, some from the SDRAM, data going various places, more code and data from SD, flash, hook up two SDRAMS, or vary the bus width, etc... Whether or not this is true really depends on how things are written and what the end goals are more than it does anything else.
The average PC running whatever is a great communications tool, and it's a great general purpose computing tool. Going beyond that on either axis requires investments in time, understanding, dollars, etc... Lots of people seeking to do a lot of that stuff on phones / tablets. Seems to me, a P2 that is connectable, programmable in the way being described here couples with something like that perfectly. Do the cool stuff, get it done, use the pad to show 'n tell, or get paid... It's a plausible use case for sure. Maybe not a primary one, but it could be a compelling one for those who really don't want to futz with a PC beyond the basics, or just don't use one at all and stick with simpler devices.
BASIC was intended as a simple language to introduce people to computing and programming. I suffered that introduction in 1975 using a teletype connected to a remote mainframe. It kind of made sense back then as there pretty much wasn't anything else. Things like ALGOL were perceived as being too much for a beginner to tackle and that whole edit/compile/run palaver was a tedious distraction. Then came the micro-computers and BASIC again, thanks Bill Gates, Again it kind of made sense as there was nothing else and as Bill showed you could make a programming environment fit int 4K of memory which would actually make your Altair or whatever useful in some way.
BASIC was magical in that it was amazingly simple to get your machine to do something. How many kids started off doing this when they saw a C64 or some such micro in a store:
10 PRINT "Some rude message"
20 GOTO 10
After that it was pretty useless and the curious kids were soon into assembler.
History suggests to me that BASIC is no longer required.
We have an ocean of tinkerers putting things together with C++ on Arduino's. Good grief, C++.Really, who would have guessed that would happen?
Then we have an ocean of people trying out their Raspberry Pi's. They have access to pretty much any language. Things like Python are very popular, powerful and easy to pick up.
Against this new world order BASIC becomes rather unimpressive. Was it ever really required? Looks to me, now, like the whole reason for it's existence is questionable.
The idea if getting the PII running Arduino "sketches" is great. There is something that is familiar to hundreds of thousand of Arduino users.
Someone mentioned JavaScript. Excellent idea!
I kind of agree. The focus cannot be a fully fledged stand alone computer. It's hard to imagine that would amount to much more than a C64 level machine and the world expects a lot more now a days. That's not to say I would not like to see it done though.
I was thinking about that software bloat issue recently. Looking at my ARM boards, including Raspberry Pi's I see that the famous software bloat occupies a few square millimeters of SD card when not in use. When running it sits on a few square millimeters of processor/RAM on the board. I start to wonder why people are complaining about "bloat", one can hardly see it. In general when my little programs run they have the whole machine to themselves.
Of course bloat has repercussions in "knowability". There is a satisfaction in knowing every single line of code running on your machine. From an educational standpoint that is brilliant. But really if you want a pile of complex features you need a pile of code and soon it will become unknowable to any single human being. I'm sure it's done already. And nothing stripped down about it. Just yesterday I completed installation of Debian on an ARM board of similar specs. That is bog standard, full up Debian with KDE desktop, FireFox, webserver, video players etc etc.
I concur with those that suggest the PII should be pushed as real-time real world interface. I'd like to see PII boards for piggy backing on RaspberryPi's, BBB's and other machines in common use. Even the Arduino.
I guess that means that a "Netpeller" board is out of the question then.
Though that does make me wonder if the propeller actually is suited for a GC-based language. One cog, running multiple tasks, could be the memory manager: one task to process memory requests from the other cogs, one task to perform garbage collection. Hub ram could be used as a hot cache, while external ram would hold onto the rest. Because the GC would always be running, you wouldn't necessarily encounter the occasional (and unacceptable, in this case) pauses that VMs like Java and CLR encounter. Propeller's lack of interrupts might actually make it an ideal platform for an efficient GC implementation.
The Arduino success is part of the fact that while it is c++, it has buried most of that object oriented stuff behind a couple walls. That is how they attract the artist community who want that knowability, these people are not programmers and really don't want to become that. With gcc it would be easy to support the sketch style of programming. The challenge would be to move the libraries over.
I cringe at the idea of teaching java or other object oriented language as the intro to programming. I see a large number of people that had struggled through that and most have given up on programming. That's part of my motivation to BASIC, it is pretty easy to pick up for the non-programmer and for them to focus on the problem.
I'll probably get dumped on, but ASM is not the path for most of the world. Yes there are hardcore people here who love to get down and dirty with it, but talk about knowability, it is probably more like don't careability. I program for a living and I've only had to write a handful of lines of assembly in the last 10 years, and those because the language c did not have a construct for them. If you care those were RBIT and WFI on an ARM.
It's much more important to get that casual user to turn on an LED or move that motor, than to have them set some bits in a register.
Parallax needs to leverage their strengths, which include these forums and the user base.
I've been immersed in the Arduino community for a while now and seen what is useful. People just want something that is full of features/flexible and easy to use. The hardware in particular is of little importance. Its the software that is important. Truly good software on both the computer and the microcontroller is what is needed.
As for the prop lacking memory or other hardware elements... a standard board design solves this. Like what Arduino provides.
One more thing. I wouldn't spend too much effort chasing the Arduino crowd specifically. I suspect that Arduino has passed, or nearly has, its peak now -- what with RPi et al. and especially now BeagleBone Black.
I was kind of kidding about the JavaScript idea. Howevever I'm old enough to learn that even the most brain dead and implausibly stupid ideas can take off (Starting with BASIC on micros and ending with FaceBook).
I don't expect JS on the Propeller to have impressive performance but JavaScript is already among us in the micro-controller world:
http://www.espruino.com/
It can be done in 128K of code.
Jazzed and I have managed to get TinyJS, from the same guys as above, running on the P1 already:http:// http://code.google.com/p/tiny-js/
Thing is it's another "hook". There are a billion people out there who know something about JS.
On the PC JavaScript may be interpreted and slow but it matters not because most of what you are doing is written in C libraries anyway. JS is only the "glue" holding all that together.
Similarly JS on the Prop might be slow, more so than Spin, but there are the seven other COGs out there doing the real work.
Brucee,
Yes indeed. A stroke of genius on the part of the Arduino guys. They never mention C or C++ in their documentation. No, they talk about "Processing" and "Sketches" and what ever other Smile. Importantly in all their tutorials and guides they only introduce the "easy" parts of C++. That is how a user can use objects.
Supporting the Arduino API on Prop cannot be so hard.
That's interesting. C++ as used in the Arduino is object oriented and people get on with it just fine. Spin is also object oriented to the same level as the Arduino guys present.
Java is, of course, a complete nightmare that does not address any real problems.
Oddly I was recently watching two sets of videos on YouTube from Berkeley. Both introductions to computer science and covering much the same ground in algorithms etc. One used Scheme and took two hours to introdue the language before getting in to the real subjct matter. The other used Java and spent half the course time explaining how to use Java before getting anything meaningful done.
I'm seeing Martin Hodge (Propeller ASC) and Jeff Ledger (OldBitCollector -- Pocket Mini Computer) are following too so I'm wondering if no-one has thought of creating a self-hosting Arduino?
What I mean is a board that has Arduino headers (including the silly botched header that will make you never use Arduino on a breadboard), plus an SD card slot, plus connectors for audio/video (3.5mm) plus PS/2 for keyboard/mouse. Just plug in a TV or video monitor and a PS/2 keyboard and you'll see the familiar Arduino GUI so you can type away!
With the Propeller 1 you get into trouble building this, because you run out of memory pretty quickly and you run out of pins slightly less quickly and there are no real analog pins. But with a Propeller 2, this should not be too far-fetched. Heck it may even be possible to have TWO sets of Arduino headers with all those pins available :-)
If this would be marketed well, it could be something that a lot of Arduino users don't even realize they're looking for. "What could be easier than debugging an Arduino project with a PC or a Mac? Debugging it on the same board as the one you're running it on! WHILE IT'S RUNNING! Buy Now Prop2ino!"
I'm just bringing this up because I *KNOW* it's probably impossible :cool:
===Jac
For the Propeller think in terms of ...
Bare metal
I/O intensive
Real-time
Niche applications, places that would normally fall into the gray area between a relatively powerful MCU and a small- to mid-sized FPGA
Pairing Prop with RPi and other SBCs to expand their real-world interfacing capabilities.
Educational/hobbyist boards with diverse/unique hardware abilities and an easy-to-use programming environment with direct access to that hardware.
No doubt there is more as well. But here in these criteria is where it likely starts for the Propeller to be viable commercially.
Yes indeed. Remember the totally unusable Altair machine and the take off of MS BASIC.
Were you not yourself saying something similar to this just a few comments back?
Regardless, this "bloat" is costly (in terms of space, cost, complexity) when it truly isn't required. Ie, I don't need an RPi (or even anything remotely like it) for every embedded/real-time task and would be very mistaken to think otherwise.
Maybe the wrong term, and maybe part of my perspective. I do bare metal programming all the time on ARMs with limited memory (for a living, and yes they even pay me to do this).
Anyway, unix ran on PDP-11s with less than 128K (maybe even 64K) of memory, and while it did not have the graphical user interface, it did have a lot of the pieces people needed to communicate and program. Now you've got an Rpi that once you load it all up is definitely a dog when running a browser. And the first Macs only had 128K of memory running on an 8 MHz 68000.
So from an outsiders perspective 8MHz / 128K vs 700 MHz / 512M and are your getting 100x performance?
The Alamode by Wyolum for the Raspberry Pi. It's pretty much the self hosting Arduino. Put it on top of a $35 RasPi and you have a place to run your full Arduino IDE plus bunches of other glue tools for a total cost of $85. That's a pretty sweet self-hosting package. Plus the software to work between the Arbuino hardware and the RasPi. The self-hosting Propeller2 version of the Alamode is what I'd like to see. A RasPi shield with a P2 and all the needed connectors (P2 standard) to use it as a development platform. Run SimpleIDE/PropGCC on the RasPi and put together some really nice glue software to make interfacing really easy.
Maybe the P2 (and P1 for that matter) also need a Firmata support to provide a standard way to talk to the hardware from a host computer. That way everyone doesn't have to roll their own protocol just to exploit the P1/2 hardware from a host computer. The P1/P2 hardware close to the real world becomes a very smart and capable peripheral to a host system. This seems like another viable way to increase the P2 presence and open doors for new users to explore the hardware.
I do agree. Sometimes I wonder why things get so big. Of course back in the day, or even now on the Prop for example , if you only want to wiggle a GPIO of do simple graphics it was done with amazingly small amounts of code.
But I challenge you to show me the "bloat" in a minimal Linux install. What is it that need not be there? What is it that can be optimized for size? And so on.
All that code, as big and scary as it may seem is there for a reason. Take code away and you remove functionality that I might like to have.
As for the Raspi being a "dog" when running a browser. That is true compared to running a browser on a modern PC. Hardly the fault of Linux. Modern browsers are like that. They have a lot of work to do.
brucee, A very good question. I do believe that my Fast Fourier Transform bench mark runs a 100 or so times faster than it would on an old 8MHz machine.
KC_Rob, I don't understand. If I want the functionality: multi-user operating system, file system, networking, security (SSL/TLS), webserver, etc etc etc then I need the code to do all that. Hopefully it's not much bigger/slower than it actually has to be to get the job done.
If I only want to flash a LED then that's a few lines of code and all the other stuff seems like "bloat". Well, if you don't use it don't include it in your project.
If you like you can run the Propeller development system on the Raspberry Pi:http://forums.parallax.com/showthread.php/141469-SimpleIDE-for-Raspberry-Pi-RaspianThat gives you a self-contained Raspi+Prop development set up.I will put out out a Propeller II version soon. Just awaiting the go ahead from Jazzed.
Yes indeed. The technical people seem motivated to bring their creations to the masses, to appear relevant to the Maker movement, to play the hip card, etc. and to drive down costs thanks to crowdsourcing, etc. I'm afraid that in the eyes of these younger maker people, I look like I'm being either snooty or unbearably old-fashioned when I'm not able to interface somehow with their Arduino culture. You know you're a real outcast when you're kinda brainy but even the geeks and nerds reject you.