NOTE: Article in Progress

Of lately, thanks to my latest research works, I have been attracted by the idea of declarative programming, a programming paradigm where the programmers only specify what to achieve and not how to achieve it. A very simple example for programmers is SQL. With SQL, programmers store, manipulate, delete and pose complex queries without knowing the underlying complexity of database storage. Unlike procedural and imperative programming, declarative programming provides a lot of abstraction and provides a limited set of commands usually revolving around the CRUD (create, read, update and delete) operations.

SQL users start with creating a schema and the associated tables. Then they insert data to these tables for further manipulation. Only the relational schema (relations/tables and their attributes) are required to be known for querying and manipulating the database. End users are completely transparent to low-level file allocations, memory allocation, system calls etc..

One major advantage of declarative programming is that they do not have a steep learning curve. As in the case of SQL languages, users can quickly start with a very small subset of commands (SELECT, CREATE etc.) But can the declarative approach be further expanded, i.e., a common (SQL-like) language file handling, command line, networking, process management, memory/storage management, distributed environment etc. Though SQL is used in relational database management, it is commonly taught in university curriculums on computer science: one language for data management and data analysis.

access patterns (input/output), but what about errors?

declarative approach common for data access, but data manipulations?

CRUD operations and analysis operations using SQL

SQL: SELECT FROM WHERE (natural language like) very simple queries to complex queries using NOT, UNION etc.

Declarative approaches for web application development2: extensions to XForms for both client and server side programming as well as communication and storage. Such work propose uniformity in development instead of working on multiple programming languages for different needs.

References

  1. Declarative Programming
  2. Vuorimaa, Petri, et al. “Leveraging Declarative Languages in Web Application Development.” World Wide Web, vol. 19, no. 4, July 2016, pp. 519–43. Springer Link, doi:10.1007/s11280-015-0339-z