Re[18]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.05 12:55
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Если я правильно помню грамматику Паскаля, там, вообще, присваивание не является expression, а является statement — т.е. о возвращаемом значении вообще говорить вообще бессмысленно, так же как о возвращаемом значении for или while (в Паскале — в некоторых других языках это вполне может иметь смысл). Внутри if, естественно, statement быть не может, только expression...


VC6 вроде вообще не делал.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.05 12:55
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Это, кстати, касается и Владовского примера ОСи на С#.


Хинт. ОС содержит CLI-рантайм.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.05 13:14
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>ОС на управляемых языках — полно (экспериментальных и коммерческих).

C>Реально успешных сейчас — ноль. Пожалуй, Symbolics'ы были верхом успеха.

А можно назвать успешные ОС кроме Виндовс и Линукс? Уже у линукса будут огромные проблемы с популярностью. ОС вообще море. А популярных из них еденицы. Прийдет время будут и популярные управляемые ОС. Пок что они только эксперементы. Но и Юникс когда-то был эксперементом.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Лекция Вирта в политехническом - впечатления
От: Cyberax Марс  
Дата: 16.10.05 13:24
Оценка: 2 (2) +1 :)
VladD2 wrote:

> C>ОС на управляемых языках — полно (экспериментальных и коммерческих).

> C>Реально успешных сейчас — ноль. Пожалуй, Symbolics'ы были верхом успеха.
> А можно назвать успешные ОС кроме Виндовс и Линукс?

Symbian, *BSD, Solaris...

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[19]: Лекция Вирта в политехническом - впечатления
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.10.05 14:30
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Удивил ежа...


Да тебя удивишь. Ты же иногда часто не понимаешь, о чем речь вообще идет.

VD>В С-подобных языках это просто выражется через ? :.


В Ruby так же есть ? :. С таким же смыслом как в C-подобных языках.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[16]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.05 15:34
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> C>ОС на управляемых языках — полно (экспериментальных и коммерческих).

>> C>Реально успешных сейчас — ноль. Пожалуй, Symbolics'ы были верхом успеха.
>> А можно назвать успешные ОС кроме Виндовс и Линукс?

C>Symbian, *BSD, Solaris...


Назвать их популярными у меня бы язык не повернулся. Хотя Symbian может и можно.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.10.05 15:34
Оценка:
Здравствуйте, eao197, Вы писали:

VD>>Удивил ежа...


E>Да тебя удивишь. Ты же иногда часто не понимаешь, о чем речь вообще идет.


И что же тут не понятного?

VD>>В С-подобных языках это просто выражется через ? :.


E>В Ruby так же есть ? :. С таким же смыслом как в C-подобных языках.


И? Жаль еще 5 вариантов не сделали.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Лекция Вирта в политехническом - впечатления
От: Cyberax Марс  
Дата: 16.10.05 16:06
Оценка: +1 -1 :)
VladD2 wrote:

>>> C>ОС на управляемых языках — полно (экспериментальных и коммерческих).

>>> C>Реально успешных сейчас — ноль. Пожалуй, Symbolics'ы были верхом
> успеха.
>>> А можно назвать успешные ОС кроме Виндовс и Линукс?
> C>Symbian, *BSD, Solaris...
> Назвать их популярными у меня бы язык не повернулся. Хотя Symbian
> может и можно.

Вполне популярные, и активно развивающиеся. Кстати, есть еще куча всяких
zOS и vxWorks.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[15]: Лекция Вирта в политехническом - впечатления
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.10.05 16:12
Оценка:
VladD2 wrote:
>
> Pzz>Это еще что. Вы попробуйте написать type cast в указатель на
> функцию, да еще и с параметрами
>
> Вот потому я и программирую последнее время на Шарпе. В нем такой фигней
> заниматься не приходится.

Иногда (редко, но все же) хочется иметь возможность хранить/передавать
указатель на функцию, способ вызова которой определяется в рантайме.

Можно, конечно, сделать union из указателей на функции разных типов. Это
будет type safe, и все такое. Плохо это тем, что никакой реальной type
safety этот union не добавляет, т.е. статическая типизация все равно
невозможна (мы ведь решили, что способ вызова функции определяется в
рантайме), но заставляет дублировать знание о всех возможных способах
применения данного указателя еще в одном месте, причем без всякой пользы.

Как, интересно, эта проблема решается в C#?
Posted via RSDN NNTP Server 1.9
Re[16]: Лекция Вирта в политехническом - впечатления
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.10.05 16:25
Оценка:
Cyberax wrote:
>
>> C>Этих соглашений всего несколько штук (паскалевское, C-шное, WINAPI) — и
>> C>их поддерживают все компиляторы. Тем более, что для экспорта обычно
>> C>используют "системный" формат.
>> Скажите пожалуйста, какой компилятор поддерживает эти три соглашения
>> для big endian ARM'а?
>
> На big endian ARM соглашение WINAPI будет неактуальным, а для остальных
> двух — любой приличный компилятор (GCC, CodeWarrior, etc.).

JFYI, на ARM'е свой джентельментский набор несовместимых соглашений о
вызовах. И бардака там гораздо больше, чем на x86.

Кстати, и на x86 бардака хватает. Как по-вашему устроена передача и
возврат структуры по значению?

>> C>В любом случае, эта проблема нааааааааамного проще несовместимого

>> C++ ABI.
>> А в чем конкретно заключается сложность ABI C++, Вы можете перечислить?
>
> 1. Name mangling (как C++ные имена представляются в виде строк) —
> главная проблема.
> 2. Exception interoperability.
> 3. Object array format (как записывается длина массива объектов)
> 4. Allocators interoperability (как new/delete взаимодействуют друг с
> другом).
> И т.п.

Name mangling — казалось бы, достаточно один раз договориться (т.е.,
проблема не техническая, а организационная).

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

Object array format — а это что такое? Где в C++ в явном виде видно, что
длина массива где-то хранится? Это внутреннее дело new[]/delete[]

new/delete — проблемы нет, если вся программа использует какую-то одну
пару. Именно так оно обычно и происходит.

Более интересная проблема, это как из указателя на объект класса
добраться до его методов. В частности, конструкторов/деструкторов (нужно
для new/delete) и до виртуальных методов.

>> C>И тем не менее регулируется #pragma'ми. Тем более, что точное

>> размещение
>> C>обычно важно только для конкретной данной платформы.
>> Точное размешение обычно важно, когда 2 машинки собираются
>> обмениваться между собой этими данными в бинарном виде.
>
> Точное расположение важно в системном программировании, когда оно точно
> определено аппаратными протоколами работы. Собственно, для этого в
> основном и используются битовые поля.
>
> Для обмена данными их проще приводить в какой-то единый формат.

Если этот единый формар называется не XML, а IP datagram, то работа с
битовыми полями все же нужна.

>> C>У Java нет ABI как такового: .class-файлы — это просто по сути

>> C>распарсеный и почти необратаный Java-код.
>> И тем не менее. У Явы есть спецификация — нет проблем с совместимостью
>> (ну, в основном нет). У C нет спецификации ABI (вернее, нет единой
>> уважаемой всеми) — есть проблемы с совместимостью.
>
> Для Java эта задача тривиальна. Для С++ создание единого ABI —
> чрезвычайно сложная проблема.

Для Явы эта задача тривиальна только потому, что Sun сделал это один
раз, и всем навязал свой стандарт. Для C++ этого никто не сделал. По
разным причинам. Одна из них заключается в том, что ни у кого нет
достаточного авторитета, чтобы это сделать.

>> C>Это тождество просто показывает указательную ориентированость языка С.

>> Я ничего не понял в этой фразе
>
> Это показатель того, что в С работа с указателями органично встроена в язык.

Что, возможность написать 3[ "abcde" ] показывает, что в C работа с
указателями встроена в язык?

Я думаю, она показывает то, что авторы языка гораздо больше думали о
компиляторе, чем о человеке, когда они придумывали синтаксис. Кстати,
они этого по-моему особенно и не скрывали...
Posted via RSDN NNTP Server 1.9
Re[16]: Лекция Вирта в политехническом - впечатления
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.10.05 18:01
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Как, интересно, эта проблема решается в C#?


Делегаты + рефлекшен
... << RSDN@Home 1.2.0 alpha rev. 615 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[17]: Лекция Вирта в политехническом - впечатления
От: pagid Россия  
Дата: 16.10.05 19:55
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я думаю, она показывает то, что авторы языка гораздо больше думали о

Pzz>компиляторе, чем о человеке, когда они придумывали синтаксис. Кстати,
Pzz>они этого по-моему особенно и не скрывали...

Мне кажется, что Вирт тоже думал о компиляторе больше, чем о человеке, когда придумывал Паскаль, Модулу, Оберон ... , однако результат противоположный.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[18]: Лекция Вирта в политехническом - впечатления
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.10.05 22:12
Оценка:
pagid wrote:
>
> Pzz>Я думаю, она показывает то, что авторы языка гораздо больше думали о
> Pzz>компиляторе, чем о человеке, когда они придумывали синтаксис. Кстати,
> Pzz>они этого по-моему особенно и не скрывали...
>
> Мне кажется, что Вирт тоже думал о компиляторе больше, чем о человеке,
> когда придумывал Паскаль, Модулу, Оберон ... , однако результат
> противоположный.

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

T.e. запись

x ::= foo;

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

Далее, там, где требуется указатель на функцию (например, функция может
быть передана как параметр другой функции), никакого специального значка
перед именем функции не требуется.

Теперь вопрос, как в таком синтаксисе описать функцию без параметров,
возвращающую указатель на функцию? Никак, потому что при ее
использовании невозможно будет понять по контексту, имеется ли в виду
она сама, или возвращаемое ей значение.

Вероятно поэтому в Паскале функции не могут возвращать указатели на
функции
Posted via RSDN NNTP Server 1.9
Re[17]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.10.05 00:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Делегаты + рефлекшен


Нафига тут рефлекшен?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.10.05 00:40
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Иногда (редко, но все же) хочется иметь возможность хранить/передавать

Pzz>указатель на функцию, способ вызова которой определяется в рантайме.

Pzz>Можно, конечно, сделать union из указателей на функции разных типов. Это

Pzz>будет type safe, и все такое. Плохо это тем, что никакой реальной type
Pzz>safety этот union не добавляет,

union в С/С++ и типобезопасность неимеют ничего общего. Типобезопасные юнионы есть только в ОКамле.

Pzz> т.е. статическая типизация все равно

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

Для татических решений можно вывернуться (хотя и раком) на шаблонах. Кое-как решения буста и Локи эту проблему решает. Но именно что кое-как.

Pzz>Как, интересно, эта проблема решается в C#?


В нем есть тип — delegate. Все методы с подходящей сигнатурой могут быть присвоены пермеменной типа delegate. Получается полная типобезопастность, динамичность и т.п. В общем, разработчики языка не стали выпендриваться, а просто встроили в язык нужную функциональность. А апологеты С++, в том числе автор и комитет, все бются над задачей доказательства ненужности этого и самодостаточности С++.

Как это выглядит на шарпе:
delegate int MyDelegateType(string str);

...
// где-то... возможно в другой сборке.
void SomeMethod(MyDelegateType func)
{
    int i = func("123");
}
...
// где-то совсем в другом месте (возвожно компилируемом отдельно от первой сборки).
obj.SomeMethod(int.Parse);
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Лекция Вирта в политехническом - впечатления
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.10.05 00:40
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Вполне популярные, и активно развивающиеся. Кстати, есть еще куча всяких

C>zOS и vxWorks.

Агащазблин:
http://globalstats.hotlog.ru/#OS

http://www.hotlog.ru/hlpub.shtml?view=22

Немаловажную роль играют и используемые операционные системы. Не секрет, что Windows лидирует в этом плане. Но смена его версий проходит достаточно динамично. Так, два года назад Windows 98 преобладал во всех отношениях – почти 60% пользователей отдавали ему предпочтение. Сейчас его доля сократилась до 21%, а в лидеры вышел Windows XP (55%). Также незначительный рост процентной доли наблюдается у Linux, но на него по-прежнему приходится менее 1% пользователей. Совсем немного пользователей (также менее 1%) предпочитают Macintosh, и при этом его доля постоянно снижается.

... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Лекция Вирта в политехническом - впечатления
От: pagid Россия  
Дата: 17.10.05 02:24
Оценка:
Здравствуйте, Pzz, Вы писали:


Pzz>Если бы он это делал, в языке не было бы такой глупости, как то, что

Pzz>вызов функции без параметров записывается без скобок после имени функции.

Pzz>T.e. запись


Pzz> x ::= foo;


Pzz>может быть как присваиванием иксу значения переменной foo, так и вызовом


Это не усложняет компилятор, но усложняет восприятие человеком



Pzz>Вероятно поэтому в Паскале функции не могут возвращать указатели на

Pzz>функции

Сильно сомневаюсь, что Вирт видел небходимость в этом в момент создания Паскаля, особенно в рамках его минимальсткого подхода.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[14]: Массивы и указатели в C
От: Павел Кузнецов  
Дата: 17.10.05 04:35
Оценка:
VladD2,

>>>> int a[5] = { 0, 1, 2, 3, 4 };

>>>> как преобразовать данную конструкцию в эквивалент на указателях?

>>>
>>> int *a=(int*)alloca(5*sizeof(int));
>>> int f;
>>> for (f=0;f<5;f++) a[f]=f;
>>>


> ПК>А теперь то же самое в global scope...

>
> int* Init()
> {
>     int i;
>     
>     for (i = 0; i < 5; i++)
>         a[i] = i;
> }
>
> int* a = Init();
>


Где выделение памяти, где возврат значения в Init?
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[19]: Лекция Вирта в политехническом - впечатления
От: Cyberax Марс  
Дата: 17.10.05 07:58
Оценка:
VladD2 wrote:

> C>Вполне популярные, и активно развивающиеся. Кстати, есть еще куча

> всяких
> C>zOS и vxWorks.
> Агащазблин:
> http://globalstats.hotlog.ru/#OS

Ну так по-вашему эксаваторы и подъемные краны — не нужны и
незначительны. Их доля ведь оооочень маленькая среди остальных машин.

> http://www.hotlog.ru/hlpub.shtml?view=22


Домен .ru, однако.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0 beta
Sapienti sat!
Re[19]: Лекция Вирта в политехническом - впечатления
От: AVC Россия  
Дата: 17.10.05 08:20
Оценка:
Здравствуйте, Pzz, Вы писали:

>> Мне кажется, что Вирт тоже думал о компиляторе больше, чем о человеке,

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

Pzz>Если бы он это делал, в языке не было бы такой глупости, как то, что

Pzz>вызов функции без параметров записывается без скобок после имени функции.

Pzz>T.e. запись


Pzz> x ::= foo;


Pzz>может быть как присваиванием иксу значения переменной foo, так и вызовом

Pzz>функции без параметров, что уже мило.

В Обероне, как и в Модуле-2, использование скобок при вызове функции обязательно.

Pzz>Далее, там, где требуется указатель на функцию (например, функция может

Pzz>быть передана как параметр другой функции), никакого специального значка
Pzz>перед именем функции не требуется.

Pzz>Теперь вопрос, как в таком синтаксисе описать функцию без параметров,

Pzz>возвращающую указатель на функцию? Никак, потому что при ее
Pzz>использовании невозможно будет понять по контексту, имеется ли в виду
Pzz>она сама, или возвращаемое ей значение.

Pzz>Вероятно поэтому в Паскале функции не могут возвращать указатели на

Pzz>функции

Здесь, скорее, наоборот.
В Паскале не было процедурных переменных, поэтому и скобки при вызове функции не требовались.

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

Хоар
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.