Рубрика «ненормальное программирование» - 85

Часть 1

Дао программирования, часть 2

Книга 4

Кодим

И сказал Великий Программист: «Хорошо написанная программа сама себе Рай. Плохо написанная программа сама себе Ад»

4.1

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

Программа должна следовать правилу «наименьшего удивления». Это значит, что программа должна отвечать на действия пользователя способом, наименее удивительным для него.

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

Если программа не удовлетворяет этим требованиям, это ведёт к беспорядку и путанице. Остаётся лишь переписать её заново.
Читать полностью »

image

Дорогой %username%, если ты решишь сделать свой ЯП(язык программирования), с преферансом и балеринами, или понять некоторые основы работы препроцессора, компилятора и выполнения программы, тебе сюда!

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

EFFE Script — упростить синтаксис C# без потери качества

Здравствуйте. Я программист инди игр. И мне всегда нравилось создавать игры в одиночку (по многим причинам). Так как мой первый язык программирования был C#, я начал делать игры на платформе XNA (сейчас перешел на MonoGame). Однако за два года создания игр я понял, что даже на самом удобном (для меня) языке C# и не сложной платформе XNA мне было сложно писать одному большие инди проекты.

Я не люблю мини игры. Если начинаю делать какую-нибудь игру, то по пути её разработки постоянно добавлял всё больше и больше контента. А чем больше проект, тем дольше его тестировать, дольше искать баги, сложнее следить за добавлением нового контента. Я не хотел тратить много времени на один проект, потому-то был ленив и хочу создать много различных игр. И вот, просматривая код своего проекта, я понял, как выбраться из этой ситуации — создать свой язык программирования.
Читать полностью »

Намедни на RSDN был задан такой вопрос:
Пусть у нас есть функция, возвращающая полиморфный тип

class Base { virtual int foo() const = 0; };
class A : public Base { int foo() const { return 1; } };
class B : public Base { int foo() const { return 2; } };
class C : public Base { int foo() const { return 3; } };
class D : public Base { int foo() const { return 4; } };

Base* getconfig(char cfg) // не будем пока отвлекаться на уборку мусора
{
  switch(cfg)
  {
  case 'a': return new A();
  case 'b': return new B();
  case 'c': return new C();
  case 'd': return new D();
  default: throw std::invalid_argument("bad type");
  }
}

и функция, принимающая его экземпляры

int entry(Base* x, Base* y) { return x->foo()*10 + y->foo(); }

которую используют примерно так

void run(char cx, char cy) { std::cout << cx << cy << " : " << entry(getconfig(cx), getconfig(cy)) << std::endl; }

Можно ли протащить полиморфизм на стадию компиляции?
Читать полностью »

Наверное, каждый, кто использовал JavaScript, когда-либо сталкивался (или столкнётся в будущем) с асинхронными вызовами. Может быть, это будет обращение к базе на стороне сервера. Может быть — работа с таймером для создания анимации на сайте.

Для того, чтобы «побороть» асинхронность, используются разные инструменты от промисов до смены языка программирования. Но иногда очень хочется бросить всё и написать на чистом JS линейный код:

timeout(1000);
console.log('Hello, world!');

Можно ли реализовать нечто подобное? Разумеется, можно.
В данной статье мы рассмотрим один опасный, но действенный способ.
Читать полностью »

Доброго времени суток. В прошлой своей статье я писал о эзотерическом языке программирования ArnoldC.
В этот раз речь будет о языке, основанном на популярном меме про собаку, породы Сиба-ину, Doge.

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

Как мы «дрессировали огненную обезьяну» или наш опыт работы с FMX

Доброго времени суток!

Мы — компания «Сфера системс», и сегодня мы открываем корпоративный блог на Хабре, в котором хотим познакомить вас с нашим проектом «Sphere Live». И, хотя наш проект пока находится в стадии бета тестирования, сейчас уже можно с уверенностью говорить о том, что он состоялся.

Мы планируем поделиться своим опытом создания стартапа, рассказать как об успешных решениях, так и об ошибках. И, конечно же, нам бы хотелось получить ответную реакцию. Мы отнюдь не претендуем на «историю успеха», по крайней мере пока, тем не менее, искренне надеемся, что наш опыт разработки окажется интересным нашим читателям, а их отзывы будут полезны для нас.

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

Проект «Sphere Live» — это мультиплатформенная система организации видеоконференцсвязи с неограниченным количеством участников в форме симметричных и ассиметричных лекций с интегрированной биллинговой системой, функциями файлообмена и облачного хранилища, а также защитой информации о пользователе (переписка, отправленные и переданные файлы, видео- и аудиообщение).

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

Организаторы демопати Chaos Constructions начали сбор средств для проведения очередного мероприятия. Напоминаем, что Chaos Constructions проводится в Санкт-Петербурге и вот уже много лет является крупнейшим компьютерным фестивалем в России, включающим конкурсы компьютерного искусства, выставку ретро-компьютеров, хак-зону и многое другое. Поддержите организаторов рублём!

Деньги можно пожертвовать тут: planeta.ru/campaigns/7679
(от себя добавлю, если жертвуете 256 р. и не ищете славы, то не указывайте свой реальный е-мэйл, планета.ру задолбает своими «письмами счастья»)

Сайт фестиваля здесь: Читать полностью »

Что сложнее: отрендерить сцену со взрывающимися вертолётами или нарисовать унылый график функции y=x2? Да, верно, вертолёты взрывать дорого и сложно — но народ справляется, используя для этого такие мощные штуки, как OpenGL или DirectX. А рисовать график, вроде, просто. А если хочется красивый интерактивный график — можно его нарисовать теми же мощными штуками? Раз плюнуть, наверное?

А вот и нет. Чтобы заставить унылые графики вменяемо выглядеть и при этом работать без тормозов, нам пришлось попотеть: едва ли не на каждом шагу подстерегали неожиданные трудности. Читать полностью »

Баг Y2K по новомуОпытные специалисты помнят о проблеме Y2K, которую все опасались с 1999 на 2000 год. Предполагалось, что во многих программах для хранения даты используется лишь две цифры, так что после 99 наступит 00.

Прошло 14 лет, и древний баг снова проявил себя, но уже другим способом. О глюке сообщило Управление транспортных средств штата Пенсильвания. Сбой произошёл при автоматическом переносе базы данных с примерно 400 000 записями. Записи о мужчинах с 1993 по 1997 годы рождения смешались с записями о людях, которые родились на 100 лет раньше. «Федеральное агентство не могло различить группы людей, потому что использовало две цифры для хранения даты», — говорится в сообщении.
Читать полностью »


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