TON Telegram Open Network - Fift - часть 1 - для чего нужен, hello world

avatar cromlehg 1 month ago

Оглавление
Следующая статья

Введение

В этой статье мы познакомимся с языком fift, поймем для чего он нужен и напишем первый скрипт.

Прежде чем приступать Вам необходимо собрать инструменты. Как это сделать описано в этому статье.

Что такое fift и для чего он нужен

Язык fift предназначен для:

  1. Написания скриптов создающих сообщения для сети TON. Все контракты в сети TON общаются посредством сообщений. Даже создание контракта выполняется сообщением.
  2. Написания смарт-контрактов или преобразования смарт-контрактов из других языков в fift. 

Язык fift - это скриптовой  низкоуровненвый стэковый язык. Что это занчит?

  1. Скриптовой - может выполняться в интерактивном режиме. Т.е. может отображать пользователю различную инфоормацию или работать с файлами никак не трогая сеть TON. По сути fift'у самостоятельный язык. В дальнейшем все что написано на fift мы будем называть скриптом.
  2. Низкоуровненвый - низкоуровненвые языки - это те которые работают с сущностями системы: т.е. в программе описывается как работать с памятью или со стэком. К примеру в высокоуровневых языках в основном программист может даже и не знать ничего про управление памятью или стэком, он просто пишет логику проргаммы, а не логику работы с памятью.
  3. стэковый - это самое интересное! В обычных языках программист ничего не знает про стэк, потому что работа со стэком уже атоматизирована. А программист оперирует переменными. В стэковых языках программсит помещает аргументы в стэк а потом вызывает команду. А команда достает аргументы из стэка, производит вычисления и помещает в стэк обратно. И никаких переменных нет.
    Покажем вычисление суммы двух чисел на стэковом и не стэковом языке. Вот пример нестэковый язык :
    var result = 1 + 2;
    А вот стэковый fift:
    1 2 +
    Сперва покажется непонятным что тут написано. На самом деле все просто. Прочитав эту строчку Fift сделает следующее: поместит в стэк 1, потом поместит в стэк 2, а потому вызовет команду сложения. Команда сложения возмет два последних аргумента со стэка сложит их и поместит результат в стэк. 
    Давайте проиллюстрируем стэк после выполнения каждой команды. Вверху у нас команды, а внизу изображение стэка после выполнения команды:

Вообще Fift довольно неудобный язык для написания логики смарт-контрактов. Смарт-контракт можно написать на более высокоуровневом языке, а потом транлировать в fift с помощью специальной программы. Однако, чтобы сформировать сообщение, к сожалению, в стандартном репозитории TON нет ничего кроме fift. Именно поэтому нам придется изучить fift.

Скрипт Hello World

Для того чтобы написать скрипт нам нужно знать команды fift'а. 

Итак, наша задача вывести строчку "Hello, world". Для этого нам потребуются два оператора:

  1. ."строка" - оператор вывода строки. Обратите внимание что оператор начинается с точки. И конечно все что внутри скобок будет напечатано.
  2. cr - оператор перевода курсора на новую строку. Грубо говоря это абзац для красоты вывода в консоль.

Как вы уже наверное догадались код скрипта будет выглядеть следующим образом:

."Hello, world!" cr

Сохраните его в файл hw.fif. 

Отлично, теперь у нас есть скрипт и нам осталось его запустить.

Исполнение скрипта

Для того чтобы запустить наш скрипт на выполнение воспользуемся интерпретатором fift:

<папка_с_исходниками>/crypto/fift -I <папка_с_исходниками>/crypto/fift/lib/ -s hw.fif

Тут <папка_с_исходниками> - это папка в которой находится код lite_client. 

В результате мы получим вывод в коносль: Hello, world.

Поясним параметры.

  • Параметр -I - задает путь к библиотекам fift . Эту опция лучше уаазывать всегда
  •  -s - это запуск fift в интерактивном режиме, что нам и требуется.
  • Последний параметр это наш файл со скриптом

В дальнейшшем мы не будем больше показывать как заупскать интерпретатор, предполагая что читатель научился выполнять код скрипта. 

Резюме

В этой статье, мы узнали что такое и зачем нужен fift, узнали две команды. Написали наш первый скрипт и научились его запускать.

Обсудить, задать вопросы или сообщить о неточностях можно в нашей официальной группе - Blockchain's Witnesses

Оглавление
Следующая статья