Выразительный JavaScript [Марейн Хавербек] (fb2) читать постранично, страница - 2
[Настройки текста] [Cбросить фильтры]
- 1
- 2
- 3
- 4
- . . .
- последняя (126) »
Почему язык имеет значение
В начале, при зарождении компьютерных дисциплин, не было языков программирования. Программы выглядели так: 00110001 00000000 00000000 00110001 00000001 00000001 00110011 00000001 00000010 01010001 00001011 00000010 00100010 00000010 00001000 01000011 00000001 00000000 01000001 00000001 00000001 00010000 00000010 00000000 01100010 00000000 00000000 Это программа, складывающая числа от 1 до 10, и выводящая результат (1 + 2 + … + 10 = 55). Она может выполняться на очень простой гипотетической машине. Для программирования первых компьютеров было необходимо устанавливать большие массивы переключателей в нужные позиции, или пробивать дырки в перфокартах и скармливать их компьютеру. Можете представить, какая это была утомительная, подверженная ошибкам процедура. Написание даже простых программ требовало большого ума и дисциплины. Сложные программы были практически немыслимы. Конечно, ручной ввод этих мистических диаграмм бит (нулей и единиц) давал программисту возможность ощутить себя волшебником. И это чего-то стоило в смысле удовлетворения работой. Каждая строка указанной программы содержит одну инструкцию. На обычном языке их можно описать так: 1. записать 0 в ячейку памяти 0 2. записать 1 в ячейку памяти 1 3. записать значение ячейки 1 в ячейку 2 4. вычесть 11 из значения ячейки 2 5. если у ячейки 2 значение 0, тогда продолжить с пункта 9. 6. добавить значение ячейки 1 к ячейке 0 7. добавить 1 к ячейке 1 8. продолжить с пункта 3. 9. вывести значение ячейки 0 Этот вариант легче прочесть, чем кучу бит, но он всё равно не очень удобен. Использование имён вместо номеров инструкций и ячеек памяти может улучшить понимание. установить ‘total’ в 0 установить ‘count’ в 1 [loop] установить ‘compare’ в ‘count’ вычесть 11 из ‘compare’ если ‘compare’ равно нулю, перейти на [end] добавить ‘count’ к ‘total’ добавить 1 к ‘count’ перейти на [loop] [end] вывести ‘total’ Вот теперь уже не так сложно понять, как работает программа. Справитесь? Первые две строки назначают двум областям памяти начальные значения. total будет использоваться для подсчёта результата вычисления, а count будет следить за числом, с которым мы работаем в данный момент. Строчки, использующие ‘compare’, наверно, самые странные. Программе нужно понять, не равно ли count 11, чтобы прекратить подсчёт. Так как наша воображаемая машина довольно примитивна, она может только выполнить проверку на равенство переменной нулю, и принять решение о том, надо ли перепрыгнуть на другую строку. Поэтому она использует область памяти под названием ‘compare’, чтобы подсчитать значение count – 11 и принять решение на основании этого значения. Следующие две строки добавляют значение count в счетчик результата и увеличивают count на 1 каждый раз, когда программа решает, что ещё не достигла значения 11. Вот та же программа на JavaScript: var total = 0, count = 1; while (count <= 10) { total += count; count += 1; } console.log(total); // → 55 Еще несколько улучшений. Главное – нет необходимости вручную обозначать переходы между строками. Конструкция языка while делает это сама. Она продолжает вычислять блок, заключённый в фигурные скобки, пока условие выполняется (count <= 10), то есть значение count меньше или равно 10. Уже не нужно создавать временное значение и сравнивать его с нулём. Это было скучно, и сила языков программирования в том, что они помогают избавиться от скучных деталей. В конце программы по завершению while к результату применяется операция console.log с целью вывода. И наконец, вот так могла бы выглядеть программа, если б у нас были удобные операции range и sum, которые, соответственно, создавали бы набор номеров в заданном- 1
- 2
- 3
- 4
- . . .
- последняя (126) »
Последние комментарии
7 часов 1 минута назад
7 часов 21 минут назад
7 часов 47 минут назад
7 часов 51 минут назад
17 часов 21 минут назад
17 часов 25 минут назад