Евгений Темиргалеев писал(а):
КАК без ПОЧЕМУ не "много лучше", а почти также плохо
Ну хорошо. А как по Вашему должно выглядеть это понимание. Предложите - ЧТО ДОЛЖЕН ПОНЯТЬ РАЗРАБОТЧИК, касаемо этой конкретной задачи.
И после этого можно будет делать выводы, что более понятно, а что менее.
Давайте разберемся по- честному. Сказать "
а почти также плохо" можно практически всегда. Да не "практически", а вообще - всегда. Только смысла у такой предположительной беседы - нет никакого.
Вот как я себе этот процесс представляю (у меня есть уже разные этой задачи, но я буду говорить конкретно про то, чего сегодня уже имеет серьезную наработку в эксплуатации):
- У меня есть некий датчик - два вышеописанных сигнала
- Собрана некая апаратная поддержка (4 корпуса рассыпухи), добавляющая еще 4 бита к подсчету
- И вот внутри программы у меня есть возможность принять вышеозначенные 6 битов, и моей локальной задачей является: по результатам регулярного (16КГц) анализа этих 6 битов получить, скажем, INTEGER (мне правда достаточно Int24) со смыслом реальной физической координаты чего-там, к чему датчик физически и закреплен.
Простая задача, и я ее разбиваю на последовательность еще более простых шагов. Это все еще платформонезависимо. Но далее начинается кодинг (а программирование - это то, что было перед этим). Мы эти "еще более простые шаги" превращаем в код на конкретном языке. И пытаемся сравнивать языки по возможности стороннего коллеги отгадать эти "еще более простые шаги".
Если коллега сразу это "отгадывает" - этот язык очень удобен для инженерного применения.
Если это вызывает напряжение - непригоден.
Ну или мы делаем предложение по совершенствованию языка. Например, по введению новых сущностей, поскольку необходимось (без которой Окамм запрещает введение таковых) продемонстрирована. Или понимание кода не является необходимостью
Далее, я просто записываю эти "еще более простые шаги" как я их понимаю. Возможно, они могут быть другими - так скажите какими.
Тогда в обсуждении появится логика. Чего и хотелось бы.
А не соревнование - "чья религия более продвинута". Чего НЕ хотелось бы.
Вот они, эти "атомы":
- "Нормализуем" эти 6 битов. Просто функциональное преобразование - ничего более. Эту функцию (XOR) для младшего бита я и записал. Остальные биты не меняются.
- Выделяем 6 младших битов из предыдущего значения счетчика (который INTEGER)
- Вычисляем 6-битную разность нормализованных 6 битов (по п.1), и младших 6 битов счетчика (по п.2)
- Делаем знаковое расширение этой 6-битной разности (по п.3). Т.е., бит_5 распространяем влево "до упора". Получится INTEGER.
- Прибавляем к предыдущему значению счетчика нашу разность (по п.4)
- ВСЕ
Было бы интересно послушать - в чем я (возможно) неправ, сделавши именно такое разбиение задачи. Ну или - описавши это разбиение именно такими словами.
И заодно можно протестировать "на понимаемось" соответствующий код на Обероне
А то как говорить, что нет ничего понятнее Оберона - вот они мы все
Как бы я сильно и не спорю.
Но проверять на деле - тоже иногда полезно.
Настаиваю на полезности такового мероприятия. Много нового узнать можно