Re[15]: Oberon family
От: Кодт Россия  
Дата: 19.11.04 09:48
Оценка: +1 :)
Здравствуйте, Павел Кузнецов, Вы писали:

>> Ущербно само требование предварительной декларации.


ПК>Всегда? Требование любых предварительных объявлений?


ПК>Даже предварительного объявления переменных?


Если объявление и инициализация совмещены — это удобно. C#, PHP... где ещё я это видел...
Особенности компиляции/компоновки С/С++ не позволяют так делать, ну значит, планида у них такая
Перекуём баги на фичи!
Re[15]: Oberon family
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 09:49
Оценка:
Здравствуйте, Трурль, Вы писали:

AVK>>Добавлю что преимущество однопроходных компиляторов имеет место быть для первого варианта.

Т>Думаю, лет 20 назад Вы бы не были столь категоричны.

Даже 10 лет назад не был бы. А что?
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[13]: Oberon family
От: Трурль  
Дата: 19.11.04 10:26
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>В "классике", при рассуждениях о скорости компиляции, проходом называют именно считывание/запись файла.

Не знаю, что такое "классика", но вполне себе классический 6-проходный компилятор PL/1 считывал исходный файл только один раз.

Возражение по процедуре ведения.
VD>Блин, ну, зачем говорить о том, что слабо знаете?
Почему Кодту позволительно использовать термин "многопроходный компилятор", а Трурля за то же самое обвиняют в некомпетентности?
Re[16]: Oberon family
От: Трурль  
Дата: 19.11.04 10:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Добавлю что преимущество однопроходных компиляторов имеет место быть для первого варианта.

Т>>Думаю, лет 20 назад Вы бы не были столь категоричны.

AVK>Даже 10 лет назад не был бы. А что?


Разрабатывая Оберон, Вирт учитывал, что ему придется писать компилятор и для какой машины. А вот авторы Component Pascal вполне могли бы снять ограничения, раз уж их язык все равно несовместим с Обероном.
Re[17]: Oberon family
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 10:52
Оценка: :)
Здравствуйте, Трурль, Вы писали:

Т>Разрабатывая Оберон, Вирт учитывал, что ему придется писать компилятор и для какой машины. А вот авторы Component Pascal вполне могли бы снять ограничения, раз уж их язык все равно несовместим с Обероном.


Так о том и речь.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[15]: Oberon family
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Всегда? Требование любых предварительных объявлений?


Методов.

ПК>Даже предварительного объявления переменных?


Рад что доставил тебе удоволствие подловить меня еще разок на слове.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Oberon family
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Возражение по процедуре ведения.

VD>>Блин, ну, зачем говорить о том, что слабо знаете?
Т>Почему Кодту позволительно использовать термин "многопроходный компилятор", а Трурля за то же самое обвиняют в некомпетентности?

Я не видел где он применял этот термин. Может там разница была не принципиальна. Ты же начал рассуждать о скорости. И тут разница очень велика. Ты ведь заранее оссоциировал многопроходность с тормозами. А в случае "проходов" по AST — это не так. Именно по этому в серьезных книгах для прохода по AST используется отедьный термин.

Иначе моно дорассуждаться до того, что С++-компилятор быстрее C#-пного, так как первый однопроходный, а второй многопроходный, ведь С++ требует предеклараций и пасит код в прямом порядке.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Oberon family
От: Шахтер Интернет  
Дата: 20.11.04 03:31
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Павел Кузнецов, Вы писали:


>>> Ущербно само требование предварительной декларации.


ПК>>Всегда? Требование любых предварительных объявлений?


ПК>>Даже предварительного объявления переменных?


К>Если объявление и инициализация совмещены — это удобно. C#, PHP... где ещё я это видел...

К>Особенности компиляции/компоновки С/С++ не позволяют так делать, ну значит, планида у них такая

В процессе парсинга C++ кода приходится определять классы имён. Имя может быть именем переменной, типа или шаблона. Не определив класс имени нельзя распарсить выражение -- возникают синтаксические неопределённости. Это одна из главных причин необходимости предварительных деклараций. А так же причина появления в языке ключевого слова typename.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[17]: Oberon family
От: Кодт Россия  
Дата: 22.11.04 09:52
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

К>>Если объявление и инициализация совмещены — это удобно. C#, PHP... где ещё я это видел...

К>>Особенности компиляции/компоновки С/С++ не позволяют так делать, ну значит, планида у них такая

