Search
Write a publication
Pull to refresh
47
0
Валерий @kharvd

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

Send message

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

Reading time13 min
Views10K

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

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

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

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

Это самые основы функционального программирования: функции — единственное, что у нас есть. Давайте попробуем написать что-то более похожее на реальный код в таком же стиле. Посмотрим, как далеко мы сможем зайти без особых мучений.
Читать дальше →

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

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

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

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


Давайте теперь посмотрим на простой пример использования виртуальных функций в C++
Читать дальше →

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

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

Я очень нетерпеливый разработчик: я очень не люблю компилировать и долго разбираться с пакетами. Когда я использовал виртуальную машину, мне пришлось серьезно повозиться с Mutter, поэтому я решил перейти на Fedora. Это позволило мне взглянуть на всё по-новому, поскольку я долгое время использовал Ubuntu.
Читать дальше →

Релиз Qt Creator 2.2

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

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

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

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

Reading time4 min
Views1.2K
imageТермин «свободное ПО» может иметь разное значение, в зависимости от того, с какой стороны вы на него смотрите. Для многих, в частности для меня и большинства читателей моего блога, свободное ПО означает открытый исходный код. Для мира в целом это понятие имеет совершенно другое значение.
Читать дальше →

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

Reading time1 min
Views868
Сегодня в блоге Qt Labs было сообщено о выходе первой бета-версии IDE Qt Creator 2.2. Релиз был назван в честь умершего белого медведя Кнута (Knut Creator). Помимо множества багфиксов в бету было добавлено несколько серьезных улучшений, в частности поддержка системы управления версиями Bazaar, сниппеты кода, улучшенный дебаггер.
Читать дальше →

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

Reading time2 min
Views915
image
[Мой перевод предыдущей статьи Рафаэля]
Не знаю, как вы, но когда я только начал использовать свободное ПО, я был поражен, что мог пользоваться всеми этими программами бесплатно. И через несколько месяцев решил найти способ чем-нибудь отплатить. Это было 13 лет назад… и вплоть до сегодняшнего дня я все еще активный разработчик Debian :-)
Читать дальше →

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

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

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

Вместе с Ubuntu 11.10 на CD также будет поставляться Unity 2D для тех людей, железо которых не позволяет использовать 3D версию, а также Qt, что, как утверждает Шаттлворт, “даст разработчикам еще больше возможностей для создания интерфейсов, которые как функциональны, так и эстетически привлекательны”

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

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

Это непростой вопрос, на который нет ответа, который удовлетворил бы каждого. Все зависит от того, каков ваш стимул для участия в разработке.
Читать дальше →

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

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

Некоторое время назад я нашел у себя в кладовке старый «Электроника МК-61», принадлежавший моему папе. Естественно, я не мог упустить такой шанс освоить не совсем «стандартное» программирование на калькуляторе. (В случае, если у вас нет программируемого калькулятора, вы можете скачать эмулятор здесь)
Читать дальше →

Information

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