Перейти к содержанию
    

Почему для GCC следующий код в полном порядке?

так и представляю матч с против с++. хотя это разные инструменты и нужны для разных вещщей.

видел гибрид (...,  в смысле дописывал проект) в котором программер дефайнами создал такой визуальный код, который внешне походил на плюсы, но был чисто сишным. он был гением, гении уходят ,  тварения остаются . в смысле: после него надо переписывать. и контора попала на время*деньги.

31 minutes ago, Forger said:

а ничего не делать, оставить как есть, я серьезно!

просто ставлю свои простые обертки вокруг чужого и стороннего кода, т.н. wrappers, по сути это некий интерфейс между чужим кодом (порой откровенным го%кодом) и моими проектами, 

позволяет и "не измазаться" в чужом коде и если что его обновить на более "свежее" г

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

 

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

 

был у нас программер. ага. говорил так. если мне надо операцию 5 раз повторить я строчку подряд пять раз копирую.  для банка софт писали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, firstvald said:

дело в том, что код пророс аппаратурой

сочувствую, особенно если времени и сил его переписывать чуть не с нуля категорически нет (

18 minutes ago, firstvald said:

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

это не гений, это очень мягко говоря ... чудак ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 29.11.2023 в 21:12, firstvald сказал:

был у нас программер. ага. говорил так. если мне надо операцию 5 раз повторить я строчку подряд пять раз копирую.  для банка софт писали.

это называется анроллинг )

В 29.11.2023 в 21:12, firstvald сказал:

так и представляю матч с против с++. хотя это разные инструменты и нужны для разных вещщей.

...

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

если проект представляет собой монолитный комок дерьма (ball of mud), без разницы, на каком языке он написан. ПлюсАми тут мало что изменишь. Ну разве что в процессе переписать все с нуля

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, firstvald said:

но, если он развивается несколько лет, его, скорее всего,  надо будет переписать с нуля.

это не так, возраст не помеха ))

все будет в порядке, если с самого начала структура проекта была спроектирована и разбита на независимые модули/блоки (дерево), зависимости строго декларированы и эти требования соблюдаются на всех этапах развития проекта

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЫЫЫЫ я на прошлой неделе правил свой проект для процессора 9 летней давности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чой-то невозможно? На "голых Сях" написана FreeRTOS, и ничо, уже почти два десятилетия живет. И наоборот, переписать еёйную сейчас на С++ будет означать овер-дофига работы с самого нуля. Кто пойдет на это просто ради моды на ++?

На голых Сях вполне нормально можно делать оформленные модули. Вы все (надеюсь) знаете - два файла *.c и *.h. И если с самого начала они написаны толково, то они такими и останутся. Структура проекта задается не языком программирования, а мозгом программисто. А гумно можно и на ++ и на # написать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, EdgeAligned said:

На "голых Сях" написана FreeRTOS, и ничо, уже почти два десятилетия живет

так freertos - это лишь набор сервисов/функций, по сути библиотека, поэтому может быть написана на чем угодно )

 

20 minutes ago, EdgeAligned said:

И наоборот, переписать еёйную сейчас на С++ будет означать овер-дофига работы с самого нуля. Кто пойдет на это просто ради моды на ++?

а зачем с нуля?

вот для себя в свое время спроектировал плюсовую обертку под любую ртос, первой была tn-kernel, второй на адаптации была freertos, сейчас применяю "штатную" ось от arm

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

на то она и обертка - изолировать чужой код с его тараканами от своего кода, у которого наверно тоже есть свои тараканы )

 

20 minutes ago, EdgeAligned said:

На голых Сях вполне нормально можно делать оформленные модули.

Да, но это библиотеки, т.е. набор функций. С этим спора нет.

 

21 minutes ago, EdgeAligned said:

Структура проекта задается не языком программирования, а мозгом программисто. А гумно можно и на ++ и на # написать.

Разумеется, но структуру/иерархию проекта куда проще реализовывать на структурном/объектном языке (те же плюсы), чем на "процедурных" сях

В свое время я начинал с сей, но закономерно перебрался на плюсы. Целиком на сях реализую простые и притивные проекта "одного дня", там плюсы ни к чему )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так ведь концепция языка Си (да и ++ тоже) - набор функций (методов в ++). Любой набор функций может быть "библиотекой". И если программист коряво мыслит и пишет, то ни ++, ни #, ни какой другой изык евоные творения не сделает трушными и расово-верными (как у нас раньше говорили).

Функционал FreeRTOS запихивать в какие-бы то ни было обертки не требуется. Зачем добавлять еще одну прослойку? Ну а ихний код, он ведь и так изолирован, вы его не касаетесь, а общаетесь через набор предоставляемых интерфейсов. В принципе, там всё предельно ясно. Ну а перепиливать велосипед под свои вкусы - ну это кагбе... не запрещено, конечно, но излишне. Главный принцип мастера знаете? "Работает? - Не лезь!"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, EdgeAligned said:

Так ведь концепция языка Си (да и ++ тоже) - набор функций (методов в ++). Любой набор функций может быть "библиотекой".

конечно можно и обратно, не секрет, что плюсы обратно совместимы с голыми сями, но ведь ни разу не наоборот )

только вот какой смысл на плюсах делать только то, что голые си умеют? вопрос риторический

 

13 minutes ago, EdgeAligned said:

И если программист коряво мыслит и пишет

когда я говорю о плюсах, я подразумеваю, что программист уже вырос из этой "ясельной группы" ))

 

15 minutes ago, EdgeAligned said:

Функционал FreeRTOS запихивать в какие-бы то ни было обертки не требуется.

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

 

19 minutes ago, EdgeAligned said:

Ну а перепиливать велосипед под свои вкусы

конечно это бессмысленно, поэтому и говорю, что: 

31 minutes ago, Forger said:

сами файлы оси разумеется никаким правкам не подвергаются

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, Forger said:

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

со стандартом 89 года. Си после  этого тоже развивался,  и уже со стандарта С99 не является подмножеством C++. Некоторые модные  языки столько даже несуществуют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, one_eight_seven said:

и уже со стандарта С99 не является подмножеством C++.

любой плюсовый компилятор имеет соотв. опцию для компиляции таких файлов, даже бесплатный gcc, возможно этот ключ даже активен по-умолчанию

21 minutes ago, EdgeAligned said:

В принципе, там всё предельно ясно.

если пользоваться только ею и постоянно, то постепенно запоминаешь набор функций и сервисов, но стоит переключиться на полгодика на что-то другое, как все по новой ((

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 минут назад, Forger сказал:

когда я говорю о плюсах, я подразумеваю, что программист уже вырос из этой "ясельной группы" ))

Не факт! Ардуина пишется целиком на ++. Результат "ясельной группы" виден невооруженным глазом. Да и в принципе, ни что не мешает говнокодить на ++. Это родственные языки, изменений там минимум, остальное навешано поверх.

30 минут назад, Forger сказал:

но стоит переключиться на полгодика на что-то другое, как все по новой

Это нормально, таково свойство чел.памяти. Точно так же вы забудете то, что понакрутили сверху, если на какое-то время отойдете от дел. Но "заводскую сборку" можно хоть как-то вспомнить, прочтя мануал, а вот свои маляки - без поллитры хрен разберешь, если забыл. Ну и тем более, что FreeRTOS тоже не стоит на месте, обновляется, добавляется что-то новое. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 minutes ago, EdgeAligned said:

Ардуина пишется целиком на ++.

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

 

43 minutes ago, EdgeAligned said:

Точно так же вы забудете то, что понакрутили сверху

Нет такой проблемы, ибо вижу только свой как говорите "накрученный" код - только мои имена немногочисленных классов/методов/функций, которые МНЕ понятны и очевидны с полуслова, а не "шифровки" сторонней библиотеки, где удивляешься как сами разрабы в них ориентируются. 

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

Мне нет нужды лезть в код, обернутый когда-то моими обертками, ибо он однажды уже отлажен и зафиксирован (все под svn).

У меня вообще есть общая для всех проектов задокументированная схема построения и приготовлены соотв. шаблоны. Также есть общая для всех проектов часть исходников, которая лежит в общей common папке. Используется в разных проектах.

В частности библиотека работы с железом на плюсах Hardware, там МНЕ все понятно и логично.

Такая схема меня целиком устраивает и позволяет поддерживать порядок в моих проектах. Делюсь личным опытом, не более.

 

Если у кого-то реализован иной механизм, то мне было бы интересно послушать )

45 minutes ago, EdgeAligned said:

Но "заводскую сборку" можно хоть как-то вспомнить, прочтя мануал,

вот как раз все в точности наоборот по личному опыту,

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

переключение если и есть, то очень быстрое, 

со сторонними либами такой роскоши не замечал (

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, эт лично ваш велосипед. Хотя на самом деле нет там никаких сложностей. Я вот даже на память: xTaskCreate(TaskFoo, "TaskName", 100, NULL, 1, &pxTaskHandle); Повторение - мать учения, какгрицца. А изобретать свой няшненький лисапедик с розовенькими колесиками - ну эт кагбе. Не запрещено, но нахрен не нужно. Тем более, когда вдруг придется работать в команде (в том числе и на фрилансе), вас либо заставят писать на стоке, либо пошлют на и в.  Я знаю, я работал в составе команды. И там были требования, вплоть до оформления - стиль форматирования текста скинули файлом настроек, стандартное документирование doxygen, имена переменных и прочего - в таком-то стиле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...