Инструменты разработчика
В свое время задался вопросом поиска нормального IDE. В качестве основных критериев были выбраны: поддержка более чем одного языка программирования (например, в данный момент в разработке три проекта — на С++, на C# и на PHP, не говоря уже вспомогательных вещах типа HTML, CSS, SQL, JS и прочего) на уровне подсветки синтаксиса и автодополнения, удобное редактирование XML (с подсветкой ошибок как минимум), ну и всякие вкусности типа интеграции с системами контроля версий, запуск и/или развертывание приложений из среды и т.п.
Подробнее →
Хитрости при работе с Qt
Если вы имеете отношения к субмирку разработчиков приложений, то вы наверняка слышали о некой библиотеке Qt, написанной угрюмыми норвежцами для не менее угрюмых С++ разработчиков . Помимо прелести двойного лицензирования (Qt доступно как под GPL, так и под коммерческой лицензией), кроссплатформености (работает и под Linux, и под Mac, и под Windows), она включает в себя почти все, что надо разработчику приложений — и средства создания пользовательского интерфейса, и функции работы с графикой, сетями, СУБД и XML и т.д. и т.п. Если вам нет дела до всего это великолепия — можете тут же забыть эти две буквы и никогда не посещайте сайт производителя, а ещё лучше — заблокируйте его на уровне корпоративного брандмауэра.
Подробнее →
Функциональный C# на практике — 4
Говорить компилятору что вам необходимо много приятнее, нежели то, так это сделать. Последнее, к сожалению, является тяжким бременем для программиста на императивных языках. Мы пытаемся понять логику машинного взаимодействия, проверяя по шагам выполнение операций, выверяя результаты и убеждаясь, что эффект от выполнения кода соответствует нашим ожиданиям. Функциональное программирование поможет нам отойти от всего этого.
Подробнее →
Функциональный C# на практике — 3. Цикловселенское зло
Начнем, пожалуй, с небольшого задания — попробуйте объяснить, что делает следующий фрагмент кода:
1 2 3 4 5 6 7 8 9 10 11 | static void Main(string[] args) { string output = ""; if (args.Length > 0) output = args[0]; if (args.Length > 1) { for (int i = 1; i < args.Length; i++) { output += ", " + args[i]; } } Console.WriteLine(output); } |
Функциональный C# на практике — 2
В прошлый раз было продемонстрировано, как вместо привычного using использовать традиционную функцию. Теперь перейдём к повседневным практикам,на примере которых попробуем доказать эффективность применения функционального подхода. Для примера будем использовать пространство имён WCF.
Подробнее →

