OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 24 Сентябрь, 2018 00:48

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Разделение данных от логики
СообщениеДобавлено: Воскресенье, 10 Октябрь, 2010 21:07 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Знакомство с языком Оберон-2 и связанные с ним ограничения (отсутствие поддержки константных массивов и других составных структур) натолкнули меня на мысль, что строки и любые другие составные структуры данных должны быть представлены в виде файлов ресурсов и при нужде подгружать их в память из постоянных носителей данных (диска, флэш-памяти, магнитной ленты и прочих).

Как вы смотрите на использование строк в программах на Оберонах?
Какова причина того, что в Обероне-2 константой можно задавать последовательность символов (строки), а других составных типов - нет?
Должны ли строки существовать в программе или отдельно от неё? Если следовать принципу разделения данных от логики по примеру MVC, то получается, следует таки отделять. Но насколько это удобно и в каких случаях в этом нет необходимости?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 00:20 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 696
Откуда: Казань
Цитата:
Как вы смотрите на использование строк в программах на Оберонах?

Считаю, что константные строки в программе должны быть.

Цитата:
Какова причина того, что в Обероне-2 константой можно задавать последовательность символов (строки), а других составных типов - нет?

Думаю, что составные типы на то они и составные, что их можно составить из нескольких более простых конструкций. Если делать константые объявления в языке то это усложнит компилятор.
Вирт и так пишет, что:
"Although compiler technology is a reasonably mature subject, most engineers hesitate to build
their own compilers, particularly if manpower is scarce. The principal reason is the belief that
compilers are inherently complex and large programs."
А если еще константные объявления для составных типов ввести, то еще больше инженеров будет "hesitate to build their own compilers" :)

Цитата:
Должны ли строки существовать в программе или отдельно от неё?

Считаю, что в программе строки должны существовать.

Цитата:
Но насколько это удобно и в каких случаях в этом нет необходимости?

В случае простых программ нет необходимости выносить строки в ресурсы.
К тому же сопровождать программу вместе с ресурными файлами сложнее, чем просто исходный файл со строками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 09:18 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8989
Откуда: Россия, Орёл
Если у Вас в задаче обширные ресурсы, то, конечно, разумно использовать файлы ресурсов. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 09:22 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
Роман М. писал(а):
Как вы смотрите на использование строк в программах на Оберонах?
А как же имена файлов с ресурсами указывать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 09:46 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Александр Ильин писал(а):
Роман М. писал(а):
Как вы смотрите на использование строк в программах на Оберонах?
А как же имя файлов с ресурсами указывать?
Ну не напрочь отказываться, конечно. Только проектировать так, чтобы бОльшая часть строк находилась именно в ресурсах, а в программе - лишь для указания путей и других формальностей (чем меньше, тем лучше). Потом с ресурсами легче будет обходиться: производить правки, переводы и прочее. Например, в программе использовать лишь наводку по хэш-ключу и для каждого ключа можно определить константу. Допустим,
Код:
CONST
   Default_File_Name = 12345;
   Default_File_Path = 12346;
   Some_Message_For_User = 2001;
   Warning_Message = 2002;


Строки зачем нужны-то, вообще?
Строки используются:
  1. для передачи сообщения пользователю
  2. для работы с файловой системой
  3. для передачи параметров
  4. для остального...(?)

Жёстковато вышло. :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 09:55 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Rifat писал(а):
Думаю, что составные типы на то они и составные, что их можно составить из нескольких более простых конструкций. Если делать константые объявления в языке то это усложнит компилятор.
Строка - тоже составной тип и можно было ввести на наих ограничения также, как и на другие константы составных типов. А то выглядит, будто строки прошли по чьей-то протекции, а других - закосили.

Rifat писал(а):
В случае простых программ нет необходимости выносить строки в ресурсы.
К тому же сопровождать программу вместе с ресурными файлами сложнее, чем просто исходный файл со строками.
Согласен. Нужен компромисс. Для простых программ нет смысла усложнять.
В принципе отделение строк (данных) от кода можно считать дополнительным упрощением для поддержки кода. Проще константы поддерживать, чем строки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 10:20 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7850
Откуда: Троицк, Москва
Роман М. писал(а):
Строка - тоже составной тип и можно было ввести на наих ограничения также, как и на другие константы составных типов. А то выглядит, будто строки прошли по чьей-то протекции, а других - закосили.
Массивы и особенно литерные цепочки -- промежуточная штука между элементарными типами и полноценными составными (записями).
Как с любыми промежуточными штуками есть момент условности.

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

------------------
Со "строками" всё время путаница. От StdLog.String <> StdLog.Ln до документации по меню, где надо ставить четыре строки в одной строке. Поэтому проще всего оказалось во всех текстах перейти на "литерные цепочки".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 10:53 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Info21 писал(а):
Со "строками" всё время путаница. От StdLog.String <> StdLog.Ln до документации по меню, где надо ставить четыре строки в одной строке. Поэтому проще всего оказалось во всех текстах перейти на "литерные цепочки".

StdLog вкупе со строками - вообще отдельная песня. Всё пытаюсь найти золотую середину при использовании, но что-то не получается. Мешает лишняя возня при работе с параметрами. Хочется указать просто: Format("Some string: %s. Key = %d", str, key) и не париться со склеиванием строк и StdLog.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Понедельник, 11 Октябрь, 2010 12:16 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7850
Откуда: Троицк, Москва
Роман М. писал(а):
StdLog вкупе со строками - вообще отдельная песня. Всё пытаюсь найти золотую середину при использовании, но что-то не получается. Мешает лишняя возня при работе с параметрами. Хочется указать просто: Format("Some string: %s. Key = %d", str, key) и не париться со склеиванием строк и StdLog.

Тут слишком много вариаций, особенно с числами с плавающей точкой.
Посмотрите Lib, там какие-то шорткаты есть. Если не смотрели.

Видимо, всё-таки, сделать фасадик-настройки под себя/под своих коллег -- единственный тут разумный способ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Вторник, 12 Октябрь, 2010 09:17 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Оригинальное применение констант в О3
Цитата:
CONST
copyright* = "© 1998 - 2009 Werner Braun, Oі Software GmbH & Co. KG, Germany";
(* License-Types *)
licInt* = "Oі internal, not for distribution";
licGpl* = "GPLv3";
licCom* = "commercial";
license* = licGpl;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделение данных от логики
СообщениеДобавлено: Вторник, 12 Октябрь, 2010 12:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
id_ler писал(а):
Оригинальное применение констант в О3
Цитата:
CONST
copyright* = "© 1998 - 2009 Werner Braun, Oі Software GmbH & Co. KG, Germany";
(* License-Types *)
licInt* = "Oі internal, not for distribution";
licGpl* = "GPLv3";
licCom* = "commercial";
license* = licGpl;

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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