Ха, новый проект на плюсах! / языки программирования :: программирование :: it-юмор :: комикс :: С++ :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek языки программирования программирование С++ комикс 
Ха, новый проект на плюсах!,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,языки программирования,программирование,С++,комикс
Подробнее
Ха, новый проект на плюсах!
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,языки программирования,программирование,С++,комикс
Еще на тему
Развернуть
И это он ещё до UB не дошёл. :)
Ого С++ почти как... почти всё.
Сталкиваешься с ошибкой, тратишь весь рабочий день, чтобы её локализовать, исправить или хотя бы обойти. Следующий день тратишь на поиск информации в сети. Находишь древний всеми забытый форум где описывается твоя проблема в комментарии за 2001 год. А следующим комментом идёт ответ из 2010, где ему отвечают, что новые разработчики CBuilder данную проблему решили в одном из патчей в 2005 году. Совместимости со старыми проектами в новых версиях нет.

За пару часов пересоздаёшь проект с полным копированием всего кода и компонентов. Работает.

один друг, адепт низшего пищевого звена программирования, интересуется - а как можно пофиксить проблему пересоздавая проект? Типа юзая рефы на обновлённые апи либ, или в чём цимес?

Умер стандартный компонент кнопки в стандартной библиотеке. Переподключение её в проекте результатов не дало.

Условно, на форме три стандартные кнопки. Созданы в мохнатых годах не мной, десяток лет их код точно никто не трогал. В один момент, даже не после апдейта программы, а просто в случайное время, одна кнопка перестала работать. Нажимаешь, а там ошибка с набором буквоцифр, и краш программы.
Крашит сразу после прохода всего кода на кнопке. Переносишь код на соседнюю кнопку, этот код на другой кнопке работает.
Если удаляешь весь код внутри, кнопка всё равно крашит.
Если создаёшь новую пустую кнопку на форме, она ТОЖЕ КРАШИТ!
Смотришь прошлые версии программы, там эта кнопка тоже не работает.
Весь код этого компонента идентичен коду соседних, но которые работают. ctrl+C ctrl+V рабочей кнопки создаёт нерабочую.
Открываешь другой рабочий проект, создаёшь пустую кнопку, она работает.

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

Только стандартные библиотеки от Borland CBuilder 5 и 6.

то бишь - вы сами не знаете? )



МЫ НЕЗНАЕМ -ЧТО ЭТО ТАКОЕ]
Я был бы рад постигнуть единение с машиной, чтобы говорить на их языке, но увы. Мне и самому интересно, в чём могла быть причина такого поведения программы.

первое, что в голову приходит - это перелинковка. Но ни я, ни мой друг не шарят. И друг просто в восторге, что с его скриптовым говном, проблем такого плана не существует) Спасибо за инфу

Похоже на ошибку работы с памятью. То самое UB. Поведение зависит от рандома, который оказывается в определённом блоке памяти. В вашем случае вышло так, что в 99% случаев оно не сказывается на поведении. Но когда наступает этот 1% - начинаются чудеса.
SSSZ SSSZ 12.04.202421:07 ответить ссылка 4.4
Гейзенбаги в C/C++ всегда связаны с ошибкой работы с памятью. В этом случае то что проблемный "код работает" не является подтверждением его правильности. Ему просто повезло, но он всё равно кривой.
В современном окружении, как правило, отлов багов с памятью не представляет большой проблемы (valgrind), за исключением довольно вычурных ошибок программиста приводящих к stack smashing'у (но и тут есть методы). В случае с Borland C ребятам можно только посочувствовать.
Это долбанная магия.
Velor Velor 13.04.202404:10 ответить ссылка 3.9
если что-то относительно стабильно воспроизводится, то обычно не проблема выяснить в чем дело. на лине такое вполне комфортно ловится через valgrind и gdb. быстрый поиск говорит что на винде тоже есть неплохие аналоги: (drmemory, verysleepy, VMMap, Application Verifier). в теории, для системщика, бинари не особо отличаются от скриптов, но сама история полна мистики и приключений. спасибо.
Борланд? Дед, лезь обратно в свою криокапсулу.
Я не дед. Пришёл с ВУЗа на завод, и вот...
Сама история из 2020. Даже сейчас там продолжают работать на этом. Сейчас на моё место пришёл смельчак, который всё это переносит на web, я лишь пожелал удачи. Для одного человека там неподъёмный объём, и от такого наследия там избавятся не скоро.
Это компилятор ахуенно оптимизирует?
>> Крашит сразу после прохода всего кода на кнопке. Переносишь код на соседнюю кнопку, этот код на другой кнопке работает.

