Обновить
1062.57

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

10 «однострочников», которые произведут впечатление на ваших друзей

Время на прочтение13 мин
Охват и читатели43K
За последнюю неделю появилось несколько топиков с названием «10 однострочников на <MY_LANGUAGE>, которые произведут впечатление на ваших друзей», которые содержат однострочное решение нескольких простых задач, демонстрирующее достоинства и «крутость» любимого языка программирования автора. Я решил перевести их и для сравнения собрать в одном топике. Вся волна началась (вроде как) со Scala.
Итак, поехали!
Читать дальше →

Концепция баррикады

Время на прочтение3 мин
Охват и читатели2K

Каждый программист когда-то давно, в начале своего Пути писал что-то типа вот этого:
double div( double a, double b )
{
	return a / b;
}


И был в полной уверенности, что эта функция делает именно то, что нужно — делит а на b. Но рано или поздно рядом оказывался друг или преподаватель, который объяснял, что эта функция делает еще одну важную в жизни любой программы вещь: валит её с исключением деления на ноль, если b равно нулю. После этого к будущему программисту приходило понимание необходимости проверки входных данных. Кто-то на этом решал вопрос исчерпанным, а кто-то приходил к мысли, что это только половина Дао.
Читать дальше →

Духи-покровители программиста

Время на прочтение3 мин
Охват и читатели4.9K
За душу программиста сражаются три могущественных духа-покровителя: Художник, Трудяга и Прагматик.

Если вы слышите внутри себя голос: «Ты не можешь рисовать», рисуйте во что бы то ни стало, пока голос не стихнет.
— Винсент ван Гог


Первый дух, Художник, подталкивает программиста к работе над сложными заданиями, изобретению новых подходов и поиску средств самореализации. Он дает силы и желание создавать гениальные решения, учиться и творить (заодно он ведает спортивным программированием и эзотерическими языками программирования — прим.пер.). Он живет в лучших программах; именно он дарит программисту озарения, вселяет в него страсть к красоте кода и заставляет пренебрегать всем, что не относится к задаче. Это сильный дух, но и опасный — человек, одержимый им, непредсказуем и склонен забывать о действительно нужных вещах в угоду красивым. Он отвергнет посредственные, но годные решения и посвятит себя достижению безграничного совершенства на одном отдельно взятом фрагменте кода, переписывая его снова и снова даже ночью накануне важного показа, когда все тестировщики уже давно спят.

Читать дальше →

Ваша программа — дворецкий

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

Когда я говорю «дворецкий», я подразумеваю слугу, официанта или любой другой обслуживающий персонал. Т.е. персону, работа которой состоит в помощи, обслуживании, выполнении за Вас грязной работы и умении пропасть с глаз долой за мгновение до того, как Вам бы этого захотелось.
Читать дальше →

Получение Y-комбинатора в 7 простых шагов

Время на прочтение3 мин
Охват и читатели7.4K
Y-комбинатор это метод реализации механизма рекурсии в языке программирования который не поддерживает его изначально (на самом деле, он используется больше для осуществления программирования мозгов). Однако требуется, чтобы язык поддерживал анонимные функции.
Читать дальше →

Пора завязывать

Время на прочтение4 мин
Охват и читатели2.8K
EXPANDTAB!!!Может быть, стоило написать в «Я негодую». Не знаю. Пока писал, расколотил чашку с чаем и таким образом достиг хладнокровия.

Я про вот что: раз и два.

Есть же множество прекрасных тем для холиваров: Windows или Linux, IE или FF, Canon и Nikon, Intel и AMD, «на Украине» или «в Украине». Чужой или Хищник, наконец!

Так нет же, зацепились на ровном месте: пробелы и табуляции.

Почему на ровном месте?

Пора завязывать использовать пробелы вместо табуляции в коде

Время на прочтение3 мин
Охват и читатели96K

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

Итак, под катом — почему табы лучше пробелов, самые значительные заблуждения касательно табов и как ими правильно пользоваться.

Читать дальше →

Apache Hadoop (Доклад Владимира Климонтовича на ADD-2010)

Время на прочтение17 мин
Охват и читатели9.2K
Представляем вашему вниманию доклад Владимира Климонтовича, сделанный им на конференции Application Developer Days, в котором он поделился своим опытом обработки ОЧЕНЬ БОЛЬШИХ объемов данных, и использование для этого NOSQL-подходов, в частности Apache Hadoop.



Ниже представлены текстовая версия доклада + видео + аудио и слайды презентации. Спасибо belonesox за работу над подготовкой материалов доклада.

Читать дальше →

delete, new[] в C++ и городские легенды об их сочетании

Время на прочтение5 мин
Охват и читатели74K
Если в коде на C++ был создан массив объектов с помощью «new[]», удалять этот массив нужно с помощью «delete[]» и ни в коем случае не с помощью «delete» (без скобок). Разумный вопрос: а не то что?

На этот вопрос можно получить широчайший спектр неразумных ответов. Например, «будет удален только первый объект, остальные утекут» или «будет вызван деструктор только первого объекта». Следующие за этим «объяснения» не выдерживают обычно никакой серьезной критики.

В соответствии со Стандартом C++, в этой ситуации поведение не определено. Все предположения – не более чем популярные городские легенды. Разберем подробно, почему.
Читать дальше →

Заметки о кросс–компиляции приложений под DD-WRT

Время на прочтение8 мин
Охват и читатели19K
Недавно у меня перестал работать вайфай-рутер и после некоторых раздумий я заказал Asus RT-N16. Хотелось наконец–то познакомиться с альтернативными прошивками. Характеристики этого рутера уже описывались на Хабре. Итак, DD-WRT установлена (v2.24), самба заведена, в первый юсб порт воткнута системная флешка, а во второй — внешний жесткий диск. А дальше я заинтересовался: а смогу ли я запустить свои программы на этом рутере? Я не нашел в сети руководства по сборке программ под рутер и надеюсь этой статьей восполнить пробел. Приведу пошаговое руководство с описанием небольших проблем, встреченных на пути.

В качестве подопытной программы мне хотелось запустить Easysync, о которой я недавно писал. Повторюсь, что это открытая программа для синхронизации файлов в стиле дропбокса. Программа написана с использованием Qt 4, а в качестве движка синхронизации используется Unison. Так что, эта статья описывает как откомпилировать Qt, Unison, Easysync для архитектуры MIPS и рассказывает о запуске Easysync на вашем домашнем рутере.
Поехали!

10 лет RSDN

Время на прочтение1 мин
Охват и читатели1.9K
Сегодня отмечает свой первый юбилей один из самых посещаемых и авторитетных ресурсов для русскоязычных программистов: RSDN.ru.
10 апреля 2001 года, на просторах рунета появился сайт, призванный объединить русскоговорящих программистов в одно большое сообщество: русскую сеть разработчиков программного обеспечения (или «RSDN» по-забугорному). Спустя пять дней, на форумах этого сайта появилось первое официально зафиксированное сообщение, так и оставшееся без ответа.
Читать дальше →

Потоки или события

Время на прочтение3 мин
Охват и читатели14K
Существует два способа обрабатывать параллельные запросы к серверу. Потоковые (threaded, синхронные) серверы используют множество одновременно выполняющихся потоков, каждый из которых обрабатывает один запрос. В это время событийные (evented, асинхронные) серверы выполняют единственной цикл событий, который обрабатывает все запросы.

Чтобы выбрать один из двух подходов, нужно определить профиль нагрузки на сервер.
Читать дальше →

Ближайшие события

Языки программирования: первая шутка

Время на прочтение4 мин
Охват и читатели15K
В языках программирования есть свои шутники и свои шутки. Собственно, большинство эзотерических языков программирования задумывались именно как шутки (конечно, если не как вызов общественности, как F*ckf*ck, или как упражнение для ума, как Brainfuck). Но есть один язык, который по праву заслужил почетное звание Первой Шутки. В далеком 1972 году, когда все существующие языки программирования были исключительно целесообразны и убийственно серьезны, ранним утром 26 мая пара шутников раздвинула границы сущего и придумала принципиально новый язык. Они окрестили его «Compiler Language With No Pronounceable Acronym», что по очевидным причинам сократилось до INTERCAL.

С тех пор прошло почти 40 лет. INTERCAL давно перестал не иметь ничего общего ни с одним мейнстримовым языком, как хотели его разработчики. Согласитесь, обыкновенный императивный язык, в котором есть именованные переменные, массивы, операция присваивания, целых 5 операторов и стандартная библиотека, реализующая недостающие арифметические действия, имеет гораздо больше общего с нормальными языками, чем тот же Brainfuck, не говоря уже о двумерных языках, недетерминированных языках, параноидальных языках, языках с единственной инструкцией и прочих экспонатах нашего вивария. Но он продолжает оставаться пионером жанра, уникальным во многих отношениях.

Прежде всего, справочное руководство. Позднейшие эзотерические языки концентрируют свою необычность в самой сути языка, их руководства ограничиваются сухими фактологическими описаниями команд и особенностей. The INTERCAL Programming Language Reference Manual — уникальное описание языка программирования, с эпиграфами из «Алисы в Стране Чудес» и ехидными комментариями, сказанными совершенно серьезным тоном. Кроме того, специально для этого языка авторы разработали систему эвфемизмов для использующихся служебных символов: ' — искра, " — кроличьи ушки, . — пятно, : — двойное пятно, , — хвост, ; — гибрид (хотя логичнее было бы «пятнистый хвост»), $ — большие деньги, ~ — загогулина и т.д. (полный список прилагается к руководству). Комбинирование кроличьих ушек с пятном для получения кролика запрещено!

Читать дальше →

Злые программисты

Время на прочтение1 мин
Охват и читатели1K


Австралийский разработчик корпоративных бизнес-приложений Atlassian в честь 1 апреля решил сменить сферу деятельности и выпустить игру Angry Nerds. Она сделана по мотивам известного шедевра Angry Birds, но вместо птичек здесь программисты борются со зловредными багами.
Читать дальше →

Если бы языки программирования были женщинами

Время на прочтение3 мин
Охват и читатели17K
То ли весна, то ли упоминание о неделе женщин на Хабре заставили меня задуматься о том, какими женщинами были бы языки программирования. Поиск по этой теме выдал пару явно устаревших статей, и я решила написать свою. Просьба воспринять с юмором и не обвинять в шовинизме — я, знаете ли, и сама не мужик :-)

P.S. Придумалось далеко не для всех известных мне языков — раскрытие темы для недостающих только приветствуется.

Prolog
Женщина-мечта: делает все, что вы хотите. К сожалению, иногда описание того, что же вы хотите, занимает больше времени, чем объяснение, как это делать.

BASIC
Горячая разведенка; специализируется на соблазнении подростков, и очень многие получают с ней свой первый опыт. Мнения взрослых о ней разделяются — одни вспоминают ее с нежностью, другие — осуждают ее дурное влияние на юные умы.

Читать дальше →

Знакомство с АОП

Время на прочтение10 мин
Охват и читатели134K

Парадигмы программирования


В современном мире IT-разработки существует довольно большое множество различных подходов к написанию программ. Так, например, кому-то нравиться представлять программу в виде последовательности действий, а кто-то считает, что программа должна представлять собой множество объектов, общающихся друг с другом. Совокупности этих идей и понятий образуют своего рода стиль написания программы, который принято назвать – парадигма программирования.

У каждой парадигмы есть свои особенности, однако, главным фактором, различающим их, является понятие основной единицы программы. Вот самые популярные из них:
  • инструкция (императивное программирование, FORTRAN/C/PHP),
  • функция (функциональное программирование, Haskell/Lisp/F#/Scala),
  • прототип (прототипное программирование, JavaScript),
  • объект (объектно-ориентированное программирование, С++/Java),
  • факт (логическое программирование, PROLOG).

Стоит заметить, что в общем случае язык программирования однозначно не определяет используемую парадигму: на том же PHP можно писать как императивные, так и объектно-ориентированные программы.

В этой статье я хочу рассказать о сравнительно молодой, но крайне, на мой взгляд, полезной парадигме программирования – аспектно-ориентированном программировании.

Читать дальше →

[Перевод] 7 смертных грехов в разработке ПО

Время на прочтение6 мин
Охват и читатели3.9K
Друзья, представляю вам перевод статьи «The 7 deadly sins of software development» автора Neil McAllister, опубликованной на infoworld.com.

Читать дальше →

Ищем быстро, еще быстрее

Время на прочтение3 мин
Охват и читатели23K
Натолкнулся в разделе QA на интересный вопрос. Ответ на него заставил написать эту статью как бОлее полный ответ на вопрос «как организовать поиск по множеству параметров, как в Яндекс-маркете, например».

Я знаю, что на Хабре, да и вообще есть много сторонников noSQL решений (сам не без греха), но все же я сторонник сначала подумать, а уже потом выбирать решение.

Итак, что имеем в «ДАНО»
  • Имеем 120 чекбоксов — вариант 1/0
  • Имеем 30 «радио» с выбором «да/нет/не важно»
  • Имеем 2-3 слайдера для указания диапазона цен/размера чего нить
  • Имеем самое главное: 12 млн записей в БД.
  • Имеем Select * From tovar Where (wifi=true) and (led=false) and (type=3) and ….остальные параметры …; со временем выполнения близкому к истерике клиента.

Читать дальше →

Wolfram Mathematica: знакомство

Время на прочтение8 мин
Охват и читатели87K
Все знают Wolfram|Alpha, и наверняка слышали о Wolfram Mathematica. К сожалению, поиск показал отсутствие постов об этой замечательной среде на хабре, и данной статьей хотелось бы открыть серию публикаций посвященных программированию на Mathematica. Для начала стоит сказать о возможностях и особенностях этой системы, которых ой как много, так что запаситесь терпением. Если хабражителей заинтересует этот математический пакет, то обязательно последуют другие статьи, более конкретные, обучающие работе со средой и внутренним языком.

Читать дальше →

Вклад авторов