субота, 15 серпня 2020 р.

Онлайн інструменти для С++

Compiler explorer logo
Попередній пост задумувався як приклад використання онлайн-засобів для роботи із С++, однак, осмислено показати більшість із них не вдавалося. Тому пишу ще один.

Ремарка: пам'ятайте, що більшість із цих проектів -- приватні, на особистих (чи арендованих своїм коштом) серверах авторів, хай і з залученням пожертв. Будьте акуратні -- не зловживайте, не заваліть DDoS-ом.
Щоб нормально роздивитися зображення -- клікніть по них. На жаль, не вдається мені за розумний час дійти толку із ресайзером Blogpost, вони виходили або заширокі, або нечитабельні.

Compiler explorer -- https://godbolt.org

Напевне, перший і найпопулярніший із них. 

середа, 12 серпня 2020 р.

Навіщо розуміти комп'ютер, якщо сучасні мови та їх бібліотеки такі потужні?

Працюю із дуже розумними та працьовитими студентами. Тому основне обмеження -- рівень їх мотивації. Важливо показати їм -- навіщо все це. Звісно, власний похід по граблях дає глибший і стабільніший результат, але це довга дорога, хотілося б її спростити. Тому -- очевидні для них приклади плюс практика. 

Байка - 1


Типовий "мотиваційний" приклад -- історії про вирішення задачі підрахунку слів у текстових файлах. Фабула наступна, пропонуєш цю задачу новій аудиторії, наступного разу: 

вівторок, 30 квітня 2019 р.

0xB800

BD.COM із запущеним вірусом die385.
Випадково зіткнувся із авторами симпатичного дебаггера епохи 90-х, BD.COM. Є навіть надія, що його джерельні тексти на github потраплять. Та й згадав в процесі тих розмов про магічне число, B800/B8000. Виявляється, про нього зараз пам'ятає менше людей, ніж я очікував. :-)

Колись давно (1976) вирішила Intel на колінці зробити мікропроцесор,  щоб «закрити» ринок, поки розроблять щось більш достойне. Вийшов він в 1978 і називався 8086. Процесор був 16-бітний, однак міг адресувати цілий мегабайт пам’яті (на що, як ми знаємо, потрібно 20 біт), за допомогою хитрого трюка – адресу ділили на дві частини, по 16 біт. Для отримання «справжньої», фізичної адреси, яку процесор може використати для звертатиметься до пам’яті, першу частину зсували на 4 біти вліво (це те саме, що множити на 16) та додавали другу.

Першу частину, наслідуючи «дорослі» машини, які підтримували сегментацію – можливість ділити пам’ять на ізольовані блоки, сегменти, назвали сегментом. Ніякого розділення, звичайно, не було – воно «приросло» в 80286 (1982), але слово гарне, все таке. Другу – зміщення (відносно початку сегменту). Тобто, адреса складалася із пари segment:offset. Для адреси сегменту було виділено спеціальні сегментні регістри, не змінюючи яких, можна було звертатися до 64Кб, маніпулюючи 16-бітним зміщенням.

четвер, 26 липня 2018 р.

"Undocumented DOS", 1st edition

Ще одна "ретрорецензія". Про "романтичні" комп'ютерні 90-ті я вже не раз писав. Поміж популярних тогочасних хобі було написання вірусів. DOS -- ідеальне середовище для них, ніякого захисту, вся система як на долоні -- розважайся, скільки зможеш. Але сяка-така протидія, все ж, була -- ранні антивіруси, пошук підозрілих процесів і дивних блоків пам'яті тощо. За відсутності розмежування доступу, змагання вірус-антивірус було цікавою грою. А вміння працювати із внутрішніми, недокументованими, структурами DOS було корисним для ефективної участі в ній. Приклад: багато антивірусів не відслідковували роботу із файлами через і FCB.  Та й цікаво -- раптом недокументоване включає якісь містичні можливості. Ходить справедливий жарт: "Чогось недокументованими можливостями найбільше цікавляться ті, що документовані поки толком не освоїли". З іншого боку -- нам було від сили півтора десятиліття. :-) 
Важлива ремарка -- DOS і суміжні сфери в той час на Заході вже стрімко втрачали актуальність. Навіть OS/2  своє доживала, як виявилося пізніше. Але ми працювали із старою технікою (наприклад, Пошук-1/Пошук-2 -- слабенький клон PC XT середини 80-х) та із старою літературою. Зараз дивлюся на книжки -- добуті чудом, по яких тоді вчився, і жахаюся їх рівневі. І дуже різко реагую на заяви студентів "Ми не змогли розібратися - літератури немає", за наявності доступу до яких хочеш книг, пошукових систем взагалі і StackOverflow зокрема та ще й можливості запитатися у місцях, де буває тисячі людей, які вміють та хочуть пояснити новачкам.

