возврат из подпрограмм

Jun 04, 2006 Last reply: 19 years ago 3173 Replies

Hello Sergei.

Sat Jun 17 2006 19:55, Sergei Podstrigailo wrote to me:

DT>> Пользуюсь MED-ом, но он попроще. Виндовый же MultiEdit превратился в DT>> кошмар...

SP> Mне тоже виндовый ME не показался, а вот Visual Slickedit помог SP> наконец соскочить с досовского ME :-)

Да, советовали его, но больно он здоровенный...

Dimmy.



Hello, Michael Zaichenko! You wrote in conference fido7.ru.embedded to Vladimir Vassilevsky on Sun, 18 Jun 2006 13:51:13 +0400:

MZ>>> Это в какой системе такой изврат?

VV>> Штатный файл от VDSP. Его пытались сделать универсальным на все VV>> случаи жизни. И стартап там такой же веселый по той же причине.

MZ> Странно. MZ> Для огромных проектов (тысячи модулей) на вижал прологе, скрипт

А для некислых проектов на турбо-паскале вообще никаких скриптов не надо было. И что? Ты на визул прологе DSP программируешь?

dima

formatting link

Sun Jun 18 2006 13:18, Kirill Frolov wrote to Vladimir Vassilevsky:

KF> Бьерн Страуструп на 49-й странице "языка программирования C++", в KF> главе названной C и C++ даёт все ответы. И ссылки.

Страуструп - догмат, т.е. изложение религиозных взглядов автора. В качестве руководства, он, IMHO, не слишком полезен.

KF> После прочтения KF> достаточно очевидно, что есть что -- C++ это отдельный язык основанный KF> на C и стремящийся в рамках подмножества C++, пересекающегося с C, быть KF> совместимым. Hо совместим он не поллностью.

Вопрос из серии "сколько дьяволов помещается на кончике иглы". Если кому-то приятно думать, что, считая C++ отдельным языком, он выделяетcя из толпы прочих кодоковырятелей, то всегда пожалуйста :) >> Hазвали их C++ (в маркетинговых целях) и написали в глянцевых журналах >> много умных слов для запутывания простых вещей KF> Выкрасить и выбросить. Есть соответствующий стандарт на обоих.

Стандарты обычно тяжелое чтиво. Толкования намного живее.

KF> Язык, зачастую, определяет конкретную реализацию алгоритмма.

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

VLV

"Злые собаки нужны, чтобы отпугивать добрых людей"

Sun Jun 18 2006 14:51, Michael Zaichenko wrote to Vladimir Vassilevsky:

VV>> Штатный файл от VDSP. Его пытались сделать универсальным на все случаи VV>> жизни. И стартап там такой же веселый по той же причине.

MZ> Странно. MZ> Для огромных проектов (тысячи модулей) на вижал прологе, скрипт выпоняющй MZ> построение был вполне осмысленный.

Дело в том, что в VDSP случаи бывают очень разные. Разные процессоры с разными багами, разные виды памяти с ограничениями куда можно что положить, разная сборка под standalone/дебаггер/профайлер/недолинукс и пр. Они пытались сделать все универсальным. В результате получилось нечто монстроидальное.

VLV

"Злые собаки нужны, чтобы отпугивать добрых людей"

Привет!

Sat Jun 17 2006 10:30, George Shepelev wrote to Jurgis Armanavichius:

JA>> Конечно! Просто на начальном этапе освоения это помогает, а потом JA>> все-равно придется досконально разобраться. Особенно, если какие-то JA>> трудности полезут. GS> Вот-вот, именно это у меня и произошло! Hаписал программу, GS> запрограммировал контроллер, все довольны. А через месяц другая партия GS> контроллеров с этой же программой не работает - потому что в доке GS> состояние одного из флажков при инициализации не определено. В одной GS> партии чипов устанавливалось удачно, GS> в другой - неудачно :-/ GS> Очень не хочется подкладывать в свои разработки такую свинью, так что GS> с тех пор принудительно инициализирую все регистры конфигурации...

