Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Geniepro

Страницы: 1 2 [3]
31
Общий раздел / Переводы Дейкстры
« : Июль 25, 2012, 06:58:31 am »
Плоды непонимания
The fruits of misunderstanding. EWD854.

Цитировать
Такое впечатление, что некоторые вещи возможны только в мире ИТ (computing). Объявлено о разработке новой продукции, и все глотают слюни в предвкушении её увидеть. Но, когда продукция готова, люди начинают пользоваться ею и видят, что она самым бесстыдным образом не способна выполнять своё предназначение. Это значит провал, и это должно быть ясно каждому. Даже в голове не укладывается такое развитие событий: все забывают о первоначальной цели и считают продукцию удачной. Читать далее

32
Общий раздел / ещё про цикл дейкстры
« : Июль 20, 2012, 05:23:07 am »
На вражеском форуме новая тема про ЦД: http://forum.oberoncore.ru/viewtopic.php?f=82&t=4027
Там у Ермакова получился запутанный и глючный ЦД, походу он его ни разу не тестировал.
А вот что вышло бы на хацкеле, идеально подходящем для подобных задач по обработке текстов:
calc_stat = map length . groupПолный пример:
module Main

import Data.List

pasports = [ "123", "123", "234", "345", "345", "345" ]

calc_stat :: (Eq a) => [a] -> [Int]
calc_stat = map length . group

main = do
    print $ calc_stat pasports
Main> :main
[2,1,3]

ЗЫ. WinHUGS не может понять тип функции calc_stat, для него пришлось указать. GHCi понимает без проблем.
Впрочем, для глобальных функций всё равно принято специфицировать типы...

33
Модульного тестирования недостаточно. Вам также нужна статическая типизация
http://it-talk.org/post79170.html
Перевод записи в блоге: «Unit testing isn't enough. You need static typing too». (Evan Farrer)

"Заключение

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

34
Общий раздел / Мультиклет
« : Июль 10, 2012, 11:39:14 am »
http://www.multiclet.com/
Мильтиклеточные процессоры -- по сути сверхмощные микроконтроллеры.
Российская разработка, уже можно купить (в районе $15 за камень) -- произведено 10 тыс. шт.
Вот для них надо какой-то новый язык программирования, заточенный под эту модель вычислений мультиклеточную, а они там компилятор Си сделали...

36
Какие есть соображения на эту тему? Оно делается как в старых добрых сях или как-то более цивильно?

Всякие левые GTK не хотелось бы, ибо не родной лук'энд'фил и вапще неизвестно, как там с надёжностью...

37
Баловство с препроцессором -- немного оффтопик на Оберон-форуме, но позволяет продемонстрировать, как за счёт простейших сишных макросов можно не только симитировать цикл Дейкстры, но и повысить надёжность софта за счёт автоматизации построения некоторых специализированных структур управления.

Вот, предположим, нужно, что бы в некоей процедуры куски кода выполнялись поочерёдно при каждом вызове этой процедуры, причём эти куски кода нежелательно выделять в отдельные процедуры, поскольку сами по себе они большого смысла не имеют.
В сях это можно изобразить примерно так:
void test(void)
{
    static int step = 0;

    switch (step++)
    {
    case 0:
        printf("step 0\\n");
        break;

    case 1:
        printf("step 1\\n");
        break;

    case 2:
        printf("step 2\\n");
        break;

    case 3:
        printf("step 3\\n");

    default:
        step = 0;
        break;
    }
}

void main(void)
{
    int i;
    for (i = 0; i < 10; i++)
    {
        test();
    }
}

step 0
step 1
step 2
step 3
step 0
step 1
step 2
step 3
step 0
step 1

Проблема: нужно вручную помечать номер каждого шага в "case x:" (а их может быть немало, легко обсчитаться).

Решение проблемы: сделать макросы, иммтирующие новую языковую конструкцию, которые возьмут на себя эту рутину.

valeksey предложил такой вариант:
#define FIRST(code)  { int flag = 0; static int i = 0; if (i==0) { { code }; flag = 1; }
#define NEXT(code)   if (!flag && i == __LINE__) { { code }; flag = 1; } else if (flag == 1) { i = __LINE__; flag=2;}
#define LAST(code)   if (!flag && i == __LINE__) { { code }; i    = 0; } else if (flag == 1) { i = __LINE__; } }

void test(void)
{
    FIRST
    (
        printf("step 0\\n");
    )
    NEXT
    (
        printf("step 1\\n");
    )
    NEXT
    (
        printf("step 2\\n");
    )
    LAST
    (
        printf("step 3\\n");
    )
}

Это решение меня смутило количеством if-ов и не вполне очевидной логикой работы, поэтому я сделал такой вариант:
#define FIRST(var) { static int STEPPER_##var##step = 0; switch (STEPPER_##var##step) { case 0:
#define NEXT(var)  STEPPER_##var##step = __LINE__; break; case __LINE__:
#define END(var)   default: STEPPER_##var##step = 0; break; } }

void test(void)
{
    FIRST(some_id)

        printf("step 0\\n");

    NEXT(some_id)

        printf("step 1\\n");

    NEXT(some_id)

        printf("step 2\\n");

    NEXT(some_id)

        printf("step 3\\n");

    END(some_id)
}

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

38
Общий раздел / Itsy-OS Kernel
« : Март 31, 2011, 07:10:27 am »
Itsy-OS Kernel: Premptive Switcher & Memory Manager

Цитировать
Itsy-OS v0.1 is a small 8086 operating system kernel providing two basic services: a simple preemptive task switcher and memory management. If necessary, simple IPC and task management can be added to provide the features of a traditional microkernel.

Weighing in at about 380 bytes, Itsy should port well to tiny architectures.

Как я понял, это ядро только для 16-битных программ.

39
Общий раздел / Оберон-конференция на jabber
« : Февраль 17, 2011, 08:40:12 am »
Не напомните, где оно там, какие адреса и явки?
А то оберонкор не отвечает, не могу посмотреть там...

Страницы: 1 2 [3]