WINAVR

Reply to
Alex Mogilnikov
Loading thread data ...
Reply to
Dimmy Timchenko
Reply to
Alex Mogilnikov

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 23 Oct 2005 14:33:00

+0400:

DT>>> В Паскале тоже. Hо паскалевская строка - не массив, а DT>>> специальная фича для удобства. И действительно, очень DT>>> удобно! И более наглядно, чем printf.

DO>> Как тип может быть удобней или неудобней функции?

DT> Потому что конкатенация строк используется в том числе для DT> формирования сообщений.

Не понимаю о чем ты. А ноль-терминированные строки для сообщений нельзя использовать? Наоборот удобнее - не надо думать влезет сообщение в 255 символов или нет.

DO>> Hеудодбно в паскале, что такую функцию, если надо,

DT> А зачем оно может быть надо? Hи разу в это не упирался.

Например в конфигурационном файле надо задать формат вывода. Было бы не надо, не делал бы Борланд функцию drivers.formatstr...

DT> Очень небезопасный механизм, кстати! Куда правильнее иметь

Чем же он небезопасен? Именно printf?

DT> маленькие функции, преобразующие и форматирующие, например, DT> числовые значения в строки и "складывать" результат их работы DT> со строчными константами.

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

DT>>> [x,y] = some_func (a, b);

DO>> А какой смысл этого выражения?

DT> lvalue состоит не из одной переменной, а из нескольких.

И? В результате-то что?

DT>>> Он больше, чем 256 не тянет. Hо больше как-то и не DT>>> требовалось никогда.

DO>> А я как-то писал множество на word а не на byte значений. В DO>> смысле функции для работы с ним.

DT> А это множество чего было? :)

"Перемычек" в PAL

dima

formatting link

Reply to
Dmitry Orlov

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sun, 23 Oct 2005 14:37:20

+0400:

DT>>> Стандартный Паскаль - язык для обучения, для практической DT>>> работы малопригодный.

DO>> Строго говоря, ТР - тоже.

DT> Это слишком строго. :) BP7 - ничем не хуже сишных DT> компиляторов тех времён. И гораздо удобнее современных им DT> TurboC.

Кроме турбо-с было еще много других компиляторов. С гораздо лучшей кодогенерацией и с куда бОльшими возможностями (генерация под дос-экстендеры, и т. п.). Для учебных или любительских целей ТР еще подходит, но в общем-то не более того.

DO>>>> Достаточно важно. Именно от этого в программах на ТР DO>>>> столько встроенного и невстроенного асма.

DT>>> Да нет, не потому. А от времён 386/486.

DO>> Поясни что ты имеешь в виду? Причем тут 386, тем более, что DO>> первый ТР вообще под СР/М был...

DT> Гнались за турбо-быстродействием.

Ну да, за эффективностью. Компилятор-то сам никакой.

DT> Hа самом деле в TP/OP есть все средства для работы с низким уровнем.

Ну да, позаимствованные из С...

DT>>>>> Тут важнее ООП-щиной не увлекаться.

DO>>>> А она-то чем тебе не угодила? Сама по себе на х86 она DO>>>> большого оверхеда не дает.

DT>>> Деревья виртуальных классов, как я понял, линкуются целиком DT>>> - DT>>> потому как ссылки разрешаются во время выполнения.

DO>> И что?

DT> Да ничего. Такой объём кода перекроет выгоды любой оптимизации.

Да причем тут объем? Вот с объемом даже во времена ДОС заметных проблем не было.

DT> Пресловутая KOL/MCK позволяет собирать "визуальные" программы на дельфи DT> размерами десятки-сотни килобайт, а не мегабайты. И всё

Да какая разница-то?

DT> потому, что используется механизм object вместо class и что-то DT> там линкуется статически, а не динамически. Как точно это

Чем принципиально object от class отличается?

DT> делается, я не разбирался, потому как не любитель ООП.

DO>>>>>> Да и язык более простой, чем С.

DT>>>>> Правильно, более простой, понятный и продуманный.

DO>>>> Hет, просто более простой и менее выразительный.

DT>>> Hу и чего на паскале нельзя выразить, что можно на C? :) По

DO>> Многое на самом деле. Те же операторы ++, += - они яснее DO>> выражают что я хочу сделать, чем паскалевские эквиваленты.

DT> Inc, Dec... Это вопрос вкуса.

Это не совсем то, и х= так не сделаешь.

DT> А я могу сказать, что без диапазонов жить нельзя, а нумерация с нуля - изврат.

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

DO>> Стандартная адресная арифметика, которая на паскале DO>> заменяется форменным хакерством,

DT> За каким чёртом в программе нужна "стандартная адресная DT> арифметика"?

А ты почитай внимательно борландовские и турбо-паверовские сорцы и может быть поймешь зачем. Вот произвольная цитата из objects.pas

begin Dif := SegCount; Term := ALimit - 1; while Dif <= Term do begin NewBlock := MemAllocSeg(BlockSize); if NewBlock = nil then Break else AItems^[Dif] := PtrRec(NewBlock).Seg; Inc(Dif); end; if Dif = ALimit then ChangeListSize := True; end;

Скажешь не хакерство? Или не прямая манипуляция адресами? Там еще много такого. Ну и в лучших традициях полюнита на ассемблере написана.

DT> ЯВУ ведь как раз и отделяет программиста от таких низкоуровневых подробностей, DT> предоставляя более "правильные" абстракции.

Ага, щаз.

DO>> причем реально используется. Та же невозможность описать на DO>> паскале функцию с переменным числом параметров

DT> Ты хочешь сказать, что пресловутый эллипсис и argc/argv - это DT> не узаконенное хакерство?!

Нет, но зато довольно удобный механизм, который приходится в паскале обходить крайне коряво. И ведь на _практике_ приходится, прямо в сорцах, идущих с компилятором.

DT>>> Да и указатели не суют затычкой во все дырки. :)

DO>> А то в ТР не так...

DT> М-да... странный ты. Я писал на TP/BP довольно много, и DT> ссылки использовал только для работы с динамическими DT> объектами.

Это ты странный. Я даже на свой опыт ссылаться не буду, ты скажешь, что он у меня не правильный. Я сошлюсь на _родные_ борландовские сорцы и двоюродные турбопаверовские (без них вообще весь этот ТР не более чем детская игрушка). Посмотри их, посмори на то как там оконная библиотека сделана. Хоть в TV, хоть в турбопаверовской. Указатель на указателе сидит и указателем погоняет. Конечно если ты писал мелкие утилитки, где хватало 64к сегмента статических данных можно и без указателей обходиться, и то не удобно. А ты что-то по-больше сделать попробуй.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dimmy Timchenko on Sun, 23 Oct 2005 20:36:24

+0400:

AM>>> Вход и выход из него придется ведь делать на ассемблере. DT>> С какой стати?

AM> Потому что вход в обработчик прерывания выполняется не AM> так, как в обычную функцию.

Ну да, как и в большинстве С компиляторов есть соответсвующее расширение языка. Какие проблемы-то?

AM>>> Допустим, в программе из файла A вызывается функция, AM>>> реализованная в файле B. Программу скомпилировали и она AM>>> работает. AM>>> Затем в этой функции изменили тип аргумента, а в файле A ее AM>>> вызов изменить забыли.

DT>> Компилятор выругается, покажет на неправильный вызов и DT>> откажется собирать EXE-шник.

AM> С какой стати он сругается? В файле B никаких ошибок нет.

Ругнется на стадии линковки, там нет отдельного линкера.

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Ruslan Mohniuc
Reply to
Ruslan Mohniuc

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.