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

а скажите мне, уважаемые Паскалисты, живет-ли еще в Паскале такой анахренизм как множество?

 

Вопрос вот в чем. Как известно, Си славится тем, что очень компактный. На столько компактный, что не даже имеет встроенных в язык операторов ввода/вывода. Все недостающее обеспечивается библиотеками, который огромное количество. У Паскаля же, на сколько я помню, многие операторы неотъемлемы от языка.

 

Я помню, что множества можно было объединять, пересекать, еще что-то с ними делать. Помню, что размеры множества не могли быть больше 256 бит. В теории все это выглядело очень красиво. Практически же применить было негде. И я тогда искренне не мог понять -- а зачем они нужны? Разве что только для обучения школьников математике.

...

Итак, поддерживает-ли Паскаль множества? Если да, то где сфера их применения?

 

Ха. Си славится прежде всего тем, что это низкоуровневый язык. Попытка применить его к нестандартной архитектуре, например с троичной системой счисления, или к системе с неограниченной разрядностью обречена на обрастание многочисленными костылями. Как интерпретировать a & b в троичной системе счисления?

Изменено пользователем Leka

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


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

А у E-LAB оказывается есть версия без ограничений для Mega8/88.

Я ж говорю, он мне не понравился. Это не паскаль, это чисто си в его "лучших" традициях.

 

Может кто потестит, а то Огурцов куда-то пропал.

Вот, у меня других дел нет ?

 

 

Ошибался

Принято

 

Повторяю - получен некий мутный код. Вопрос причем тут шляпа?

Нет, там были другие слова. Два раза.

 

 

Может что-то включить в настройках?

Может быть. Компилилось примерно так: new project/copy&paste/build all

Изучать возможности компилятора задачей не ставилось.

Не исключено, что таки посмотрю его, но позже.

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


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

1)Почему вся конфа здесь на руссом языке?

Ответ.

1) Потому что язык лучше и позволяет лучше выразится.

2) Потому что английский не знаю.

3) Потому что на нём мне общаться комфортнее.

4) Потому что вокруг меня все на нём общаются.

Хороший вопрос. Ответ на Ваш прос -- естественно под №4.

 

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

 

 

Примите следующее просто как забавный факт. Недели две назад БиБиСева разглагольствовал по поводу двуязычия у переводчиков. В беседе всплыла одна интересная фича. Вопрос звучал примерно так: "на каком языке у себя в голове вы думаете?" Перводчики, для которых и тот, и другой языки одиноково "родные", утверждают, что когда нужно что-то быстро ответить -- используют в основном английский для построения фразы, когда нужно глубинно помыслить, крепенько-так помозговать -- в основном используют русский.

 

 

Более грамотное построение локальности/ глобальности переменных. Тут один уже говорил о возможности в Си объявить переменную прямо в цикле. Так вот, видимо он не знает всей правды. :)

 

Паскаль имеет иерархическое строение локальности (видимости). Включая процедуры. Схема такая

 

Этого в Си не хватает.

Ой-ой, уважаемый! Зачем же так -- все в одну кучу?

Одно дело локальные переменные, и совсем другое --вложенные процедуры.

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

А вот от встроенных процедур, я бы держался как можно дальше. С одной стороны -- вроде как экономия памяти, а с другой -- мина замедленного действия в тумане. Рванет хрен знаешь когда. Нафиг-нафиг!

 

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

 

Это... типа... опа! Где эта троичная система применяется в народном хозяйстве? В магазине я видел толко Троичный одеколон. И то лет 15 назад. Что-то я не в курсе, просвятите неуча. А заодно приведите факты, что на троичных вычислителях огромные толпы программистов юзают только Паскаль.

 

Дак никто не спорит -- Си отлично справляется с низкоуровневыми задачами.

 

Как интерпретировать a & b в троичной системе счисления?

не знаю. А на Паскале это как выглядит?

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


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

procedure blah_blah( bubu: integer); inline;

Ясное дело, что костыль, но приятно

чем этот "костыль" хуже __attribute__ или #pragma, которыми изобилуют компиляторы С ?

У Паскаля же, на сколько я помню, многие операторы неотъемлемы от языка.
никто не запрещает написать свои функции. например на контроллерах типа АВР накладно использовать многие стандартные библиотечные функции типа printf, приходится писать свои, намного более компактные.

 

