Автор Тема: Задачка архитекторная.  (Прочитано 64958 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #15 : Март 24, 2011, 11:38:16 pm »
В качестве теста для программы предложу ещё такой файл:

Input:
[тестовый файл погрыз смусмумрик, благо его все равно никто не обсуждал]

Output
[output загрыз сурок, и инпут и аутпут воскреснут после воскресенья]
« Последнее редактирование: Март 25, 2011, 11:26:57 am от valexey »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #16 : Март 25, 2011, 05:36:53 am »
     expression ::= '=' term {operation term}*
      cell_reference ::= [A-Za-z][0-9] --
      text ::= '\\'' {printable_character}
Что означает звёздочка в конце expression?
Что означают два минуса в конце cell_reference?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #17 : Март 25, 2011, 05:59:47 am »
     expression ::= '=' term {operation term}*
      cell_reference ::= [A-Za-z][0-9] --
      text ::= '\\'' {printable_character}
Что означает звёздочка в конце expression?
* в данной грамматике видимо означает необязательность элемента.
Примеры expression:
=A1
=A1+B1
=A1+B1*C1/5

Что означают два минуса в конце cell_reference?
Непонятно. Видимо, ошибка копипаста. Возможно, там раньше был комментарий.
Валидные примеры cell_reference:
A1
B2
C3
Zz99
и т.д.

PS. Кстати, эта задача была тестом не просто на построение хорошей архитектуры программы, а на её построение в условиях неточностей в ТЗ -- это частая ситуация в промышленности. Типа -- в неясных случаях надо догадаться и действовать сообразно здравому смыслу и принятых практик.
« Последнее редактирование: Март 25, 2011, 06:03:35 am от Geniepro »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #18 : Март 25, 2011, 06:07:07 am »
PS. Кстати, эта задача была тестом не просто на построение хорошей архитектуры программы, а на её построение в условиях неточностей в ТЗ -- это частая ситуация в промышленности. Типа -- в неясных случаях надо догадаться и действовать сообразно здравому смыслу и принятых практик.
Хотя, возможно, это я уже сейчас нафантазировал... ;D
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #19 : Март 25, 2011, 06:15:17 am »
     expression ::= '=' term {operation term}*
      cell_reference ::= [A-Za-z][0-9] --
      text ::= '\\'' {printable_character}
Что означает звёздочка в конце expression?
* в данной грамматике видимо означает необязательность элемента.
Тогда звёздочка должна быть и в text, не так ли?

Валидные примеры cell_reference:
Zz99
Последнее не является валидным. В условиях оговорено, что только одна буква и одна цифра, и cell_reference это отражает (если убрать минусы).

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #20 : Март 25, 2011, 06:35:57 am »
     expression ::= '=' term {operation term}*
      cell_reference ::= [A-Za-z][0-9] --
      text ::= '\\'' {printable_character}
Что означает звёздочка в конце expression?
* в данной грамматике видимо означает необязательность элемента.
Тогда звёздочка должна быть и в text, не так ли?
Нет, не так. Элемент в фигурных скобках повторяется 1 или более раз. Текст должен содержать хотя бы один символ.
Всё верно.
Валидные примеры cell_reference:
Zz99
Последнее не является валидным. В условиях оговорено, что только одна буква и одна цифра, и cell_reference это отражает (если убрать минусы).
Да, точно, это уже я нафантазировал. Я давно решал эту задачку, уже подзабыл ))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #21 : Март 25, 2011, 06:42:56 am »
Кстати, Гапертон (автор задачи) вспоминал, что корни этой задачи идут из книги Барбары Лисков про язык CLU "Abstraction and specification in programm development, 1986" ("Использование абстракций и спецификаций при разработке программ", Лисков Б., Гатэг Дж.)
Там была похожая задача, расчитанная на семестр для группы из нескольких студентов. но там требовалось ещё и интерактивный интерфейс пользователя сделать (текстовый, типа как в SuperCalc)...
« Последнее редактирование: Март 25, 2011, 06:44:49 am от Geniepro »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #22 : Март 25, 2011, 06:53:25 am »
Выходит, что text должен иметь хотя бы один символ, иначе ошибка? Странно.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #23 : Март 25, 2011, 07:09:28 am »
Что означает звёздочка в конце expression?
"Иные" используют собственную нотацию, которая эквивалентна РБНФ.
Описание, если не ошибаюсь, можно посмотреть в Книге Дракона.
(Для них главное, чтобы было не как у Вирта  :))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #24 : Март 25, 2011, 07:32:16 am »
Выходит, что text должен иметь хотя бы один символ, иначе ошибка? Странно.
Почему странно? Пустая строка -- это пустая ячейка, значит текстовая строка должна быть непустой, раз её специально помечают кавычкой.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #25 : Март 25, 2011, 08:07:32 am »
Выходит, что text должен иметь хотя бы один символ, иначе ошибка? Странно.
Почему странно? Пустая строка -- это пустая ячейка, значит текстовая строка должна быть непустой, раз её специально помечают кавычкой.
Я бы не стал смешивать пустую строку и пустую ячейку. Если мы потом добавляем выражения со строками, то при ссылке на пустую ячейку лучше получить ошибку "нет значения", чем считать её пустой строкой.

AlexIljin

  • Newbie
  • *
  • Сообщений: 25
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #26 : Март 25, 2011, 08:09:10 am »
Что означает звёздочка в конце expression?
"Иные" используют собственную нотацию, которая эквивалентна РБНФ.
Описание, если не ошибаюсь, можно посмотреть в Книге Дракона.
(Для них главное, чтобы было не как у Вирта  :))
Я так понимаю, там зачем-то использованы регулярные выражения вместо обычного РБНФ'а.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #27 : Март 25, 2011, 08:19:07 am »
Я так понимаю, там зачем-то использованы регулярные выражения вместо обычного РБНФ'а.
Да нет же. Описание дадено в обычном виде, в виде описания грамматики для бизона. Оно эквивалентно РБНФ.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #28 : Март 25, 2011, 08:51:46 am »
Хотя я похоже не прав, это не бизоново описание грамматики. Но что-то очень-очень мне знакомое. По моему, Сишная грамматика (и оттуда С++, ява, C#) так же описана. Если мне эклер не изменяет, то оно было эквивалентно БНФ, но судя по звездочкам её таки проапгрейдили до РБНФ.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Задачка архитекторная.
« Ответ #29 : Март 25, 2011, 11:56:06 am »
Я бы не стал смешивать пустую строку и пустую ячейку. Если мы потом добавляем выражения со строками, то при ссылке на пустую ячейку лучше получить ошибку "нет значения", чем считать её пустой строкой.
Возьмём "взрослую" электронную таблицу, например Эксель. Он пустые ячейки считает заполненными нулями в арифметических выражениях и пустыми строками в строковых выражениях.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…