Классификация языков программирования
Цель обучения: анализировать классификацию, развитие и свойства языков программирования
Критерии успеха для цели: анализировать классификацию, развитие и свойства языков программирования Навык Критерий успеха Знание Знает виды языков программирования Знает особенности языков программирования высокого и низкого уровней Знает разницу между языками программирования высокого и низкого уровней Понимание Определяет недостатки языков программирования низкого уровня Анализ Умеет анализировать программный код и определяет к какому уровню языка программирования относится программный код
Можно выделить следующие уровни языков программирования: машинные; машинные машинно-оpиентиpованные (ассемблеры);ассемблеры машинно-независимые (языки высокого уровня). Машинные языки и машинно-ориентированные языки это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Языки высокого уровня делятся на: процедурные (алгоритмические) (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов; логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания; объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами.
Поколения языков программирования Поколения Языки программирования Характеристика Первое Машинные Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ Второе Ассемблеры, макроассемблеры Более удобны для использования, но по- прежнему машинно-зависимы Третье Языки высокого уровня Мобильные, человеко-ориентированные, проще в освоении Четвёртое Непроцедурные, объектно- ориентированные, языки запросов, параллельные Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой Пятое Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками
Процессоры (CPUs) компьютера очень важны, но при этом они просты, когда дело доходит до обработки. Они могут обрабатывать только единицы (1) и нули (0). Они не понимают как обрабатывать код в форме в которой мы пишем его (например, Pascal, C#). Что же должно случиться, чтобы процессор мог работать с этим кодом?
От нашего мозга до процессора(CPU)…
От нашего мозга до процессора(CPU)… Алгоритм
От нашего мозга до процессора(CPU)… Алгоритм
От нашего мозга до процессора(CPU)… Machine Language Assembly Language Алгоритм
От нашего мозга до процессора(CPU)… Machine Language Assembly Language Алгоритм
Разница между языками высокого и низкого уровней… Машинный код (Язык очень низкого уровня) Процессор может понимать только один тип кода: Машинный код Сделан из кодированных команд и данных. Например, (двоичный) или B8200 (шестнадцатеричный) написанная программа на «Машинном коде» сложная для понимания человеком, но имеет самую высокую скорость выполнения. High Level Language Assembly Language Machine Language (Code) Hardware (CPU)
Язык Ассемблер (Язык низкого уровня) Чтобы преодолеть проблему был создан язык Ассемблер. Этот язык имеет небольшой набор команд, который представляет определенную часть машинного кода. Это помогло программистам, т.к. они не должны были помнить двоичный код, вместо этого они учили команды. Например: Вместо запоминания, что значит 1011 или 1001, они уже запоминали команды такие как ADD и SUB. Эти команды известны как Мнемоники (простые средства памяти). Для различных процессоров используются различные версии языка Ассемблер, следовательно каждый процессор может обработать только свою версию Ассемблера. Язык Ассемблер также сложен для изучения и использования и поэтому были разработаны Языки программирования Высокого Уровня. (Благодаря меньшему количеству кода, язык ассемблер мог быть обработан процессором быстрее, чем языки высокого уровня) High Level Language Assembly Language Machine Language (Code) Hardware (CPU) Machine Code Mnemonic Code B80200MOV AX, 0002 BB0400MOV BX, DBADD AX, BX CD20INT 20
Языки программирования высокого уровня (Pascal, Basic, Python, Java, C++ и другие) Код высокого уровня более лёгкий для написания и следовательно, для понимания человеком. High Level Language Assembly Language Machine Language (Code) Hardware (CPU)
Задание o_i_nizkogo_urovnej/
Трансляторы Языки программирования высокого уровня Язык Ассемблер Машинный код Аппаратное обеспечение. Процессор (CPU) ? Так каким же образом НАПИСАННЫЙ КОД НА ЧЕЛОВЕЧЕСКОМ ЯЗЫКЕ переводится в Машинный код?
Трансляторы Трансляторы это программы, которые конвертируют команды языка программирования высокого уровня: write, IF, For и т.д. …в инструкции машинного кода: 1011, 11001, и т.д. …таким образом процессор может обработать данные! Два типа пути трансляции: 1. Берет целый код и конвертирует его в машинный перед его исполнением (известный как компиляция). 2. Берет одну инструкцию кода за один раз, переводит и выполняет ее перед переводом следующей инструкции (известно как интерпретация).
Три типа трансляторов: Компилятор Интерпретатор Ассемблер Переводит целый код в один файл (часто в.exe файл). Файл может быть запущен на любом компьютере без транслятора. Может занять длительное время компиляция исходного кода, т.к. транслятор будет часто конвертировать инструкции в различные наборы машинного кода и проверять будет ли понимать их процессор. Использует больше памяти, чем интерпретатор, но быстрее запускает программу Переводит целый код в один файл (часто в.exe файл). Файл может быть запущен на любом компьютере без транслятора. Может занять длительное время компиляция исходного кода, т.к. транслятор будет часто конвертировать инструкции в различные наборы машинного кода и проверять будет ли понимать их процессор. Использует больше памяти, чем интерпретатор, но быстрее запускает программу Конвертирование исходного кода в машинный код строка за строкой «line by line». Использует меньше памяти, чем компилятор. Следовательно программа работает очень медленно. Главная причина почему используется интерпретатор это тестирование на этапе разработки. Программисты могут быстро выявить ошибки и исправить их. Транслятор должен присутствовать для запуска программы. Конвертирование исходного кода в машинный код строка за строкой «line by line». Использует меньше памяти, чем компилятор. Следовательно программа работает очень медленно. Главная причина почему используется интерпретатор это тестирование на этапе разработки. Программисты могут быстро выявить ошибки и исправить их. Транслятор должен присутствовать для запуска программы. Это тип транслятора, используемый для языка Ассемблер (не является языком высокого уровня). Он конвертирует мнемонические инструкции языка ассемблер в машинный код. Это тип транслятора, используемый для языка Ассемблер (не является языком высокого уровня). Он конвертирует мнемонические инструкции языка ассемблер в машинный код. Translators Compilers Interpreters Assemblers
Задание В парах проанализируйте ситуации и определите какой тип транслятора рационально использовать компилятор или интерпретатор. 1)Арман пишет код новой компьютерной игры по биологии. Он хочет проверить свой код на наличие ошибок. Какой тип транслятора вы посоветуете ему использовать? Обоснуйте свой ответ. 2)Татьяна – учитель биологии, которая хочет посмотреть какая игра у Армана получилась и какие функции она выполняет. Какой тип транслятора будет использован в этой ситуации? Обоснуйте свой ответ.
Языки высокого и низкого уровней Почему люди используют языки высокого уровня чаще при разработке ПО, чем языки низкого уровня? _______________________________________ ____________________________________(2) Фразы: Языки высокого уровня …, в то время как языки низкого уровня ….
Назовите два различия между машинным кодом и языком ассемблера: _______________________________________ ____________________________________ (2) Фразы: Машинный код …, в то время как язык ассемблера …. Языки высокого и низкого уровней
Можем ли мы использовать одну версию языка ассемблер на разных компьютерах? Обоснуйте ответ. _______________________________________ ____________________________________ (1) Фразы: Одна версия язык ассемблер … может быть использована …, потому что …. Языки высокого и низкого уровней
Трансляторы Назовите трансляторы, которые используются для перевода языков высокого уровня в языки низкого уровня. ____________________________ ____________________________ (2)
Трансляторы Преимущества Компилятор Интерпретатор (2) Сравните компиляторы с интерпретаторами и заполните таблицу:
Summary Процессоры (CPUs) очень важны, но при этом они просты, когда дело доходит до обработки. Они могут обрабатывать только единицы (1) и нули (0). Они не понимают как обрабатывать код в форме в которой мы пишем его. Что же должно случиться, чтобы процессор мог работать с этим кодом?
Summary Уровни языков программирования Языки низкого уровня Машинный код АссемблерЯзыки высокого уровняPascal, C, Basic, Python Трансляторы АссемблерыКомпиляторы Интерпретаторы
Рефлексия (Ставим ) Согласен Почти согласен Частично согласен Не согласен Я точно понимаю путь реализации от «идеи до микропроцессора» Я точно знаю различие между языка программирования низкого и высокого уровней Я точно знаю три типа трансляторов Я точно понимаю, чем отличается компилятор от интерпретатора
sa.ru/ProgrProd/YazProgr/index.html pdf