Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming

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

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."
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • by Anonymous Coward on Wednesday May 29, 2013 @12:37AM (#43847313)

    Lisp?

  • by Greyfox ( 87712 ) on Wednesday May 29, 2013 @12:38AM (#43847319) Homepage Journal
    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.

  • by mwvdlee ( 775178 ) on Wednesday May 29, 2013 @01:32AM (#43847581) Homepage

    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 [wikipedia.org]
    Most popular programming languages have a C programming interfaces, including the ones you'd probably call "complete".

  • by cyborg_zx ( 893396 ) on Wednesday May 29, 2013 @05:08AM (#43848347)

    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.

  • by Anonymous Coward on Wednesday May 29, 2013 @05:58AM (#43848473)

    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?

  • by cyborg_zx ( 893396 ) on Wednesday May 29, 2013 @09:01AM (#43849177)

    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.

It's a naive, domestic operating system without any breeding, but I think you'll be amused by its presumption.

Working...