ДонРеба
Създадено на 14.03.2021, видяно: 756 пъти. #31681
както винаги, най-големите проповедници не са много наясно. то има как да се дефинира и да се направи, всички тия шитове с недефинираното поведение идват не от някаква трудност за дефиниране, а защото по замисъл езика трябва да е бърз, авторите много са държали точно на тая му част, и не са искали чрез дефиниция да принуждават компилатора да генерира бавен код. например ако дефинираш строго размер за инт да е 32 бита, на 16 битов процесор кода ще е излишно бавен (така недомислено са смятали), или пък ако дефинираш >> да е аритметичен шифт, на 6502 няма такава инструкция и компилатора ще генерира излишно разни хватки с флага за пренос и кода ще е бавен. практиката обаче показва че това са били много лоши сметки без кръчмар, направо учебникарски пример за "каква я мислехме каква стана". не само че УБ е пряка причина за милиони бъгове, но и практически води до точно обратното - за да се избегне УБ кода става по-бавен. нормалните програмисти не знаят стандарта, ако някой знае стандарта значи е тежък социопат и ще ти докара ядове в колектива. нормалните хора просто свикват с конкретна платформа, където нещата са конвергирали някак си, и когато минат на друга бам бам, УБ бъговете почват да валят.
Евлампи
Създадено на 14.03.2021, видяно: 739 пъти. #31685
Забавното е че в цъ без плюсовете понеже е грубо ренде зависимия от платформата/средата код от немайкъде се изолира в обособена част на проекта и тия неща са по-очевидни от плюс пляса който с всичките 'умни' фатки които предлага дава лъжливата илюзия че може безплатно да се пише код дето хем е 'високо ниво' хем е производителен
ДонРеба
Създадено на 14.03.2021, видяно: 736 пъти. #31687
УБ частите в стандарта са толкова много, че зависимия от платформата код винаги е повече отколкото подозираш, просто с времето научаваш какво не бива да правиш на конкретната платформа, но нямаш си и и на идея кое от нещата които правиш и работят е дефинирано и кое не е. като цяло ако искаш човешко поведение - компилатор на микрософт и пей сърце, всичко се държи правилно, УБ не ти забранява нещата да са правилни, и микрософт избират винаги прявилната интуитивна имплементация, а не "бързата", дето евентуално добавя 0.01 точки в някой чекиджийски бенчмарк, ако си компилирал на О1000. гцц са точно наопаки избират найгадната имплементация, даже да не им носи бенчмарк точки, подозирам че просто ей така да им е гадно на приложните програмисчета и да не забравят че са низша сган. на гцц за да си сигурен че УБ хуевете ще са по-малко (пак ги има), най-добре компилираш без оптимизации, ето така на практика гцц става по-бавен, нищо че реално не е.
Dr.Who
Създадено на 14.03.2021, видяно: 722 пъти. #31690
Аз като по-млад нещо не им вярвах, но се изредиха всякакви С++ гурута и всички ми твърдят, че С++ компилатора генерира код все едно писан на ръка. И тъкмо им повярвах и бам С++11 - "ние добавихме move семантика и сега е още по-бързо".
Е нали беше максимално бързо? Как така още по-бързо стана?
Е нали беше максимално бързо? Как така още по-бързо стана?
Е, ти не си ли гледал реклами за прах за пране?!
Dr.Who
Създадено на 14.03.2021, видяно: 708 пъти. #31693
Е нали беше максимално бързо? Как така още по-бързо стана?
Е, ти не си ли гледал реклами за прах за пране?!
Не съм. Рабин е по рекламите.
Евлампи
Създадено на 14.03.2021, видяно: 699 пъти. #31696
Е, ти не си ли гледал реклами за прах за пране?!
Значи цъ плюс пляс вече изпира и картинките на тениските, при това с по-малко прах ползвайки код от високо ниво!
Голям майтап, не съм хейтър на цпп ама метам некой друг камък по лъснатите му витрини като падне сгода а бях почти цпп zealot навремето, Реба може и да помни :)
|
Създадено на 14.03.2021, видяно: 679 пъти. #31727
Това не го разбрах. Явно не съм достатъчно умен за С++-саджия.
Защо "не може да се дефинира" ?
Аз като пиша на асемблер, всичко ми е на 100% дефинирано и знам процесора какво ще направи.
bvbfan просто си бълнува идиотщини, както обикновено. :)