Introducing the Move programming language

You can check . It is a free tutorial which will lead you learn libra through game.:smiley:


Move is strong programming language :grinning:

Why all the blockchain platform release new language instead of using programming language available in the industry?

Good question! This is dicussed somewhat indirectly in Section 3.1 of the Libra Blockchain paper, but here is a more direct answer.

There are three: “table stakes” requirements that a programming language must satisfy to be suitable for blockchain use.

  1. Deterministic. Execution of programs in the language must be deterministic. Otherwise, validators will be unable to agree on what the next state is when a transition is nondeterministic.
  2. Hermetic. Programs in the language can only read data from the global state or the current transaction. Validators agree on these two things but not on anything else. Executing a program that (e.g.) downloads data from an arbitrary web site may return different values for different validators, which would cause validators to disagree on the next state.
  3. Metered. A single state transition should take a finite amount of time and use a finite amount of resources. Otherwise, the system will be unable to make progress beyond that transition. Existing blockchain languages typically implement metering by assigning a gas cost to each program operation, then limiting the amount of gas that each state transition is allowed to consume via runtime monitoring.

Most conventional programming languages lack all three of these qualities. For (1), lack of memory safety (e.g., C) or operations with undefined semantics (e.g., iterating over the keys of a HashMap in Java) disqualify the language. The functionality in (2) is present in most general-purpose languages because it is very important for conventional programming. Very few languages have (3) built in.

I call these “table stakes requirements” because they are only the basics of what a blockchain language needs–there are many other qualities like support for programming with assets that are crucially important, but not strictly required.