-
Notifications
You must be signed in to change notification settings - Fork 16
introduction
Язык программирования - это система обозначений для абстрактного описания процесса вычислений
Каждый язык программирования имеет спецификацию, описывающую стандарт языка
Реализация может отличаться от стандарта
Реализация - это конкретное воплощение с помощью специальных программных средств - интерпретаторов, компиляторов
Стандарт языка описывает его синтаксис и семантику
Синтаксис - это правила корректной записи основных конструкций языка ( ключевых слов, операторов и т.д. )
Семантика языка - это смысловое содержание синтаксических конструкций
Алфавит языка состоит из букв, цифр и лексем
Лексема - это наименьшая единица языка имеющая самостоятельный смысл
К лексемам относятся:
спецсимволы: круглые , квадратные и фигурные скобки, ===, ==, !=, ++, =, >, < и т.д.
ключевые слова: var, function, for, switch, if, while и т.д.
Для программистов под архитектурой процессора подразумевается его способность исполнять определенный набор машинных кодов
Относительно архитектуры процессора языки программирования бывают высокого и низкого уровней
Языки высокого уровня абстракции не зависят от архитектуры процессора, но нуждаются в специальных программах ( трансляторах ), которые превращают код, написанный на языке высокого уровня, в машинные коды
Машинный код ( или нативный код ) - система команд конкретной вычислительной машины, которые интерпретируются непосредственно процессором или микропрограммами этой вычислительной машины
Каждая модель процессора имеет свой собственный набор команд
Процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B
Если процессоры A и B имеют некоторое подмножество инструкций, по которым они взаимно совместимы, то говорят, что они одной «архитектуры» ( имеют одинаковую архитектуру набора команд )
Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A
Низкоуровневый язык программирования ( язык программирования низкого уровня ) — это язык, близкий к программированию непосредственно в машинных кодах конкретного процессора
Машинный язык - это язык машинных кодов
Машинно-ориентированные языки - это языки, на которых команды процессора формулируются в мнемокодах, более доступных для человеческого восприятия
Примером являются языки ассемблера
Машинно-независимые языки обеспечивают платформенную независимость алгоритмов
Зависимость от платформы перекладывается на трансляторы, «переводящие» текст, написанный на языке высокого уровня, в элементарные машинные команды
Парадигма – совокупность идей и понятий, определяющих подход к программированию
Чаще всего языки программирования делят на процедурные ( императивные ) и непроцедурные ( декларативные )
Класс непроцедурных языков содержит в себе два подкласса: функциональные и логические языки
Часто отдельным классом выделяют объектно-ориентированные языки программирования, хотя они содержат элементы процедурного программирования
В процедурных языках программа явно описывает действия, то есть она является чёткой последовательностью команд, которые необходимо выполнить компьютеру
Программа говорит компьютеру, не что делать, а как
Программа отделена от данных
К этому классу можно отнести большинство языков программирования: Pascal, Basic, C и другие.
Непроцедурные языки являются противоположностью языкам процедурным
Декларативное программирование – парадигма программирования, в которой описывается, что необходимо сделать компьютеру
Примером служит язык разметки HTML
Например, тег <img> содержит ссылку на изображение,
но не говорит компьютеру, как вывести это изображение
Это знает каждый приличный браузер
В функциональном программировании процесс вычисления можно описать как вычисление значений функций в математическом понимании
Отличие математической функции от понятия «функция» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к ним переменных, таким образом, получая в разных местах программы разные выходные данные
В функциональном языке при вызове функции с одними и теми же аргументами результат всегда будет один и тот же – выход зависит только от входа
Примерами являются первый функциональный язык программирования LISP, Haskell и другие
В программах, написанных на языках логического программирования, вообще не описывается действий
Программист задаёт данные и отношения между ними, после этого программе можно задать вопрос, компьютер перебирает заданные данные и находит ответ
Пример языка логического программирования – Prolog
Объектно-ориентированное программирование
В языках объектно-ориентированного программирования переменные и функции группируются в классы
Каждый объект является экземпляром класса
Объекты имеют состояние, которое изменяется в процессе функционирования программы
В отличие от процедурной модели, ООП базируется не на функции, а на объекте как на целостной системе
Транслятор — это программа-переводчик, которая преобразует программу, написанную на языке высокого уровня, в программу, состоящую из машинных команд
Есть разнообразные виды трансляторов, например, компиляторы и интерпретаторы
Компилятор - это транслятор текста на машинный язык, проверяющий при этом код на синтаксические ошибки
Компилятор не исполняет программу, он ее строит
Интерпретатор переводит и выполняет программу строка за строкой
В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке
Распознав команду исходного языка, он тут же выполняет ее
Также, как и компилятор, интерпретатор проверяет код на синтаксические ошибки
Если ошибка найдена, интерпретатор останавливает трансляцию и сообщает об ошибке
Примеры компиляторов: С, С++, Delphi
Примеры интерпретаторов: JavaScript, PHP
Мультипарадигмальный язык программирования
© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 |
| ⏬ |
|---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Приведение типов
- NaN | null | Infinity
- BigInt (ES10)
- Функции
- Методы
- Методы строк
- Методы массивов
- Date ()
Самостоятельная работа
Практика (XSS)
Homework
- Циклы while и do...while
- Циклы for...of и for...in
- Параметры по умолчанию
- Объект function
Практика
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- Размеры и прокрутка элемента
- Event Loop
- async | await
- API
- REST | HATEOAS
- status codes
JSON placeholder-
JSON server
fake chat
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- :not(:defined)
- Shadow DOM
- Custom elements
- Lifecycle hooks
- whenDefined
- <template>
- slot
1
2
3
Homework
- npm
- webpack
Упражнение 1- ES6 модули
Упражнение 2- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
| ⏫ |
|---|

Дополнительно
Справочная инфо
Git Bush
TCP/IP
Коды символов