Программы на языках программирования низкого уровня

Блок 6 Лаборатория 1: Иерархия компьютерной Абстракции, Стр. 3

Область программного обеспечения: Языки программирования

ДЕРЖИТЕ ТАКОЕ, ЧТО нужно исправить. —МФ, 6/22/20

Эта страница становится все длиннее. После того. Как мы закончим прохождение стандартов, мы должны рассмотреть, сколько из этого действительно необходимо. —МФ, 1/29/19 Кроме того, является ли эта страница тем местом, где мы могли бы привести какой-либо аргумент —МФ, 1/29/19 МФ: слегка очистите текст. Чтобы сделать его более кратким

На этой страницевы рассмотрите . Почему существуют разные языки программирования. И посмотрите на некоторые из способов. Которыми языки отличаются.

JavaScript. Python. Snap!, C++, Java. Scheme, Prolog… Почему существует так много языков программирования? Почему бы нам просто не выбрать лучший вариант или не создать новый и не придерживаться его?

Некоторые языки имеют очень узкие цели; их называют языками специального назначения. Например, в Microsoft Word встроен язык программирования под названием Точно так же HTML (язык гипертекстовой разметки) предназначен только для структурирования веб-страниц.

Языки общего назначения не имеют узкой цели. В некотором смысле все эти языки одинаковы: если алгоритм может быть выражен на одном языке. Он может быть выражен на всех. Несколько основных функций включены почти во все языки. Включая арифметические операторы (+,-,×,÷) и булевы операторы (and,or, not). Различия между языками в основном связаны с уровнями абстракции.

Языки высокого и низкого уровня

диаграмма общих языков программирования, перечисленных в порядке уровня абстракции; есть вертикальная двуглавая стрелка справа, указывающая, что первая строка языков (Snap!, Scheme, Prolog, Ruby, Lisp) является

Язык высокого уровня (например. Snap! или Схема) включает в себя множество встроенных абстракций. Которые облегчают сосредоточение внимания на проблеме. Которую вы хотите решить. А не на том. Как работает компьютерное оборудование. Низкоуровневый язык (например. Си) содержит меньше абстракций. Поэтому для написания программы требуется много знаний об архитектуре компьютера.

Почему программисты используют высокоуровневые языки?

Языки высокого уровня могут создавать более безопасные программы-те. Которые с меньшей вероятностью имеют ошибки,—потому что абстракции управляют запутанными деталями. Которые могут сбить программистов с толку.

Языки высокого уровня уменьшают ошибки в использовании памяти. Более старые, низкоуровневые языки требовали, чтобы программист управлял использованием памяти компьютера с помощью инструкций, говорящих:

Это неприятность. О которой нужно думать. И люди-программисты плохо в этом разбираются. В языках низкого уровня очень распространенной ошибкой является то. Что одна часть программы говорит: Языки высокого уровня заботятся об этом за нас. Используя технику. Называемую сборкой мусора, которая ставит компьютер в обязанность знать. Когда блок памяти больше не используется.

Языки высокого уровня также могут сделать программирование намного более удобным. Потому что они предлагают больше абстракций. Одним из примеров являются функции более высокого порядка (например map, keep, combine, и for each), которые позволяют программисту писать более короткий и чистый код.

  1. Вопрос самоконтроля

    Этот код похож на процедуру более высокого порядка. Которую вы изучили. Поговорите со Своим Партнером Определите процедуру. Которую этот код имитирует:

    Это ваша первая попытка.

В C вы можете сделать это длинным путем:

но C не позволяет вам взять выражение (напримерjoin () (s), or ((5) × ( )) + (7)) и вставить его в функцию более высокого порядка. Напримерmap:
report (map (join () (s)) over (words))

Почему программисты используют низкоуровневые языки?

Лучшая причина для использования языков низкого уровня-это написание операционных систем (таких как Windows, Mac OS X. Android или iOS). Вы узнаете больше об операционных системах на странице Домен программного обеспечения: Операционные системы.

Иначе зачем программисту использовать язык низкого уровня?

Я все еще думаю. Что это слишком долго и нуждается в словесной обработке в следующий раз. —МФ, 11/16/17

Прикладные программисты не часто решают: Они могут просто не осознавать. Что возможны более высокие уровни абстракции. Например, аппаратное обеспечение компьютера ограничивает размер чисел. Которые его арифметическая единица может добавить за один шаг. Четыре миллиарда—около десяти цифр—это общий предел размера для целых чисел. Программисты, использующие Java, JavaScript. Python, C или C++. Могут думать. Что этот предел неизбежен. Но программисты. Которые используют действительно высокоуровневые языки. Такие как Scheme или Common Lisp, знают. Что они могут делать арифметические вычисления с числами с миллионами или миллиардами цифр. Ограниченными только размером памяти компьютера. Как вы увидите позже. Щелк! есть библиотека. Которая позволяет ему делать это тоже.

Люди часто говорят. Что разные языки программирования хороши для разных видов программ. Но за исключением трехмерной обработки видео (следующий абзац) трудно представить себе приложение. Которое пострадало бы от таких вещей. Как сборка мусора или функции более высокого порядка. Есть всего несколько случаев. Когда люди намеренно разрабатывают языки с функциями. Которые могут быть не нужны для некоторых приложений. Вот один из таких примеров: В Snap! текстовая строка. Состоящая только из цифр. Считается числом; с ней можно выполнять арифметические операции. В языке для учащихся требование явного преобразования между типами данных просто затрудняет начало программирования. Но большинство языков. Не предназначенных для начинающих. Разделяют эти два типа данных.

Программисты могут подумать. Что абстракция слишком медленная. Раньше это было правдой. И программистам трехмерных видеоигр все еще нужна вся скорость. Которую они могут получить. Потому что их программы напрягают скорость современных компьютеров. Поэтому они часто пишут часть своих программ, ту часть. Которая на самом деле выводит картинки на экран. На машинном языке. Просто для скорости. Но большинство программистов пишут приложения. Которые совсем не напрягают компьютеры. Когда вы отправляете электронное письмо или текстовое сообщение. Ограничивающим фактором является то. Как быстро вы можете печатать, а не то. Как быстро ваш компьютер может запускать программы.

От Майкла:
Где-то был комментарий о скорости абстракции. ИМО, мы не должны иметь это в учебном плане-но, вероятно. В руководстве учителя. Пытаясь обратиться к аргументу до того. Как это произойдет. Мы только что познакомили студентов. Которые, я думаю. Не имели бы никаких оснований полагать иначе.

  • Брайан считает. Что у Майкла не было бы такого беспокойства. Если бы связь все еще была: Однако Мария и Павел находят этот текст проблематичным. Брайан и Мэри согласились записать и пока проигнорировать этот вопрос. —МФ, 11/21/17

Устаревший код. Программисты в промышленности почти никогда не пишут программу с самого начала. Гораздо чаще они поддерживают программу. Которую кто-то написал много лет назад. И этот человек может даже больше не работать в этой компании. В долгосрочной перспективе, возможно. Было бы лучше переписать программу на более современный язык. Но в краткосрочной перспективе на это нет времени. Поэтому они в конечном итоге модифицируют существующий код на существующем языке программирования.

Что такое машинный язык?

Как высокоуровневые. Так и низкоуровневые языки используются людьми для написания компьютерных программ. Компьютерное оборудование понимает своего рода язык сверхнизкого уровня. Называемый машинным языком. Специальные программы. Называемые компиляторами и интерпретаторами, используются для перевода человеческих языков программирования на машинный язык для запуска компьютером.

Подробнее о компиляторах и интерпретаторах читайте здесь.

Компилятор — это программа. Которая принимает программу высокого или низкого уровня языка (исходный код) в качестве входных данных и производит программу машинного языка (объектный код) в качестве выходных данных. После создания программа на машинном языке может быть запущена повторно без необходимости повторной компиляции.

Интерпретатор — это программа. Которая принимает программу высокого или низкого уровня в качестве входных данных и выполняет инструкции машинного языка по мере необходимости для запуска программы. Он не производит автономную программу машинного языка в качестве вывода и должен будет повторить процесс снова в следующий раз.

Значит ли это. Что компиляторы лучше?

Это означало бы, что. За исключением того. Что процесс написания программы включает в себя отладку. Во время отладки интерпретатор может помочь. Предоставив информацию о ходе выполнения программы, например. Функцию визуального шага в Snap!, и позволяет вносить небольшие изменения в исходную программу без необходимости многократного запуска компилятора. Например, в Snap! вы можете перетащить блок в сценарий во время его выполнения. А компилятор не может этого допустить.

Для профессиональных программистов лучше всего иметь и интерпретатор. И компилятор для одного и того же языка. Программист пишет и отлаживает программу с помощью интерпретатора. И как только он уверен. Что она работает. Он компилирует ее. Затем компилятор может работать медленно. Вкладывая много усилий в оптимизацию кода машинного языка. Чтобы получить максимально быструю скомпилированную программу.

  1. Эти вопросы похожи на те. Которые вы увидите на экзамене AP CSP.

    Вопрос самоконтроля

    Какие из следующих утверждений верны относительно языка программирования низкого уровня по сравнению с языком программирования высокого уровня?

    1. Низкоуровневые языковые программы. Как правило. Труднее понять. Чем программы. Написанные на языке высокого уровня.
    2. Язык низкого уровня предоставляет программистам больше абстракций. Чем язык высокого уровня.
    3. Программы на языке низкого уровня. Как правило. Сложнее отлаживать. Чем программы. Написанные на языке высокого уровня.

    Это ваша первая попытка.

    Вопрос самоконтроля

    Программа написана на языке программирования высокого уровня. Определите правильное утверждение о программе?

    Это ваша первая попытка.

Читаемость кода

Одна из особенностей. Которая защелкивается! дает вам то. Что вы можете поместить текст заголовка в середине блока.

многоугольник, стороны: (30) длина стороны: (15)
По сравнению с некоторыми другими языками. Где функция имеет одно имя в начале. А затем все входные данные. Это повышает ясность и читабельность вашей функции.

polygon(30, 15)

Кроме того, в текстовом языке, когда вы видите что-то вроде 3 × 5 + 4, вы должны запомнить. Что умножение предшествует сложению (поэтому ответ равен 19). Если вы хотите. Чтобы все было наоборот. Вам придется использовать круглые скобки: 3 × (5 + 4). Чтобы получить 27. На языке, основанном на блоках. Блоки показывают вам то. Что было задумано: 3 × (5 + 4). Вы изучили порядок операций для+,–. × и ÷ в математическом классе. Но вы, вероятно. Не изучили порядок операций для такого выражения. Как это:

x && y 

. Как вы знаете. Что приходит первым

&&

или

? 

Параллелизм

Одной из причин создания новых языков программирования является упрощение написания параллельных программ—программ. Которые могут использовать более одного процессора одновременно. Сегодня, в 2017 году, компьютеры и смартфоны имеют многоядерные процессорные чипы, которые могут включать в себя 2, 4 или 8 процессоров. Выполняющих код одновременно. (Со временем число процессоров будет увеличиваться еще больше.) Крупные компании. Такие как Google. Используют параллелизм еще больше; у них есть кластеры из тысяч компьютеров. Работающих над одной и той же программой.

Функциональные языки программирования (языки. В которых программисты никогда не изменяют значение переменной) особенно хорошо подходят для параллелизма. Потому что нет никакой опасности. Что один процессор изменит значение переменной. Которую использует другой процессор. Мы познакомили вас с методами функционального программирования везде. Где это возможно. На протяжении всего курса . Включая написание репортеров и использование функций более высокого порядка (map,keep, и combine).

Щелк! это не функциональный язык программирования. Но это было бы. Если бы оснастка! разработчики удалили всего несколько процедур. В том числе set(вместо этого вы будете использовать входные переменные рекурсивных функций) и эти четыре команды списка:add,delete,insert, и replace(вместо этого вы будете использоватьin front of,item 1 of, и all but first ofсообщать о новом списке с другими значениями вместо изменения старого списка).