пʼятниця, 23 березня 2018 р.

Книги по C++ -- список літератури

Завдяки Українському Католицькому Університету маю можливість розповідати про сучасний С++ дуже хорошим слухачам -- нашим студентам, представникам компаній тощо. Написаний раніше, в 2013-му, якраз для таких розповідей, список літератури: "Книги по C++ -- деякі конкретні рекомендації", встиг помітно застаріти. З того часу відбулося багато змін в С++ та відповідній екосистемі: вийшло ще два стандарти С++14 і С++17, а С++11/С++14 нарешті ввійшов у (широку) практику. Та й мої погляди на вибір літератури з того часу теж трохи змінилися. Тому вирішив написати новий.
Суміжний текст, "Загальні міркування", (крім природного врахування нових стандартів), залишається актуальним.
В принципі, всі згадані книжки можна знайти  в Інтернеті. Але посилань не наводитиму. Якщо дуже критично -- пишіть.

Українських перекладів жодної із них не існує, або я не зміг знайти... На російськомовні варіанти книг часто даю посилання із магазину "Гіада" у Львові. Я з ними ніяк не афілійований (ну, крім того, що іноді книжки там купляю), але цей магазин мені подобається, крім того, єдиний у своєму класі у Львові -- не хотілося б, щоб його спіткала доля аналогічного у 5-му корпусі Політехнічного.

Англомовні -- або на авторську сторінку, або на Амазон чи іншого видавця.
Мушу зізнатися, не всі із цих джерел -- книг, посилань, я прочитав акуратно, від початку до кінці. Тому могли затесатися неоднозначні, які мені цю неоднозначність не встигли показати. Про можливість такого наголошуватиму в описі джерела. Також, є ряд джерел, про які мені точно відомо -- у них є виражені негативні елементи, однак є і щось варте уваги -- про це теж писатиме.

Карта С++17 від Алена С++. Клікабельно!

неділя, 17 грудня 2017 р.

STM Studio -- монітор змінних STM32

Намагаючись дійти толку із SemiHosting без зневаджувача, натрапив на цікавий інструмент: STM Studio. Не слід плутати із купою інших "студій", це не IDE, це: "run-time variables monitoring and visualization tool for STM32 microcontrollers" -- програма, яка дозволяє інтерактивно спостерігати за змінними програми, залитої в мікроконтролер.
Вона використовує згадуваний тут режим моніторингу, тому теж змінює налаштування відладки MCU, але, принаймні (іноді) очищає їх, на відміну від OpenOCD.
Така можливість корисна тоді, коли зупинка в дебагері -- не варіант. Наприклад, при зневадженні коду SemiHosting ;-). Або коли відбуваються якісь процеси, де паузи -- неприйнятні.  

Чудес від цього, доволі простого, інструменту, очікувати не доводиться, але він корисний -- шкодую, що не знав про нього раніше. Не претендуючи на повноту, коротко глянемо, як його можна використовувати.

четвер, 14 грудня 2017 р.

USB VCP інших плат сімейства STM32 Discovery

"USB Zoo"
Мікроконтролери навіть в межах одного сімейства трішки відрізняються один від одного. Якщо користуватися HAL, портабельність буде високою, але, все ж, не абсолютною. Вирішив повторити описане в попередньому пості, про USB на STM32F3Discovery, для інших плат, обладнаних роз'ємом USB, поміж описаних тут. Їх три (Blue pill поки не розглядав):
  • STM32F4Discovery, із MCU STM32F407VG -- ARM Cortex M4F,
  • STM32F072BDiscovery, із MCU STM32F072RBT6 -- ARM Cortex M0,
  • 32L0538Discovery, із STM32L053C8T6 -- ARM Cortex M0+.
Кожна із цих плат чимось цікава, наприклад, акселерометр та мікрофон в F4, e-Ink-дисплей в L0 тощо -- думаю, ще не раз до них повернемося. Але тут говоритимемо лише про USB CDC VCP.