Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

; not allowed before ELSE   Найти похожие ветки 

 
Sha   (2003-12-26 12:50) [40]

MOA © (26.12.03 12:46) [38]
Не пойдет компияция.


 
MOA   (2003-12-26 12:53) [41]

2Sha
А вы попробуйте, попробуйте. И в чём отличие от

if i > 2 then
if j < 3 then
k:=i+j //< без ;
else
k:=i-j;


 
Sandman25   (2003-12-26 12:54) [42]

[38] MOA © (26.12.03 12:46)

[Error] Unit1.pas(30): ";" not allowed before "ELSE"


 
Sha   (2003-12-26 12:56) [43]

MOA © (26.12.03 12:53) [41]
Версия Delphi?


 
blackman   (2003-12-26 12:58) [44]

А все так хорошо начиналось :) С Semicolon :)
К стати помню, что приходилось ее перфорировать как ., потому, что не было на клавиатуре ;
Однако на каком устройстве уже не помню :)
Может кто вспомнит ?
А вообще-то лучше Algol60 в мире нет и не было языка :)
Вперед в прошлое!


 
Юрий Зотов   (2003-12-26 13:00) [45]

> Sha © (26.12.03 12:28) [33]

> А Алгол - не обучающий?

Нет. Изначально, Алгол - это метаязык. Язык описания алгоритмов. Нечто вроде БНФ, только из несколько другой оперы. И задумывался он именно как средство накопления библиотек алгоритмов. Это уж потом с него написали компиляторы и он стал ПРАКТИЧЕСКИМ языком.

> Это плохо, это отвлекает от ГЛАВНОГО - ПРИВИТЯ ХОРОШЕГО СТИЛЯ.

Это ХОРОШО, потому что ГЛАВНАЯ часть ХОРОШЕГО стиля - это как раз ПОСТОЯННО думать, а не лепить символы на автопилоте и со скоростью хорошей машинистки. Кстати, все проблемы исчезают после пары недель упражнений, а вот привычка ДУМАТЬ - остается.

> Языки пишутся для людей

А еще они пишутся для РАЗНЫХ людей и с РАЗНЫМИ целями.

> Вместо того, чтобы потратить время с большей пользой, КАЖДЫЙ
> преподаватель ВЫНУЖДЕН втолковывать КАЖДОМУ обучаемому (с его
> начальными и неокреншими знаниями

И особенно хорош в этом плане замечательный язык C (впрочем, ладно, не о нем речь). Где ставить, а где не ставить точку с запятой, мне стало АБСОЛЮТНО понятно после прочтения всего лишь одного абзаца в простенькой книжке. Если же преподаватель не может втолковать это студентам, то... или такие студенты, или такой преподаватель.

> Есть неоднозначность в интерпретации кода, написанного другим
> программистом, если подобные конструкции языка сам никогда не
> используешь.

Если у музыканта возникают проблемы в понимании партитуры, написанной другим музыкантом, то... то он просто плохо знает нотную грамоту. И ничего более. Ноты здесь, честное слово, ни при чем.

> Иван Шихалев © (26.12.03 12:34) [34]

Совершенно верно. Точка с запятой НЕ является частью оператора.


 
MOA   (2003-12-26 13:04) [46]

Блин! Точно. Вот это да! И почему это я на эти грабли не разу не наступил за всё это время?
Мои извинения всё честной компании. Виноват.
Будем думать, почему нельзя.


 
blackman   (2003-12-26 13:12) [47]

>Алгол - это метаязык. Язык описания алгоритмов
Стало быть на всех остальных алгоритм не запишешь :)
http://osp.admin.tomsk.ru/cw/1999/45/38.htm

http://privatjc.chat.ru/algol/


 
Nous Mellon   (2003-12-26 13:17) [48]


> Угу. Предпоследнее HolyWar уходящего года

А вы уже последнее наметили? :)


 
Ну вы поняли мужики   (2003-12-26 13:19) [49]

subj

а оно тебе надо?


 
Sha   (2003-12-26 13:24) [50]

> Юрий Зотов © (26.12.03 13:00) [45]

> Алгол - это метаязык. Язык описания алгоритмов.

Вот-вот. Поэтому на нем удобно вести обучение написанию алгоритмов.

> Это ХОРОШО, потому что ГЛАВНАЯ часть ХОРОШЕГО стиля - это как раз ПОСТОЯННО думать.

Некоторым может не нравится постоянно думать, обходя каждый камень на пути. Гораздо лучше, когда все камни убраны с твоей дороги. Предпочитаю думать о ГЛАВНОМ :)

>> Языки пишутся для людей
>А еще они пишутся для РАЗНЫХ людей и с РАЗНЫМИ целями.

Тут я согласен. И в обучащем языке соломки могло бы быть и побольше.

> Где ставить, а где не ставить точку с запятой, мне стало
> АБСОЛЮТНО понятно после прочтения всего лишь одного абзаца в
> простенькой книжке. Если же преподаватель не может втолковать
> это студентам, то... или такие студенты, или такой преподаватель.

Так и всем нормальным людям тоже. Я о другом. Дети пользуются выключателем не задумываясь об электронах. Они узнают об этом позже. Почемы бы не перенести эту концепцию на язык?

> Если у музыканта возникают проблемы в понимании партитуры,
> написанной другим музыкантом, то... то он просто плохо знает
> нотную грамоту. И ничего более. Ноты здесь, честное слово, ни
> при чем.

Опять не об этом. Речь даже не сомнении, а о тени сомнения.
По хорошей программе взляд должен скользить как по детективу, она должна быть написана так, чтобы смысл доходил легко, без запинок. Ноты здесь действительно ни причем :) Но не каждый пианист всякую партитуру сбацает.

>Точка с запятой НЕ является частью оператора.

А "операторные скобки ОПЕРАТОРАМИ не являются". Очевидные истины не требуется повторять. Это может раздражать оппонента. Если бы я книгу писал, то думал бы над каждым словом. А здесь по контексту понятно, что имеется ввиду. Тем более Вам.


 
Igorek   (2003-12-26 13:42) [51]

Помню как переходил с С++ на Паскаль. Матерился - через оператор. В С++ все очевидно и просто. А в гребаном Паскале то ставь, то не ставь ";". Потом привык. Даже некоторые плюсы нашел. Хотя все равно имхо Паскаль масдай. Так что все - дело привычки. А любой алгоритм как говорится можно на любом языке написать.

Кстати была у меня идея-фикс. Почему нельзя позволить программисту самому определять грамматику языка. Или хотя бы ее корректировать. Напр. не нравится begin end - пиши {}. И не макросом заменять, а где-то галочку в опциях поставить. Т.е. программист строит свою грамматику, в ней пишет, в ней и читает код коллег.


 
ИдиотЪ   (2003-12-26 13:49) [52]

Igorek ©
можно, для этого есть предтрансляторы


 
Digitman   (2003-12-26 14:03) [53]


> Igorek © (26.12.03 13:42) [51]


> Почему нельзя позволить программисту самому определять грамматику
> языка. Или хотя бы ее корректировать


очевидно, по той же причине, что и непозволительно просто человеку (не программисту - просто индивидууму в социуме) взять за правило вместо

Я ИДУ В КИНОТЕАТР

говорить

Я , на..., ИДУ , на...,В КИНОТЕАТР , на...,

лишь по той причине, что "в ней пишет, в ней и читает"


 
Думкин   (2003-12-26 14:03) [54]


> [48] Nous Mellon © (26.12.03 13:17)

Нет, просто предпоследних- уже несколько. К тому же есть еще Рабочие дни 29,30 - найдется кто опять разведет войнушку и хихикать будет. Опыт. :))


 
Sha   (2003-12-26 14:05) [55]

Всех с будущим и прошедшим праздником. Мы продолжаем праздновать :)


 
Думкин   (2003-12-26 14:09) [56]


> [51] Igorek © (26.12.03 13:42)
> Помню как переходил с С++ на Паскаль. Матерился - через
> оператор. В С++ все очевидно и просто. А в гребаном Паскале
> то ставь, то не ставь ";". Потом привык. Даже некоторые
> плюсы нашел. Хотя все равно имхо Паскаль масдай.

Нет, это LMD.


 
Igorek   (2003-12-26 14:47) [57]


> Думкин © (26.12.03 14:09) [56]
> Нет, это LMD.

Иной реакции я и не ожидал. :)))

Или ты имел ввиду Lamer (Virt) Must Die?


 
DiamondShark   (2003-12-26 15:07) [58]


> Синтаксис плохой. Я вообще не понимаю назначение -> ;
> В VB такого нет и все работает нормально.

Запяточие -- разделитель операторов.

В ВБ синтаксис фуфло. Там символ конца строки считается значимым.
В Паскале синтаксис свободный.


 
Yanval   (2003-12-26 16:01) [59]