Ш>В процессе парсинга C++ кода приходится определять классы имён. Имя может быть именем переменной, типа или шаблона.

... или вообще именем пространства имён.

Ш>Не определив класс имени нельзя распарсить выражение -- возникают синтаксические неопределённости. Это одна из главных причин необходимости предварительных деклараций. А так же причина появления в языке ключевого слова typename.


Можешь привести пример, как класс имени влияет на синтаксический анализ (не на семантику)?
Перекуём баги на фичи!
Re: Oberon family
От: AVC Россия  
Дата: 22.11.04 11:30
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Тот факт, что Стандарт С++ занимает несколько сотен страниц, говорит не о сложности языка, а о тщательной проработке технической документации.


В прошлую пятницу я был свидетелем одной милой сцены.
Один наш сотрудник, почтенный доктор наук, принес результаты тестов, подтверждающие, что для наших задач за глаза хватает 32-битного float. Т.е. встраивать в процессор поддержку double нет никакой нужды.
На радостях все разговорились, разоткровенничались. В частности, наш доктор наук заявил, что Си++ — "замечательный язык". Правда, быстро выяснилось, что у него перегрузка некоторых операторов приводит не к тем результатам, которые ожидались. (В тестах ему пришлось обойтись без этой перегрузки.) Программисты стали разбираться. Возникло какое-то затруднение. Чтобы помочь ребятам (и вспомнив о тщательной проработке стандарта Си++) я "подкинул" им электронную копию стандарта Си++.
Через четверть часа они все еще ходили по перекрестным ссылкам, а в конце концов, утомившись, и вовсе оставили это занятие...
Тут у меня возник "крамольный" вопрос: уж не слишком ли тщательно был составлен стандарт Си++?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[2]: Oberon family
От: Sergey J. A. Беларусь  
Дата: 22.11.04 14:30
Оценка: +1
Здравствуйте, AVC, Вы писали:

К>>Тот факт, что Стандарт С++ занимает несколько сотен страниц, говорит не о сложности языка, а о тщательной проработке технической документации.


AVC>В прошлую пятницу я был свидетелем одной милой сцены.

AVC>Один наш сотрудник, почтенный доктор наук, принес результаты тестов, подтверждающие, что для наших задач за глаза хватает 32-битного float. Т.е. встраивать в процессор поддержку double нет никакой нужды.
AVC>На радостях все разговорились, разоткровенничались. В частности, наш доктор наук заявил, что Си++ — "замечательный язык". Правда, быстро выяснилось, что у него перегрузка некоторых операторов приводит не к тем результатам, которые ожидались. (В тестах ему пришлось обойтись без этой перегрузки.) Программисты стали разбираться. Возникло какое-то затруднение. Чтобы помочь ребятам (и вспомнив о тщательной проработке стандарта Си++) я "подкинул" им электронную копию стандарта Си++.
AVC>Через четверть часа они все еще ходили по перекрестным ссылкам, а в конце концов, утомившись, и вовсе оставили это занятие...
AVC>Тут у меня возник "крамольный" вопрос: уж не слишком ли тщательно был составлен стандарт Си++?

А в чём было затруднение то ?
А то у меня кроме вопроса о тщательности составления стандарта возникает и вопрос о квалификации ваших программистов....
Я — свихнувшееся сознание Джо.
Re[3]: Oberon family
От: AVC Россия  
Дата: 22.11.04 17:44
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>А в чём было затруднение то ?


Не имел времени вникнуть. (Как Вы думаете, если бы у меня было время, ограничился бы я пересылкой стандарта Си++?) Что-то связанное с подбором кандидатов на перегрузку.
Так что я занимался работой и со стороны наблюдал эту сценку. Она меня умилила, вот я и рассказал о ней.

SJA>А то у меня кроме вопроса о тщательности составления стандарта возникает и вопрос о квалификации ваших программистов....


Ну, конечно, куда им до Вас!

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[4]: Oberon family
От: Sergey J. A. Беларусь  
Дата: 22.11.04 18:16
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Здравствуйте, Sergey J. A., Вы писали:


SJA>>А в чём было затруднение то ?


AVC>Не имел времени вникнуть. (Как Вы думаете, если бы у меня было время, ограничился бы я пересылкой стандарта Си++?) Что-то связанное с подбором кандидатов на перегрузку.

AVC>Так что я занимался работой и со стороны наблюдал эту сценку. Она меня умилила, вот я и рассказал о ней.

Из Вашей истории совершенно ничего не ясно. Была ли непонятность в стандарте или это программеры просто не догнали. Я знал одного "программера" который не смог понять protected mode процессора. Может станем утверждать, что protected mode только запутывает программиста и вообще, стоит вернуться к real mode ?
Вполне возможно, что там был нетривиальный пример. Но мне то откуда знать ?

SJA>>А то у меня кроме вопроса о тщательности составления стандарта возникает и вопрос о квалификации ваших программистов....


AVC>Ну, конечно, куда им до Вас!


Насчёт себя я ничего не утверждал. Однако я хотя бы держу под рукой стандарт и Страуструпа.
Я — свихнувшееся сознание Джо.
Re[18]: Oberon family
От: Павел Кузнецов  
Дата: 22.11.04 18:18
Оценка: 41 (2) +1
Кодт,

> Ш>В процессе парсинга C++ кода приходится определять классы имён. Имя может быть именем переменной, типа или шаблона.


> ... или вообще именем пространства имён.


> Ш>Не определив класс имени нельзя распарсить выражение -- возникают синтаксические неопределённости. Это одна из главных причин необходимости предварительных деклараций. А так же причина появления в языке ключевого слова typename.


> Можешь привести пример, как класс имени влияет на синтаксический анализ (не на семантику)?


Допустим, есть два выражения языка, a и b.

Тогда:
a * b;

Если a — выражение, обозначающее типа, то результирующая синтаксическая конструкция — объявление, иначе — произведение двух выражений. При этом, в зависимости от того, чем является a, в качестве выражения b разрешены разные виды выражений. Например, если a — тип, то в качестве выражения b конструкция вида c + d не разрешена, и т.п.

Еще:
a(b);

Если a — имя типа, то результирующая синтаксическая конструкция — объявление переменной, если имя объекта — вызов перегруженной функции operator(), если имя функции — вызов функции. При этом, снова-таки, в зависимости от того, чем является a, в качестве b разрешены разные выражения. Например, если a — встроенный тип, то в качестве b выражения вида [i]c, d[i] не разрешены.

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

Конечно, можно
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Oberon family
От: Павел Кузнецов  
Дата: 22.11.04 18:48
Оценка: +1
AVC,

> В прошлую пятницу я был свидетелем одной милой сцены. <...>

> Через четверть часа они все еще ходили по перекрестным ссылкам, а в конце концов, утомившись, и вовсе оставили это занятие...

А никто не говорил, что будет легко

> Тут у меня возник "крамольный" вопрос: уж не слишком ли тщательно был составлен стандарт Си++?


Если серьезно, то сам язык C++ во многих моментах преизрядно сложен. Сложность стандарта — отражение этого момента. Собственно говоря, сложность данного языка является и его сильной (не сама по себе, а в результате выразительности, которая эту сложность вызывает), и его слабой стороной (очень долгий период обучения).

P.S. Пусть ваши программисты заходят на rsdn.cpp, там им сравнительно быстро и весьма квалифицированно помогут разобраться.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Oberon family
От: Павел Кузнецов  
Дата: 22.11.04 21:13
Оценка:
Sergey J. A.,

> AVC> Через четверть часа они все еще ходили по перекрестным ссылкам, а в конце концов, утомившись, и вовсе оставили это занятие...

> AVC> Тут у меня возник "крамольный" вопрос: уж не слишком ли тщательно был составлен стандарт Си++?

> А в чём было затруднение то ?

> А то у меня кроме вопроса о тщательности составления стандарта возникает и вопрос о квалификации ваших программистов....

Не стоит так категорично... Сложность C++, порожденная стремлением к выразительности языка, зачастую приводит к тому, что полное понимание происходящего даже во внешне простых случаях требует от программиста, действительно, глубокого знания языка, чего часто не нужно (или достигается значительно быстрее) при работе с другими языками.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[4]: Oberon family
От: Sergey J. A. Беларусь  
Дата: 23.11.04 08:27
Оценка: 1 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Не стоит так категорично... Сложность C++, порожденная стремлением к выразительности языка, зачастую приводит к тому, что полное понимание происходящего даже во внешне простых случаях требует от программиста, действительно, глубокого знания языка, чего часто не нужно (или достигается значительно быстрее) при работе с другими языками.


