?

Log in

Discreet · and · not · discrete.


Do you want to crack jokes about it or do you want me to go?

Recent Entries · Archive · Friends · Profile

* * *
Наше текущее AST в трансляторе VHDL спроектировано изменяемым. Сперва создаётся объект через new ASTObject(tree и тп) и заполняется через вызовы методов и установку свойств. Обоснование изначально было "если мы не сможем создать объект полностью, так хоть частично его заполним и вернём".

Поскольку надо сигнализировать об ошибке, практически всюду и везде возвращается null. Частично созданный объект никогда не возвращается.

VHDL язык с недетерминизмом в проверке типов - если у нас есть "оператор" function "AND"(a,b:integer) return integer и function "AND" (a,b:integer) return bit_vector, то проверка типов должна попробовать оба-два варианта для выражения 1 AND x. Большую часть времени возвращаемый тип ограничен сверху, но иногда не ограничен - при преобразовании подтипов-массивов (подробности, право слово, ещё ужасней). Поэтому естественным подходом к проверке типов был бы "создаём все варианты, а потом отбросим ненужные", однако проверка типов сопряжена с созданием объектов AST (и это верно, ибо x(a) может быть вызовом функции или взятием элемента массива), а они, как я уже объяснил, сперва создаются, потом заполняются и меняются в процессе. Поэтому правильный подход затруднён, если учесть размер функций преобразования - в районе 50-600 строк, медиана сотня строк.

Но и это ещё не всё.

В данный момент все файлы транслируются каждый раз перед запуском. Причина проста - запомнить состояние проекта невозможно, ибо, бахама мама, AST может быть изменено! Да и система поиска прошита в AST так, что отделить её от самой AST труднее, чем сиамских близнецов, сросшихся сердцами. А при компиляции изменённых файлов надо же ещё перекомпилировать файлы, которые зависели от содержимого изменившихся!

Опять же, если бы 1) использовались неизменные данные (readonly на все поля) и 2) система поиска была бы отвязана от AST и делалась бы атрибутными грамматиками (точнее, атрибутными деревьями - деревья AST, дополненные атрибутами), то обе вышеописанные проблемы были бы не то, что решаемы, а имели бы тривиальное решение.

Но я живу в мире, который мне дан в ощущениях (а не выбран мной), поэтому я буду лопатить тонны кода, преобразуя сие чудо техники в нечто нормальное, пока ответственный за всё это рисует платы в нашем CAD.

А вот мои читатели, надеюсь, учтут эти ошибки и смогут их обойти.

PS
Мой опыт говорит, что наибольший опыт приобретается после переписывания программы в третий раз. Не ленитесь, не будьте похожи на руководителя нашей группы.
* * *
https://rawfoodsos.com/2010/07/07/the-china-study-fact-or-fallac/

А точнее, почему мясо менее канцерогенно, чем растения.

(критика China study, которым размахивают вегетарианцы и некоторые прочие, и благодаря которому мясо попало в список возможных канцерогенов в реестре канцерогенов Министерства Здравоохранения США)
* * *
А какой детективный сериал наиболее близок к Менталисту?

Попробовал посмотреть The Blacklist, так это ужас какой-то. Всё деревянное, юмора ноль.

* * *
Столкновение мнения "умного" с волей народа всегда интересно.

У нас в России наблюдения за такого рода событиями дело привычное, поэтому особенно интересно наблюдать, что происходит в не привыкшей к демократии Америке.

Надо сказать, что тамошние умные выглядят слабоватыми, да. У нас умные мысли покруче подымают. Типа, покрошить всех несогласных с умным в капусту. А в США всего лишь грусть типа "git revert" или "дожили ли мы до современного Нерона?"
* * *
* * *
* * *
https://github.com/datalust/superpower - комбинаторные разборщики на C#.

Скорость, если исходить из результатов опыта, порядка 200К байт/секунда.

Я тут бьюсь с ANTLR4, который отдельные файлы с VHDL кодом разбирает ужасающе долго (со скоростью в 8К байт в секунду и даже меньше). Это, натурально, беда.

Переписывать, конечно, не буду, но себе на память оставлю. Глядишь, пригодится.
* * *
Думаю, что эта статья некоторым образом объясняет, что же сейчас произошло в Индии.
* * *
Правильной реакцией на неправильное предсказание поведения окружающего мира является "как интересно! что же я тут не понимаю? надо разобраться". Особенно, когда речь идёт о предсказании поведения народа, который умнее и мудрее.

Так вот, реакция хаскелистов в моей ленте в твиттере описывается, скорее, словами "что за говно случилось" и на выбор восклицательный или вопросительный знак. Или оба вместе.

В принципе, я к этому уже привык. Но отметить когда-нибудь надо было.
* * *
Разумно ожидать, что человек в привычных обстоятельствах будет вести себя привычным образом. Это относится и к программистам, причём в их случае речь идёт об ошибках, допускаемых при создании программы. В привычных обстоятельствах программист будет вносить ошибки определённого типа.

Это используется в пересмотре кода, когда коллеги ловят ошибки коллег. Один привык их создавать, другие привыкли их ловить.

Соответственно, попадая в новые обстоятельства, человек будет вести себя непривычным образом, а программист - вносить непривычные ошибки.

В случае программирования "новые обстоятельства" создать довольно просто, достаточно сменить область ответственности и дать человеку поработать над кодом, который он не создавал и в области, которая ему не знакома. Ошибки, создаваемые в этих условиях, удивят кого угодно. Но, что интересно, скорее всего, общее название для необычных ошибок всем давно знакомо и называется "заплатка".

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

Поведение программы проверяется тестами. В случае создания нового функционала новым работником юнит-тесты бесполезны - их же надо менять вместе с функционалом. А вот функциональные тесты весьма важны, поскольку они, обычно, проверяют функционал, важный пользователю. И позволяют, при устранении проблем, создать теорию нужд пользователя и, оттуда, теорию кода.

Засим всё.

Это результаты моей борьбы с кодом, оставленным мне в наследство тремя программистами, каждый из которых постепенно терял интерес к развитию программы и изучению новых областей стандарта VHDL.
* * *
Оригинал взят у andreyknyshev в Юбилейный вечер. Без вас - никак!
Друзья! Очень рад и как-то согрет вашим сердечным излучением внимания и поощрения через экран моего ноутбука, - все передается, и даже легкий загар образовался на лице.

Тогда так.
ПРИГЛАШАЮ всех вас на свой юбилейный, довольно-таки творческий ВЕЧЕР под названием "ЦВЕТОЧКИ над Ы"!
(Уточняю: не веночки, а цветочки!)

А будет это мероприятие в стиле торжественно-импозантного культурного разгильдяйства 27 НОЯБРЯ в концертном зале "ГРАДСКИЙ ХОЛЛ", в воскресенье, начало в 18-00. https://gradskyhall.ru/descr/27-11-2016-andrey-knyshev.php

Пригласил гостей, друзей, "веселых ребят", и интересных людей, с которыми что-то связано по жизни, по творчеству, по молодости, по глупости, по углубленном размышлении, или беспричинно. Там на сайте инфа есть. Ну, и - кликнул - и у тебя место в зале. (А зал.. - с наворотами!)
Будет время - еще напишу про гостей поподробнее.

В кратких паузах между их выступлениями что-то зачитаю. И из былого-из дум, и - неужели?! сам не верю - из НОВОЙ КНИГИ, если кому интересно. (Она еще допекается, видимо ее там впервые сам и увижу!) Читатели, как водится, смогут даже дать автограф автору.
На экране что-то можно будет разглядеть и ностальгнуть по веселым временам, если качество ретро-записей позволит, есть и еще кое-какое редкое видео, почти нигде не показанное.

Будет и небольшой, но весьма симфонический оркестр. А вот зачем - не скажу!
Вообще будут, надеюсь, приятные сюрпризы и взрослые неожиданности. (Про сюрпризы в виде закорачивания оголенного кабеля браслетом Kenzo, возгорания шевелюры суфлера от бенгальского огня, или явки незваных четвероногих на сцену по неуважительным причинам - не говорю.)

Повторюсь, дорогие френды, действительно очень хочется чтоб пришли "СВОИ". Кто это, не понимаю до конца, но то, что у каждого они есть - факт. И вдруг для кого-то я хоть немножко "свой"? Потому что если выходишь к людям (пусть и очень хорошим), которые пришли просто провести где-нибудь вечер, или посмотреть новый зал, или выгулять новое платье актуального цвета, то чувствуешь себя как-то……. (Хотя вышеперечисленное для своих также не исключается. Кстати нынче в тренде цвет Марсала, так что приходите в марсаловом, а неохота - так сидите дома в карамельном.)

"Градский Холл" - это, к сожалению, не в Сиэттле, и не в Иерусалиме, а на Добрынинской в Москве, бывший кинотеатр "Буревестник", если кто помнит. (Я-то помню: меня принесли практически туда из роддома, мимо входа с колоннами - в коммуналку, в 100 метрах оттуда.)

Кругосветный тур писаки-гастролера с хлебом-солью-лавашем-мацой-гамбургером-кетчупом и лобызанием в каждом порту - конечно, вещь хорошая. Но не все сразу. Да собственно и не звали.
Да, многие из неравнодушных к автору разъехались по белу свету, находятся в длительных служебных загран-замужествах, обучениях навыкам, подводных экспедициях, заоблачных восхождениях, путешествиях драндулетным автостопом, стажировках на высокую должность местного жителя с приятным русским акцентом, и пр.
Но ежели кто-то купит билет у себя там сначала на автобус, потом на метро, потом на шатл до аэропорта, потом на самолет, потом на аэроэкспресс до другого метро, потом - бесплатно! - пройдет 100 шагов до здания театра, потом билет на сам концерт - то… ...То автор ему этих расходов, к сожалению, не покроет, но волна благодарности его накроет, бескорыстная и ничем не оценимая радость моя будет безмерна. Что конечно передастся в зал вибрациями и интонациями выступающего со сцены. В общем, об этом и мечтать нельзя. Но - как получится.

Одним словом, буду ждать всех, кто сможет и захочет.
Про москвичей и ближних подмосковниках даже не говорю. Явка всех желающих обязательна!

На этом свое беспардонное зазывно-коробейное "Эгей! Заходи! Налетай! Покупай! Наливай!" завершаю.
Не прощаюсь. Жду.

Tags:
* * *
* * *

Previous