пятница, 22 июня 2012 г.

До свидания, друзья!


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

Хочу сказать спасибо всем преподавателям, студентам и другим работникам университета - было здорово!

До свидания!

пятница, 11 мая 2012 г.

Информация

Недавно в университете снимали видео про кафедру. Вот оно.


Также в этом посте решил собрать несколько публикаций так или иначе связанных с АУ за последнее время. В основном, это хабрахабр. Нужно признать, что хабр стал основным источником информации о нашем университете. Почти все абитуриенты на вопрос "Откуда вы узнали об АУ?" указывают в сторону хабра.


Распространение информации приветствуется.

пятница, 3 февраля 2012 г.

Последняя сессия

Если бы мне кто-то курсе на 3м сказал, что самая тяжелая сессия у меня будет на шестом(!!) курсе - я бы ему в лицо рассмеялся. Однако ж...

Как вы, наверное, заметили, я ничего не писал весь семестр. Мне просто не хотелось превращать этот блог в блог нытья о том, как мне тяжело =). Нагрузка была действительно очень большая - работа 20 часов в неделю, пары с 10:00 до 18:00 в оставшееся время. И очень очень много домашек.

Мне что-то совсем уже не хочется подробно писать о предметах. Так что я кратенько.

За этот семестр я многому научился. Но все-таки, больше в JetBrains. Например, на контрольных по Software Design, отвечая на вопросы типа "Паттерн фасад. Зачем нужен. Пример" - я приводил примеры собственно из кода с работы. На работе же, повеселился с многопоточным программированием.
Опять окунулся во все неприятности работы в команде студентов. Разгильдяйство, разгильдяйство и еще раз разгильдяйство. В конце-концов, мы конечно, что-то написали. Но меня итог не радует.
Операционные системы и параллельное программирование прошли мимо. Первое, потому что как-то не очень преподавалось, а по второму просто было не так уж много нового для меня материала. Странная штука. Нового узнал мало - а времени потратил... Жуть как много.

Что там еще?

Сетевые технологии и Software Design. SD был очень скучен. Преподавались, в основном паттерны и UML. После 4го курса я ощущаю стойкое отвращение к UML. Так что я до сих пор какие-то там диаграммы не сдал =). Сети - ок. Хотя можно было бы и лучше.

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

Дискретка. А.В. Омельченко очень хотел с нами поближе познакомиться. Поэтому поставил нам в расписание свой предмет. Ну познакомлись, чо. (Хотя должен признать, лекции читает он отлично)

Ну и самый обсуждаемый в группе предмет - виртуальные машины.
Очень много эмоций у меня было по этому поводу. Сначала интерес, потом пофигизм. Ненависть, снова интерес. Сейчас считаю, что вот та часть про ненависть была зря.
Предмет принес мне несомненную пользу. Я вообще теперь считаю, что каждый программист просто обязан написать в жизни собственный компилятор. Очень многие вещи сразу становятся на место в голове.
Однако, к курсу много замечаний. Например, нифига не документированный код преподавателя (мы строили свои компиляторы на основе преподавательской кодовой базы). Код менялся вообще как угодно. Постоянно что-то дописывалось и переписывалось и приходилось переделывать лабу, просто чтобы она хотя-бы собиралась. А еще Николай Иготти очень любит общаться с аудиторией. И тут ему повезло - аудитория ему отвечала. Обычно, в лице одного, редко двух человек. И оба они был сильно более подкованы в обсуждаемых вопросах. Так что остальная часть аудитории сидела как бы непричем. Плохо это. Ну нельзя преподавателю ориентироваться на одного человека в группе. Да еще и самого опытного в обсуждаемом вопросе =(

В общем, самый жестокий семестр с самой жестокой сессией закончились(почти). Я выжил и теперь начинаю отходить от постоянного ботанья.
Пар у нас больше не будет - только диплом. С одной стороны это круто. Можно полностью себя посвятить ему. Но с другой - как то очень грустно, что все закончилось... Было очень здорово учиться в АУ. Я завиду пятому курсу. У них ведь еще все впереди!


суббота, 13 августа 2011 г.

Летняя практика

Вот уже лето на исходе, а я до сих пор ничего не рассказал про нашу летнюю практику. Что ж, лучше поздно, чем никогда.

Практика у нас обязательная. И нам предложили довольно неплохой список вариантов: Yandex, JetBrains, Parallels и лаборатория алгоритмической биологии. В начале лета вышеназванные компании провели презентации себя в нашем университете и мы отправились выбирать. Потом были собеседования. Я выбрал Yandex и JetBrains.

Яндекс
Первым был яндекс. Собеседовали меня на проект в "мастерскую". Обязательные вопросы про желание работать, сроки итп. Из технических вопросов было: написать 5 sql запросов делающих то-то. Какие то вопросы про дедлоки. И вопросы про структуры данных. В духе "У вас есть контейнер, в который постоянно что-то добавляется. При этом в нем не менее часто производится поиск. Какую структуру данных вы выберете?".

JetBrains
Откровенно говоря, странное собеседование. Мы там скорее о жизни поговорили, нежели выяснили мои знания =) Из профильных вопросов - Как найти КСС и за сколько? А также какие способы вычисления чисел Фибоначчи вы знаете? За сколько они работают?

Выбор
Оба собеседования я успешно прошел и передо мной встал тяжелый вопрос выбора. С одной стороны - Yandex c более высокой зарплатой и явой. С другой - менее оплачиваемый JB и C#. Опыт работы с Java у меня имелся и я не могу сказать, что она вызывала у меня хоть какие-то эмоции. А вот шарпом я практически не владел. А хотелось попробовать =)

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

Что меня поразило при первом визите - там в кабинетах нет дверей. Мне это очень нравится. Эдакая атмосфера полной открытости.

Непосредственно про работу мне рассказать нечего - NDA. Могу только сказать, что работаю в проекте DotCover.

среда, 29 июня 2011 г.

Итоги весеннего семестра 2011

Наконец-то закончился второй семестр. И наконец-то я собрался о нем написать.
Семестр, пожалуй, получился очень неоднозначным. С одной стороны отличные курсы по плюсам и высоконагруженным сервисам. С другой - 2,5 предмета-фейла. Но обо всем по порядку

C++

Саша С. – повелитель C++
Смешанные чувства. Вроде не так уж и много нового узнал. Но преподавалось все на уровне. Порадовали задания лаб. Реализация подобных заданий, на мой взгляд, позволяет довольно неплохо разобраться в шаблонах. 
Также, как обычно, студенты публиковали записи лекций. Их можно посмотреть тут. А задания практик - тут
Экзамен немного разочаровал. В прошлом семестре было сложнее. А в этом - неприлично легко.




Спецкурс по высоконагруженным сервисам

Смотрим exorg

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

Практика

Про практику мне чего-то совсем не хочется рассказывать... Скажу только, что она была про мою любимую компьютерную графику. Однако, на OpenGL. Совершенно разочарован данным API. Видеть его более не хочу. Никогда.
Летом займусь переписыванием проекта на DirectX.

Алгоритмы 

Наконец-то пришло осознание малой полезности курса в данной форме. Напомню, мы занимаемся только теоретической частью. Практики реализации алгоритмов у нас нет. Вот именно это я и считаю основным упущением. Реализовать алгоритм и прочитать про алгоритм - уж очень разные вещи. Также не понравилось некоторое разгилдьяйство преподавателя.
Еще довольно неоднозначаным получился экзамен. Каждый приходил в строго назначенное ему время. После чего в течение 40 минут решал 2 задачи. А потом 40 минут беседовал с преподавателем на все темы семестра. Многим такая форма экзамена не понравилась. Мне, например, не хватило времени на задачи. Однако я все-таки выкрутился).



Машинное обучение

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

