Рубрика «Программирование» - 1087

Посмотрев конференцию GoingNative 2012 решил попытаться описать «best practice» для написания программ в стиле C++11. Планируется цикл статей, кому интересно, auto articlesIterator = articles.begin();
Читать полностью »

Одним из наиболее заметных дополнений в C# 4 является dynamic. Об этом рассказано много и не раз. Но всегда выпускается из виду DLR (Dynamic language Runtime). В данной статье мы рассмотрим внутреннее устройство DLR, работу самого компилятора, а также дадим определение понятиям статически-, динамически- типизированный язык со слабой и сильной типизациями. И, конечно же, не останется без внимания техника PIC (Polymorphic Inline Cache), используемая, например, в Google V8 engine.
Читать полностью »

Entropy — Неточный язык программирования В комментариях к недавнему посту про неточный процессор, читатель lol2Fast4U привел ссылку на интересный язык программирования — Entropy.

Суть этого языка в том, что в нем отсутствует детерминированность.

Каждый раз, когда мы обращаемся к каким-либо данным, они искажаются все больше и больше.

Казалось бы, смысл создания этого языка — весьма сомнителен. Но на деле, этот подход может быть полезным для эмуляции как раз тех самых неточных процессоров, о которых идет речь в вышеуказанном посте.

Сами понимаете, что подход к программированию в такой среде должен быть принципиально иным.
Читать полностью »

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

F# Хвостовая рекурсия. Подводные грабли. Часть 1
Винни Пух: Ой, что это случилось с твоим хвостом?
Иа: А что с ним могло случится?
Винни Пух: Его нет.
Иа: Ты не ошибся?
Винни Пух: Хвост или есть или нет совсем! Тут нельзя ошибиться.
Иа: А что же тогда там есть?
Винни Пух: Ничего!

У нас в проекте, в одном из серверных компонентов, после очередного рефакторинга начала течь память. Казалось бы .NET, F#, менеджед код, сборка мусора, все дела, но память, куда-то утекала. Ценой бессонных ночей и попорченных нервов, источник утечки был найден. Оказалось что проблема вызвана куском кода, который был, чуть ли не один к одному скопирован из учебника по F#.

Все дело было в хвостовой рекурсии, вернее, как оказалось в ее отсутствии в неожиданных местах.
Читать полностью »

Искусство каррированияВ недавней статье предложена реализация каррирования (currying) и частичного применения (partial function application) на PHP. Ее фундаментальным недостатком является то, что результатом каррирования является не функция, а объект. Он уже не может быть передан в качестве callback-параметра, а для подстановки аргументов приходится использовать специальный синтаксис. В настоящем тексте предлагается новая, прозрачная реализация этих конструкций для PHP 5.3 и выше.

Термин currying происходит от фамилии американского математика Haskell Curry. Второе значение слова currying — выделка дубленой кожи.

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

Эмуляция каррирования и частичного применения на PHP — это один из примеров того, что Макконнелл в «Совершенном коде» (гл. 4.3) называет программированием с использованием языка, а не на языке.
Читать полностью »

Искусство каррированияВ недавней статье предложена реализация каррирования (currying) и частичного применения (partial function application) на PHP. Ее фундаментальным недостатком является то, что результатом каррирования является не функция, а объект. Он уже не может быть передан в качестве callback-параметра, а для подстановки аргументов приходится использовать специальный синтаксис. В настоящем тексте предлагается новая, прозрачная реализация этих конструкций для PHP 5.3 и выше.

Термин currying происходит от фамилии американского математика Haskell Curry. Второе значение слова currying — выделка дубленой кожи.

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

Эмуляция каррирования и частичного применения на PHP — это один из примеров того, что Макконнелл в «Совершенном коде» (гл. 4.3) называет программированием с использованием языка, а не на языке.
Читать полностью »

Будни разработки Open Source проекта
На недавно прошедшей конференции Application Developer Days 2012 мне довелось прочитать коротенький доклад о том, как создаются Open Source проекты на примере OpenVZ Web Panel. К сожалению, у меня было 10 минут, вместо положенных 30-40 и в результате 80% подготовленного материала оказалось “за бортом”. Организаторы, почему-то в последний момент передумали и убрали даже 5-минутную секцию с вопросами, так что остался без фидбэка. Но не буду сильно наезжать на организаторов — они старались как могли и конференция явно удалась, за что им огромное спасибо. Также очень порадовало и качество большинства докладов.

Будни разработки Open Source проекта
Теперь к сути топика — хочу выложить полную версию рассказа о том, как создаются Open Source проекты на примере собственного начинания, поделится мыслями и взглядами на разработку подобных проектов, рассказать о внутренней кухне, попробовать предостеречь от типичных ошибок.
Читать полностью »

При вёрстке дипломной работы в LaTeX настал этап приведения её вида в соответствие хотя бы некоторым принятым стандартам. Соответственно, начались и поиски решения возникавших вопросов, в том числе стандартными средствами, то бишь путём гугления.

Первая мысль, возникшая после просмотра решений, найденных на разношёрстных форумах — «Я же не усну». Немного размышлений и оперативное пролистывание небезызвестных руководств Балдина, Сюткина и Львовского, подтвердивших результаты размышлений, позволили разобраться с вопросами гораздо более компактными, удобными и воспринимаемыми способами.

Читать полностью »

Донбасс Арена на рабочем столе

В преддверии Евро 2012 решил написать программу, устанавливающую на рабочий стол изображение из веб-камер Донбасс Арены.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js