Введение в концепции программирования. Series 2. Episode 1

И. Л. Мусабиров, П. В. Окопный,
при участии канд. пед. наук, доц. Н. Г. Дмошинской

План лекции

  • Анонс нового сезона или коротко о продолжении курса
  • Краткое содержание предыдущих серий
  • Информационные технологии
  • Domain-Specific Languages

Коротко о продолжении курса

  • Формат
  • Домашние работы
  • Контрольные работы
  • Предварительная формула оценок
  • Содержание

Формат

  • В 3 и 4 модулях — семестровый курс (лекция + практика в неделю)
  • Сайт курса: http://courses.nosoc.io/ (все обновления, начиная со сл. недели)
  • Почта курса: intropro2013@nosoc.io

Домашние работы

  • Приблизительно раз в две недели
  • “Вычислительный” кусок (сделать что-то в R) + “теоретический” [+ чтение]
  • Начинать можно на пр. занятии

  • Начиная с середины или ближе к концу этого модуля – мини-проект

Контрольные работы

  • 3 контрольных и зачёт
  • Скорее всего, 2 к/р в этом модуле, 1 и зачет в следующем
  • Практическая часть в аудитории (очень сильно основывающаяся на Д/З) + вопросы по теории

Предварительная формула оценок

Оцениваем не потенциал, а реализацию

  • Домашние работы – основа оценки (если нет навыков, результат курса = 0) (50%)
  • Контрольные (30%)
  • Зачёт (20%)

  • Теория и глубокое понимание – водораздел между 7 и 8-9-10, но не могут добавить первые 7

Информационные технологии

Information technology (IT) is the application (of computers and telecommunications equipment) to store, retrieve, transmit and manipulate data, often in the context of a business or other enterprise. Wikipedia

Информационные технологии:

  • аналоговые
  • компьютерные (цифровые)

Информационные технологии -- классификация

  • Store (Технологии хранения информации)
  • Retrieve (Технологии поиска (и выборки) информации)
  • Transmit (Технологии передачи информации)
  • Manipulate (Технологии обработки информации)

Информационные технологии -- принципы обсуждения

  • Не говорим про уровень “железа”

  • Много говорим про данные и форматы – принцип “чёрного ящика”
  • На примере R рассматриваем “Обработку информации” – делаем ящик прозрачным

Файлы данных -- Хранение

  • Двоичное (бинарное) и текстовое представления
    • Форматы двоичных файлов
    • Текстовое представление (не Word)
  • Преимущества бинарного представления
    • Большая компактность

Файлы данных -- Поиск и обработка

  • Преимущственно хранят неструктурированную (с точки зрения автоматической обработки), или слабоструктурированную информацию.
  • Преимущества бинарного представления
    • Скорость обработки
    • Vendor lock-in (для вендора)
  • Преимущества текстового представления
    • Универсальный доступ (с текстом умеют работать все программы)
    • Возможность структурирования (добавления и использования семантики)
    • Fallback: возможность обработки семантически сложного формата как текста

Базы данных

  • “Связанные таблицы”
  • Преимщуественно, хранение сильноструктурированных данных
  • Обычно, много числовых данных, хорошо работают с ними:
    • Типовые операции
    • Агрегационные функции (группировки, суммы, средние)
    • БОЛЬШИЕ ОБЪЁМЫ числовых данных
  • Много хуже работают с неструктурированными данными (или данными неподходящей структуры)

Классификация DSL

  • domain-specific markup languages,
  • domain-specific modeling languages (more generally, specification languages),
  • and domain-specific programming languages. Wikipedia

Языки разметки

Язык разметки – система аннотирования (добавления метаинформации) к документу способом, делающим её отличной от текста

Примеры:

  • Markdown
  • HTML
  • XML (Является ли DSL)
  • BibTeX

Markdown

# An h1 header


Paragraphs are separated by a blank line.

2nd paragraph. *Italic*, **bold**, `monospace`. Itemized lists
look like:

  * this one
  * that one
  * the other one

Markdown

An h1 header

Paragraphs are separated by a blank line.

2nd paragraph. Italic, bold, monospace. Itemized lists look like:

  • this one
  • that one
  • the other one

XML

<CATALOG>
<PLANT>
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Columbine</COMMON>
<BOTANICAL>Aquilegia canadensis</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.37</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<CATALOG>

XML

BibTeX

@book{adler,
  abstract = {Presents a guide to the R computer language, covering such topics as the user interface, packages, syntax, objects, functions, object-oriented programming, data sets, lattice graphics, regression models, and bioconductor.},
  address = {Sebastopol, CA},
  author = {Adler, Joseph},
  isbn = {9780596801700 059680170X},
  keywords = {R},
  publisher = {O'Reilly},
  title = {R in a nutshell},
  year = 2010
}

BibTeX

  • Harvard: Adler, J. (2010), R in a nutshell , O'Reilly , Sebastopol, CA.
  • APA: Adler, J. (2010). R in a nutshell. Sebastopol, CA: O'Reilly. ISBN: 9780596801700 059680170X

Языки спецификаций

  • Описывают формальную модель какой-либо области

  • Gellish Formal English

Языки программирования (GPL и DSL)

Средство выборки и обработки (Retreive/Manipulate) данных

Содержимое “ящика” (processing)

  • GPL (Языки программирования общего назначения) (C (C#, C++, …), Python (Ruby, Perl, …) Go, Java, …) – могут описывать любые(*) преобразования данных, за счёт “бОльшей многословности”
  • Domain-Specific Languages позволяют в своей области выполнить задачу меньшим количеством “слов” (но хуже подходят для других задач)
  • Сложнее отделить от ЯП общего назначения (почти всегда могут всё, но многое плохо)
  • Если ЯП что-то делает хорошо – повод ли это считать его DSL?
  • Программные библиотеки

Языки программирования (GPL и DSL) - 2

  • “Микрояызки” в “больших языках” (embeded DSL)
y ~ wage + gender

R

  • Может играть роль ЯП общего назначения (но не всегда удачно)
  • Очень хорош в своей области (интерактивное стат. моделирование/работа с данными)
  • Не безнадёжен в автоматизированной работе с данными (в последнее время)

R -- пример

data(iris)
library(ggplot2)
data(diamonds)
kable(head(diamonds))
carat cut color clarity depth table price x y z
0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63
0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48

R -- пример

qplot(carat, price, color=clarity, data=diamonds)

plot of chunk unnamed-chunk-2

Спасибо за внимание!

  • Лекцию читал: Илья Леонидович Мусабиров
  • Лекция подготовлена: И. Л. Мусабиров, П. В. Окопный,
    при участии канд. пед. наук. доц Н. Г. Дмошинской
  • Сайт курса: http://courses.nosoc.io
  • E-mail курса: intrpro2013@nosoc.io

NOSoc.io