1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-eloquent-js-3e-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
0.md 16 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:25 369bafd

Введение

Мы думаем, что создаём систему для своих собственных целей. Мы верим, что делаем её по своему образу и подобию... Но компьютер на самом деле не похож на нас. Это проекция очень узкой части нас самих: той части, которая посвящена логике, порядку, правилам и ясности.

Эллен Уллман, «Близко к машине: технофилия и её недовольство»

Это книга о том, как управлять компьютером. Сегодня компьютеры повсюду, но, по сравнению с отвёрткой, они гораздо сложнее, и заставить их делать то, что вы хотите, не всегда легко.

Если вы просите компьютер выполнить обычную и понятную задачу, например показать вашу электронную почту или работать как калькулятор, вы можете просто открыть соответствующее приложение и начать работу. Но для уникальных или открытых задач приложения могут не существовать.

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

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

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

В какой-то степени основанные на языке интерфейсы, такие как BASIC и DOS в 80-х и 90-х годах, были основным способом взаимодействия с компьютером. Эти интерфейсы в значительной степени были заменены визуальными интерфейсами, которые легче изучать, но предоставляют меньше свободы. Компьютерные языки всё ещё существуют, если вы знаете, где их искать. Каждый современный веб-браузер имеет встроенный такой язык, а именно JavaScript, поэтому его можно использовать практически на любом устройстве.

Эта книга попытается дать вам достаточно знаний об этом языке, чтобы создавать полезные и интересные вещи.

О программировании

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

Читая эту книгу, вы, возможно, обнаружите, что некоторые концепции трудно понять. Если вы только начинаете изучать программирование, вам, вероятно, предстоит изучить ещё много нового. Если вы хотите объединить полученные знания, вам нужно будет обратиться к дополнительным ресурсам и учиться дальше.

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

Когда действие бесполезно, собирайте информацию; когда информация бесполезна, отдыхайте.

Урсула К. Ле Гуин, «Левая рука тьмы»

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

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

Программы — это кристаллизация идей. Написание программы не требует никаких материальных вложений, она легка и создана нашими руками.

Но если не уделять должного внимания, объём и сложность программы могут выйти из-под контроля, и даже автор кода может запутаться. Управление программой в контролируемом диапазоне является основной проблемой в процессе программирования. Всё прекрасно, когда программа работает. Суть программирования заключается в том, как лучше контролировать сложность. Качественные программы обычно не слишком сложны.

Многие разработчики считают, что лучший способ контролировать сложность программы — избегать использования незнакомых технологий. Они устанавливают строгие правила («лучшие практики») и осторожно остаются в своей безопасной зоне.

Это не только скучно, но и неэффективно. Новые проблемы часто требуют новых решений. Область программирования всё ещё молода и быстро развивается, предоставляя место для разнообразия методов. В программировании есть много ужасных ошибок, и вы должны продолжать совершать их, чтобы понять их. Хорошее программирование ощущается, а не изучается из серии правил.

Почему языки программирования важны

Когда началась история вычислительной техники, понятия языка программирования не существовало. Программы выглядели так:

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) вручную для создания программы действительно может дать программистам чувство достижения и может принести огромное удовлетворение их профессии.

В приведённой выше программе каждая строка содержит инструкцию. Мы можем описать эти инструкции на китайском языке следующим образом:

  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.

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

 Set “total” to 0.
 Set “count” to 1.
[loop]
 Set “compare” to “count”.
 Subtract 11 from “compare”.
 If “compare” is zero, continue at [end].
 Add “count” to “total”.
 Add 1 to “count”.
 Continue at [loop].
[end]
 Output “total”.

Теперь вы понимаете, как работает эта программа? Первые две строки кода инициализируют значения двух ячеек памяти: total используется для сохранения накопленного результата, а count используется для отслеживания текущего числа. Вы, наверное, думаете, что инструкция для compare выглядит немного странно. Программа хочет определить, следует ли прекратить выполнение на основе значения count, равного 11. Поскольку наш компьютер довольно примитивен, мы можем тестировать только одно число, равное 0, и принимать решения на его основе. Поэтому программа использует ячейку памяти с именем compare, чтобы сохранить значение count–11, и решает, следует ли переходить, основываясь на этим значением. Следующие две строки добавляют значение count к результату и увеличивают count на 1, пока count не достигнет 11.

Ниже приведена переписанная версия этой программы на JavaScript:

let total = 0, count = 1;
while (count <= 10) {
  total += count;
  count += 1;
}
console.log(total);
// → 55

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-eloquent-js-3e-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-eloquent-js-3e-zh.git
oschina-mirror
wizardforcel-eloquent-js-3e-zh
wizardforcel-eloquent-js-3e-zh
master