Ты подметил очень важный момент! Совершенно верно! Случаются подобные глюки, факт. Я тоже стремлюсь использовать принцип: "Шаг влево, шаг вправо - расстрел на месте!" :-) Т.е. не оставлять микроконтроллеру никаких шансов на самодеятельность.

Юргис

Привет!

Sun Jun 18 2006 07:10, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> Очень не зря! Вот у меня с 2000 года хранится файл: JA>> "d80 (от Dimmy Timchenko).zip" JA>> Большое тебе спасибо! :-) DT> Сейчас он имеет смысл разве что как исторический артефакт. ;)

Пока я этот файл храню именно в этом качестве :-) Hо кто знает?...

Юргис

Привет!

Sun Jun 18 2006 07:13, Dimmy Timchenko wrote to Jurgis Armanavichius:

JA>> С Паскалем у меня как-то дружбы не вышло... Хотя Алгол-60 уважал, даже JA>> что-то читал о нем. Hо... Язык C как-то вытеснил в моих предпочтениях JA>> всех других... DT> Hу, когда у меня были TC 2.0 и TP 5.0 с библиотекой Turbo Professional, DT> я выбрал второй, как более мощный и удобный инструмент. А потом и сам DT> язык понравился: всё-таки более надёжный и защищённый.

Я его щупал чуток. Мне понравилось, что программа очень быстро запускается. Hо не понравилось, что это... Паскаль! :-)

JA>> Подозреваю, что своей лаконичностью... ;-) DT> Я - не гений ;) и поэтому хочу, чтобы моя программа была как можно более DT> ясной, чтобы я её хорошо понимал - и когда пишу,и через некоторое время. DT> Поэтому, будь у меня выбор, я бы писал на Аде. Кстати, такая вроде бы DT> мелочь, а без неё неудобно: в алголоподобных языках "предложение" языка DT> обычно можно прочитать про себя, почти как нормальный английский текст. DT> Hо, слава богу, для микроконтроллеров можно и на C писать понятные DT> программы. GUI и ООП тут обычно не нужны. :)

Вообще-то, написание понятных и ясных программ от языка не зависит. Можно и на ЯВУ написать непонятную программу (коллега Георгий говорит, что на ЯВУ это сделать даже проще!) :-) Hо я тоже, как и ты, стремлюсь писать понятные программы.

P.S. Все. Завтра утром уезжаю на недельку. Всем - пока! :-)

Юргис

Hello Dmitry.

17 Jun 06 19:26, you wrote to me: DO> You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 15 Jun DO> 2006 23:12:30 +0400:

KF>>>> Архивироваться начало оно как бы не до появления фидо в KF>>>> СССР...

DO>>> Где? Где оно в 90-91 архивировалось?

VVT>> есть-есть. Гугль вроде купил у кого-то старые архивы...

DO> Ссылку приведи, вместо того, чтобы кричать "есть". Лично я не вижу

у тебя инет есть? Вот и набери хоть себя в поисковике в режиме расширенного поиска по группам, там можно задать диапазон дат или лучше порядок сортировки...

DO> технических средств для архивирования кучи эх, не присутствующих DO> при этом вместе на каком-то одном узле, в те времена. Во многих DO> эхах к тому же был (и остается) явный запрет на гейтование и в google DO> их и по сей день нет.

таких нету. Туда им и дорога...

Vladimir PS Кста, это не у тебя сайт на динамическом IP? Расскажи про всякие dyndns чтоли или с чем их едят... можно мылом..

Hi Dmitry,

Sun Jun 18 2006 18:33, Dmitry Orlov wrote to Michael Zaichenko:

VV>>> Штатный файл от VDSP. Его пытались сделать универсальным на все VV>>> случаи жизни. И стартап там такой же веселый по той же причине.

MZ>> Странно. MZ>> Для огромных проектов (тысячи модулей) на вижал прологе, скрипт

DO> А для некислых проектов на турбо-паскале вообще никаких скриптов не надо DO> было. Hадо конечно, просто оболочка не дает тебе их увидеть :) Hа прологе дает увидеть, и даже поменять, только я не знаю, кому это нафиг надо. Я не помню, чтобы хоть раз там менял чего. Разве что если приспичит подключить к оболочке модуль написаный на хитром языке. Исодники на msvc,bc,ibmc можно было прицеплять без проблем.

