Русские вычислители

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Русские вычислители » О языках программирования » Основные языковые механизмы


Основные языковые механизмы

Сообщений 1 страница 13 из 13

1

Нужно их хотя бы выписать, чтобы знать, что они еcть

Фичи компилятора, рантайма или синтаксический сахар - то, чем разные языки отличаются друг от друга.

Знать о них нужно для того, чтобы развести дискуссию о том, потребуются ли они в конкретном компиляторе или нет и почему.

Отредактировано ВежливыйЛис (16.10.2016 20:38:29)

0

2

type erasure

механизм type erasure, т.е. поддержка generics обеспечивается лишь компилятором, но не рантаймом, и после компиляции информация о самом типе не будет доступна.

0

3

duck typing

https://ru.wikipedia.org/wiki/Утиная_типизация

Возможности по использованию объекта
определяются его текущим набором методов и свойств,
в противоположность наследованию

считается, что объект реализует интерфейс, если он содержит все методы этого интерфейса,
независимо от связей в иерархии наследования и принадлежности к какому-либо конкретному классу.

причём всё это проверяется во время компиляции программы

http://stackoverflow.com/questions/2127 … uck-typing

Duck typing in C# 2 can only be done using reflection

C#4 makes this much simpler with dynamic

public interface IQuack
{
    void Quack();
}

public class Duck : IQuack { }
public class Human : IQuack { }

public static void MakeQuack(dynamic duck)
{
    duck.Quack();
}

duck typing используется для того, чтобы избежать boxing/unboxing:
https://habrahabr.ru/post/148905/
(не как dynamic, а поддерживается компилятором)

Отредактировано ВежливыйЛис (16.10.2016 17:23:18)

0

4

type inference

https://ru.wikipedia.org/wiki/Вывод_типов

возможность компилятора самому логически определить тип значения у выражения.

- сокращает размер исходного кода;
- повышает лаконичность исходного кода;
- повышает повторное использование кода.

0

5

Алгоритм резолюций

https://ru.wikipedia.org/wiki/Правило_резолюций

Правило резолюций предложено в 1930 году в докторской диссертации Жака Эрбрана
для доказательства теорем в формальных системах первого порядка.

Алгоритм проработан Джоном Аланом Робинсоном в 1965 году.
позволял доказать любую верную теорему (вывести из аксиом) за конечное время (за какое не известно).

используется в языке Пролог

0

6

pattern matching

https://ru.wikipedia.org/wiki/Сопоставление_с_образцом

используется языках ML, Haskell

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

0

7

ownership & borrowing

https://doc.rust-lang.org/book/referenc … owing.html

используется в языке Rust

0

8

reference counting

https://ru.wikipedia.org/wiki/Подсчёт_ссылок
https://en.wikipedia.org/wiki/Reference_counting

используется в Python совместно со сборкой мусора

Отредактировано ВежливыйЛис (16.10.2016 17:11:09)

0

9

10

stack unwinding

http://stackoverflow.com/questions/2331 … -unwinding

чтобы поддерживать структурированную обработку исключений,
компилятор должен генерировать код определённым образом (структурировать)

Отредактировано ВежливыйЛис (16.10.2016 17:25:18)

0

11

Что такое языковые механизмы?

0

12

Павиа написал(а):

Что такое языковые механизмы?

Фичи компилятора, рантайма или синтаксический сахар - то, чем разные языки отличаются друг от друга.
Знать о них нужно для того, чтобы развести дискуссию о том, потребуются ли они в конкретном компиляторе или нет и почему.

в Кумире, например, нет структур.

То есть расширяемость системы типов (при условии, что это язык со статической системой типов) - это то, что не во всех языках встречается, значит языковой механизм.

Статья про разную типизацию:
https://habrahabr.ru/post/161205/

Отредактировано ВежливыйЛис (17.10.2016 17:29:37)

0

13

Константность объектов

в C++ для этого есть ключевое слово const и много правил как его правильно использовать

Теперь целое направление есть, функциональное программирование.

"Анализаторы для своей работы, как правило требуют различного рода языковые ресурсы. Например, для морфологического анализатора обычно необходим словарь, в котором хранятся словоформы ЕЯ, а также статистическая модель для разрешения морфологической омонимии; для синтаксического анализатора на основе системы переходов необходима модель для выбора действий анализатора; для семантического анализатора, который описан в настоящей диссертации, нужен словарь, в котором содержится информация о предикатных словах и их ролевых структурах, словарь ролей для вопросительный слов и др. Как правило,
эти ресурсы занимают большой объем оперативной памяти. В ходе работы анализатор обычно осуществляет только операции чтения этих ресурсов. Поэтому, чтобы не выделять память под несколько копий одних и тех же крупных ресурсов для нескольких анализаторов, в которых они требуются, архитектура лингвистического процессора должна обеспечивать возможность разделять использование одного языкового ресурса между несколькими объектами-анализаторами. Это требование особенно важно для программ, которые должны осуществлять обработку текстов в несколько потоков."

Отредактировано ВежливыйЛис (16.10.2016 21:25:49)

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»



Вы здесь » Русские вычислители » О языках программирования » Основные языковые механизмы