Ах, если бы были эти. Как их там. Брейкпойнты...
омич омич 13.04.202404:29 ответить ссылка -1.2
Ну так я пошагово и выполнял. Я же сказал, после последнего оператора в Button1Click сразу и выбрасывало, сразу. И если правильно помню, падало вместе с билдером. Он вообще любил падать вместе с программой, так что особо не удивляло.
Так это везде, где есть софт с долгой историей, а не только на плюсах и даже не только в программировании
Ты только что легаси
Пускай теперь попробует что-то написать на Vulkan, вот тогда срака будет гореть. С++ - это так, цветочки.
Так можно совмещать. Причём, обычно, как раз, и совмещают.
Я знаю, я Вулканом и С++ уже 8 лет занимаюсь :)
А что там с вулканом? В чем жопа?
То, что занимает в OpenGl одну строчку, на Вулкане может занимать несколько классов.
А преимущества есть? Стоит ли вкатываться сейчас? Думаю вот пощупать граф либы, интересно мнение изнутри
Ну Вулкан сейчас является трендом. Он более низкоуровневый, чем OpenGl, что позволяет иметь больше контроля за ресурсами. Теоретически может дать профит на 10-20%
VarVarith VarVarith 13.04.202400:35 ответить ссылка -1.6
Да так на любом новом проекте с неизвестной архитектурой.
WINTEX WINTEX 13.04.202401:27 ответить ссылка 1.1
Хочу хотя бы C++. Хотя бы есть контейнеры. Шаблоны. RAII. Я устал обработать ошибки через goto и делать полиморфизм через void*, босс.
Зочем ты в это говно вообще полез
А оно как-то исторически сложилось с тех пор, когда мне в школе в руки попала ардуина. Хотя около-железные наклонности и раньше были. Я к тому моменту уже прогал на VB, потихоньку переползая на шарп. В универе сначала прогал веб на шарпе, мобилки, а потом как-то ушел в сишку.
Кто-то сказал RAII?

В проекте в прерывании была ошибка, грубо говоря инкремент count++ не работал, спустя пару дней понял, что если переписать простое условие со switch case на if - начинает работать

Fanrin Fanrin 13.04.202412:29 ответить ссылка 0.0
А настоящий плюсоёб бы открыл Disassembly и посмотрел что там нагенерилось, что инкремент не работает. Поменял бы пост-инкремент на пре-инкремент, и была бы благодать...
Loser2 Loser2 06.05.202401:14 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Выбираем первый язык программирования
Да
т
У вас есть друзья?

i
Да
Т
Хотите много зарабатывать?
jL
Да
ш
	Вы тупой?	
		
т.		
Т
Вы насмотрелись уроков ХАУДИ ХО?
/Г
Да
7
Python
	Вам		
г~	нравится		1
1	Windows?		
Нет

Fortran
А они вам нужны?
Они тоже	РНР	
тупые?		
Да
т
подробнее»

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

Выбираем первый язык программирования Да т У вас есть друзья? i Да Т Хотите много зарабатывать? jL Да ш Вы тупой? т. Т Вы насмотрелись уроков ХАУДИ ХО? /Г Да 7 Python Вам г~ нравится 1 1 Windows? Нет Fortran А они вам нужны? Они тоже РНР тупые? Да т
Почему?
Почему?!
^>о->Ьаг() — Почему?



— А, вот почему... Newbie: So which programming language should I learn first?
Programmers: ¡ndex.js
JavaScript Moment
1	console log(018 == '018');
2	console log(017 == ‘017');
3
■ Default: node index.js
true
false