Skip to content

introduction

garevna edited this page Mar 12, 2019 · 2 revisions

🎓 Обзор концепций и языков программирования

demo

📖 Язык программирования

Язык программирования - это система обозначений для абстрактного описания процесса вычислений

Каждый язык программирования имеет спецификацию, описывающую стандарт языка

Реализация может отличаться от стандарта

Реализация - это конкретное воплощение с помощью специальных программных средств - интерпретаторов, компиляторов

Стандарт языка описывает его синтаксис и семантику

Синтаксис - это правила корректной записи основных конструкций языка ( ключевых слов, операторов и т.д. )

Семантика языка - это смысловое содержание синтаксических конструкций

Алфавит языка состоит из букв, цифр и лексем

Лексема - это наименьшая единица языка имеющая самостоятельный смысл

К лексемам относятся:

спецсимволы: круглые , квадратные и фигурные скобки, ===, ==, !=, ++, =, >, < и т.д.

ключевые слова: 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


📖 JavaScript

Мультипарадигмальный язык программирования


📖 Дополнительный материал

Язык гипертекстовой разметки

Всемирная паутина

© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав


Новая версия


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally