Кодинг для журналистов: 10 концепций программирования, которые важно понять

от автора

Привет, Хабр!

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

1. Переменные (Variables)


Переменные — это что-то вроде контейнеров, которые в разное время могут вмещать различные предметы. Фото Вольфганга Лоньена.

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

Примеры:

  • Вы можете создать переменную, чтобы хранить чей-то возраст, и назвать её «age»
  • Вы можете создать переменную, чтобы хранить имя пользователя, и назвать её «username»
  • Вы можете создать переменную, чтобы посчитать, как часто что-то происходит, и назвать её «counter»
  • Вы можете создать переменную, чтобы хранить расположение какого-либо элемента, и назвать её «index»


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

Так же переменные могут объединяться: возраст (одна переменная) может быть подсчитан на основе даты рождения (другая переменная).

2. Strings (строки), integers (целые числа) и другой жаргон для типов данных


String — это набор символов. Фото Кейт Тер Хаар.

Бывают разные типы переменных, и от этого зависит, что с ними можно делать. Привычные типы переменных:

  • Числа — integers (целые числа) и floats (те, которые со знаками после запятой)
  • Текст — обычно называется strings (строки) и выделяется кавычками, например «17 августа»
  • Lists и arrays (списки и массивы) — объяснено ниже — обычно можно распознать по скобкам и запятым, как тут: [“Manchester”, “Glasgow”, “Paris”]
  • Dictionaries или dicts (словари) — объяснено ниже — можно распознать по фигурным скобкам, двоеточиям и запятым, например: {“Age”: 23, “Name”: “Jane”}

Это важно, потому что проблемы могут возникать когда код сталкивается с информацией в неверном формате. Например, вы не можете выполнить математические вычисления со строкой или объединить текст c числами (чаще всего).

В таких случаях написание кода включает в себя указание поступать с «7» как с числом, а не как со строкой, или даже преобразовать строку «seven» в её числовой эквивалент. Компьютеры хорошо справляются с повторяющимися задачами, но нуждаются в точной инструкции для каждой задачи.

3. .classes, #ids и selectors


Селекторы, такие как .nav, позволяют вам «захватывать» и контролировать элементы на веб-странице. Фото Питера Флетчера

HTML код использует class= и id= чтобы определить конкретные типы содержимого и сделать возможным их изменение с помощью другого кода. Например, на веб-странице у вас может быть подобный код:

<div class=”article”> <ul class=”nav”> <h2 class=”subhead”> <div id=”footer”> 

Есть как минимум три случая, когда эти классы и ID могут быть практичными:

  1. Они могут быть оформлены стилями с использованием CSS
  2. Они могут быть изменены при помощи Javascript и других языков
  3. Их можно распознать и обработать с помощью языков вроде Python, Ruby и PHP

В большинстве случаев всё это делается с помощью селекторов (selectors). Эти селекторы обозначают class с точкой и id с решёткой, вроде такого:

.article (for class=”article”) #footer (for id=”footer”) 

4. Функции, методы


Функции и методы подобны заголовкам рецептов. Вам нужно только добавить ингредиенты. Фото Мелиссы Уиз.

Функции и методы обычно — это рецепты в одно слово для выполнения чего-то, требующего в противном случае множества строк кода. Вот всего два примера:

  • len в некоторых языках означает «измерь длину того элемента, который я указываю»
  • split в некоторых языках означает «раздели этот элемент на один или на несколько кусков, основываясь на критерии, который я указываю»

Для этого функции необходим ингредиент, называемый аргументом или параметром (объяснено ниже), и метод прикреплен к ингредиенту, называаемому объектом (также объяснено ниже).

Различие между методами и функциями очень нечёткое и не стоит разъяснений в этой статье, особенно, если учесть, что их использование немного варьируется в разных языках. Но самое главное — вы можете создавать собственные функции в своём коде. Это может пригодиться, когда вам нужно выполнить какое-то действие несколько раз.

