Re[9]: О каких еще ошибках?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 11.11.04 13:33
Оценка:
Здравствуйте, Клапауций, Вы писали:

К>Привёл пример и на тебе. На eof нужно было проверять после чтения, иначе появляется дополнительный байт в конце, что и можно наблюдать.


Прости, ошибся. Действительно, на 1 байт больше читается.
Re[10]: Есть ли плюсы у Оберона?
От: AVC Россия  
Дата: 11.11.04 13:33
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>P. S.

СГ>На Component Pascal можно даже без ASSERT():
СГ>
СГ>PROCEDURE guardinsert(p: ANYPTR);
СГ>BEGIN
СГ>   WITH p: CorrectPtr DO insert(p) END
СГ>END guardinsert;
СГ>

СГ>В том случае если динамический тип p не CorrectPtr, выполнение будет автоматически остановлено точно также как и при использовании ASSERT().

То же самое верно и для оксфордского Оберона-2.
Такое поведение оператора WITH определено в описании языка Оберон-2.
В принципе, наверное, того, что мы "с ходу" предложили, достаточно для создания надежного кода.
Но я думаю, что проблему статического контроля типов в полиморфных контейнерах в Обероне можно решить и получше. Например, с помощью расширения типа контейнера.
Но здесь "думать надо" (обероновской практики у меня нет, я пишу на Си и Си++), а я сегодня "весь в делах".
Так что решение все-таки неокончательное.

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

Хоар
Re[17]: Есть ли плюсы у Оберона?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Не надо. Из споров тут такие интересные подветки рождаются, что любо-дорого читать. Причем зачастую с Оберонами никак не связанные.


Т.е. Оберон позволяет узнавать новое об остальной индустрии.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Есть ли плюсы у Оберона?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>C# тоже может писать unmanaged код, поэтому это не концептуальная проблема.


Анменеджед нельзя. Можно ансэйв. А это две большие разницы, как говорят в Одессе.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Есть ли плюсы у Оберона?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Сейчас ты утверждаешь что насколько ты понял в Обероне есть JIT компилятор.


Все порой ошибаются. Все же оберон я смотрел в 97. С тех времен много воды утекло.

СГ>Я даже не могу сказать что все что ты знаешь об Обероне равно НУЛЮ. Нет не нулю, а это вообще либо отрицательное число, либо мнимая единица.


А вот это гнусная демагогия. Уж я точно больше понимаю в Обероне, чем ты в том же Шарпе.

Ты отставл от индустрии лет на 10. И постоянно начинашь обсуждать чужую компетенцию. Просто смешно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: О каких еще ошибках?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка: 1 (1) +3
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Естественно, файлы открывал, а что?


То что их закрывать периодически надо. И если нет нормальной обриботки исключений и блоков защиты, то это превращается в сущий ад.

СГ>Естественно, на 0 не делил, я так делал: IF f > EPSILON THEN a := b/f; ...


Ну, и перед каждым делением по IF-у? И это по-твоему удобная, надежная и безопасная среда программирования?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Есть ли плюсы у Оберона?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Занятно, я пишу уже 15 лет на С++, однако автором себя не считаю!

GZ>Что-то случилось в датском королевстве!!!

Случилось. Первое упоминание о С++ это 85-год и компилятор CFront который был препроцессор С. В росси он вообще доступен не был. К тому же до 90-ых С++ на современный был похож очень отдоленно. Небыло шалонов и т.п.

Короче, без знакомства со Сртауструпом писать 20 лет на С++ невозможно в принципе. 15 цифра более реальная, но тоже сомнительная. Я вот с С++ знаком лет 11-12. Причем в те времена надыбал компилятор С++ с большим трудом. Если не ошибаюсь — это был Зортеч С++.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: О каких еще ошибках?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 11.11.04 13:54
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Клапауций, Вы писали:


К>>Привёл пример и на тебе. На eof нужно было проверять после чтения, иначе появляется дополнительный байт в конце, что и можно наблюдать.


СГ>Прости, ошибся. Действительно, на 1 байт больше читается.


Переделал:
PROCEDURE Test* ();
VAR  L: Files.Locator; f: Files.File; r: Files.Reader; b: BYTE;
BEGIN
  L := Files.dir.This("C:\");
  IF L # NIL THEN 
    f := Files.dir.Old(L, "New Text Document.txt", FALSE);
    IF f # NIL THEN
      r := f.NewReader(NIL);
      IF r # NIL THEN
        LOOP 
          r.ReadByte(b);
          IF r.eof THEN EXIT END;
          StdLog.Char(CHR(b)) 
        END;
      END;
      f.Close();
    END
  END
END Test;
Re[7]: Есть ли плюсы у Оберона?
От: AVC Россия  
Дата: 11.11.04 14:25
Оценка: -1
Здравствуйте, alexeiz, Вы писали:

A>Нет. Линкер умеет объединять любой сходный код. Например vector<int> и vector<long> и vector<void*> и vector<vector<int>*> имеют один и тот же код (на 32 битной платформе). Поэтому линкер оставит только одну копию кода для всех этих template instantiations. Более того, допустим у тебя есть две функции, которые на C++ выглядят абсолютно по-разному, но после обработки компилятором и оптимизатором из них получается один и тот-же ассемблерный код. Линкер оставит только одну копию этого кода.


Я прямо весь в сомнениях. Пишу простой код (прошу прощения за стиль — нет времени),
компилирую с помощью MSVC для двух векторов целых чисел в первом случае, и для вектора целых и char*. Пока я с векторами ничего не делаю, размер и правда одинаковый. Как только добавляю хоть какую-то функциональность (sort()), сразу разница в 4K.

#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> vi(100);
    sort(vi.begin(), vi.end());
#if 1
    vector<int> vi2(100);
    sort(vi2.begin(), vi2.end());
#else
    vector<char *> vs(100);
    sort(vs.begin(), vs.end());
#endif
    return 0;
}



A>Ты еще многого не знаешь.


Ну, ничего, есть же RSDN.
Здесь каждый второй — Мюнхгаузен.

AVC>>P.S. А что такое плефора?

A>Англицизм: plethora. Я был уверен, что в русском такое слово тоже есть.

Опять же вспоминается к/ф "В бой идут одни старики".

- Рахмат!
— Что?
— Спасибо по-узбекски.
— А... Здоровеньки булы!
— Что?
— Пожалуйста по-украински.

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

Хоар
Re[9]: Есть ли плюсы у Оберона?
От: GlebZ Россия  
Дата: 11.11.04 14:35
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Короче, без знакомства со Сртауструпом писать 20 лет на С++ невозможно в принципе. 15 цифра более реальная, но тоже сомнительная. Я вот с С++ знаком лет 11-12. Причем в те времена надыбал компилятор С++ с большим трудом. Если не ошибаюсь — это был Зортеч С++.

Занятно, труды должны быть очень большие. На каждом углу продавались дискеты с Borland C++. C которого собственно начинал где-то 92-93 года. MFC датируется серединой 92 года. Насчет 15 извинился.

С уважением, Gleb.
Re[8]: Есть ли плюсы у Оберона?
От: Кодт Россия  
Дата: 11.11.04 14:44
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Здравствуйте, alexeiz, Вы писали:


A>>Нет. Линкер умеет объединять любой сходный код. Например vector<int> и vector<long> и vector<void*> и vector<vector<int>*> имеют один и тот же код (на 32 битной платформе). Поэтому линкер оставит только одну копию кода для всех этих template instantiations. Более того, допустим у тебя есть две функции, которые на C++ выглядят абсолютно по-разному, но после обработки компилятором и оптимизатором из них получается один и тот-же ассемблерный код. Линкер оставит только одну копию этого кода.


Ну, это чересчур сильное утверждение. Боюсь, что не так всё сказочно. Оставлять единственную копию предметов, имеющих _declspec(any), — это да. А вот чтобы до побайтного сравнения кода...

AVC>Я прямо весь в сомнениях. Пишу простой код (прошу прощения за стиль — нет времени),

AVC>компилирую с помощью MSVC для двух векторов целых чисел в первом случае, и для вектора целых и char*. Пока я с векторами ничего не делаю, размер и правда одинаковый. Как только добавляю хоть какую-то функциональность (sort()), сразу разница в 4K.

Потому что std::sort тащит за собой
* итераторы — std::vector<T>::iterator
* компаратор — std::less<T>
* собственно алгоритм

Кстати, сейчас повторил твой эксперимент. Эти 4К — какая-то отладочная информация. Если включить оптимизацию -Ox, то размер файла не меняется.
Перекуём баги на фичи!
Re[9]: О каких еще ошибках?
От: Трурль  
Дата: 11.11.04 14:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А теперь сравни с шарпом:

AVK>
AVK>void Test
AVK>{
AVK>    try
AVK>    {
AVK>        using (StreamReader sr = new StreamReader("C:/New Text Document.txt"))
AVK>        {
AVK>            int c;
AVK>            while ((c = sr.Read()) != -1)
AVK>                Console.WriteLine((char)c)
AVK>        }
AVK>    }
AVK>    catch
AVK>    {
AVK>        // do default work
AVK>    }
AVK>}
AVK>


AVK>Короче и понятнее, не правда ли? При том при любых проблемах с диском файл будет закрыт.


type "C:/New Text Document.txt"

А так еще короче и понятнее, не правда ли?
Re[10]: О каких еще ошибках?
От: Курилка Россия http://kirya.narod.ru/
Дата: 11.11.04 14:50
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>
Т>type "C:/New Text Document.txt"
Т>

Т>А так еще короче и понятнее, не правда ли?

Ага, а теперь приведи исх. код программы type — посмотрим, что проще и понятнее
Re[10]: Есть ли плюсы у Оберона?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 14:52
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, VladD2, Вы писали:


VD>>Короче, без знакомства со Сртауструпом писать 20 лет на С++ невозможно в принципе. 15 цифра более реальная, но тоже сомнительная. Я вот с С++ знаком лет 11-12. Причем в те времена надыбал компилятор С++ с большим трудом. Если не ошибаюсь — это был Зортеч С++.

GZ>Занятно, труды должны быть очень большие. На каждом углу продавались дискеты с Borland C++. C которого собственно начинал где-то 92-93 года. MFC датируется серединой 92 года. Насчет 15 извинился.

Ты явно все перепутал. В 92 даже Visual C++ не было. А МФЦ вошла в его состав. 93-ий — это год появления виндовс 3.1.

Borland C++ вышел, врое как, намного позже. В те времена был Турбо С/С++. И найти компилятор С++ в 90 было ой как не просто. Лично я искал с месяц. Причем все тогдашние компиляторы были долеки от совершенства. А 90-ый — это 14 лет назад. А не как не 20.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: О каких еще ошибках?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.11.04 15:06
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>
Т>type "C:/New Text Document.txt"
Т>

Т>А так еще короче и понятнее, не правда ли?

Это ты к чему? Постебаться охота или есть что сказать по делу?
... << RSDN@Home 1.1.4 beta 3 rev. 230>>
AVK Blog
Re[11]: Есть ли плюсы у Оберона?
От: GlebZ Россия  
Дата: 11.11.04 15:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты явно все перепутал. В 92 даже Visual C++ не было. А МФЦ вошла в его состав. 93-ий — это год появления виндовс 3.1.

здесь
Может ты спутал, кажется в 93 году вышла Windows 3.11, наиболее глючная версия из когда либо выпущенных версий Windows 3.0. Но Windows все таки начался с Windows 3.0 в 1990 году. Кстати, была еще Windows 2.0 которая при мне упешно юзалась на всяких XT. Мужики как-то запускали на пентюхе, работает, правда со скоростью как на XT.

VD>Borland C++ вышел, врое как, намного позже. В те времена был Турбо С/С++. И найти компилятор С++ в 90 было ой как не просто. Лично я искал с месяц. Причем все тогдашние компиляторы были долеки от совершенства. А 90-ый — это 14 лет назад. А не как не 20.

Насчет совершенства, то тогда еще много чего не было, типа RTTI и шаблонов. Так их и в спецификации тогда не было.
Borland C++ 2.0 у меня лежал купленный практически с момента выхода(а это произошло еще до того как я пришел на ту работу в 1992). Затем был куплен Visual C++ 1.0 и я попрощался с OWL. Был еще Watcom, но когда он появился уже не помню (где-то 93 кажется).

С уважением, Gleb.
Re[8]: Есть ли плюсы у Оберона?
От: Sergey J. A. Беларусь  
Дата: 11.11.04 15:45
Оценка:
Здравствуйте, AVC, Вы писали:

A>>Нет. Линкер умеет объединять любой сходный код. Например vector<int> и vector<long> и vector<void*> и vector<vector<int>*> имеют один и тот же код (на 32 битной платформе). Поэтому линкер оставит только одну копию кода для всех этих template instantiations. Более того, допустим у тебя есть две функции, которые на C++ выглядят абсолютно по-разному, но после обработки компилятором и оптимизатором из них получается один и тот-же ассемблерный код. Линкер оставит только одну копию этого кода.


AVC>Я прямо весь в сомнениях. Пишу простой код (прошу прощения за стиль — нет времени),

AVC>компилирую с помощью MSVC для двух векторов целых чисел в первом случае, и для вектора целых и char*. Пока я с векторами ничего не делаю, размер и правда одинаковый. Как только добавляю хоть какую-то функциональность (sort()), сразу разница в 4K.

AVC>
...
AVC>


Увы кажется не объединяет. Попробовал на VC6.0 и 7.0 — Если запустить релиз в отладчике то видно, что вызываются разные ф-ии.
Попробовал разные опции оптимизатора....
Я — свихнувшееся сознание Джо.
Re[9]: Есть ли плюсы у Оберона?
От: Павел Кузнецов  
Дата: 11.11.04 16:12
Оценка:
Sergey J. A.,

> Увы кажется не объединяет. Попробовал на VC6.0 и 7.0


Попробуй VC 7.1 + whole program optimization.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[10]: О каких еще ошибках?
От: WolfHound  
Дата: 11.11.04 16:25
Оценка: +4
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Прости, ошибся. Действительно, на 1 байт больше читается.

О чем тебе уже все много раз говорили... Людям свойственно ошибаться... И как следствие нужен отладчик и тд и тп...
... << RSDN@Home 1.1.4 rev. 185 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Есть ли плюсы у Оберона?
От: Sergey J. A. Беларусь  
Дата: 11.11.04 16:44
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Увы кажется не объединяет. Попробовал на VC6.0 и 7.0


ПК>Попробуй VC 7.1 + whole program optimization.


Тэкс. Похоже для sort он не делает слияние, но методы самого вектора он мержит:
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
 vector<int> vi(100);
 vector<void *> vs(100);

 __asm {int 3}

 vi.size();                          // Одна ф-ия
 vs.size();

 vi.push_back(0x666);                // Одна ф-ия
 vs.push_back((void *)0x666);

 sort(vi.begin(), vi.end());        // Разные
 sort(vs.begin(), vs.end());

 return 0;
}


Возможно, если ещё что-то подкрутить то сможет смержить и sort, но времени нету на ексерименты.
Я — свихнувшееся сознание Джо.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.