- Vote on answer
- posted
18 years ago
WINAVR
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
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
- Vote on answer
- posted
18 years ago
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
- Vote on answer
- posted
18 years ago
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
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago