Hi ktmex,
First, there is nothing wrong in doing any of what you are doing in an expressive language like C++. Alan Turing has already proved that many years ago that assuming some very basic operations in a language, one computer language is as good as another.
That said, there is a maxim which I _try_ to live my programming life by:
One doesn't program systems. You program mini-languages first, and then you build your systems in [a mix of] those languages. This is very powerful because it allows the greatest expression of each concept in it's natural linguistic domain, and therefore makes for huge productivity gains, not just in getting the original system up, but in maintaining [the modern term is
agile. See
http://en.wikipedia.org/wiki/Agile_software_development] the system as it evolves. And to boot, the system usually less bugs. An example of this is ASP.net, where the "code behind" is written in any .net language, and the front end is written in HTML.
Even when we program in C++, when we
abstract patterns
http://en.wikipedia.org/wiki/Design_Patterns
http://en.wikipedia.org/wiki/Refactoring
into classes, we are building mini-languages first, and using a mix of C++ and those classes to build our programs. We just don't think of the classes as a mini language, but that is what we are doing:
Building a language to express the problem domain naturally in a readable way for other human beings to understand when they look at our code (or ourselves six months later when we have to maintain the code.)
The distinction is very powerful. For example, we could all sit and write web pages in C++, but most of us do it in a designing language that naturally maps to html for the presentation part, and use a mix of languages like PHP, AJAX , C++ and SQL for the code-behind.
A strong reason for this is that html is a
declarative language. In a declarative language like HTML or SQL you describe what something is like, as a opposed to an imperative language like C++ & Fortran, etc ,or a functional language like like Haskell or Erlang or Mathematica. Instead of giving the steps (in the case of an imperative language) of how to achieve the results, you describe what the results you are interested in look like. For more on this stuff read this and follow the link:
http://en.wikipedia.org/wiki/Declarative_programming
In conclusion, I suggest you browse the streambase website
http://streamsql.org/files/Documentation/streamprocessing_language.pdf
or
http://www.streambase.com
and see the reasons that others give for doing things the way they are suggesting you do them. The advice is worth thinking about imo.
nitro
Quote from ktmexc20:
Now, it is unquestionable that SQL is the language best suited to express concepts about data stored in [relational] tables. It has been in use for years and rarely is something that successful unless it offers a rich enough syntax coupled with a good performance.
I am still not 100% sold that streamSQL is the richest language or even a good language to do stream or real-time time series analysis, but it is clerly an attempt at recognizing the flaws in doing this in SQL [let alone a language like C++], and is a good attempt at a solution.
I recommend you read this paper from the streambase people. While it sounds likea brochure, it does hilite the fact that immediately that
Hi nitro,
I have never used an sql (relational db) and have only briefly touched upon learning it. From my layman's point of view, I would rather do queries in the native programming language and not some query language tied to the db.
From what I understand, this type of db is unnecessary to my work. I could possibly understand it for enterprise use, I guess. I just don't see yet, the advantages in a relational db at the cost of run time efficiency.
Mind you that Hdf5 does internally support storage reference structures, iterators, partial I/O, point/hyperslab selection and parallel implementation.
So are saying that, just because it's not tied to an sql, it's not suitable? I don't understand.
Thanks,
kt