Парадигмы программирования
Введение
https://kgeorgiy.info/courses/paradigms/
Copyright © Георгий Корнеев
Структура курса
Содержание
Структура курса
Концепции Java
Соглашения о вызовах
Структура
Лекции
Домашние задания
Практика
Зачет
Содержание
Концепции
Программирование по контракту
ООП
Функциональное программирование
Логическое программирование (?)
Языки
Java
JavaScript
Clojure
/
ClojureScript
(?)
Prolog
(?)
Концепции Java
Содержание
Структура курса
Концепции Java
Соглашения о вызовах
Состав платформы
Виртуальная машина Java (JVM)
The Java Virtual Machine Specification
Стандартная библиотека
Соответствует версии платформы
Компилятор Java
The Java Language Specification (JLS)
Редакции Java-платформы
Standard Edition
Для обычных приложений
Micro Edition
Для мобильных приложений
Enterprise Edition
Для серверных приложений
Байт-код и виртуальная машина
Что такое виртуальная машина
Что такое байт-код
Write once run anywhere
Преимущества и недостатки
JIT-компиляция
Сборка мусора
Что такое сборка мусора
Невозможность в
C
/
C++
/
Pascal
Подсчет ссылок
Почему не работает
Обход графа ссылок
Соглашения об именованиях
Naming Conventions for Java Programming Language
ClassNamingConvention
methodNamingConvention()
fieldNamingConvention
CONSTANT_NAMING_CONVENTION
Соглашения о вызовах
Содержание
Структура курса
Концепции Java
Соглашения о вызовах
Вызов по значению
Call-by-value
Передается копия значения
Примитивные типы
Всегда копируются
Ссылочные типы
Очень дорого
Call-by-value для ссылок
Вызов по ссылке
Call-by-reference
Передается ссылка на значение
Значение можно изменить
Защитное копирование
Очень дорого
Вызов по имени
Call-by-name
Передается выражение
Значение вычисляется при использовании
Эффективность
Программные конструкции
Неэффективность
Экспоненциальный рост
Вызов по требованию
Call-by-need
Ленивые вычисления
Передается выражение
Значение вычисляется при первом использовании
Эффективность
Программные конструкции
Накладные расходы