воскресенье, 30 сентября 2012 г.

На кухне крутых кодеров

Второй книгой которую я взял с собой в отпуск была Кодеры за работой от Сейбела. Книга содержит 15 интервью с известными и очень известными программистами, которые написали в своей жизни что-то по настоящему "крутое". В книге  довольно много интервью с "заслуженными" программистами, и даже парочка из них сейчас вообще отошла от всякого программирования и, например, разводят овец.

В целом книга уж точно как минимум заслужила 4 или даже 5 с минусом. Каждому программисту задается некоторый набор общих так и уникальных вопросов. Из общих вопросов выделяются просьба о рекомендации литературы обязательной к прочтению (и некоторые даже не могли ничего предложить, так как очень мало читают). Так же интересен вопрос про отношение к партерном - некоторые считают это "отрыжкой плохих языков" )).

Вообще очень сильный уклон в сторону довольно возрастных программистов из молодых выделяется разве что Брэд Фицпатрик, создатель livejournal. Вообще читая его интервью (ему тогда было 28 лет) увидел как много у таких успешных программистов зависит от таких вещей как программирование в школе, отношения родителей к компьютерам, встреча с правильными людьми, правильный университет и т.п. Кажется что в этом месте очень многое было мной упущено (как впрочем и у очень многих детей из бывшего СССР), но тут уже ничего не поделаешь, остается только пытаться все догнать уже сейчас.

Как наконец выучить все эти паттерны

В отпуске взял с собой пару книжек по программированию что бы, валяясь на пляже, можно было бы с толком провести время.  Одной из этих книжек была Паттерны проектирования от Фрименов.

Брал я эту книгу с некоторым скепсисом, так как уже читал одну книгу из этой серии (по objective с)  и остался несколько разочарован. Книга описывает самые популярные паттерны проектирования в развлекательной манере с повторением одного и того же по несколько раз.  Довольно много сравниваются похожие паттерны (например Стратегию и Состояние) что бы подчеркнуть их различия, что вообще говоря выглядит достаточно эффективно, как способ обучения.

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

О двухтомнике Core Java


Недавно производственная необходимость и просто любопытство подтолкнуло меня к написания продакшен систем на Java. Знакомство с этим новым для меня языком я решил начать с довольно известного в узких кругах двухтомника Core Java от Кея Хорстманна и Гари Корнелла.

Если в двух словах то книга мне очень понравилась - написано очень толково без лишней воды и ненужных отступлений. Кроме описания самого языка, довольно живого и без лишнего формализма, есть еще очень хорошее описание библиотек java (собственно весь второй и посвящен в основном работе с библиотеками). Особый бонус этих книг - многочисленные отсылки, прежде всего в первом томе, к языку С++ с обсуждением параллелей, общих мест и различий. Мне как старому С++ программеру это было очень полезно.

Первый том содержит описание языка и самый основы работы с библиотеками, а второй том содержит описание остальных частей библиотеки и различные тонкие моменты работы с языком (например, такие как безопасность).

Полезно было почти все, разве что работа с UI пока мне абсолютно не нужно и солидную часть его описание во втором томе я просто пропустил.

Отлично описано многопоточное программирование, потоки, коллекции, работа с XML, сетевого программирования, работой с JDBC - в общем всего что надо для написания уже вполне серьезных приложений.

В общем надо быстро освоить Java если ты хорошо знаком с С++ - Core Java совсем неплохой выбор.

вторник, 4 сентября 2012 г.

Развращенные Iдеей

У нас много и со вкусом пишут на IntelliJ Idea да и на прочих продуктах jetbrains (типа WebStorm, PyCharm и т.п.), благо лицензия позволяет.
С недавнего времени и я вступил в клуб активных пользователей данных продуктов  - ну прежде всего идеи, но и PyCharm с AppCode уже успел пощупать.
Да продукт крутой, спору нет. Его магия по предсказанию того что ты хочешь сказать иногда просто завораживает и кажется что так просто не может быть - и иногда проскакивает мыслишка: "а как он вообще смог догадаться!?".
Но, совершенно случайно, знакомясь с новым для меня языком программирования и задавая всякие наивные вопросы более опытным по этим делам коллегам, я выяснил, что же, черт побери, это интеллектуальная идея творит?!
Невинный вопрос: если передать String в функцию и там ее поменять, то вызвавший код увидит изменения - т.е. значения передаются по значению или по ссылке? Ответ: эээ, мы так не делаем - не в курсе.. Вопрос решился после написания коротенького теста.
Дальше: Как правильно, то писать параметры шаблона функции
Pair<A, T>.of или может Pair.of<A, T> или все-таки так Pair.<A, T>of?! Ответ: хм, не знаю - идея говорит, что это тут лишнее - значения и так выведутся из параметров функции. Но все таки, как правильно то писать? Хм, ну давай попробуем вставить во все возможные места и поймаем момент когда идея перестанет подсвечивать красным. WTF?!
А может не стоит начинать сразу с идеи?! Возьмите старый добрый mcedit или может даже vi - просто ручками попишите старый добрый жава код. Ручками откомпилируйте его и протестирует. Уверен тогда будут приобретены сокровища неведомых знаний. И уж в конце, когда все станет совсем ясно и понятно можно запустить идею что бы писать код на пару порядков быстрее. Именно в таком порядке надо учиться и именно так правильно.