Посыпаю голову пеплом. Был несколько пьян, и категоричен
Я — свихнувшееся сознание Джо.
Re[5]: Oberon family
От: AVC Россия  
Дата: 23.11.04 14:30
Оценка: 3 (1)
Здравствуйте, Sergey J. A., Вы писали:

SJA>Из Вашей истории совершенно ничего не ясно. Была ли непонятность в стандарте или это программеры просто не догнали. Я знал одного "программера" который не смог понять protected mode процессора. Может станем утверждать, что protected mode только запутывает программиста и вообще, стоит вернуться к real mode ?

SJA>Вполне возможно, что там был нетривиальный пример. Но мне то откуда знать ?

Я вовсе не критикую стандарт Си++. Сложность языка и стандарта, должно быть, вытекает из задач, которые были поставлены разработчиками языка. Критиковать язык можно лишь на такой основе. (Я хотел раньше, чтобы именно так критиковали Оберон.)
"Цель" моей "зарисовки с натуры" другая: применить "остраннение" (термин литературоведа В.Шкловского), посмотреть на ситуацию со стороны. Хотя бы и так, как Холстомер у Л.Н.Толстого наблюдал оперное пение.
А ситуация такая. Действительно компетентный специалист в своей области (для нас особо ценный, как специалист по психоакустике) непременно хочет кодировать именно на Си++, языке действительно трудном и требующем изрядного навыка. Приобретение такого навыка требует значительного времени. (Здесь где-то назывался срок 3 года?)
Оправданно ли употребление Си++ в такой ситуации?
Ведь у нас все программисты (кроме меня, грешного; я, на свою беду, просто прикладной математик) — специалисты в своих областях: физики, аппаратчики и т.д.
Им, кроме стандарта языка, надо держать в голове кучу других стандартов.
А тут еще такой изощренный язык.
Разумно ли это?
В этом и состоит мой вопрос.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[3]: Oberon family
От: AVC Россия  
Дата: 23.11.04 14:56
Оценка: 1 (1) +1
Здравствуйте, Павел Кузнецов, Вы писали:

>> Через четверть часа они все еще ходили по перекрестным ссылкам, а в конце концов, утомившись, и вовсе оставили это занятие...

ПК>А никто не говорил, что будет легко

Меня со стороны даже заинтриговал этот процесс "хождения по ссылкам".
Написано что-то вроде см. пункт xxx. Ребята лезут туда. Там пара предложений и сакраментальное "см. пункт yyy". И так далее,
for (;;) ;

Оговорюсь, что это не критика Си++, это, скорее, просто смешная ситуация.
Но некоторые эпизоды собственной жизни, связанные с Си++, не могу забыть.
Вот еще один, "на вскидку".
Прихожу я первый раз на свою предыдущую работу (в начале 1997 года). И что я вижу? Все (человек шесть) программисты сидят в отладчике Watcom C++.
Ну, у меня сразу волосы дыбом...

ПК>Если серьезно, то сам язык C++ во многих моментах преизрядно сложен. Сложность стандарта — отражение этого момента. Собственно говоря, сложность данного языка является и его сильной (не сама по себе, а в результате выразительности, которая эту сложность вызывает), и его слабой стороной (очень долгий период обучения).


Именно. У каждого языка, заслуживающего внимания, есть свои сильные и слабые стороны.

ПК>P.S. Пусть ваши программисты заходят на rsdn.cpp, там им сравнительно быстро и весьма квалифицированно помогут разобраться.


Спасибо! Это может и правда пригодиться, а то доктора наук что-то совсем "расшалились", им непременно перегрузку операторов подавай!

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[18]: Oberon family
От: Шахтер Интернет  
Дата: 24.11.04 02:43
Оценка: 46 (2) +1
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Шахтер, Вы писали:


К>>>Если объявление и инициализация совмещены — это удобно. C#, PHP... где ещё я это видел...

К>>>Особенности компиляции/компоновки С/С++ не позволяют так делать, ну значит, планида у них такая

Ш>>В процессе парсинга C++ кода приходится определять классы имён. Имя может быть именем переменной, типа или шаблона.

К>... или вообще именем пространства имён.

Ш>>Не определив класс имени нельзя распарсить выражение -- возникают синтаксические неопределённости. Это одна из главных причин необходимости предварительных деклараций. А так же причина появления в языке ключевого слова typename.


К>Можешь привести пример, как класс имени влияет на синтаксический анализ (не на семантику)?


Вот совсем свежий примерчик из практики
Автор:
Дата: 23.11.04
.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.