вдогонку к теме прошлой встречи, специально для тех, кто хочет «укрепить свой мозг», представляю вниманию базовый курс видео-лекций по Haskell на Channel9. Ведет их Эрик Майер, гуру программирования из Microsoft по книге и слайдам Грахама Хаттона Programming in Haskell. Благодаря видео-лекциям, книга приобрела невероятный интерес и популярность по всему миру (пруфлинк).
Дабы не томить долгой прелюдией, далее список лекций по главам:
С# — это довольно гибкий язык программирования, в чём мы и убедились послушав доклад Юрия Муленко. Юра рассказал нам про несколько интересных фишек, которые позволяют писать программы на C# в функциональном стиле.
«Это же Python!» — восклицал Александр Мочёнов. И действительно — Python — скажем мы. На этом языке можно сделать буквально всё. Python задействован в создании многих проектов, особенно с открытым исходным кодом. Python ещё очень интересен тем, что является мультипарадигменным языком программирования, в частности функциональный стиль никак не чужд Python-программистам.
А вот и бонус, несколько неплохих ресурсов по программированию на языке Python:
Функциональное программирование — это парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций. В функциональном языке, при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат в обоих случаях, входные данные не могут измениться, выходные данные зависят только от входных.
Андрей Солнцев сделал отличную вводную — «ФП для чайников», показал разницу между императивным и функциональным стилями на примере алгоритма бутерброда, а так же рассказал как принципы ФП могут быть применены в программировании на языке Java. Java не предоставляет возможностей для ФП на уровне синтаксиса, и поэтому, приходится пользоваться сторонними библиотеками, такими как Google Collections.
В четверг состоялась очередная встреча нашего сообщества. Встреча прошла под названием «Функциональные элементы в ООП», именно потому, что доклады были не о функциональных языках программирования, а об использовании парадигмы функционального программирования в таких языках как Java, C# и Python.
Вечер открыл Андрей Солнцев с докладом «Функциональное программирование на Яве. Практикум на ЭВМ». Андрей популярно, с помощью бутербродного алгоритма, объяснил, в чём заключаются основные тезисы ФП, и рассказал как это можно использовать при написании программ на Java, с примерами Google Collections.
Довольно важный тезис, который подчеркнул Андрей, это то, что ФП в языке Java хорошо подойдёт для написания бизнес-логики, но, к сожаению, программист не имеет полного контроля над тем как будет исполнятся программа — этот контроль берёт на себя компилятор.
«Это же Python!» начал свой доклад Александр Мочёнов. Александр поведал нам немного об истории и философии, а так же о фишках ООП и ФП в языке Python.
Мы узнали что Python — это мультипарадигменный язык программирования, имеющий обширную стандартную библиотеку. Сказать откровенно, код на Python действительно кажется на столько «чистым», что потом код на Java или C# кажется кучей мусора — кажется, что фигурные скобки это действительно лишнее, а все программисты являются достаточно взрослыми людьми для того чтобы делать отступы правильно.
Не смотря на то, что Python является довольно популярным языком программирования в мире, в нашем сообществе почти не оказалось Python-программистов. Я насчитал всего 2 человека — и те — QA-инженеры 🙂 Александр заметил, что Python не рекомендуется для написания приложений, где очень важна производительность — вероятно это и есть причина.
Третий доклад, «Функциональное программирование в C#». Юрий Муленко рассказал нам о функциональных конструкциях языка C# которые здорово облегчают разработку. Для многих, по всей видимости, эта презентация стала выносом мозга, но как сказал Андрей в самом начале, «если это не убьёт ваш мозг, то сделает его сильнее». Понадеемся, что после прошедшей встречи, мозги всех участников стали ощутимо сильнее 🙂
Конференция JAZOON — это аналог JavaOne в Европе. Я думаю не надо пояснять, на какую аудиторию программистов расчитана эта конференция 🙂
В июне JAZOON будет проводиться уже в 4й раз, и на данный момент открыта регистрация докладчиков. Поэтому, если кто то чувствует, что готов выступить перед тысячей программистов с техническим докладом по Java-технологии, дерзайте!
2й год подряд на конференции проводится конкурс молодых докладчиков — Jazoon Rookies. Докладчик должен быть моложе 27 лет по состоянию на 1 июня 2010. Это хороший шанс для молодых специалистов проявить себя!
Расскажу вам о поездке в Москву на мероприятие Google Developers Day 2009. Google Developers Day 2009 — это мероприятие проводимое компанией Google для продвижения своих технологий и продуктов. Целевая аудитория, как видно из названия — разработчики ПО. В этом году конференция проводилась в пяти местах: Пекин (Китай), Йокохама (Япония), Сан Паоло (Бразилия), Прага (Чехия), Москва (Россия). Параллельно с докладами, на конференции можно было пообщаться с инженерами из Google, которые непосредственно связаны с теми докладами, технологиями и продуктами, о которых говорилось на протяжении всего дня. Мне самому удалось пообщаться с координатором программы GTUG, которую так активно сейчас продвигает Google.
Для затравки — видеоролик который проигрывался в перерывах между докладами:
Основная тематика мероприятия, как я сказал выше, это продукты и технологии Google для разработчиков. Среди технологий, которым было уделено наибольшее внимание, можно выделить Google App Engine, OpenSocial, Chrome, Android, Wave и GWT. В добавок был упомянут новый проект — Chrome OS, который обещают запустить в конце года. А так же, Google не брезгует предоставлять возможность выступить с докладами и своим прямым конкурентам в России — Яндекс, линейка продуктов которого как зеркало повторяет технологии Google.
Вот список докладов, которые мне удалось посетить:
От искры до 100 км/ч.: жизнь запроса App Engine. Fred Sauer. Серверная архитектура App Engine позволяет проводить автомасштабирование в режиме реального времени, не пользуясь виртуализацией. Довольно информативный доклад, чтобы узнать об инфраструктуре стоящей, за App Engine.
OpenSocial, принципы и код. Chris Chabot.OpenSocial определяет общий набор API для создания социальных приложений на основе множества веб-сайтов. Крис — очень классный докладчик, слушать его одно удовольствие.
Native Client. Виктор Хименко.Native Client — очень амбициозный проект. Идея в том, чтобы позволить запускать платформенно-зависимый код прямо из броузера. Проект имеет прямое отношение к Chrome OS, который планируется выпустить в скорому времени.
Google Wave API. Вадим Герасимов.Google Wave несомненно наделал много шуму. Все только и говорят о волнах как о прорыве в свере обмена информацией на ряду с электронной почтой и службой обмена сообщениями. Понял, что API позволит делать довольные интеграции с другом ПО ориентированым на общение в команде — например с ПО для ведения проектов, такими как JIRA.
Архитектура Google Web Toolkit: полезные советы по написанию вашего приложения на GWT. Fred Sauer.GWT — довольно амбизиозный проект, как и остальные проекты в Google. Идея транслирования Java в JavaScript, оставляя Java-разработчику возможность наслаждаться всеми прелястями разработки на своём любимом языке довольно заманчива. Но мы то (те кто успел опробовать GWT в реальных проектах) знаем, что не всё так гладко как хотелось бы. Приятно видеть что Google учитывает, пожелания разработчиков и старается улучшить GWT на сколько это возможно — а улучшать ещё можно много.
А вот и фотографии очевидца:
Организаторы конференции обещают в скором времени выложить видео докладов на веб-ресурсе мероприятия — советую посмотреть!