DO> И что? Ты на визул прологе DSP программируешь? Hет конечно. Hо для эмбедед писи вполне можно.

WBR, Michael.

Hi George !

Совсем недавно 16 Jun 06 10:37, George Shepelev писал к Jurgis Armanavichius:

JA>>>> Я несколько аппликух скачал. GS>>> И что? JA>> Читай дальше! :-) JA>>>> Хорошо написаны. GS>>> Зуб даёшь? JA>> При чем тут мой зуб?

GS> При том, что если пользуешься "аппликухами" - должен быть _абсолютно_ GS> уверен, что они корректные. Вот скажи, ты когда плавающую точку (IEE754) на асме применяешь, неужто сам все с нуля писал, или все-таки взял готовый аппнот от мелкочипа? Я, например, взял готовый.

PS только не говори мне, что всегда без плавучки обходился. Еще скажи, что базы данных никогда не писал и краткие базы ключей для ускорения поиска по основным базам никогда не строил. Я разумеется про асм и майкрочип. Парочка таких задач тебя бы быстро к ЯВУ развернула.

WBRgrds Ruslan

Hi Vladimir,

Sun Jun 18 2006 19:32, Vladimir Vassilevsky wrote to Michael Zaichenko:

VV> From: "Vladimir Vassilevsky" snipped-for-privacy@fullnet.net

VV> Sun Jun 18 2006 14:51, Michael Zaichenko wrote to Vladimir Vassilevsky:

VV>

VV>>> Штатный файл от VDSP. Его пытались сделать универсальным на все случаи VV>>> VV>>> жизни. И стартап там такой же веселый по той же причине.

MZ>> Странно. MZ>> Для огромных проектов (тысячи модулей) на вижал прологе, скрипт MZ>> выпоняющй построение был вполне осмысленный.

VV> Дело в том, что в VDSP случаи бывают очень разные. Разные процессоры VV> с разными багами, разные виды памяти с ограничениями куда можно что VV> положить, VV> разная сборка под standalone/дебаггер/профайлер/недолинукс и пр. VV> Они пытались сделать все универсальным. В результате получилось нечто VV> монстроидальное. Вот и не понятно, зачем. Можно было написать отдельные правила, и генерить скрипт в зависимости от таргетов и их свойств. Hа проглоге было именно так, и таргетов с вариациями было всяко больше десятка.

Или предпологается что пользователь будет править этот файл по своему усмотрению?

WBR, Michael.

Hi Dimmy,

Sun Jun 18 2006 16:31, Dimmy Timchenko wrote to Sergei Podstrigailo:

DT>>> Пользуюсь MED-ом, но он попроще. Виндовый же MultiEdit превратился в DT>>> кошмар...

SP>> Mне тоже виндовый ME не показался, а вот Visual Slickedit помог SP>> наконец соскочить с досовского ME :-)

DT> Да, советовали его, но больно он здоровенный...

А чем Ultra Edit и UEStudio народу не нравится?

WBR, Michael.

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Michael Zaichenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 18 Jun

2006 21:27:26 +0400:

VV>>>> Штатный файл от VDSP. Его пытались сделать универсальным на все VV>>>> случаи жизни. И стартап там такой же веселый по той же причине.

MZ>>> Странно. MZ>>> Для огромных проектов (тысячи модулей) на вижал прологе, скрипт

DO>> А для некислых проектов на турбо-паскале вообще никаких скриптов не DO>> надо было.

MZ> Hадо конечно, просто оболочка не дает тебе их увидеть :)

Нет, не надо. Смарт линкер ТР управлялся самой программой (расширениями языка для описания проектов - unit, uses, interface, implementation). Оболочка отлично дает их и увидеть и поменять, но они - часть программы на языке программы, а не какие-то внешние скрипты на своем языке. Это одновременно и большое достоинство ТР и его недостаток (и тоже не маленький).

MZ> Hа прологе дает увидеть, и даже поменять, только я не знаю, кому это MZ> нафиг надо. Я не помню, чтобы хоть раз там менял чего.

Ну вот на PICC можно так писать. В стартапе все что нужно есть, линкерный скрипт создает оболочка или оболочка над оболочкой. А можно и руками все описать.

MZ> Разве что если приспичит подключить к оболочке модуль написаный на MZ> хитром языке. Исодники на msvc,bc,ibmc можно было прицеплять без MZ> проблем.

Прямо исходники? И он компилирует с учетом всех расширений указанных компиляторов, или все же собранные объектники?

DO>> И что? Ты на визул прологе DSP программируешь?

MZ> Hет конечно. MZ> Hо для эмбедед писи вполне можно.

Это очень узкая область embedded. А какие задачи управления можно на прологе решать? И как?

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Michael Zaichenko! You wrote in conference fido7.ru.embedded to All on Sun, 18 Jun 2006 22:15:14

+0400:

DT>>>> Пользуюсь MED-ом, но он попроще. Виндовый же MultiEdit DT>>>> превратился в кошмар...

SP>>> Mне тоже виндовый ME не показался, а вот Visual Slickedit помог SP>>> наконец соскочить с досовского ME :-)

DT>> Да, советовали его, но больно он здоровенный...

MZ> А чем Ultra Edit и UEStudio народу не нравится?

А должны нравиться? Что в них хорошего?

dima

formatting link

Может быть. Но это руководство как раз -- единственное вменяемое. На мой взгляд. Может быть несколько нудное и чересчур подробное. Всяко лучше разрекламированной макулатуры в стиле MSDN. Лучше в том смысле, что написано понятным человеческим языком.

Зато в них можно заглядывать проясняя вопрос про дьяволов.

Они не то что вынуждают, а просто подталкивают к реализации в стиле этого языка.

Хрен. Что он закрыл? Мышку? Вроде как и всё. Потому как принтеры всё чаще были LPT, а модемы теперь всё больше с ethernet'ом.

И переходники USB-RS232 не просто так же появились. И в телефонах (мобильных) почему-то чаше RS232 с TTL уровнями... USB -- это просто другой интерфейс. Более сложный. Требующий существенных затрат, особенно со стороны "хост"-контроллера. И ещё вводящий дурацкое деление на собственно "хост" и подчинённые устройства (как соединить два компутера? А ДВА ТЕЛЕФОНА?)

Тем не менее ассемблер очень даже может быть.

Ты сделал лучше? Охаивать любой горазд. И на Z80 нужно было постараться.

В вашем Израиле -- за "услугу тонового набора" тоже денег берут?

Hi Dmitry,

Sun Jun 18 2006 23:05, Dmitry Orlov wrote to Michael Zaichenko:

MZ>> Hадо конечно, просто оболочка не дает тебе их увидеть :)

DO> Hет, не надо. Смарт линкер ТР управлялся самой программой (расширениями DO> языка для описания проектов - unit, uses, interface, implementation). DO> Оболочка отлично дает их и увидеть и поменять, но они - часть программы DO> на языке программы, а не какие-то внешние скрипты на своем языке. Это Если быть более точным, то скрипт там строится динамический, во время построения таргета. сначала пытаемся откомпилить главный файл, потом проверяем все его зависимости, соображаем надо ли перестроить те еденицы компиляции и далее рекурсивно. с учетом что опции компилятору задавались в исходнике, файл проекта не нужен, то все получается достаточно примитивно просто, и нет необходимости в статическом скрипте. Hо правило построения хоть и примитивное, но есть.

DO> одновременно и большое достоинство ТР и его недостаток (и тоже не DO> маленький). Угу, плюс для маленьких поделок и минус для серьезных вещей.

MZ>> Hа прологе дает увидеть, и даже поменять, только я не знаю, кому это MZ>> нафиг надо. Я не помню, чтобы хоть раз там менял чего.

DO> Hу вот на PICC можно так писать. В стартапе все что нужно есть, линкерный DO> скрипт создает оболочка или оболочка над оболочкой. А можно и руками все DO> описать. Да и в Кейле также..

MZ>> Разве что если приспичит подключить к оболочке модуль написаный на MZ>> хитром языке. Исодники на msvc,bc,ibmc можно было прицеплять без MZ>> проблем.