>Игорёк
Ну, никто-же не материт С, например за то, что вместо точки ставится стрелка, хотя тоже трудно при переходе. Если паскаль кому-то сложен это ещё не повод для его смерти.


 
uw   (2003-12-26 16:21) [60]

>Sha © (26.12.03 11:57) [31]

В Алголе-60 begin и end - не операторные скобки, а ограничители блока. Это, в частности, означает, что после if ... then begin могут следовать описания переменных, и только потом - операторы. Кроме того, текст после end вплоть до ; воспринимается компилятором как комментарий. У Паскаля структура другая, а компиляторы быстрые. И это хорошо.


 
uw   (2003-12-26 16:25) [61]

А C мне тоже нравится. Правда, я на нем писал только программы для контроллеров, никаких неудобств при этом не испытывал.


 
REA   (2003-12-26 16:46) [62]

А вот такое:
If A Then
If B Then DoSomethingAB;
Else
DoSomethingNotA

Это ; перед else? Обязан ли я ставить Begin End?


 
Юрий Зотов   (2003-12-26 19:04) [63]

Ну, что ж, начнем отвечать, по порядку.

> MOA © (26.12.03 13:04) [46]

Совершенно ясно, что это просто ошибка в лексическом блоке компилятора. И так же совершенно ясно, что она имеет отношение к конкретной РЕАЛИЗАЦИИ языка, но не к самому языку.

> blackman © (26.12.03 13:12) [47]

>>Алгол - это метаязык. Язык описания алгоритмов
> Стало быть на всех остальных алгоритм не запишешь

Потрясающая логика. No comments. За исключением одного - при цитировании Вы опутили слово "ИЗНАЧАЛЬНО". А зря. Оно ключевое.

Что же касается приведенных Вами ссылок, то первая из них моего утверждения не опровергает, а вторая - подтверждает его:
history: Originally created in 1960 as an abstract language for describing algorithms.
Строгости ради следует добавить, что и утвержение это - вовсе не мое. Его можно найти чуть ли не в любой книжке по алголу.

> Sha © (26.12.03 13:24) [50]

> Поэтому на нем удобно вести обучение написанию алгоритмов.

Да. Потому что он именно для этого и разрабатывался. На нем можно обучать и практическому программированию - потому что он хорошо структурирован и пр. Но все же запись алгоритма на некоем абстрактном языке (каким первоначально и был Алгол) и написание практической программы - вещи несколько разные. И вот как раз для второго Паскаль подходит лучше. И тоже потому что он именно для этого и разрабатывался.

> Некоторым может не нравится постоянно думать, обходя каждый
> камень на пути. Гораздо лучше, когда все камни убраны с твоей
> дороги

Вы, вероятно, имели дело с PL/1, который даже на уровне декларации самого языка УЖЕ допускал практически свободное преобразование любых типов данных в любые другие, смешение их в одном выражении и пр. Все камни убраны, не правда ли? Но вот как раз для ОБУЧЕНИЯ это, согласитесь, просто ужасно. Хуже трудно придумать - и в смысле прививания СТИЛЯ это ПРИНЦИПИАЛЬНЫЙ недостаток. А паскалевские "камни" (то бишь точки с запятыми), во-первых, вовсе не принципиальны, а во-вторых вообще перестают быть камнями через пару недель практики. И никаких проблем.

> Дети пользуются выключателем не задумываясь об электронах.
> Они узнают об этом позже. Почемы бы не перенести эту
> концепцию на язык?

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

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

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

> А "операторные скобки ОПЕРАТОРАМИ не являются".
> Очевидные истины не требуется повторять

Я не считал, что эта истина для Вас очевидна - исходя из Ваших же собственных слов:

Sha © (26.12.03 11:26) [24]
Вирт почему-то решил, что begin и end не являются операторами,
и значит, перед end и после begin точки с запятой необязательны.


Поэтому я и хотел пояснить трактовку begin-end в Паскале. Если она и без того для Вас очевидна, то, конечно, старался я зря - но ведь тогда Вы противоречите сами себе.

> REA © (26.12.03 16:46) [62]
> Обязан ли я ставить Begin End?

Согласно определению самого языка - не обязаны. Но, как выяснилось, в его Delphi-реализации есть погрешность, поэтому в Delphi-программе - обязаны.


 
blackman   (2003-12-26 19:46) [64]

>Потрясающая логика. No comments. За исключением одного - при >цитировании Вы опутили слово "ИЗНАЧАЛЬНО"
А изконечно уже нет ? :)
Изначально предполагалось, что это один из алгоритмических языков.
И потом, неужели вы не поняли шутки ?
Я так не играю :)


 
Sha   (2003-12-26 19:46) [65]

