Ярослав Крутиков - преподаватель Lviv Code School в Одессе.
20 июля рассказал:
- Почему именно Ruby?
(отличия от других языков и явные преимущества).
- Особенные фичи или почему Ruby - это язык счастливых людей?
Многие из Вас спрашивали, где можно подробнее почитать о курсе: http://bit.ly/29DBAL4
Ярослав Крутиков - преподаватель Lviv Code School в Одессе.
20 июля рассказал:
- Почему именно Ruby?
(отличия от других языков и явные преимущества).
- Особенные фичи или почему Ruby - это язык счастливых людей?
Многие из Вас спрашивали, где можно подробнее почитать о курсе: http://bit.ly/29DBAL4
язык работы с КМАС (Yafoll сообщение 1)Alex Shkotin
Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык для работы с такими системами - YAFOLL (Yet Another First Order Logic Language).
Показывается применимость таких систем для построения математической модели части реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах объектов и процессов предметной области.
Дмитрий Прокопцев, Яндекс
Речь пойдёт о, наверное, одном из самых важных и в то же время сложных нововведений в С++11 — R-ссылках (rvalue references). Мы рассмотрим базовые правила работы с такими ссылками и связанные с ними новые концепции языка: перемещение классов, универсальные ссылки и перенаправление вызовов.
язык работы с КМАС (Yafoll сообщение 1)Alex Shkotin
Вводится понятие конечной многоосновной алгебраической системы (КМАС/FMAS), а также язык для работы с такими системами - YAFOLL (Yet Another First Order Logic Language).
Показывается применимость таких систем для построения математической модели части реальности, т.е. математической конструкции к которой можно обращаться с вопросами о свойствах объектов и процессов предметной области.
Дмитрий Прокопцев, Яндекс
Речь пойдёт о, наверное, одном из самых важных и в то же время сложных нововведений в С++11 — R-ссылках (rvalue references). Мы рассмотрим базовые правила работы с такими ссылками и связанные с ними новые концепции языка: перемещение классов, универсальные ссылки и перенаправление вызовов.
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
Алексей Куканов, Intel.
Последняя версия стандарта С++ добавляет в язык и библиотеку поддержки средства для использования потоков исполнения (threads) и синхронизации между ними. Однако это лишь необходимая низкоуровневая база для внедрения параллелизма. Эффективная разработка параллельных программ требует высокоуровневого API, реализующего типичные шаблоны использования параллелизма в виде, пригодном для применения в широком спектре алгоритмов и приложений. В докладе речь пойдёт о наиболее часто встречающихся параллельных шаблонах, реализованных в программных моделях Intel® Threading Building Blocks и Intel® Cilk Plus, и о примерах их использования.
Григорий Демченко — Асинхронное программирование и сопрограммыYandex
Как показывает практика, повсеместное применение классического, основанного на callback’ах подхода к асинхронному программированию обычно оказывается неудобным. Для упрощения написания и поддержки сложного асинхронного кода можно использовать иной подход — с использованием сопрограмм. Он значительно сокращает объём и сложность кода, а также существенно упрощает реализацию нетривиальных сценариев, связанных с отменой вычислений и таймаутами операций.
Секретные способы идентификации пользователей iOS
Андриан Буданцов
Co-founder and CTO at iOS software company Readdle
Как правильно посчитать количество уникальных пользователей, надежно отличать конкретный девайс и бороться с пиратством. Что знают про iOS девайс рекламные сети. История вопроса и последние нововведения.
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
В докладе пойдёт речь о методе сериализации произвольных данных, который применяется в Яндексе. Этот метод основан на отображаемых в память (mmapped) файлах и не требует операции декодирования. Мы рассмотрим его преимущества и недостатки, поговорим об общих принципах такой сериализации и об устройстве отображаемых аналогов стандартных контейнеров.
Правила статического анализа кода для диагностики потенциально опасных констр...Sergey Vasilyev
В статье сформулированы правила диагностики потенциально опасных синтаксических конструкций в исходном коде программ на языке Си++. Описаны принципы построения статического анализатора исходного кода, реализующего проверку указанных правил.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
1. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
1
Лекция 7
2.3 Строковые переменные и константы
Стандартная библиотека языка С++ предоставляет программистам строковый тип данных
(избавляет от использования массивов символов char[ ]).
Мы будем использовать тип данных string наряду со стандартными встроенными типами
данных. И вы на первый взгляд не будете замечать никаких различий, хотя на самом деле это
абстрактный тип данных, созданный на основе объектно-ориентированных возможностей языка
С++. Надеюсь со временем вы тоже сможете создавать АТД, которыми можно будет
пользоваться так же удобно и свободно, как и классом string.
Строковый тип данных позволяет хранить строки переменной длины, причем длину можно
менять в процессе выполнения программы. Строковый тип представляет операторы,
выполняющие такие операции над строками, как конкатенация, присваивание, замещение и др.
Для того, чтобы можно было создавать строковую переменную, необходимо подключить
описание этого типа данных из стандартной библиотеки.
#include <iostream>
#include <string>
using namespaсe std;
void main()
{
string name="Vitaly"; // объявление, определение, инициализация
string lastname="Domnenko";
name+="M."+lastname; // конкатенация с присваиванием (накапливающее присваивание)
cout<<"My name is "<<name<<endl; // вывод
}
Используя [ ] можно получить символ из любой позиции
char ch=name[5]; // символы нумеруются с нуля
Лексикографическое сравнение осуществляется с использованием операторов == < <= > >=
!=. При лексикографическом сравнении последовательно сравниваются коды символов строки.
Те символы считаются "больше", чьи коды "больше"и наоборот.
Кодировка (кодовая таблица) - это однозначное соответствие между целым число (кодом) и
символом. При этом символ - это буква, цифра и другие графические знаки. Кодировки обычно
составляют так, что символы следуют в алфавитном порядке и символ 'а' имеет наименьший код,
а символ 'z' наибольший. Таким образом, выполняя лексикографическое сравнение можно
2. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
2
разместить слова (строки) в алфавитном порядке. Это справедливо и для символов
кириллического алфавита. Но не всегда, т.к. существует кодировки, в которой кириллические
символы располагаются не в алфавитном порядке. Это кодировка КОИ8, которая обычно
используется в операционных системах UNIX. Если вы пишете программу для UNIX, то нужно
помнить, что простое лексикографическое сравнение не даст ожидаемого результата и нужно
усложнять программу.
В нашем случае (при программировании для DOS или Windows) используются кодировки
CP866 и СP1251 лексикографическое сравнение справедливо и дает нужный результат.
Ну и операторы для ввода/вывода строковых переменных >> << работают также как и для
переменных других типов.
Функция Описание
Конструкторы
string() конструктор по умолчанию, создает пустую строку
string(const char* p) преобразующий конструктор
string(const string& str, size t
pos=0, size t n=npos)
копирующий конструктор (npos обычно равен -1 и указывает, что
память не была выделена)
string(const char* p, size_t n) копирует n символов, р является базовым адресом
string(char c, size t n=l) создает строку из n символов с
Перегруженные операторы
string& operator= (const
string& s)
оператор присваивания
string& operator+= (const
string& s)
добавляет строку
char operator[] (size t pos)
const
возвращает символ из позиции pos
char& operator[] (size t pos) возвращает ссылку на символ из позиции pos
Функции-члены
string& append(const string& Добавляет n символов начиная от позиции pos
3. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
3
s, size_t pos=0, size t n=npos);
string& assign(const string&
s, size_t pos=0, size_t
n=npos);
строковому объекту присваивается n символов, начиная от позиции
pos
string& insert(size_t posl,
const string& str, size_t
pos2=0 , size_t n=npos);
вставляет n символов, полученных из str, начиная с позиции pos2, в
строку с позиции posl
string& remove(size_t pos=0 ,
size_t n=npos);
Удаляются n символов из строки начиная с позиции pos
string& replace(posl, nl, str,
pos2=0, n2=npos);
в неявной строке начиная с позиции posl заменяет nl символов n2
символами из подстроки str с позиции pos2
string& replace(pos, n, p, n2); заменяет n символов в позиции pos используя char* p из n2
символов или char* p до завершающего нуля, или повторяя символ
с rep раз
char get_at (pos) const; возвращает символ из позиции pos
void put_at (pos, c); помещает символ с в позицию pos
size_t length() const; возвращает длину строки
const char* c_str() const; преобразует строку в традиционное char* представление
const char* data() const; возвращает базовый адрес строкового представления
void resize(n, c); void
resize(n);
изменяет строку, делая ее длину равной п; в первой функции в
качестве заполняющего символа выступает с, а во второй - символ
eos () (end-of-string, конец строки)
void reserve(size_t
res_arg);size_t reserve() const;
выделяет память под строку; первая функция переустанавливает
this; вторая возвращает закрытый член res - размер выделенного
фрагмента
size_t copy(p, n, pos=0) const; п симолов строки, начиная с позиции pos, копируются в char* p
string substr(pos=0, n=pos)
const;
возвращается подстрока из п символов строки
4. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
4
int compare(const string& str,
size_t pos=0, size_t n=npos)
const;
сравнивает п символов строки, начиная с позиции pos, со строкой
str. Возвращается ноль, если строки равны; в противном случае
возвращается положительное или отрицательное целое значение,
показывающее, что неявная строка лексикографически больше или
меньше чем строка str.
size_t find (const string& str,
size_t pos=0) const;
в строке начиная с позиции pos производится поиск строки str.
Если она найдена, возвращается позиция, в которой она
начинается; в противном случае возвращается позиция npos
size_t rfind(str, pos=npos)
const;
похоже на find (), но при поиске первого совпадения строка
сканируется в обратном направлении
size_t find_first_of(str, pos=0)
const;
производится поиск первого вхождения str начиная с позиции pos
size_t find_last_of(str,
pos=npos) const;
аналогично, но в обратном направлении
size_t find_first_not_of(str,
pos=0) const;
производится поиск первого символа, который не соответствует ни
одному из символов str начиная с позиции pos
size_t find_last_not_of(str,
pos=npos) const;
аналогично, но в обратном направлении
2.4 Математические функции
#include <cmath>
using namespace std;
Функция Возвращаемое значения
double atof(const char* string) вещественное число, заданное массивом символов string
int atoi(const char* string) целое число, заданное массивом символов string
int abs(int n) абсолютное значение (модуль) целочисленного аргумента n
double acos(double x) арккосинус х в пределах -1.0 до 1.0
double asin(double x) арксинус х в пределах -1.0 до 1.0
5. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
5
double atan(double x)
арктангенс х в пределах до
double atan2(double x, double y) арктангенс х/у в пределах до
double ceil(double x) наименьшее целое большее или равное х
double cos(double x) косинус х
double exp(double x)
double fabs(double x) абсолютное значение (модуль) вещественного числа х
double floor(double x) наибольшее целое большее или равное х
double fmod(double x, double y) остаток от деления х на у
double hypot(double x, double y) длина гипотенузы при заданных катетах х и у
double log(double x) натуральный логарифм х
double log10(double x) десятичный логарифм х
double pow(double x, double y) х в степени у
double sin(double x) синус х
double sqrt(double x)
double tan(double x) тангенс х
#include <cstdlib>
using namespace std;
Функция Возвращаемое значения
int rand() псевдослучайное число в диапазоне от 0 до RAND_MAX
void srand(unsigned int seed) устанавливает стартовую точку для генерации случайных чисел
#include <ctime>
using namespace std;
6. Лекция №7 для дисциплин: «Прикладное программирование» и «Языки
программирования»
6
Функция Возвращаемое значения
clock_t clock() процессорное время
double difftime(time_t timerl, time_t timer2) разность между двумя временными значениями
time_t time(time_t* timer) системное время