Урок 1. Введение в программирование

   ⁄ 

 Обновлено 24 Фев 2017

  ⁄   

⁄  5

Изначально, компьютеры понимают только очень ограниченный набор инструкций, и чтобы заставить их что-то делать, нужно четко сформулировать задание при помощи этих же инструкций. Программа (также часто называют «приложение» или «программное обеспечение», «софт») представляет собой набор инструкций, которые говорят компьютеру, что делать. Физическую часть компьютера, которая выполняет эти инструкции, называют «железом», аппаратной частью (процессор, материнская плата, жесткий диск..).

Машинный язык

Процессор компьютера не способен понимать напрямую языки программирования, такие как C++, Java, Python и другие. Очень ограниченный набор инструкций, которые изначально понимает процессор, и называют машинным кодом (также «машинный язык» или «набор инструкций»). То, как эти инструкции организованы, выходит за рамки этого введения, но стоит отметить две вещи.

Во-первых, каждая команда (инструкция) состоит только из двух цифр — 0 или 1 – это двоичный код. Эти числа часто называют битами (сокращенно от англ. «binary digi). Например, машинный код архитектуры MIPS всегда имеет инструкции, длиной 32 бита. Другие архитектуры (например, x86, которую вы, вероятно, используете) используют инструкции формата переменной длины.

Вот пример одной команды машинного кода архитектуры x86: 10110000 01100001

Во-вторых, каждый набор битов переводится процессором в инструкции для выполнения специфичной работы, например, сравнить два числа, или занять числом определенную ячейку памяти. Различные типы процессоров имеют разные наборы инструкций, поэтому инструкции, которые будут работать на процессорах Intel вполне вероятно, что не будут работать на процессорах Xenon (используются в xBox). Раньше, когда компьютеры только начинали массово распостраняться, программисты должны были писать программы непосредственно на машинном языке, что было очень трудным занятием и требовало намного больше времени, нежели сейчас.

Язык Ассемблера

Так как программировать машинным языком было очень трудно, то умные люди изобрели язык ассемблера. В этом языке, каждая команда идентифицируется коротким именем (а не набором единиц с нулями), и переменные могут быть идентифицированы по именам, а не числами. Так стало гораздо легче читать и писать код. Тем не менее, процессор не может понять этот код напрямую. Вместо этого, с помощью ассемблера, код должен быть переведен на машинный язык. Т.е. ассемблер – это транслятор (переводчик), который переводит код, написанный на языке ассемблера в машинный язык. В Интернете этот язык называют просто «Ассемблер».

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

Вот та же команда, что выше, только написана на языке ассемблера: mov al, 061h

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

Для решения проблем читабельности и чрезмерной сложности были разработаны высокоуровневые языки программирования. C, C++, Pascal, Java, JavaScript и Perl — это все языки высокого уровня. Они позволяют программисту писать программы без необходимости переживать о совместимости кода на разных компьютерах и процессорах. Программы, написанные на языках высокого уровня, прежде чем будут выполнены, должны быть переведены в машинный код, который понимает процессор. Есть два основных способа, чтобы это сделать: компиляция и интерпретация.

Компилятор – это программа, которая читает код и создает автономную (способную работать независимо от другого аппаратного или программного обеспечения) исполняемую программу, которую процессор понимает напрямую. При запуске программы весь код компилируется целиком, создается исполняемый файл и при повторном запуске компилятор уже не нужен.

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

Вот упрощенное представление процесса интерпретации: sxemagotovo22Любой язык может быть компилируемым или интерпретируемым, однако, такие языки, как C, C++ и Pascal, как правило, компилируются, в то время как «скриптовые» языки, такие, как Perl и JavaScript, интерпретируются. Некоторые языки, как Java, являются смешанными (компилируются и интерпретируются).

Языки высокого уровня имеют несколько отличительных свойств.

1. Легче читать и писать код. Вот та же команда, примеры которой есть выше, но здесь уже на языках C / C++:  а = 97;

2. Они требуют меньше инструкций для выполнения одной и той же задачи, в отличии от низкоуровневых языков. В C ++ вы можете сделать что-то вроде: а = Ь * 2 + 5; в одной строке. В языке ассемблера пришлось бы писать 5 или 6 инструкций.

3. Вы не должны заботиться о таких деталях, как загрузка переменных в регистры процессора. Компилятор или интерпретатор берет это на себя.

4. Более портативные под различные архитектуры, но с одним главным исключением, о котором сейчас расскажу.sxemagotovo33Исключением переносимости можно определить то, что многие платформы, такие как Microsoft Windows, содержат функции, специфичные для этих же платформ, которые можно использовать в коде. С ними проще написать программу для конкретной платформы, но придется пожертвовать портативностью.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (86 оценок, среднее: 4,74 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Комментариев: 5

  1. Дмитрий:

    Спасибо!
    Благодаря тебе у меня вернулось желание обучаться на программиста.
    Поступаю на второй курс, надеюсь, не слишком поздно начал)

    1. Li4ik:

      Поверь, никогда не поздно, лишь бы нравилось 🙂

  2. DEADLIGHT:

    спасибо за ресурс. начну свое самообучение…

  3. Ivanshka:

    Мне всего 16, неплохо знаю PascalABC.NET (пробовал написать небольшую игру, кое-что вышло, но до ума не довел из-за тормозов то ли языка, то ли железа, то ли кривости моих рук), HTML 5 и CSS 3 (пробовал сайт писать из интереса). В общем, кодить — моё хобби. Есть мечта (написать игру с какой-нибудь командой) и желание учиться, чтобы писать годные вещи, а не кучу говнокода, а ты пишешь такие уроки! Большое спасибо тебе, Юра!)

    1. Li4ik:

      И тебе спасибо 🙂 16 лет — как раз золотое время для изучения программирования. Больше практики, своих проектов и всё обязательно получиться!)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *