Is there any practical difference between the term "task" and "transaction" in software engineering?
A bit of web searching yields results that are too specific to CICS. While my area of concern is in Database Management Systems (graph databases, object databases etc), the more widely applicable the answer the better.
The term “task” is widely applicable to a number of concepts in software engineering, following just a few of its meanings:
On the other hand, the term “transaction” almost always conveys its database semantics (except for domain-specific meaning, of course, eg, financial transactions in accounting software). Hence, a transaction typically can be started, committed, and aborted sometimes restarted.
Transactions can be used for concurrent programming, like the task in the sense of (2). The typical example for this is Software transactional memory, where this behavior is explicit. The GemStone/S OODB is exactly that: A database that at the same time is a software transactional memory implementation. Here, a task and a transaction virtually are the same.