Здравствуйте, Cyberax, Вы писали:
C>Нет, но сам факт того, что МС притягивает к себе такие проблемы (типа C>японского премьера, которого компьютер наглухо закрыл в автомобиле) — C>весьма интересен.
Я тут недавно случайно наблюдал... Один орел приехал на иномарке, закрыл машину и ушел. Машина на сингнализации... отперается с блелка. Так вот прошло пол часа-час. Ему понадобилась машина. Он к ней... А черт — сказал он — а машина то не открывается. Компьютера думаю там нет в помине. Но сам факт забавен. Причем не ясно, то ли у брелка батарейка села, то ли что-то глючит. Если последнее, то 150 баксов за эвакуатор и в ремонт. В общем, кайф сплошной от электроники.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, serg_mo, Вы писали:
СГ>>Короче говоря, в языках Java и C# просто нету возможности создавать системно необходимые типы данных.
_>А что это за типы данных такие?
Например, есть такие native int — число равное машинному слову. В принципе может поднять эффективность на платформах где оно не вписывается в один из целочисленных типов.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Например, есть такие native int — число равное машинному слову. В принципе может поднять эффективность на платформах где оно не вписывается в один из целочисленных типов.
Ага, т. е. системные типы данных — это типы данных, которые имеют поддержку со стороны аппаратуры.
Сергей в своем посте привел примеры размещения переменных на стеке и в динамической области памяти. Честно говоря, я не совсем понимаю, почему явная возможность указания того, как распределять объект — на стеке или в динамической области — должно давать преимущество Оберону в embedded systems. В чем проигрыш, например, Java, которая позволяет размещать объекты _только_ в динамической области?
_>Сергей в своем посте привел примеры размещения переменных на стеке и в динамической области памяти. Честно говоря, я не совсем понимаю, почему явная возможность указания того, как распределять объект — на стеке или в динамической области — должно давать преимущество Оберону в embedded systems. В чем проигрыш, например, Java, которая позволяет размещать объекты _только_ в динамической области?
В скорости и нагрузке на GC. При использовании стека GC просто не подключается (правда нужно учитывать финнализаторы, но если их нет то и проблем нет)
Отсутствие вяве структу плохо влияет на скорость массивов в том числе хэш таблиц сортированных списков итд. http://gzip.rsdn.ru/Forum/?mid=592884
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, serg_mo, Вы писали:
S> В скорости и нагрузке на GC. При использовании стека GC просто не подключается (правда нужно учитывать финнализаторы, но если их нет то и проблем нет) S> Отсутствие вяве структу плохо влияет на скорость массивов в том числе хэш таблиц сортированных списков итд. S> http://gzip.rsdn.ru/Forum/?mid=592884
И все? Хм... Как-то несолидно. С тем же успехом можно сказать, что язык, компилируемый в байт-код, нельзя назвать системным, т. к. он проигрывает в скорости скомпилированным в машинный код программам.
ИМХО, должны быть какие-то более весомые аргументы.
Здравствуйте, serg_mo, Вы писали:
_>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, serg_mo, Вы писали:
S>> В скорости и нагрузке на GC. При использовании стека GC просто не подключается (правда нужно учитывать финнализаторы, но если их нет то и проблем нет) S>> Отсутствие вяве структу плохо влияет на скорость массивов в том числе хэш таблиц сортированных списков итд. S>> http://gzip.rsdn.ru/Forum/?mid=592884
_>И все? Хм... Как-то несолидно. С тем же успехом можно сказать, что язык, компилируемый в байт-код, нельзя назвать системным, т. к. он проигрывает в скорости скомпилированным в машинный код программам.
_>ИМХО, должны быть какие-то более весомые аргументы.
Не совсем. Сейчас у Явы уже давно свой JIT в Net он изначально существует. И основная причина нападок нативных программистов как раз касается скорости. Введение в Net валуе типов резко сократило разность по скорости. Кроме всего прочего при применении больших модифицирующихся массивов (списков ) вступает райт бариер который начинает существенно торморзить как в Net так и Java (в десятки раз сильно напрягая GC)
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Сантехник, Вы писали:
С>Здравствуйте, Трурль, Вы писали:
Т>>Трудно проидумать что-либо более уродливое, чем C#.
С>Объясни, если не трудно, что именно тебе в нем кажется уродливым.
навскидку:
1. приведение типов по колличеству написания скобочек проигрывает делфям в 1,5 раза
2. количество атрибутов private/protected/public стремиться к колличеству полей в классе
3. определен тип или переменная в классе сходу заметно?
mister-AK пишет:
> Т>>Трудно проидумать что-либо более уродливое, чем C#. > С>Объясни, если не трудно, что именно тебе в нем кажется уродливым. > навскидку: > 1. приведение типов по колличеству написания скобочек проигрывает > делфям в 1,5 раза
Фигня...
> 2. количество атрибутов private/protected/public стремиться к > колличеству полей в классе
Ага, "настоящие парни" делают все поля public...
> 3. определен тип или переменная в классе сходу заметно?
я писал: >> 1. приведение типов по колличеству написания скобочек проигрывает >> делфям в 1,5 раза
C>Фигня...
шарп-фанат?
>> 2. количество атрибутов private/protected/public стремиться к >> колличеству полей в классе
C>Ага, "настоящие парни" делают все поля public...
угу, смешно
>> 3. определен тип или переменная в классе сходу заметно?
C>Да.
mister-AK пишет:
> я писал: >>> 1. приведение типов по колличеству написания скобочек проигрывает >>> делфям в 1,5 раза > C>Фигня... > шарп-фанат?
С++-фанат, но вполне осознаю, что Java/C# — замечательные инструменты
для многих задач.
>>> 2. количество атрибутов private/protected/public стремиться к >>> колличеству полей в классе > C>Ага, "настоящие парни" делают все поля public... > угу, смешно
Какой вопрос — такой ответ.
>>> 3. определен тип или переменная в классе сходу заметно? > C>Да. > субъектив
Здравствуйте, Cyberax, Вы писали:
C>mister-AK пишет:
>> я писал: >>>> 1. приведение типов по колличеству написания скобочек проигрывает >>>> делфям в 1,5 раза >> C>Фигня... >> шарп-фанат?
C>С++-фанат, но вполне осознаю, что Java/C# — замечательные инструменты C>для многих задач.
угу, заметно, что фанат.. один фиг что плюсов, что шарпов, что дельфов... вполне осознанно к этому понятию не применимо
>>>> 2. количество атрибутов private/protected/public стремиться к >>>> колличеству полей в классе >> C>Ага, "настоящие парни" делают все поля public... >> угу, смешно
C>Какой вопрос — такой ответ.
вопрос задавал не я, попутал ты малёк
Здравствуйте, mister-AK, Вы писали:
MA>навскидку: MA>1. приведение типов по колличеству написания скобочек проигрывает делфям в 1,5 раза
Оччень интересно.
(int)i
супротив
int(i)
Может, у меня проблемы с устным счетом? MA>2. количество атрибутов private/protected/public стремиться к колличеству полей в классе
Это верно. Тут уж выбирать — либо размечать атрибуты зонами (как в Delphi), либо приписывать к каждому мемберу. Предпочли второе, т.к. с учетом присутствия тел методов отслеживать текущую область видимости становится крайне неудобно. MA>3. определен тип или переменная в классе сходу заметно?
Вот этого я не понял. Это про трудности отличения
private int _someIdentifier=0;
от
public class SomeIdentifier
{
}
? Странно. Ни разу с такой проблемой не сталкивался.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, mister-AK, Вы писали:
MA>>навскидку: MA>>1. приведение типов по колличеству написания скобочек проигрывает делфям в 1,5 раза S>Оччень интересно. S>
S>(int)i
S>
S>супротив S>
S>int(i)
S>
S>Может, у меня проблемы с устным счетом?
((MyClass) obj).xxx
супротив
MyClass(obj).xxx
Согласенн нужно тебе немного подучить арифметику
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Загадка. Слабо на Си или Си++ написать тип функции принимающей в качестве аргумента и возвращающей переменную ее собственного типа?
СГ>На Component Pascal это элементарно: СГ>
Решение для С++, правда, требующее класса-хелпера.
#include <iostream>
using namespace std;
struct action_wrapper
{
typedef action_wrapper (*func_type) (action_wrapper a, int x);
func_type func; // обёрнутое данное
action_wrapper(func_type f) : func(f) {} // приведение функции к обёрткеoperator func_type() const { return func; } // приведение обёртки к функции
};
typedef action_wrapper::func_type action; // вынесем, для удобства, в глобальное пространство имён
// это - глобальные функции
action_wrapper foo(action_wrapper a, int x);
action_wrapper bar(action_wrapper a, int x);
action_wrapper buz(action_wrapper a, int x);
// реализацию сделаем какую-нибудь кудрявую, чтобы не было шансов для инлайна
action_wrapper foo(action_wrapper a, int x)
{
cout << "foo(" << x << ")" << endl;
return x%2 ? a : bar;
}
action_wrapper bar(action_wrapper a, int x)
{
cout << "bar(" << x << ")" << endl;
return foo(buz,x);
}
action_wrapper buz(action_wrapper a, int x)
{
cout << "buz(" << x << ")" << endl;
return a(foo,x);
}
int main()
{
cout << "--- цепочка ---" << endl;
buz(foo,1)(bar,2)(buz,3);
cout << "--- автомат ---" << endl;
action f = foo, g = bar;
for(int i=1; i<10; ++i)
{
g = f(g,i);
f = g;
}
return 0;
}
Заметь, мне не пришлось рожать классы для каждой функции — ровно один класс на тип. И шаблонов здесь тоже нет. И трюков с реинтерпретацией.
А ещё заметь, что sizeof(action_wrapper) == sizeof(FUNCPTR), то есть никаких накладных расходов!
Здравствуйте, Сергей Губанов, Вы писали:
C>>Кстати, а как твоим функциям передавать КОНТЕКСТ вычислений? Или как обычно, через глобальные переменные?
СГ>Да.
СГ>Только глобальные переменные в модульных языках — это вовсе не тоже самое что глобальные переменные в не модульных языках. В модульных языках все переменные находятся внутри модулей, а модули загружаются в память и выгружаются из нее динамически во время работы программы — то есть никакие они (переменные) вовсе не "глобальные" в строгом смысле этого слова.
Значит, реентерабельность, а тем более параллелизм идут лесом.
СГ>Впрочем, если возникает необходимость в нескольких контекстах вычисления одновременно, то Вы правы, тут уже надо использовать ООП, и смысл в именно такой функции какую просил я значительно снижается — ведь можно использовать для того же самого другие средства уже свойственные только ООП.
Старое доброе процедурное программирование никто не отменял. Контекст передаётся как параметр. Если уж так хочется без ООП.
Здравствуйте, Сергей Губанов, Вы писали:
C>>Плевать, два потока, исполняющие один код я запустить уже не смогу. C>>А контекст нужно передавать ВСЕГДА (в 99.99% случаев), иногда только C>>можно для целей оптимизации использовать глобальные переменные.
СГ>А если система встроенная и там потоков нет?
Здравствуйте, mister-AK, Вы писали:
Т>>>Трудно проидумать что-либо более уродливое, чем C#.
С>>Объясни, если не трудно, что именно тебе в нем кажется уродливым.
MA>навскидку: MA>1. приведение типов по колличеству написания скобочек проигрывает делфям в 1,5 раза
MA>2. количество атрибутов private/protected/public стремиться к колличеству полей в классе
Ага, намного удобнее лазить по простыням C++ кода, выискивая, в каком visibility scope объявлено поле.
MA>3. определен тип или переменная в классе сходу заметно?
Никаких проблем. Особенно учитывая способности современных IDE подсвечивать и "интеллисенсить" всю необходимую
инфу на лету.
Резюмируя: Не кажется, что этих аргументов, тем более сугубо "имховых", недостаточно, чтобы называть язык "уродливым"?
СГ>>Да ладно Вам фантазировать, ничего вылавливать не надо, все пишется в 1 экземпляре в одном модуле.
Кё>Это опыт работы с Дельфи...
У плохого танцора всегда Дельфи виновата
В Дельфи есть стандартные контейнеры. Даже если бы и не было, можно было бы написать.
Точно также как и в обероне, я уверен, можно написать набор стандартных контейнеров о которых вы молвите.
Отсутствие generic-ов в Языке причиняет некоторые неудобства — это факт, но и без них можно достаточно легко обходится стандартными контейнерами.