> Юрий Зотов © (26.12.03 19:04) [63]

1. Уж очень серьезно вы относитесь ко всем репликам в "потрепаться". Я бы и сам подписался под некоторыми из ваших ответов, но в иной ситуации. А среди, я надеюсь, единомыщленников, принят несколько иной тон.
2. Есть несколько замечаний к Вашей манере вести дискуссии. Вы ведь не думаете, что знаете все лучше всех? Я, например, уверен в обратном, но не демонстрирую этого.
3. Есть такой 100%-выигрышный способ завалить оппонента. Сначала приписать ему нечто, чего он не говорил, а потом разгромить с треском эту позицию. Не хочу сказать, что Вы пользуетесь этим приемом, но иногда подходите к нему очень близко.

С наилучшими пожеланиями,
Александр Шарахов.


 
Petr V. Abramov   (2003-12-26 20:43) [66]

Юрий Зотов © (26.12.03 11:52) [30]
Так все-таки не надо :) - так получается, что список операторов обязан начинаться с простого оператора. В [27] как раз было лучше. Насчет бесконечной рекурсии определения, которой Вы, скорее всего, испугались - реально ее нет, и [27] раскручивается на ура, я даже офигел, насколько естественным образом это получается


 
Юрий Зотов   (2003-12-26 21:25) [67]

> Petr V. Abramov © (26.12.03 20:43) [66]

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

<список операторов> ::= <пустая цепочка>
<оператор>
<оператор> ; <список операторов>


> Sha © (26.12.03 19:46) [65]

Видимо, я просто задира. Мир?
:о)


 
Sha   (2003-12-26 21:51) [68]

Юрий Зотов © (26.12.03 21:25) [67]

OK, мир


 
Petr V. Abramov   (2003-12-26 22:03) [69]

Юрий Зотов © (26.12.03 21:25) [67]
Тогда уж пустой оператор, иначе ( что относительно важно для ветки :) не получится глупая, но синтаксически верная конструкция

if true then
else ;


 
Иван Шихалев   (2003-12-26 22:27) [70]

1-н момент.

Во-первых, средней паршивости профессионалу давно насрать на каком языке писать - есть "студенты" пусть они и пишут.

Во-вторых, готов спорить со всякими любителями C (или другого языка общего назначения) что одинаковую задачу решу примерно в то же время, что и оппонент на C. Готов спорить даже, что при решениии задачи на вашем занюханном диалеките - мне понадобится не больше месяца от решения специалиста по вашему занюхануму.

PS. Менее 10 бутылок коньяка - не интересует.


 
Юрий Зотов   (2003-12-26 22:52) [71]

> Sha © (26.12.03 21:51) [68]

:о)

> Petr V. Abramov © (26.12.03 22:03) [69]

Все же не так. Пустой список - он и есть пустой список. Пример:
begin
// И никаких точек с запятыми - вообще ничего, кроме этого
// комментария, который, естественно, игнорируется.
end


А пустой оператор - это <простой оператор>, точно такой же как и все остальные:

...
<оператор while> ::= while <условие> do <оператор>
<пустой оператор> ::= ;

<простой оператор> ::= ...
<оператор while>
<пустой оператор>


И все раскручивается само собой.


 
Petr V. Abramov   (2003-12-27 01:37) [72]

> Юрий Зотов © (26.12.03 22:52) [71]
Если < пустой оператор > - это < простой оператор >, то пустой список естественным образом определяется через него, и специального определения не требуется ( что не делает неверным [67]).
Но все равно в [71] есть "не так"! :)
<пустой оператор>" - это не semicolon! Иначе конструкция
if <condition> then <пустой оператор> else <оператор>
выглядит как if false then ; else ; и получаем заголовок ветки :)
<пустой оператор> ::= <ничего нет>, где
<ничего нет> ::= <разделители и комментарии> (которые тоже являются частью входного потока, и, соответственно, языка)

P.S. Извини за занудство :)



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.63 MB
Время: 0.014 c
14-63328
Volkov
2003-12-30 20:29
2004.01.20
Создание директорий (mkdir)


4-63458
goliath
2003-11-16 16:31
2004.01.20
WM_COPYDATA


6-63283
Jorik
2003-11-17 12:52
2004.01.20
Сообщения


3-63005
Alex-kosmonavt
2003-12-23 11:21
2004.01.20
Insert


7-63412
Sam Stone
2003-10-24 11:12
2004.01.20
Входящий трафик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский