Slashdot Mirror


ELIoT, Distributed Programming For the Internet of Things

descubes writes: ELIoT (Extensible Language for the Internet of Things) is a new programming language designed to facilitate distributed programming. A code sample with less than 20 lines of code looks like a single program, but really runs on three different computers to collect temperature measurements and report when they differ. ELIoT transforms a simple sensor API into a rich, remotely-programmable API, giving your application the opportunity to optimize energy usage and minimize network traffic.

Using fewer resources than Bash, and capable of serving hundreds of clients easily on a Raspberry Pi, ELIoT transparently sends program fragments around, but also the data they need to function, e.g. variable values or function definitions. This is possible because, like in Lisp, programs are data. ELIoT has no keywords, and program constructs such as loops or if-then-else are defined in the library rather than in the language. This makes the language very flexible and extensible, so that you can adapt it to the needs of your application.

The project is still very young (published last week), and is looking for talented developers interested in distributed programming, programming languages or language design.

53 of 91 comments (clear)

  1. Re:Why not lisp by Anonymous Coward · · Score: 1

    LISP is old, man. I wouldn't be caught dead using that dinosaur. Slap another name on it and make it hip and maybe ... just maybe ... I'll check it out. If you're lucky.

  2. Wanted: API which is not a rich API by swb · · Score: 4, Funny

    Is there such a thing, or are all (advertised) APIs considered, rich, lush and exquisite as the 12 square feet of Corinthian Leather in the back of my '75 Cordoba?

  3. Phone... Home... by WalrusSlayer · · Score: 1

    ...so am I so old that I'm one of the few people who get's the E.T. reference?

    1. Re:Phone... Home... by descubes · · Score: 1

      Brilliant. Author here, and I must admit it never occurred to me ;-)

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    2. Re:Phone... Home... by wonkey_monkey · · Score: 2

      What's E.T. short for?

      Because he's only got little legs.

      --
      systemd is Roko's Basilisk.
  4. Re:Internet of Things by Anonymous Coward · · Score: 1

    Sounds like? It is yet another idiotic marketing term. But "Industrial Internet" certainly isn't a good alternative,as the term "industrial" usually implies "used in industry", "not domestic" etc. IoT spans industrial, commercial and domestic uses, so you'd have to look for something a bit more descriptive.

  5. Re:So... by ArcadeMan · · Score: 1

    No, but you can use ELIoT to phone home... /ducks

  6. Re:Why not lisp by bondsbw · · Score: 4, Funny

    Like Clojure? That's a cool name. It's like "closure" but with a J. But let's not talk about functional programming, that's icky.

    And best thing, nobody even has to know it is LISP! Parenthetically speaking, of course.

    --
    All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
  7. capable of serving hundreds of clients easily by QuietLagoon · · Score: 1

    How can something like that be said for a new programming language whose project was just announced this month, and is currently little more than a laboratory curiosity?

    1. Re:capable of serving hundreds of clients easily by descubes · · Score: 1

      How can something like that be said for a new programming language whose project was just announced this month, and is currently little more than a laboratory curiosity?

      By testing it. Tested with 1000 clients against a single Raspberry Pi. So that's "hundreds".

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  8. Re: Internet of Things by Anonymous Coward · · Score: 1

    The IoT should be called the "shitstorm of devices which have no fucking reason to be networked," and the right name for the programming language serving the niche should be IDIoT.

  9. Re:Internet of Things by Junta · · Score: 1

    Also, the trap is that any term that gets adopted will *become* yet another idiotic marketing term.

    Any phrase attracting buzz is doomed to become a meaningless marketing term abused by companies with their agendas to be relevant.

    I particularly dislike the phrase 'internet of things', but I know I'll dislike any term that sees common adoption while the media/marketers have an interest in the field until that interest dies down and it no longer becomes fashionable for companies to shoehorn it into their message.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  10. Re:Why not lisp by knightghost · · Score: 2

    Lisp failed because 1) it's hard (different thoughts/mentality to program) and 2) flexibility = unsupportable by another developer.

  11. Require use case by CastrTroy · · Score: 1

    Hopefully I can use it to program my old Speak & Spell. Would be awesome to code for this old hardware while eating Reese's Pieces.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  12. And, privacy and security? by gstoddart · · Score: 4, Insightful

    So are privacy and security baked into this or any of the other crap in this "Internet of Things"? Or are we continuing to write insecure garbage which will ignore these very important things?

    As long as IoT is a marketing term about what this bold new future will bring us (more shit to buy, less security) .. I am of the opinion that this is a solution in search of a problem.

    Consumers aren't saying "gee, what we really want is a bunch of pieces which screw up our privacy and security because people are too lazy and greedy to build it in".

    People who want to sell us on this idea are driving this.

    Sorry, but this stuff is basically proof of concept of "wouldn't it be cool if" while paying zero attention to the real world issues which will need to be solved before this will ever be a viable thing.

    Right now it's just marketing hype, and a bunch of glassy eyed futurists trying to tell us how a technology nobody is asking for is going to revolutionize the world.

    I don't see a single application for IoT that means I as a consumer want this or trust this. In fact, I see lots of evidence this is poorly thought out, thrown together, and not anything which will benefit anybody but the people selling it.

    Get off my damned lawn.

    --
    Lost at C:>. Found at C.
    1. Re:And, privacy and security? by swb · · Score: 4, Interesting

      In the headlong rush to market and sell the IoT, it sure seems like IoT devices are either trying to stake out a standalone role or they're just punting everything related to serious networking and security to some central controller system. Worst is the combination of both of these concepts into "cloud based" controllers, giving you weak devices with little inbuilt intelligence coupled with forced data exporting to "the cloud".

      I don't even understand what constitutes IoT in real world applications these days -- thermostats? Alarm systems with some kind of internet interface? Those LED lights you can change on your phone? Web cameras?

      The kinds of data that seem smart would be more like smart electrical panels that allow you to closely monitor and control electrical consumption on a per-breaker basis, especially when tied into solar/wind or generator based backup systems, but I don't hear anything about that.

    2. Re:And, privacy and security? by Zontar+The+Mindless · · Score: 2

      I would just prefer that I not come home to find my flat reduced to smouldering rubble because some marketroid thinks I just have to be able to turn my stove on at home while I'm at the office... and some script kiddy with time on his hands finds a 'sploit for mine.

      --
      Il n'y a pas de Planet B.
    3. Re:And, privacy and security? by phantomfive · · Score: 1

      The IoT is here already, look around you:

      Cash registers at restaurants are all connected to the internet now (you can order online before arriving).
      Electric meters from PG&E are all connected to the internet now.
      Even parking meters are connected to the internet.

      We don't have computers embedded in every disposable bandaid still. Some things don't make sense to connect to the internet (I can't imagine ever owning a smart refrigerator). But of the things that do, more and more of them are connected.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:And, privacy and security? by gstoddart · · Score: 2

      While your concerns are certainly valid... this post is about a programming language, not something you buy off the shelf.

      If you the ELIoT programs that you write to have security, IMPLEMENT IT.

      You know what? Anybody trying to make the programming language for the IoT who spends zero time on security and privacy ... well, they're idiots.

      It basically says "were going to solve the fun problems but we don't give a shit about the elephant in the room".

      If the IoT isn't build from the ground up to have privacy and security, then it's going to be garbage from the onset.

      Saying "if you want security then write it yourself" is a lazy and moronic evasion of the problem. Design it properly and it can be something good. Fail to design for the real things it needs to be able to do, and it's just a hodge podge of crap.

      If the language which is supposed to be super awesome for IoT ignores these things, then it's not worth a damn for any real applications.

      We see countless consumer products which absolutely suck at security. Obviously we can't rely on corporations to give a damn or be qualified to do it. In which case if the platform doesn't have this built in, the platform is crap.

      But, it's IoT, and largely a marketing term. Which means it already is crap.

      --
      Lost at C:>. Found at C.
    5. Re:And, privacy and security? by phantomfive · · Score: 1

      It is very unlikely that the cash registers are connected to the internet. They may be connected to the same set of servers that you can access from your phone, but that does not make them "connected to the internet".

      It's here man, and they're popping up all over the place. They are definitely connected to the internet.

      --
      "First they came for the slanderers and i said nothing."
    6. Re:And, privacy and security? by phantomfive · · Score: 1

      It is possible that they could _access_ the internet (via a gateway) but if I can't use an IP address (and port) to connect to that device from here then they are not "connected".

      Now you're just trolling, because the distinction you are making is irrelevant to the conversation. Very few devices are connected to the internet without a firewall or NAT.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:And, privacy and security? by phantomfive · · Score: 1

      You still haven't shown that _any_ of them are actually connected to the internet even via a gateway. You have merely claimed that because it has WiFi (to a local network) that it is 'connected to the internet'.

      ROTFL You're a moron. Also, you didn't carefully read the links I provided.

      --
      "First they came for the slanderers and i said nothing."
    8. Re:And, privacy and security? by phantomfive · · Score: 1

      How, exactly, do you think the iPad minis are connected? TCP over avian carrier?

      --
      "First they came for the slanderers and i said nothing."
  13. "Less than 20 lines of code" by Junta · · Score: 2

    While this looks like a perfectly reasonable language, I'm a bit weary of this sort of bragging about line counts. I could do the same thing, it would look roughly like:
    ssh pi2.local 'while :; do pitemp=`ssh pi.local get_temp`; mytemp=`get_temp`; if [ abs($((mytemp - pitemp)) -gt 2 ]; then echo "Temperature on pi is $mytemp and on pi2 $mytemp. "'
    (abs and get_temp are up to the person to have the functions).

    Talk about the syntax being nicer, but lines of code is no big deal in this particular case. It has a nice and non-ugly 'run this on another host' syntax and automatically takes care of the communication channels in a reasonable fashion with a low amount of fuss. Leave it at that.

    --
    XML is like violence. If it doesn't solve the problem, use more.
    1. Re:"Less than 20 lines of code" by tomhath · · Score: 2

      Yea, only 20 lines of code. Because all the real work is done in the library it calls. Nuff said.

    2. Re:"Less than 20 lines of code" by phantomfive · · Score: 1

      Go look at the assembly for the Apollo control computer sometime. It's in assembly, but some of the control routines are smaller than the comments used to describe them. They are very short because they use function libraries and macros really well.

      That fact supports your point.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:"Less than 20 lines of code" by Xyrus · · Score: 1

      It's syntactical sugar really. As noted, most of the work is handled under the covers by what are essentially library calls. Any language can replicate this, and in a similar number of lines of code (given that the functionality available in a similar library).

      --
      ~X~
    4. Re:"Less than 20 lines of code" by descubes · · Score: 1

      Any language can replicate this, and in a similar number of lines of code (given that the functionality available in a similar library).

      Of course not. How do you implement a C or C++ library so that a variable or function declared on one computer is transparently used on another? In ELIoT, you can write this:


      Var -> "Declared on original computer"
      tell "pi.local",
            writeln "The value of Var is ", Var

      So let me try in C or C++, where the code inside "tell" is supposed to execute on another machine called "pi.local":


      #include "eliot-like-lib.h"

      int main()
      {
              char *Var = "Declared on original computer";
              tell("pi.local", { printf ("The value of Var is %s\n", Var); });
      }

      This is syntactically invalid, and I see no easy way to make it syntactically valid C or C++ . The closest I can think of are Apple's blocks. So you could write ^ { printf (...); } instead, which is no big deal. But then. How do you capture the value of Var and send it over?

      In order for this to work, you need a fully homoiconic language, where you can transmit the code and its data over the wire, and where there is a way to reconstruct it on the other side reliably so that you can execute there. I'm not saying you can't modify C to get there, but certainly not easily. And in any case, it's not just a library, and not in any language.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  14. Iot vs SoD by NotQuiteReal · · Score: 1

    You you would like to sod off?

    --
    This issue is a bit more complicated than you think.
    1. Re:Iot vs SoD by Zontar+The+Mindless · · Score: 1

      I'm on the "shitstorm of devices which have no fucking reason to be networked" side of the aisle, myself.

      --
      Il n'y a pas de Planet B.
  15. ...or a class of languages by Plumber,+Programmer, · · Score: 2

    If you add one 's', then you could use that name to describe a whole class of languages, or "Extensible Languages for the Internet of Things." I'm betting they don't have a better or more specific name because the only driving philosophy behind it is to "make a language for the Internet of Things." Alternately, they let some marketer choose the name, which is just as sad. What makes it worse is that its target environment, the "IoT," doesn't have a better name for ITSELF because the people pushing it don't really have a really strong, useful case for it, just a solution ("hey, we can put a simple computer in anything!") looking for a problem. (Sure, there are things that might be more useful when they're connected to SOMETHING else, but most devices? Not so much. The bigger concern is security and LIMITING the connections to only those who need it.) Also, I guess I should point out that the predecessor to Java, Gosling's "Oak," was intended for running "smart appliances," in other words, for some sort of Internet-connected devices...

  16. Re:Internet of Things by monkeyxpress · · Score: 2

    I particularly dislike the phrase 'internet of things', but I know I'll dislike any term that sees common adoption while the media/marketers have an interest in the field until that interest dies down and it no longer becomes fashionable for companies to shoehorn it into their message.

    How about 'Consumer Oriented Connectivity & Knowledge Systems?

  17. Has it been hacked yet? by AndyKron · · Score: 1

    Has it been hacked yet?

    1. Re:Has it been hacked yet? by jandrese · · Score: 1

      Even better: the whole thing appears to be a hack.

      --

      I read the internet for the articles.
  18. Re:Wanted: API which is not a rich API by cant_get_a_good_nick · · Score: 2

    I re-read your comment with the accent of Ricardo Mantalban in my head; it was much improved.

  19. Re:Why not lisp by slickwillie · · Score: 4, Funny

    "Lisp failed because 1) it's hard (different thoughts/mentality to program) and 2) flexibility = unsupportable by another developer."

    That will never "compile". Here, try this:

    (((((Lisp) ((failed) because) ((1))) (it(')s hard) ((different) (thoughts/mentality) ((t)o) program) and 2)) flexibility) (= unsuppor)(table) (by another developer.)))))))))))))))))))))

  20. Security? We don't need no stinking security! by Chelloveck · · Score: 1

    There's nothing said anywhere in the source code or docs about authentication or authorization. There's an Encrypt() hook in the source code but it's merely a stub function in the section commented "Configurable hooks for use as an application library", which implies to me that encryption is intended to be completely up to the the application.

    So the idea is that you're passing around executable bytecode from node to node in the clear, to be unquestioningly executed by the receiving node. Does anyone else see a problem here?

    Sure, it's a brand-spanking-new language. It's incomplete. I get that. But the security model cannot be an after-thought for something like this! It needs to be designed into the foundation of a serious IoT framework. As far as I can tell it hasn't even been considered.

    --
    Chelloveck
    I give up on debugging. From now on, SIGSEGV is a feature.
    1. Re:Security? We don't need no stinking security! by Lunix+Nutcase · · Score: 1

      Since when has security ever been anything but an afterthought when it comes to *groan* IoT *groan* devices?

    2. Re:Security? We don't need no stinking security! by descubes · · Score: 1

      Security has been considered, but is not implemented at this stage.

      The planned security model is to show only those features that are available to a given user. Say that temperature is available to anybody, but self_destruct requires a special privilege. Then anybody connecting to the device can request "temperature" and gets a response, but "self_destruct" is not even in the symbol table, so no way to access it. Trying to use it results in a run-time error, just as if you had tried to call schtroumpf.

      If you want to access a privileged feature, you do something like import "self_destruct". And that checks if you are allowed to import it or not. If you are, then your symbol table is populated with self_destruct and you can call it. Otherwise, run-time error as above. This is not implemented yet, but is definitely on my to-do list.

      Another validation that I plan to implement is the validation of "reply" code. Since you sent the code including the possible "reply" values, you can check on return that only a valid reply is sent, and reject any reply code that does not match one you sent.

      Regarding encryption, I'm still thinking. I'd like something very lightweight for performance reasons, e.g. XOR with a one-time pad.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    3. Re:Security? We don't need no stinking security! by mbeckman · · Score: 1

      Security has been considered, but is not implemented at this stage.

      "Success has been considered, put now is not possible because security was not implemented from the beginning."

      If you haven't learned the lessons of HTML, Email, ecommerce, and myriad other platforms that failed to address security at the start, Elliot is doomed.

  21. Re:License by phantomfive · · Score: 1

    GPL doesn't mean you can't use the language. Just like GCC is GPL, but it has been used for years to compile proprietary code. GPL means you can't extend the language without the extensions being under the GPL. That's probably a good thing.

    --
    "First they came for the slanderers and i said nothing."
  22. Re:Why not lisp by rlwhite · · Score: 2

    If I were developing something for the IoT space, I'd call it Integrating the Distributed Internet of Things (IDIoT).

  23. Oh good by 0xdeaddead · · Score: 2

    another boutique language that won't be here in five years.

    1. Re:Oh good by heson · · Score: 1

      another boutique language that won't be here in five years.

      Agree. But the ideas, if novel will continue in generations of boutique languages, until they get refined and distilled to a core that can be incorporated into a future C++ standard. (And then be misused for decades).

  24. Why not use Tcl, or Python, or Perl? by EvilTwinSkippy · · Score: 1

    Seriously. To do any serious task requires state, and the problem with a minimal shell is that it can't remember much. The major scripting languages where all written to solve this problem, as well as integrate with embedded code in C. I'm a fan of Tcl myself, but virtually any scripting engine would be an improvement to a network enabled Pseudo-BASH with a whitespace delimited language.

    --
    "Learning is not compulsory... neither is survival."
    --Dr.W.Edwards Deming
  25. Huh, maybe they could call it.... by gerald.edward.butler · · Score: 1
  26. The language makes security harder by presidenteloco · · Score: 1

    A language specifically designed to allow code to freely move around and execute on different nodes of a network of many devices is going to have extra challenges for security compared to other languages and platforms.

    So those who came up with the language should be explicitly addressing the security aspects of this mobile code.

    --

    Where are we going and why are we in a handbasket?
  27. Re:How about Ada? by K.+S.+Kyosuke · · Score: 1

    Designed with provable security in mind? So...like some Lisps?

    --
    Ezekiel 23:20
  28. Re:Why not lisp by HiThere · · Score: 2

    No. Lisp failed because the early versions were inefficient and then, during a critical period, the compilers were too expensive to afford. Around 1995 a decent Lisp compiler cost about $2,000 (depending on what utilities you needed). At this point I went looking for what it would cost today to purchase a copy of Allegro Common Lisp suitable for building GPL software. I couldn't readily find that information. This despite the fact that, e.g., Steel Bank Common Lisp is as free as gcc.

    When developers are learning their trade, they need to learn of basic tools, and they depend on libraries being available. This was the basic advantage of both the GPL and of C. C compilers were cheap, Fortran compilers were expensive. So C won. (And the early C compilers didn't have any noticable advantages over the Fortran compilers of the day except that they were cheaper. That, of course, changed as people wrote libraries for use with them.)

    OTOH, Lisp does have very different strengths than to C and Fortran. E.g., handling numbers is clumsier, but handling variable length strings of data is simpler. That may also have had an effect.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  29. And in Lisp, you do nothing but that by mbkennel · · Score: 1

    > GPL means you can't extend the language without the extensions being under the GPL.

    | This is possible because, like in Lisp, programs are data. ELIoT has no keywords, and program constructs such as loops or if-then-else are defined in the library rather than in the language. This makes the language very flexible and extensible, so that you can adapt it to the needs of your application.

    There's little difference here, the code of the 'language and libraries' merges with yours assimilating your code with its GPL cooties/holiness.

    When all you have is a lispy piece of (goo), all problems look like they can be solved with (goo (goo))---for some future modification of (goo (goo (goo))) to be implemented by somebody else..

  30. Yeah no. by bobmajdakjr · · Score: 1

    I think Ill just stick with C. That sample made my eyes bleed.

  31. Re:Why not lisp by tricorn · · Score: 1

    Actually, sort of reminds me of Tcl. I wonder how it compares size- and speed-wise.

    Tcll also has Tk available for anything with a display.

  32. Re:Why not lisp by tricorn · · Score: 1

    So ELIoT compiled is about 2.9MB, plus the C++ standard library (which is another 1.5MB or so) - this is compiled for MacOSX.

    The code to create an interpreter and have it run a file is about 1KB, and the Tcl library is under 2MB.

    I'd have to look more closely at ELIoT to see how comparable the two are in terms of capability.