Оформите в виде библиотеки, кому надо, тот подключит. Зачем ограничили 256-ю битами? А если у меня 365 (по количеству дней в году) единиц будет, что мне делать?
наверно потому что использовалься 1-байтный индекс, и этого тогда было достаточно. никто не запрещает написать свою реализацию хоть 4-гигабайтных множеств.

 

Вы опять про Delfi.. или подобные. Паскаль по жизни даже раздельной компиляции не имеет, а тут inline
почитайте хоть о модулях. и почему расширение С - это нормально (78,83,89,99), а Паскаля (Turbo Pascal, Extended Pascal) - нет ? Может давайте тогда сравнивать версии начала 70х ?

при желании можно добавить все что нужно (локальных переменных и многого другого в первых С тоже не было).

 

тут описаны некоторые нововведения : http://www.pascal-central.com/extpascal.html. А в том что не развивается дальше имхо виновата непопулярность языка.

Изменено пользователем ukpyr

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


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

Паскаль имеет иерархическое строение локальности (видимости). Включая процедуры.

 

Этого в Си не хватает.

Упаси господь !

 

В какой-то ветке писали, что GCC поддерживает вложенные процедуры.
Да, но никто не пользуется

 

 

 

Интересно не то что он поддерживает это (согласно стандарта данная фича не описана), а интересно то, что кто-то сделал, и что кто-то пробовал.

На мой взгляд, это подтверждает, что данной фишки не хватает тем, кто это испробовал.

'Эта фишка' страдает КРАЙНЕЙ неэффективностью реализации. Так же она во многом ограничивает возможности оптимизатора (хотя в Pascal'е этой проблемы нет, ввиду отсуствия оптимизатора :) ). Для ее эффективной реализации нужна поддержка со стороны аппаратуры. Таковой поддержки нет нигде, а в х86 архитектуре даже были специально сделаны команды enter & leave (в качестве некоторого костыля), которые получились столь ГРОМОЗДКИМИ, что их по назначению не используют даже компиляторы Pascal'я :cranky:

 

 

 

 

 

почитайте хоть о модулях. и почему расширение С - это нормально (78,83,89,99), а Паскаля (Turbo Pascal, Extended Pascal) - нет ?
Потому что расширения С (равно как и он сам) - это СТАНДАРТ, а расширения Паскаля - личные инициативы их расширителей. И если компилятор C заявлен, как отвечающий стандарту C99, то это будет один и тот же язык, какой бы производитель этот компилятор не сделал. Стандарт Паскаля есть (ОЧЕНЬ древний), но компиляторов, его поддерживающих - нет :(
Изменено пользователем XVR

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


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

почитайте хоть о модулях. и почему расширение С - это нормально (78,83,89,99), а Паскаля (Turbo Pascal, Extended Pascal) - нет

Я ничего против расширения и развития не имею, только тогда и называйте эти форки соответственно их авторства, а не "Просто Паскаль" и уж тем более отмечая массу реально необходимых для реального использования языка нововедений не спекулируйте на тех красивых, но несовместимых с реальностью постулатах, кои были когда-то заложены Основоположником. Ну и самая основная проблема это абсолютная, в отличии от 'C', хаотичность развития (причем само реальное развитие-то осталось в 80-90x вместе со стандартами) Паскаля. Вот и получаем почти пустой звук :( при слове Паскаль. Все рассыпалось и продолжает рассыпаться по мелким фирмочкам пытающимся развести пользователей на покупку всяческих "Паскалей" (практически такая-же история и со спекуляцией на слове "Linux"). Паскаль мертв. Давно пора обсуждать из реальных компиляторов тот-же ADA.

Ну соответственно глупые разговоры о Дельфиских наворотах в ветке про программирование AVR.

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


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

Хех!

 

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

 

Остается непонятным, почему компиляторы для нормального языка -- Паскаль -- для микроконтроллеров реально в промышлеенных масштабах не используются совсем, а только как "развлекаловки". В тоже время компиляторы для языка Си (который либо хуже, либо такой же как Паскаль) используются очень широко.

 

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

 

Что же касается применения Си или Паскаля для больших компов, то тут наблюдается та же картина, причем опять же не в пользу Паскаля. Про Паскаль я помолчу, а про Си выскажу предположение, что драйверы устройств пишутся на некотором диалекте С/С++, т.е. использутся С++ в режиме С. И я что-то плохо себе представляю реальный драйвер устройства, написанный на Паскале. Поправьте, если есть в жизни такое.

 

Значит можно говорить о том, что Паскаль/Делфи слил позиции низкоуровневого программирования и сосредоточился "ввеху", в области высокоуровневых языков типа Васик, Шарп, С++. Не надо быть гением, что бы увидеть, что и здесь Паскаль/Делфи не имеет особого преимущества перед С/С++. К стати, как нафиг Паскаль для Венды? -- Делфи и толко Делфи! В моем представлении Делфи находится от Паскаля на столько же далеко, на сколько С++ от С.

 

 

Я за себя скажу. Для МК я использую чистый С. Для компов использую С++ в купе с MFC. Какое-то время использовал С#, но оставил его, т.к. невозможно объять все сразу. На будущее для себя отметил, что если придется писать только высокоуровневые проги, буду юзать либо C#, либо "неуправляемый"С++. Считаю, что осваивать технику работы с Делфи будет крайне неразумно.

 

Я затронул этот вопрос не случайно. Во время кризиса можно легко лишиться заказчиков. Возможно придется быстро подбирать то, что будет "пролетать" мимо, т.е. брать работы по созданию программ исключительно для компов. Знание С не даст потонуть ни в области программирования для МК, ни в области программирования компов, чего не скажешь про Паскаль.

 

Отсюда нелестный вывод про Паскаль -- Паскаль плох своей ограниченностью применения.

 

 

 

Это про множества:

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

Это понятно. Все правильно! И про С можно сказать то же самое -- "никто не запрещает...".

 

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

 

никто не запрещает написать свои функции. например на контроллерах типа АВР накладно использовать многие стандартные библиотечные функции типа printf, приходится писать свои, намного более компактные.

И я про тоже! Если мы вынуждены писать свои функции ввода-вывода, а тем более если у нас вообще не предусмотрен ввод-вывод в контексте readln-writeln (допустим, мы моргаем только ЛЭДами, да собираем цифирь с портов), то становится не понятно, зачем включать в язык эти операторы? На вский случай? Это же избыточность языка.

 

 

ЗЫ

Про троичную систему счисления, стёб:

Наверно в этой системе помимо мужской жесткой однозначности да -- это да, нет -- это нет, должна присутствовать женская неоднозначность типа "ни да, ни нет", или "я еще не решила", или даже так -- "догадася сам, почему я на тебя сержусь". Улыбайтесь!

Изменено пользователем zhevak

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


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

Plain C + асм отдельно линкуемым файлом, не вставками.

Просто достал этот знатокъ паскаля, ни разу не нюхавши его.

P.S.

Кто-нить юзал Pascal to C/C++ convertor ?

Я вот собсна чего. Прикольная программка получается.

1. Очень облегчает плавный переход от ЦЕ к ПАСу и наоборот.

2. Восстанавливает справедливость в иерархии языков (можете даже обозвать их недоязыками- не обидно нисклько). В том смысле, что ЦЕ - это такой баалшой и умный, но ассемблер. А ПАС все-таки позиционировался как ЯВУ. Да и хрен с ним - пусть этот ЯВУ опирается на ЦЕ, а не на асм.

3. Автор программы, может где-то и прокололся, но, поскольку параллелей между языками очень много, задача практически тривиальная. Это радует. Кто хочет, может ферзей погонять :)

Такшта, надеюсь примирить всех несогласных...

И студентам кстати будет. И все эти "фичи" E-LAB и прочих дворняжек можно перелопатить и перегнать в ЦЕ. Мир, счастье, лето, трава... :biggrin:

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


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

Эх, мыло да мочало - начинай сначала (с)

 

Отсюда нелестный вывод про Паскаль -- Паскаль плох своей ограниченностью применения.

Си тоже плох своей ограниченностью применения. Однако ж это не мешает вам им пользоваться ?

 

зачем включать в язык эти операторы?

Так их и нет в микроэлектронике. Да и в дельфи я что-то не припомню, для winapp. В консольных есть, конечно.

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


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

Про троичную систему счисления, стёб:

Какой там стеб? Суровые начала теории R-функций, например.

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


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

Си тоже плох своей ограниченностью применения. Однако ж это не мешает вам им пользоваться ?
Ничего себе утверждение! Трудно сказать что-то более оторванное от практики!

Назовите более широко применяемый язык, чем C/C++!

 

Пока доказать, что паскаль для чего-то пригоден в программировании микроконтроллеров Вам и другим паскалистам не удалось - единственный рабочий компилер выдал код явно не пригодный, разве только для обучения (как не надо делать :) ).

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


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

Ибо получается, что учим одному, а в промышленности используем совсем другое
учат теорию (алгоритмику, концепции программирования), я бы начинал изучение с языков типа Python, Ruby, где есть и функциональные элементы, и ООП, интроспекция и т.д.

а про Си выскажу предположение, что драйверы устройств пишутся на некотором диалекте С/С++, т.е. использутся С++ в режиме С. И я что-то плохо себе представляю реальный драйвер устройства, написанный на Паскале.
наверно потому что не знаете Паскаль. Все там есть - и доступ к WinAPI, портам, и встроенный ASM. Можно пользоваться консольным компилятором.

Значит можно говорить о том, что Паскаль/Делфи слил позиции низкоуровневого программирования
что такое "низкоуровневое программирование" ? еще раз - есть там все для "низкоуровневого программирования".

К стати, как нафиг Паскаль для Венды? -- Делфи и толко Делфи! В моем представлении Делфи находится от Паскаля на столько же далеко, на сколько С++ от С.
что за бред, это тот же Паскаль, только расширенный. кстати, Вирт - один из авторов этих расширений http://ru.wikipedia.org/wiki/Object_Pascal , так что можете считать их стандартом. Вы постоянно говорите о каком-то виртуальном "стандартном" Паскале - нет таких компиляторов. А есть реальные компиляторы, напр. http://www.freepascal.org/ - посмотрите, может что-нибудь прояснится.
Остается непонятным, почему компиляторы для нормального языка -- Паскаль -- для микроконтроллеров реально в промышлеенных масштабах не используются совсем, а только как "развлекаловки"
потому что есть мейнстрим, на который работают основная масса разработчиков, ведь был же Борланд, который привел к Паскалю многих людей. Сейчас есть GCC, ICC, MCC, IAR и т.д., которые перетягивают в сторону С. Таково се ля ви, существует куча прекрасных и более продвинутых, но непопулярных языков.
Изменено пользователем ukpyr

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


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

что такое "низкоуровневое программирование" ? еще раз - есть там все для "низкоуровневого программирования".
Приближенное к "железу".

Приведите пример драйвера какого-либо устройства, который написан на паскале. Или компилер, рабочий, оптимизирущий, для ARM, AVR или другого контроллера по Вашему выбору.

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


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

Ничего себе утверждение! Трудно сказать что-то более оторванное от практики!

Что, вокруг один си ? Ну мне даже жаль вас )))

 

Пока доказать, что паскаль для чего-то пригоден в программировании микроконтроллеров Вам и другим паскалистам не удалось

Не так. Нужно вот так: доказать сишникам, что паскаль пригоден в программировании, не удалось.

 

Хорошая фича:

  Test_byte := 1;
  asm
    lds R16, _Test_byte
    lsl R16
    sts _Test_byte, R16
  end;

 

Нука всмоним, как такое же сделать в GCC ?

 

Посмотрел генерящийся код - все не так и плохо, оптимизация некоторая проводится. Плюс две дюжины библиотек в комплекте, почти как в дельфи - разные spi, twi, lcs, 1wire, kbd, ps/2, sound, mmc, cf - только садись и пиши.

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


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

Что, вокруг один си ? Ну мне даже жаль вас )))
Как раз наоборот, есть еще дельфи, так что незнание паскаля меня лично несколько напрягает.
Не так. Нужно вот так: доказать сишникам, что паскаль пригоден в программировании, не удалось.
Да, это так, положительных примеров пока привести не удалось.
Хорошая фича:
Это шутка? Так же, через asm (asm volatile).
Посмотрел генерящийся код - все не так и плохо, оптимизация некоторая проводится.
Помотрите еще раз, хотя бы то простейшее выражение "arow[pos + 1] := arow[pos] or place;" и сравните с си: разница реально - в разы.

Там точно нет какой нибудь галочки, "включить оптимизацию"?

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


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

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...