Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  09:48[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 926—917 | 916—907 | 906—897 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 535


№ 916   08-10-2006 14:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 915« (AVC)
___________________________
Спасибо за совет!
Про контейнеры я знал, однако в команде авто-птр с векторами используют, мотивируя тем, что во всех "нормальных" реализациях STL вектор не выполняет копирование своих элементов через их =, а выполняет низкоуровневое копирование памяти...


№ 915   08-10-2006 08:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 914« (Илья Ермаков)
___________________________

Илья, сразу одна реплика, по горячим следам.


auto_ptr - крайне паршивая замена сборки мусора - в частности, с некоторыми контейнерами порождает проблемы.


В книжке Скотта Мейерса "Эффективное использование STL" восьмой совет гласит:
"Никогда не создавайте контейнеры, содержащие auto_ptr"
Такие контейнеры еще называются COAP (Containers Of Auto_Ptrs) и всегда ведут к проблемам.
Некоторые компиляторы их просто запрещают, но некоторые нет.
Если уж "занесла Вас нелегкая" :) использовать современный Си++ (уже не "старый добрый" Си с классами), то весьма рекомендую Вам эту книжку Мейерса.
Когда я ее читал, у меня было впечатление (возможно, слишком уж пессимистичное), что программирование с помощью STL - это какое-то хождение по минному полю.
 AVC


№ 914   08-10-2006 07:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 913« (AVC)
___________________________

Ответ на »сообщение 912« (AVC)
Это т.н. "принцип Калашникова": избыточная сложность = уязвимость.
А что думают остальные?


info21 правильно сказал: "Пропались они пропадом, эти...".
Сейчас приходится, параллельно с работами по ББ, включаться в один крупный, уже долгоидущий проект на С++ (компьютерная лингвистика). Честное слово, более через...сто реализовать самые базовые вещи, чем это сделано в С++, просто невозможно... В частности, namespacы претендуют на эмуляцию модульности, но даже их  примитивной "модульностью" сишники почему-то предпочитают редко пользоваться...
Сокрытие реализации сведено только к инкапсуляции в классах, о сокрытии конкретных потомков и открытии исключительно базовых, абстрактных интерфейсов слыхом не слыхивали, все валится пачкой в один .h - и прототипы, и реализация, "чтобы не плодить файлы"...
auto_ptr - крайне паршивая замена сборки мусора - в частности, с некоторыми контейнерами порождает проблемы.
Реализация строк std::string в версии Visual Studio 8 была заменена, а ребята "захацкали" очень многие вещи в опоре на особенности 6-й версии, теперь переписывают код... Хотя реализация объектно-ориентированная, интерфейсы между "модулями"-DLL-ями процедурные, на хендлах, смесь двухбайтовых и однобайтовых строк с постоянными перекодировками, тьфу...
Дремучесть, каменный век, и непрошибаемая уверенность в том, что "лучше С++ нет ничего, потому что все на нем работают, и Микрософт столько лет двигала именно его". Но при этом половина действительно высокоуровневых возможностей языка все равно не используется.


№ 913   07-10-2006 17:54 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 912« (AVC)
___________________________


Мол, хороший язык программирования исключает необходимость во многих паттернах.


Эта мысль имеет некоторое основание.
Рассмотрим пример.
В Оберонах нет множественного наследования.
Если вдруг оно "позарез" понадобится, надо будет как-то выкручиваться.
Одним из решений является паттерн "Близнецы", предложенный Мессенбеком:
http://www.ssw.uni-linz.ac.at/Research/Papers/Moe99.html
Если бы в Обероне было множественное наследование, то этот паттерн не потребовался бы.
С другой стороны, какова цена включения в язык конструкций "не первой необходимости"?
Усложняется язык, его труднее освоить; усложняется компилятор, его труднее написать; и т.д.

Одна из возможных точек зрения неоднократно и совершенно ясно высказывалась здесь info21.
Это т.н. "принцип Калашникова": избыточная сложность = уязвимость.
А что думают остальные?
 AVC


№ 912   07-10-2006 17:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 911« (info21)
___________________________


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


