Перфолента.Net компилируемый язык со статической типизацией — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
(Новая страница: «'''Перфолента.Net компилируемый язык со статической типизацией.''' Перфолента, в отличие от…»)
 
(Статическая типизация.)
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
'''Перфолента.Net компилируемый язык со статической типизацией.'''
 
 
 
Перфолента, в отличие от интерпретируемых языков 1С, [[OneScript]], Python, является компилируемым языком со статической типизацией, но с элементами динамической типизации, которая используется по мере необходимости. Подробности процесса компиляции и различные варианты применения описаны в этой статье.
 
Перфолента, в отличие от интерпретируемых языков 1С, [[OneScript]], Python, является компилируемым языком со статической типизацией, но с элементами динамической типизации, которая используется по мере необходимости. Подробности процесса компиляции и различные варианты применения описаны в этой статье.
  
Строка 23: Строка 21:
 
Однако, в языке имеется тип Объект, являющийся чем-то в виде контейнера для хранения объектов любого из других типов. Так вот, операции с типом Объект относятся к элементам динамической компиляции, когда тип операндов и сама возможность проведения операции определяются во время выполнения программы, а не во время её компиляции. Динамическая типизация ведет к значительному снижению скорости выполнения программы, но зато позволяет работать с типами о которых ничего не было известно при компиляции.
 
Однако, в языке имеется тип Объект, являющийся чем-то в виде контейнера для хранения объектов любого из других типов. Так вот, операции с типом Объект относятся к элементам динамической компиляции, когда тип операндов и сама возможность проведения операции определяются во время выполнения программы, а не во время её компиляции. Динамическая типизация ведет к значительному снижению скорости выполнения программы, но зато позволяет работать с типами о которых ничего не было известно при компиляции.
  
В следующем примере все переменные имеют тип Объект. В переменной о1 хранится вещественное число типа Вещ. В переменной о2 хранится целое число типа Целое. А вот в переменную о3 будет помещен результат сложения чисел двух разных типов, причем определение типов, которые необходимо сложить так же произойдет во время выполнения программы. Если между двумя типами операция сложения будет не определена возникнет исключение.
+
В следующем примере все переменные имеют тип Объект. В переменной о1 хранится вещественное число типа Вещ. В переменной о2 хранится целое число типа Целое. А вот в переменную о3 будет помещен результат сложения чисел двух разных типов, причем определение типов, которые необходимо сложить так же произойдет во время выполнения программы. Если между двумя типами порядок выполнения операции сложения будет не определен, возникнет исключение.
  
 
  Перем о1 тип Объект = 4.3
 
  Перем о1 тип Объект = 4.3
Строка 30: Строка 28:
  
 
Для получения максимальной скорости работы избегайте использования в программе типа Объект. Используйте его только при необходимости работать с типами данных о которых станет известно во время выполнения.
 
Для получения максимальной скорости работы избегайте использования в программе типа Объект. Используйте его только при необходимости работать с типами данных о которых станет известно во время выполнения.
 +
 +
== Ссылки ==
 +
* http://promcod.com.ua/Article.asp?code=20190702143521033734 - Первоисточник документации
  
 
[[Категория:Описание языка Перфолента.NET]]
 
[[Категория:Описание языка Перфолента.NET]]

Текущая версия на 21:01, 1 сентября 2020

Перфолента, в отличие от интерпретируемых языков 1С, OneScript, Python, является компилируемым языком со статической типизацией, но с элементами динамической типизации, которая используется по мере необходимости. Подробности процесса компиляции и различные варианты применения описаны в этой статье.

Как и большинство языков программирования, язык Перфолента — это некий текст, записанный по строгим правилам, который переводится программой компилятором в готовый для выполнения процессором компьютера, в окружении подходящей операционной системы, машинный код.

Язык Перфолента компилируется в CIL.

Перфолента компилируемый язык, поэтому текст программы на нем, в отличие от интерпретируемых языков, полностью переводится на машинный язык перед выполнением.

Однако в архитектуре .Net, на которой базируется язык Перфолента, принята двухэтапная компиляция. Сначала компилятор Перфоленты переводит программу на промежуточный низкоуровневый язык CIL (Common Intermediate Language), представляющий из себя подобие машинного языка для некоторой виртуальной машины, а затем, при первом запуске программы (или по мере вызова методов программы), специальный JIT (Just In Time) компилятор платформы .Net переводит программу с промежуточного языка на машинный язык конкретного процессора, установленного в вашем компьютере.

Компилятор Перфоленты может запускаться из командной строки или из редактора кода, поставляемого в дистрибутиве. Команда запуска из командной строки выглядит так:

pflc.exe myprogram.pfl

В результате, в папке программы образуется запускаемый файл EXE или библиотека DLL.

Статическая типизация.

Статическая, значит однажды определенная и больше не меняющаяся. Компилятор должен во время компиляции определить типы всех переменных, параметров методов, делегатов и других объектов. Если какой либо тип определить не удается, то компиляция прерывается и выдается сообщение об ошибке.

Однако, в языке имеется тип Объект, являющийся чем-то в виде контейнера для хранения объектов любого из других типов. Так вот, операции с типом Объект относятся к элементам динамической компиляции, когда тип операндов и сама возможность проведения операции определяются во время выполнения программы, а не во время её компиляции. Динамическая типизация ведет к значительному снижению скорости выполнения программы, но зато позволяет работать с типами о которых ничего не было известно при компиляции.

В следующем примере все переменные имеют тип Объект. В переменной о1 хранится вещественное число типа Вещ. В переменной о2 хранится целое число типа Целое. А вот в переменную о3 будет помещен результат сложения чисел двух разных типов, причем определение типов, которые необходимо сложить так же произойдет во время выполнения программы. Если между двумя типами порядок выполнения операции сложения будет не определен, возникнет исключение.

Перем о1 тип Объект = 4.3
Перем о2 тип Объект = 3
Перем о3 тип Объект = о1 + о2

Для получения максимальной скорости работы избегайте использования в программе типа Объект. Используйте его только при необходимости работать с типами данных о которых станет известно во время выполнения.

Ссылки