<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Володимир Обрізан: особистий сайт - 14</title><link href="https://obrizan.com/uk/" rel="alternate"></link><link href="https://obrizan.com/uk/feeds/14.atom.xml" rel="self"></link><id>https://obrizan.com/uk/</id><updated>2026-08-14T10:41:43+03:00</updated><entry><title>Моя модель для код-ревʼю: LGTM-5.6</title><link href="https://obrizan.com/uk/blog/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:/uk/blog/lgtm-5-6/</id><content type="html">&lt;p&gt;Я натренував свою власну ЛЛМ модель для код-ревʼю.&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/uk/blog/tvorchi-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:/uk/blog/tvorchi-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/uk/blog/vid-internetu-dity-tupiiut/" 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:/uk/blog/vid-internetu-dity-tupiiut/</id><summary type="html">&lt;p&gt;Кумедно спостерігати, як у погоні за миттєвістю результату громадяни деградують до повних дебілів. Ось популярний паблік учить дітей читати з аркуша:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/uk/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/uk/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/uk/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/uk/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/uk/blog/livi-studentski-vidmazky/" 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:/uk/blog/livi-studentski-vidmazky/</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/uk/blog/naiholovnishyi-haidlain/" 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:/uk/blog/naiholovnishyi-haidlain/</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/uk/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/uk/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/uk/blog/bo-ranishe-ne-zmih/" 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:/uk/blog/bo-ranishe-ne-zmih/</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/uk/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/uk/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/uk/blog/vidhuk-na-knyzhku-yirzhi-tomana-mystetstvo-hovoryty/"&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/uk/blog/pomylka-v-interfeisi-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:/uk/blog/pomylka-v-interfeisi-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/uk/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/uk/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/uk/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:/uk/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;
&lt;p&gt;А взагалі …&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/uk/blog/vyrivniuvannia-chyslovykh-danykh-u-tablytsiakh/" 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:/uk/blog/vyrivniuvannia-chyslovykh-danykh-u-tablytsiakh/</id><summary type="html">&lt;p&gt;Давно користуюся Microsoft Outlook, але тільки зараз звернув увагу на таку деталь. Графи «Отримано» і «Розмір» не вирівняні за розрядами. З датами й часом ще пів біди, але з розміром повний безлад.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/uk/images/blogger/2010/10/14/vyravnivanie-chislovyh-dannyh-v-tablitsah/vyravnivanie-chislovyh-dannyh-v-tablitsah-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Невже дизайнери в Microsoft не знають про те, що числові дані треба вирівнювати так, щоб розряди збігалися?&lt;/p&gt;
&lt;p&gt;А …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Давно користуюся Microsoft Outlook, але тільки зараз звернув увагу на таку деталь. Графи «Отримано» і «Розмір» не вирівняні за розрядами. З датами й часом ще пів біди, але з розміром повний безлад.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/uk/images/blogger/2010/10/14/vyravnivanie-chislovyh-dannyh-v-tablitsah/vyravnivanie-chislovyh-dannyh-v-tablitsah-01.png"&gt;&lt;/p&gt;
&lt;p&gt;Невже дизайнери в Microsoft не знають про те, що числові дані треба вирівнювати так, щоб розряди збігалися?&lt;/p&gt;
&lt;p&gt;А як справи у вашому улюбленому поштовому клієнті? Весь розхвилювався: а як воно там на Linux?&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/uk/blog/povidomlennia-pro-pomylky-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:/uk/blog/povidomlennia-pro-pomylky-v-clang/</id><summary type="html">&lt;p&gt;Однією з вимог до clang — нового компілятора C++ — було надати користувачеві докладну інформацію про помилки. Розгляньмо невеликий приклад.&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/uk/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 — нового компілятора C++ — було надати користувачеві докладну інформацію про помилки. Розгляньмо невеликий приклад.&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/uk/images/blogger/2010/08/14/soobscheniya-ob-oshibkah-v-clang/consoleoutput-2.png"&gt;&lt;/p&gt;
&lt;p&gt;По-перше, він дбайливо підкреслює місце в довгому виразі, який саме ідентифікатор він вважає незнайомим. По-друге, він чемно підказує можливе виправлення. Згадаймо, який вигляд мають схожі повідомлення в Microsoft Visual Studio 2010. (Хоча Visual Studio 2010 можна й похвалити: такий тип помилок вона підсвічує ще під час редагування.)&lt;/p&gt;
&lt;p&gt;&lt;img alt="consoleoutputvs2010" src="https://obrizan.com/uk/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/uk/blog/patent-na-vysokorivnevyi-syntez/" 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:/uk/blog/patent-na-vysokorivnevyi-syntez/</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;», про різні C-подібні мови, що застосовуються для опису апаратури. Серед різних мов та інструментів було посилання на американський патент &lt;a href="http://www.google.com/patents/about?id=BM4GAAAAEBAJ&amp;amp;dq=6226776"&gt;№ 6 226 776&lt;/a&gt; про синтез C у залізо, який …&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;», про різні C-подібні мови, що застосовуються для опису апаратури. Серед різних мов та інструментів було посилання на американський патент &lt;a href="http://www.google.com/patents/about?id=BM4GAAAAEBAJ&amp;amp;dq=6226776"&gt;№ 6 226 776&lt;/a&gt; про синтез C у залізо, який зараз нібито належить фірмі Synopsys. Автор статті описує патент як такий, що «претендує на широку підтримку мови ANSI C»: згадується підтримка вказівників, рекурсії, динамічного розподілу пам’яті.&lt;/p&gt;
&lt;p&gt;Мене зацікавив цей патент. Близько 85 сторінок із усіх 108 — це приклади на C і відповідні їм результати синтезу на Verilog. Ще 14 сторінок — це словесний опис усіх прикладів. І останні чотири сторінки присвячені опису формули винаходу. Моделі здебільшого представлені у вигляді цифрових автоматів, набагато рідше — data-flow моделі. Методу перетворення C на цифровий автомат як такого там не було. Я звернув увагу на один приклад, у якому з однієї функції викликалися дві інші.&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 станів автомата. Оскільки мій компілятор C++ у VHDL ще не здатен відкомпілювати такий код, то вирішив намалювати граф-схему алгоритму вручну.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/uk/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/uk/blog/c-plus-plus-prydumaly-v-srsr/" 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:/uk/blog/c-plus-plus-prydumaly-v-srsr/</id><content type="html">&lt;p&gt;Знайдено докази того, що мову C++ було придумано в СРСР. На рисунку нижче показано фрагмент секретної документації до системи керування стратегічним ядерним інкубатором.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://obrizan.com/uk/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>