26
Выразительные возможности языков программирования Евгений Тюменцев директор HWdTech

2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

  • Upload
    -

  • View
    30

  • Download
    3

Embed Size (px)

Citation preview

Page 1: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Выразительные возможности языков программирования

Евгений Тюменцев директор HWdTech

Page 2: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Алфавит

Алфавит – произвольное непустое конечное множество символов.

A = { _ | =1,2, …, }.

Page 3: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Слово в алфавите

Словом в алфавите A называется конечная цепочка записанных подряд символов этогоалфавита

Page 4: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Подслово

Говорят, что слово α входит в слово β (α является подсловом слова β), если найдутся такие слова γ и δ, что β = γαδ.

Page 5: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Формальный язык

Множество всех слов в алфавите A обозначается через ∗ (пустое слово принадлежит ∗).

Формальным языком (или просто языком) в алфавите A называется какое угодно подмножество множества ∗.

Page 6: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Примеры слов в С++void f() {}

class A{public: void DoSomething();};

Page 7: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Абстракция

Пусть L – формальный язык, обозначим через ̌ множество всех подслов языка L. Тогда F: X → ̌ называется абстрагированием, где X – произвольное множество, а образ F(x) - абстракцией x.

Page 8: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Производительность труда программистов

Page 9: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Критерий линейной производительности

Грубо: процесс разработки программы на языке L обладает линейной скоростью, тогда и только тогда, когда трудоемкость написания каждого слова этой программы ограничена некоторой константой C.

Количество слов/количество операций над словами

Page 10: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Производная и скорость

Page 11: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Искусственный интеллект

Page 12: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Возможно ли создать искусственный интеллект?

1980 Michael O'Donnell “A Critique of the Foundations of Hoare-Style Programming Logics”

2001 А. Н. Ващенко, Е. Е. Витяев, Н. Г. Загоруйко, А. А. Мальцев, Н. Н. Непейвода, Д. Е. Пальчунов, С. Г. Пыркин, А. В. Ткачев, Рефлексирующие программные системы

Page 13: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Линейная производительность и абстракция

Page 14: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Изменения в предметной области

Page 15: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Геом. смысл импликацииПусть P1 → P, B = { x | P1(x) = 1},A = { x | P (x) = 1}.Тогда B ⊂ A.

P ⊨ P1. Говорят, что P – более слабое условие, P1 – более сильное.

Page 16: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Есть выход - аксиома вывода

P1 → P, {P} S {Q}, Q → Q1 ╞ {P1} S {Q1}

P1 → P, {P} S {Q} ╞ {P1} S {Q}{P} S {Q}, Q → Q1 ╞ {P} S {Q1}

Page 17: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Не полиморфный код - циклы

Page 18: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Не полиморфный код - условные операторы

Page 19: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Вывод условного оператора

Пусть L = {{P} f {Q}, }, B – предикат.

P^B→P (A3 ИВ){P^B}f{Q} (аксиома вывода){P}if (B) then f endif {Q} (аксиома условного оператора)

Page 20: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Почему держимся за условия и циклы

Система аксиом, содержащая if и while полна.

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

Page 21: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

if и while - это абстракции для ...

Формул с квантором всеобщности

Page 22: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Пример

Покупатели

Page 23: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Пример

Покупатели

с наличными

Page 24: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Пример

Покупатели

с наличными

с платежными картами

Page 25: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Пари

Page 26: 2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программирования

Вопросы

Наша группа: vk.com/hwdtech

Наш сайт: hwdtech.ru