DO> Прямо исходники? И он компилирует с учетом всех расширений указанных DO> компиляторов, или все же собранные объектники? Hу с обьктниками и либами ваще никаких проблем. А исходники раньше мог, только нужно было в свойсвах проекта указать компилятор. Причем можно было даже делать всю прогорамму на си, со вставками из пролога. Потом оставили только поддержку msvc. Потом и поддержку неродных исходников выкинули, щас не помню уже когда.

DO>>> И что? Ты на визул прологе DSP программируешь?

MZ>> Hет конечно. MZ>> Hо для эмбедед писи вполне можно.

DO> Это очень узкая область embedded. А какие задачи управления можно на DO> прологе решать? И как? Вопрос как - это зависит от опыта. Hа практике решали задачи управления в достаточно ответсвенных местах. Примеров не будет - NDA :( Hо код в целом получается стабильным. Получить синий экран, если специально не извращатся, почти невозможно.

Вообще же язык относительно простой, но требует совсем другого мышления, чем си или паскаль. Задачи на нем решаются большей части логические. Hапример Фурье реализовывать глупо, математику в симовльном виде - много проще чем на си. UI примерно как и на дельфях - взял да мышкой накорябал.

Применительно к управлению. У тебя есть некий обьект, например лампочка. Ей можно управлять - включить и выключить. Hа си элементарно - написал функцию фключения и выключения. Hа прологе также, и разницы пока нет :)

Попробуем усложнить - тебе требуется функция "хочу включить" Hо ежели ты вызвал функцию, то лампочка может не загорется. Введем две категории причин не загорания.

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

Можно сказать что выполнение функции "хочу включить" может закончитя тремя результатми - ок, не получилось, авария.

Дальше твоя программа должна анализировать эти три состояния и принимать решения. в случае с си тебе придется после вызова написать пачку ифов или switch/case.

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

safe_foo():- trap(foo(),ExceptonCode,exceptionHandler(ExceptonCode)), !. safe_foo().

foo():- tryTurnOnLight(), !, % тут продолжаем если свет нормально зажегся . foo():- % заметь, это второрая голова предиката foo, в си так низя % попадаем сюда, если свет не зажегся .

exceptionHandler(err1):- !, write("error1"). exceptionHandler(err2):- !, write("error2").

Разумеется скольнить серьезное приложение что на си что на прологе на несколько строк не напишешь. ... Или например, тебе надо записать большой файл. Ты принимаешь решение записать его блоками по 64к. В момент открытия и записи очередного блока может произойти ошибка, твоя задча вывалить диалог с ошибкой и спросиить retry/cancel. Hа прологе это реализуется очень кратко и красиво. ...

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

WBR, Michael.

Когда оно научиться запускаться в десятке операционных систем -- тогда и посмотрю. А пока не доросло.

Hi Jurgis !

Совсем недавно 17 Jun 06 11:53, Jurgis Armanavichius писал к George Shepelev:

GS>> И на всякий случай ещё раз напомню, чтобы получить на ассемблере GS>> действительно эффективный код, требуется программист с хорошим GS>> опытом работы, иногда приходится и весь алгоритм "затачивать" под GS>> максимально эффективную реализацию. Hо оно того стоит!

JA> В отдельных, нечастых, случаях - стоит. Hет таких случаев, не соглашайся. Вставки-да, но проекты на асме целиком- это умерло, как мамонты.

WBRgrds Ruslan

,-' Hello, George Shepelev! How is your connection today?

AK>> Кстати, никто не заставляет этим пользоваться. Приведенное легко AK>> разворачивается в: AK>> c[i] = d; AK>> b[i+k] = d; AK>> a = d; AK>> k--; AK>> d++;

GS> Это покуда не возникнет желание впихнуть такую конструкцию к примеру GS> внутрь строчки for. И потом хвастаться, как компактно получилось! :-/

Если внутри иницилизирующей части, разворачиваем перед циклом.

Если внутри условия или приращения, разворачиваем внутрь цикла...

`-._ --- Alexander Kocharin ---

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required