Любопытно, что одно из последних обсуждений на RSDN было затеяно, похоже, с прямо противоположных позиций и называется "Паттерны суть слабости языков программирования".
Мысль в том, что паттерны приходится реализовывать повторно, а это плохо.
Мол, хороший язык программирования исключает необходимость во многих паттернах.
Обсуждение вызвано к жизни любопытной статьей
http://newbabe.pobox.com/~mjd/blog/prog/design-patterns.html
 AVC


№ 911   07-10-2006 12:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 908« (AVC)
___________________________

Да нет, система обработки данных как раз ничего. Просто я представил себе "функции высших порядков" в том конктексте...

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


№ 910   07-10-2006 12:11 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 909« (AVC)

аналогичного правилу Си++ о порядке вызова конструкторов статических объектов в порядке их объявления?

Если нет модулей, то о каком порядке вообще можно говорить? Допустим, классы описаны в разных файлах Packets.cs и Tables.cs. Который из этих файлов первый? А ключевое слово partial вообще позволяет описывать разные части одного и того же класса в разных файлах...


№ 909   07-10-2006 09:22 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 901« (Сергей Губанов)
___________________________

Сергей, спасибо за ответ.
Действительно, кажется, что-то они не вполне продумали.
Особенно с пространствами имен и использованием неквалифицированных идентификаторов.
Наверное, перед создателями дотнета лежал бо-о-ольшой список требований, а также было очень много источников для заимствования идей.
Прямо как при создании Ады. :)
Как тут сохранить "консистентность" проекта? :)
К тому же автор C#, Хейлсберг, никогда ее особенно и не ценил, если судить еще по ТурбоПаскалю.

По поводу первого пункта.
Интересно, а разве в C# нет соглашения, аналогичного правилу Си++ о порядке вызова конструкторов статических объектов в порядке их объявления?
Как бы то ни было, это дает некоторую пищу для размышлений о конструкторах...
 AVC


№ 908   07-10-2006 08:55 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 900« (info21)
___________________________


Сейчас вот только вернулся с очередной сессии обсуждения системы обработки данных со своими экспериментаторами.
Чтоб я сдох: провались пропадом все эти, блин, функции высших порядков...

Ни хрена они не дают, только головная боль.
В Обероне есть все конструктивные средства, чтобы все, что надо, смоделировать.
Сложности встречаются редко, их всегда можно сделать, зато все остальное с минимумом затрат.

С Трурлем трудно не согласиться насчет параметрического...
Но и тут keep it simple, stupid: редко это встречается, можно скопировать код и поменять там INTEGER на CHAR...

..... все эти замыкания -- говорю как математический физик.


Похоже, система обработки данных не вдохновила Вас... :)
Попытаюсь выжать главную мысль:

- подавляющее часть кода может быть написана на Обероне самым простым и прямолинейным способом;
- там, где этого недостаточно, можно прибегнуть к более изощренным способам (например, использовать приемы/паттерны ООП);
- следовательно, усложнять язык ради нескольких процентов "особых" ситуаций нет никакой необходимости.

Верно?
Кстати, о параметрическом полиморфизме: раз уж Copy&Paste пока наша судьба, то это действо вполне можно автоматизировать и иными способами, помимо шаблонов/дженериков.
Завести набор часто используемых (полиморфных по характеру) структур и организовывать их в ставку в исходник через меню или по нажатию коммандера.
При этом может открываться диалоговое окошко, где программиста попросят указать требуемый тип-параметр, и вставленный код уже не надо будет править ручками.
В ББ, например, "за полиморфизм" вполне могла бы отвечать какая-нибудь отдельная подсистема.
 AVC


№ 907   07-10-2006 08:29 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 906« (AVC)
___________________________


Чтобы не быть голословным, сошлюсь хотя бы на один источник:
http://www.rsdn.ru/article/philosophy/SyntacticSugar.xml


Как я уже говорил, понять ребят с RSDN иногда трудно.
Например, приведенный в статье код (для иллюстрации мысли {Quote]Оператор continue заменяется рекурсией)


    for (int i = 0; i < 100; i++)
    {
      if (Predicate(i))
        continue;

      result++;
    }


проще было бы просто изменить на


    for (int i = 0; i < 100; i++)
    {
      if (!Predicate(i))
        result++;
    }


чем прибегать к рекурсии для избаления от continue.
И т.д.
Короче, чего-то я не "догоняю".
А как вы думаете?
 AVC


<<<... | 926—917 | 916—907 | 906—897 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 535


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования