Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

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

Soulskill posted about a year ago | from the not-to-be-confused-with-the-chinese-sword dept.

Programming 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."

Sorry! There are no comments related to the filter you selected.

There's a reason nobody talks about it (4, Funny)

antifoidulus (807088) | about a year ago | (#43846917)

It's basically Go with fewer features, next!

Re:There's a reason nobody talks about it (2)

NeoHermit (2899437) | about a year ago | (#43847017)

You must be joking! Dao has almost all the major features that Go has, not vice versa. Just mention a few: tasklet (goroutine in a different form), channel, defer, defer-recover, interface etc.

Re:There's a reason nobody talks about it (1)

complete loony (663508) | about a year ago | (#43847101)

FYI, your Documentation link in the beta release announcement just jumps back to the beta announcement.

Re:There's a reason nobody talks about it (1)

NeoHermit (2899437) | about a year ago | (#43847531)

Thanks for pointing it out.

Re:There's a reason nobody talks about it (5, Interesting)

Anonymous Coward | about a year ago | (#43847105)

Dao (and Go) do not solve programming problems better than other mainstream alternative languages. Seriously, I looked through the list and asked myself what Dao could do that (say) C, C++, Java, Groovy, Scala, Clojure, or Haskell couldn't do, and I couldn't come up with anything.

If someone is really interested in solving programming problems using language design, I need a language that satisfies the following:

a) Object-oriented, when I want it. Not the C++ bullshit of multiple inheritance, but Java's OO model isn't bad as a start; maybe add Scala's mixins and traits as well to that.
b) Functional, when I want it. But not Scala-functional: more like Haskell or Clojure functional.
c) Strongly-typed, most of the time. When I'm solving specific domain problems, I want the type system to ensure I'm not jamming a Foo into a Bar.
d) Optionally- or non-typed, once in awhile. Sometimes I'm just writing an algorithm that should be able to deal with any sort of object and don't care what the underlying object is. Java's generics are ok, but sometimes they just get in the way.
e) Reasonable concurrency model - message passing, threads, actors, producers, consumers, event buses, etc.
f) Garbage-collected. I used to do malloc()/free() and new/delete, but I'd rather have the underlying language handle objects for me. (That isn't to say that I don't care about memory pressures - I'm ok with allocating objects once and tracking their state instead of allocate/release/garbage-collect thrashing.)
g) Proper closures and exception handling in the OO part. (Closures and monads should be part of the functional part of the language).

Note to Scala crazies: the above may LOOK like Scala, but it sure as hell isn't Scala. No one in their right mind would develop something that had to be maintained in Scala, because part (h) that I don't want is this: arbitrary operator definition and overloading. That right there makes Scala a total disaster. For an example of this, see the Lift examples.

Re:There's a reason nobody talks about it (3, Insightful)

Anonymous Coward | about a year ago | (#43847313)

Lisp?

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847719)

For the most part, your wish list sounds like Perl. I don't know of a way to get automatic compile-time type checking on objects, but you can use the isa() object method to explicitly check the type of any object.

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847183)

It's basically Go with fewer features, next!

You must be joking! Dao has almost all the major features that Go has, not vice versa.

Do you need to use the features of Dao to get output like this from a given input?

Re:There's a reason nobody talks about it (1)

