Так себе программист
97 subscribers
184 photos
7 videos
1 file
183 links
Меня зовут Александр Троценко. Разработчик, преподаватель, к.т.н. Пишу о программировании и профессии.

10 лет в разработке desktop на C/С++

Контент: https://taplink.cc/atrotsenko
Download Telegram
Прозаседавшиеся

Ещё 100 лет назад Маяковский смеялся над любителями заседать.

Его герои разрывались пополам, лишь бы успеть на все заседания. В прямом смысле слова:
И вижу:
сидят людей половины.
О дьявольщина!
Где же половина другая?


Но для секретаря все выглядит привычно:
Они на двух заседаниях сразу.
В день
заседаний на двадцать
надо поспеть нам.
Поневоле приходится раздвояться.
До пояса здесь,
а остальное
там.


Больше века прошло, а концепция все та же. Только теперь мы называем это созвоном)

—

Заседаете?

😁 - Ага, разрываюсь
👍 - Бывает, без фанатизма
🔥 - Неа
😁6👍4🔥3
Какой паттерн используют, когда кучу параметров метода собирают в один объект?
Anonymous Quiz
15%
Template method
30%
Data transfer object
19%
Singleton
37%
Context object
Скепсис по ИИ: поговорим через 10 лет

Смотрю итоги и прогнозы в журнале "САПР и Графика". В отличие от прошлого года акценты сместились в сторону ИИ-инструментов.

Мнения компаний разделились: от скептицизма до оптимизма.

С оптимистами и так все ясно, куда интереснее мнение скептиков. Согласно нему ИИ - это перегретый тренд, пузырь, искусственный опыт, а его внедрение возможно "минимум через 10 лет".

Загибайте пальцы:
- проблемы Oracle,
- убыточность крупнейших ИИ-стартапов,
- финансовые потери OpenAI,
- отсутствие прибыли от внедрения ИИ,
- снижение рыночной доли ChatGPT.

Так еще и обучаются ИИ-шки не на энциклопедиях, а на постах с Реддита!

А слышали недавнюю историю о затонувшей западной подводной лодке? Подлодка успешно прошла ходовые испытания, но не всплыла после первого погружения:
Оказалось, что при проектировании расчеты поручили ИИ, который и посчитал всё, но без учета сотых после запятой… И никто из специалистов не проверил…

Честно говоря, первоисточников я не нашел. Но, допустим.

Все это стоит аргументом к тому, что нам не надо торопиться с внедрением ИИ еще лет десять.

В то же время Китай и США наращивают ИИ-шные инвестиции. Системы будут развиваться. И есть мнение, что "на горизонте 3 - 5 лет разрыв может стать непреодолимым".

Дух неопределенности вокруг внедрения ИИ можно понять. Есть технологии, которые приходили и уходили. Вспомним 3D телевизоры и VR. Но даже эти технологии не исчезли, а только лишь спрыгнули с волны хайпа и устаканились в своих нишах.

На своей заре САПР тоже встречали с сопротивлением. Почти полвека назад первые САПР произвели революцию: теперь за день можно было сделать то, что раньше занимало месяцы. Скептики, видя угрозу своему профессиональному статусу, говорили, что молодые инженеры превращаются в простых операторов, программы становятся "черным ящиком", инженеры не обладают экспертизой разработчиков...
Тогда САПР ломали устои, а сегодня позволяют создавать сложнейшие продукты инженерной мысли. Продукты, недостижимые в прошлом.

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

Упаковывать и структурировать данные и экспертизу можно уже сейчас. Не важно, есть ИИ-пузырь в действительности или нет. Но почему и, главное, чего нам нужно ждать еще 10 лет, мне не понятно.

—

Читать еще:
- Что такое САПР
- Как разрабатывать САПР на C++
👍2🤔2
#include <iostream>

class MyClass {
private:
int secret = 42;
};

int main() {
MyClass obj;
int* ptr = (int*)&obj;
std::cout << *ptr;
return 0;
}
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
14%
0
50%
42
18%
"Мусорный" вывод
18%
Никакой. Ошибка компиляции
👍1
Ошибка компиляции или ошибка времени выполнения

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

Ошибка времени выполнения - это ошибка, которая возникает во время выполнения программы, после успешной компиляции.

Да, в успешно скомпилированной программе все равно могут быть ошибки!

Хотя нет, лучше так:

Да, в успешно скомпилированной программе все равно есть ошибки!

Как-то студент в ответ на мое: "Тут ошибка", сказал: "Не может быть, все скомпилилось". Пошутил, наверное... и невольно запустил монолог про зверинец ошибок времени выполнения. Защита лабораторной была полезной как никогда)

—

Читать еще:
- Синтаксис или семантика
- Исключение или код ошибки

#Словарь
👍3😁1
Нетипичная пятничная задачка. Вспомним математику)

Есть круглая мишень, вписанная в квадратный лист (касается сторон). Стрелок расстреливает мишень, укладывая пули случайно по закону равномерного распределения. Как будет соотносится количество попаданий в круг к общему числу попаданий в квадратный лист мишени?

👇
🤔2🤯2
Как будет соотносится количество попаданий в круг мишени к общему числу попаданий в квадратный лист?
Anonymous Quiz
20%
π
80%
π / 4
0%
Неизвестно
0%
1
Дипломы пишутся с ИИ

На днях закончил курс от Яндекса на тему применения ИИ при подготовке дипломов. Приятно осознавать, что делаются попытки "обелить" использование инструмента.

Ранее с появлением ИИ встал вопрос эффективности практических заданий по программированию. ИИ легко выполняет большую часть из них. Задания рассчитаны на постепенное вкатывание. Они не сложные для выполнения и имеют хорошие формулировки. А это по сути - готовые промпты.

Запретить студентам использовать ИИ невозможно. И не нужно. Все равно работодатели все чаще требуют владеть этими инструментами. При этом никто не делает скидку на остальные профессиональные компетенции. Нужно уметь делать то же, что и раньше, плюс ИИ.

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

То же самое с выпускными дипломными работами. В тексте работ появляется раздел с описанием кейсов применения ИИ: для чего применялся, как выглядели промпты, как интерпретировались и проверялись результаты. Прозрачность в этом вопросе позволит избежать снижения качества работ, а также поддержит отработку навыков работы с ИИ у выпускников.

В общем, интересно участвовать в новых процессах) Тема набирает обороты, ИИ развивается и пока не понятно, где границы возможностей этих систем. Но этих возможностей становится определенно больше. Задача - их не прозевать.
👍7🤔2
import hashlib

def get_md5_hash(str):
return hashlib.md5(str.encode()).hexdigest()

s1 = input()
s2 = input()

if s1 != s2:
h1 = get_md5_hash(s1)
h2 = get_md5_hash(s2)
if h1 == h2:
print(1)
else:
print(0)


Сегодня у нас python. Давайте подумаем над выводом программы 👇

Подсказка, если не знакомы с python:
Функция get_md5_hash() возвращает хэш MD5 для входящей переменной. Функция input() запрашивает ввод пользователя с клавиатуры (что-то вроде std::cin)
👍2
Может ли программа выше при корректной работе вывести на экран "1"?
Anonymous Quiz
62%
Может
38%
Не может
Баг в операционной

В 2020-2021 годах я участвовал в испытаниях софта по диагностике аномалий сердечного ритма. Испытания проводились во время реальных операций на сердце.

На пациента крепилось 200+ датчиков, с которых в наш софт передавалась электрокардиограмма (ЭКГ). Софт в режиме реального времени решал обратную задачу и восстанавливал картину возмущений на сердце. Это должно было в моменте помочь кардиохирургу уточнить план работ.

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

Но ближе к делу. Точнее, к багу. На одном из испытаний проверялось автоотключение датчиков с плохим сигналом. И в самом начале операции я понял, что эта штука не работает. Датчики перманентно выдают шумы, на которые система реагирует и блокирует свою работу. Пациент дышит, команда что-то двигает - помехи идут постоянно. Ок, фиксирую несоответствие и отключаю эту систему, чтобы продолжить план испытаний. Но не тут то было. Она не отключается!

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

Я вышел из операционной, достал ноутбук и быстро нашел в коде проблему. Глупая, элементарная ошибка, которую я сам занес и ни разу не проверил... Собрать новый дистрибутив не получалось. Чего-то не хватало, уже не помню. Оставался вариант подключиться к офису и собрать там. Но в операционной не было связи. Вынес планшет в "предбанник", раздал интернет, подключился, исправил и собрал комплект. До начала второй операции успел все выкачать и развернуть на рабочей станции... Выдохнул.

В тот день план испытаний был выполнен. Счастливая случайность: буквально накануне я приобрел сим-карту с безлимитным интернетом. На всякий случай, который оказался не всяким, а решающим.

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

Мало найти очевидное. Научиться бы видеть невероятное.

—

Читать еще:
- О рентгеновских лучах
- Протезирование сердечных клапанов: взгляд из 1985 года
🤯4👍3
#include <iostream>

int main() {
int i = 0;
std::cout << ++i;
std::cout << i++;
std::cout << i;
return 0;
}
😁4🎉2
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
16%
011
16%
012
60%
112
8%
123
🙏4❤2🙉2
Объект или предмет исследования

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

Нет, ну реально, "объект" и "предмет" звучат как одно и то же. Я же вижу на столе "объект", но его же могу назвать "предметом".

Позже, изучая статьи по писательству, я выделил ключевую мысль: важно ограничивать тезисы, которые мы хотим донести до читателя. Не стоит распыляться, иначе читатель увязнет в тексте и ничего не поймет.

Как раз на этом моменте и всплыли те самые "объект" и "предмет". Оказывается, они задают рамки. Это, собственно, видно из определений.

Объект исследования - это широкая область, процесс или явление, которое изучается в работе.

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

То есть объект шире предмета, а предмет - это часть объекта исследования.

Например:
- Объект исследования: Разработка приложения заказа еды.
- Предмет исследования: Алгоритм рекомендации блюд на основе истории заказов.

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

Сохраняйте, кому предстоит защита работы в ВУЗе)

—

А вы как, работали уже с этими понятиями?

👍 - Ага
😁 - Неа
🤔 - Видимо, предстоит

#Словарь
👍5😁3🤔1
#include <iostream>

int main() {
uint8_t a = 255;
uint8_t b = 1;
uint8_t c = a + b;
std::cout << int(c);
return 0;
}


Подсказка для незнакомых с C++:
uint8_t - беззнаковый 8-битный целочисленный тип
This media is not supported in your browser
VIEW IN TELEGRAM
Принять или толстый

Да-да. Имейте в виду, если используете автоматический перевод страниц 😁

Не понятно, почему он так переводит. По коду HTML там ничего подозрительного. Видимо, он просто обзывается)

—

Кстати, это была 9 часть рубрики "Путаница в интерфейсах".
Читать еще:
- Когда фильтры - так себе фильтры
- Переключатель в Яндекс Книгах
😁4👍1👏1
#include <iostream>

int main() {
int8_t a = 127;
int8_t b = 1;
int8_t c = a + b;
std::cout << int(c);
return 0;
}


Подсказка: можно сравнить с предыдущим тестом и сделать вывод 👆
😁2👍1
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
36%
0
32%
128
12%
-128
20%
Неизвестно. Зависит от реализации