Факты программистов

9 фактов, которые знают программисты, и не знают все остальные

Факт 0
Под капотом самых критичных программ, которые вы используете на ежедневной основе (Mac OS X или Facebook) содержится ужасное количество хаков и костылей, которые с трудом уживаются друг с другом. Это как если бы вы разобрали боинг 747 и увидели, что топливопровод держится вешалкой для одежды, а шасси смотаны изолентой.

Бен Черри
Код программ таков, что даже если сайт или программа прекрасно работают и отлично выглядят, то за кулисами всё, что заставляет его работать, состоит из ошибок, ляпов и костылей. Он работает едва-едва и иногда вообще непонятно, почему.

Факт 1
25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.

Брайан Хьюмс
Занимает это на деле больше или меньше процентов времени, но каждый раз нам действительно необходимо подумать – а что пользователь может тут сломать. Куда нажмёт, что введёт, и как можно понять то, что мы пытаемся сделать, неправильно. Если бы мы рассчитывали только на себя, у программ было бы слишком много проблем – ведь мы знаем, как программа работает, а пользователь не знает.

Факт 2
Программист – это не специалист по ремонту компьютеров

Ритеш Кумар Гупта
Программист работает с алгоритмами и принципами разработки, а не чинит компьютеры. Мы можем понимать, как компьютер работает и как исполняется код. Но это не значит, что мы умеем чинить железо. Мы не знаем, какая проблема в Chrome роняет его на вашем компьютере, или почему ваш компьютер перегревается. Программисты программируют компьютеры, а не чинят их.

Факт 3
Программирование – это размышление, а не печатание

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

Факт 4
Отсчёт начинается с нуля

Это важно. Подсчёт идёт с нуля – ваш 1 это мой 0, ваш 10 это мой 9. Всё из-за необходимости делать вещи эффективно, когда даже небольшая прибавка к эффективности может в масштабе увеличить производительность.

Факт 5
Программировать лучше всего в потоке – в таком состоянии сознания, когда вы сфокусированы на задаче и всё кажется простым. Это состояние знакомо также атлетам и музыкантам.

Морган Йохансон
Программисты любят работать по ночам потому, что это позволяет нам входить поток, сфокусироваться на чём-то одном и не волноваться о том, что нас могут отвлечь. Все остальные просто спят. Это такое время дня, когда никого нет рядом, никто не звонит и не пытается с нами поговорить. Прекрасное время, чтобы думать и программировать.

Факт 6
Иногда полезно отложить проблему до утра

Иногда программистам действительно полезно, встретив сложную задачу, поспать «с ней». Множество раз я встречался с тем, что мне часами не удавалось решить что-то, но после всего лишь 20-минутного сна (или любого другого сна) по пробуждению решение приходило само.

Факт 7
«Родитель» может убить своих «детей», если их задача выполнена

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

Факт 8
Вы не впечатляетесь тем, как много мы знаем о компьютерах. Мы не впечатляемся тем, как мало вы знаете о них.

Серьёзно. Хватит уже. Нам неважно, как вы горды тем, что не желаете обучаться новым вещам. Понятно, если вы говорите «я мало знаю о компьютерах» или «мне не интересно программировать» — но когда вы хвалитесь тем, как много вы об этом не знаете, это просто раздражает.

#interesting@itcookies

В машине

ℹ 21 вещь, которая должна быть в машине каждого мужчины:

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

1. Бумажные дорожные карты. Потому что электроника ломается.
2. Небольшая, но достаточная сумма наличными.
3. Пара шоколадных батончиков. (Шоколад летом скорее всего растает, так что, прибереги его на зиму. А летом довольствуйся батончиками-мюсли.)
4. Автомобильная зарядка для телефона.
5. Резак для ремней безопасности. Или острый нож.
резак для ремня безопасности, что должно быть в машине
6. Фонарик.
7. Спички.
8. Минимальный набор инструментов (молоток, отвёртки, плоскогубцы и т.д.).
9. Бутылка питьевой воды.
10. Аптечка.
11. Одеяло.
12. Огнетушитель.
13. Автомобильный компрессор.
14. Флакон стеклоочистителя.
15. Провода для запуска двигателя.
16. Буксировочный трос.

Для зимней езды:

17. Лопата.
18. Пачка наполнителя для кошачьего туалета в виде каменной крошки. Будет, что насыпать под колеса, если забуксуешь.
19. Скребок для лобового стекла.
20. Цепи противоскольжения.
21. Перчатки и шапка, валенки.

Семь привычек эффективного редактирования текстов

Bram Moolenaar

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

Для демонстрации идей эффективного редактирования будет использован текстовый редактор с открытым исходным кодом vim (Vi IMproved), но сами идеи могут с тем же успехом использоваться при работе и с другими редакторами. Выбор правильного редактора, фактически, является первым шагом к эффективному редактированию. Обсуждение выбора наиболее подходящего редактора заняло бы слишком много места и здесь проводиться не будет. Если вы не знаете, какой редактор вам стоит начать использовать, либо не удовлетворены тем редактором, который используете в данный момент, попробуйте Vim, и он вас не разочарует.

[Команды и опции Vim набраны таким шрифтом]

Часть 1: редактирование файла

1. Перемещайтесь по тексту быстро

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

Достаточно часто требуется осуществлять поиск некоторого текста, о котором известно, что он встречается в данном файле. Или просматривать все строки, в которые входит определенное слово или фраза. Можно просто воспользоваться командой поиска /шаблондля нахождения интересующего места, но есть и более изящные способы:

  • Если вы видите нужное слово и хотите осуществить поиск всех остальных вхождений данного слова в текст, используйте команду*. Она берет слово, внутри которого находится позиция курсора, и ищет следующее его вхождение.
  • Если включить опцию ‘incsearch‘, Vim при наборе шаблона поиска будет автоматически показывать первое совпадение. Это помогает быстро обнаружить опечатку в шаблоне.
  • Если включена опция ‘hlsearch‘, Vim будет подсвечивать жёлтым фоном все совпадения с шаблоном поиска. Это позволяет быстро получить представление о том, куда вас приведёт выполнение команды поиска. Например, в программном коде таким образом можно показать, где используется некоторая переменная. Чтобы увидеть совпадения вам не обязательно даже перемещать курсор.

При работе со структурированным текстом имеется ещё больше возможностей для быстрой навигации. В Vim есть специальные команды для программ на C (и подобных ему языках, таких как C++ и Java):

  • С помощью % можно перемещаться от открывающей скобки к соответствующей ей закрывающей и наоборот. Или от «#if» к соответствующему «#endif». В действительности, % позволяет перемещаться между большим количеством различных парных элементов. Эта команда просто незаменима при проверке сбалансированности открывающих и закрывающих скобок различного вида.
  • Используя [{ можно прыгнуть назад по тексту к символу «{» в начале текущего блока кода.
  • Используя gd можно перейти от места использования переменной к её локальному объявлению.

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

Вот три простых шага:

  1. Во время редактирования обращайте внимание на действия, которые вы периодически повторяете и/или на которые тратите существенное время.
  2. Выясните, не существует ли команды редактора, которая помогла бы выполнять данные действия быстрее. Посмотрите документацию, спросите друга или посмотрите, как это делают другие.
  3. Тренируйтесь пользоваться командой. Делайте это до тех пор, пока пальцы не смогут выполнять её не думая.

Посмотрим на примере, как это работает:

  1. Вы заметили, что во время редактирования файлов C-программ, вы часто тратите время на поиск объявления функций. В настоящее время вы пользуетесь командой * для поиска других мест, в которых встречается имя функции, но это заканчивается хождением по большому количеству совпадений, в которых функция вызывается, а не объявляется. В голову приходит идея, что должен существовать какой-то более эффективный способ.
  2. Просмотрев справочную информацию, вы обнаруживаете заметку о прыжках к тегам. В документации говорится о том, как это можно использовать для перехода к объявлениям функций. Именно то, что вы искали!
  3. Вы немного экспериментируете с созданием тегового файла используя программу ctags, распространяемую вместе с vim. Вы учитесь использовать команду CTRL-], и понимаете, что сберегаете за счёт этого много времени. Чтобы ещё больше облегчить себе жизнь вы добавляете несколько строк к Makefile для автоматической генерации тегового файла.

Несколько моментов, которых стоит остерегаться, применяя эти три шага:

  • «Я хочу сделать работу, у меня нет времени читать документацию для поиска новых команд.» Если вы думаете подобным образом, то застрянете в компьютерном каменном веке. Некоторые люди используют Notepad для всего подряд, а потом интересуются, почему другие выполняют свою работу в два раза быстрее…
  • И, напротив, не переусердствуйте. Если вы каждый раз для каждой небольшой операции будете пытаться подобрать идеальную команду, вашему сознанию просто не хватит времени на то, чтобы думать над той работой, которую вы в действительности делали. Выбирайте только те действия, которые отнимают времени более, чем необходимо, и тренируйтесь в использовании подходящих команд до тех пор, пока не перестанете думать во время их выполнения. После этого вы можете сосредоточиться на тексте.

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

2. Ничего не набирайте дважды

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

Очень часто требуется заменить одно слово на другое. Если это нужно сделать во всем файле, можно воспользоваться командой замены:s. Если нужно заменить только несколько вхождений, хорошим методом будет использование команды * для поиска следующего вхождения и команды cw для изменения слова, а затем переход командой n к следующему вхождению и применение команды . (точка) для повторения предыдущей команды редактирования (cw).

Команда . повторяет последнее изменение. Здесь под изменением понимается вставка, удаление или замена текста. Возможность повторения изменений является очень мощным механизмом. Если научиться пользоваться этой командой, множественные изменения текста станут осуществимы одним лишь нажатием этой (.) кнопки. Но будьте внимательны: если между применениями команды сделать ещё какие-то изменения, они заменят последовательность, которую вы повторяли. Поэтому лучше сначала пометить необходимое место с помощью команды m, закончить последовательность повторов, а потом вернуться к отмеченному месту и поработать с ним.

Имена некоторых функций и переменных могут быть весьма трудны для набора. Можете ли вы быстро напечатать «XpmCreatePixmapFromData» без опечаток и не глядя на образец? В Vim есть механизм завершения слов, который может очень помочь в подобных ситуациях. Он просматривает слова, набранные выше в редактируемом файле, а также во всех подключенных (#include) файлах. Можно набрать лишь часть слова «XpmCr», а затем нажать CTRL-N, и Vim допишет его до «XpmCreatePixmapFromData» за вас. Это не только облегчает набор, но и помогает избежать лишних опечаток и последующего их исправления после того, как компилятор выдаст сообщение об ошибке.

Если вам нужно набрать какую-то фразу или предложение несколько раз, существует даже ещё более эффективный подход. В Vim есть механизм записи макросов. Наберите команду qa, чтобы начать запись в регистр ‘a’. Затем как обычно набирайте свои команды, а в конце снова введите команду ‘q’ для окончания записи макроса. Когда вам нужно будет повторить записанные команды, наберите @a. Для записи макросов доступно 26 регистров.

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

Есть один момент, о котором необходимо помнить во время записи макросов. Записанные команды будут повторяться в точности так, как вы их набирали. Во время перемещений по тексту необходимо понимать, что текст, к которому впоследствии будет применён макрос может отличаться от текущего. Перемещение на четыре символа влево подходит к тексту, на котором записывается макрос, но при повторе макроса может понадобиться переход не на четыре, а на пять символов. Часто предпочтительнее перемещаться по объектам текста (словам, предложениям) или непосредственно к определённому символу.

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

3. Работа над ошибками

Делать ошибки во время печати — совершенно естественно. Никто не может их избежать. Фокус в том, чтобы быстро их находить и исправлять. Редактор может вам в этом помочь. Но вы должны сказать ему, что правильно, а что нет.

Часто бывает так, что мы делаем одни и те же ошибки снова и снова. Пальцы просто отказываются делать то, что от них ожидается. В таких случаях могут помочь «аббревиатуры». Вот несколько примеров.

:abbr Lunix Linux
:abbr accross across
:abbr hte the

Слова будут исправляться сразу после того, как вы их наберёте.Тот же механизм можно использовать для набора длинных слов по нескольким буквам. Особенно полезно его использовать для слов, которые вам кажутся затруднительными. Он поможет избежать ошибок при наборе таких слов. Примеры:

:abbr pn pinguin
:abbr MS Mandrake Software

Тем не менее, данный механизм всегда производит замену, если у него есть соответствие, а это затрудняет набор в тех случаях, когда вы хотите вставить в текст именно «MS». Лучше всего использовать сокращения, которые сами по себе не имеют смысла.

Для поиска ошибок в тексте в Vim есть серьёзный механизм подсветки. Он был задуман для подсвечивания синтаксиса программных текстов, но с таким же успехом его можно использовать для поиска и подсветки ошибок.

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

Подсветка синтаксиса может помочь отловить несбалансированные скобки. Скобка «)» без пары подсвечивается ярким красным фоном. Можно воспользоваться командой %, чтобы выяснить соответствие между скобками, и вставить «(» или «)» в нужное место.

Другие распространённые ошибки также легко обнаруживаются с подсветкой синтаксиса. Например, можно написать «#included <stdio.h>» вместо «#include <stdio.h>». Ошибку легко пропустить в чёрно-белом файле, а с подсветкой её сразу видно, т.к. «include» выделяется цветом, а «included» — нет.

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

Часть 2: Редактирование нескольких файлов

4. Файл редко «приходит» один

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

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

Другой мощный механизм — поиск всех вхождений имени в группе файлов с использованием команды :grep. Vim составляет список всех совпадений и переходит к первому. Команда :cn служит для перехода к каждому следующему вхождению. Это весьма полезно, когда нужно изменить количество аргументов в вызове функции.

Подключаемые файлы (include) содержат много полезной информации. Но поиск нужного файла, содержащего именно то объявление, которое необходимо увидеть, может занять много времени. Vim понимает подключаемые файлы и может просматривать их во время поиска нужного слова. Наиболее частое применение — поиск прототипа функции. Установите курсор на имя функции в вашем файле и наберите [I. Vim отобразит список всех вхождений имени функции в подключенных файлах. Если вам необходимо увидеть более широкий контекст, можно перейти непосредственно к объявлению. Подобную команду можно использовать для проверки, подключен ли нужный заголовочный файл.

В Vim можно разделить область текста на несколько частей и редактировать в них разные файлы. Таким образом, можно сравнивать содержимое двух или более файлов и копировать текст между ними. Существует множество команд для открытия и закрытия окон, перехода между ними, временного скрытия файлов и т.д. И снова придётся прибегнуть к использованию подхода трёх шагов, чтобы выбрать те команды, которые вы хотите изучить и использовать.

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

5. Давайте работать вместе

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

Простой пример: Выделите участок структурированного текста в списке и отсортируйте: !sort. Будет применена внешняя команда «sort» для фильтрации этого текста. Просто, не правда ли? Конечно, функциональность сортировки могла бы быть включена в редактор. Но взгляните на справочное описание «man sort», у неё множество опций. А алгоритм, который осуществляет сортировку, наверняка не прост. Вы всё ещё хотите включить это в редактор? А другие команды фильтрации? Редактор станет очень толстым.

Это всегда было в духе Unix — использовать отдельные программы, которые хорошо умеют выполнять свою работу, совместно для выполнения больших задач. К сожалению, большинство редакторов не способны хорошо работать совместно с другими программами, и например, вы не можете заменить стандартный e-mail редактор в Netscape на другой. В таких случаях все заканчивается использованием «хромого» редактора. Другая тенденция заключается во включении широкого спектра функционала в сам редактор. Emacs — хороший пример того, чем это может обернуться. (Некоторые называют его операционной системой, которая может быть использована ещё и для редактирования текстов.)

Vim старается интегрироваться с другими программами, но пока это даётся не просто. В настоящий момент Vim можно использовать в качестве редактора для MS-Developer Studio и для Sniff. Некоторые почтовые программы, позволяющие вызывать внешний редактор, такие как Mutt, могут использовать Vim. Над интеграцией с Sun Workshop ведутся работы. В целом, это область, которую необходимо улучшить в Vim в ближайшем будущем. Только после этого мы сможем получить систему, которая в целом лучше, чем сумма её частей.

6. Текст структурирован

Часто приходится работать с текстами, которые имеют какое-то подобие структуры, но структура эта отличается от того, что поддерживается доступными командами. В таких случаях придётся спуститься на уровень строительных блоков редактора и создать свои собственные макросы и скрипты для работы с таким текстом. В этом разделе мы переходим к более сложному инструментарию.

Один из простых вопросов — ускорение цикла редактирование-компиляция-исправление. В Vim есть команда :make, которая запускает компиляцию, перехватывает ошибки и позволяет перемещаться к местам ошибок в тексте для исправления. Если у вас другой компилятор, сообщения об ошибках распознать не удастся. Вместо того, чтобы начать по старинке выписывать ошибки на бумажку, вам следует настроить параметр ‘errorformat‘. Этот параметр рассказывает Vim, как выглядят ваши сообщения об ошибках, и как извлечь из них имя файла и номер строки. Этот метод работает со сложными сообщениями об ошибках компилятора gcc, и вы наверняка сможете настроить его на работу практически с любым другим компилятором.

Чаще всего настройка под определённый тип файла — это вопрос установки нескольких опций или написания небольшого количества макросов. Например, для перехода по страницам руководства (man), можно написать макрос, который берёт слово под курсором, очищает буфер и, затем, открывает в этом буфере страницу руководства для данного слова.

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

Часть 3: заточка пилы

7. Сделайте это привычкой

Обучение вождению автомобиля требует приложения усилий. Это причина продолжать ездить на велосипеде? Вы понимаете, что должны вложить время в получение дополнительных навыков. Редактирование текста не является, в данном смысле, исключением. Вы должны изучать новые команды и делать их использование привычкой.

С другой стороны, не нужно стараться выучить все команды, которые редактор может предложить. Это будет пустой тратой времени. Большинству людей для выполнения их работы нужно знать 10–20 % команд. Но набор необходимых команд у каждого свой. Его формирование требует от вас некоторого внимания, которое тратится, чтобы подумать, нет ли каких либо повторяющихся действий, поддающихся автоматизации. Если вам нужно выполнить действие только один раз, не стоит пытаться его автоматизировать. Но вы, вероятно, обнаружите, что выполняли какие-то действия повторно за последний час. В таком случае стоит поискать в документации описание команды, позволяющей сделать это быстрее. Или напишите макрос. Если написание скрипта требует большой работы как, например, автоматическая разметка определённого вида текста, то можно поискать в форумах или в Интернет: возможно кто-то уже эту задачу решил.

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

И последнее замечание, чтобы напомнить, что случается с людьми, которые игнорируют изложенные советы: мне всё ещё встречаются люди, которые проводят полдня перед монитором, смотрят то на экран, то на свои два пальца, то снова на экран и т.д., и потом не могут понять, почему так устали… Печатайте десятью пальцами! Это не только быстрее, это ещё и намного менее утомительно. Если использовать компьютерную программу обучения печати один час каждый день, понадобится всего две недели, чтобы научиться быстро печатать.

Эпилог

Идея названия взята из удачной книги «7 привычек высоко эффективных людей» (автор Stephen R. Covey). Я рекомендую её всем, кто хочет решить свои профессиональные и личные проблемы (а кто не хочет?). Некоторые могут заявить, что она пришла из книги Дилберта «Семь лет высоко дефективных людей» (автор Scott Adams) (тоже рекомендую!). Нажмите http://iccf-holland.org/click1.htmlи перейдите к разделу «recommended books and CDs».

Об авторе

Bram Moolenaar — главный автор редактора Vim. Он разрабатывает основной функционал, и выбирает код, присылаемый многими другими разработчиками, который необходимо включить в программу. Он закончил Дельфтский технический университет по специальности компьютерный техник. Сейчас он в основном занимается программным обеспечением, но всё еще способен управляться с паяльником. Он основатель и казначей ICCF Holland, помогающего сиротам в Уганде. Он внештатно работает системным архитектором, но, в основном, всё свое время тратит на разработку Vim. Его электронный адрес: Bram AT Moolenaar.net.

Перевёл на русский язык Константин Бакарас, kbakaras at gmail.com.

Стресс, тренировки и светофорная шкала нагрузок

https://tengu911.wordpress.com/2014/11/08/%D1%81%D1%82%D1%80%D0%B5%D1%81%D1%81-%D1%82%D1%80%D0%B5%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B8-%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D1%84%D0%BE%D1%80%D0%BD%D0%B0%D1%8F-%D1%88%D0%BA%D0%B0%D0%BB/

Бег на длинные дистанции и эволюция человека

Бег на длинные дистанции и эволюция человека
by Zik
КОНТ. Геополитическая блог-платформаСегодня, 13:48
В 2004 году в авторитетном научном журнале Nature вышла статья «Endurance running and the evolution of Homo», в которой авторы рассматривали взаимосвязь бега и то, как он повлиял на эволюцию человека (Bramble DM, Lieberman DE. Endurance running and the evolution of Homo. Nature. 2004 Nov 18;432(7015):345-52.).

Ниже кратко перечислены основные положения, отраженные в статье.

По сравнению с четвероногими, человек очень плохой спринтер. Так, элитные бегуны-спринтеры могут развивать скорость порядка 10,2 м/с, которую способны поддерживать на протяжении менее 15 секунд. В свою очередь, «бегающие» представители четвероногих (например, лошади, антилопы) способны галопировать с максимальной скоростью 15-20 м/с, которую способны поддерживать в течение нескольких минут. Кроме этого, бег для человека примерно в два раза более затратный энергетически (метаболическая энергия) по сравне-нию с большинством млекопитающих при одинаковой с человеком массе. По сравнению с бегающими четвероногими, человек менее маневренный.

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

Насколько хорошо человек справляется с бегом на длинные дистанции?

У человека, есть два основных способа перемещения – бег и ходьба. При ходьбе энергетические затраты зависят от скорости ходьбы, которая определяется длиной ног. При переходе на бег (что случается при скорости примерно 2,3-2,5 м/с), энергетические затраты становятся несколько меньше, основной причиной такого феномена становится включение в работу «пружинных» механизмов (например, суставы, связки, мышцы, кости), при этом происходит использование кинетической и потенциальной энергии. Например, богатые коллагеном сухожилия и связки запасают эластическую энергию во время начальной фазы движения, а затем высвобождают эту энергию в ходе пропульсивной фазы. Стоит отметить, что ни один из приматов не способен двигаться с такой же скоростью и на те же расстояния, что и человек.

Человек способен эффективно варьировать скорость при беге на длинные и сверхдлинные дистанции. Этой способности лишены все четвероногие, несмотря на то, что некоторые животные способны проходить очень длительные расстояния в день (например, волки могут проходить в день от 14 до 19 км), а ряд представителей фауны однозначно быстрее человека. Кроме этого, при сравнении энергетической цены бега, человек значительно проигрывает четвероногим, разница порой доходит до 50%. Тем не менее, экономичность бега, а также способность эффективно варьировать темп и «подстраивать» его, позволяет преодолевать значительные расстояния.

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

Энергетика

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

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

Еще одним важным приспособлением, помогающим человеку бежать, является продольный свод стопы. Он возвращает примерно 17% энергии, вырабатываемой в течение начальной фазы бега.

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

Колебательные движения длинных ног, однако, увеличивают затраты энергии во время бега. Имеющееся у человека снижение массы конечностей оказывает незначительное влияние на энергетику ходьбы, но позволяет достичь значительной метаболической экономии во время бега на длинные дистанции. Например, перераспределение 3,6 кг от лодыжек к бедру, уменьшает метаболическую стоимость бега при низких скоростях (2,6 м/с) примерно на 15% (к примеру, стопа человека составляет всего 9% от общей массы ног, по сравнению с 14% у шимпанзе). Не очень высокая частота шагов позволяет снизить энергетическую стоимость перемещения относительно тяжелых ног (30% от массы тела у людей, по сравнению с 18% у шимпанзе), и позволяет больше опираться на более медленно сокращающиеся окислительные мышечные волокна, устойчивые к усталости, которые более развиты у бегунов на длинные дистанции.

Прочность скелета

Фактором, который несомненно следует учитывать при оценке эволюции и влияния на нее бега — эта прочность скелета. Бег подвергает опорно-двигательную систему гораздо большему напряжению, чем ходьба, особенно когда нога сталкивается с землей, создавая ударную волну, которая проходит вверх от пятки через позвоночник к голове (иногда при беге на высоких скоростях эта нагрузка на опорно-двигательную систему в 3-5 раз превосходит таковую при ходьбе). Одна из стратегий для снижения нагрузки на суставы – расширение поверхности сустава, что позволяет распределить силу на большую площадь. Кроме этого, у че-ловека изменились тазовые кости, что позволяет им противостоять стрессу, возникающему при беге. Люди могут также иметь большую площадь поперечного сечения бугров пяточной кости по отношению к массе тела.

Стабилизация

Двуногая походка по своей природе неустойчива, но некоторые различия между бегом и ходьбой привели к возникновению специальных механизмов, обеспечивающих стабилизацию и баланс во время бега. Совершенно очевидно, что корпус и шея бегуна больше наклонена вперед во время бега, по сравнению с ходьбой, что способствует продвижению вперед. У человека есть ряд особенностей, повышающих стабильность туловища во время бега, например, расширение области крестца и задней подвздошной ости, куда крепится большая мышца, выпрямляющая позвоночник, и сильно увеличенная большая ягодичная мышца (которая играет роль именно в беге, при ходьбе на ровной поверхности она практически не задействована). Потенциально дестабилизирующим (скручивающие) силам, активно проявляющимся во время бега, противостоит (а значит, поддерживают стабильность туловища) встречное вращение грудной клетки и рук (но не головы). Люди способны в значительно большей степени, по сравнению с обезьянами, изолированно вращать туловищем (относительно бедер), чему способствует удлиненной узкой талии, разделяющей нижнюю границу грудной клетки от таза. Кроме этого, человек отличается большей структурной независимостью плечевого пояса и головы, чему способствует уменьшенная мышечная масса в области головы и шеи. Наконец, широкие плечи позволяют уравновешивать нестабильность, возникающую при работе рук во время бега. Сокращение массы предплечья у человека примерно на 50% (на 50% менее массивное по отношению к общей массе тела у людей, чем у шимпанзе), существенно снизить мышечное усилие, необходимое для поддержания стереотипно согнутого локтя во время бега.

Терморегуляция и дыхание

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

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

Выводы, или какие изменения привели к тому, что человек стал самым лучшим бегуном

Относительно длинные ноги

Большие суставные поверхности

Узкие бедра

Короткие большие пальцы ног

«Пружинный» механизм

Система стабилизации туловища во время бега

Увеличенные ягодичные мышцы

Наличие мощной мышцы, выпрямляющей позвоночник

Независимый плечевой пояс

Способность к эффективной терморегуляции

via

КомментарииПосетить веб-сайт