Метка: программирование

  • Удобный небезопасный кастинг

    Удобный автоматический кастинг Вещь не новая, но для тех, кто начинал программировать на Java в 90-ые и не очень привык к Generics-ам, это может быть интересно. Пример использования. Вам нужен метод, который возвращает объекты разных классов. Это могут быть обычные объекты – String, Integer, List, а могут быть и какие-то “свои” сложные бизнес-объекты вроде – […]

  • Scala. Pattern Matching

    Продолжил работу по созданию учебных материалов по Scala. Выкладываю черновую версию одной из глав. Сопоставление по образцу (pattern matching). Начало.

  • Netbeans Scala Maven

    Если вам приходилось работать в связке Netbeans 6.9.1 + Scala + Maven, то вы могли заметить, что компиляция происходит сильно медленнее, чем если бы вы НЕ использовали maven-scala-plugin. Дело в том, что по умолчанию компиляция запускается в режиме “компилировать все классы”. Это не очень приятно, учитывая то, что Scala компилятор не очень-то быстрый. К счастью, […]

  • Быстрый обратный корень на Java

    Fast Inverse Square Root, он же Fast InvSqrt() или 0x5f3759d5 – способ вычисления обратного квадратного корня из числа = 1/sqrt(x). Изобретен еще в 90-х годах. Если верить википедии, то этот алгоритм использовался в Quake III. Главная фишка метода в использовании “магической” константы – 0x5f3759d5, с помощью которой можно получить первое приближенное значение. Затем обычным методом […]

  • Принцип работы FFT и Scala

    Разбор алгоритма быстрого преобразования фурье (он же Fast Fourier transform, он же FFT). Целью публикации является отобразить суть алгоритма, а не создание быстрой по скорости работы реализации. Т.к. в этой программе я буду интенсивно использовать объекты вместо примитивных типов, а также рекурсию, скорость работы будет заведомо уступать многим другим реализациям FFT, которые можно сейчас найти […]

  • Поиск. КМП-алгоритм

    Недавно на досуге решил написать алгоритм КМП  (Кнута — Морриса — Пратта) для Scala. Изначально, мне нужно было решить простенькую задачку – найти последовательность байт в потоке байтов. Сделал на Java. Потом, решил сделать тоже самое на Scala. Занятно, но в стандартной библиотеке коллекций Scala используется именно КМП поиск. Вот мой вариант.

  • Магия унарных операторов в Scala (unary_)

    Многие знают, что в Scala возможна перегрузка операторов. К примеру, пусть у нас будет класс – двухмерная точка: class Point(val x: Double, val y: Double) { def -(p: Point) = new Point(x-p.x, y-p.y); def +(p: Point) = new Point(x+p.x, y+p.y); } Работать с ней приятно: val p1 = new Point(2,2); val p2 = new Point(1,1); […]

  • Мизинец программиста

    Постановка задачи Если Вы программист и используете среду разработки (IDE) более интеллектуальную чем блокнот, то скорее всего Вам часто приходится пользоваться различными горячими клавишами. В большинстве случаев это комбинации содержащие нажатие клавиши Ctrl. Например в NetBeans: Ctrl + Пробел = Автодополнение Ctrl+ Q = К месту последнего редактирования Ctrl +W = Закрыть окно Ctrl + […]

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

    Cписок книг,  которые возможно будут интересны другим программистам Эти книги не являются учебным пособием по какому-то конкретному языку программирования, в них практически нет больших листингов кода, описания API и другой технической информации. В них можно научится другому — интуитивному пониманию вещей, осознанности своих действий. Чтение таких книг может изменить Ваш подход и отношение к программированию. […]

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

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