• Механическая модель электрических цепей
    0
    отличный пример для моделирования: DC-DC преобразователь www.youtube.com/watch?v=yMOFQTCzt2k
  • Мягкое введение в Coq: начало
    0
    Похоже это перевод softwarefoundations.cis.upenn.edu/lf-current/Basics.html
    со скриншотами
  • Регулярные выражения изнутри
    0
    perl -Mre=debug -e'"aaaaaa"=~/(a+)\1/'
    

    а это случайно не бэктрекинг?

    В примере
    perl -Mre=debug -e'"aabbaa"=~/(a+)b+\1/'
    

    помоему все же не классический конечный автомат: его вид динамически меняется в зависимости от того, какой путь ты уже прошел.
  • Регулярные выражения изнутри
    0
    опечатка: δ’(p0, aaax) = δ(δ’(p0, aaa), a) = δ(p5, a) = p4
    надо заменить на δ’(p0, aaax) = δ(δ’(p0, aaa), x) = δ(p5, x) = p4
  • Чем меньше, тем лучше — о возможностях языков программирования
    0
    Мой опыт подсказывает, что если постить что-то очевидное или не меняющее смысл, но улучшающее понятность, то можно и без АИ.
  • Чем меньше, тем лучше — о возможностях языков программирования
    +1
  • Чем меньше, тем лучше — о возможностях языков программирования
    0
    Ничего подобного, в машине Тьюринга огромное количество ячеек памяти, которые можно изменить и вся ее работа состоит из сплошных GOTO.

    Следуя логике статьи конечным идеальным ЯП будет unlambda.
    Там даже от лямбда-абстракции отказались!
    Да что греха таить, даже от переменных/констант!
  • Механическая модель электрических цепей
    0
    Все элементы все равно располагаются на турбинах так же как в статье все располагается на дифференциалах.
    Скорость — это скорость или расход жидкости, который напрямую конвертируется в скорость турбины.
    Потенциал — давление,
    Напряжение — сила или разность давлений, которая напрямую конвертируется в силу, с которой турбина взаимодействует с тем, что к ней прикреплено.
    А турбину считаем идеальной, без трения и проскальзывания жидкости.
  • Механическая модель электрических цепей
    0
    иначе, когда забываешь, что это лажа, начинают возникать вопросы вроде такого
  • Механическая модель электрических цепей
    0
    1.ОК,3.ОК, давай моделировать при с==1.
    2. но моделировать амплитуды синусоидальных сигналов мгновенными величинами (или наоборот) — это какая-то лажа получается.

    Я вот думаю, опять во вращательной механике, но где U — F — момент сил, а I — v — угловая скорость, если взять такую конструкцию
    image
    то она будет описываться уравнением image
    это конечно не то, что нужно но уже ближе.
  • Механическая модель электрических цепей
    0
    А вообще — да, я тупанул конкретно.
    надо так:
    image
  • Механическая модель электрических цепей
    0
    Во первых P1==P2 (если не учитывать перепад высот между поршнями, или не учитывать гравитацию).
    Во вторых в формуле U1/U2=N1/N2 (там где больше витков — там больше напряжение) U1 и U2 — амплитуды синусоидальных сигналов, а я речь веду о мгновенных величинах.
    В третьих формула U1/U2=N1/N2 верна только в том случае, если магнитный поток, проходящий через 1ю катушку полностью проходит и через 2ю, т.е. c(которая в статье)==1 (image).
    Т.е. формула U1/U2=N1/N2 выводится изimage
  • Механическая модель электрических цепей
    0
    и внешние картинки туда загружаются сами собой через некоторое время
  • Механическая модель электрических цепей
    0
    в принципе, это универсальный конструктор, и, наверное, каждую механическую схему, собранную из этого конструктора, можно упростить также как я показал упрощенные примеры для схем с катушкой и трансформатором.
  • Механическая модель электрических цепей
    0
    или не с водой, а любую механическую систему, удовлетворяющую системе ур-й
    image
  • Механическая модель электрических цепей
    0
    мне кажется людям наоборот будет интересно пофантазировать с нелинейными элементами :)
  • Механическая модель электрических цепей
    0
    нет, не подходит. Он удовлетворяет двум независимым ур-ям
    image
    image
    в то время, как нам нужна механическая система, удовлетворяющая системе уравнений
    image
  • Механическая модель электрических цепей
    0
    в самом деле иллюстрации на телефоне не открываются.
    я их вконтакт залил, а сюда ссылки, т.к. habrastorage на geektimes не нашел
  • Механическая модель электрических цепей
    0
    я имел ввиду U — F; I — v
  • Механическая модель электрических цепей
    0
    а меня в 9м классе идея с водой не устроила и я вот это выдумал, кроме трансформатора.
    А сейчас (спустя 7 лет) и трансформатор придумал и вот запостил.

    Вот интересно, знает ли кто-нибудь способ замоделировать трансформатор в модели с водой по трубам?
  • Механическая модель электрических цепей
    +2
    Почему сырая?

    А что с иллюстрациями?
    (последнюю иллюстрацию не ту вставил, теперь поправил)
    я их в paint-е рисовал
  • Ubuntu интегрировали в Windows 10
    –1
    да нет
    cygwin например использует виндовый формат бинарников
    хотя wine так уже делает, но не очень эффективно, так что че-т я погорячился
  • Ubuntu интегрировали в Windows 10
    0
    И большинство из десятков тысяч бинарных пакетов в архивах Ubuntu!

    стоп что?
    винда теперь может запускать разные форматы исполняемых файлов?
    если это так, то это новый виток в эволюции операционных систем
  • Property в C++
    0
    багфикс:
        int x_getter()const{ 
            cout<<"getter "<<_x<<endl; return _x; 
        }
  • Property в C++
    0
    слишком много дополнительных переменных для проперти.
    все смещения можно посчитать и так:
    #include <iostream>
    using namespace std;
    #define this_base(type,member) ((type *)(this - offsetof(type,member)))
    
    class C{
        struct prop_x{
            operator int()const {   
                return this_base(C,x)->x_getter();  
            }
            prop_x & operator=(int xx){ 
                this_base(C,x)->x_setter(xx); return *this; 
            }
        };
        int _x;
        int x_getter()const{ 
            cout<<"getter "<<_x<<endl; return 0; 
        }
        void x_setter(int xx){ 
            cout<<"setter "<<xx<<endl; _x = xx;
        }
    public:
        prop_x x;
    };
    
    int main(){
        C c;
        c.x = 5;
        int q = c.x;
    }

    но лучше в структуру свойства положить какие-то данные, а то 4 байта зря пропадет.
    Но все же интересно, почему offsetof требует standard-layout type, и ругается (варнингом) на non-standard-layout type «C»?
  • Prolog — удивительный язык программирования
    0
    он же императивный, для рисования блок-схем, или я чё-то путаю?
    какое отношение он имеет к логическому программированию?
  • Prolog — удивительный язык программирования
    0
    Пример запроса плюс(0, 0, 0): ответ нет, при первой же попытке все резолюции не выполняются.

    а почему этот запрос не подпадает под
    плюс(0, Число, Число).
    ?
  • Описание и валидация древовидных структур данных. JSON-Schema
    0
    уточнение: схема для всех свойств с ключем, удовлетворяющим RegExp
  • Описание и валидация древовидных структур данных. JSON-Schema
    0
    а позволяет ли JSON hyper-schema проверить строку, что заданный объект документа имеет свойство с именем, равным данной строке?
    так сказать для проверки документа на битые ссылки
  • Описание и валидация древовидных структур данных. JSON-Schema
    0
    да, позволяет:
    patternProperties:{
      "RegExp":{
        title:"схема для всех объектов с ключем, удовлетворяющем RegExp"
      }
    }
    
  • Описание и валидация древовидных структур данных. JSON-Schema
    0
    string — ключ
    value — значение
    разве нет?
  • Описание и валидация древовидных структур данных. JSON-Schema
    0
    JSON ведь позволяет использовать объекты как ассоциативные массивы.
    позволяет ли JSON-schema по паттерну проверять ключи?
  • Как писать парсеры на JavaScript
    0
    <book attr1="..." attr2="..." очень много атрибутов ???
    

    То в том месте где стоит ??? может оказаться как /> так и просто >. Теперь если LL парсер пытался всё это распарсить как <book ...> а на месте ??? оказался />, то парсер отбросит всё то что он так долго парсил и начнёт заново в предположении, что это <book .../>
    В этом случае можно парсить в 2 прохода: на первом генерировать массив токенов, которыми будут текст и теги (открывающий, закрывающий, самозакрывающийся), а на втором строить дерево.
    При чем на втором проходе можно применять те же Pattern, opt, exc, any, seq, rep, изменятся только терминальные методы
  • Как писать парсеры на JavaScript
    0
    а за чем вы делаете так
    var char = rgx(/[^"&]/i);
    rep(char).then(r => r.join(''))
    

    а не так
    rgx(/^[^"&]*/i)
    

    ?

    И еще надо не забывать регекспы начинать писать с ^

    спасибо за статью, метод then очень понравился
  • Как писать парсеры на JavaScript
    0
    regexp.exec(str.slice(pos))
    

    а в данном случае не произойдет копирование части строки?
    в принципе строки менять нельзя, так что теоретически возможна работа slice без копирования…
  • Дизайн и эволюция языка С++: выдержки
    +1
    Вот интересно, почему операторы (кроме operator=() ) можно объявлять (и определять) вне классов, а методы нельзя?
  • Способ написания синтаксических анализаторов на c++
    0
    а кто в случае неудачи будет итератор на исходную позицию возвращать?

    т.е. это не магия, которая все делает за тебя, а всего лишь укорачивание синтаксиса
    base_parse_error err;
    auto it1=it;
    ifnot(err=read_expr1(it,...))
        goto met;
    ifnot(err=err&&read_expr2(it,...)
        goto met:
    ifnot(err=err&&read_expr3(it,...)
        goto met:
    return err;//err==true
    met:
    it=it1;
    return err||read_expr4(it,...);
    

    большинство && и || с error-ами для base_parse_error бессмысленны, но если это error-ы, другого типа, например, сообщения об ошибках, то && и || становятся осмысленными

    кстати это аналог
    return reifnot_E(it,read(it)>>expr1(...)>>expr2(...)>>expr2(...))
    ||E2F(read_expr4(it,...));
    

    — в конце reifnot можно не делать, его сделает вызывающая функция
  • Способ написания синтаксических анализаторов на c++
    0
    Вот, теперь вообще идеально:
    return reifnot_E(it,read(it)>>expr1(...)>>expr2(...)>>expr2(...))
    ||reifnot_E2F(it,read_expr4(it,...));
    

    Функция read(it) возвращает пару (итератор, ошибка), унаследованную от ошибки.
    Для каждой функции read_something_xyz(it_t & it, A a, B b, C c) макрос DECLARE_SHORT_READING_N(something_xyz,something_xyz111) (N — кол-во аргументов без it) определет функцию something_xyz(A a, B b, C c), которая возвращает функциональный объект something_xyz111(it_t & it).
    А operator>> берет пару-итератор-ошибка и функ. объект, по ошибке определяет стоит ли вызывать функ. объект, и если стоит, то его результат присваивается в ошибку, после чего возвращается пара-итератор-ошибка.

    А если хочется что-то сделать с ошибкой, возвращаемой функ-объектом, то вот макрос на лямбда-функции
    #define METHOD(it,fun,met)	[=](decltype(it) & it){	return fun(it).met;	}
    
  • Способ написания синтаксических анализаторов на c++
    0
    Основная проблема в том, что short circuiting работает только с bool.
    Но это решается лямбда-функциями и макросами, и теперь можно вызывать так:
    return reifnot_E(it,read_expr1(it,...)&&E2F(read_expr2(it,...))&&E2F(read_expr2(it,...)))
    ||reifnot_E2F(it,read_expr4(it,...));
    

    E2F превращает выражение в функцию без аргументов, а оператор && на основе левого аргумента уже решает, вызывать ее или нет.
    Но все равно как-то неказисто да?
  • Способ написания синтаксических анализаторов на c++
    0
    а вот пример, когда компилятор между классом и функцией предпочитает функцию:
    #include <iostream>
    using namespace std;
    struct foo{
    public:
      foo(int i){
        cout<<"type"<<endl;
      }
      int operator+(int){
        cout <<"foo+int"<<endl;
        return 2;
      }
    };
    int foo(int i){
      cout <<"fun"<<endl;
      return 1;
    }
    int main(){
      cout << (foo(5)+4) <<endl;
    }