-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minor: how to present Dao? #513
Comments
My feedback will likely be very long, so I'll split it in parts. Here is chapter one -- borrowing.
I'd better omit this fact which hopefully will become history earlier or later, on which I myself have been working for some time. For a modern high-level language, C++ is mostly a poor choice to borrow ideas from. The influence of C++ in Dao is already relatively faint, and I expect it to subside further during subsequent design revising.
In C, simple things exist mostly in abstract examples. In reality they quickly become stupidly complicated because real-world code requires proper handling of errors, portability, safe concurrent data access, etc. Not to mention miserable and awfully designed (due to historical reasons) standard library. With regard to simplicity, Go is a considerably better example. Overall, mentioning C/C++ as a source of inspiration for a scripting language today is a sure way to be perceived an oldfag and freak. Conclusion: refer to other languages, mention C/C++ only if you sense dominating presence of oldfag freaks :)
At present, Dao has little or nothing in common with Perl in particular. Dollar sign was definitely chosen in favor of simple parsing rather then by Perl's example. Also, Perl is a remarkable example of ludicrous programming language design. Conclusion: mention it only in jokes :)
That would be a huge exaggeration -- Dao does not provide anything really similar to what Rust does in terms of concurrent safety, superficial resemblance in few minor details doesn't count. Dao's approach to concurrency is much closer to that of Go, with emphasis on simplicity. Now, it is important to show that Dao is not just a language X plus language Y with the syntax of language Z, as many minor programming languages are. It borrows heavily from various languages, but virtually every idea goes through rethinking which may eventually produce a result substantially different from the origin. Good examples are enums (Ruby), decorators (Python) and Having its own vision is what differs a good language from a mediocre one. |
Chapter two -- goals.
Might be somewhat redundant unless the audience is deeply academic. I'd focus on hot topics:
That would help to emphasize strong points of the language's design comparing to mainstream alternatives.
Definitely not 'extremely fast' -- that would be a hype. Under some circumstances faster then some languages -- that's close to the reality. Dao has potential to be quite fast, there is JIT compilation, but the language does not put particular emphasis in that. Dualism is more an accident then an ideology. Overall, the design of Dao is not very clean due to certain practical reasons; this begets certain ad hoc solutions and lack of strong unification. Dualism is not a goal, it's a side effect which can hardly be viewed as an advantage. Clarity, expressiveness, control -- these, I suppose, are the goals of Dao and its strong sides. Also clean and convenient interfaces, yes. Modern concurrency, but not anything outstanding as of now. Maybe some accent on embedding. Satisfaction from coding, after all :) |
I think @Night-walker has given excellent feedbacks. I will briefly comment on his feedbacks.
Agree.
Correct. Dao had borrowed a couple of things (only one thing I actually still remember: syntax support for regexp) from Perl, but those things were eventually removed long time ago. Another reason for using dollar sign for enum symbols is that there is
Interesting idea:)
Well said.
Agree. It has been one of my primary goals to make embedding and extending simple, I think this goal is more or less achieved, and it has become significantly simpler than other languages for embedding and extending. |
Thank you for such a detailed feedback. I'll try to incorporate your perceptions into my presentation :) Should you have more comments, continue with them here. |
Some more feedbacks:
I would not make such a grand claim. This algorithm (without the generational part) was inspired by an algorithm proposed by David Bacon (2003), his algorithm is more sophisticated and very likely to be faster. Including the generational part, it would be hard to say. I did no survey, but the concurrent GC algorithm in Dao is probably the simplest one using refcount:)
This is correct. The next thing I am planning to do on the GC is to use atomic operations on reference counting and some other things. I will probably use C11 for this, if I cannot find a small and portable library for atomic operations.
It is far from usable, so it is better not to mention it.
Better not to mention it, because in a foreseeable future, I will not have time for it :(
That's the time complexity of calculating the pairwise distances, which is usually not included as a part of the complexity of the clustering algorithm. Because distance matrix is often the input to clustering algorithms. The complexity of the actual clustering part is not known exactly, someone published an empirical test on it, it was shown to be
I actually did not accept the job that can benefit the most from my experience on Dao for various reasons.
Now there is a simple and unspoken roadmap: 1. solve all/most the issues here; 2. make a module management tool. In terms of releases, there should be at least 3 releases to go before the next official release: at least 1 beta release and 2 RC releases.
I agree we should do this for Dao, but we (or just I) better practice this a little bit first on the module repo:) |
A remark: I stopped working on it because I don't think it's a high-priority task given the state of the language and available modules. As of now, we have no real use for it anyway; besides, there may be changes in the project organization in the near future which can render the current approach obsolete. I think the issue should be addresses when its scope and application becomes clear.
My vision would be the following:
Apart from the above stands the necessity to make the project more manageable -- without something like pull requests the collaboration is rather inefficient. |
Chapter three -- architecture.
That is not a goal or design principle by itself. It doesn't mean much, so I wouldn't make accent on it.
Will likely be transformed into something not looking like aspects much.
No
It's just a label to accept arbitrary type, it does not get 'evaluated', rather down-cast.
Nothing to boast of as of now. Not worth accentuating because any comparison to mainstream languages would be suicidal. Overall, key architecture points which may be used to promote the language are:
|
Summary. There is a lot of insignificant things which don't really need to be mentioned. I would concentrate on making a solid and clear impression about the language as the whole without diverging too far or diving too deep. The main rule is to avoid being meticulous, at all costs, as the goal is to make people interested, not lecture them. A bit on modern state of programming -- demands, problems, solutions. A bit on the project in general -- how the language fits into the described picture, what it tries to solve and what makes it different from existing alternatives. A tour of key features with examples for look&feel. Plans on further development as final accord. Should be enough. |
Thanks again for the valuable feedback. I'll try my best with choosing proper wordings and making everything much simpler than it seems from the detailed notes :)
My words. But this requires deciding which issues are to be addressed in the first release candidates which in turn requires something like milestones creation and assignment of issues to them (which in turn might require granting some GitHub priviliges to active Dao contributors). |
After the success at the OpenAlt conference in Czech Republic ("the developer heart of Europe"), I'm considering presenting Dao at OSS Víkend Košice in Slovakia on 22. - 23. 10. 2016. @daokoder may I make a web page about Dao (subtly modified version of the archived version as discussed in #517 and #526 ) or do you have other plans? I'd like to show visitors the web page (it significantly strenghtens people's beliefs in the project). |
Recently I have setup a new website: http://daoscript.org. The content still needs update, but should be sufficient for introduction. Also, I recently has made some significant improvements and changes in the language and VM. I will open a new topic to discuss them. |
Well, I decided to skip OSS Víkend Košice due to time constraints, but had a talk at the OpenAlt 2016 conference. I decided to focus on new changes in Dao in the talk, so I've signed up only for a 30 minutes talk. It turned out to be too short, but I think the message was delivered. Thanks @daokoder for not abandoning this great language and VM implementation! |
Thank you for presenting Dao on that conference!
Even though I became occupied by other things and spent little time on Dao, I have never considered giving up this language. In fact, I often feel the itch of improving and perfecting it :) |
I've already decided to found a SW company (3 people for the beginning) and for the main SW product & service I'd like to use Dao as backend language to speed up development significantly. The company is planned to begin it's function at the latest at the end of 2017. With regards to company funding, planning, etc., the current state of Dao development is the only bottleneck as it lies exactly in the gray zone of "unknown whether the most important issues on the Dao Issues page will get addressed soon enough or not at all". In fact I'm willing to pay anyone in the world (especially including you @daokoder) who would like to contribute regularly (or even on demand in case of bigger issues) to Dao. I'm though still not convinced Dao ecosystem is currently sustainable (which is a must have for the first two years of a new company) - therefore all my comments about project management and Dao direction in the past year. The company will by the way use also C for system programming as well as a little bit of Lua and then minimal bits of web Javascript, Android Java, and iOS Objective C. |
Interesting, I also decided to start a company that will develop software products on top of Dao (through the visual programming thing I mentioned in issue #524). It will start to function in the next year as well. Dao and the development of Dao will stay independent of the company, but developing technologies and products based on Dao will surely stimulate the development of Dao. I expect significant improvements will be added to Dao in the next year (including improvements to address the issues).
This is very nice. If my plan goes will, this will not be necessary for me. In fact, I plan to similar thing in the future to sponsor the development of some modules and tools. There might be one problem about this, it may be difficult to find other people who are willing to work on this, before we do some promotion on Dao and make it relative known. But the current state of Dao may be a bit premature for serious promotion. When I decided to start the company, I was also hoping to make it more production-ready before promoting it seriously, through using and testing it in real products. |
Based on my experience with several universities (as well as companies) in Germany, Finland, Czech Republic, and Slovakia, I know at least three constant sources of people highly interested in programming language development & design while being capable of solving the hardest issues. With regards to them, there is though still one significant weakness I know about - the lack of their ability to design perfect APIs. I must confess, that you @daokoder are the best person for API (both external and internal) design I currently know in the world (especially when you get a sophisticated opposition from @Night-walker). In case you'd want to find such person, I can't unfortunately help much.
Judging based on the evidence I've gathered throughout my life, this is not needed at all and the approach "Release early, release often!" works the best basically under all conditions in all cases. Dao as a project is already so functional and consistent, that occasional harm originating from some mistake will not affect the overall Dao status. Therefore I'm confident we should promote Dao everywhere using all possible opportunities without any postponement. By the way, programming language projects which offer clearly worse APIs, capabilities, performance, usability, etc. (like Crystal and basically all others) are very successful just because they release early and often - there is basically no other advantage (a little bit of syntax & semantics similarity to a particular existing language increases the community, but it's not significant) over Dao. |
I'm going to have a talk about Dao at the OpenAlt 2015 conference and I'd like to ask for revision of my notes, which will serve as an overview about the language. Feel free to comment on them.
This presentation will bring several new interested guys, so this project will catch some momentum and we should prepare at least a little bit for that. I'm talking about minimal "project management" - especially a firm roadmap (not to be confused with time scheduling) and the possibility to collaborate using github pull requests (including the awesome inline comments on the committed code).
The text was updated successfully, but these errors were encountered: