Pull to refresh
47
0
Валерий @kharvd

Пользователь

Send message

Занимательное функциональное программирование в Ruby

Reading time 13 min
Views 10K

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

Предположим, что единственный способ представления кода — лямбда-выражение, а единственная доступная структура данных — массив:

square = ->(x) { x * x }
square.(4) # => 16

person = ["Dave",:male]
print_person = ->((name,gender)) {
  puts "#{name} is a #{gender}"
}
print_person.(person)

Это самые основы функционального программирования: функции — единственное, что у нас есть. Давайте попробуем написать что-то более похожее на реальный код в таком же стиле. Посмотрим, как далеко мы сможем зайти без особых мучений.
Читать дальше →
Total votes 67: ↑64 and ↓3 +61
Comments 20

Виртуальные функции в C

Reading time 4 min
Views 29K
Недавно мне задали вопрос: как бы я реализовал механизм виртуальных функций на языке C?

Поначалу я понятия не имел, как это можно сделать: ведь C не является языком объектно-ориентированного программирования, и здесь нет такого понятия, как наследование. Но поскольку у меня уже было немного опыта с C, и я знал, как работают виртуальные функции, я подумал, что должен быть способ сымитировать поведение виртуальных функций, используя структуры (struct).

Краткое пояснение для тех, кто не знает, что такое виртуальные функции:
Виртуальная функция — это функция, которая может быть переопределена классом-наследником, для того чтобы тот имел свою, отличающуюся, реализацию. В языке C++ используется такой механизм, как таблица виртуальных функций
(кратко vtable) для того, чтобы поддерживать связывание на этапе выполнения программы. Виртуальная таблица — статический массив, который хранит для каждой виртуальной функции указатель на ближайшую в иерархии наследования реализацию этой функции. Ближайшая в иерархии реализация определяется во время выполнения посредством извлечения адреса функции из таблицы методов объекта.


Давайте теперь посмотрим на простой пример использования виртуальных функций в C++
Читать дальше →
Total votes 36: ↑29 and ↓7 +22
Comments 54

С Ubuntu на Fedora — высаживаемся на чужой земле (хорошее, плохое и уродливое)

Reading time 4 min
Views 53K
imageВ последнее время я начал замечать, как трудно разрабатывать под окружение рабочего стола, которое сам не используешь. И, поскольку большая часть моей работы сейчас относится к GNOME (и KDE), я понял, что мне придется использовать новый GNOME 3. К сожалению, Ubuntu 11.04 с GNOME 3 работает не слишком стабильно, на мой взгляд.

Я очень нетерпеливый разработчик: я очень не люблю компилировать и долго разбираться с пакетами. Когда я использовал виртуальную машину, мне пришлось серьезно повозиться с Mutter, поэтому я решил перейти на Fedora. Это позволило мне взглянуть на всё по-новому, поскольку я долгое время использовал Ubuntu.
Читать дальше →
Total votes 90: ↑63 and ↓27 +36
Comments 111

Релиз Qt Creator 2.2

Reading time 1 min
Views 1.6K
imageСегодня в блоге Qt Labs было сообщено о выходе нового релиза среды разработки Qt Creator.

Краткий список изменений:
  • Обновлена поддержка Bazaar
  • Полностью переписана система отладки для MSVS
  • Конфигурируемые определения MIME типов
  • Запись и воспроизведение макросов
  • Конфигурируемые сниппеты
  • Доступ к внешним инструментам (например, lupdate и lrelease)
  • Закрепляющиеся всплывающие подсказки отладчика
  • Поддержка Valgrind/memcheck (Отладка->Анализатор) на Linux и Mac
  • Специализированный редактор для языка шейдеров GL

Читать дальше →
Total votes 47: ↑43 and ↓4 +39
Comments 15

Когда «свободное» в «свободном ПО» не имеет значения

Reading time 4 min
Views 1.2K
imageТермин «свободное ПО» может иметь разное значение, в зависимости от того, с какой стороны вы на него смотрите. Для многих, в частности для меня и большинства читателей моего блога, свободное ПО означает открытый исходный код. Для мира в целом это понятие имеет совершенно другое значение.
Читать дальше →
Total votes 95: ↑75 and ↓20 +55
Comments 353

Выпущена бета Qt Creator 2.2

Reading time 1 min
Views 830
Сегодня в блоге Qt Labs было сообщено о выходе первой бета-версии IDE Qt Creator 2.2. Релиз был назван в честь умершего белого медведя Кнута (Knut Creator). Помимо множества багфиксов в бету было добавлено несколько серьезных улучшений, в частности поддержка системы управления версиями Bazaar, сниппеты кода, улучшенный дебаггер.
Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 34

А вы вносите свой вклад?

Reading time 2 min
Views 879
image
[Мой перевод предыдущей статьи Рафаэля]
Не знаю, как вы, но когда я только начал использовать свободное ПО, я был поражен, что мог пользоваться всеми этими программами бесплатно. И через несколько месяцев решил найти способ чем-нибудь отплатить. Это было 13 лет назад… и вплоть до сегодняшнего дня я все еще активный разработчик Debian :-)
Читать дальше →
Total votes 86: ↑74 and ↓12 +62
Comments 116

Ubuntu 11.10 будет иметь кодовое имя Oneiric Ocelot

Reading time 1 min
Views 837
imageМарк Шаттлворт объявил, что следующая после Natty Narwhal версия Ubuntu будет называться Oneiric Ocelot.

В сообщении "Next After Natty?" в своем блоге Шаттлворт описывает цели следующей итерации Ubuntu и объясняет, почему она должна быть названа именно так. Марк говорит: «Oneiric значит “мечтательный”, и вместе с оцелотом это напоминает мне о том, как происходят инновации: отчасти мечты, отчасти дисциплина»

Вместе с Ubuntu 11.10 на CD также будет поставляться Unity 2D для тех людей, железо которых не позволяет использовать 3D версию, а также Qt, что, как утверждает Шаттлворт, “даст разработчикам еще больше возможностей для создания интерфейсов, которые как функциональны, так и эстетически привлекательны”
Total votes 75: ↑62 and ↓13 +49
Comments 55

Debian или Ubuntu: кому помогать?

Reading time 3 min
Views 54K
С точки зрения пользователя относительно просто сделать выбор между Debian и Ubuntu. У каждого есть свои личные предпочтения, и попробовать обе ОС не займет слишком много времени. Но когда дело доходит до вклада в разработку, времени для этого потребуется гораздо больше, и вам наверняка захочется подумать об этом дважды, прежде чем начинать. Так на какую систему лучше потратить свое время?

Это непростой вопрос, на который нет ответа, который удовлетворил бы каждого. Все зависит от того, каков ваш стимул для участия в разработке.
Читать дальше →
Total votes 94: ↑78 and ↓16 +62
Comments 29

Программирование на калькуляторе

Reading time 5 min
Views 85K
Здравствуйте, хабражители. Думаю, многие из вас слышали о программируемых калькуляторах (а некоторые даже использовали их). Как ни странно, здесь я не нашел ни одной статьи, рассказывающей о такой интересной вещи, и поэтому решил восполнить этот пробел и рассказать об основах программирования на калькуляторах.

Некоторое время назад я нашел у себя в кладовке старый «Электроника МК-61», принадлежавший моему папе. Естественно, я не мог упустить такой шанс освоить не совсем «стандартное» программирование на калькуляторе. (В случае, если у вас нет программируемого калькулятора, вы можете скачать эмулятор здесь)
Читать дальше →
Total votes 94: ↑90 and ↓4 +86
Comments 83

Information

Rating
Does not participate
Location
New York, New York, США
Registered
Activity