nextekcarl (1402899) | about a year ago | (#43847223)

You must be joking! Dao has almost all the major features that Go has...

Maybe this is a Whoosh! moment for me (it is late and I'm getting sleepy), but isn't your comment the same thing the OP said, just in another format? Yet you seem to be disagreeing with him?

Re:There's a reason nobody talks about it (1)

NeoHermit (2899437) | about a year ago | (#43847521)

Please don't forget the "not vice versa" part, Dao has many features that Go does NOT have.

Re:There's a reason nobody talks about it (1)

NeoHermit (2899437) | about a year ago | (#43847553)

Just in case you still cannot deduce what I mean from my comments, I will just say it plainly:

Dao has a lot MORE features than Go does!

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847697)

Please implement a propper sandboxing and I dump C# and Python for Dao as my weapon of choice.

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847701)

That's not what you said.

I mean - You've got to be joking! You didn't say that!

As was pointed out - you just rephrased what you were supposedly denying.

Given it's an optionally typed language with a small run time - it must be similar to VB3 then. Right?

Re:There's a reason nobody talks about it (1)

Anonymous Coward | about a year ago | (#43847597)

He's the submitter.

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847025)

It's basically Go with fewer features, next!

Yeah Next is an awesome language

Re:There's a reason nobody talks about it (1)

rthille (8526) | about a year ago | (#43847499)

NeXT wasn't a language, it was a computer. Objective-C was the language...

Re:There's a reason nobody talks about it (0)

Anonymous Coward | about a year ago | (#43847661)

*woosh*

Wow, another programming language? (1)

Anonymous Coward | about a year ago | (#43846937)

Just what we need, yet another beta language with subset n of the hot new features de jour. wait up man, I haven't finished python, scala, groovy, golang, dart, the new C++ spec, and oh yeah C, since its now back in style, yet...

Re:Wow, another programming language? (1)

cgt (1976654) | about a year ago | (#43847215)

No one is forcing you to use it.

Re:Wow, another programming language? (0)

Anonymous Coward | about a year ago | (#43847409)

And there is no reason not to comment on a "new" language. Especially when someone makes it out to be "the next big thing" and it obviously is not.

Re:Wow, another programming language? (1)

Pseudonym (62607) | about a year ago | (#43847465)

Especially when someone makes it out to be "the next big thing" and it obviously is not.

Who are you quoting?

Re:Wow, another programming language? (1)

davester666 (731373) | about a year ago | (#43847683)

Well, hurry up and master Ruby. By that time, Dao might be close to being 1.0

Do they have tail-recursion or lazy evaluation? (1)

gweihir (88907) | about a year ago | (#43846957)

If not, then it is just another fail, as functional programming styles are not supported. From the web-page, it seems it is indeed just another failure.

If they had either, it would be a significant step in the right direction. Optional typing is definitely highly desirable.

end the lambda idolotry! (2, Interesting)

Anonymous Coward | about a year ago | (#43847035)

Have fun designing programs that manipulate massive amounts of state with functional programming style. Given that nobody has figured out how to do a first person shooter with a functional langauge, makes me suspect that they aren't the one answer to every problem. In fact even a relatively simple game is quite awkward [dadgum.com] in a functional style.

I guess you can't solve every problem with lambda calculus and retain your sanity.

Re:Do they have tail-recursion or lazy evaluation? (3, Interesting)

NeoHermit (2899437) | about a year ago | (#43847055)

Tail-recursion: yes; Lazy evaluation: no. It does support some functional programming styles, at least as much as python or ruby supports. It's just that it is not branded that way. But if you are looking for a programming language that supports functional programming as its major programming paradigm, this is not the language you want. But certainly this is not the reason to dismiss it as failure.

Re:Do they have tail-recursion or lazy evaluation? (5, Insightful)

Greyfox (87712) | about a year ago | (#43847319)

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.

Re:Do they have tail-recursion or lazy evaluation? (2)

Pseudonym (62607) | about a year ago | (#43847665)

Optional typing is not highly desirable.

Maybe.

Strict typing a la Algol requires you to write more code (in the form of type declarations). Strict typic a la ML requires someone to write more compiler, which isn't a problem if you're shipping compiled code, but in a typical scripting scenario it requires there to be more compiler in your runtime and (more importantly) slows load time.

Dynamic/optional typing requires you to write more tests (unless you want less robust code, of course), but tests typically don't impose a cost at run-time. If you only need a thin layer of scripting glue, then the tradeoff may be acceptable.

I agree that it's not "highly desirable" as a general rule, but I can see the use case.

you had me at... (1, Interesting)

girlintraining (1395911) | about a year ago | (#43846999)

This language (Dao) has never been mentioned on Slashdot before, but it might be interesting to many people here.

A pretentious name? (ears perk up) Go on...

Dao is an optionally-typed programming language

ARRRRGH! Comeon guys, type casting is so important even answers.com [answers.com] has a bloody writeup on it. Strousoup is right now spinning in his grave so furiously I'm sure it's causing a small earthquake right now on some pacific island...

that supports many advanced features with a small runtime.

Runtime? So it's like Java then... it's interpreted. Ooookay, well, I suppose runtime languages have their place amongst the honored...

The feature list is probably as long as that of Python

And already we have our first example of why type casting is important: The programmer/submitter here isn't sure what the feature list of the language is, because everything is represented as an abstract object. /snark

Built-in support for concurrent programming for multicore computers,

I'm not entirely sure what that even means. Does it support threading? Is it stackless? Are you talking about the ability to set processor affinity for a given thread or process? "concurrent programming" to me could even mean using two keyboards.

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.

So basically, your language is incomplete so you're giving people the ability to link in stuff to makeup for it. Okay, that's cool... I guess.

Well kid, I'm sorry your parents named you Dao. Like all parents, I'm sure they expect great things from you. Unfortunately, it seems you're suffering from a rare birth defect where half your brain is missing and you're a midget. You're also cojoined to your twin, who they named 'C'. Now they're going to try surgery soon to separate you from your twin bro, but I'm gonna be honest here: You're probably not going to make it. Sorry kid, tough break.

Re:you had me at... (5, Funny)

Anonymous Coward | about a year ago | (#43847037)

Someone better go dig Strousoup out because he ain't dead, yet.

Re:you had me at... (2, Informative)

girlintraining (1395911) | about a year ago | (#43847119)

Someone better go dig Strousoup out because he ain't dead, yet.

Ack, I meant Dennis Ritchie, the inventor of the C programming language, not Stroustrup, who invented C++. My bad...

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847147)

Someone better go dig Strousoup out because he ain't dead, yet.

Please don't put him on the cart! He's not dead!

No, what you mean is... (0)

Anonymous Coward | about a year ago | (#43847517)

CREMATE HIM!

As the dustmen say: 'It's the only way to ensure he meets the Final Death.'

Re:you had me at... (1)

Anonymous Coward | about a year ago | (#43847619)

I think it would be better if we left him there.

Re:you had me at... (1)

megrims (839585) | about a year ago | (#43847047)

Runtime? So it's like Java then... it's interpreted. Ooookay, well, I suppose runtime languages have their place amongst the honored...

While I don't disagree with your assessment of the language, FWIW, all languages have runtimes, not just interpreted languages.

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847575)

That's not true, assembler does not have a runtime, though there are many basic libraries equivalent to libc and crt that could be considered runtimes (if you use them). Also not all C compilers have a crt, and most C compilers can generate freestanding code which doesn't link against libc but will generally link crt unless that particular compiler doesn't have a crt.

Re:you had me at... (0)

MouseTheLuckyDog (2752443) | about a year ago | (#43847049)

. Strousoup is right now spinning in his grave so furiously I'm sure it's causing a small earthquake right now on some pacific island...

Sttroustrup ( you know youm could have gotten the name right ) is still alive.

Re:you had me at... (5, Funny)

dbraden (214956) | about a year ago | (#43847157)

Sttroustrup ( you know youm could have gotten the name right )

You sure you wanna be correcting folks?

Re:you had me at... (1)

PPH (736903) | about a year ago | (#43847173)

Well, this will kill him.

If everyone misspelling his name hasn't done so already.

Re:you had me at... (1)

Samantha Wright (1324923) | about a year ago | (#43847367)

Whaddaya mean? Stroostrip's fine!

Re:you had me at... (0)

girlintraining (1395911) | about a year ago | (#43847377)

Mistaken identity [slashdot.org] . Can we please stop jumping on my slightly embarassing mistake? :)

Re:you had me at... (1)

Samantha Wright (1324923) | about a year ago | (#43847459)

I swear I'm not—this is entirely about how to spell Stirstrap at this point. really, denmark, what were you thinking

Re:you had me at... (1)

girlintraining (1395911) | about a year ago | (#43847549)

I swear I'm notâ"this is entirely about how to spell Stirstrap at this point. really, denmark, what were you thinking

This being Denmark, they probably named him as such so nobody could find him on the internet, thus fulfilling the secret dream of every Danish person: To not be noticed. :D

Re:you had me at... (1)

Pseudonym (62607) | about a year ago | (#43847591)

After all, it worked so well for Lars Ulrich.

Re:you had me at... (1)

girlintraining (1395911) | about a year ago | (#43847657)

After all, it worked so well for Lars Ulrich.

Unfortunately, even being Danish isn't enough to conceal such a concentrated amount of asshattery.

Re:you had me at... (1)

aliquis (678370) | about a year ago | (#43847715)

Mistaken identify.

girlintraining.

Slashdot.

I get it!

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847081)

Way to fight the chauvanistic stereotype of girl geeks as dilettantes.

Re:you had me at... (3, Interesting)

girlintraining (1395911) | about a year ago | (#43847201)

Way to fight the chauvanistic stereotype of girl geeks as dilettantes.

I fail to see how making an educated assessment of the value of a new programming language meets the definition of a dilettante. I know of many geek girls (yes, girl comes second, we are geeks first and foremost -- pay attention Anonymous Coward, there will be a test) who know nothing of programming yet nobody would question their overall geekiness. Perhaps you're unaware that there's more than one kind of geek? I have one friend who's an art geek. She spends her days painting, sketching, and is a consumate book worm. I enjoy her company and her passion quite a bit. She has about as much computer sense though as a door mat and I have to fix or reimage her system on a seasonal basis. I don't begrudge her not knowing computers though; Not everyone can be a computer geek.

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847257)

I fail to see how this is an educated assessment, when you don't even know that "has runtime" is completely orthogonal to language being interpreted or compiled (libc.so/msvcrt.dll is C runtime - latter even says so in properties. C is interpreted!)

All I see is trying to look like smartass. Just look at your quip about "ease of binding = your language is incomplete!". Just think how little a simple GUI application in C does itself and how much of it is binding and calling underlying libraries.

Re:you had me at... (0)

Pseudonym (62607) | about a year ago | (#43847485)

No, libc is not C runtime; libc is the C standard library. The C runtime is crt.o (or crt1.o) on Unix-esque platforms, msvcrt.dll on Windows.

C is not interpreted, but it does run on a virtual machine. The C runtime is the implementation of that virtual machine.

Re:you had me at... (0)

jones_supa (887896) | about a year ago | (#43847673)

C is not interpreted, but it does run on a virtual machine. The C runtime is the implementation of that virtual machine.

I wouldn't call it a virtual machine either. The C runtime library is just implementation of various system functions, making it look more like a shared object.

And all compiled C code, including the runtime library, run on bare metal.

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847687)

Way to fight the stereotype of guy geeks as sexist assholes.

Re:you had me at... (1)

Anonymous Coward | about a year ago | (#43847089)

+1 funny, +1 interresting, -1 flamebait... tought choice!

Re:you had me at... (4, Funny)

phantomfive (622387) | about a year ago | (#43847523)

"concurrent programming" to me could even mean using two keyboards.

Best misdefinition ever.

Re:you had me at... (1)

Anonymous Coward | about a year ago | (#43847583)

But what about two people hacking on same keyboard [youtube.com] , then?

Re:you had me at... (5, Funny)

Pseudonym (62607) | about a year ago | (#43847671)

That's called "agile".

Re:you had me at... (0)

Anonymous Coward | about a year ago | (#43847535)

No need to go into a rant. Just look at the credentials of the author. Absolutely none. Why should I use this language over another?

Next.

Re:you had me at... (3, Insightful)

mwvdlee (775178) | about a year ago | (#43847581)

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".

how do i connect to a database? (1)

Anonymous Coward | about a year ago | (#43847001)

if it can't then its 2/3 useless

Re:how do i connect to a database? (0)

Anonymous Coward | about a year ago | (#43847067)

even BASIC has DATA, READ, RESTORE. You don't necessarily need SQL do you?

Re:how do i connect to a database? (0)

Anonymous Coward | about a year ago | (#43847099)

Clang-based tool for automatic binding generation from C/C++ header files.

Looks like you can do everything that you have C libraries for. So basically everything.

Re:how do i connect to a database? (0)

Anonymous Coward | about a year ago | (#43847353)

Tell ya what. How about I continue writing C and pretend I'm just writing extremely optimized Dao programs.

Optionally typed (5, Funny)

ThePeices (635180) | about a year ago | (#43847043)

So if Dao is optionally typed, what are the other programming input options? Voice input? Graphical point n click input?

Re:Optionally typed (0)

Anonymous Coward | about a year ago | (#43847207)

Think JavaScript with optional typing.

Re:Optionally typed (2)

Pseudonym (62607) | about a year ago | (#43847235)

That settles it, then. I don't want to use a language if it encourages JavaScript-style code.

Re:Optionally typed (1)

Samantha Wright (1324923) | about a year ago | (#43847371)

What, you'd rather write code like in your sig?

Re:Optionally typed (1)

Pseudonym (62607) | about a year ago | (#43847423)

Are you kidding? I'd love to write one-liners for a living!

Re:Optionally typed (2)

Samantha Wright (1324923) | about a year ago | (#43847463)

But it's in perl! You might summon Cthulhu. Do you really want that on your conscience?

Re:Optionally typed (5, Funny)

Pseudonym (62607) | about a year ago | (#43847515)

Surely I'd die of insanity before my conscience kicked in. Besides, "bind shoggoth" requires an import.

Feature complete with a small runtime? (0)

Anonymous Coward | about a year ago | (#43847057)

It won't be feature complete until the runtime is a bloated mess of 15 year old code. Any 'new' language is most certainly feature incomplete until it's been around the block long enough for people to have a clear understanding of what's missing.

Re:Feature complete with a small runtime? (5, Funny)

Pseudonym (62607) | about a year ago | (#43847267)

The Dao that is feature-complete is not the true Dao.

Re:Feature complete with a small runtime? (1)

Samantha Wright (1324923) | about a year ago | (#43847381)

Technically, it's cheating; all of the bloat you'd get in such a history can be imported from existing C and C++ libraries.

Why? (1)

Tony Isaac (1301187) | about a year ago | (#43847063)

Why would someone want to use this language instead of an established language? So there is a feature list. Is there something there that is compelling enough to leave an established language community?

A language alone has little value. It's the community / ecosystem that makes it worthwhile.

Re:Why? (1)

Pseudonym (62607) | about a year ago | (#43847251)

New languages are the proving ground for new programming language features and implementation technologies. Right now, Dao doesn't nee people to make it mainstream, it needs people to see how that feature set and implementation technology works in practice.

Re:Why? (1)

jones_supa (887896) | about a year ago | (#43847681)

You have to start somewhere.

Small runtime? (1)

Tony Isaac (1301187) | about a year ago | (#43847077)

How about zero!

WTL is an open-source C++ framework for creating Windows applications that typically require no installation, no runtime whatsoever, and generally compile to an exe less than 100K in size!

Re:Small runtime? (0)

Anonymous Coward | about a year ago | (#43847111)

Dude. WTL is a replacement for MFC that Microsoft decided not to back with developer support because it came way too late (even Charles Petzold had moved to C#/Windows Forms by the mid-00's).

It is a dustbin technology.

Re:Small runtime? (1)

Pseudonym (62607) | about a year ago | (#43847259)

Even C doesn't have a zero-sized runtime.

$ ls -l /usr/lib/crt1.o
-rw-r--r-- 1 root wheel 10104 22 Mar 17:44 /usr/lib/crt1.o

Re:Small runtime? (0)

Anonymous Coward | about a year ago | (#43847289)

Just crt?.o? You're not going to go very far without libc.a/libc.so getting linked to your executable, that's actual C runtime.

Re:Small runtime? (2)

Pseudonym (62607) | about a year ago | (#43847417)

In programming language parlance, "runtime" refers to the implementation of the virtual machine. In compiled C, there's very little "virtual machine"; basically it's just startup and shutdown.

The standard library is not the runtime. Indeed, many programs (e.g. OS kernels, firmware) don't bother with a standard library, though they also typically implement a custom runtime.

Re:Small runtime? (0)

Anonymous Coward | about a year ago | (#43847571)

You're just wrong here. The runtime is a piece of code that's required for the execution of programs written in the language, whether or not they use the standard library. The C runtime basically just does OS-specific initialization work that every program must do and then calls main. But it's still called a runtime.

Likewise, GHC compiles to native code, but the native code that gets linked with your code that manages things like threading is also called the runtime.

Re:Small runtime? (1)

Pseudonym (62607) | about a year ago | (#43847613)

I'm pretty sure that's what I said in slightly different words.

Re:Small runtime? (1)

Tony Isaac (1301187) | about a year ago | (#43847305)

You are, of course, correct. WTL, however, does not require any runtime library beyond what is included in the OS.

Re:Small runtime? (1)

Anonymous Coward | about a year ago | (#43847617)

I'm guessing that is gcc. Not all C compilers have a crt, though the equivalent code is still placed in the linkage when used. Moreover the C "runtime" is a misnomer, it is not a piece of code that runs the C program, it's a linkage of intrinsic functions that are not implemented by the target architecture but necessary to implement the C standard and are too large to be emitted inline with each usage. In other words, if they had called it intrinsic.o or primitives.o, you would not be saying C has a runtime, because crt is not a runtime.

On the other hand libc or the OS kernel could be considered a runtime, though neither of which is needed to create a working C program see: -ffreestanding.

Obviously it can do list insertion (0)

Anonymous Coward | about a year ago | (#43847091)

Slashdot.insertathead(slashvertisement)

or whatever the syntax is.

The YAPPing language is for dogs (2)

petteyg359 (1847514) | about a year ago | (#43847139)

"Yet Another Pissant Programming language". Can we quit pretending that "new is better" and just use the stuff that actually works?

Yet another trendy language (0)

Anonymous Coward | about a year ago | (#43847171)

A Chinese ripoff of Go.

Cool.

Re:Yet another trendy language (1)

NeoHermit (2899437) | about a year ago | (#43847203)

Funny, the world didn't start with Go. Much of Dao was developed before Go came out. Only recently Dao borrowed a few features (channel, defer and defer-recover) from Go, every other features that look like from Go actually existed well before Go even came out.

Whats Dao good for? (0)

Anonymous Coward | about a year ago | (#43847179)

I don't have any numbers, but I'm pretty sure anything with an LLVM JIT shouldn't have a "small runtime" as its headline feature. LLVM is a fantastic tool, and a minimal use of it isn't huge (or even big) by most standards, but using an off the shelf JIT compiler really shouldn't make you celebrated for a small runtime.

Anyway, looks like it has some implicit type conversions (I saw a float to int in an example), and optional typing. I prefer explicit conversions and explicit typing (like Go has for example). I also prefer statically compile languages.

As for the feature set, I don't see anything about generics, templates or meta-programming, but at least theres some something that looks like Java generics on one of the build in map classes in an example.

It seems to have good closure support, and looks good at wrapping/calling C and C++.

Does anyone know of an example generic collection in Dao? That is the one thing I'd like from Go thats its not very good at, so I'm always on the lookout for how languages solve that.

Anyway, it seems like a usable language, which I have no reason to use, and several reasons not to (JIT, lower readability than Go among other things). Their promotion fails to provide anything I miss in Go, or Python.

Sure, it might be better at some things than C++ (it can call C++, and has closures, and other nice things in a garbage collected environment), but I don't use C++ because its a good language: I use it because I have to.

I think I'll learn Rust and Haskell before bothering with Dao (AKA, most likely I won't get to it). They look interesting but I see nothing in Dao, except perhaps for being good at calling into C, that interest me, and I can call into C great from C, Go, Python, C++, and Rust if I learned it, and apparently as of 2010, Haskell.

New language: big feature, not too bloated JIT, and can call C and C++ code easily. So? Why should I care?

Apparently it has an extensible syntax (I generally see that as a bad thing) and garbage collection, and nice scripting language like syntax. Perhaps it would be good for creating domain specific languages to control your C++ code? Thats the only real use case I see, but its competing with exiting python tool chains for that, as well as Lua. Not to mention I'm not really sure if thats something worth doing.

Go is good for servers. Whats Dao good for?

Re:Whats Dao good for? (1)

NeoHermit (2899437) | about a year ago | (#43847447)

I don't have any numbers, but I'm pretty sure anything with an LLVM JIT shouldn't have a "small runtime" as its headline feature. LLVM is a fantastic tool, and a minimal use of it isn't huge (or even big) by most standards, but using an off the shelf JIT compiler really shouldn't make you celebrated for a small runtime.

The JIT compiler was implemented as a loadable module, which is not counted as part of the core.

As for the feature set, I don't see anything about generics, templates or meta-programming, but at least theres some something that looks like Java generics on one of the build in map classes in an example.

It does have generics, for built-in array, list, map and tuple types etc., it is also supported for C data type. Not well documented yet.

Does anyone know of an example generic collection in Dao? That is the one thing I'd like from Go thats its not very good at, so I'm always on the lookout for how languages solve that.

See above.

Anyway, it seems like a usable language, which I have no reason to use, and several reasons not to (JIT, lower readability than Go among other things). Their promotion fails to provide anything I miss in Go, or Python.

There are a few main things not available in Go or Python such as optional typing, syntax macro, code block method, parallelized code methods, but you already stated you don't like optional typing, not sure about the others. There are several other major features that are either not available in Go or not available in Python.

Go is good for servers. Whats Dao good for?

I can count game scripting as one due to its simple C interfaces and small runtime (without all the optional stuffs), and numeric computing as another since its JIT compiler is optimized for numeric computation. It is probable also good for server because of its concurrent programming features, but probably not as good as Go, since Go is statically compiled. You already mentioned domain specific language, I think this count as well. It also must be good for being used as a glue language due to its simple C interfaces and the automatic binding tool based on Clang.

Re:Whats Dao good for? (0)

Anonymous Coward | about a year ago | (#43847555)

So it seems to aim for the same niche as Lua/LuaJIT.

Game scripting - check, basically _the_ game scripting language
Simple interfaces, small runtime - check, ~500kb for all of LuaJIT on x64.
Numeric computing - check, LuaJIT does very good job optimizing numerics. Also check GSL Shell - LuaJIT + some extensions + bindings to GNU Scientific Library.
For servers - no concurrency, but being extremely lightweight does a good job on servers as multiple processes.
DSL and glue language - check, metatables and userdata really help there. Look at LPeg [puc-rio.br] , for example
Simple C interfaces and automatic binding - LuaJIT's FFI does a pretty good job. While not automatic, copy-pasting from preprocessed C headers is usually all you need.

All I could think of ... (1)

PPH (736903) | about a year ago | (#43847185)

... is a programming language named D'oh!

YAPL (1)

whargoul (932206) | about a year ago | (#43847211)

Yet Another Programming Language

Interesting (0)

Anonymous Coward | about a year ago | (#43847219)

Looking at sample code, Dao looks very similar to Matlab, especially with lists/cells, vectors, matrices, and loops. The biggest differences are: a closing brace instead of "end" and routine instead of function.

They're going to need a new name though, because searching for anything returns the Microsoft Data Access Object.

TFA got the name wrong - should be DOA (1)

Anonymous Coward | about a year ago | (#43847295)

It should be called DOA, not Dao.

Please let Pascal die (1)

functor0 (89014) | about a year ago | (#43847391)

I was at first intrigued by the summary, but then it got worst and worst as I saw the examples. Semi-colon statement rules in the Pascal tradition? Ugh.

Hmmm (1)

geezer nerd (1041858) | about a year ago | (#43847399)

I thought the word that is pronounced "Dao" is spelled as "Tao", meaning "the Way". So, what is a "Dao"?

Re:Hmmm (0)

Anonymous Coward | about a year ago | (#43847609)

Chinese has many dialects and many englishizations. There is no one 'spelling' in english characters.

One man's dofu is another mans tofu.

Re:Hmmm (1)

NeoHermit (2899437) | about a year ago | (#43847615)

This language was once named as "Tao", but then renamed to "Dao", because of a name conflict with another programming language named Tao. The meaning of the name remain the same.

This is a first (0)

Anonymous Coward | about a year ago | (#43847601)

First time I've seen Chinese contributing to an open source project without being chased by the FSF. Instead of contributing to an existing open source language they are creating a new one with a ... Actually the guy is in a US university. Oh well. I'll keep waiting.

Banned IP (1)

phil31753 (2934981) | about a year ago | (#43847625)

Its going to get a lot of traction in the Philippines as my IP (assigned by a major local telco) is banned from the site
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?