When I discuss the ideas behind cloudalion with people, a concern that keeps coming up is whether a declarative implementation of an application can ever perform as well as an imperative implementation.
In this post I intend to answer this concern by giving a few examples in which declarative approaches lead to better performance than imperative ones.
At the end of my previous post, I think I lost most of the readers when I compared Web applications to DSLs, and then talked about implementing them as external or internal DSLs. For people with no actual experience with implementing DSLs this comparison is probably hard, and especially the distinction between internal and external DSLs. I remember having long conversations with fellow DSL researchers not agreeing if a certain DSL framework works with external or internal DSLs. So if I lost you there, don’t feel bad. It’s on me.
In this post I am going to demonstrate this equivalence between DSLs and Web apps by defining the logic of a simple Web application using Cedalion — a language designed to host DSLs. We are not going to implement a Web application here. Unfortunately, no actual application will come out of this exercise, but with a bit of imagination this exercise will demonstrate what the goal of my research is: I want Web applications to be as easy to implement as this!
Read More »
If you tried out, or at least read the Cedalion DSL tutorial, or at the very least watched the “hello, world” video in the “first steps” page, you would agree that Cedalion is different than any other programming language you know.
Cedalion is not new. I published my first paper on Cedalion back in 2011, about five years ago. So why did I start blogging about it just now? Why did I not make an effort to showcase it to people who may find it useful?
Why? because until recently, it wasn’t that useful. In this post I will tell you why, and share the insight that I believe makes Cedalion matter.
In my previous post I wrote about the two insights that lead to the development of Cedalion, and the first of them was realizing the true power of logic programming. In this post I would like to explain this.
I am assuming most reader have heard about logic programming, and maybe some of the readers even studied Prolog at one point in their life, but I cannot assume readers remember much of it. So I’ll try to take it slow…Read More »
It’s been three months since my last post. During these three months I was busy mainly with writing a paper for submission to a conference, and I find it hard to invest in “side write-ups” while being totally invested in authoring a paper.
For a week or so I thought about how I should continue the tale this blog was intended to tell, the line of thought behind my research, along with some technical information, tutorials maybe, to help readers interested in trying things themselves. Looking for a story, I looked back at the early days of my research, and then I realized this is a story worth telling. So in this blog post I will tell the story of the first half of my research so far (my MSc thesis) — how I started, and mainly why. Why I went to research, and why this particular research topic.Read More »
In this blog I will discuss two computer languages, Cloudlog and Cedalion – the former is a query language and the latter is a programming language, but both languages are pure declarative. This means that none of these languages has commands. Instead, they have declarations, definitions and rules of different kinds. We will discuss these languages in depth in future posts, but in this post I would like to talk about what declarative languages are, and why do we need them?Read More »