Теория формальных языков
Худший предмет семестра. Посетив первые пару лекций и офигев от преподавателя, читающего слайды слово в слово. Я решил на сие не ходить. И правильно сделал, как выяснилось. А еще, эти слайды товарищ Герасимов не менее слово-в-слово переписывал из учебника. Не, это конечно похвально. Трудолюбивый преподаватель и все такое. Но вот слушать это было решительно невозможно. А еще, он как-то так сделал, что мне поначалу предмет показался очень сложным. Но стоило только начать читать книгу - как оказалось, что это чуть ли не самый простой предмет семестра.
Отдельного упоминания заслуживают контрольные. Очень тупые задания. В основном - на применение пройденных алгоритмов. Глупо и скучно. Да еще и придирался невероятно. Пример задания: дана грамматика, задающая арифметические выражения в постфиксной записи с операциями сложения, умножения и чего-то там еще. Построить LL, ПП/СП, (S)LR(?) - автоматы для этой грамматики. В каждом привести пример, распознаваемой цепочки и ПРОГНАТЬ автомат на бумажке. Блин. Просто дух захватывает.
Что смешно - на контрольной можно было пользоваться всем, чем угодно. Но нельзя было, например, разговаривать с соседом. Мне вот интересно, преподавателя не насторожило то, что на его контрольной студенты вместо написания собственно работы сидят уткнувшись в мониторы ноутов и громко стучат клавишами?))) Короче, кто хотел - тот списал =)


Технологический семинар

Если помните, то 5го апреля я жаловался на скучные семинары. Так вот. Буквально через 3 дня в рассылку прилетело сообщение от преподавателя о том, что надо что-то менять на семинарах. Врядли он читал мой блог, просто проблема скуки стала уж очень очевидна.
В итоге, на семинарах стало больше практической части. Были введены мастер-классы. А главное - стало больше докладов по темам, которые интересны(и хорошо известны) самим докладчикам. Получилось неплохо, я считаю.
Непофигизм преподавателя очень порадовал. Уважаю

Семинар по скриптовым языкам 

Проблема та же, что и с предыдущим семинаром. Скучно. Только тут не нашлось преподавателя, которому не пофигу. Который попытался бы что-то изменить. В результате и студентам стало пофигу. Короче, получился отстой.
Я уж молчу про дурацкие темы. Ну как можно на новый язык программирования отводить одну лекцию? Мы за семестр рассмотрели что-то около 7 языков программирования. И в итоге, я смогу написать что-то осмысленное только на JavaScript и ruby. И то, потому что готовил презентацию по node.js и писал веб-сервер на руби.

Введение в программную инженерию
Обзорный предмет по умным словам из мира разработки. Больше сказать особо нечего.

Как-то негативно получилось. Но я все-таки доволен этим семестром. Наконец-то я хоть немного разобрался с машинным обучением, поднял свои скиллы в алгоритмах, осовил немного Java и, конечно, разобрался во всяких там грамматиках.

вторник, 14 июня 2011 г.

struct vs class

Какое ключевое слово вы используете для классов? Или лучше так: В каких ситуациях вы используете struct, а в каких class?
Если вы случайно попали в этот блог, и не знаете чем отличаются эти ключевые слова, то подскажу - ничем, кроме моидификатора доступа/наследования по-умолчанию.

Раньше я всегда для "вумных" объектов писал class, а для всяких мелких "контейнеров" struct.
Потом лень меня победила и я стал использовать struct везде. И вот мои аргументы:

1 Наследование
Вы часто используете приватное наследование? А защищенное?
Нет? А чо так?
Я тут прикинул, что не использовал приватное наследование осмысленно ниразу. Соответственно почему оно является наследованием по-умолчанию для меня загадка. Отсюда первый довод в пользу struct: Используя ключевое слово struct вам не придется лишний раз писать "public" при наследовании.









2 Публичный интерфейс
Что вы ожидаете увидеть, открывая хедер какого-либо класса? Я, обычно, хочу увидить его публичный интерфейс, дабы понять что этот класс делает. И, мне, не менее обычно, наплевать КАК он это делает. Посему, я хочу увидеть это как можно быстрее, без вского там скроллинга. В общем, я за то, чтобы публичная часть класса была "сверху". Так в принципе многие и делают. И выглядит это как-то так:











Вы не находите, что здесь что-то лишнее?

Итог
А в итоге часто имеем такой код:

В приведенном листинге 3 раза написано ключевое слово public. И все три раза оно нафиг не нужно при использовании struct.









P.S. Не то чтобы я считал это все очень важной проблемой C++. Просто захотелось что-нибудь запостить в блог =) Не принимайте близко к сердцу

понедельник, 16 мая 2011 г.

КРИ 2011

Гостиница Космос. Основное место действия

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

Началось все как-то грустно - приехав в Москву в пол седьмого утра я что-то совсем не выспался и уже начал предвкушать тяжелую борьбу со сном на конференции.
Я когда-то слышал, что на КРИ бывают огромные очереди на регистрацию, но реальный масштаб меня таки удивил - очередь на весь зал). К счастью, я приехал рано и прошел регистрацию минут за 20. Ну а потом началось...

10:00 Петр Камышников, Mail.Ru. - Интерфейсы "Аллодов Онлайн" изнутри

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

11:00 Александр Винников, Nival Network -  Игровая механика, управляемая данными, в проекте Prime World

Проектор принесли, но компьютер, предназначенный для демонстраций не заработал. В общем, еще один косяк. НО. На этот раз автору таки удалось донести до аудитории что-то интересное. Хотя и не очень понятно. Запомнился рассказ о "формулах" в проекте.
В геймдеве, обычно, намешано множество людей различных специальностей - программисты, художники, композиторы, дизайнеры итп. Понятно, что люди, разрабатывающие игровую логику, пилящие баланс итп не всегда знакомы с программированием. И уж совсем точно не стоит ожидать от них глубоких познаний в этой области. Поэтому, для них и придумали систему, когда человек пишет некую формулу(например, для вычисления урона при ударе). Формула пишется на очень простом языке, который потом регулярнми выражениями(!!) трансилруется в C++, компилируется и вставляется в проект как ресурс O_o. В общем, неплохо. Но со слайдами было бы лучше)

12:00 Виталий Видмиров, Gaijin Entertainment - Оптимизация графического конвеера на платформе PS3

Все, начиная с этого доклада никаких проблем с проектором более не было. Что касается доклада - у меня нет PS3. И я никогда с ней не работал. Так что не особо то я там все понял) Рассказывали уж об очень специфичных для PS техниках. SPU там всякие...

13:00 Евгений Заякин, Creat Studios - Не зарастет к нему народная тропа

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

15:00 Кирилл рогожин, Intel - Threading Building Blocks: новые возможности для разработчиков игр

Если кратко, то TBB - это кроссплатформенная C++ библиотека для упрощения работы с многопоточностью. Смотрим презентацию
Рекоммендую ознакомиться с сабжем всем программистам.

16:00 Сергей Сидоров, Intel - CPU спешит на помощь. Перенос вычислений с GPU на CPU

Ниочем

17:00 Евгений Городецкий, Intel - Верните эффект глубины резкости на CPU!

Развитие идей предыдущего доклада. Но с конкретными алгоритмами и цифрами. Получилось очень интересно. Обязательно попробую что-нибудь из этого, когда обзаведусь дофига-ядерным CPU ;)

18:00 Владимир Яцукевич, Vizor Interactive - Эффект зомби. Игры с вниманием человека.

После лекций по программированию, идея сходить на "Гейм-дизайн" казалась неплохой. Пока не сходили таки. Невероятное уныние. Толпищща народу (многие вообще стояли. (Какой контраст после программинга то!). В общем, минут через 20 мы оттуда ушли.

В целом. Первый день мне очень понравился. Но предстоял еще второй...
Однако сначала, о том, где мы жили. Мы жили в общежитии повышенной комфортности МФТИ в городе Долгопрудном. Всего лишь за 300 рублей/ночь. При этом, условия были почти царские - это была самая настоящая двухкомнатная квартира со всеми удобствами. (Холодильника только не было). Короче, отдохнули отлично там.

Пока все.