| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: Development as Configuration
dawn wrote:
> Kenneth Downs wrote:
>> dawn wrote: >> >> > erk wrote: >> >> dawn wrote: >> >> > ugh. >> >> > On the one hand we want to bump up some levels so we are using >> >> objects >> >> > of types that are more compex than Strings and ints and so we
>> > not >> >> > hand-coding such things as threading logic every time we write
>> >> > application. On the other hand, we should retire one-way code >> >> > generation for developers. Bea might be talking about
>> >> tools >> >> > here, but there is no reason to think so from the above quote. >> >> >> >> Depends on what you mean. All compilation is "one-way code >> > generation." >> > >> > OK, I'll be more precise and say that the only code generation of
>> > interest to me is that which either provides a round-trip between >> > spec/picture and code or that which keeps the code hidden and
>> > always unncessary for any software developer to read. In that
>> > case, the "spec" becomes the new code, so there need to be good
>> > for reading and debugging at the level of the spec/new language. >> >> Good. Once the spec has become the new code, there is no more round
>> We generate code, and when we change the spec we through away the
>> regenerate it.
A declarative language, one that can only state propositions. In our case the language is a thin disguise for what is really atomic data.
>> >> > >> > 1) The spec'ing tools are proprietary, while the underlying
>> > language is more likely an industry standard. >> >> What if the tool were free software (free as in freedom, GPL, that
>> or open source? Or perhaps simply all of the standards were published
>> the software was still held proprietary?
If the spec'ing tool is any good, it feeds on raw data, not code. The data can be in any file format, such as XML, CSV, or spit out into a text file in some declarative language.
Because it is fundamentally data, not code, you are only locked in if you are unable to manipulate data.
>
>> > 2) The generated code might be portable, but the specs must be >> > converted and that is rarely 100%, not an easy job, and rarely
>> > quality, easily maintained software after the port. >> >> Fascinating. How can specs not be portable? What examples are you
>> of? To me a spec is just data and that means it is always portable.
This is an extreme requirement, but I like it. It's also a 1-10 scale kind of thing rather than a true-false kind of thing. Personal experience has always gotten me closer to 10 by following a RISC strategy of using as few primitive technologies as possible, like sticking to core SQL 92 and staying away from proprietary extensions, or at least staying away from those that have no analog on the competition's product.
But to return to my original question, how can a spec, which is data, not be portable? Data is far more portable than code will ever be.
>
>> > 3) The application is often easier to debug at the level of the
>> > rather than from the specs >> >> Ouch. This is true too often.
I am going to tuck this whole idea into the back of my head and revisit it from time to time.
I will say a few things for the record:
>
>> We have since passed the break-even point >> where there are more problems in our specs than in our code, but
>> reflex we end up looking at code a lot.
It is clear here that you have no small experience in the matter, but in this case I really do think our debugging abilities in the spec are ok. The reason again comes down to the fact that it is data, not code that we are debugging.
Our language format is a thinly veiled disguise for typing of tabular information in a text file, something like this:
column address1 { description: Address 1; type_id: char.....}
this is crucially important because it means our validation is composed of (drumroll......) simple unique and referential constraints! That is, a column may not be defined more than once, and you cannot assign security priveleges to a table for a group that does not exist.
Then of course at parsing there is simple stuff like missing curly-braces, mistyped keywords and so forth.
>
>> > 4) While languages are often careful about backward compatibility,
>> > generation tools more often require you to regen an entire
>> > to take advantage of a new feature. >> >> Why is this bad? What would be better?
Ooops, not sure we are talking about the same thing. The nature of generated apps is that the code has no particular value, by virtue of how easy it is to get it and replace it. So regenerating an entire app for any reason is not seen as a problem. Maybe I am not understanding where you are coming from.
-- Kenneth Downs Secure Data Software, Inc. (Ken)nneth@(Sec)ure(Dat)a(.com)Received on Thu May 05 2005 - 17:23:46 CDT
![]() |
![]() |