<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Владимир Обризан: персональный сайт - 14</title><link href="https://obrizan.com/ru/" rel="alternate"></link><link href="https://obrizan.com/ru/feeds/14.atom.xml" rel="self"></link><id>https://obrizan.com/ru/</id><updated>2026-08-14T10:41:43+03:00</updated><entry><title>Моя модель для код-ревью: LGTM-5.6</title><link href="https://obrizan.com/ru/blog/moya-model-dlya-kod-revyu-lgtm-5-6/" rel="alternate"></link><published>2026-08-14T10:41:43+03:00</published><updated>2026-08-14T10:41:43+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2026-08-14:/ru/blog/moya-model-dlya-kod-revyu-lgtm-5-6/</id><content type="html">&lt;p&gt;Я натренировал свою собственную LLM-модель для код-ревью.&lt;/p&gt;
&lt;p&gt;Назвал её LGTM-5.6.&lt;/p&gt;
&lt;p&gt;У неё есть только один токен: &lt;code&gt;LGTM&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;На любой инпут она отвечает&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;LGTM
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;По бенчмаркам качества ревью кода она не хуже 80% senior-разработчиков. :)&lt;/p&gt;</content><category term="14"></category></entry><entry><title>Творческие планы</title><link href="https://obrizan.com/ru/blog/tvorcheskie-plany/" rel="alternate"></link><published>2017-04-14T07:36:00+03:00</published><updated>2017-04-14T07:36:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2017-04-14:/ru/blog/tvorcheskie-plany/</id><summary type="html">&lt;p&gt;Я преподавал в Харьковском национальном институте радиоэлектроники с 2008 по 2016. Когда я был студентом, то я не думал, что стану преподавателем и педагогом. Ближе к выпуску я понял, что: а) мне нравится помогать другим студентам разобраться в чем-то; б) в чем-то я умный, а в некоторых вещах самый умный …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Я преподавал в Харьковском национальном институте радиоэлектроники с 2008 по 2016. Когда я был студентом, то я не думал, что стану преподавателем и педагогом. Ближе к выпуску я понял, что: а) мне нравится помогать другим студентам разобраться в чем-то; б) в чем-то я умный, а в некоторых вещах самый умный. Потом я понял, что я могу вообще создавать какое-то новое уникальное знание, которое до меня никто не зафиксировал, но это уже было намного попозже моего студенчества. &lt;/p&gt;
&lt;p&gt;Ну и где работать преподавателем, если не в университете? В университете преподавать очень легко. Не нужно себя продавать. Нужно просто прийти в аудиторию в определенное время, а студентов заведут за ручку. Хороший ты препод или плохой, первого сентября у тебя гарантированно будут новые студенты. Таким образом, я пошел по пути наименьшего сопротивления. &lt;/p&gt;
&lt;p&gt;Я не могу сказать, что я произвел какой-то ощутимый эффект на жизнь харьковчан или целой страны. В Харькове проживает 1,5 млн человек, а я обучил за 8 лет ну может человек 200. А если учитывать только годных, то может человек 30-40.&lt;/p&gt;
&lt;p&gt;Университеты — это такая классика, которая развивается очень медленно. По несколько процентов в год. А ХНУРЭ вообще развивается с отрицательным коэффициентом. Для такого талантливого человека как я — это полный бесперспективняк. Про это я написал несколько постингов:&lt;/p&gt;
&lt;p&gt;http://obrizan.livejournal.com/tag/университет&lt;/p&gt;
&lt;p&gt;После увольнения из университета, я самостоятельно прочитал мастер-класс по программированию айфон-приложений (http://mass.education). Одного раза хватило, чтобы понять, что больше в стандартном университетском формате я читать лекции не хочу. Тратится много времени, а учится всего 5 человек. &lt;/p&gt;
&lt;p&gt;Решение — обучать людей по интернету. Мои текущие творческие планы:&lt;/p&gt;
&lt;p&gt;— в 2017 году обучить 1000 человек по интернету;&lt;br&gt;
— в 2018 году обучить 10 000 человек по интернету;&lt;br&gt;
— в 2019 году обучить 100 000 человек по интернету. &lt;/p&gt;
&lt;p&gt;Но насчет 2019 года я не уверен. Может и больше ста тысяч. Я еще не научился на три года вперед заглядывать, там все как в тумане.&lt;/p&gt;</content><category term="14"></category></entry><entry><title>От интернета дети тупеют</title><link href="https://obrizan.com/ru/blog/ot-interneta-deti-tupeyut/" rel="alternate"></link><published>2016-09-14T23:25:00+03:00</published><updated>2016-09-14T23:25:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2016-09-14:/ru/blog/ot-interneta-deti-tupeyut/</id><summary type="html">&lt;p&gt;Забавно наблюдать, как в погоне за мгновенностью результата граждане деградируют до полных дебилов. Вот популярный паблик учит детей читать с листа:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/livejournal/2016/09/14/ot-interneta-deti-tupeyut/37067-original-c94f3484b0ebdec9.png"&gt;&lt;/p&gt;
&lt;p&gt;Кстати, все равно не все смогут правильно исполнить: ведь здесь не указаны длительности нот, а это важно. Если бы Бетховен так записывал свои произведения, то до наших дней они …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Забавно наблюдать, как в погоне за мгновенностью результата граждане деградируют до полных дебилов. Вот популярный паблик учит детей читать с листа:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/livejournal/2016/09/14/ot-interneta-deti-tupeyut/37067-original-c94f3484b0ebdec9.png"&gt;&lt;/p&gt;
&lt;p&gt;Кстати, все равно не все смогут правильно исполнить: ведь здесь не указаны длительности нот, а это важно. Если бы Бетховен так записывал свои произведения, то до наших дней они бы дошли в неузнаваемом варианте.&lt;/p&gt;
&lt;p&gt;Ведь проще же как дебилу пальчиком по циферкам нажимать, чем год учиться в музыкальной школе, чтобы прочитать вот это:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/livejournal/2016/09/14/ot-interneta-deti-tupeyut/37410-1000-2e73a131c0baa641.png"&gt;&lt;/p&gt;
&lt;p&gt;Ну и чтобы два раза не вставать, вот про совмещения приятного с полезным: "Как поумнеть лежа на диване?".&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/livejournal/2016/09/14/ot-interneta-deti-tupeyut/37157-original-b09b832a2d771809.png"&gt;&lt;/p&gt;
&lt;p&gt;Кстати, какой? :)&lt;/p&gt;</content><category term="14"></category></entry><entry><title>Левые студенческие отмазки</title><link href="https://obrizan.com/ru/blog/levye-studencheskie-otmazki/" rel="alternate"></link><published>2015-11-14T22:43:00+02:00</published><updated>2015-11-14T22:43:00+02:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2015-11-14:/ru/blog/levye-studencheskie-otmazki/</id><summary type="html">&lt;p&gt;Больше всего меня удивляют левые студенческие отмазки. Вот реальный диалог со студентом, который прогулял все лабы. Я его отредактировал, чтобы по контексту нельзя было понять, кто это. Орфография авторская.&lt;/p&gt;
&lt;p&gt;— Добрый вечер. понимаю что плохо посещал ваш предмет и был далеко не прилежным студентом, но на то, были веские причины. Я …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Больше всего меня удивляют левые студенческие отмазки. Вот реальный диалог со студентом, который прогулял все лабы. Я его отредактировал, чтобы по контексту нельзя было понять, кто это. Орфография авторская.&lt;/p&gt;
&lt;p&gt;— Добрый вечер. понимаю что плохо посещал ваш предмет и был далеко не прилежным студентом, но на то, были веские причины. Я много работал и не мог уделять время универу. У меня нет зачета по предмету ***, возможно ли решить эту проблему?&lt;br&gt;
— Сделай лабы, приходи защищать.&lt;br&gt;
— если бы я мог делать лабы, я бы не работал ***, а подрабатывал бы программистом. Но так как нужны деньги, работаю там. &lt;br&gt;
— Сколько часов в неделю ты работаешь?&lt;br&gt;
— смена по 10-11 часов это ночные, дневные по 9, работаю 5 дней в неделю&lt;br&gt;
— Т. е. время учиться остается?&lt;br&gt;
— скорее время поспать, чем учиться&lt;br&gt;
— В неделе 168 часов. Из них на работу уходит 55 часов. На полноценный сон 56. У тебя есть еще 57 часов на то, чтобы сделать мои лабы.&lt;/p&gt;
&lt;p&gt;Дальше диалог перешел в русло, мол: "да и этих 57 часов у меня нет". В курсе было 5 лабораторных работ по 4 академических часа. Т. е. максимум 20 часов нужно было на то, чтобы их сделать. "Умник" мои лабы сделает за два дня. Да и действительно были такие, кто за три дня делал весь курс. &lt;/p&gt;
&lt;p&gt;Стоит ли говорить, что этот студент ничего не сделал? &lt;/p&gt;
&lt;p&gt;К сожалению, ХНУРЭ прогнил настолько, что он не имея зачета по моему предмету, ни пошевелив пальцем, получил диплом бакалавра компьютерной инженерии.&lt;/p&gt;
&lt;p&gt;Стоит ли говорить, что работодатели в Харькове не смотрят на дипломы вообще?&lt;/p&gt;</content><category term="14"></category></entry><entry><title>Самый главный гайдлайн</title><link href="https://obrizan.com/ru/blog/samyi-glavnyi-gaidlain/" rel="alternate"></link><published>2012-10-14T20:21:00+03:00</published><updated>2012-10-14T20:21:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2012-10-14:/ru/blog/samyi-glavnyi-gaidlain/</id><summary type="html">&lt;p&gt;Самый главный гайдлайн при написании кода — это отбивать реализации методов несколькими пустыми строчками и строкой-комментарием. Несмотря на возможности современных IDE по поиску и структуризации исходного кода, визуальное ориентирование все еще играет важную роль.&lt;/p&gt;
&lt;p&gt;Рассмотрим пример ниже. Есть реализация класса на языке Objective-C. Методы отбиты всего-лишь одной строкой. Также отбивка одной …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Самый главный гайдлайн при написании кода — это отбивать реализации методов несколькими пустыми строчками и строкой-комментарием. Несмотря на возможности современных IDE по поиску и структуризации исходного кода, визуальное ориентирование все еще играет важную роль.&lt;/p&gt;
&lt;p&gt;Рассмотрим пример ниже. Есть реализация класса на языке Objective-C. Методы отбиты всего-лишь одной строкой. Также отбивка одной строкой встречается не только между методами, но и между логическими блоками кода внутри методов. Длинна названия метода не может служить хорошим ориентиром начала нового метода. Например, название метод stopProgressAnimating короче любой строки предыдущего метода loadCommentsFailure. Глазу не за что зацепиться.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2012/10/14/samyi-glavnyi-gaidlain/samyi-glavnyi-gaidlain-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Тот же самый код, но методы отбиты пустыми строками и комментарием. Теперь место между концом одного метода и началом следующего образует однородный узор, который постоянно повторяется. Такой узор легко обнаружить даже при быстром скролировании.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2012/10/14/samyi-glavnyi-gaidlain/samyi-glavnyi-gaidlain-02.png"&gt;&lt;/p&gt;</content><category term="14"></category><category term="программирование"></category><category term="основы"></category><category term="интерфейс"></category><category term="скриншот"></category></entry><entry><title>Потому что раньше не смог</title><link href="https://obrizan.com/ru/blog/potomu-chto-ranshe-ne-smog/" rel="alternate"></link><published>2011-02-14T22:17:00+02:00</published><updated>2011-02-14T22:17:00+02:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2011-02-14:/ru/blog/potomu-chto-ranshe-ne-smog/</id><summary type="html">&lt;p&gt;&lt;nobr&gt;13-дневное&lt;/nobr&gt; путешествие по маршруту Харьков-Киев-Катовице-Бове-Париж-Гренобль-Париж-Бове-Катовице-Краков-Варшава-Катовице-Освенцим-Катовице-Бельско-Бяла-Шчирк-Бельско-Бяла-Катовице-Киев-Харьков успешно завершилось. Памятные места были повиданы, открытки были отправлены, олимпийские лыжные склоны обкатаны.&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG_3551" src="https://obrizan.com/ru/images/blogger/2011/02/14/potomu-chto-ranshe-ne-smog/img-3551-3.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Фото-, видео- и буквоотчеты будут созданы и опубликованы позже.&lt;/p&gt;
&lt;p&gt;В последние дни до отъезда была добыта книга Иржи Томана «Как совершенствовать самого себя» о которой шла речь в предыдущем постинге о книге …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;nobr&gt;13-дневное&lt;/nobr&gt; путешествие по маршруту Харьков-Киев-Катовице-Бове-Париж-Гренобль-Париж-Бове-Катовице-Краков-Варшава-Катовице-Освенцим-Катовице-Бельско-Бяла-Шчирк-Бельско-Бяла-Катовице-Киев-Харьков успешно завершилось. Памятные места были повиданы, открытки были отправлены, олимпийские лыжные склоны обкатаны.&lt;/p&gt;
&lt;p&gt;&lt;img alt="IMG_3551" src="https://obrizan.com/ru/images/blogger/2011/02/14/potomu-chto-ranshe-ne-smog/img-3551-3.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Фото-, видео- и буквоотчеты будут созданы и опубликованы позже.&lt;/p&gt;
&lt;p&gt;В последние дни до отъезда была добыта книга Иржи Томана «Как совершенствовать самого себя» о которой шла речь в предыдущем постинге о книге &lt;a href="https://obrizan.com/ru/blog/otzyv-na-knigu-irzhi-tomana-iskusstvo-govorit/"&gt;«Искусство говорить»&lt;/a&gt;. Быстро пролистал — очередной &lt;nobr&gt;300-страничный&lt;/nobr&gt; атас. Немедленно приступаю к прочтению.&lt;/p&gt;</content><category term="14"></category><category term="путешествия"></category><category term="фото"></category></entry><entry><title>Ошибка в интерфейсе portmone.com.ua</title><link href="https://obrizan.com/ru/blog/oshibka-v-interfeise-portmone-com-ua/" rel="alternate"></link><published>2010-12-14T15:07:00+02:00</published><updated>2010-12-14T15:07:00+02:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2010-12-14:/ru/blog/oshibka-v-interfeise-portmone-com-ua/</id><summary type="html">&lt;p&gt;Сценарий такой: когда начинаете вводить CVV2, выскакивает виртуальная пин-код клавиатура, при этом размер окна не изменяется, 2/3 клавиатуры не видно. Интересно, сколько пользователей не догадается, что нужно прокрутить окно? Или все, у кого пластик, умные?&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2010/12/14/oshibka-v-interfeise-portmone-com-ua/oshibka-v-interfeise-portmone-com-ua-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Я когда это увидел, то испугался: «Неужели оно знает, что мой пин состоит из …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Сценарий такой: когда начинаете вводить CVV2, выскакивает виртуальная пин-код клавиатура, при этом размер окна не изменяется, 2/3 клавиатуры не видно. Интересно, сколько пользователей не догадается, что нужно прокрутить окно? Или все, у кого пластик, умные?&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2010/12/14/oshibka-v-interfeise-portmone-com-ua/oshibka-v-interfeise-portmone-com-ua-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Я когда это увидел, то испугался: «Неужели оно знает, что мой пин состоит из цифр 9, 0, 6 и 5»?&lt;/p&gt;</content><category term="14"></category><category term="интерфейс"></category><category term="ошибка"></category><category term="скриншот"></category></entry><entry><title>Death Toll</title><link href="https://obrizan.com/ru/blog/death-toll/" rel="alternate"></link><published>2010-10-14T23:09:00+03:00</published><updated>2010-10-14T23:09:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2010-10-14:/ru/blog/death-toll/</id><summary type="html">&lt;p&gt;В результате &lt;a href="http://podrobnosti.ua/accidents/2010/10/14/722938.html"&gt;ДТП в Марганце 12 октября погибло 44 человека&lt;/a&gt;, когда водитель переполненного автобуса выехал на железнодорожный переезд. История только тому и учит, что ничему не учит. На следующий день под Киевом &lt;a href="http://podrobnosti.ua/accidents/2010/10/13/722925.html"&gt;водитель скорой помощи выехал на закрытый переезд&lt;/a&gt; и попал под поезд. Погибло 2 человека (в том числе и …&lt;/p&gt;</summary><content type="html">&lt;p&gt;В результате &lt;a href="http://podrobnosti.ua/accidents/2010/10/14/722938.html"&gt;ДТП в Марганце 12 октября погибло 44 человека&lt;/a&gt;, когда водитель переполненного автобуса выехал на железнодорожный переезд. История только тому и учит, что ничему не учит. На следующий день под Киевом &lt;a href="http://podrobnosti.ua/accidents/2010/10/13/722925.html"&gt;водитель скорой помощи выехал на закрытый переезд&lt;/a&gt; и попал под поезд. Погибло 2 человека (в том числе и беременная женщина).&lt;/p&gt;
&lt;p&gt;А вообще &lt;nobr&gt;13-го&lt;/nobr&gt; числа на Украине произошло 658 ДТП, в которых 22 погибло, 124 ранено (источник: &lt;a href="http://www.sai.gov.ua/dtp.shtml"&gt;ГАИ МВД&lt;/a&gt;). В 2009 году на Украине в ДТП погибло 5300 человек (&lt;a href="http://automir.in.ua/newsm.php?id=1978"&gt;источник&lt;/a&gt;). Т. е. 15 смертей в день. Но про это мало кто знает, потому что в вечерних новостях про это не рассказывают.&lt;/p&gt;</content><category term="14"></category></entry><entry><title>Выравнивание числовых данных в таблицах</title><link href="https://obrizan.com/ru/blog/vyravnivanie-chislovyh-dannyh-v-tablitsah/" rel="alternate"></link><published>2010-10-14T14:56:00+03:00</published><updated>2010-10-14T14:56:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2010-10-14:/ru/blog/vyravnivanie-chislovyh-dannyh-v-tablitsah/</id><summary type="html">&lt;p&gt;Давно пользуюсь Микрософт Аутлуком, но только сейчас обратил внимание на такую деталь. Графы «Получено» и «Размер» не выравнены по порядкам. С датами и временем ещё полбеды, но с размером полный бардак.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2010/10/14/vyravnivanie-chislovyh-dannyh-v-tablitsah/vyravnivanie-chislovyh-dannyh-v-tablitsah-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Неужели дизайнеры в Микрософте не знают о том, что числовые данные нужно выравнивать так, чтобы порядки соответствовали?&lt;/p&gt;
&lt;p&gt;А как …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Давно пользуюсь Микрософт Аутлуком, но только сейчас обратил внимание на такую деталь. Графы «Получено» и «Размер» не выравнены по порядкам. С датами и временем ещё полбеды, но с размером полный бардак.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2010/10/14/vyravnivanie-chislovyh-dannyh-v-tablitsah/vyravnivanie-chislovyh-dannyh-v-tablitsah-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Неужели дизайнеры в Микрософте не знают о том, что числовые данные нужно выравнивать так, чтобы порядки соответствовали?&lt;/p&gt;
&lt;p&gt;А как дело обстоит в вашем любимом почтовом клиенте? Весь изволновался: а как оно там на Линуксе?&lt;/p&gt;</content><category term="14"></category><category term="дизайн"></category><category term="outlook"></category><category term="ошибка"></category><category term="скриншот"></category></entry><entry><title>Сообщения об ошибках в clang</title><link href="https://obrizan.com/ru/blog/soobscheniya-ob-oshibkah-v-clang/" rel="alternate"></link><published>2010-08-14T14:51:00+03:00</published><updated>2010-08-14T14:51:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2010-08-14:/ru/blog/soobscheniya-ob-oshibkah-v-clang/</id><summary type="html">&lt;p&gt;Одним из требований к clang — новому компилятору Си++ — было предоставить пользователю подробную информацию об ошибках. Рассмотрим небольшой пример.&lt;/p&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;[]&lt;span style="font-family: consolas; color: blue; font-size: 9pt"&gt;double&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt; UniversalGravitation(&lt;span style="color: blue"&gt;double&lt;/span&gt; G, &lt;span style="color: blue"&gt;double&lt;/span&gt; mass1, &lt;span style="color: blue"&gt;double&lt;/span&gt; mass2, &lt;span style="color: blue"&gt;double&lt;/span&gt; distance)&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;{&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;    &lt;span style="color: blue"&gt;double&lt;/span&gt; F = G * ((mass1 * mass2)/(distance * dsitance));&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;    &lt;span style="color: blue"&gt;return&lt;/span&gt; F;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Здесь допущена описка в идентификаторе. Что же покажет нам clang?&lt;/p&gt;
&lt;p&gt;&lt;img alt="consoleoutput" src="https://obrizan.com/ru/images/blogger/2010/08/14/soobscheniya-ob-oshibkah-v-clang/consoleoutput-2.png"&gt;&lt;/p&gt;
&lt;p&gt;Во-первых, он заботливо …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Одним из требований к clang — новому компилятору Си++ — было предоставить пользователю подробную информацию об ошибках. Рассмотрим небольшой пример.&lt;/p&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;[]&lt;span style="font-family: consolas; color: blue; font-size: 9pt"&gt;double&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt; UniversalGravitation(&lt;span style="color: blue"&gt;double&lt;/span&gt; G, &lt;span style="color: blue"&gt;double&lt;/span&gt; mass1, &lt;span style="color: blue"&gt;double&lt;/span&gt; mass2, &lt;span style="color: blue"&gt;double&lt;/span&gt; distance)&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;{&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;    &lt;span style="color: blue"&gt;double&lt;/span&gt; F = G * ((mass1 * mass2)/(distance * dsitance));&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;    &lt;span style="color: blue"&gt;return&lt;/span&gt; F;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt; mso-ansi-language: en-us" lang="EN-US"&gt;
 &lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9pt"&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Здесь допущена описка в идентификаторе. Что же покажет нам clang?&lt;/p&gt;
&lt;p&gt;&lt;img alt="consoleoutput" src="https://obrizan.com/ru/images/blogger/2010/08/14/soobscheniya-ob-oshibkah-v-clang/consoleoutput-2.png"&gt;&lt;/p&gt;
&lt;p&gt;Во-первых, он заботливо подчеркивает место в длинном выражении, какой именно идентификатор он считает незнакомым. Во-вторых, он учтиво подсказывает возможное исправление. Вспомним, как выглядит похожие сообщения в Microsoft Visual Studio 2010. (Хотя Визуал Студию 2010 можно и похвалить: такой тип ошибок оно подсвечивает ещё при редактировании.)&lt;/p&gt;
&lt;p&gt;&lt;img alt="consoleoutputvs2010" src="https://obrizan.com/ru/images/blogger/2010/08/14/soobscheniya-ob-oshibkah-v-clang/consoleoutputvs2010-2.png"&gt;&lt;/p&gt;
&lt;p&gt;gcc показывает что-то вроде такого:&lt;/p&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&amp;lt;font size=&amp;quot;2&amp;quot; face=&amp;quot;Consolas&amp;quot;&amp;gt;/tmp/webcompile/_13952_0.cc: In function &amp;#39;double UniversalGravitation(double, double, double, double)&amp;#39;: /tmp/webcompile/_13952_0.cc:3: error: &amp;#39;dsitance&amp;#39; was not declared in this scope&amp;lt;/font&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Почитать о других возможностях диагностического механизма компилятора clang можно в справке: &lt;a href="http://clang.llvm.org/diagnostics.html"&gt;Expressive Diagnostics&lt;/a&gt;. Очень интересны случаи, когда оно находит ошибки в неразвёрнутых макросах или в тайпдефах.&lt;/p&gt;
&lt;p&gt;Уже жду, когда компиляторы в будущем будут сами исправлять ошибки. А потом и сами писать код.&lt;/p&gt;</content><category term="14"></category><category term="компилятор"></category><category term="clang"></category><category term="ошибка"></category><category term="скриншот"></category></entry><entry><title>Патент на высокоуровневый синтез</title><link href="https://obrizan.com/ru/blog/patent-na-vysokourovnevyi-sintez/" rel="alternate"></link><published>2009-09-14T17:41:00+03:00</published><updated>2009-09-14T17:41:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2009-09-14:/ru/blog/patent-na-vysokourovnevyi-sintez/</id><summary type="html">&lt;p&gt;На прошлой неделе готовил лекцию о языке &lt;a href="http://ru.wikipedia.org/wiki/SystemC"&gt;SystemC&lt;/a&gt; и наткнулся на статью Stephen A. Edwards, «&lt;a href="http://www2.computer.org/portal/web/csdl/doi/10.1109/MDT.2006.134"&gt;The Challenges of Synthesizing Hardware from C-Like Languages&lt;/a&gt;», о различных С-подобных языках, применяющихся для описания аппаратуры. Среди различных языков и инструментов была ссылка на американский патент &lt;a href="http://www.google.com/patents/about?id=BM4GAAAAEBAJ&amp;amp;dq=6226776"&gt;№ 6 226 776&lt;/a&gt; о синтезе С в железо, который …&lt;/p&gt;</summary><content type="html">&lt;p&gt;На прошлой неделе готовил лекцию о языке &lt;a href="http://ru.wikipedia.org/wiki/SystemC"&gt;SystemC&lt;/a&gt; и наткнулся на статью Stephen A. Edwards, «&lt;a href="http://www2.computer.org/portal/web/csdl/doi/10.1109/MDT.2006.134"&gt;The Challenges of Synthesizing Hardware from C-Like Languages&lt;/a&gt;», о различных С-подобных языках, применяющихся для описания аппаратуры. Среди различных языков и инструментов была ссылка на американский патент &lt;a href="http://www.google.com/patents/about?id=BM4GAAAAEBAJ&amp;amp;dq=6226776"&gt;№ 6 226 776&lt;/a&gt; о синтезе С в железо, который сейчас якобы принадлежит фирме Synopsys. Автор статьи описывает патент, как «претендующий на широкую поддержку языка ANSI C»: упоминается поддержка указателей, рекурсии, динамического распределения памяти.&lt;/p&gt;
&lt;p&gt;Я заинтересовался этим патентом. Около 85 страниц из всех 108-и — это примеры на С и соответствующие им результаты синтеза на Верилоге. Ещё 14 страниц — это словесное описание всех примеров. И последние четыре страницы посвящены описанию формулы изобретения. Модели в основном представлены в виде цифровых автоматов, намного реже — data-flow модели. Как такового метода преобразования С в цифровой автомат там не было. Я обратил внимание на один пример, в котором из одной функции вызывались две другие.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;`&lt;font size="2" face="Courier New" color="black"&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; sum1 (&lt;font color="#0000ff"&gt;int&lt;/font&gt; n)
{
    &lt;font color="#0000ff"&gt;int&lt;/font&gt; i, sum = 0;
    &lt;font color="#0000ff"&gt;for&lt;/font&gt; (i = 0; i &amp;lt; n; i++)
        sum += i;
    &lt;font color="#0000ff"&gt;return&lt;/font&gt; sum;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; sum2 (&lt;font color="#0000ff"&gt;int&lt;/font&gt; array[], &lt;font color="#0000ff"&gt;int&lt;/font&gt; size)
{
    &lt;font color="#0000ff"&gt;int&lt;/font&gt; i, sum = 0;
    &lt;font color="#0000ff"&gt;for&lt;/font&gt; (i = 0; i &amp;lt; size; i++)
        sum += array[i];
    &lt;font color="#0000ff"&gt;return&lt;/font&gt; sum;
}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt; f1()
{
    &lt;font color="#0000ff"&gt;int&lt;/font&gt; i;
    &lt;font color="#0000ff"&gt;int&lt;/font&gt; array[10];
    &lt;font color="#0000ff"&gt;int&lt;/font&gt; size = &lt;font color="#0000ff"&gt;sizeof&lt;/font&gt;(array)/&lt;font color="#0000ff"&gt;sizeof&lt;/font&gt;(&lt;em&gt;array);
    &lt;font color="#0000ff"&gt;for&lt;/font&gt; (i = 0; i &amp;lt; size; i++)
        array[i] = i * 2;
    &lt;font color="#0000ff"&gt;return&lt;/font&gt; sum1(size) + sum2(array, size);
}
&lt;/font&gt;
&lt;font size="1" color="gray"&gt;&lt;/em&gt; This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font size="1" color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;`&lt;/p&gt;
&lt;p&gt;Перед тем, как читать дальше, подумайте: сколько состояний автомата нужно, чтобы выполнить этот алгоритм? Мне тоже сначала показалось, что должно быть немного. Но в предложенном варианте синтеза для выполнения этого алгоритма нужно 16 состояний автомата. Так как мой компилятор С++ в VHDL ещё не способен откомпилировать такой код, то решил нарисовать граф-схему алгоритма вручную.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2009/09/14/patent-na-vysokourovnevyi-sintez/example.png"&gt;&lt;/p&gt;
&lt;p&gt;Все функции уже встроены, и предполагается, что инициализация переменных происходит по сигналу reset. Таким образом, в этом автомате получается всего лишь семь состояний (см. Баранов С. И. Синтез цифровых автоматов).&lt;/p&gt;
&lt;p&gt;Вот не могу понять: у них там в 2001 году не знали то, что у нас было известно ещё в 1974?&lt;/p&gt;</content><category term="14"></category><category term="сапр"></category><category term="основы"></category></entry><entry><title>C++ придумали в СССР</title><link href="https://obrizan.com/ru/blog/c-pridumali-v-sssr/" rel="alternate"></link><published>2009-05-14T08:00:00+03:00</published><updated>2009-05-14T08:00:00+03:00</updated><author><name>Volodymyr Obrizan</name></author><id>tag:obrizan.com,2009-05-14:/ru/blog/c-pridumali-v-sssr/</id><content type="html">&lt;p&gt;Найдены доказательства тому, что язык С++ был придуман в СССР. На рисунке ниже показан фрагмент секретной документации к системе управления стратегическим ядерным инкубатором.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/ru/images/blogger/2009/05/14/c-pridumali-v-sssr/c-in-the-ussr.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Спасибо Роме Приходченко за находку. :)&lt;/p&gt;</content><category term="14"></category><category term="фан"></category></entry></feed>