To understand the what the advantages of a declarative language as opposed to a procedural language, we must understand the difference between the two. A procedural language such as FORTRAN or Cabal (There are more) give precise instructions that tell the computer what to do. In other words a procedural language is your basic “if-this, then-that”. Specific variables are defined that tell the CPU how to process information. It takes a programmer that knows the intimate details of how the code works to ensure that programs work the way they are supposed to.
In a declarative language, language is used that in its simplest form, just makes sense. There is no intricate code that is confusing. One example in SQL would be creating tables: CREATE TABLE Employee. The user can create a simple table without having to know the inner workings of how the table is actually created.
The advantage of declarative language is that it makes life so much easier for the everyday user to function in declarative programs without being a programmer. When a user types something in, the language just makes more sense to the everyday user and there is also plenty of information that can be found to aid in using declarative languages.
Procedural language can have its advantages though. This is true for security reasons. This allows only those that are developing a program to know the inner workings of the program. In my opinion it is a good deterrent for unskilled persons to make modifications to programs that use procedural language.
Cross joins are legitimate for several reasons. The main reason is to cut down the amount of information that the database is searching for. This also aids in increased performance. If cross joins were not allowed then the program would return much more information that is needed resulting in increased time to sort the data. This is example is two- fold; the database would work harder to retrieve information and the person looking at the returned information would have to work harder to sort it.
I could imagine persons that are making inquiries across a WAN connection via a VPN making an inquiry and needing that specific data quickly. If cross joins were not allowed then can one imagine how much data is being sent across the internet or how much bandwidth is being used? In addition to that idea what about the integrity of data that any given person has access too? Cross joins allow for increased productivity, less strain on the database resources and security filtering of information.