Обновить
1144.22

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

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

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

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

Время на прочтение4 мин
Количество просмотров13K
С удивлением обнаружил, что в интернете не было перевода на русский довольно забавной статейки, написанной неким Rodrigo Braz Monteiro, в которой он сравнивает языки программирование и религии. Поэтому пришлось делать перевод самому, который ниже и прилагается.

Автору написание этой статьи навеяло сравнение языков программирования с автомобилями(оригинал), а мне это навеяло перевод…

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

Криптографический язык программирования в открытом доступе

Время на прочтение1 мин
Количество просмотров3.7K
Компания Galois, занимающаяся созданием и разработкой различного ПО, недавно объявила в своем блоге о том, что криптографический язык программирования Cryptol, изначально закрытый, теперь доступен любому желающему.

Созданный для Агенства Национальной Безопасности США, Cryptol является предметно-ориентированным языком программирования и служит инструментом создания дизайна, реализации и верификации криптографических алгоритмов. Разработка не является новой — на Криптоле было написано несколько крупных проектов, а в настоящем времени ведется разработка в корпорации Rockwell Collins.

Cryptol портирован под Windows, Mac и Linux и доступен для скачивания в триальной, ознакомительной, версии. Она включает в себя интерпретатор, документацию и примеры. А вот для того, чтобы получить полную версию — придется написать разработчикам и убедить их в необходимости выдать вам полнофункциональный Cryptol.

Оригинальный пост в блоге.

Galois Blog via Slashdot

Обзор LLVM

Время на прочтение13 мин
Количество просмотров87K
LLVM (Low Level Virtual Machine) — это универсальная система анализа, трансформации и оптимизации программ или, как её называют разработчики, «compiler infrastucture».

LLVM — не просто очередной академический проект. Его история началась в 2000 году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X 10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает в Apple.

В основе LLVM лежит промежуточное представление кода (intermediate representation, IR), над которым можно производить трансформации во время компиляции, компоновки (linking) и выполнения. Из этого представления генерируется оптимизированный машинный код для целого ряда платформ, как статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.

LLVM написана на C++ и портирована на большинство *nix-систем и Windows. Система имеет модульную структуру и может расширяться дополнительными алгоритмами трансформации (compiler passes) и кодогенераторами для новых аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и использует C++ API для генерации кода и его преобразований. Однако LLVM включает в себя и standalone утилиты.

Для тех, кто не без оснований считает C++ не лучшим языком для написания компиляторов, с недавних пор в LLVM включена обертка API для OCaml.

Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся работать, давайте разберёмся,
что из себя представляет LLVM IR.

C++/CLI — «клейкий» язык

Время на прочтение5 мин
Количество просмотров42K
В этом топике я расскажу про C++/CLI — промежуточный язык для склеивания кода на C/C++ и .NET

Это довольно распространённая задача, ведь на C/C++ написаны тонны проверенного временем высокопроизводительного кода, который невозможно переписать на управляемые языки.

Наша задача — обеспечить .NET-интерфейс к этим библиотекам. Но как это сделать, если они написаны на C/C++?

Microsoft предлагает два варианта решения проблемы.
 
Читать дальше →

Оптимизация хвостовой рекурсии в .NET и Nemerle

Время на прочтение14 мин
Количество просмотров6.6K
Недавно chiaroscuro написал провокационную статью с жёлтым заголовком «Почему циклы должны умереть». Её обсуждение заняло около 180 комментариев, но сама статья ушла в минус и не попала на главную, не смотря на то, что она содержала здравую мысль об использовании рекурсии вместо циклов.

В этой статье я дополню его пост и приведу примеры реализации на одном из лучших языков под .NET — Nemerle, а так же сделаю холиварное заявление о преимуществе .NET перед Java.

Я соглашаюсь с тем, что данная статья распространяется на условиях CC-NC-BY

Болезнь, Nemerle

Время на прочтение3 мин
Количество просмотров8.9K
imageNemerle — язык под .NET, который поддерживает три парадигмы программирования: та, которую большинство программистов считает за ООП парадигму, функциональную парадигму (алгебраические типы данных, pattern-matching) и метапрограммирование (АОП, квазицитирование, расширение синтаксиса самого nemerle через макросы a-la lisp ). Все это положено на рельсы строгой статической типизации и приправлено мощной системой вывода типов.

Читать далее...

Стоимость программирования

Время на прочтение2 мин
Количество просмотров2.3K
Не видел никогда на хабре ни каких цифр о стоимости проектов. И всвязи с некоторыми событиями, мне стало интересно узнать хотя бы порядок этих цифр. Я с небольшой командой подрабатываю написанием сайтов, и похоже называю заказчикам через чур завышенные ценники.

Вот например была задача написать сайт дилеру BMW.
Читать дальше →

Для начала или вводный курс в эзотерический язык

Время на прочтение3 мин
Количество просмотров2.7K
Это конечно же хобби, хотя...

Brainfuck придуман Урбаном Мюллером в 1993 году, в основном для забавы. Уникальный, вполне себе интересный Тьюринг-полный язык программирования с размером компилятора в 240 байт! В нём используется всего лишь 8 команд, каждая из них записывается одним символом. Программа на языке Brainfuck представляет собой последовательность этих самых команд.

Машина, которой управляют команды Brainfuck, состоит из упорядоченного набора ячеек и указателя текущей ячейки, получается что-то вроде стека и смещения в нём. Так же реализована возможность механизма ввода-вывода, далее будет понятно на примере.
Читать дальше →

Чистые функции

Время на прочтение2 мин
Количество просмотров16K
Чистые функции имеют ряд интересных и полезных свойств. Всё просто. Они зависят только от своих параметров. И возвращают только свой результат. В языке программирования D возможно следующее:
  • Нельзя писать в глобальную переменную. Или в переменную, которая стала персистентной вне этой функции.
  • Такие переменные не могут быть прочитаны, пока они не станут инвариантными. Под инвариантностью имеется в виду неизменяемость.
  • Чистые функции могут вызывать только чистые функции.
  • Параметры в чистых функциях могут быть неизменяемыми. При этом вызов к такой функции не может быть кеширован или вызван асинхронно, если параметры ссылаются на изменяемые данные.
  • Чистая функция может вызывать исключение.
Читать дальше →

Игровое программирование в Light Bot

Время на прочтение1 мин
Количество просмотров3.3K
Light Bot — забавная браузерная игра на флеше, где вам необходимо запрограммировать своего бота на выполнение простой задачи: дойти до цели минуя все препятствия.
Читать дальше →

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

Фридрих Энгельс и язык программирования С++

Время на прочтение2 мин
Количество просмотров1.3K
Не так давно я вспоминал старые времена в статье «История одного программиста или путь от простого до точки» (части первая и вторая). По мере написания вспоминались многие забавные и не очень вещи, которые случались в прошлом. Об одной из таких вещей я и хотел рассказать.

Казалось бы, какая связь может быть между Фридрихом Энгельсом и языком С++. Я тоже и подумать не мог что такая связь минимальная, микроскопическая, но в нашем огромном мире все-таки существует. Чтобы узнать больше — проследуйте под кат. Но предупреждаю, под катом десяток ссылок на фотографии.
Читать дальше →

О комментариях в коде

Время на прочтение1 мин
Количество просмотров701
Комментарии в своём коде нужно писать не для себя, а для человека, который этот код увидит впервые. Потому что очень скоро этим человеком станешь ты сам.
Читать дальше →

Программистская шутка к празднику

Время на прочтение1 мин
Количество просмотров2.9K
В мире есть только 10 категории людей — это те, кто понимает двоичный код и те, кто его не понимает.

С праздником всех, кто понял шутку!
Читать дальше →

День программиста

Время на прочтение1 мин
Количество просмотров1.3K
Завтра, 12 сентября, будет День программиста — неофициальный праздник программистов, отмечаемый на 256-й день года. Число 256 (два в восьмой степени) выбрано потому, что это количество чисел, которые можно выразить с помощью одного байта. В високосные годы этот праздник попадает на 12 сентября, в невисокосные — на 13 сентября.


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

История одного программиста или путь от простого до точки. Часть вторая, заключение

Время на прочтение11 мин
Количество просмотров3.6K
no speed limit

Это вторая и заключительная часть. Рекомендую ознакомится с началом, чтобы не потерять нить повествования.

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

История одного программиста или путь от простого до точки

Время на прочтение8 мин
Количество просмотров4.2K


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

ТОП 10 самых раздражающих факторов для программиста

Время на прочтение5 мин
Количество просмотров16K
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…

ТОП 10 самых раздражающих факторов для программиста


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

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