Вопрос на засыпку. А зачем? я же и говорю, что не стесняюсь использовать if там где это оправданно. Такая связка в виде сущности кроме этого блока нигде не понадобится. Никогда. Зачем усложнять объект, создавая ненужную сущность. Почему Вы истинные программисты так боитесь тех же If -ов. Зачем на каждый чих создавать новый класс. Мой инженерный подход говорит мне что любую задачу можно решить милионом путей от безумно красивого но долгого до абсолютно костыльного но очень быстрого, а исскуство инженера - конструкторас найти золотую середину в решении каждой задачи, используя компромисы, и различные подходы. Вас же почему то тянет всегда на первый путь. Я в свое время был неплохим конструктором.
-- вторник, 13 января 2015 г., 17:01:59 UTC+5 пользователь Kleptsov Nikolay написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Сергей Глушенко
В общем-то, здесь все на if-ах и сделано :) -- Best regards, Dennis Schetinin 13 января 2015 г., 16:04 пользователь Сергей Глушенко <[hidden email]> написал: Конечно -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Dennis Schetinin
Попробую еще раз объяснить. Тут нет необходимости создавать сущности. Нигде кроме данного класа они не потребуются. Я считаю класс нужно создавать только с целью его переиспользования, или если его применеие действительно облегчит жизнь. Я не вижу облекчения жизни в создании коллекции элементов состоящих из двух - трех переменных и одного метода. Лично для меня нагляднее примененный мной метод. Я сразу вижу все условия корректности модуля. Вложенности более одного уровня нет. Не надо плодить ненужные сущности. Они загромождают класс браузер, и мешаются по ногами эти мелкие твари. вторник, 13 января 2015 г., 17:14:25 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Сергей Глушенко
13 января 2015 г., 16:16 пользователь Сергей Глушенко <[hidden email]> написал: Вопрос на засыпку. А зачем? У меня есть штук 5 вариантов ответа на этот вопрос, но наверное будет некорректно влезать перед автором рац. предложения :) Еще вопрос: метод isCorrect и подобные (я, так понимаю, они есть) с развитием системы уже никогда не будут больше меняться? -- Best regards, Dennis Schetinin -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Сергей Глушенко
13 января 2015 г., 16:23 пользователь Сергей Глушенко <[hidden email]> написал: Нигде кроме данного класа они не потребуются. Ну, это странно. Если они нигде не требуются, кого волнует корректны они или нет? -- Best regards, Dennis Schetinin -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Dennis Schetinin
В данном блоке 80% нет. Точнее этот блок имеет законченную функциональность. Соответственно саь блок меняться не будет. Максимум что может у него поменяться - добавятся интерфейсы ну например выдача значения константы какой ни будь с пересчетом например в шестнадцетиричную если это потребуется компилятору например под PIC/
-- Я понимаю что Вы хотели увидеть в тестовом методе
вторник, 13 января 2015 г., 17:24:44 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Dennis Schetinin
Пользователь добавив новый блок параметризует его, устанавливает константы, выбирает пины. Проверяется правильность и полноценность параметризации блока. Если блок не корректен то плата на которой он установлен будет отмечена, а так же сам некорректный блок будет отмечен. Кроме того при попытке компиляции проекта будет выданно сообщение с номерами плат с некорректными блоками и количество некорректных модулей на каждой плате. Соответственно пока весь проект не будет корректен, компиляция производится не будет. вторник, 13 января 2015 г., 17:27:09 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Я тону в этой информации :) У меня логика простая: если объект проверяется на корректность, значит где-то еще он будет использоваться. Не говоря уже о том, что где-то он был создан и сконфигурирован пользователем. Соответственно, фраза про то, что этот объект больше нигде и никем не используется вызывает определенные сомнения. -- Best regards, Dennis Schetinin 13 января 2015 г., 17:00 пользователь Сергей Глушенко <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Наверное я просто плохо бъяснил. Попробую так. Когда я говорю что класс не будет менятся, я имею в виду что не будет менятся его программный код. А isCorrect используется в жизни инстанся при его эксплуатации так сазать. ТО есть когда пользователь нажимает кнопку "Проверить проект" выполняется код:
--
соответственно у проекта
У платы
вот мы и пришли к тому самому isCorrect у блока. конечно у блока то же можно спросить errors, но мне честно говоря пока не хочется описывать текстом все ошибки параметризации блоков. Будет куча свободного времени займусь этим. Пока пользователи не просят - значит и не надо. вторник, 13 января 2015 г., 18:18:40 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Есть блок. Он корректен. Пользователь установил isUseCountInTimeFunction в false. Где-то это значение будет использовано? Там будет код типа: block isUseCountInTimeFunction ifTrue: [...] ifFalse: […] Так? -- Best regards, Dennis Schetinin 13 января 2015 г., 17:33 пользователь Сергей Глушенко <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Совершенно верно
-- конкретно так
Это компилятор. ну и естественно на тот метод смотрин холдер чекбокса на фрейме вторник, 13 января 2015 г., 19:38:26 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Ну все для меня на сегодня дебаты закончены. Смена кончилась - поехал в общагу. Там интернет мобильный, то есть никакой. Почитать Ваши сообщения смогу, отвечу утром .
-- вторник, 13 января 2015 г., 19:44:39 UTC+5 пользователь Сергей Глушенко написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
13 января 2015 г., 19:00 пользователь Сергей Глушенко <[hidden email]> написал: Ну все для меня на сегодня дебаты закончены. "Вот так всегда: на самом интересном месте!" (с) Но мы, собственно, почти закончили — нашли сущность, имеющую следующую функциональность: - показывает себя и позволяет пользователю задавать свое состояние - проверяет корректность своего состояния - "компилирует" себя В общем-то, это все стандартно. Сейчас эта функциональность (опять же, стандартным образом) "размазана". Это приводит к многократному дублированию. О последствиях этого уже много написано в умных книгах умными людьми. …Но если есть желание испытать это на собственном опыте до/после/вместо прочтения этих самых книг — никто помешать не сможет :) -- Best regards, Dennis Schetinin -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Ну вы почти полностью описали функционал класса AbstractBlock являющегося родителем для всех остальных блоков. Каждый блок умеет правильно показываться пользователю для своей параметризации. То есть каждый блок знает свой фрейм параметризации и является для него моделью. Он сам рисуется на нужном месте (у него реализован метод displayOn:. У некоторых блоков в иерархии он перекрыт если нужна нестандартная отрисовка). Каждый блок контролирует корректность своего заполнеия. Все совершенно академически. А где Вы увидали размазаность?
-- Единственное место где она возможна, это компиляция. Блок не умеет сам компилироваться. Это сделанно сознательно. Проект изначально создавался под возможность подключения различных компиляторов. Поэтому блоки ничего не знают о компиляторе, а только умеют правильно отвечать на его вопросы. Дело в том что в принципе все контроллеры на сегодняшний день программируются либо на С либо на его переделанных вариантах. Язык Wiring который используется в Ардуино - это тот же С с добавление синтаксического сахара и с некоторыми встроенными специализированными функциями которых нет в чистом С. Соответственно базовый синтаксис у всех одинаковый. О вещах которые связаны с базовым синтаксисом блоки знают. Но с другой стороны структура программы, использование библиотек , специлизированные функциии отличаются не только для разных микроконтроллеров, но и даже для различных плат ардуино. О все этом знает компилятор. Поэтому при прибавлении поддержки нового контроллера мне необходимо только добавить новый класс компилятора и использовать его при компиляции. О необходимом классе компилятора знает модель - описатель контроллера которая хранится в проекте. При необходимости единственное что может потребоваться от блоков - дописать дополнительные интерфейсы для ответа новому компилятору если существующих интерфейсов будет не хватать. Как раз скоро мне предстоит опробовать данную систему в боевых условиях добавления поддержки принципиально новых контроллеров. Санкт-Петербургский Государственный университет Телекоммуникаций им. проф. М.А. Бонч-Бруевича предоставил мне для работы плату Intel Galileo, а один небольшой российский стартап попросил рассмотреть возможность применения FLProg в качестве основной среды для разрабатывания. Там вообще PIC. Ну наверное больше о компиляторе рассказывать ничего не буде.Все таки компилятор это мое ноу - хау вторник, 13 января 2015 г., 20:16:14 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
14 января 2015 г., 10:34 пользователь Сергей Глушенко <[hidden email]> написал: А где Вы увидали размазаность? Внутри блока я увидел компоненты с указанной функциональностью. (Если она совпадает с функциональностью всего блока — есть повод задуматься.) Только в отличие от блока эта функциональность реализована неявно и не в этих компонентах, а в методах других классов (блоков и м.б. чего-то еще?). Из-за этой размазанности как раз возникают и проблемы с пониманием типа "а как и что тут тестировать?!". Очень знакомая ситуация, на самом деле. -- Best regards, Dennis Schetinin -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Естественно внутри блока есть другие сущности которые то же умеют все это делать. Например входы отрисовывают себя сами в указанном ими блоком месте. Устройства лежащие внутри некоторых блоков имеют свои субфреймы позволяющие их парамерировать. В этом случае блок просто спрашивает у устройства какой фрейм отрисовать на соответвующей субканве создает данный фрейм и отдаее ему устройство в качестве модели. Так же устройство само тестирует правильность своей параметризации. Естественно одноименный функционал разных сущностей не дублирует друг друга. Выход рисуется не так как блок, ну а устройство имеет совершенно другой набор бараметров чем блок. Да и разные устройства которые могут присутствовать в одном блоке чаще всего отличаются набором параметров а иногда и поведением. Например EthernetShild и WifiShield абсолютно отличаются друг от друга, но при этом на базе каждого из них можно построить вэб сервер или вэб клиент. Получается что каждый класс имеет свою собственную законченную функциональность. Я опять не вижу размазанности. Каждый из них знает и умеет то что ему нужно и ничего лишнего. Например зачем блоку знать IP адрес карты на котором установлен сервер. Если его об этом спросит компилятор он спросит об этом устройство.
-- среда, 14 января 2015 г., 12:14:37 UTC+5 пользователь chaetal написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Я тут немного оговорился и что бы избежать ненужных воросов сразу поправлюсь.
-- блок просто спрашивает у устройства какой фрейм отрисовать на соответвующей субканве создает данный фрейм и отдаее ему устройство в качестве модели немного не так. Блок не занимается отрисовкой фрейма. Конечно же фрейм блока знает о своих субфреймах и спрашивает у блока устройство. И фрейм - же создает субфрейм кладет себе в переменную и передает взятое у блоке устройство субфрейму в качестве модели. среда, 14 января 2015 г., 12:55:50 UTC+5 пользователь Сергей Глушенко написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |