Smart contracts (called chaincode) that can run on Hyperledger Fabric are primarily written in Go, originally developed by Google. It is a programming language influenced by C and Oberon. Besides Go, more languages will be supported in the next release(s), such as Java and JavaScript. Each chaincode is an isolated program, and when implemented it maintains its own private state of the ledger. However, you can program a chaincode to allow other chaincodes to query its private state. Essentially, you can write arbitrary code, but your chaincodes (smart contracts) have to conform to a common interface that peers use to control them.
Each chaincode you write needs to implement an Init and an Invoke method. The Init method ...