1. Java / Говнокод #26055

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    /**
         * Four state boolean.
         */
        enum Bool {
            /** */
            FALSE,
    
            /** */
            TRUE,
    
            /** */
            READY,
    
            /** */
            DONE
        }

    Запостил: MAKAKA, 27 Ноября 2019

    Комментарии (23) RSS

    • Four state boolean.
      Ответить
      • Какие операции определены над таким типом? Как будет выглядеть конъюнкция и дизъюнкция для такого булина?
        Ответить
        • через битовые операции же
          Bool.READY == Bool.FALSE & Bool.TRUE
          Ответить
        • Обычно для k-ичной логики & - это min, | - это max
          Ответить
          • А отрицание?
            Ответить
            • Помню были 2 типа инверсий. Одна из них "инверсия Лукасевича", одна из них ~x = (x±1)%k. Но сейчас нихуя не могу нагуглить.
              Ответить
              • Лукасевич разрабатывал троичную логику.

                При попытке расширить двоичную логику создали много всякой разной питушни:
                1. Нечёткую логику.
                2. Многозначную логику (в частности, троичную).

                Вот для старта поиска:
                https://ru.wikipedia.org/wiki/Неклассическая_логика
                Ответить
    • Uninitialized, true, false, weak true, weak false, unknown, weak unknown, high impedance как в vhdl.
      Ответить
      • Высокий импеданс логичен для железа
        А остальное зачем?
        Ответить
        • Слабые сигналы - эмуляция pull up/down резисторов (сильные сигналы их перебивают, если подключены на тот же провод). Uninitialized для тестов чтобы баги с кривым состоянием после сброса ловить. Unknown вроде тоже для тестов, чтобы показать что сейчас на проводе хуйня.
          Ответить
          • Кстати, у цифровых микросхем ещё и уровни 0 и 1 зависят от серии.

            Например, для ТТЛ российской серии К155 и зарубежной 74 напряжение на входе до 0,8 В считалось нулём, от 2,0 В — единицей, а между 0,8 В и 2,0 В располагалась зона с неопределённым состоянием. Если на вход подать напряжение в интервале 0,8..2,0 В, то на выходе может быть ноль, может единица, а может и вообще аналоговый сигнал.

            У более поздних серий (с диодами Шоттки: 74F, 74ALS, K1531, K1533) неопределённую зону сузили. Они напряжение выше 1,5 В считают единицей, а ниже 1,5 В — нулём.

            На выходе же ТТЛ-микросхемы могут выдавать в качестве единицы 2,5 В вместо 5 В, т. е. половину напряжения питания.

            Высокий импеданс на входе в ТТЛ считается единицей.

            У КМОП-микросхем (74HC, K176) всё более чётко: на выходе нулю и единице соответствуют ноль и напряжение питания соответственно, на входе же нулём считаются напряжения до 0,05 В, а единицей — выше (Uпит - 0,05В). Всё, что между этими границами, — неопределённая зона.

            Высокий импеданс на входе в КМОП считается нулём.

            А есть ещё ЭСЛ. Их использовали, когда КМОП ещё не поддерживали высокую частоту переключения. Сейчас ЭСЛ почти не используют, потому что они потребляют много лепестричества даже на холостом ходу. У ЭСЛ тоже была неопределённая зона, причём не совпадающая ни с ТТЛ, ни с КМОП.

            Теперь представь себе, как работает схема, в которой вперемешку стоят микросхемы ТТЛ и КМОП. Не хочешь UB — используй триггер Шмитта.
            Ответить
      • Кокое же говно эти ваши HDL-и, попались тут сорцы на AHDL, вроде слова все знакомые и синтаксис не сложный, а что происходит — нихуя не понятно...
        Ответить
        • Слушай, по каким районам ты ходишь, что тебе попадаются сорцы «AHDL». Я тут хожу, максимум «PHP» нахожу.
          Ответить
    • https://forum.mista.ru/topic.php?id=684211
      Ответить
      • 2=Истина    Нет
        1=Истина    Да
        0=Истина    Нет
        
        2=Ложь    Нет
        1=Ложь    Нет
        0=Ложь    Да


        Круто. 2 — это не истина, но и не ложь.
        Ответить
      • Ебать там наркоманы!
        Ответить
        • Булево в восьмерке (как и не в восьмерке) бывает и о трех значениях

          Истина
          Ложи
          Не ложь



          Не ложь, а клади
          Ответить
    • А если перевести на PHP, то можно возвращать истину, ложь или, в случае неудачного исполнения, строку - сообщение об ошибке.

      А в C# можно использовать "bool?".
      Ответить
      • Именно поэтому я за «PHP».
        Ответить
      • Можно, но это небось неявно превратит его в референс тайп из валуева типа.
        Ответить

    Добавить комментарий