📄️ Plutus Ledger Language Version (Plutus V1/V2/V3)
As explained in Different Notions of Version, Plutus V1, V2 and V3 are not distinct programming languages; the primary difference lies in the arguments the script receives from the ledger, and the value it returns.
📄️ Script Purposes
One of the arguments every Plutus script receives is the script context, containing information about the transaction the script is validating.
📄️ Producing a Plutus contract blueprint
Plutus contract blueprints (CIP-0057) are used to document the binary interface of a Plutus contract in a machine-readable format (JSON schema).
📄️ Optimizing Scripts with asData
The Plutus libraries contain a PlutusTx.asData module that contains Template Haskell (TH) code for encoding algebraic data types (ADTs) as Data objects in Plutus Core, as opposed to sums-of-products terms.
📄️ Other Optimization Techniques
Identifying problem areas
📄️ Profiling Script Budget Usage
Figuring out why your script takes more CPU or memory units than you expect can be tricky.