Рубрики
0. Мироощущение и бытие

Кофе и программисты

Мой небольшой обзор разных кофеен.

Уже больше года веду образ жизни свободного разработчика. Время от времени встречаюсь с такими же как я (программистами, стартаперами). На таких встречах мы, как правило, обсуждаем текущие задачи, пьём кофе, строим планы на будущее, а иногда устраиваем "полевые испытания" - вместе проверяем как работает веб-сервер, тестируем приложения под андроид в суровой реальности, а не в тепличных условиях и т.д.
За время этих встреч у меня появился свой мини-рейтинг различных кофеен с точки зрения их удобства для программистских тусовок.

Рубрики
0. Мироощущение и бытие 4. Полезняшки

Книги о программировании

Cписок книг,  которые возможно будут интересны другим программистам

Эти книги не являются учебным пособием по какому-то конкретному языку программирования, в них практически нет больших листингов кода, описания API и другой технической информации.

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

Итак, приступим к обзору.

Рубрики
0. Мироощущение и бытие

Test-driven development (TDD) и Постпозитивизм

Давным-давно, когда я учился в аспирантуре физтеха по специальности "Моделирование, численные методы и комплексы программ", одним из предметов которые нужно было изучать была философия. Лично для меня предмет не самый интересный, но благодаря  нашему преподавателю философии после пары лекций  учение Сэра Карла Раймунда Поппера вызвало  парадигм_шифт в сознании...

Краеугольным камнем этого сдвига является критерий Поппера или фальсифицируемость (принципиальная опровержимость утверждения, опровергаемость).  Цитируя википедию, привожу следующее определение: "Критерий фальсифицируемости требует, чтобы теория или гипотеза не была принципиально неопровержимой."

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

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

А дальше у многих в голове происходит страшное...

Люди начинают путать фальсифицируемость и верифицируемость(то есть доказуемость). Если все тесты прошли успешно, это не доказывает, что наша программа работает корректно. Соблюдение критерия Поппера -- есть необходимое условие, но не достаточное.  Другими словами, если все тесты прошли успешно, этого недостаточно! Нельзя   утверждать, что программа работает корректно.

Зачем же тогда писать юнит-тесты? Затем, чтобы в тех случаях когда тест не срабатывает мы точно знали -- у нас есть ошибки. Это важно знать, иначе в программировании будет торжествовать мистика и мракобесие.

Рубрики
0. Мироощущение и бытие

Как программисты видят друг друга. Java, C, PHP, Ruby, Haskell

Как программисты видят друг друга:

как программисты видят друг друга

Авторство, к сожалению, определить не смог, картинка сильно разошлась в интернете. Изначально, наткнулся на подобную картинку в комментариях к посту в блоге Алены С++ про программистов различных специальностей.  Еще интересная картинка,  которая меня порадовала как бывшего LISP-программиста:

Рубрики
0. Мироощущение и бытие 4. Полезняшки

Как считается TIOBE индекс?

Прочитал новость на слэшдоте о новых данных по TIOBE индексу языков программирования за Апрель 2010 года (оригинальную статью можно прочитать здесь):

Position
Apr 2010
Position
Apr 2009
Delta in Position Programming Language Ratings
Apr 2010
Delta
Apr 2009
Status
1 2 C 18.058% +2.59% A
2 1 Java 18.051% -1.29% A
3 3 C++ 9.707% -1.03% A
4 4 PHP 9.662% -0.23% A

В итоге, разница в индексе популярности языков программирования (по методике TIOBE) между С и Java составляет около 0.007, что на мой взгляд незначительно (по сравнению Java - PHP = 8.389)

Индекс считается очень интересно.

Рубрики
0. Мироощущение и бытие

программеры

Хочу поделиться своими мыслями на тему "Стоит ли становиться программистом".

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

Итак, объектом исследования будут являться "компьютерщики", "IT-шники" и прочая "живность" около компьютерного мира.

Для построения модели  создаем проекцию классов, используемых в популярных компьютерных RPG-играх, на "реально" существующий мир компьютерщиков.  Я не являюсь специалистом и поклонником различных компьютерных RPG игр.  Просто на мой взгляд, создатели этих игр и их миров, достаточно хорошо сумели обобщить и создать структуру всевозможных "типичных" героических персонажей.  Так что я нагло воспользуюсь некоторыми результатами их многолетнего труда по созданию и описанию чара.

Итак попробуем сформировать модель, как упрощенный объект, описывающий реально существующие группы субъектов.

Программер, программист, разработчик программного обеспечения  -  магmage. Конечно же это всего лишь аналогия, но, как мне кажется, наиболее близкая. Программисту нужен хороший интеллект (intelligence).  Он определяет, например, сколько языков может выучить программист, насколько сложные "заклинания-технологии" он сможет осилить.   "Программерская магия" бывает разная. Например, это может быть "стихия" windows или unix,  это могут быть различные языки на которых можно творить - c, java, c#, php, asm и т.д.  Сила программера - это долгое и упорное обучение.  Начинать за программера сложно, если интеллектуальные способности средние и нет возможности устроиться в отряд/группу к сильным программистам чтобы набраться экспы. Тогда придется браться за любые задачи, за которые платят хоть какие-то деньги. Многие в это время бросают проходить дальше за программера и начинают идти за другие классы.

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