Здравствуйте, Трурль, Вы писали:
SJA>> (т.е. я так предполагаю). "Спрашивается как долго ...".
Т>Есть масса других вещей, о которых можно приятно пофлеймить.
Например, до каких пор некоторые люди будут предполагать...
Здравствуйте, Сергей Губанов, Вы писали:
Т>>Есть масса других вещей, о которых можно приятно пофлеймить.
СГ>Например, до каких пор некоторые люди будут предполагать...
Это Вам лучше знать. Вы у нас любитель ляпнуть "предположив" Да что любитель — профессионал
Здравствуйте, Oleg A. Bachin, Вы писали:
OAB> игнорируете мой пост утвеждающий что вы ничего не понимаете в програмировании судя по вашей конструкции "try try")
Простите конечно, но тут так много сообщений, что я, к сожалению, даже уже забыл о чем речь в try try. Мне даже кажется что это вне темы данной ветки.
OAB>кстати, а как у нас дело обстоит с абстрактными методами?
Хорошо обстоят дела. Пишете слово ABSTRACT. Но можно я всё-таки просто дам Вам ссылку на русском языке
на language report, и Вы самостоятельно его прочитатете, вместо того чтобы мне тут всё объяснять?
OAB>пжалуйста! OAB>
OAB> if ((@a <> nil) and (a <> nil)) then ...
OAB>
Спасибо. Не знал. Сам пользовался для функций assigned(). Кстати, если @a обозначает прецедуру на которую указывает процедурная переменная "a", то как тогда узнать адрес самой процедурной переменной "a". Ведь операция получения адреса тоже обозначается символом @ ?
Например, если объявлено:
var i: integer;
то @i — это адрес переменной i. Но если объявлено
var a: MyFunc;
то @a — это не адрес "a", а адрес процедуры на которую ссылается процедурная переменная "a". Но как узнать адрес самой переменной "a"?
Здравствуйте, alexku, Вы писали:
A>То есть, забыл скобки — получил глюк.
А что Вы можете предложить в замен?
TYPE Func: PROCEDURE(): Func;
VAR a: Func;
a — обозначает саму себя как процедурную переменную
a() — обозначает результат, который вернула процедура-функция после исполнения
Как иначе-то, может быть?
Re[11]: Очередной яркий пример
От:
Аноним
Дата:
23.06.05 07:46
Оценка:
СГ>a — обозначает саму себя как процедурную переменную СГ>a() — обозначает результат, который вернула процедура-функция после исполнения
СГ>Как иначе-то, может быть?
Значит скобки все-таки нудны в вашем знаменитом WHILE a DO x END? То есть нужно писать x()?
Я также думаю, что флейма было бы поменьше, если бы Сергей не стал считать лексемы, а, как минимум, просто сказал бы, почему ему нравится Оберон. Так, как это сделали Вы (На основе этой подветки
Здравствуйте, Mamut, Вы писали:
M>Что-то в примерах, которые вы приводили при подсчете лексем, вы почему-то не вызывали процедуры со скобками. Аяяяй, нехорошо
А потому что там были процедуры, а тут процедуры-функции.
Для активации процедуры-функции надо
1) скобки написать даже если нет ни одного аргумента (иначе идентификатор будет обозначать саму процедуру-функцию, а не результат ее действия)
2) Как-то использовать возвращаемый результат.
a := myfunc; (* можно только если a - процедурная переменная, тогда ей присваивается значение самой процедуры-функции (ее адрес) *)
b := myfunc(); (* можно, присваиваем результат возвращаемый после активации процедуры-функции *)
myfunc(); (* НЕЛЬЗЯ! Возвращаемое значение не используется!!! *)IF valid() THEN END(* можно - возвращаемое значение используется *)
Здравствуйте, qwertyuiop, Вы писали:
Q>Большинство современных компиляторов выдают на такую строчку предупреждение
Это хорошо. Правда на прошлой неделе компилировал нечто написанное на Си не мной, там столько предупреждений выдалось, ёёёё-о-у, во всех них копаться даже не стал. Раз уж сами авторы не стали, я-то что?
Здравствуйте, moudrick, Вы писали:
M>Вообще, я читал где-то небольшие рассуждения о том, что в ОТО куда меньше отностиельного, нежели в СТО. Найду если за реальное время — дам линку...
Давно хотел ответить, но потерял это сообщение (тут их так много). Только что почти случайно нашел это Ваше сообщение. Так вот, не надо не ищите ссылку. Это и так известно. В плоском пространстве бесконечно много равноправных глобальных инерциальных систем отсчета (грубо говоря — всё относительно). Малейшее искривление пространства снимает это вырождение. В искривленном пространстве остается всего одна глобальная инерциальная система отсчета (грубо говоря — всё абсолютно). Остается добавить, что мы с вами живем в искривленном пространстве (грубо говоря — относительность у нас лишь локальная, в бесконечно малом).
Здравствуйте, CrystaX, Вы писали:
CX>Ибо синтаксис — вовсе не самое важное в языке.
Да не главное, согласен.
Но что мешало Sun и Microsoft для Java и для C# избрать правильный синтаксис?
Языки получились бы еще более лучшими.
Если в будущем, например, IBM или Intel соберется изобрести новый язык, то почему-бы им не взять в качестве синтаксической основы правильный синтаксис Modula/Oberon? Их язык от этого только выиграет.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, CrystaX, Вы писали:
CX>>Ибо синтаксис — вовсе не самое важное в языке.
СГ>Да не главное, согласен. СГ>Но что мешало Sun и Microsoft для Java и для C# избрать правильный синтаксис?
СГ>Если в будущем, например, IBM или Intel соберется изобрести новый язык, то почему-бы им не взять в качестве синтаксической основы правильный синтаксис Modula/Oberon? Их язык от этого только выиграет.
Кто сказал, что этот синтаксис — правильный? Только не надо ссылки на самого себе приводить. Требуется ссылка на строгое математическое доказательство правильности данного синтаксиса.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Да не главное, согласен. СГ>Но что мешало Sun и Microsoft для Java и для C# избрать правильный синтаксис? СГ>Языки получились бы еще более лучшими.
Начинаем очередной виток.
Может, я пропустил что-то, но кто, где и когда сказал: "Это правильный синтаксис, а это — нет". Я бы хотел получить ссылку на внушающий доверие литературный источник.
Кто вообще определяет правильность синтаксиса. Какие критерии при этом используются? Согласно этим критериям правильный ли синтаксис у языков: BASIC, APL, FORTH, PROLOG, WhiteSpace, BrainFuck
СГ>Если в будущем, например, IBM или Intel соберется изобрести новый язык, то почему-бы им не взять в качестве синтаксической основы правильный синтаксис Modula/Oberon? Их язык от этого только выиграет.
Здравствуйте, CrystaX, Вы писали:
CX>А естественные языки? Ведь написать корректную программу рабора фразы на английском (хотя бы) языке и получения точного ее смысла еще не удалось никому. Тем не менее это самый популярный язык в мире. А почему? Видимо, потому, что человеку важен не синтаксис.
Не английский, а США-совский. И это очень существенное уточнение. Это потому, что мог бы быть русский, если бы произошла мировая революция; или немецкий если бы планы фашистов сбылись; или китайский если бы китайцы завоевалю всю евразию. Или японский, если бы у них у первых появилась ядерная бомба. А так как в холодной войне победили именно США, то и язык по всему миру ихний. Кроме того они и компы с программами для них первее всех расплодили. Аналогично у Java нет преимуществ перед Оберонами кроме как то, что за плечами Java стоит Sun. Аналогично про .NET с Microsoft.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Mamut, Вы писали:
M>>Что-то в примерах, которые вы приводили при подсчете лексем, вы почему-то не вызывали процедуры со скобками. Аяяяй, нехорошо
СГ>А потому что там были процедуры, а тут процедуры-функции.
СГ>Для активации процедуры-функции надо СГ>1) скобки написать даже если нет ни одного аргумента (иначе идентификатор будет обозначать саму процедуру-функцию, а не результат ее действия) СГ>2) Как-то использовать возвращаемый результат. СГ>
СГ>a := myfunc; (* можно только если a - процедурная переменная, тогда ей присваивается значение самой процедуры-функции (ее адрес) *)
СГ>b := myfunc(); (* можно, присваиваем результат возвращаемый после активации процедуры-функции *)
СГ>myfunc(); (* НЕЛЬЗЯ! Возвращаемое значение не используется!!! *)
СГ>IF valid() THEN END(* можно - возвращаемое значение используется *)
СГ>
Писец. И это — правильный синтаксис???? У меня уже слов не осталось. Грабли, не хуже, чем в С++
Пример. Полупсевдокод.
Было
PROCEDURE someProcedure : INTEGER
BEGIN
RETURN 1;
END;
Стало
PROCEDURE someProcedure
BEGIN
END;
Где-то в коде:
{* много кода *}
myVar := someProcedure;
{* много кода *}
Что будет? Правильно, надеемся, что компилятор остановит. Если в С++ стоит задача — "compile-debug", то в Оберонах, судя по всему, "compile-compile-compile-мля, когда эти ошибки закончятся?".
Опять же, синтаксис name := name неочевиден, потому что я не вижу сразу, что я присваиваю — переменную или адрес функции. Конечно, из окружающего кода должно стать понятно, но и это не всегда очевидно
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Но что мешало Sun и Microsoft для Java и для C# избрать правильный синтаксис? СГ>Языки получились бы еще более лучшими.
Вот этот момент и является наиболее спорным. Для подавляющего большинства программистов (и это факт), правильный синтаксис означал бы ухудшение языка. Правильный синтаксис != хороший язык.
СГ>Если в будущем, например, IBM или Intel соберется изобрести новый язык, то почему-бы им не взять в качестве синтаксической основы правильный синтаксис Modula/Oberon? Их язык от этого только выиграет.
Нет, проиграет. А что-что, но деньги считать эти господа умеют.
Здравствуйте, Privalov, Вы писали:
P>P.S. А BEGIN в Обероне существует! А кто-то кричал не своим голосом, что нет и что это устаревший синтаксис.
Ни кто не кричал что в Обероне не существует слова BEGIN. Речь была о том, что самостоятельного блока BEGIN END оторванного от IF, WHILE, CASE, WITH и т.д. в Обероне не существует. Самостоятельный блок ни для чего не нужен. Служебное слово BEGIN используется только внутри составной инструкции PROCEDURE, а также внутри составной инструкции MODULE:
MODULE...
...
BEGIN
...
END...
PROCEDURE...
...
BEGIN
...
END...
оно показывает где, собственно, начинается сам код.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, CrystaX, Вы писали:
CX>>А естественные языки? Ведь написать корректную программу рабора фразы на английском (хотя бы) языке и получения точного ее смысла еще не удалось никому. Тем не менее это самый популярный язык в мире. А почему? Видимо, потому, что человеку важен не синтаксис.
СГ>Не английский, а США-совский. И это очень существенное уточнение. Это потому, что мог бы быть русский, если бы произошла мировая революция; или немецкий если бы планы фашистов сбылись; или китайский если бы китайцы завоевалю всю евразию. Или японский, если бы у них у первых появилась ядерная бомба. А так как в холодной войне победили именно США, то и язык по всему миру ихний. Кроме того они и компы с программами для них первее всех расплодили. Аналогично у Java нет преимуществ перед Оберонами кроме как то, что за плечами Java стоит Sun. Аналогично про .NET с Microsoft.
Опять демагогия? Неважно, какой язык был бы распространен. Любой их них чрезвычайно сложен для корректного его разбора. Английский язык был приведен в качестве примера одного из простейших распространенных натуральных языков.
И тем не менее этими языками пользуются. Почему? Вывод очевиден — человек мыслит другими категориями. На синтаксис ему плевать. Попытка впихнуть человеческое мышление в строгие рамки "правильного" синтаксиса обречена на провал, что уже не раз доказывалось на практике.
Все, я утрачиваю интерес к этому разговору, завязываю. Вообще мои сообщения имели четкую цель — ответить на Ваш вопрос "доколе?". Я ответил. Захотите воспринять — воспримете. Нет — я ничего доказывать Вам не буду. Жизнь докажет. Эволюция, если хотите.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, CrystaX, Вы писали:
CX>>А естественные языки? Ведь написать корректную программу рабора фразы на английском (хотя бы) языке и получения точного ее смысла еще не удалось никому. Тем не менее это самый популярный язык в мире. А почему? Видимо, потому, что человеку важен не синтаксис.
СГ>Не английский, а США-совский. И это очень существенное уточнение. Это потому, что мог бы быть русский, если бы произошла мировая революция; или немецкий если бы планы фашистов сбылись; или китайский если бы китайцы завоевалю всю евразию. Или японский, если бы у них у первых появилась ядерная бомба. А так как в холодной войне победили именно США, то и язык по всему миру ихний. Кроме того они и компы с программами для них первее всех расплодили. Аналогично у Java нет преимуществ перед Оберонами кроме как то, что за плечами Java стоит Sun. Аналогично про .NET с Microsoft.
Сергей, уважайте, пожалуйста, родной язык (если, конечно, русский для вас родной) — нет слова "ихний" в русском!
А утверждения далеки от правоты. Наводящий вопрос: США единственная страна, говорящая по-английски? Если вы хоть немного знаете историю и географию, то гораздо большее значение Англии, а не США (хотя влияние последних тоже немалое, но и туда английский из Англии пришёл)