Slashdot Mirror


Dao, a New Programming Language Supporting Advanced Features With Small Runtime

New submitter NeoHermit writes "This language (Dao) has never been mentioned on Slashdot before, but it might be interesting to many people here. As it has recently become feature-complete and just made its first beta release, it may be the right time to mention it here. Dao is an optionally-typed programming language that supports many advanced features with a small runtime. The feature list is probably as long as that of Python, but they are supported by a much smaller runtime (somewhere between Lua and Python, but closer to Lua). Besides optional typing, the other major features that worth mentioning include: built-in support for concurrent programming for multicore computers, very friendly C programming interfaces for embedding and extending, a LLVM-based JIT compiler, a Clang-based module for embedding C/C++ codes in Dao, and a Clang-based tool for automatic binding generation from C/C++ header files. You can also see many familiar features from other languages."

6 of 404 comments (clear)

  1. Re:There's a reason nobody talks about it by Anonymous Coward · · Score: 3, Insightful

    Lisp?

  2. Re:Do they have tail-recursion or lazy evaluation? by Greyfox · · Score: 5, Insightful
    Optional typing is not highly desirable. Everyone got all starry-eyed when they talked about how object oriented programming would allow you to have a container of objects and you could just put any arbitrary object into the container. Which is a great idea as long as you don't really think about it. Eventually you have to know what kind of object you're holding and you actually to use it to do some real work. The same thing goes for functional programming. Eventually you need to know what kind of data you're operating on, and you actually have to operate on it to do some real work. When the time comes to do some real work, you quickly realize just how much of a mess optional typing makes of your program.

    I've looked at a lot of code over the years that pushes the actual work to be done around like a two-year-old pushes peas around a plate. I've gotten to the point where I can read the mind of the programmer through the code he's written. He's thinking "If I push this over here maybe it will magically go away and I won't have to deal with it." Most of the time this is because he doesn't actually understand the business logic behind the code he's writing. He's writing to a series of requirements but he has no understanding of why the requirements exist or how they drive the business. So he tries to keep his code abstract as possible and hopes that no one notices.

    Sadly no one has yet written a language that forces you to actually understand the problem domain that you're coding. I'm sure it wouldn't be very popular if anyone ever did. Neither has anyone actually managed to write a language that allows you to write useful code without understanding the problem domain, and no one ever will. Now if someone could write a language that a non-programmer who understands why he needs code written to describe what needs to be done directly to the computer, that might fundamentally change my job description. Given that most of those people obviously can't even express this to another human being (Judging from their requirements docs,) I'm not losing any sleep over it.

    What the people who flit from language to language or framework to framework like bees are looking for is a tool that allows them to write code without understanding a problem. Someone who actually understands the problem will always outperform them in any given language. In other words, just because your language has an expressive syntax or any specific feature doesn't mean you can hire chimpanzees to code your application.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  3. Re:you had me at... by mwvdlee · · Score: 3, Insightful

    Strousoup doesn't exists, Stroustrup is still alive.
    "Optionally-typed" does not exclude type casting.
    Compiled languages have runtimes too.
    I think with "concurrent programming" they mean the widly accepted term "concurrent programming" http://en.wikipedia.org/wiki/Concurrent_programming
    Most popular programming languages have a C programming interfaces, including the ones you'd probably call "complete".

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  4. Re:There's a reason nobody talks about it by cyborg_zx · · Score: 5, Insightful

    That is what comments are for.

    No it isn't.

    Seriously I see stuff like this in legacy code all the time:

    // Add one to the iterator
    i--

    Comments lie, code doesn't. Someone is going to update the code and not bother with the comments.

  5. Re:There's a reason nobody talks about it by Anonymous Coward · · Score: 2, Insightful

    Perl: the expressive power of gibberish combined with the readability of gibberish!

    Seriously, you CAN write maintainable code in just about anything, but why would anyone want to write in a language which makes that so difficult?

  6. Re:There's a reason nobody talks about it by cyborg_zx · · Score: 3, Insightful

    True - there are many crap programmers around; but that is what things like code reviews should be for.

    Absolutely but I don't get to review every line (although I certainly try because I often wonder WTF is being check in other people's code reviews) and I can't do much about the code that was written years ago that has been left to bitrot.

    If you find a programmer who does that sort of thing do you want to continue to employ him ?

    No, not really. But fucked if it's my choice or if I know where the hell the programmers are who don't do this stuff.