Инструменты пользователя

Инструменты сайта


igor:programmirovanie_shkolnikam

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
igor:programmirovanie_shkolnikam [2019/02/08 19:19] – [Программная совместимость и архитектурные классы (аппаратные платформы) компьютеров] igorigor:programmirovanie_shkolnikam [2019/02/10 00:21] (текущий) – [Программная совместимость и архитектурные классы (аппаратные платформы) компьютеров] igor
Строка 76: Строка 76:
 Есть 10 цифр, 26 общеупотребительных латинских букв (которые бывают заглавные и строчные) и знаки препинания: точка, вопросительный знак и др. - всего порядка сотни знаков, без которых нам не обойтись, независимо от того, в какой стране мы живем. У нас же, россиян, есть еще 33 буквы, которые опять-таки бывают заглавные и строчные. Если сложить все вместе, то одного байта будет достаточно. Однако если мы захотим одной ячейкой памяти представить все буквы всех языков мира, то 256 значений будет недостаточно - значит, нужна ячейка с бОльшим количеством бит. Это будет необходимо и для вычислений, если мы хотим работать с большими числами или представлять их с большой точностью. \\ \\ Есть 10 цифр, 26 общеупотребительных латинских букв (которые бывают заглавные и строчные) и знаки препинания: точка, вопросительный знак и др. - всего порядка сотни знаков, без которых нам не обойтись, независимо от того, в какой стране мы живем. У нас же, россиян, есть еще 33 буквы, которые опять-таки бывают заглавные и строчные. Если сложить все вместе, то одного байта будет достаточно. Однако если мы захотим одной ячейкой памяти представить все буквы всех языков мира, то 256 значений будет недостаточно - значит, нужна ячейка с бОльшим количеством бит. Это будет необходимо и для вычислений, если мы хотим работать с большими числами или представлять их с большой точностью. \\ \\
 ==== Как числа представляются в компьютере и как они записываются в программах ==== ==== Как числа представляются в компьютере и как они записываются в программах ====
-Выше мы рассмотрели байт, слово и двойное слово как запоминающие ячейки, построенные из нескольких элементарных запоминающих ячеек по 1 биту каждая. Размер ячейки в битах в разных книгах может называться длиной, объемом или емкостью - единства терминологии здесь, к сожалению, нет. В зависимости от длины ячейка может принимать то или иное множество состояний, и каждое состояние может трактоваться как число. Если каждый бит изобразить цифрой 0 или 1, то получается, что любое число в компьютере может быть представлено последовательностью //двоичных цифр// - нулей и единиц. Таким образом мы приходим к пониманию //двоичной системы счисления//. Эта система для нас непривычна ровно постольку, поскольку мы все с детства привыкли к десятичной системе счисления. Однако десятичная система была не везде и не всегда. В древности в Европе была в ходу //двенадцатиричная система//. Затем она была вытеснена десятичной системой, которую привезли из Индии арабы. Привезли вместе с привычными нам десятичными цифрами 0123456789, которые часто называют арабскими, хотя на самом деле они индийские. Произошло это очень давно, задолго до начала развития компьютерной техники, так что двенадцатиричная система оказалась совершенно забыта и заброшена, и все, что от нее осталось, - это слово "дюжина". Неудивительно, что для современного человека переход на другую систему счисления - психологический барьер... Но для нас, программистов 21-го века, этот барьер уже не имеет сколько-нибудь существенного значения. Вот для инженеров-электронщиков, проектирующих компьютерное "железо" - да... Я же сейчас нарушу +Выше мы рассмотрели байт, слово и двойное слово как запоминающие ячейки, построенные из нескольких элементарных запоминающих ячеек по 1 биту каждая. Размер ячейки в битах в разных книгах может называться длиной, объемом или емкостью - единства терминологии здесь, к сожалению, нет. В зависимости от длины ячейка может принимать то или иное множество состояний, и каждое состояние может трактоваться как число. Если каждый бит изобразить цифрой 0 или 1, то получается, что любое число в компьютере может быть представлено последовательностью //двоичных цифр// - нулей и единиц. Таким образом мы приходим к пониманию //двоичной системы счисления//. Эта система для нас непривычна ровно постольку, поскольку мы все с детства привыкли к десятичной системе счисления. Однако десятичная система была не везде и не всегда. В древности в Европе была в ходу //двенадцатиричная система//. Ее основанием было число "дюжина", которое было удобно тем, что делилось без остатка на два, на три и на четыре. Затем она была вытеснена десятичной системой, которую привезли из Индии арабы. Привезли вместе с привычными нам десятичными цифрами 0123456789, которые часто называют арабскими, хотя на самом деле они индийские. Эта система удобна для счета на пальцах, практиковавшегося в древней школе. Произошло это очень давно, задолго до начала развития компьютерной техники, так что двенадцатиричная система оказалась совершенно забыта и заброшена, и все, что от нее осталось, - это слово "дюжина". Неудивительно, что для современного человека переход на другую систему счисления - психологический барьер... Но для нас, программистов 21-го века, этот барьер уже не имеет сколько-нибудь существенного значения. Вот для инженеров-электронщиков, проектирующих компьютерное "железо" - да... Я же сейчас нарушу 
 общепринятый в компьютерной литературе подход и втравливать читателя в дебри двоичной арифметики не буду совсем. Лишь немного коснусь двоичной записи чисел. Поскольку каждая цифра в двоичной системе не может быть больше 1, то число 2 записывается как 10, 4 - как 100... У одного моего друга - профессионального компьютерщика - номер на двери квартиры записан как 11010, а вам я предлагаю самостоятельно вычислить, какие номера написаны на соседних квартирах, с учетом того что их хозяева - не профессиональные компьютерщики. \\ общепринятый в компьютерной литературе подход и втравливать читателя в дебри двоичной арифметики не буду совсем. Лишь немного коснусь двоичной записи чисел. Поскольку каждая цифра в двоичной системе не может быть больше 1, то число 2 записывается как 10, 4 - как 100... У одного моего друга - профессионального компьютерщика - номер на двери квартиры записан как 11010, а вам я предлагаю самостоятельно вычислить, какие номера написаны на соседних квартирах, с учетом того что их хозяева - не профессиональные компьютерщики. \\
 Недостаток двоичной системы в том, что запись чисел получается довольно длинной и поэтому трудно читаемой. Например, такое небольшое число как тысяча записывается вот так: 1111101000, а попробуйте записать миллион или миллиард. Поэтому были предложены //системы записи чисел//: восьмиричная и шестнадцатиричная. Это не самостоятельные системы счисления, а именно системы записи чисел, за которыми, в конечном счете, стоит двоичная система счисления. Весь ряд бит, изображающий число, делится на группы по 3 или 4 бита, и каждая группа изображается цифрой: восьмиричной или шестнадцатиричной соответственно. В качестве восьмиричных используют арабские (индийские!) цифры от 0 до 7. Соответственно тысяча в восьмиричной системе запишется как 1750. Для представления шестнадцатиричных цифр используют опять-таки индийские цифры 0...9, а недостающие цифры заменяют латинскими буквами A...F, так что тысяча запишется как 3E8. \\ Недостаток двоичной системы в том, что запись чисел получается довольно длинной и поэтому трудно читаемой. Например, такое небольшое число как тысяча записывается вот так: 1111101000, а попробуйте записать миллион или миллиард. Поэтому были предложены //системы записи чисел//: восьмиричная и шестнадцатиричная. Это не самостоятельные системы счисления, а именно системы записи чисел, за которыми, в конечном счете, стоит двоичная система счисления. Весь ряд бит, изображающий число, делится на группы по 3 или 4 бита, и каждая группа изображается цифрой: восьмиричной или шестнадцатиричной соответственно. В качестве восьмиричных используют арабские (индийские!) цифры от 0 до 7. Соответственно тысяча в восьмиричной системе запишется как 1750. Для представления шестнадцатиричных цифр используют опять-таки индийские цифры 0...9, а недостающие цифры заменяют латинскими буквами A...F, так что тысяча запишется как 3E8. \\
Строка 241: Строка 241:
 === MCS51 === === MCS51 ===
 Это самое старое семейство восьмиразрядных микроконтроллеров, выпускаемое несколькими фирмами в разных странах мира практически с 1980-го года и с тех пор не потерявшее популярности. Эти машинки будут нашими "Москвичами": по скорости и грузоподъемности они близки к "Жигулям" и "Волгам", но имеют несколько устаревшую архитектуру. В отличие от AVR и PIC, которые построены по принципу RISC, MCS51 имеют довольно сложную систему команд, близкую к тем, которые типичны для больших компьютеров. В частности, в "51-м семействе" имеется операция деления (ну и умножения, конечно, тоже). Если уместно говорить о скорости и грузоподъемности, то скажем так: эти машины отличаются тем, что хорошо ходят с "прицепом" - с внешней оперативной памятью, емкость которой несложно довести до 64Кбайт, и такую же величину может иметь флэш-память для программ. За много лет существования этого семейства написано немало книг, причем во всех рассматривается программирование только на языке ассемблера. Кого-то из моих читателей это может отпугнуть, я же, наоборот, рассматриваю это как преимущество. \\ Это самое старое семейство восьмиразрядных микроконтроллеров, выпускаемое несколькими фирмами в разных странах мира практически с 1980-го года и с тех пор не потерявшее популярности. Эти машинки будут нашими "Москвичами": по скорости и грузоподъемности они близки к "Жигулям" и "Волгам", но имеют несколько устаревшую архитектуру. В отличие от AVR и PIC, которые построены по принципу RISC, MCS51 имеют довольно сложную систему команд, близкую к тем, которые типичны для больших компьютеров. В частности, в "51-м семействе" имеется операция деления (ну и умножения, конечно, тоже). Если уместно говорить о скорости и грузоподъемности, то скажем так: эти машины отличаются тем, что хорошо ходят с "прицепом" - с внешней оперативной памятью, емкость которой несложно довести до 64Кбайт, и такую же величину может иметь флэш-память для программ. За много лет существования этого семейства написано немало книг, причем во всех рассматривается программирование только на языке ассемблера. Кого-то из моих читателей это может отпугнуть, я же, наоборот, рассматриваю это как преимущество. \\
 +Популяризация "51-го семейства" сдерживается тем, что для этих микроконтроллеров не выпускаются дешевые отладочные платы, подобные "Ардуинам", SEMам или Nucleo (или, по крайней мере, в сколько-нибудь широкой продаже я их не видел). \\
 === ARM Cortex === === ARM Cortex ===
 ARM расшифровывается как Advanced RISC Machine или как Acorn RISC Machine, т. е. тоже подразумевает компьютер с сокращенной системой команд, хотя, как и в предыдущем случае, "сокращенный" - скорее все-таки красивый лозунг, чем реальность. \\ ARM расшифровывается как Advanced RISC Machine или как Acorn RISC Machine, т. е. тоже подразумевает компьютер с сокращенной системой команд, хотя, как и в предыдущем случае, "сокращенный" - скорее все-таки красивый лозунг, чем реальность. \\
igor/programmirovanie_shkolnikam.txt · Последнее изменение: 2019/02/10 00:21 — igor