возврат 2х значений одной функцией

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18670
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: возврат 2х значений одной функцией

Сообщение ARV »

уважаемые спорщики, все сколько-нибудь оставившие след в истории программы написаны НЕ ПО ОЗВУЧЕННЫМ вами правилам, А ВОПРЕКИ ИМ. из смешного - Linux и Windows, из более серьезного - огромнейший парк математических библиотек на фортране, в котором понятие глобальной переменной вообще одно из основополагающих.

а забота о том, что вы декларируете встала после того, как родилось ООП - именно эта идеология ввела понятие инкапсуляции и всего прочего, о чем раньше "знали, но стеснялись сказать" :) все хорошо в меру, и в нужной пропорции в нужном месте. боюсь, перенеся свои идеи в программирование AVR, вы не сумеете и светодиодом помигать - вся память будет потрачена на "стиль" и "правильность доступа" (шутка) :))) кстати, ARM, по-моему скромному мнению, чисто по недоразумению называется МИКРОконтроллером, это тяжкое наследие прогресса, из-за которого уже управление унитазом без 32 бит сделать "невозможно".

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

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: возврат 2х значений одной функцией

Сообщение Goodefine »

У меня, практически в каждой программе, используются глобальные переменные почти точно так же как показано выше. После прочтения подобных заявлений, может и комплекс развиться - страшно код будет показывать, засмеют - будут тыкать пальцем и говорить: "глобальные переменные только в исклююючиительных случаях". Вот и хочется узнать - это исключительный случай, или как? Если нет, то как делать правильно... С Макконелом не знаком, спросить не у кого...
ЗЫ. Заголовок статьи "Оптимизация: ваш злейший враг" сразил наповал. Похоже индусы, писавшие библиотеки для stm8, обчитались до одурения, расклеили по стенам и заучили на мантры данное Творение... И творили и творили...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

Re: возврат 2х значений одной функцией

Сообщение Paguo-86PK »

Недавно писал один проект средней сложности (подмена заднего плане на лету), где все банальные переменные (long i,j,x,y,z; RECT rc,rt; TCHAR text,*txt; и т.д.) сделал глобальными, так-как в программе циклы используются только в функциях никогда не вкладываемых в другие циклы, строки формируются перед выводом на экран и выходом из функции. И т.д. и т.п.

Сначала всё было хорошо. Не нужно было в шапках функций то и дело объявлять x,y или i. Но потом пошли глюки. Нашлись такие узкие места, где нет-нет, да и попадает глобальная переменная в неловкое положение. :)))
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18670
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: возврат 2х значений одной функцией

Сообщение ARV »

Paguo-86PK писал(а):Но потом пошли глюки. Нашлись такие узкие места, где нет-нет, да и попадает глобальная переменная в неловкое положение. :)))
но ведь это не глобальная переменная виновата, а вы :) глюки были, есть и будут независимо от глобальных переменных - это лишь от опыта программиста зависит.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Goldsmith
Опытный кот
Сообщения: 736
Зарегистрирован: Пн янв 10, 2011 03:06:36
Откуда: Ростов-на-Дону
Контактная информация:

Re: возврат 2х значений одной функцией

Сообщение Goldsmith »

ARV писал(а):боюсь, перенеся свои идеи в программирование AVR, вы не сумеете и светодиодом помигать - вся память будет потрачена на "стиль" и "правильность доступа" (шутка) :)))
К моему большому сожалению, это не мои идеи, я лишь заимствовал их у умных людей. Более того, пока эти идеи (вместе с инструментами) не были успешно перенесены в мир МК, я даже боялся браться за их программирование - это примерно как у ремесленника отобрать все привычные инструменты и высадить на необитаемый остров с пустыми руками. Каменный топор-то он, пожалуй, сделает, но вряд ли его изделия будут так же красивы и аккуратны, как прежде. Аргумент "а нечего было привыкать к хорошему" слабо утешает.

Насчет пресловутого "мигания светодиодом" - я по крупицам собрал то немногое, что относится к адаптации современных технологий программирования к миру МК, и перевел пока пару из них. Если действительно интересно, можете ознакомиться с этими переводами: "Развитие в направлении разработки встроенных систем" и "Эффективная разработка встроенного ПО через тестирование". Там решаются промышленные задачи несколько посерьезнее, чем традиционное мигание лампочкой, с использованием инструментов и технологий, заимствованных из мира "взрослого" программирования. Все это на базе МК PIC, по возможностям примерно равного Mega16 (правда, RAM всего 768 байт или около того). Так что мифы об астрономической ресурсоемкости такого подхода остаются мифами.

Другое дело, что порог вхождения в такие технологии достаточно высок. Тем, кто не занимался ранее профессиональной разработкой софта, придется одолеть массу нового для себя материала, довольно объемного и сложного. Но это все же субъективный фактор, а не объективный. В конце концов, чтобы перейти от каменного топора к железному, тоже нужно было потрудиться немало.
ARV писал(а):кстати, ARM, по-моему скромному мнению, чисто по недоразумению называется МИКРОконтроллером, это тяжкое наследие прогресса, из-за которого уже управление унитазом без 32 бит сделать "невозможно".
Унитазы, к счастью, управляются простым механизмом, иначе, боюсь, они мигали бы светодиодами (продвинутые модели - трехцветными, и еще показывали бы время), в то время как цивилизация утопала бы в нечистотах...

Если серьезно, то есть ведь потребность в более интеллектуальных устройствах, чем елочные гирлянды. Например, контроллеры RAID-массивов, сетевое оборудование класса SOHO, домашние серверы, медиа-центры. А если учесть, что эти монстрики по цене сравнимы со старшими 8-битными моделями AVR, нет никаких причин от них отказываться, не настолько уж тяжко бремя прогресса. Биллу Гейтсу, небось, до сих пор стыдно за свое утверждение, что 640 килобайт всегда будет достаточно для любых задач.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
Реклама
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: возврат 2х значений одной функцией

Сообщение Goodefine »

И все таки хотелось бы услышать, как избавиться от глобальной переменной в таком случае, чтобы в этом был практический смысл и реально давало бы что-то с точки зрения удобства использования и безопасности. Поясню - программа состоит из нескольких .с- модулей, каждому из которых соответствует .h-интерфейс. Все это увязывается через main.c с интерфейсом main.h. Используются несколько обработчиков прерывания, в каждом из которых совершаются некоторые неотложные действия и выставляется указанные флаги. Время выполнения каждого из обработчиков критично. В главном цикле обычно крутится автомат состояний, каждое из которых имеет свою реакцию на флаги, и в зависимости от определенных условий, работая по флагам, может обращаться к различным модулям.
Это не праздный вопрос, а вполне практический и для меня актуальный. Сам я не придумал ничего удобнее и безопаснее. Поэтому пространные рассуждения это хорошо, но недостаточно. ОС не предлагать, по понятным причинам. Есть задачи, когда она лишняя..
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»