Is it correct to say that Bitcoin has a virtual machine in the same way as Ethereum does?
Short answer: No
Long answer:
The creation of a contract in Ethereum is a transaction in which its data field contains the compiled bytecode. Transaction is included in a block and then bytecode is executed.
Why Ethereum needs VM is something Ethereum devs can answer better, however according to my understanding:
- Turing completeness (Problems: https://bitcoin.stackexchange.com/a/105931/)
- Parallelization of smart contract execution (Possible without EVM: https://medium.com/bit-matrix/how-does-bitmatrix-achieve-parallel-processing-in-a-utxo-model-6ef70141bd59)
A smart contract is not just the code written in solidity and deployed on chains that use VMs.
Smart contract is any digital contract that minimizes trust. What can the smart contract do? What is the language used? Is it deployed using EVM? All these are irrelevant to define a code as smart contract.
Smart contracts are possible on Bitcoin but with limited functionality. There is nothing like EVM in Bitcoin AFAIK. However lot of things are possible using layer 2 (LN and Sidechains) and scripting is going to improve with Taproot.
Related questions:
Bitcoin and Smart Contracts
Can smart contracts be set up on a side chain or 2nd layer solution?
Is there a tool like Ethereum EVM at present for Bitcoin script?