Другие функции уже готовы к использованию в языке программирования с самого начала. Вот список встроенных функций в Python, например. В JavaScript есть такие и такие.

Третий тип функций доступен только при использовании соответствующей библиотеки — смотрите ниже.

5. Аргументы или параметры


Аргументы это ингредиенты для ваших рецептов. Фото Энн.

Функциям и методам (объяснено ниже) нужны ингредиенты для работы, каждый называется аргументом или параметром.
Они появляются в круглых скобках, следуя за именем функции, как в случае с:

len ("Paul") len (myname) 

Функция len, например, даёт вам длину любого аргумента, заключённого в скобки. В первом примере — это строка (определяется кавычками) «Paul». Результат в данном случае будет 4 (4 символа). Во втором примере аргумент это переменная myname, поэтому результат будет зависеть от того, что содержится в переменной на тот момент. Если myname в данный момент — «Bradshaw», результатом будет 8 (8 символов).

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

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

Некоторые функции и методы используют более одного параметра, они отделяются запятыми. А некоторые параметры опциональны. Иногда круглые скобки ставятся слева пустыми, как тут: ready(). Ещё раз повторю, это должно быть описано в документации.

Полезный совет для изучающих программирование, искать термин «документация», «функция» или «метод» одновременно с тем, что вы хотите делать, или имя функции/метода, с которыми вы сражатесь.

6. Библиотеки


Библиотеки подобны книгам с рецептами. Разные библиотеки решают разные задачи — так же, как существуют книги для праздничных рецептов, пудингов и прочего. Фото Vintage Sailor

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

Если у вас возникла проблема, вероятно, кто-то уже создал библиотеку для её решения: рисование карты, конвертация документа, построение графиков данных или генерация интерактивных таблиц, анимация или создание эффектов.

Поэтому, вот ещё один полезный совет: погуглить свою задачу, язык, который вы используете или изучаете, и термин «библиотека», например «javascript mapping library».

Чтобы использовать библиотеки, их нужно импортировать, часто со ссылкой на файл, содержащий код библиотеки.

7. Lists/arrays (списки/массивы) и dictionaries/dicts (словари)


Списки подобны очереди из людей: вы можете получать доступ к объектам, в соответствии с их расположением. Фото Шона Дреллингера

Списки и словари — это особые типы информации, которые могут быть как неизмеримо полезны в программировании, так и вводить в заблуждение тех, кто к ним не привык.

Терминология различная: в некоторых языках программирования списки называются arrays (массивы), а словари называются dicts. Я предпочитаю «lists» и «dictionaries», но только потому что их легко понять.

Список или массив — это просто список объектов, который выглядит вот так:

["Asia", "Africa", "Europe"]

Содержание списка может быть в виде любого из типов данных перечисленных выше.

Списки невероятно практичны для хранения информации (например, в сборе или ответах пользователей на вопросы теста) и для повторения действий (например, задавать координаты или преобразовывать каждое число или местоположение в списке).


Словарь содержит и слова и значения. Фото Танакаху.

Dictionaries (словари) в этом похожи, они также выглядят как список, но с ключевым отличием: это списки пар.
Каждая пара имеет ярлык (он называется key) и value (значение), объединённые двоеточием, например:

"Age": 24

Термин словарь — практичен: представляйте его как набор слов с соответствующим определением. Но вы можете его представить и как заголовки столбцов (age, name, location) и значений (18, Sarah, Chicago).

Каждая пара затем разделена запятыми и целиком помещена в список, заключённый в фигурные скобки:

{"Age" : 23, "Name": "Jane"}

Это делает их особенно практичными для хранения данных, у которых более одного ярлыка. Например, вы можете хранить список возрастов, как простой список. Но если вам захочется соединить каждый из возрастов с именем или местонахождением, вам потребуется словарь.
Именно такая логика у формата данных JSON, формата используемого в ряде API (смотрите ниже).

Как и в случае со списками, словари могут содержать все типы данных для каждого ключа, включая списки и словари (т.е. у вас может быть словарь в словаре).

8. Loops  (циклы) — for, each, while

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

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

Примеры:

  • Взять каждую комбинацию координат из списка и разместить ее на карте
  • Взять каждое число из списка и нарисовать колонку соответствующего размера в гистограмме
  • Взять каждый элемент списка (например, код ID) и добавить его к частичному URL, чтобы сформировать полный URL
  • Взять каждый URL из списка и запустить код, чтобы собрать оттуда информацию
  • Проигрывать анимацию пока чьё-то количество очков не станет ниже или выше конкретного значения

Что может смутить в цикле, так это то, как он создаёт переменные, и как часто значение такой переменной меняется при каждом запуске цикла. Например:

numberlist = [1,2,3,4] for num in numberlist:     print num 

В этом коде «num» записана как новая переменная, чтобы хранить значение, пока список выполняется. Eе значения меняются: 1, 2, 3 и 4 до того, как цикл закончится (все значения в списке использованы).

9. Objects (объекты)


Детали Lego можно использовать только с другими деталями Lego. Они не сочетаются с деталями Duplo. Логично? Фото Cross-stitch Ninja

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

Когда термину «объект» предшествует другой термин, это может особенно раздражать. Вам, возможно, встречались «jQuery object» или «lxml object».

Когда объекты описываются таким способом, в основном это значит, что рассматриваемый объект может управляться или использоваться кодом из этой библиотеки:

jQuery-методы могут использоваться для «jQuery object»; lxml-методы могут использоваться для «lxml object». Как они стали такими объектами? Обычно в коде есть момент, когда переменная превращается в «jQuery object», «lxml object» и так далее — почитайте об этом самостоятельно, найдите материалы или комментарии к коду, чтобы разобраться в этом.

10. API


Использовать API означает задавать много вопросов и получать в ответ данные. Фото Марселло Мария Перонгини

API это Интерфейс Прикладного Программирования, что значит «способ задавать вопросы и получать ответы».

API особенно эффективны в программировании, потому что они позволяют вам задавать множество вопросов и получать множество ответов (в основном в виде структурированных данных), часто основанных на рабочих данных и без посредника.

Программирование часто фокусируется на интерпретации полученной информации, например, в виде карты, графика или диаграммы. Многие приложения основываются на API. Приложения Twitter, например, получают ответы на вопрос «каких людей я фолловлю?» из Twitter API. Разные приложения показывают полученные данные различными способами, основываясь на собственном коде, но исходные данные (твиты) — одинаковы.

Типичные API для журналистского использования включают:

  • API социальных сетей (что люди говорят/чем делятся в определённом месте/с определённым запросом?)
  • Новостные API (какой контент опубликован конкретным журналистом/в конкретной категории?)
  • Политические API (как голосовал конкретный политик? Какой из избирательных округов представляет конкретный человек?)
  • Территориальные API (какая широта и долгота у этого почтового индекса? Какая власть в данной местности?)
  • Криминальные API (какие преступления были совершены вблизи этой местности в этот день? Какие последствия?)

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

Их так же можно объединять, например: вы можете использовать ответы одного API как основу для вопросов к другому.

Вопрос к API часто принимает вид URL. Например, URL, запрашивающий информацию у API британской полиции о преступлениях, совершённых за конкретный месяц на конкретных широте и долготе, будет выглядеть так: http://data.police.uk/api/crimes-at-location?date=2012-02&lat=52.629729&lng=-1.131592

Заметьте, широта и долгота указаны в URL, который сформирован на основании руководства в документации.

Возможно, я упустил что-то? Какие другие концепции или термины будут полезно знать современному журналисту?

ссылка на оригинал статьи http://habrahabr.ru/post/263191/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *