Готовый перевод Eloquent JavaScript / Красноречивый JavaScript (2-ое издание): 00_intro.txt
:next_link: 01_values
:load_files: ["js/intro.js"]
= Вступление =
Это книга о том, как получить желаемое от ((компьютер))а. Компьютеры как общая отвертка сегодня, но имеет много скрытых возможностей. Для многих они остаются непонятными, чуть пугаюшие веши.
image::img/generated/computer.png[alt="Communicating with a computer"]
(((графический интерфейс пользователя))) Мы нашли два эффективных путя к
созданию связи между живыми организмами: со всякями талантами к социльному мышлению, с
компьютером: бесчувственным манипулятором бессмысленных данных. Во-первых,
используем наши чувства физического мира, и используем графические интерфейсы,
имитирующие этот мир, и позволяюшие нам манипулировать с интерфесами на экране при помоши наших пальцев . Это работает очень хорошо для простого повседневного использования.
(((язык программирования)))Но мы не нашли хорошим способ кликанье мышкой, в отличие от дизайнеров. Графические интерфесы выполняют инструкцию, но мы можем добится больше результата и успеха испльзую язык программирования
(((человеческий язык)))(((выразительность)))Человеческие языки позволяют комбинировать и объеденять слова чтобы донести то что хотим. Компьютерные языки хотя намного легче, грамматически гибкие и схожы с человеческим языком.
(((JavaScript, доступности))) (((случайный вычислений)))Повседневное вычесления стало распространено в последние 20 лет, и на смену языку программированию (терминалу) по умалчанию замененили графическим интерфейсом.
indexsee:[web browser,browser]
Задача книги сделать вас достаточно знакомы с этим языком, чтобы компьютер выполнял ваши указания.
== О программировании ==
[quote, Confucius]
____
(((Confucius)))Давай наставления только тому, кто ищет знаний, обнаружив свое невежество. Оказывай помощь только тому, кто не умеет внятно высказать свои заветные думы. Обучай только того, кто способен, узнав про один угол квадрата, представить себе остальные три.
(((программирование, трудность)))Помимо изучения JavaScript, я также хочу ввести вас основные правило программирования. Программировать это трудно.Основные правила, как правило, простые и
ясные. Но программы построенные на базовых правилах программирования постепенно услажняются с новыми правилами. Ты создаешь лабиринт, в котором легко заблудишься
(((обучение)))Будут моменты, когда понимать книгу будет тяжело. Если вы новичок в прораммировании, то для вас будет много нового усваемого матириала. Большая часть матирала будет _связана_ так что бы исползовать далее.
Вам решать, сколько усилий вам нужно отдать на изучение. Когда изо всех беретесь за книгу, не торопитесь с выводами о самостоятельности своих возможностях.
[цитата, Joseph Weizenbaum, сила компьютера и человеческого разума]
____
(((Weizenbaum+++,+++ Joseph)))Программист — это создатель вселенных, вседержателем которых он сам и является. Ни один драматург, режиссер или император в истории, не обладал такой абсолютной властью при постановке спектакля или на поле боя, и не имел в своем распоряжении таких неукоснительно преданных делу актеров или воинов.
(((программа, характера)))(((данные))). Программы могут быть разными. Строчка веденная программистом манипулирует с компютером и с данными.
Аналогично, можно сравнить с объектами. Поверхностный обзор даёт понять что в компютере много частей, которые взаимодействуют с компютером и мы должны научитсью использовать их вместе.
(((компьютер)))Компьютер это машина, которая соеденяет все части. Компьютеры могут делать только простые вещи. Поэтому они полезны в том, чо они делают эти вещи вс невероятно высокой скоростью. Програма может объеденять в себе много вешей, чтобы сделать нечто более мощное.
(((программирование, радость)))Для некоторых из нас, кодить является увлекательной игрой. Программа представляет постройкой из мыслей. Беззатратная невесомая постройка растущая под стуканье по клавиатуре.
Если мы не будет осторожны. то размеры и сложность выйдет из под контроля, и станет программа непотной даже для его создателя. Это основная проблема- держать код по контролям. Когда программа работает- это пркрасно. Исскуство программирования является умение управление сложностью. Отличная программа контролируема, проста по мере сложности.
(((стиль программирования)))(((лучшая практика)))Многие программисты считают что программу нужно разбивать на маленькие простые объекты, чтобы легче понимать программу. Они придумали строгие правила (_"наилутшая практика"_) предписывающих что программа должна иметь форму, которая не дают программе выйти из безопасной зоны.
(((эксперимент)))(((обучение)))Почему чувствуют враждебность к богатству программирование, почему пытаются уменьшить код к простому, поставил "печать запрета" на все изощроности прекарсных в программ! Пейзаж методов программирования огромен и увлекателен, и вес он не иследован. Это, конечно, опасно идти, заманивая неопотных программистов в все виды путаницы, при такой работе нужно быть осторожным . Вы узнаете, что всегда будут новые проблемы для места для их изучения. Программисты, которые отказываются от продолжать изучения будут застаиваться, забываю свою радость, и им надоест их ремесло.
== Какие вопросы языка ==
(((язык программирования)))(((машинный код)))(((двоичные данные)))Когда зарождалось вычесление, не было никаких языко программирования. Программы выглядели примерно так:
----
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)''. Это может работать на очень простой
гипотетической машине. Для программ раньше требовалась использовать большие массивы переключателей, или пробивать отверстия в полосках картона и выполнять в компьютере. Вы можете представить как из-за одной ошибки программа не выполнялась. Даже написание простой программы требовало большой одаренности и дисциплины. Сложные программы были почти нериальны.
(((бит)))(((мастер (могучий))))Конечно, ручной ввод этих тайных последователей бит (нулей и единиц) действительно давало программисту глубокое чувство того, что он могучий волшебник. И от этого наверно получают удовлетворения.
(((память)))(((инструкция)))Каждая строка программы выше содержит по команде. Это может быть написано на английском, как это:
[source,text/plain]
----
1. Сохранить номер 0 в ячейку памяти 0.
2. Сохранить номер 1 в ячейку памяти 1.
3. Сохранить значение ячейку памяти 1 в ячеку памяти 2.
4. Вычесть число 11 от значение в ячейки памяти 2.
5. Если значение в ячейки памяти 2 равно 0, продолжить с инструкции 9.
6. Добавить значение ячейки памяти 1 в ячейку 0.
7. Добавить еденицу к ячеки 1.
8. Продолжить с инструкцией 3.
9. Вывести значение ячейки папяти 0.
----
(((читаемость)))(((именования)))(((переменная)))Хотя это более читабельно чем каша из битов,но по прежнему не приятно. Облегчает использование имен вместо номеров ячеек.
[source,text/plain]
----
Установить "всего" равным 0
Установить "счёт" равным 1
[цикл]
Установить "сравнить" равным "счёт"
Вычесть 11 от "сравнить"
Если "сравнить" ровна нулю, то продолжить с [конец]
Добавить "счёт" к "всего"
Добавить 1 к "счёт"
Продолжить с [цикл]
[Конец]
Вывести "всего"
----
Вот та же программа на JavaScript:
[source,javascript]
----
var total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// → 55
----
[source,javascript]
----
console.log(sum(range(1, 10)));
// → 55
== Что такое JavaScript? ==
indexsee:[WWW,World Wide Web] indexsee:[Web,World Wide Web]
== Код, и что с ним делать ==
ifdef::html_target[]
endif::html_target[]
ifdef::tex_target[]
endif::tex_target[]
Типографическое соглашение
[source,javascript]
----
function fac(n) {
if (n == 0)
return 1;
else
return fac(n - 1) * n;
}
----
[source,javascript]
----
console.log(fac(8));
// → 40320
----
Удачи
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод
Переведено на Нотабеноиде
http://notabenoid.org/book/53821/233035
Переводчики: aslandu, akkuraten
Настройки
Готово:
