OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 17 Октябрь, 2019 18:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Пятница, 29 Ноябрь, 2013 10:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 909
Откуда: Киев
Илья Ермаков писал(а):
Яркий пример небольшого базиса операций - права доступа UNIX.
Гораздо более простой, базовый набор, нежели в той же Windows, из которого можно собрать то, что требуется.

Не знаю, что наворотили в Windows, но тот простой, что Вы имеете ввиду, является ещё и примером недостаточности некоторой простоты для того чтобы собрать всё, что потребуется. Поэтому, к примеру в GNU/Linux есть ещё SELinux и AppArmor. Является ли это в сумме более простым по сравнению с Windows?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Ноябрь, 2013 13:13 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Вот она, дилемма Оберона :) Либо мы сокращаем ошибки на входе, контролируя разнообразие. Либо же отпускаем вожжи на входе и получаем бесконечное разнообразие на выходе.
А чтобы справиться с бесконечным разнообразием, нужна бесконечная энергия. Где ж её взять?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 18:27 

Зарегистрирован: Пятница, 26 Август, 2011 23:42
Сообщения: 339
Откуда: Россия, Самара
Иван Кузьмицкий писал(а):
Осталось рассказать о вашем открытии самому Вирту А если серьёзно и внимательно посмотреть на найденное, то внезапно выяснится, что процедурная абстракция сортировки делается ровно один раз, а потом вызывается ровно столько раз, сколько нужно - и никакого дублирования кода нет.


Не могли бы вы указать на код, абстракции я не нашёл. Как минимум каждой сортировки реализовано, по 2 раза. Для списка и массива.

Иван Кузьмицкий писал(а):
Я о чём и говорю - программист, вооружённый шаблонами, мыслит шаблонно, пытаясь натянуть реальную обстановку на своё знание шаблона. Возможно, ещё и по этой причине, Вирт не стал перегружать Оберон сугубо практическими вещами, предполагая лишь их библиотечное использование. Не знаю.


Чем шаблоны не библиотека? Статически линкуемая библиотека, можно так сказать. Вот оно расширение через библиотеки.

Вот смотрите, берём язык с шаблонами и без. Почему в обероне преобладает односвязный список? Правильно, просто проще написать. Идём дальше.

Нужен чуть сложнее список, к примеру с добавлением в конец. Что для этого нужно. Как минимум создать переменную, которая будет указывать на последний элемент. Глобальная переменная вроде как не хорошо. Значит, нужно создать структуру список, в которой будут поля, первый, последний и следующий, а возможно ещё и предыдущий и указатель на данные.

Теперь просто добавить элемент не получиться. Нужно создавать 2 записи, для списка. плюс ко всему для каждого типа нужно повторить действия. Чем здесь помогает минимализм оберона не понятно. Я уже не говорю о функциях для списка, таких как добавить в конкретный узел и т.д Одна рутина.

Та же очередь. Можно создать через список или массив. Или список массивов. В языке с шаблонами можно написать все 3 реализации, с одним интерфейсом и в нужном случае использовать ту реализацию, которая будет больше подходит под задачу. Шаблоны помогут избежать рутины.

Теперь вектор, реализации могут быть тоже разные, это простая реалокация, при удалении из вектора, создавать список свободных индексов, который сможет снизить перевыделение памяти. На шаблонах можно, написать нужные реализации и использовать их.

И полно других, разных структур данных которые не так просты в реализации. И мне непонятно, как кп или оберон поможет мне не дублировать код. Как избежать выше изложенной рутины при программировании кп?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 18:31 

Зарегистрирован: Пятница, 26 Август, 2011 23:42
Сообщения: 339
Откуда: Россия, Самара
Иван Кузьмицкий писал(а):
Вот она, дилемма Оберона :) Либо мы сокращаем ошибки на входе, контролируя разнообразие. Либо же отпускаем вожжи на входе и получаем бесконечное разнообразие на выходе.
А чтобы справиться с бесконечным разнообразием, нужна бесконечная энергия. Где ж её взять?


Хм... Так это прям о шаблонах. :) Отпускаем возжи, и компилятор сам генерирует код в зависимости от типа, на выходе получаем количественное разнообразие, которое в любом случае нужно проделать в языке без шаблонов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 18:36 

Зарегистрирован: Пятница, 26 Август, 2011 23:42
Сообщения: 339
Откуда: Россия, Самара
Иван Кузьмицкий писал(а):
С одной стороны, линия Оберона движется в сторону уменьшения входных ошибок, а с другой стороны, майнстримовые языки движутся в сторону увеличения возможностей (при этом, далеко не факт, что усложнение языка даёт такое же увеличение возможностей, и не факт, что упрощение Оберона на столько же уменьшает возможности).


Если сравнивать по возможности. Оберон это кирпичи и мастерок. Более нафичёванные языки, это панели из которых строят дома. Пока на обероне ваяют на кирпичах, на других языках уже собирают 2 этаж.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 18:38 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9147
Откуда: Россия, Орёл
Вообще, практика показывает следующее:

- для задач "бизнес-типа" (БД, GUI и т.п.) структуры будут из динамических объектов. И вполне достаточно набора контейнеров для ANYPTR. Какого набора контейнеров достаточно такому прикладнику - практика же, опять же, показывает, что JSON/JavaScript-подобного (map + vector).
Никаких шаблонов для набора ANYPTR-контейнеров не нужно.

