You are viewing
alexey_rom's journal
Уважаемые абитуриенты!
Санкт-Петербургский академический университет Российской академии наук вновь объявляет приём в магистратуру. У нас на кафедре математических и информационных технологий имеется три специализации: теоретическая информатика, алгоритмическая биоинформатика и разработка программного обеспечения. По ссылкам доступны магистерские программы, содержание текущих курсов, и всё-всё-всё.
Среди выпускников кафедры — аспиранты ведущих питерских и зарубежных научных центров (ПОМИ РАН, Penn State University, Stanford University), разработчики программного обеспечения ведущих IT-компаний (JetBrains, Яндекс и пр.).
Для студентов профильных (т.е. технических) специальностей вступительным испытанием является письменный тест по математике и собеседование. Испытание можно пройти в апреле, мае, или июле (нужно выбрать один месяц). На странице приёма имеются примеры возможных вопросов для собеседования.
Подача заявлений и прочие формальные действия для всех поступивших в любом случае будут производиться только в июле-августе.
Если Вы планируете поступать в Академический университет, заполните, пожалуйста, эту форму (она Вас ни к чему не обязывает и мы будем держать её содержимое в тайне!). Это нужно сделать незамедлительно: собеседования начнутся уже совсем скоро. С Вами обязательно свяжутся и назначат дату и время индивидуального собеседования (если вдруг этого не произойдёт, не стесняйтесь напоминать о себе любыми разумными способами - мало ли что). Если у Вас имеются какие-либо вопросы, их тоже можно задавать через сайт (или прямо здесь, но тогда он может быть открыт всем).
Чтобы лучше донести мысль, я иногда создавал контрпримеры Гетье для моих слушателей. Например, один раз я начал лекцию с извинения за то, что не приготовил слайды в PowerPoint. Я объяснил, что единственный раз, когда я сделал презентацию в PowerPoint, лекция была совершенно неудачной. У слушателей не было причин подвергать сомнению утверждение, так меня дискредитирующее; так что благодаря этому заявлению они приобрели обоснованное мнение, что единственный раз, когда я сделал презентацию в PowerPoint, лекция была совершенно неудачной. Отсюда они корректно заключили, что я ни разу не провёл успешной лекции с использованием PowerPoint. Это их мнение было истинно, но только потому, что я вообще никогда не использовал PowerPoint (и не собираюсь в будущем). Моё утверждение было чистой ложью.
Однажды в воскресенье начальник тюрьмы вызвал преступника, приговорённого к казни, и сообщил ему:
* Вас казнят на следующей неделе в полдень.
* День казни станет для вас сюрпризом, вы узнаете о нем только когда палач в полдень войдет к вам в камеру.
Начальник тюрьмы был честнейшим человеком и никогда не врал.
Заключённый подумал над его словами и улыбнулся: «В воскресенье меня казнить не могут! Ведь тогда уже в полдень субботы я буду знать об этом. А по словам начальника я не буду знать день своей казни. Следовательно последний возможный день моей казни — суббота. Но если меня не казнят в пятницу, то я буду заранее знать что меня казнят в субботу, значит и ее можно исключить.» Последовательно исключив пятницу, четверг, среду, вторник и понедельник преступник пришел к выводу, что начальник не сможет его казнить, выполнив все свои слова.
На следующей неделе, палач постучал в его дверь в полдень в среду — это было для него полной неожиданностью. Все, что начальник тюрьмы сказал, осуществилось. Где недостаток в рассуждении заключённого?
Python probably has the reputation of supporting functional programming based on the inclusion of lambda, map, filter and reduce in the language, but in my eyes these are just syntactic sugar, and not the fundamental building blocks that they are in functional languages. The more fundamental property that Python shares with Lisp (not a functional language either!) is that functions are first-class objects, and can be passed around like any other object. This, combined with nested scopes and a generally Lisp-like approach to function state, makes it possible to easily implement concepts that superficially resemble concepts from functional languages, like currying, map, and reduce. The primitive operators that are necessary to implement those concepts are built into Python, where in functional languages, those concepts are the primitive operations. You can write reduce() in a few lines of Python. Not so in a functional language.
Считается, что Python поддерживает функциональное программирование, скорее всего из-за включения lambda, map, filter и reduce в язык. Но с моей точки зрения это просто синтаксический сахар, а не основные строительные блоки, которыми они являются в функциональных языках. Куда более фундаментальным свойством, общим для Python и Lisp (который тоже не функциональный язык!), является то, что функции — объекты первого класса, и могут передаваться так же, как и любой другой объект. Это, в сочетании с вложенными областями видимости и в общем близким к Lisp'у подходом к состоянию функций, позволяет легко реализовать возможности, поверхностно напоминающие о таких возможностях функциональных языков, как карринг, map, и reduce. В Python встроены примитивные конструкции, необходимые для реализации этих понятий; а вот в функциональных языках они сами и являются примитивными конструкциями. В Python достаточно нескольких строк, чтобы написать reduce(). В функциональных языках это не так.