- для вычислительных и системных задач настолько сильна специфика задачи, что лучше "велосипедный список" на конкретный случай.
Кроме того, сегодня для уймы задач становится достаточно разных линейно-списковых структур (где раньше нужны были, допустим, деревья).
В лекциях эксперта по СУБД из Яндекса Ильи Тетерина справедливо замечено, что сегодня что-то сложнее связного списка и skip-list-а вообще часто нет смысла использовать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 18:43 

Зарегистрирован: Пятница, 26 Август, 2011 23:42
Сообщения: 339
Откуда: Россия, Самара
Илья Ермаков писал(а):
Никаких шаблонов для набора ANYPTR-контейнеров не нужно.


Нужна железобетонная типизация.

Илья Ермаков писал(а):
В лекциях эксперта по СУБД из Яндекса Ильи Тетерина справедливо замечено, что сегодня что-то сложнее связного списка и skip-list-а вообще часто нет смысла использовать.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 19:10 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Jordan писал(а):
Иван Кузьмицкий писал(а):
Вот она, дилемма Оберона :) Либо мы сокращаем ошибки на входе, контролируя разнообразие. Либо же отпускаем вожжи на входе и получаем бесконечное разнообразие на выходе.
А чтобы справиться с бесконечным разнообразием, нужна бесконечная энергия. Где ж её взять?
Хм... Так это прям о шаблонах. :) Отпускаем возжи, и компилятор сам генерирует код в зависимости от типа, на выходе получаем количественное разнообразие, которое в любом случае нужно проделать в языке без шаблонов.
Вы так желаете поскорее получить на выходе побольше всего, что мне остаётся только пожелать успехов :)

Jordan писал(а):
Иван Кузьмицкий писал(а):
Осталось рассказать о вашем открытии самому Вирту А если серьёзно и внимательно посмотреть на найденное, то внезапно выяснится, что процедурная абстракция сортировки делается ровно один раз, а потом вызывается ровно столько раз, сколько нужно - и никакого дублирования кода нет.
Не могли бы вы указать на код, абстракции я не нашёл. Как минимум каждой сортировки реализовано, по 2 раза. Для списка и массива.
Рекомендую толковую книжку, в ней всё разжёвано про процедурные абстракции.
Насчёт конкретного кода, там сортировка делается по месту, с учётом текущей обстановки. Все процедуры сортировки, написанные по месту, разные. Но дублирования кода нет, потому что такая процедура пишется один раз. А вызывается, к слову сказать, много раз.

Jordan писал(а):
Иван Кузьмицкий писал(а):
Я о чём и говорю - программист, вооружённый шаблонами, мыслит шаблонно, пытаясь натянуть реальную обстановку на своё знание шаблона. Возможно, ещё и по этой причине, Вирт не стал перегружать Оберон сугубо практическими вещами, предполагая лишь их библиотечное использование. Не знаю.
Чем шаблоны не библиотека? Статически линкуемая библиотека, можно так сказать. Вот оно расширение через библиотеки.
Чего? Какие такие библиотеки? Давайте не уходить в лес слов и соблюдать принцип Калашникова в рассуждениях. Ведь сложность надо регистрировать сразу же.
Шаблоны суть инструкции для генератора исходного кода. Забудьте про библиотеки, это неправильное слово в данном случае. С помощью шаблонов вы абстрагируете спецификации. То есть, не работаете с исходным текстом напрямую. Это значит, что вы получаете неявные (вы же не видите, что за исходный код генерируется шаблоном) исходники на выходе, что является потенциальным источником трудноуловимых ошибок. И, да, я знаю про буст.

Jordan писал(а):
И полно других, разных структур данных которые не так просты в реализации. И мне непонятно, как кп или оберон поможет мне не дублировать код. Как избежать выше изложенной рутины при программировании кп?
А вы попробуйте что-нибудь полезное изобразить на Обероне или КП. Ну, реально полезное. Не надо рассуждать впустую, сделайте что-то РЕАЛЬНОЕ, что работает и приносит пользу. И вот когда это ваше изделие заработает, вы придёте на форум и скажете, например, так: коллеги, я потратил кучу энергии, а с дженериками мог бы в десять раз меньше. Или так: коллеги, дженерики важны, но не настолько, чтоб это можно было всерьёз обсуждать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Декабрь, 2013 19:16 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Jordan писал(а):
Иван Кузьмицкий писал(а):
С одной стороны, линия Оберона движется в сторону уменьшения входных ошибок, а с другой стороны, майнстримовые языки движутся в сторону увеличения возможностей (при этом, далеко не факт, что усложнение языка даёт такое же увеличение возможностей, и не факт, что упрощение Оберона на столько же уменьшает возможности).
Если сравнивать по возможности. Оберон это кирпичи и мастерок. Более нафичёванные языки, это панели из которых строят дома. Пока на обероне ваяют на кирпичах, на других языках уже собирают 2 этаж.
Про опасность ложных аналогий уже говорили или нет? :) Если уж выражаться эзоповым языком, "нафичёванные языки" это не только прямоугольные кирпичи, но и треугольной формы, трапециевидной, конусы, шары, и пр. Кроме этого, добавлены возможности автоматически делать из кирпичей букеты цветов, винтовые лестницы и скульптуры животных. И это всё надо знать типичному ремесленнику, от которого бизнес требует побыстрее навертеть разных фигур :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 04 Декабрь, 2014 16:26 

Зарегистрирован: Пятница, 26 Август, 2011 23:42
Сообщения: 339
Откуда: Россия, Самара
С освоением всё более сложных структур данных и алгоритмов. Прихожу ко мнении, что STL не панацея.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB