Re[8]: Так ли хороша математическая нотация?
От: Klapaucius  
Дата: 04.08.11 12:12
Оценка: 46 (3) +4 :)
Здравствуйте, Undying, Вы писали:

U>Стратегия:


U>
U>interface IWorker
U>{
U>  int Work();
U>}

U>class ConcreteWorker : IWorker
U>{
U>  public int Work() { ... }
U>}
U>


U>Жду стратегии на математическом языке.


То, что вы написали — это никакой не паттерн стратегия. Разница такая же, как между 3 и множеством целых чисел. Паттерн стратегия, это вовсе не этот ваш код, а функция, которая получив ваш код на вход вернет значение "истина", а получив на вход что-то стратегией не являющееся — "ложь".

Паттерны это или классы классов объектов, которые в большинстве языков программирования не выражаются, либо еще и функции отображающие из одного класса объектов в другой. К примеру, некоторые паттерны, вроде фасада (F : T -> T) и адаптера (A : U -> V) — это комбинаторы объектов. В подавляющем большинстве языков они не могут быть выражены, они существуют только в уме программиста, а в языке выражается результат их работы в уме программиста.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[6]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.11 21:50
Оценка: +4 :))
Здравствуйте, Undying, Вы писали:

U>Формально, да, язык программирования можно считать разновидностью математического языка. Но практически это не имеет смысла, т.к. математический формализм в данном случае не дает никаких дополнительных возможностей и лишь усложняет понимание. Поэтому 99% программистов сильно удивятся, если им сказать, что они программируют на математических языках.

В этом, в частности, и есть проблема. К примеру, многие гражданские инженеры понимают, что они пользуются математикой. Поэтому мосты, скажем, падают редко. А большинство программистов — не понимают, что пользуются математикой. Поэтому их программы падают часто
Это не означает, что в самом программировании мало математики. Это означает, что то, чем занимаются программисты, зачастую похоже на настояшее программирование только издалека.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 05:58
Оценка: 7 (1) +4
Здравствуйте, Undying, Вы писали:

U>Доказательства и примеры будут? Или только аналогии?

Что именно вы хотите чтобы я доказал? Неформально определённый тезис? Сие невозможно по определению.
Какой пример вас убедит?
Вот, скажем, протокол HTTP. Многие программисты знают о математике внутри этого протокола — скажем, что GET считается безопасным методом, а DELETE — идемпотентным.
А те, которые не знают, нарушают безопасность GET, и получают неожиданные результаты при запуске приложения в эксплуатацию. Или, наоборот, используют POST для навигации, и получают корректные, но неэффективные реализации на ровном месте. Почему? Да потому, что впереди интуиции должна идти математика. Только после того, как некоторый приём или его семейство разобрано по запчастям, и освоены ограничения применимости, можно положить этот приём в моторную память и пользоваться им "безо всякой математики".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 09:40
Оценка: -4 :)
Здравствуйте, Chrome, Вы писали:

C>В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.

C>Вопрос, так ли хороша эта нотация?

Плоха, конечно. Математика не умеет работать с реальными сущностями. Математика пригодна лишь в том случае, когда при решении задачи удается реальную сущность упростить настолько, что она сводится к строгоформализованной модели. Но это возможно далеко не для всех сущностей и только на достаточно узком круге задач. Программирование работает с куда более широким кругом сущностей и задач, чем математика. Соответственно попытка свести язык программирования к математическому языку означает урезание возможностей этого языка по решению реальных задач.
Re[5]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 14:17
Оценка: +1 :))) :)
Здравствуйте, Mamut, Вы писали:

M>>>>Математика

M>>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>>>

D>>Ну будет зебра ограниченная кругом, вполне себе ничего.
M>Ээээ. А это разве не единичный круг я описал?
Вообще-то, нет Должно быть: sin(x)^2+cos(x)^2 = 1
Sapienti sat!
Re[6]: Уравнение окружности
От: Qbit86 Кипр
Дата: 04.08.11 14:23
Оценка: +4 :)
Здравствуйте, Cyberax, Вы писали:

M>>>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

M>>Ээээ. А это разве не единичный круг я описал? :)
C>Вообще-то, нет :) Должно быть: sin(x)^2+cos(x)^2 = 1

Вообще-то, уравнение единичной окружности: x^2 + y^2 = 1 :)
Глаза у меня добрые, но рубашка — смирительная!
Re[16]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.08.11 06:36
Оценка: 9 (2) +2
Здравствуйте, Undying, Вы писали:

U>Вот мы разрабатываем пользовательский интерфейс приложения. Где мы здесь используем математику?

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

U>Вот мы думаем какая структура данных хорошо подходит для решения задачи. Где мы здесь используем математику?

А тут мы вообще ничего, кроме математики, не используем. У Кнута, к примеру, очень подробно расписан матаппарат, который позволяет получить оценки производительности для тех или иных алгоритмов. А применимость алгоритмов напрямую зависит от использованных структур данных. А вы, простите, как-то по-другому что ли это делаете?

U>Для того, чтобы найти решение нужно думать. Математика может лишь предоставить ряд приемов, которые в некоторых случаях упрощают процесс мышления, но сам процесс мышления и соответственно поиска решения много сложнее, чем математика.


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

Просто та математика, которую преподают на первых двух курсах, выглядит какой-то отдалённой от практики из-за отсутствия внятных объяснений этого перехода. Ну, к примеру, все понимают, что Быстрое Преобразование Фурье построено на алгебре полей Галуа. А вот на чём построена модель наследования в C++, понимают не все — потому что нет такого курса "математические основы ООП". Это не значит, что нет математических основ ООП.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[18]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.11 21:28
Оценка: 3 (1) +3
Здравствуйте, Undying, Вы писали:

U>Это неверно. Математика это наука о формальных преобразованиях над абстракциями. Преобразованиями реальных сущностей в абстрактные математика не занимается, т.к. формальных методов для этого не существует. Этим занимаются прикладные науки — физика, химия, программирование и т.д. А математика для прикладных наук лишь одно из средств для работы с полученными абстракциями.

Совершенно верно. Вы выполняете преобразование реальных сущностей в абстрактные в рамках прикладного программирования. А в дальнейшем работаете исключительно математикой. Просто вы не всегда это осознаёте.
Осознание математичности программирования помогает писать более хорошие программы. Например, понимание отличий stateless от stateful на математическом, а не образном уровне, помогает делать осознанный выбор между ними и избегать "гибридных" реализаций, обладающих недостатками обоих вариантов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Так ли хороша математическая нотация?
От: Chrome  
Дата: 04.08.11 08:35
Оценка: 1 (1) +3
В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.
Вопрос, так ли хороша эта нотация?
Основания сомневаться такие:

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

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

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

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

Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.
Re[12]: Так ли хороша математическая нотация?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.08.11 14:30
Оценка: +4
Здравствуйте, Undying, Вы писали:

U>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде. Более сложный пример это приемы проектирования, в общем случае по коду вообще невозможно установить какие приемы проектирования при разработке были использованы, что нисколько не мешает приемам проектирования объективно существовать и делать возможной разработку сложнейших систем. Несмотря на то что эти приемы крайне сложно формализовать даже на естественном языке и совершенно невозможно на математическом.

Design Patterns as Higher-Order Datatype-Generic Programs

ну а стратегия — это ФВП для бедных
apply(f,x) = f(x)
Re[10]: Так ли хороша математическая нотация?
От: Ziaw Россия  
Дата: 07.08.11 23:52
Оценка: +2 -1 :)
Здравствуйте, Undying, Вы писали:

U>Это вы откуда такое определение стратегии взяли и какая от него польза при написании программ?


U>Под паттерном стратегия я понимал это: http://ru.wikipedia.org/wiki/Стратегия_(шаблон_проектирования) И вот такая стратегия мне нужна, т.к. позволяет решать реальные задачи гораздо проще, а то что вы называете стратегией мне даром не надо.


Паттерны были придуманы для того, чтобы программисты могли объяснять свои решения. А не для того, чтобы комбинируя паттерны что-то строить (возможно кому-то так удобнее, но сути дела это не меняет). Причем паттерны GoF, во многих случаях появились как костыли для мейнстримных языков. Та же стратегия не имеет никакого смысла в ФП (то есть смысл-то имеет, но выделять ее как отдельный паттерн — все равно, что выделять паттерн "умножение"), а визитор не нужен там, где есть паттерн матчинг с контролем полноты. Синглтон не имеет смысла в языках без ссылочных типов.

Ставить программирование и паттерны GoF в один ряд нельзя. Это всего лишь описания некоторых типовых решений в неком множестве языков программирования. В первую очередь они призваны объяснить: с какой целью код был написан именно так.
Re[12]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.11 21:36
Оценка: +4
Здравствуйте, Undying, Вы писали:

U>Паттерн бридж позволяет заменить умножение числа вариантов на сложение числа вариантов. Ты серьезно считаешь, что это ерунда, нужная лишь для того, чтобы "программисты могли объяснять свои решения"?

Это не ерунда. Это просто слабость языков программирования, требующая объяснять паттерн отдельно от самого языка.

На всякий случай напомню, что, к примеру, наследование и перегрузка виртуальных методов с VMT прекрасно реализуется как паттерн на языке без поддержки наследования (скажем, C). Но в современных ОО-языках такого паттерна не нужно, т.к. он уже встроен на уровне синтаксиса и компилятора.
Это не значит, что паттерн "перегрузка метода" — это ерунда. Как раз наоборот.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 08:41
Оценка: 1 (1) +2
Здравствуйте, Chrome, Вы писали:

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.

Нет. Особенно учитывая то, что математическая нотация использует очень много графических элементов, которые нормально в ASCII не выражаются.
Sapienti sat!
Re[2]: Так ли хороша математическая нотация?
От: TheBeard Россия  
Дата: 04.08.11 10:50
Оценка: 1 (1) +2
LVV>Основания сомневаться еще и такие:
LVV>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>То есть для русскоязычных начинающих лучше учиться на русском языке.

Следуя этой логике, обучение начинающих математиков следует проводить с использованием родного алфавита в алгебраических формулах. Что-то вроде

Ж*Й^2 - Щ*Й + Ы = 0
Re[6]: Так ли хороша математическая нотация?
От: denisko http://sdeniskos.blogspot.com/
Дата: 04.08.11 14:27
Оценка: +3
Здравствуйте, Cyberax, Вы писали:

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


M>>>>>Математика

M>>>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>>>>

D>>>Ну будет зебра ограниченная кругом, вполне себе ничего.
M>>Ээээ. А это разве не единичный круг я описал?
C>Вообще-то, нет Должно быть: sin(x)^2+cos(x)^2 = 1
А это вообще вся плоскость.
<Подпись удалена модератором>
Re[12]: Так ли хороша математическая нотация?
От: Ziaw Россия  
Дата: 08.08.11 15:22
Оценка: +3
Здравствуйте, Undying, Вы писали:

Z>>Паттерны были придуманы для того, чтобы программисты могли объяснять свои решения.


U>Паттерн бридж позволяет заменить умножение числа вариантов на сложение числа вариантов. Ты серьезно считаешь, что это ерунда, нужная лишь для того, чтобы "программисты могли объяснять свои решения"?


Я разве называл что-то ерундой? Ты уверен, что программист не знающий о существовании паттерна бридж будет обречен на умножение числа вариантов? Главный бенефит в том, что добавив суффикс Bridge к классу он ясно дал понять его назначение без огромных UML диаграмм с кучей комментариев.

Ты серьезно считаешь, что банда четырех что-то изобрела? Они сделали классификацию часто применяемых приемов программирования на некоторых языках. Множество паттернов я лично применял до прочтения этой книжки. Не все и не совсем в каноническом виде. Бридж/прокси/адаптер применял точно.
Re[9]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 08:20
Оценка: -1 :))
Здравствуйте, Sinclair, Вы писали:

S>Вот, скажем, протокол HTTP. Многие программисты знают о математике внутри этого протокола — скажем, что GET считается безопасным методом, а DELETE — идемпотентным.


S>А те, которые не знают, нарушают безопасность GET, и получают неожиданные результаты при запуске приложения в эксплуатацию. Или, наоборот, используют POST для навигации, и получают корректные, но неэффективные реализации на ровном месте. Почему? Да потому, что впереди интуиции должна идти математика. Только после того, как некоторый приём или его семейство разобрано по запчастям, и освоены ограничения применимости, можно положить этот приём в моторную память и пользоваться им "безо всякой математики".


Кстати, за что не люблю математику это за ее способность делать простое сложным. Для объяснения механизма тут достаточно одной фразы: при DELETE и POST происходит сброс кэшей, при GET — нет. Никакой математики и заумных терминов тут даром не надо.
Re[12]: Так ли хороша математическая нотация?
От: Кодёнок  
Дата: 05.08.11 10:06
Оценка: 90 (1) +1
Здравствуйте, Undying, Вы писали:

U>Т.к. Cyberax обосновал, что любой язык программирования (в частности C#) является математическим языком и соответственно математической нотацией, а, значит, постановка вопроса озвученная топик-стартером абсурдна. Так кто все-таки прав, те кто отделяют язык программирования от языка математики или Cyberax, который утверждает, что это одно и тоже?


Курица и петух для нас не одно и то же — потому что на практике важно отличать, кто будет нести яйца, а кто нет. Они даже названы разными словами. Фазан самец и фазан самка — это одно и то же для нас, потому что на практике не важно, какого пола тушку ты подстрелил. Поэтому для них нет разных слов. Хотя фазан — это та же самая курица.

Cyberax и про куриц с петухами легко может обосновать, что это одно и то же. Но лично для меня различия между математической нотацией и языками программирования важны, поэтому — для меня не одно и то же.
Re[20]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 11:07
Оценка: 19 (2)
Здравствуйте, Undying, Вы писали:

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


M>> Аксиомы, описывающие языки программирования, определяются в стандартах. Все, получили математическую теорию. Точка. Так что структуры данных это математические объекты без всяких "может быть". И мы оперируем с ними как с математическими объектами.


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


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

Математическая нотация строится по ходу изложения. Например, будет обозначать элемент на пересечении i-й строки и j-го столбца матрицы A как . Отрицание высказывания P будет обозначать . Кстати, в каком языке программирования есть такие средства выражения? Но что нам мешает сделать другие определения? Например, пусть элемент на пересечении i-й строки и j-го столбца матрицы A будет обозначаться A[i][j]. Отрицание высказывания P будет !P. Или not P. Что это принципиально меняет? Смотри список используемых обозначений и наслаждайся.

Но, означает ли фраза, что "синтаксис языка программирования похож на математическую нотацию" бессмысленна? Как ни странно, нет. Есть такое понятие, как "энтимема". Это о чем не говорится, но подразумевается. И что легко восстанавливается из контекста. Энтимемы очень широко используются в математиеской литературе, позволяя избегать огромного количества повторений. Бессмысленно такую фразу выдирать из контекста, не делая дополнительных оговорок. Например:

Синтаксис языка программирования Хаскель похож на математическую нотацию.
Например список можно описать так:
[ x | x <- xs, x > m, x < n ]


Легко восстановить до полной формы:

Синтаксис языка программирования Хаскель, используемый при описании списков, похож на математическую нотацию, используемую в теории множеств для описания множеств, где математические символы, не входящие в кодировку ASCII заменяются на соотвествующие лексемы.

Re[18]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.11 21:20
Оценка: 19 (1) -1
Здравствуйте, Шахтер, Вы писали:

Ш>Просветите, что такое "алгебра полей Галуа", и как она связана с быстрым преобразованием Фурье.

1. http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5
2. http://ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5:
Алгоритм быстрого преобразования Фурье применим к любым коммутативным ассоциативным кольцам с единицей.
В общем случае
Ш>А таже что за таинственные "математические основы ООП".
Например, теория классификации.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[17]: Так ли хороша математическая нотация?
От: Кодёнок  
Дата: 05.08.11 09:14
Оценка: 4 (1) +1
Здравствуйте, Mystic, Вы писали:

M>Программирование это раздел математики. Любая программа, любой алгоритм это математический объект с четко очерченными формальными условиями. Поэтому мы просто никуда и не выходили за пределы математики. Структуры данных, языки программирования, алгоритмы, матрица 1024x768 хранящая цвета и представляющся собой экран пользователя это все математические объекты.


А хирургия это раздел кулинарии, так как органы это все съедобные куски мяса?

Классическая философская ошибка “могут быть представлены как математические объекты” vs. “являются математическими объектами”.
Re[2]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 10:07
Оценка: +1 :)
Здравствуйте, LaptevVV, Вы писали:

LVV>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.

Да-да. И особенно если этот язык — что-то вроде Оберона, да?

Это мы уже где-то слышали. Примерно там же, где была критика подсветки синтаксиса.
Sapienti sat!
Re: Так ли хороша математическая нотация?
От: Klapaucius  
Дата: 04.08.11 10:24
Оценка: +2
Здравствуйте, Chrome, Вы писали:

C>Вопрос, так ли хороша эта нотация?


Нет смысла в подходе "хорошо ли что-то вообще". На практике сравниваются какие-то реальные альтернативы, ну и вот, даже если мат.нотация не так и хороша, то какие-то альтернативы могут быть еще хуже.

C>Во первых, у этой нотации глубокие исторические корни и традиции, откуда следует, что все плохое, что в ней есть, будет сохранено, а все новое и хорошее будет воспринято с большим скрипом.


Глубина корней мат.нотации сильно преувеличена. У остальных используемых языков глубина корней может быть в разы больше.

C>В математической нотации хорошо проработаны языковые средства для выражения ограниченного круга понятий и идей.


Да ну? И чем же они ограничены?

C>Для других понятий и идей она не приспособлена


Например, для каких?

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


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

C>Ей зачастую и не требуется быть понятной


Это, конечно, заблуждение. Понятной ей требуется быть.

C>поскольку математические суждения сами по себе требуют максимальной мыслительной концентрации и медитации


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

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


Стоит, пока не будет изобретена и апробирована нотация лучше, чем нынешняя математическая, но не "близкая" к ней.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[8]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 11:43
Оценка: +1 :)
Здравствуйте, Undying, Вы писали:

U>Стратегия:

U>
U>interface IWorker
U>{
U>  int Work();
U>}

U>class ConcreteWorker : IWorker
U>{
U>  public int Work() { ... }
U>}
U>

U>Жду стратегии на математическом языке.
Пожалуйста:
interface IWorker
{
  int Work();
}
class ConcreteWorker : IWorker
{
  public int Work() { ... }
}
Sapienti sat!
Re[9]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 11:48
Оценка: -1 :)
Здравствуйте, Cyberax, Вы писали:

C>Пожалуйста:

C>
C>interface IWorker
C>{
C>  int Work();
C>}
C>class ConcreteWorker : IWorker
C>{
C>  public int Work() { ... }
C>}
C>


И в каком году это вошло в математический язык?
Re[9]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 13:59
Оценка: :))
Здравствуйте, Klapaucius, Вы писали:

K>То, что вы написали — это никакой не паттерн стратегия. Разница такая же, как между 3 и множеством целых чисел. Паттерн стратегия, это вовсе не этот ваш код, а функция, которая получив ваш код на вход вернет значение "истина", а получив на вход что-то стратегией не являющееся — "ложь".


Это вы откуда такое определение стратегии взяли и какая от него польза при написании программ?

Под паттерном стратегия я понимал это: http://ru.wikipedia.org/wiki/Стратегия_(шаблон_проектирования) И вот такая стратегия мне нужна, т.к. позволяет решать реальные задачи гораздо проще, а то что вы называете стратегией мне даром не надо.
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 14:23
Оценка: :))
Здравствуйте, Cyberax, Вы писали:

C>Это формализация понятия "паттерн". Как мне формально определить является ли заданный код реализацией какого-либо паттерна?


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

Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде. Более сложный пример это приемы проектирования, в общем случае по коду вообще невозможно установить какие приемы проектирования при разработке были использованы, что нисколько не мешает приемам проектирования объективно существовать и делать возможной разработку сложнейших систем. Несмотря на то что эти приемы крайне сложно формализовать даже на естественном языке и совершенно невозможно на математическом.

C>Ты просто не понимаешь что тебе говорят, и всё.


Это неудивительно, т.к. у меня технический склад ума, а у вас математический. Соответственно для меня математика всего лишь инструмент, а для вас это абсолютно все.
Re: Так ли хороша математическая нотация?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.08.11 16:39
Оценка: +2
Здравствуйте, Chrome, Вы писали:

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


Мне кажется стоит зайти издалека.

А она вообще есть — эта нотация? Не, ну, есть конечно некий базис который все проходили в школе и начальных курсах института. Но реально, когда кто-то пытается описать некую задачу математически, то тут же придумывает свой язык. Именно по этом иногда вообще невозможно понять что пишет автор.

Лично я сто раз встречал случае когда написанная в подчеркнуто математической форме статья просто не поддается прочтению.

Так что я бы оспорил сам постулат о том что сама математическая нотация хороша.

Очень часто мат.запись исползуют чтобы придать работе весомости. В общем, традиции есть традиции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 12:26
Оценка: +2
Здравствуйте, Undying, Вы писали:

U>В этом и заключается разница между инженерным и математическим мышлением. Инженерное мышление оперирует реальными сущностями, которые при необходимости упрощаются до математических абстракций. А математическое мышление оперирует только абстракциями. Поэтому инженерный язык всегда много богаче, чем используемый в рамках этого инженерного языка математический язык.


Инженерный язык более конкретный, а математический более общий. Если инженера интересует только решение некоторой практической проблемы, то математика интересует решение целого класса подобных проблем, в которую входит и конкретная проблема инженера. Но с обобщением проблемы также увеличивается необходимое количество знаний для того, чтобы его понять. Если верить Винеру, то зачастую математики специально повышали уровень абстракции своих статей для того, утобы затруднить их понимание военными. Хотя в своей тусовке все понимали что к чему.

Легко доказать, что в балансовой ведомости сумма активов должна равняться сумме пассивов. И все, для математика задача решена и неинтересна. Но если бухгалтер прийдет в налоговую и скажет: я доказал, что актив равен пассиву, то ему там просто рассмеются ему в лицо. Нужен конкретный расчет.
Re[18]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.08.11 21:25
Оценка: +2
Здравствуйте, Undying, Вы писали:

U>При разбиении задачи на сущности никакой математикой я не пользуюсь. Это задача решаемая образным мышлением. Например, в задаче есть сущность водитель. Ты надеюсь не будешь утверждать, что это математическая сущность?

В задаче — нет. Но в формализации задачи водитель теряет все лишние свойства. В зависимости от того, что за задача решается, водитель становится математическим объектом, обладающим некоторыми свойствами. А дальше начинается математика в полный рост. Рассуждения типа "водитель — человек, у человека есть фамилия, значит у водителя есть фамилия" — в чистом виде математика. В программе это выражается, например, как class Driver: IPerson.

U>Т.е. опять же речь о математике как инструменте, который позволяет в ряде случаев оценить производительность.

Речь идёт о том, что вы используете ровно этот инструмент, чтобы выбрать между списком, массивом, и деревом.

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

В программе не остаётся никакой образной модели. Остаётся только абстрактная модель.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 05:44
Оценка: +2
Здравствуйте, Undying, Вы писали:

U>Это не ерунда, это антипаттерн. Наследование от реализации бывает оправданным крайне редко.

Да без проблем. Не хотите от реализации — можно от интерфейса. Один хрен, в язык C это не встроено. Что не мешает реализовать это в виде паттерна. См. например C-реализации COM.

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

Мы говорим не о деваемости приёма, а о его математической формализации. В компиляторе наследование интерфейса имеет вполне строгую формализацию, благодаря чему компилятор может делать забавные математические трюки — вроде инлайнинга вызовов там, где он может доказать единственность реализации.
Без математики подобные трансформации делать нельзя. Из-за этого возникает понятие abstraction penalty и прочие предрассудки относительно дизайнерских решений, выраженных в "образных" понятиях.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 15:12
Оценка: +1 :)
Здравствуйте, Undying, Вы писали:
U>Кстати, за что не люблю математику это за ее способность делать простое сложным. Для объяснения механизма тут достаточно одной фразы: при DELETE и POST происходит сброс кэшей, при GET — нет. Никакой математики и заумных терминов тут даром не надо.
А я люблю — за то, что она делает смутное понятным. В приведённой формулировке фраза не является корректной. И даже если бы она была корректной, то она никак не помогает писать правильные приложения — потому что непонятно, нужно ли "сбрасывать кэш" или нет в каждом конкретном случае. Именно из таких вот "народных примет" и получаются неэффективные и глючащие веб-приложения.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 10.08.11 09:58
Оценка: :))
Здравствуйте, Sinclair, Вы писали:

S>Если бы она была верна, то и можно было бы кэшировать результаты любого другого идемпотентного метода, и нельзя было бы кэшровать результаты неидемпотетного.


Поэтому для понимания происходящего в данном случае термин "идемпотентность" является мусорным. Важным является разделение обращений на меняющие и не меняющие данные. И как следствие, на те при которых происходит сброс кэшей и при которых нет. В начальном сообщении ты обращение не сбрасывающее кэши назвал термином "безопасное", но это очень неудачный термин для описания происходящего, т.к. интуитивно этот термин с использованием кэша никак не ассоциируется.

S>Тем не менее, для идемпотентных PUT и DELETE читаем "Responses to this method are not cacheable", а для неидемпотентного Post читаем "Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields". Т.е. всё же иногда ответы могут кэшироваться.


Т.е. объяснение нужно дополнить тем, что в POST есть хак, позволяющий вручную отключить сброс кэшей.
Re[9]: Так ли хороша математическая нотация?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.08.11 19:50
Оценка: +1 :)
Здравствуйте, Mystic, Вы писали:

M>Если это софт для какой-нить АЭС


Я все ждал, когда ж подтянутся программисты АЭС.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[13]: Так ли хороша математическая нотация?
От: vdimas Россия  
Дата: 13.08.11 22:24
Оценка: +2
Здравствуйте, samius, Вы писали:

S>ну а стратегия — это ФВП для бедных

S>apply(f,x) = f(x)

Да все это семейство паттернов, сидящих на делегировании, сюда же можно приписать.
Re[15]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 11.08.11 08:12
Оценка: 64 (1)
Здравствуйте, Sinclair, Вы писали:

S>Поэтому идемпотентность операций крайне важна в распределённой среде.


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

S>Я не претендую заменить собой весь учебник. Я всего лишь приводил примеры математики в программировании. При этом я не знаю, на какой уровень вашей подготовки в предмете надо рассчитывать.


Я не понимаю с чем ты споришь. Я нигде не говорил, что математика вообще не нужна. Для многих задач не просто нужна, а необходима. Но программирование как целое является инженерной, а не математической дисциплиной, и использует математику только как инструмент, в тех случаях когда этот инструмент удобен для решения задачи.
Re[26]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.08.11 13:06
Оценка: 19 (1)
Здравствуйте, Cyberax, Вы писали:
C>Хех. Мне приходили GUID'ы вида 000000000000001, 000000000000002 и т.д.
Не вижу проблемы. Видимо, это оттого, что я не представляю себе вашу задачу. Если бы вы её мне описали, то я бы смог спроектировать для вас RESTful API.
А так мне остаётся только гадать, какую именно проблему с безопасностью вы подразумеваете.

C>Ага, только вот не всегда.

Это проблемы не вас, а клиента.

C>Так мне нужно два объекта обновить "одновременно". REST это делает крайне тяжёлым.

Ещё раз: в REST так не бывает. Классический пример, на котором иллюстрируют транзакции первокурсникам — "перевод денег со счёта". В REST он не делается путём декремента одного счёта и инкремента другого. В REST он делается при помощи записи объекта-транзакции, которая ссылается на оба счёта. Так понятно?
То есть делаем PUT на .../<userAccountID/transactions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.xml
Использование GUID гарантирует нам, что мы можем безопасно делать retry, не рискуя перевести деньги дважды. Использование userAccountID гарантирует нам, что транзакции от разных пользователей расположены в разных местах, что позволяет навернуть security и избежать проблемы нечаянного расшаривания кэша.

Ad-hoc транзакций в REST "из коробки" нет. Но их можно придумать, если есть убедительная причина.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Так ли хороша математическая нотация?
От: Евгений Акиньшин grapholite.com
Дата: 05.08.11 11:27
Оценка: 9 (1)
Здравствуйте, Chrome, Вы писали:

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


Так даже математики не хотят ей пользоваться: вот статья от автора пакета Mathematica — одной из самых навороченных прог для математиков, про историю мат нотации, где в частности обсуждается вопрос, почему ее не стоит использовать для математических пакетов

http://www.stephenwolfram.com/publications/recent/mathml/
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[18]: Имре Лакатош
От: Qbit86 Кипр
Дата: 05.08.11 12:53
Оценка: 9 (1)
Здравствуйте, Mystic, Вы писали:

M>Собственно говоря, Поппер.


Поппер — попса :) Читайте Имре Лакатоша.
Глаза у меня добрые, но рубашка — смирительная!
Re[10]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.11 05:49
Оценка: 7 (1)
Здравствуйте, Undying, Вы писали:

U>

U>Согласно стандарту HTTP, запросы типа GET считаются идемпотентными — многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET.

Да, на всякий случай, дополню: русскоязычная википедия, как и во многих других случаях, в процитированной статье содержит ошибку.
Если посмотреть на оригинал, куда ссылается сносочка из процитированной фразы, ошибка станет очевидной.
Во-первых, подчёркивается идемпотентность GET, как бы противопоставляя его остальным методам. В то время, как неидемпотентный метод в HTTP/1.1 ровно один. Это не совсем ошибка — строго говоря, фраза корректна. Скорее введение в заблуждение.
Во-вторых, индукция "Это позволяет кэшировать" абсолютно неверна.
Если бы она была верна, то и можно было бы кэшировать результаты любого другого идемпотентного метода, и нельзя было бы кэшровать результаты неидемпотетного. Тем не менее, для идемпотентных PUT и DELETE читаем "Responses to this method are not cacheable", а для неидемпотентного Post читаем "Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields". Т.е. всё же иногда ответы могут кэшироваться.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 04.08.11 09:46
Оценка: :)
Здравствуйте, Chrome, Вы писали:

C>В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.

C>Вопрос, так ли хороша эта нотация?
Основания сомневаться еще и такие:
Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
То есть для русскоязычных начинающих лучше учиться на русском языке.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 10:10
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>Программирование работает с куда более широким кругом сущностей и задач, чем математика.


Математика включает в себя все прогаммирование
Re[2]: Так ли хороша математическая нотация?
От: Alexey F  
Дата: 04.08.11 10:15
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Основания сомневаться еще и такие:

LVV>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>То есть для русскоязычных начинающих лучше учиться на русском языке.

Когда я начинал изучение, "для", "пока", "если", "целое" сбивали с толку, т.к. уже имели предопределённое значение в голове (и, соответственно, рамки применимости). Напротив, "for", "while", "if", "int" не имели оного (английский я тогда знал ещё хуже, чем сейчас ; серьёзно, они воспринимались чуть ли не как слова заклинания без всякого "дополнительного" смысла) и могли быть использованы в любом контексте: имеющем какое-то отношение к грамматике естественного языка или нет.
Сейчас же, думаю, если заменить это всё один-в-один на иероглифы или спецсимволы и дать мне расшифровку оных, понятность кода не улетучится.
Re[4]: Так ли хороша математическая нотация?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 04.08.11 10:49
Оценка: -1
Здравствуйте, Undying, Вы писали:

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


M>>Математика включает в себя все прогаммирование


U>Приведи запись на математическом языке хотя бы простейших паттернов: адаптер, фасад, стратегия, бридж.

Для этого они изобрели ФЯ где все эти фасады побоку и программа это есть ни что иное как одна огромная функция(или теорема с доказательством) от n-ого числа переменных(нач. условий), которая вычисляет другие функции.
Sic luceat lux!
Re[6]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 10:57
Оценка: :)
Здравствуйте, LaptevVV, Вы писали:

LVV>Речь идет не обязательно опервокурсниках. Начинающие программисты — это 7-8 класс, а то и пятый (как у Ткачева).


А в чем проблема? Как раз в 7-8 классе я осваивал программирование на МК-52. В одной из книг было определние факториала. Было вполне достаточно, чтобы написать факториал самому. Ну а в математике факториал вводится только когда даются начатки комбинаторики, иначе у него просто не будет практического применения.

Ну а так алгоритмическое мышление и математическое мышление во многом схожи. Если брать идейно, то программирование просто специальный раздел математики.
Re[4]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 11:00
Оценка: +1
Здравствуйте, Undying, Вы писали:

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


M>>Математика включает в себя все прогаммирование


U>И как на языке математики записывается, к примеру, интерфейс?


Теории множеств должно хватить с головой. Множество элементов интерфейса, граф состояний, функция, которая возвращает координаты/видимость/другие атрибуты в зависимости от состояния.
Re[4]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 11:03
Оценка: :)
Здравствуйте, Undying, Вы писали:

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


M>>Математика включает в себя все прогаммирование


U>Приведи запись на математическом языке хотя бы простейших паттернов: адаптер, фасад, стратегия, бридж.


Язык программрования это и есть математический язык. Ибо его спецификация легко выразить в терминах некоторой аксиоматики. Опять же, UML это надстройка над графами.
Re[7]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 11:39
Оценка: -1
Здравствуйте, Klapaucius, Вы писали:

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


Стратегия:

interface IWorker
{
  int Work();
}

class ConcreteWorker : IWorker
{
  public int Work() { ... }
}


Жду стратегии на математическом языке.
Re[10]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 14:05
Оценка: +1
Здравствуйте, Undying, Вы писали:

K>>То, что вы написали — это никакой не паттерн стратегия. Разница такая же, как между 3 и множеством целых чисел. Паттерн стратегия, это вовсе не этот ваш код, а функция, которая получив ваш код на вход вернет значение "истина", а получив на вход что-то стратегией не являющееся — "ложь".

U>Это вы откуда такое определение стратегии взяли и какая от него польза при написании программ?
Это формализация понятия "паттерн". Как мне формально определить является ли заданный код реализацией какого-либо паттерна?

U>Под паттерном стратегия я понимал это: http://ru.wikipedia.org/wiki/Стратегия_(шаблон_проектирования) И вот такая стратегия мне нужна, т.к. позволяет решать реальные задачи гораздо проще, а то что вы называете стратегией мне даром не надо.

Ты просто не понимаешь что тебе говорят, и всё.
Sapienti sat!
Re[4]: Так ли хороша математическая нотация?
От: Mamut Швеция http://dmitriid.com
Дата: 04.08.11 14:11
Оценка: :)
M>>>Математика
M>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>>

D>Ну будет зебра ограниченная кругом, вполне себе ничего.

Ээээ. А это разве не единичный круг я описал?


dmitriid.comGitHubLinkedIn
Re[5]: Так ли хороша математическая нотация?
От: denisko http://sdeniskos.blogspot.com/
Дата: 04.08.11 14:27
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M>>>>Математика

M>>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>>>

D>>Ну будет зебра ограниченная кругом, вполне себе ничего.

M>Ээээ. А это разве не единичный круг я описал?

Ты зебру описал, т.е множество точек (x = n * pi/2, y in (-inf,inf)) , для круга условие x*x+y*y < 1, например или Y < 1 в полярной системе.
<Подпись удалена модератором>
Re: Хороша программная нотация!
От: x-code  
Дата: 04.08.11 18:22
Оценка: +1
Здравствуйте, Chrome, Вы писали:

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


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

Зато есть такая вещь, как программная нотация. За десятилетия существования программирования она уже вполне сформировалась как отдельное явление. И потому хороши те языки программирования, которые максимально близки именно к программной нотации.
Какие языки наиболее распространены в мире? Правильно, C, C++, Java, C#, ObjectiveC, PHP, JavaScript. Думаю, все вместе они наберут процентов 90 или даже больше. Они используют практически единую нотацию, с точностью до ключевых слов и некоторых нюансов. Программист на любом из перечисленных языков с легкостью и без запинки прочтет код на любом другом.
Именно поэтому хороша традиционная си-подобная нотация. По той же причине, по которой математическая нотация хороша для математиков: она им понятна! Наверняка, если подумать, можно найти в синтаксисе формул кучу неоптимальных вещей. И наверняка можно придумать куда более эффективный способ записи всех математических формул. Но попробуйте перевести на
этот способ математиков
Re[18]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 09:43
Оценка: :)
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, Mystic, Вы писали:


M>>Программирование это раздел математики. Любая программа, любой алгоритм это математический объект с четко очерченными формальными условиями. Поэтому мы просто никуда и не выходили за пределы математики. Структуры данных, языки программирования, алгоритмы, матрица 1024x768 хранящая цвета и представляющся собой экран пользователя это все математические объекты.


Кё>А хирургия это раздел кулинарии, так как органы это все съедобные куски мяса?


Да, но манипуляции то над объектами тут совершенно разные. Цели разные.

Кё>Классическая философская ошибка “могут быть представлены как математические объекты” vs. “являются математическими объектами”.


Всегла соглашался с Ландау, что философия это противоестественная наука, здесь этому подтверждения. Но, к слову, я не писал "могут быть". Я писал являются. И все программирование это раздел математики.

Вообще, что есть математика? По сути это совокупность аксиом и правил вывода. Правила вывода одинаковы во всей математике и в программировании. С некоторой оговоркой касательно интуиционисткой математики. Аксиомы, описывающие языки программирования, определяются в стандартах. Все, получили математическую теорию. Точка. Так что структуры данных это математические объекты без всяких "может быть". И мы оперируем с ними как с математическими объектами.
Re[2]: Нотация как набор исторических курьёзов
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.08.11 10:39
Оценка: +1
Здравствуйте, Qbit86, Вы писали:

Q>Вот пример происхождения нотации для λ-исчисления:

Q>

«Сам значок «λ» используется для одной из двух основных конструкций в созданной Черчем системе абстракции. Оказывается, что выбор обозначения абстракции не был совершенно случайным, а сделан в противопоставление другой более ранней конструкции, которую использовали Whitehead и Russell и обозначали как «». Для новой конструкции, чтобы отличать ее от прежней, Черч сначала заменил обозначение сначала на «∧x», а затем  на «λx», очевидно, интерпретировав первый символ как заглавную букву «Λ», для упрощения набора.»

Q>В то же время в математике есть альтернативная нотация (не так хорошо отражает «квантороподобные» свойства абстракции, зато более наглядная): x ↦ expr(x).

еще версия

Выбор символа λ является произвольным, и не несет никакой смысловой нагрузки. (Можно часто видеть, особенно во французских текстах, альтернативную нотацию [x] t[x].) Вероятно, что она возникла во время сложного процесса эволюции. В начале, в известной книге Principia Mathematica (Whitehead and Russell 1910) использовалась ‘hat’-нотация t[^ x] для функции от x производящей t[x]. Чёрч (Church) изменил его на ^x. t[x] (крышка над x), но поскольку наборщики текстов не могли поместить значок ‘hat’ (крыша) над x, то оно появилось как Λx. t[x], которое затем трансформировалось в λx: t[x] в руках других наборщиков.

Введение в функциональное программирование
John Harrison
jrh@cl.cam.ac.uk
3rd December 1997

Q>Это к слову о том, что часто математическую нотацию считают по-умолчанию более предпочтительной, «умной» и правильной, даже если её происхождение — хаотичный и бестолковый набор случайностей.

Re[14]: Так ли хороша математическая нотация?
От: Кодёнок  
Дата: 05.08.11 11:58
Оценка: +1
Здравствуйте, Mystic, Вы писали:

M>Ну если ты такой любитель аналогий, то считай, что математическая нотация это маммалии, а языки программирования это приматы. Конечно, приматы имеют много специфических особенностей, на которые делает упор при их изучении. Но это никоим образом не выводит приматов из числа маммалий.


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

Зачем мне классифицировать именно так, а не иначе? Мне не нужно считать ЯП частью математики. Мне нужно наоборот: чтобы ЯП со своими противоречиями в спецификациях и багами в реализациях шли налево, а математика со своей непротиворечивостью и корректностью шла направо.

Твоя классификация не имеет практической ценности. Не говоря уж о том, что она просто слабая: если бы B ∈ A, то сайты, собирающие A (статьи математиков), принимали бы и B (статьи программистов), что не так — далеко не каждую статью о ЯП пустят в математический журнал, какой бы широчайшей направленности он не был.
Re[16]: Так ли хороша математическая нотация?
От: Кодёнок  
Дата: 05.08.11 12:34
Оценка: :)
Здравствуйте, Mystic, Вы писали:

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


Рекомендую почитать по философии науки нечто более серъезное, чем чьи-то древние афоризмы. Определения науки никоим образом не зиждятся на математике. У не-ученого нумеролога математики хоть отбавляй, а у биолога, описывающего редкие виды жуков как-то не очень.
Re[14]: Так ли хороша математическая нотация?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.08.11 18:24
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>Здравствуйте, Кодёнок, Вы писали:


Кё>>Курица и петух для нас не одно и то же — потому что на практике важно отличать, кто будет нести яйца, а кто нет. Они даже названы разными словами. Фазан самец и фазан самка — это одно и то же для нас, потому что на практике не важно, какого пола тушку ты подстрелил. Поэтому для них нет разных слов. Хотя фазан — это та же самая курица.


U>В этом и заключается разница между инженерным и математическим мышлением. Инженерное мышление оперирует реальными сущностями, которые при необходимости упрощаются до математических абстракций. А математическое мышление оперирует только абстракциями.

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

U>Поэтому инженерный язык всегда много богаче, чем используемый в рамках этого инженерного языка математический язык.

Маршруты троллейбуса мы можем описать либо вот такой сущностью G(V,E,...), а в языке программирования описание такой сущности со всей спецификой будет вряд ли менее нескольких килобайт текста.
Ну и какая нотация богаче?
Re[13]: Паттерн Стратегия
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.08.11 22:59
Оценка: -1
Здравствуйте, Qbit86, Вы писали:

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


U>>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде.


Q>Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.


Вообще-то нет. "Состояние" обычно имеет ссылку на объект, который обладает этим состоянием, а стратегия — нет.
Re[22]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.08.11 14:59
Оценка: :)
Здравствуйте, Undying, Вы писали:

U>Что в этом описании математического? Что нам даст то, что мы начнем считать, что это описание является математическим?


Нет никаких проблем с формализацией

M>>Где здесь могут быть сложности с формализацией???


U>Что делать при невозможности прочитать файл? Что делать при отсутствии директории заданной в ini-файле? Что делать при отсутствии места на диске?


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


M>>>>Хорошее ТЗ тоже представляет собой формальное описание задачи.

U>И таких ТЗ в реальности никто не видел, т.к. написание такого ТЗ будет более трудозатратно, чем решение задачи.

Ты путаешь полноту с формальностью.

U>

U>Инженерный язык более конкретный, а математический более общий. Если инженера интересует только решение некоторой практической проблемы, то математика интересует решение целого класса подобных проблем, в которую входит и конкретная проблема инженера.


U>Если математический подход более общий, то когда я завел речь о тестировании тебя как математика должно было интересовать подход покрывающий тестирование любой задачи. Вместо этого ты приводишь подход, который возможно применить только в самых примитивных случаях и невозможно в общем случае. А в общем случае тестирование сводится к подстановке набора входных параметров и сравнение эталонного значения с значением на выходе. Соответственно о поведении системы при произвольном значении входных параметров тесты ничего сказать не могут, т.к. эталона для этого случая нет.


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

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

Если метод не является черным ящиком, то тут можно доказать его правильность не прибегая к тестированию вообще.
Re[17]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 07.08.11 17:00
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>У вас, мне кажется, какое-то неверное понимание того, что такое математика. Весь "ряд приёмов", предоставляемый математикой — это формализация. Как только вы что-то формализовали и построили абстрактную модель — вы получили математику.


Это неверно. Математика это наука о формальных преобразованиях над абстракциями. Преобразованиями реальных сущностей в абстрактные математика не занимается, т.к. формальных методов для этого не существует. Этим занимаются прикладные науки — физика, химия, программирование и т.д. А математика для прикладных наук лишь одно из средств для работы с полученными абстракциями.
Re[13]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 03:28
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>На всякий случай напомню, что, к примеру, наследование и перегрузка виртуальных методов с VMT прекрасно реализуется как паттерн на языке без поддержки наследования (скажем, C).


Это не ерунда, это антипаттерн. Наследование от реализации бывает оправданным крайне редко.

S>Но в современных ОО-языках такого паттерна не нужно, т.к. он уже встроен на уровне синтаксиса и компилятора.

S>Это не значит, что паттерн "перегрузка метода" — это ерунда. Как раз наоборот.

От встроенности в язык прием никуда не исчезает. Точно также при написании программы нужно решать упростит ли в данном случае использование перегрузки метода решение. А уж сколько строк займет реализация перегрузки это чисто технический вопрос, от которого сам прием никуда не девается.
Re[20]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 05:51
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>Что нам дает то, что запись class Driver : IPerson мы начали воспринимать как математическую сущность? Пару примитивных и интуитивно понятных без всякой математики преобразований?

Важное заблуждение выделено. Точно также можно сказать, что 246*50 можно посчитать и безо всякой математики, путём интуитивно понятных действий.

U>Например, если есть фиксированная последовательность, то я использую массив, список и дерево я даже не рассматриваю. Где я здесь использовал математику для выбора?

Вы — не использовали. А зря. Одной фиксированности последовательности недостаточно для того, чтобы выбрать массив. Нужно ещё учитывать то, какие операции будут выполняться. К примеру, если часто выполняется поиск в этой коллекции, то дерево всё ещё может оказаться эффективнее массива.
Поэтому математика рулит, а интуиция — нет.

U>И вообще можно к более сложным примерам перейти? Т.к. если и удастся доказать, что на простых примерах математика формально применима, то толку с этого? Простые случай и без всякой математики прекрасно решаются.

Можно — по индукции. Но вы хотите "интуитивного" доказательства, а это будет "математическое".

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

Это нам даёт возможность выполнять рассуждения, не вдаваясь в то, что именно делает программа. Например, можно доказать некоторые вещи — типа type safety, проверяемой верификатором в дотнете.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Так ли хороша математическая нотация?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 10.08.11 06:13
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

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


LVV>>>>>Сравнивали

G>>>>А количество?
LVV>>>Группа — 30 человек.
G>>То есть преподаватель один? Выборка нерепрезентативна.
LVV>F мы и не собирались Заниматься наукой, а стремились получить опыт.
Лет 30-40 назад, еще при советском союзе было очень модно заниматься внедрением новых методик обучения. Были съезды преподавателей, где они делились опытом, выступали ведущие новаторы итд. Вот только большинство не могло эти методики использовать, не получалось ничего хорошего.
В итоге оказалось что все эти новаторы были сами по себе очень харизматичными, грамотными и талантливыми людьми. Им удавалось использовать любые методики.

LVV>>>1. пока a > 10 делать ... конец пока; — это учить не надо. Это читается и понятно без специальной учебы. Причем, даже третьекласснику.

G>>Читаться может и читается, но не понимается смысла этого. В этом и разница естественного языка и формальной нотации.
LVV>Еще как понимается — см. выше "опыт"...
Когда есть опыт тогда нотация пофиг, человек обязательно увидит знакомые конструкции (паттерны) за любой чередой символов.
А вот когда опыта нет — вопрос гораздо интереснее.

LVV>>>2. Не приведете линки на исследования по "соотношение сигнала\шума"?

G>>Я их не собираю, но можно провести простой эксперимент реализовав на pascal и c примерно одинковый функционал посчитать количество символов. В pascal будет больше за счет begin\end, procedure\function и array of.
LVV>То есть исследований тоже нет...
Вы сами можете провести эксперимент, даже времени много не понадобится.

LVV>Вы забываете, что не язык является целью обучения, а программирование. Язык только инструмент обучения.

Слышал я это. А ты знаешь что язык влияет на мышление (это я про человеческий язык), а идиомы компьютерного языка на мышление человека как программиста влияют еще больше. Ты сам со своим blackbox показываешь это очень ярко.
Вот скажи, как обучить человека на pascal, да еще и с русским синтаксисом, чтобы он потом смог написать программу на haskell?

LVV>Летчиков учат на кукурузнике, а летают они на совсем других самолетах.

Неправда. Применяются учебно-боевые самолеты, в которых параметры управляемости настраиваются чтобы сымитировать реальный самолет. И то только потому что самолеты дорогие.
А то что по факту много где учать на кукурузнике — только от бедности.

LVV>Водители новички и водители профи — ездят на разных машинах.

Тоже неверно. Вроде даже хотели разделить права на категории водителей с автоматический коробкой и механической. Это разные водители.
Аналогично обучаясь программированию на языке Х получаются программисты на Х. А если Х — не используемый на практике, то такие программисты не нужны.

LVV>Музыканты-новички и музыканты-профи byhf.n на разных инструментах.

Ага, новички на баяне, а профи на гитаре.

LVV>Спортсмены-новички и спортсмены-профи — просто в разных кроссовках бегают, не говоря уже о всяком другом инвентаре (например, стрелки или велосипедисты).

Вообще-то все спортсмены в разных бегают. Но если рассмотреть инвентарь любых спортсменов, то он зависит только от количества денег которые на это готовы потратить.

LVV>Так что инструменты для обучения и инструменты для профессиональной деятельности во всех сферах деятельности — РАЗНЫЕ!

1) Все что ты привел — неправда
2) Аналогии лживы, ты не доказал что любая из аналогий верна

Вообщек довольно страшное заблуждение что обучать программированию можно на любом языке. Для этого язык должен быть достаточно высокоуровневым и мощным. Паскаль сюда точно не подходит, оберон кстати тоже.
Re[12]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.11 16:43
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>Поэтому для понимания происходящего в данном случае термин "идемпотентность" является мусорным. Важным является разделение обращений на меняющие и не меняющие данные.

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

U>И как следствие, на те при которых происходит сброс кэшей и при которых нет. В начальном сообщении ты обращение не сбрасывающее кэши назвал термином "безопасное", но это очень неудачный термин для описания происходящего, т.к. интуитивно этот термин с использованием кэша никак не ассоциируется.

Это проблема не термина, а вашей интуиции. Я неоднократно говорил — интуицию надо тренировать.
Для двух из трёх видов обращений, которые я перечислил выше, спецификация вводит специальные термины. Которые позволяют избегать в общении и мышлении громоздких конструкций вроде "приводят данные в одно и то же целевое состояние при повторном выполнении", а обходится словом "идемпотентный".

U>Т.е. объяснение нужно дополнить тем, что в POST есть хак, позволяющий вручную отключить сброс кэшей.

Сила математики — в том, что она сокращает количество "сущностей", с которыми надо работать. Вы сейчас пытаетесь представить программирование как набор заученных наизусть "хаков", каждый из которых никак не связан с остальными.
Это — народные приметы, вроде "ласточка низко летает — к дождю".
И даже в этом конкретном топике, при обсуждении тривиальнейших вещей вроде поведения протокола HTTP, ваш продход пробуксовывает.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 11.08.11 03:55
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

S>б) приводят данные в одно и то же целевое состояние при повторном выполнении


К примеру, list.Remove(obj) является идемпотентной операций, list.RemoveAt(index) — нет. Но на практике эта разница мало интересна, т.к. строит логику таким образом, что в ней возможны лишние вызовы Remove это мягко говоря извращение, вне зависимости от идемпотентности этого вызова.

S>Сила математики — в том, что она сокращает количество "сущностей", с которыми надо работать. Вы сейчас пытаетесь представить программирование как набор заученных наизусть "хаков", каждый из которых никак не связан с остальными.


Как раз все наоборот. Объяснение с использованием кэша это описание механизма работы http, т.е. его образное представление (возможно в данном виде не совсем верная, т.к. я с http не работаю и соответственно его не знаю) и соответственно его понимание. Ты же просто приписываешь http командам набор признаков (идемпотентность в частности) не раскрывая механизма объясняющего почему это важно. Это заучивание без понимания происходящего. Т.е. твое объяснение это образец того как объяснять не надо, и на практике есть определенная корреляция между стремлением к подобным объяснениям и преклонением перед математикой. Практики в среднем объясняют гораздо лучше, т.к. в первую очередь дают образное представление происходящего.
Re[14]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.08.11 05:30
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>К примеру, list.Remove(obj) является идемпотентной операций, list.RemoveAt(index) — нет. Но на практике эта разница мало интересна, т.к. строит логику таким образом, что в ней возможны лишние вызовы Remove это мягко говоря извращение, вне зависимости от идемпотентности этого вызова.

Эта разница малоинтересна в том малоинтересном случае, когда вызовы list.Remove() гарантированно завершаются.
В случае вызова удалённой системы у нас такой гарантии нет. То, что при выполнении метода случился таймаут, ничего не говорит нам о том, что произошло на вызываемой стороне. Возможно, до неё вызов так и не дошёл; возможно — до нас не дошло подтверждение.
Поэтому идемпотентность операций крайне важна в распределённой среде.

U>Как раз все наоборот. Объяснение с использованием кэша это описание механизма работы http, т.е. его образное представление (возможно в данном виде не совсем верная, т.к. я с http не работаю и соответственно его не знаю) и соответственно его понимание. Ты же просто приписываешь http командам набор признаков (идемпотентность в частности) не раскрывая механизма объясняющего почему это важно.

Я не претендую заменить собой весь учебник. Я всего лишь приводил примеры математики в программировании. При этом я не знаю, на какой уровень вашей подготовки в предмете надо рассчитывать.
Если вы хотите чему-то научиться — спрашивайте, я объясню подробнее. Пока что вы больше хамите.

U>Практики в среднем объясняют гораздо лучше, т.к. в первую очередь дают образное представление происходящего.

Вот как раз я и есть практик. Вы думаете, я все эти вещи глядя на звёзды придумал? Нет, изучил собственным горьким опытом. Ещё раз подчеркну: образное представление не может заменить точных знаний.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: Так ли хороша математическая нотация?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.08.11 13:19
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>К примеру, list.Remove(obj) является идемпотентной операций

В общем случае не является и идемпотентность операции зависит от отношения эквивалентности объектов, которое достаточно математично (рефлексивность, транзитивность, симметричность), что бы о нем не забыть в этом топике.
var list = new List<object> { 0, 0, 0 };
object obj = 0;
list.Remove(obj);
list.Remove(obj);


U>, list.RemoveAt(index) — нет. Но на практике эта разница мало интересна, т.к. строит логику таким образом, что в ней возможны лишние вызовы Remove это мягко говоря извращение, вне зависимости от идемпотентности этого вызова.

Идемпотентность в отношении списка мало интересна, а вот корректное переопределение Equals — вполне должно интересовать программиста.
Re[16]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.08.11 16:46
Оценка: +1
Здравствуйте, Undying, Вы писали:

U>В случае распределенной системы и соответственно возможности параллельных изменений говорить о сферической идемпотентности в вакууме вообще не имеет смысла. Т.к. если в протоколе указывается к какой версии данных применяется преобразование, то любая модифицирующая операция становится идемпотентной, т.к. ее повторный вызов будет отброшен сервером из-за несоответствия версий. Если же контроль версии данных не производится, то любая модифицирующая операция не является идемпотентной, т.к. повторный вызов может затереть параллельные изменения произошедшие после первого вызова.

Ну вот видите, как здорово — стоит немножко задуматься о математической стороне дела, и сразу происходит существенный прогресс. А "образное мышление" привело к тому, рынок наводнили API без малейшего представления о версионировании, идемпотентности и прочих умных вещах. Только теперь (буквально в последние три года) внезапно появился REST, который вы только что изобрели "в прямом эфире". Вам для этого хватило два дня обсуждений малознакомого вам протокола. Образно мыслящей общественности потребовалось пятнадцать лет интенсивной половой жизни с XML-RPC, SOAP и прочими противоестественными архитектурами.

U>Я не понимаю с чем ты споришь. Я нигде не говорил, что математика вообще не нужна. Для многих задач не просто нужна, а необходима. Но программирование как целое является инженерной, а не математической дисциплиной, и использует математику только как инструмент, в тех случаях когда этот инструмент удобен для решения задачи.

Отлично, давайте на этом и сойдёмся.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[18]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.11 05:38
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>/Offtopic: хочу взять бензопилу и разрезать нафиг всех пропонентов REST на кусочки не больше одного кубического сантиметра.

А что конкретно вас беспокоит в REST?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: Так ли хороша математическая нотация?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.08.11 18:50
Оценка: -1
Здравствуйте, Mystic, Вы писали:

M>Это образно


В лес такие образы. В каком то форуме было правило, как только в топике упоминается Гитлер, топик сразу можно закрывать. В программистских флеймах полный аналог Гитлера — программирование АЭС.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[12]: Так ли хороша математическая нотация?
От: Курилка Россия http://kirya.narod.ru/
Дата: 12.08.11 20:10
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

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


M>>Это образно


AVK>В лес такие образы. В каком то форуме было правило, как только в топике упоминается Гитлер, топик сразу можно закрывать. В программистских флеймах полный аналог Гитлера — программирование АЭС.


Скорее всего речь о законе Годвина
Re[24]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.11 20:19
Оценка: +1
Здравствуйте, Cyberax, Вы писали:
S>>Надо было начинать с идемпотентного PUT, используя GUID, который вполне безопасен.
C>Небезопасен. Так как источник генерирования GUID'ов может быть небезопасен.
Это очень большая экзотика. В природе traceable GUIDs не встречаются уже очень много лет.
Чтобы выдавать это за недостаток протокола, надо быть более чем слегка параноидальным.

C>Ага. Именно поэтому в мой сервис иногда данные приходят в cp1251.

Неважно, в чём они приходят. Главное, чтобы headers соответстовали.

C>Мне нужно обновить два ресурса. Я делаю update на первый ресурс, а потом update на второй. Но при втором update'е получаю "чувак, ресурс устарел".

Это значит, что границы атомарности объектов были выбраны неправильно. Граница транзакции в REST совпадает с границей объекта. Больше сказать ничего нельзя без конкретных деталей.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[22]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.11 20:30
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Добавлю ещё:

C>6) Отсутствие само-описания типа WSDL для SOAP.
как раз с discoverability в REST всё очень хорошо. Но она рассчитана на человека, а не на автомат. Что, в общем-то, нормально: REST — это подход, а не какой-то конкретный стандарт.

C>7) Нет формальной спецификации — каждый понимает REST по-своему. Из-за этого, клиент практически для любого сервиса приходится писать после долгого вкуривания документации и экспериментов.

C>Для SOAP уже всё почти plug&play — я могу взять WSDL, по ней сгенерировать стабы и использовать в почти любом языке.
Если честно, то я не вижу связи. Без документации SOAP-сервис практически полностью бесполезен. Возможность сделать вызов "в любом языке" совершенно бесполезна без понимания, какие именно вызовы делать. Стандартной штукой является наличие "волшебных параметров", которые ссылаются на какие-то другие объекты, без малейшей идеи где идентификаторы этих объектов нужно брать.
RESTful API можно изучать с помощью браузера. Даже если нет вообще никакой документации, то более-менее понятно, какие именно вещи нужно делать.


C>8) Проблема с передачей сложных данных (даже банальный hash map нормально не передаётся) и т.д. Я понимаю, что сразу в таких случаях кричат: "JSON в POST/PUT", но в чём тогда отличие от SOAP?

Нет вообще никакой проблемы с передачей сложных данных. Отличие от SOAP — очень простое: через границу SOAP невозможно передать ссылку на объект. В REST все объекты являются адресуемыми, так что можно передавать URI.
Выбор представления для "сложных данных" — полностью на вас. Можно делать XHTML, XML, JSON или вообще произвольный application/octet-stream. Опять же, REST — это не стандарт. Это подход. На основе REST можно построить стандарт; и постепенно это происходит. Точно так же, как SOAP является результатом стандартизации архитектуры SOA.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Так ли хороша математическая нотация?
От: Qbit86 Кипр
Дата: 04.08.11 08:42
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Так ли хороша математическая нотация?


В большинстве своём отвратительна.

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


Лучше плохая математическая нотация (via Unicode), чем убогий ASCII-art в лексике языков программирования.
Глаза у меня добрые, но рубашка — смирительная!
Re: Так ли хороша математическая нотация?
От: AlexCab LinkedIn
Дата: 04.08.11 09:08
Оценка:
Здравствуйте, Chrome, Вы писали:
C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.

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

Думаю собственно синтаксис это вторично(хотя несомненно важно), главное в ЯП это "модель программирования" если так можно выразится, то есть это модель мышления(набор методов и принципов) используемая программистом при разработке программы, позволяющая ему максимально удобно и продуктивно работать. А синтаксис лишь должен позволять удобно выражать то что придумал программист.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Так ли хороша математическая нотация?
От: Qbit86 Кипр
Дата: 04.08.11 09:16
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Мат. нотация пришла из времён когда программированием занимались математики, а программирование сводилось к описанию мат. формул, для для математиков она несомненно удобна.


Почему «несомненно»?
Глаза у меня добрые, но рубашка — смирительная!
Re: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 09:23
Оценка:
Здравствуйте, Chrome, Вы писали:

C>В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.


Почти не встречал такого, кроме как в книге по хаскелю.

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

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

Имхо, ближе всего к математическому стилю изложения подобрался Кнут и его Literate Programming. Но большого успеха и распространения этот метод не получил.
Re: Так ли хороша математическая нотация?
От: Mamut Швеция http://dmitriid.com
Дата: 04.08.11 09:33
Оценка:
C>В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.
C>Вопрос, так ли хороша эта нотация?

Если брать категорично, то есть «берем всю мат. нотацию» или «не берем никакой мат. нотации», то плохо и то и другое.

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

               -
              |  1, n = 1
fact(n) =    <   2, n = 2
              |  fact(n-1) + fact(n-1), n > 2
               -


Erlang:

fact(1) -> 1;
fact(2) -> 2;
fact(N) -> fact(N-1) + fact(N-2).


Достаточно близко.


List comprehensions вообще являются чуть ли не прямой записью в мат. нотации

Математика
circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

Erlang
Circle = [{X, Y}, || X <- R, sin(X) + cos(X) =:= 1]


Ну и т.п.


dmitriid.comGitHubLinkedIn
Re[3]: Так ли хороша математическая нотация?
От: AlexCab LinkedIn
Дата: 04.08.11 09:52
Оценка:
Здравствуйте, Qbit86, Вы писали:
AC>>Мат. нотация пришла из времён когда программированием занимались математики, а программирование сводилось к описанию мат. формул, для для математиков она несомненно удобна.
Q>Почему «несомненно»?

Из-за "математического" склада ума.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Так ли хороша математическая нотация?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.08.11 10:04
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


C>>В тесктах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош. Делаются даже попытки создать языки общего назначения, основаные на этой нотации.

C>>Вопрос, так ли хороша эта нотация?
LVV>Основания сомневаться еще и такие:
LVV>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>То есть для русскоязычных начинающих лучше учиться на русском языке.

Согласно чему лучше? Есть весомые статистически значимые исследования?
Ну и утверждается, что мат. нотация всем неродная целиком, так?
Re[3]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 04.08.11 10:08
Оценка:
Здравствуйте, Курилка, Вы писали:

LVV>>Основания сомневаться еще и такие:

LVV>>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>>То есть для русскоязычных начинающих лучше учиться на русском языке.
К>Согласно чему лучше? Есть весомые статистически значимые исследования?
К>Ну и утверждается, что мат. нотация всем неродная целиком, так?
1. Есть конкретный опыт конкретных учителей.
2. Есть наш опыт обучения первокурсников
3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 04.08.11 10:09
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


LVV>>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.

C>Да-да. И особенно если этот язык — что-то вроде Оберона, да?
C>Это мы уже где-то слышали. Примерно там же, где была критика подсветки синтаксиса.
Нет. Например, Кумир — до оберона, как до Луны.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Так ли хороша математическая нотация?
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.08.11 10:15
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Курилка, Вы писали:


LVV>>>Основания сомневаться еще и такие:

LVV>>>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>>>То есть для русскоязычных начинающих лучше учиться на русском языке.
К>>Согласно чему лучше? Есть весомые статистически значимые исследования?
К>>Ну и утверждается, что мат. нотация всем неродная целиком, так?
LVV>1. Есть конкретный опыт конкретных учителей.
LVV>2. Есть наш опыт обучения первокурсников
т.е. конкретных публикаций с описанными методиками измерения/сравнения и конкретными цифрами нет?
LVV>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?
под факториалом (в рамках обсуждения нотации) ты имеешь в виду используемый восклицательный знак? И для ваших первокурсников это новый неизвестный символ?
Re[5]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 04.08.11 10:20
Оценка:
Здравствуйте, Курилка, Вы писали:

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


LVV>>Здравствуйте, Курилка, Вы писали:


LVV>>>>Основания сомневаться еще и такие:

LVV>>>>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>>>>То есть для русскоязычных начинающих лучше учиться на русском языке.
К>>>Согласно чему лучше? Есть весомые статистически значимые исследования?
К>>>Ну и утверждается, что мат. нотация всем неродная целиком, так?
LVV>>1. Есть конкретный опыт конкретных учителей.
LVV>>2. Есть наш опыт обучения первокурсников
К>т.е. конкретных публикаций с описанными методиками измерения/сравнения и конкретными цифрами нет?
Я только Кушниренко и Ткачева читал.
LVV>>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?
К>под факториалом (в рамках обсуждения нотации) ты имеешь в виду используемый восклицательный знак? И для ваших первокурсников это новый неизвестный символ?
Речь идет не обязательно опервокурсниках. Начинающие программисты — это 7-8 класс, а то и пятый (как у Ткачева).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 10:40
Оценка:
Здравствуйте, LaptevVV, Вы писали:

C>>Да-да. И особенно если этот язык — что-то вроде Оберона, да?

C>>Это мы уже где-то слышали. Примерно там же, где была критика подсветки синтаксиса.
LVV>Нет. Например, Кумир — до оберона, как до Луны.
Потому и надо учить нормальные языки. Хотя бы тот же Питон или Лого.

С нормальным английским синтаксисом.
Sapienti sat!
Re[3]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 10:40
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Математика включает в себя все прогаммирование


И как на языке математики записывается, к примеру, интерфейс?
Re[3]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 10:44
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Математика включает в себя все прогаммирование


Приведи запись на математическом языке хотя бы простейших паттернов: адаптер, фасад, стратегия, бридж.
Re[4]: Так ли хороша математическая нотация?
От: avpavlov  
Дата: 04.08.11 10:47
Оценка:
U>Приведи запись на математическом языке хотя бы простейших паттернов: адаптер, фасад, стратегия, бридж.

Ну функция же


adapter(x), facade(x), ...
Re[4]: Так ли хороша математическая нотация?
От: Klapaucius  
Дата: 04.08.11 11:13
Оценка:
Здравствуйте, Undying, Вы писали:

U>И как на языке математики записывается, к примеру, интерфейс?


Например, как двойка из предиката принадлежности и кортежа функций. (P, (f, g, h ...))
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: Так ли хороша математическая нотация?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 04.08.11 11:13
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Математика

M>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

Re[6]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 11:14
Оценка:
Здравствуйте, LaptevVV, Вы писали:

К>>под факториалом (в рамках обсуждения нотации) ты имеешь в виду используемый восклицательный знак? И для ваших первокурсников это новый неизвестный символ?

LVV>Речь идет не обязательно опервокурсниках. Начинающие программисты — это 7-8 класс, а то и пятый (как у Ткачева).
Я начинал программировать в 3-м классе в компьютерном кружке. Ни у кого проблемы с английским синтаксисом не было.
Sapienti sat!
Re[2]: Так ли хороша математическая нотация?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 04.08.11 11:15
Оценка:
Здравствуйте, Undying, Вы писали:

U>Плоха, конечно. Математика не умеет работать с реальными сущностями. Математика пригодна лишь в том случае, когда при решении задачи удается реальную сущность упростить настолько, что она сводится к строгоформализованной модели. Но это возможно далеко не для всех сущностей и только на достаточно узком круге задач. Программирование работает с куда более широким кругом сущностей и задач, чем математика. Соответственно попытка свести язык программирования к математическому языку означает урезание возможностей этого языка по решению реальных задач.


Математика работает с моделями. Любая программа это строгоформализованная модель, которая четко определяет, что делать исполнителю. Другое дело, что человек может не понимать модель и выбранная модель может плохо отражать реальность. Но это уже иная проблема.
Программист пользуется достижениями математаки, как бухгалтер калькулятором



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[5]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 11:26
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Язык программрования это и есть математический язык. Ибо его спецификация легко выразить в терминах некоторой аксиоматики.


Судя по тому, что записи ты не привел, то что на языках программирования записывается парой строчек на языке математики записывается непонятно как.

M>Опять же, UML это надстройка над графами.


Все в мире является надстройкой над атомами. Давай на языке атомов все записывать? Удобно будет, как думаешь?
Re[6]: Так ли хороша математическая нотация?
От: Klapaucius  
Дата: 04.08.11 11:34
Оценка:
Здравствуйте, Undying, Вы писали:

U>Судя по тому, что записи ты не привел, то что на языках программирования записывается парой строчек на языке математики записывается непонятно как.


Вы сначала запишите поименованные вами паттерны на любом языке программирования в пару строчек, а потом сравним. А то судя по тому, что записи вы не привели, то, что в неформальном общении программистов выражается в виде вытаращеных глаз, мычания, загадочных пассов руками и испачканой маркерами доски на языке программирования записывается непонятно как.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[2]: Так ли хороша математическая нотация?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 04.08.11 11:38
Оценка:
Cyberax,

C>>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.

C>Нет. Особенно учитывая то, что математическая нотация использует очень много графических элементов, которые нормально в ASCII не выражаются.

Прочитал мою мысль прямо!
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[6]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 11:58
Оценка:
Здравствуйте, Undying, Вы писали:

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


M>>Язык программрования это и есть математический язык. Ибо его спецификация легко выразить в терминах некоторой аксиоматики.


U>Судя по тому, что записи ты не привел, то что на языках программирования записывается парой строчек на языке математики записывается непонятно как.


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

M>>Опять же, UML это надстройка над графами.

U>Все в мире является надстройкой над атомами. Давай на языке атомов все записывать? Удобно будет, как думаешь?
Я не знаю языка атомов, и даже приблизительно не представляю, что это такое. Или ты про альтернативное математическое представление?
Re[10]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 12:06
Оценка:
Здравствуйте, Undying, Вы писали:


U>И в каком году это вошло в математический язык?


А где спецификация математического языка? Пиши как хочешь, нет никаких стандартов

Рассуждения вообще бессмысленны, в математике ты должен все рассуждения идут в рамках некоторой теории со своим набором аксиом. Стандарты всех языков программирования можно понимать как неформальное описание такой системы аксиом. После чего текст на языке программирования становится автоматически формальным математическим текстом (= математический язык).
Re[3]: Так ли хороша математическая нотация?
От: denisko http://sdeniskos.blogspot.com/
Дата: 04.08.11 13:32
Оценка:
Здравствуйте, D. Mon, Вы писали:

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


M>>Математика

M>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>

Ну будет зебра ограниченная кругом, вполне себе ничего.
<Подпись удалена модератором>
Re[10]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 14:00
Оценка:
Здравствуйте, Undying, Вы писали:

C>>Пожалуйста:

C>>
C>>interface IWorker
C>>{
C>>  int Work();
C>>}
C>>class ConcreteWorker : IWorker
C>>{
C>>  public int Work() { ... }
C>>}
C>>

U>И в каком году это вошло в математический язык?
Примерно в 1999-м году, когда впервые появился C#.
Sapienti sat!
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 14:14
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Рассуждения вообще бессмысленны, в математике ты должен все рассуждения идут в рамках некоторой теории со своим набором аксиом. Стандарты всех языков программирования можно понимать как неформальное описание такой системы аксиом. После чего текст на языке программирования становится автоматически формальным математическим текстом (= математический язык).


Ценность твоего рассуждения такая же как то, что любой объект реального мира состоит из атомов, соответственно любой новый объект автоматически становится набором атомов. Формально все верно, но бессмысленно, т.к. решению задач никак не помогает.
Re[12]: Паттерн Стратегия
От: Qbit86 Кипр
Дата: 04.08.11 14:26
Оценка:
Здравствуйте, Undying, Вы писали:

U>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде.


Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.
Глаза у меня добрые, но рубашка — смирительная!
Re[12]: Редукционизм
От: Qbit86 Кипр
Дата: 04.08.11 14:30
Оценка:
Здравствуйте, Undying, Вы писали:

U>Ценность твоего рассуждения такая же как то, что любой объект реального мира состоит из атомов, соответственно любой новый объект автоматически становится набором атомов. Формально все верно, но бессмысленно, т.к. решению задач никак не помогает.


Это называется редукционизм.
Глаза у меня добрые, но рубашка — смирительная!
Re[13]: Паттерн Стратегия
От: Undying Россия  
Дата: 04.08.11 14:31
Оценка:
Здравствуйте, Qbit86, Вы писали:

U>>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде.

Q>Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.

Т.е. ты подтверждаешь мою точку зрения, что никакого отношения к математики паттерны не имеют, т.к. им невозможно дать строго формализованное определение?
Re[13]: Редукционизм
От: Undying Россия  
Дата: 04.08.11 14:38
Оценка:
Здравствуйте, Qbit86, Вы писали:

U>>Ценность твоего рассуждения такая же как то, что любой объект реального мира состоит из атомов, соответственно любой новый объект автоматически становится набором атомов. Формально все верно, но бессмысленно, т.к. решению задач никак не помогает.


Q>Это называется редукционизм.


Да, согласен, люди, для которых математика является самоценностью, это редукционисты.
Re[14]: Редукционизм
От: Qbit86 Кипр
Дата: 04.08.11 14:40
Оценка:
Здравствуйте, Undying, Вы писали:

Q>>Это называется редукционизм.


U>Да, согласен, люди, для которых математика является самоценностью, это редукционисты.


Для меня, например, математика является самоценностью, но я не редукционист :)
Глаза у меня добрые, но рубашка — смирительная!
Re[14]: Паттерн Стратегия
От: Qbit86 Кипр
Дата: 04.08.11 14:41
Оценка:
Здравствуйте, Undying, Вы писали:

U>Т.е. ты подтверждаешь мою точку зрения, что никакого отношения к математики паттерны не имеют, т.к. им невозможно дать строго формализованное определение?


Не совсем, они могут иметь какое-то отношение к математике, даже если вдруг им невозможно дать строгого формального определения.
Глаза у меня добрые, но рубашка — смирительная!
Re[12]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 15:10
Оценка:
Здравствуйте, Undying, Вы писали:

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


U>Ценность твоего рассуждения такая же как то, что любой объект реального мира состоит из атомов, соответственно любой новый объект автоматически становится набором атомов. Формально все верно, но бессмысленно, т.к. решению задач никак не помогает.


На самом деле математика лежит на поверхности, просто очень много людей, программирующих на C#, не знакомы с теорией множеств, графами, так что зачем сужать потенциальную аудиторию? Нужно определение стратегии? Берем за основу этот рисунок



Моментально получаем

Говорят, что классы c1, c2, c3 образуют паттерн стратегия, если
(1) классы с2 и с3 наследуются от c1, и при этом перекрывают виртуальный метод a;
(2) существует такой класс c4, содержащий метод m, который вызывает метод a у класса c1.


Дальше аналогично можно определить все остальные нюансы, но чисто техническая несложная работа.
Re[6]: Так ли хороша математическая нотация?
От: Centaur Россия  
Дата: 04.08.11 15:16
Оценка:
Здравствуйте, denisko, Вы писали:

D>для круга условие x*x+y*y < 1, например или Y < 1 в полярной системе.


В полярной системе координаты, как правило, называются ρ и φ.
Re[13]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 04.08.11 15:21
Оценка:
Здравствуйте, Mystic, Вы писали:

M>

Говорят, что классы c1, c2, c3 образуют паттерн стратегия, если
M>(1) классы с2 и с3 наследуются от c1, и при этом перекрывают виртуальный метод a;
M>(2) существует такой класс c4, содержащий метод m, который вызывает метод a у класса c1.


Зачем мне знать, что в уже спроектированном коде есть паттерн стратегия? Польза от этого какая? Мне нужно понять как при решении задачи использовать паттерн стратегия таким образом, чтобы решение получилось проще. И чем здесь может помочь математика?
Re[14]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 15:26
Оценка:
Здравствуйте, Undying, Вы писали:

U>Зачем мне знать, что в уже спроектированном коде есть паттерн стратегия? Польза от этого какая? Мне нужно понять как при решении задачи использовать паттерн стратегия таким образом, чтобы решение получилось проще. И чем здесь может помочь математика?

Класс, который использует алгоритм (Context), включает абстрактный класс (Strategy), обладающий абстрактным методом, определяющим способ вызова алгоритма. Каждый производный класс реализует один требуемый вариант алгоритма.
Замечание: метод вызова алгоритма не должен быть абстрактным, если требуется реализовать некоторое поведение, принимаемое по умолчанию.

U>Зачем мне знать, что в уже спроектированном коде есть паттерн стратегия? Польза от этого какая? Мне нужно понять как при решении задачи использовать паттерн стратегия таким образом, чтобы решение получилось проще. И чем здесь может помочь математика?


Ты уж определись что тебе надо.
Sapienti sat!
Re[12]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 04.08.11 15:30
Оценка:
Здравствуйте, Undying, Вы писали:

U>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде. Более сложный пример это приемы проектирования, в общем случае по коду вообще невозможно установить какие приемы проектирования при разработке были использованы, что нисколько не мешает приемам проектирования объективно существовать и делать возможной разработку сложнейших систем. Несмотря на то что эти приемы крайне сложно формализовать даже на естественном языке и совершенно невозможно на математическом.

Вообще-то, все паттерны можно формализовать — хотя бы так, как сделано в GoF. Иначе они не имеют смысла.

Хотя, паттерны особо смысла и не имеют, действительно.

C>>Ты просто не понимаешь что тебе говорят, и всё.

U>Это неудивительно, т.к. у меня технический склад ума, а у вас математический. Соответственно для меня математика всего лишь инструмент, а для вас это абсолютно все.
Нет, просто ты не разобрался с тем, что тебя говорят. Вот и всё.
Sapienti sat!
Re[14]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.08.11 15:46
Оценка:
Здравствуйте, Undying, Вы писали:

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


U>Зачем мне знать, что в уже спроектированном коде есть паттерн стратегия? Польза от этого какая?


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

U>Мне нужно понять как при решении задачи использовать паттерн стратегия таким образом, чтобы решение получилось проще. И чем здесь может помочь математика?


Математика помогает формализовать определения, что исключает непонятки в общении. Задача тоже математическая. Поиск решения тоже математика.
Re: Так ли хороша математическая нотация?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.08.11 17:19
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.


Главное требование к синтаксису языка — легкая читаемость. А она, в свою очередь, сильно зависит от традиций. И так уж сложилось, что подавляющее число программистов лучше всего воспринимают c/паскаль подобный синтаксис. Вот соответствие этому синтаксису, имхо, как раз и можно расценивать как преимущество.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[15]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 05:51
Оценка:
Здравствуйте, Mystic, Вы писали:

M> Поиск решения тоже математика.


Вот мы разрабатываем пользовательский интерфейс приложения. Где мы здесь используем математику? Вот мы думаем какая структура данных хорошо подходит для решения задачи. Где мы здесь используем математику?

Для того, чтобы найти решение нужно думать. Математика может лишь предоставить ряд приемов, которые в некоторых случаях упрощают процесс мышления, но сам процесс мышления и соответственно поиска решения много сложнее, чем математика.
Re[6]: Так ли хороша математическая нотация?
От: Mamut Швеция http://dmitriid.com
Дата: 05.08.11 06:28
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


M>>>>>Математика

M>>>>>circle = [(x, y) | X ∈ R, sin(x) + cos(x) = 1]

DM>>>>

D>>>Ну будет зебра ограниченная кругом, вполне себе ничего.
M>>Ээээ. А это разве не единичный круг я описал?
C>Вообще-то, нет Должно быть: sin(x)^2+cos(x)^2 = 1

Да. Чей-то я торможу.

Заменяем на

circle = [(x, y) | X ∈ R, x^2 + y^2 = 1]

Circle = [{x, y} || X <- R, x^2 + y^2 =:= 1]




dmitriid.comGitHubLinkedIn
Re[14]: Паттерн Стратегия
От: Mamut Швеция http://dmitriid.com
Дата: 05.08.11 06:34
Оценка:
U>>>Паттерн стратегия это еще очень примитивный пример, который имеет достаточно однозначное отражение в коде.
Q>>Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.

U>Т.е. ты подтверждаешь мою точку зрения, что никакого отношения к математики паттерны не имеют, т.к. им невозможно дать строго формализованное определение?


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

То есть любой паттерн в итоге сводится к разным вариациям (f o g)(x).

Читать тут: http://norvig.com/design-patterns/ppframe.htm для понимания. Там есть и про стратегию.


dmitriid.comGitHubLinkedIn
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 07:54
Оценка:
Здравствуйте, Cyberax, Вы писали:

U>>И в каком году это вошло в математический язык?

C>Примерно в 1999-м году, когда впервые появился C#.

Напоминаю о чем пишет топик-стартер:

В текстах имеющих отношение к синтаксису языков программирования нередко встречаются пассажи типа: синтаксис такого то языка похож на математическую нотацию, поэтому этот язык хорош.


Т.е. те кто говорят, что синтаксис языка программирования должен быть похож на математическую нотацию не понимают о чем пишут. Т.к. Cyberax обосновал, что любой язык программирования (в частности C#) является математическим языком и соответственно математической нотацией, а, значит, постановка вопроса озвученная топик-стартером абсурдна. Так кто все-таки прав, те кто отделяют язык программирования от языка математики или Cyberax, который утверждает, что это одно и тоже?
Re[16]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 08:38
Оценка:
Здравствуйте, Undying, Вы писали:

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


U>Вот мы разрабатываем пользовательский интерфейс приложения. Где мы здесь используем математику? Вот мы думаем какая структура данных хорошо подходит для решения задачи. Где мы здесь используем математику?


U>Для того, чтобы найти решение нужно думать. Математика может лишь предоставить ряд приемов, которые в некоторых случаях упрощают процесс мышления, но сам процесс мышления и соответственно поиска решения много сложнее, чем математика.


Программирование это раздел математики. Любая программа, любой алгоритм это математический объект с четко очерченными формальными условиями. Поэтому мы просто никуда и не выходили за пределы математики. Структуры данных, языки программирования, алгоритмы, матрица 1024x768 хранящая цвета и представляющся собой экран пользователя это все математические объекты.
Re: Нотация как набор исторических курьёзов
От: Qbit86 Кипр
Дата: 05.08.11 10:05
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Так ли хороша математическая нотация?


Вот пример происхождения нотации для λ-исчисления:

«Сам значок «λ» используется для одной из двух основных конструкций в созданной Черчем системе абстракции. Оказывается, что выбор обозначения абстракции не был совершенно случайным, а сделан в противопоставление другой более ранней конструкции, которую использовали Whitehead и Russell и обозначали как «». Для новой конструкции, чтобы отличать ее от прежней, Черч сначала заменил обозначение сначала на «∧x», а затем  на «λx», очевидно, интерпретировав первый символ как заглавную букву «Λ», для упрощения набора.»

В то же время в математике есть альтернативная нотация (не так хорошо отражает «квантороподобные» свойства абстракции, зато более наглядная): x ↦ expr(x).

Это к слову о том, что часто математическую нотацию считают по-умолчанию более предпочтительной, «умной» и правильной, даже если её происхождение — хаотичный и бестолковый набор случайностей.
Глаза у меня добрые, но рубашка — смирительная!
Re[19]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 10:24
Оценка:
Здравствуйте, Mystic, Вы писали:

M> Аксиомы, описывающие языки программирования, определяются в стандартах. Все, получили математическую теорию. Точка. Так что структуры данных это математические объекты без всяких "может быть". И мы оперируем с ними как с математическими объектами.


Т.е. те кто говорят, что синтаксис языка программирования должен быть похож на математическую нотацию не понимают о чем говорят? Т.к. любой азык программирования является математической нотацией и соответственно вопрос похожести синтаксиса языка программирования на математическую нотацию является абсурдным?
Re[13]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 11:14
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, Undying, Вы писали:


Кё>Cyberax и про куриц с петухами легко может обосновать, что это одно и то же. Но лично для меня различия между математической нотацией и языками программирования важны, поэтому — для меня не одно и то же.


Ну если ты такой любитель аналогий, то считай, что математическая нотация это маммалии, а языки программирования это приматы. Конечно, приматы имеют много специфических особенностей, на которые делает упор при их изучении. Но это никоим образом не выводит приматов из числа маммалий.
Re[13]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 11:24
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Курица и петух для нас не одно и то же — потому что на практике важно отличать, кто будет нести яйца, а кто нет. Они даже названы разными словами. Фазан самец и фазан самка — это одно и то же для нас, потому что на практике не важно, какого пола тушку ты подстрелил. Поэтому для них нет разных слов. Хотя фазан — это та же самая курица.


В этом и заключается разница между инженерным и математическим мышлением. Инженерное мышление оперирует реальными сущностями, которые при необходимости упрощаются до математических абстракций. А математическое мышление оперирует только абстракциями. Поэтому инженерный язык всегда много богаче, чем используемый в рамках этого инженерного языка математический язык.
Re[17]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 11:40
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Программирование это раздел математики. Любая программа, любой алгоритм это математический объект с четко очерченными формальными условиями. Поэтому мы просто никуда и не выходили за пределы математики. Структуры данных, языки программирования, алгоритмы, матрица 1024x768 хранящая цвета и представляющся собой экран пользователя это все математические объекты.


Программа не содержит самого главного — условия задачи. Имея на руках только код программы невозможно определить правильно ли она работает. Т.е. код это лишь часть программистского языка, которая позволяет записать решение задачи, но не позволяет записать условие задачи. Код, да, формально является математическим языком, но программистский язык как целое — нет.
Re[18]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 12:01
Оценка:
Здравствуйте, Undying, Вы писали:

U>Программа не содержит самого главного — условия задачи. Имея на руках только код программы невозможно определить правильно ли она работает. Т.е. код это лишь часть программистского языка, которая позволяет записать решение задачи, но не позволяет записать условие задачи. Код, да, формально является математическим языком, но программистский язык как целое — нет.


Конечно, анализ требований не является частью математики. Но как только задача формализована, т. е. описана в терминах, не допускающих двусмысленного толкования, мы перемещается в область математики. Например, написать процедуру, сортирующую массив данных, это строго формальное описание. Хорошее ТЗ тоже представляет собой формальное описание задачи. Ну и код может быть использован для записи условия задачи, например, мы можем таким образом написать тесты, которые должна будет пройти будущая программа. Ну и все вопросы, которые задавались ранее, например, какую структуру данных выбрать, зачастую задаются уже после формальной постановки задачи. Более того, искать ответы на них до офрмальной постановки задачи может привести к ошибкам.
Re[15]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 12:13
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Мне не нужно считать ЯП частью математики. Мне нужно наоборот: чтобы ЯП со своими противоречиями в спецификациях и багами в реализациях шли налево, а математика со своей непротиворечивостью и корректностью шла направо.


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

Кё>Твоя классификация не имеет практической ценности. Не говоря уж о том, что она просто слабая: если бы B ∈ A, то сайты, собирающие A (статьи математиков), принимали бы и B (статьи программистов), что не так — далеко не каждую статью о ЯП пустят в математический журнал, какой бы широчайшей направленности он не был.


Потому что это больше относится к прикладным вопросам и не имеет математической новизны.
Re[17]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 12:48
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, Mystic, Вы писали:


Кё>Рекомендую почитать по философии науки нечто более серъезное, чем чьи-то древние афоризмы. Определения науки никоим образом не зиждятся на математике. У не-ученого нумеролога математики хоть отбавляй, а у биолога, описывающего редкие виды жуков как-то не очень.


Собственно говоря, Поппер. Любая научная теория должна выдавать проверяемые следствия. А что это значит? Значит для заданных входных данных должен существовать способ вычислить некоторые выходные данные. Процесс этот должен быть формальным, понимаем всеми одинаково. А это и есть математика (математическая модель).

У нумеролога в лучшем случае есть математическая модель. В лучшем потому что иногда там есть махинации, которые придумываются на ходу для подгонки результата. Например, вычисляются 100 параметров, а в интерпретации участвуют 10 субъективно выбранных. Это уже не научная теория, не математика. Также нумеролога не заботит строгая проверка теории.

В случае биолога, то в данном случае это просто сбор фактического материала для проверки других гипотез/теорий. Математика там тривиальная, на ней просто нет смысла заострять внимание.
Re[19]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 14:09
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Конечно, анализ требований не является частью математики. Но как только задача формализована, т. е. описана в терминах, не допускающих двусмысленного толкования, мы перемещается в область математики. Например, написать процедуру, сортирующую массив данных, это строго формальное описание.


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

M>Хорошее ТЗ тоже представляет собой формальное описание задачи. Ну и код может быть использован для записи условия задачи, например, мы можем таким образом написать тесты, которые должна будет пройти будущая программа.


Все что показывают тесты это то, что если на вход подать 2 и 2, то на выходе должно быть 4. О том что должно случиться, если подать на вход 3 и 6 тесты ничего сказать не могут. Соответственно условием задачи тесты не являются и близко.
Re: Так ли хороша математическая нотация?
От: Шахтер Интернет  
Дата: 05.08.11 14:47
Оценка:
Здравствуйте, Chrome, Вы писали:

Обсуждать хороша ли математическая нотация, не будучи профессиональным математиком не стоит. Выглядит смешно.

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

Далее, исторически, языки программирования начали формироваться в то время, когда и вычислительные, и графические возможности компьютеров были весьма скомными. Отсюда ASCII арт, и линейный язык.
Но сейчас ситуация другая. Так вполне возможно, что в недалёком будующем появятся графические языки программирования, более похожие на математическую нотацию.
Будет это хорошо или плохо -- чтобы оценить вкус пудинга, надо его попробовать.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: Так ли хороша математическая нотация?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.08.11 15:00
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Далее, математическая нотация создана для решения определённых задач. Языки программирования решают другие задачи -- они должны быть понятны не только человеку, но и компьютеру. Последнее требование, учитывая весьма скудные вычислительные возможности у них -- очень ограничительное.


Ш>Далее, исторически, языки программирования начали формироваться в то время, когда и вычислительные, и графические возможности компьютеров были весьма скомными. Отсюда ASCII арт, и линейный язык.

Ш>Но сейчас ситуация другая. Так вполне возможно, что в недалёком будующем появятся графические языки программирования, более похожие на математическую нотацию.
Ш>Будет это хорошо или плохо -- чтобы оценить вкус пудинга, надо его попробовать.

То есть, появятся языки программирования решающие те же задачи, что и математическая нотация?
Ce n'est que pour vous dire ce que je vous dis.
Re[20]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.08.11 15:31
Оценка:
Здравствуйте, Undying, Вы писали:

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


M>>Конечно, анализ требований не является частью математики. Но как только задача формализована, т. е. описана в терминах, не допускающих двусмысленного толкования, мы перемещается в область математики. Например, написать процедуру, сортирующую массив данных, это строго формальное описание.


U>Написать систему мониторинга транспорта. Опиши, пожалуйста, требования строго формально на математическом языке. Ты вообще в жизни сколько ТЗ видел написанных строго формально и на математическом языке? Я правильно понимаю, что ни одного?


Ты понимаешь математику достаточно узко. Среди всего обилия математической литературы только у Бурбаки была задача строгого формального изложения всей математики. А так обычно хватает уровня, когда строгая формализация является делом техники и может быть легко проделана. Соотвестсвенно, большая часть получаемых ТЗ было на этом уровне. При этом вовсе не обязательно использовать математическую символику, простого русского/английского достаточно. Например, для примера заходим на vworker и смотрим первое что попалось:

I need a script/app written that will keep files from many directories (and subdirectories) sync'd from an FTP server to a local machine.

The script needs to allow a "ini file" that will list the directories to scan for new files. The script must then enter those directories in order and search all subdirectories for files that do not exist on the local machine. When they do not exist, the script should download the files. There will be multiple "ini" files used and run on various cron schedules.

The machine that will be running the script will be running Ubuntu x64 server 10.x

The script/app can be written in any language you choose although perl is preferred.


Где здесь могут быть сложности с формализацией???

M>>Хорошее ТЗ тоже представляет собой формальное описание задачи. Ну и код может быть использован для записи условия задачи, например, мы можем таким образом написать тесты, которые должна будет пройти будущая программа.


U>Все что показывают тесты это то, что если на вход подать 2 и 2, то на выходе должно быть 4. О том что должно случиться, если подать на вход 3 и 6 тесты ничего сказать не могут. Соответственно условием задачи тесты не являются и близко.


procedure TestSum();
var
  A, B, C: Integer;
begin
  A := GetRandomPositiveInt();
  B := GetRandomPositiveInt();
  C := CalcSum(A, B);
  Assert(A + B = C);
end;
Re[21]: Так ли хороша математическая нотация?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.08.11 15:57
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Среди всего обилия математической литературы только у Бурбаки была задача строгого формального изложения всей математики.


Это далеко от действительности. История попыток формального изложения всей математики имеет долую историю от Кантора до Гёделя.
Ce n'est que pour vous dire ce que je vous dis.
Re[21]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 05.08.11 16:05
Оценка:
Здравствуйте, Mystic, Вы писали:

M>

I need a script/app written that will keep files from many directories (and subdirectories) sync'd from an FTP server to a local machine.

M>The script needs to allow a "ini file" that will list the directories to scan for new files. The script must then enter those directories in order and search all subdirectories for files that do not exist on the local machine. When they do not exist, the script should download the files. There will be multiple "ini" files used and run on various cron schedules.

M>The machine that will be running the script will be running Ubuntu x64 server 10.x

M>The script/app can be written in any language you choose although perl is preferred.


Что в этом описании математического? Что нам даст то, что мы начнем считать, что это описание является математическим?

M>Где здесь могут быть сложности с формализацией???


Что делать при невозможности прочитать файл? Что делать при отсутствии директории заданной в ini-файле? Что делать при отсутствии места на диске?

M>>>Хорошее ТЗ тоже представляет собой формальное описание задачи.


И таких ТЗ в реальности никто не видел, т.к. написание такого ТЗ будет более трудозатратно, чем решение задачи.

U>>Все что показывают тесты это то, что если на вход подать 2 и 2, то на выходе должно быть 4. О том что должно случиться, если подать на вход 3 и 6 тесты ничего сказать не могут. Соответственно условием задачи тесты не являются и близко.


M>
M>procedure TestSum();
M>var
M>  A, B, C: Integer;
M>begin
M>  A := GetRandomPositiveInt();
M>  B := GetRandomPositiveInt();
M>  C := CalcSum(A, B);
M>  Assert(A + B = C);
M>end;
M>


Вот ты утверждаешь, что:

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


Если математический подход более общий, то когда я завел речь о тестировании тебя как математика должно было интересовать подход покрывающий тестирование любой задачи. Вместо этого ты приводишь подход, который возможно применить только в самых примитивных случаях и невозможно в общем случае. А в общем случае тестирование сводится к подстановке набора входных параметров и сравнение эталонного значения с значением на выходе. Соответственно о поведении системы при произвольном значении входных параметров тесты ничего сказать не могут, т.к. эталона для этого случая нет.
Re[3]: Так ли хороша математическая нотация?
От: Шахтер Интернет  
Дата: 05.08.11 17:31
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Здравствуйте, Шахтер, Вы писали:


Ш>>Далее, математическая нотация создана для решения определённых задач. Языки программирования решают другие задачи -- они должны быть понятны не только человеку, но и компьютеру. Последнее требование, учитывая весьма скудные вычислительные возможности у них -- очень ограничительное.


Ш>>Далее, исторически, языки программирования начали формироваться в то время, когда и вычислительные, и графические возможности компьютеров были весьма скомными. Отсюда ASCII арт, и линейный язык.

Ш>>Но сейчас ситуация другая. Так вполне возможно, что в недалёком будующем появятся графические языки программирования, более похожие на математическую нотацию.
Ш>>Будет это хорошо или плохо -- чтобы оценить вкус пудинга, надо его попробовать.

DR>То есть, появятся языки программирования решающие те же задачи, что и математическая нотация?


Нет.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: Так ли хороша математическая нотация?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.08.11 22:55
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Курилка, Вы писали:


LVV>>>Основания сомневаться еще и такие:

LVV>>>Обучение начинающих программистов лучше проводить на языке, имеющем родную лексику.
LVV>>>То есть для русскоязычных начинающих лучше учиться на русском языке.
К>>Согласно чему лучше? Есть весомые статистически значимые исследования?
К>>Ну и утверждается, что мат. нотация всем неродная целиком, так?
LVV>1. Есть конкретный опыт конкретных учителей.
Сколько? Один? Два? Десять? А они уверены что с другим языком было бы по-другому?

LVV>2. Есть наш опыт обучения первокурсников

См выше.

LVV>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?

Что за глупости? У нас в универе матан, дискретная математика и алгебра с геометрией были с самых первых занятий. А вот нотация паскаля была как раз "неродной" для многих.
Re[5]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 06.08.11 04:46
Оценка:
Здравствуйте, gandjustas, Вы писали:

К>>>Ну и утверждается, что мат. нотация всем неродная целиком, так?

LVV>>1. Есть конкретный опыт конкретных учителей.
G>Сколько? Один? Два? Десять? А они уверены что с другим языком было бы по-другому?
Сравнивали.
LVV>>2. Есть наш опыт обучения первокурсников
G>См выше.
Сравнивали
LVV>>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?
G>Что за глупости? У нас в универе матан, дискретная математика и алгебра с геометрией были с самых первых занятий. А вот нотация паскаля была как раз "неродной" для многих.
Ну вот. Вы сами говорите, что паскаль — не родной. А русский — родной. Было б проще писать почти русский текст: пока a > 10 делать ... конец пока;
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Так ли хороша математическая нотация?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 06.08.11 07:43
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


К>>>>Ну и утверждается, что мат. нотация всем неродная целиком, так?

LVV>>>1. Есть конкретный опыт конкретных учителей.
G>>Сколько? Один? Два? Десять? А они уверены что с другим языком было бы по-другому?
LVV>Сравнивали.
LVV>>>2. Есть наш опыт обучения первокурсников
G>>См выше.
LVV>Сравнивали

А количество?

LVV>>>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?

G>>Что за глупости? У нас в универе матан, дискретная математика и алгебра с геометрией были с самых первых занятий. А вот нотация паскаля была как раз "неродной" для многих.
LVV>Ну вот. Вы сами говорите, что паскаль — не родной. А русский — родной. Было б проще писать почти русский текст: пока a > 10 делать ... конец пока;
ыыыыы... человеческий язык неформален. Многое в общении передается не только словами, но и паузами интонацией итд. Все равно на основе естественного языка будет разработана некоторая формальная нотация, которая будет формальная и её все равно надо учить. pascal — хороший пример, в нем пытались сделать нотацию близкой к естественному языку, но соотношение сигнала\шума получилось ниже чем у языков, в которых используются значки для управляющих конструкций, а не слова, это при одинаковом уровне понятности.
Re[2]: Так ли хороша математическая нотация?
От: Философ Ад http://vk.com/id10256428
Дата: 06.08.11 08:29
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Думаю собственно синтаксис это вторично(хотя несомненно важно), главное в ЯП это "модель программирования"


Думаю, что это те две вещи, которые стоят на первом месте.
Да и писать приходится реже чем читать и править. Иногда случается, что за неделю вообще ни одной строчки не напишешь, не смотря на упорную работу с иходниками. Читабельность синтаксиса не просто важная штука, а СУПЕР важная штука.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[7]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 06.08.11 11:36
Оценка:
Здравствуйте, gandjustas, Вы писали:

К>>>>>Ну и утверждается, что мат. нотация всем неродная целиком, так?

LVV>>>>1. Есть конкретный опыт конкретных учителей.
G>>>Сколько? Один? Два? Десять? А они уверены что с другим языком было бы по-другому?
LVV>>Сравнивали.
LVV>>>>2. Есть наш опыт обучения первокурсников
G>>>См выше.
LVV>>Сравнивали
G>А количество?
Группа — 30 человек.
LVV>>>>3. Для начинающих математическая нотация — не родная. Даже факториал — многие ли знают определение?
G>>>Что за глупости? У нас в универе матан, дискретная математика и алгебра с геометрией были с самых первых занятий. А вот нотация паскаля была как раз "неродной" для многих.
LVV>>Ну вот. Вы сами говорите, что паскаль — не родной. А русский — родной. Было б проще писать почти русский текст: пока a > 10 делать ... конец пока;
G>ыыыыы... человеческий язык неформален. Многое в общении передается не только словами, но и паузами интонацией итд. Все равно на основе естественного языка будет разработана некоторая формальная нотация, которая будет формальная и её все равно надо учить. pascal — хороший пример, в нем пытались сделать нотацию близкой к естественному языку, но соотношение сигнала\шума получилось ниже чем у языков, в которых используются значки для управляющих конструкций, а не слова, это при одинаковом уровне понятности.
1. пока a > 10 делать ... конец пока; — это учить не надо. Это читается и понятно без специальной учебы. Причем, даже третьекласснику.
2. Не приведете линки на исследования по "соотношение сигнала\шума"?. Многолетний и многообразный опыт программирования на разных языках и у разных людей показывает: то, что начинающему хорошо, опытному — плохо. Для этого достаточно посмотреть на пару: паскаль-С. Кто создавал и с какой целью — и сразу видать, что для профи, а что — для начинающего. Дык для начинающего нужно еще добавить родной язык — ему легче будет осваивать алгоритмизацию (что является основным камнем преткновения — а вовсе не лексика языка).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.08.11 06:19
Оценка:
Здравствуйте, Undying, Вы писали:

U>И как на языке математики записывается, к примеру, интерфейс?

Несколько вариантов.
Традиционно, минимальный матаппарат в любом программировании — это описание грамматики языка.
Если интересно поговорить о семантике интерфейса, то читайте http://www.jot.fm/contents.html?query=theory+of+classification. Где там конкретно про интерфейс, я сходу не скажу, но теория построена довольно-таки полная. В какой-то из глав, посвящённых наследованию должно быть.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Так ли хороша математическая нотация?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.08.11 11:01
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


К>>>>>>Ну и утверждается, что мат. нотация всем неродная целиком, так?

LVV>>>>>1. Есть конкретный опыт конкретных учителей.
G>>>>Сколько? Один? Два? Десять? А они уверены что с другим языком было бы по-другому?
LVV>>>Сравнивали.
LVV>>>>>2. Есть наш опыт обучения первокурсников
G>>>>См выше.
LVV>>>Сравнивали
G>>А количество?
LVV>Группа — 30 человек.
То есть преподаватель один? Выборка нерепрезентативна.

LVV>1. пока a > 10 делать ... конец пока; — это учить не надо. Это читается и понятно без специальной учебы. Причем, даже третьекласснику.


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

LVV>2. Не приведете линки на исследования по "соотношение сигнала\шума"?

Я их не собираю, но можно провести простой эксперимент реализовав на pascal и c примерно одинковый функционал посчитать количество символов. В pascal будет больше за счет begin\end, procedure\function и array of.

LVV>Многолетний и многообразный опыт программирования на разных языках и у разных людей показывает: то, что начинающему хорошо, опытному — плохо. Для этого достаточно посмотреть на пару: паскаль-С. Кто создавал и с какой целью — и сразу видать, что для профи, а что — для начинающего. Дык для начинающего нужно еще добавить родной язык — ему легче будет осваивать алгоритмизацию (что является основным камнем преткновения — а вовсе не лексика языка).

А в чем тогда смысл обучения начинающих таким образом чтобы их знания стали "плохими" когда они дорастут до профи?
Уж лучше "тяжело в учении, легко в бою", чем наоборот. Только уровень абстракции надо подбирать так чтобы обучающиеся занимались написанием программ, а не борьбой с менеджерами памяти и особенностями ОС.
Re[9]: Так ли хороша математическая нотация?
От: LaptevVV Россия  
Дата: 07.08.11 14:34
Оценка:
Здравствуйте, gandjustas, Вы писали:

LVV>>>>Сравнивали

G>>>А количество?
LVV>>Группа — 30 человек.
G>То есть преподаватель один? Выборка нерепрезентативна.
F мы и не собирались Заниматься наукой, а стремились получить опыт.
LVV>>1. пока a > 10 делать ... конец пока; — это учить не надо. Это читается и понятно без специальной учебы. Причем, даже третьекласснику.
G>Читаться может и читается, но не понимается смысла этого. В этом и разница естественного языка и формальной нотации.
Еще как понимается — см. выше "опыт"...
LVV>>2. Не приведете линки на исследования по "соотношение сигнала\шума"?
G>Я их не собираю, но можно провести простой эксперимент реализовав на pascal и c примерно одинковый функционал посчитать количество символов. В pascal будет больше за счет begin\end, procedure\function и array of.
То есть исследований тоже нет...
LVV>>Многолетний и многообразный опыт программирования на разных языках и у разных людей показывает: то, что начинающему хорошо, опытному — плохо. Для этого достаточно посмотреть на пару: паскаль-С. Кто создавал и с какой целью — и сразу видать, что для профи, а что — для начинающего. Дык для начинающего нужно еще добавить родной язык — ему легче будет осваивать алгоритмизацию (что является основным камнем преткновения — а вовсе не лексика языка).
G>А в чем тогда смысл обучения начинающих таким образом чтобы их знания стали "плохими" когда они дорастут до профи?
G>Уж лучше "тяжело в учении, легко в бою", чем наоборот. Только уровень абстракции надо подбирать так чтобы обучающиеся занимались написанием программ, а не борьбой с менеджерами памяти и особенностями ОС.
Вы забываете, что не язык является целью обучения, а программирование. Язык только инструмент обучения. Летчиков учат на кукурузнике, а летают они на совсем других самолетах. Водители новички и водители профи — ездят на разных машинах. Музыканты-новички и музыканты-профи byhf.n на разных инструментах. Спортсмены-новички и спортсмены-профи — просто в разных кроссовках бегают, не говоря уже о всяком другом инвентаре (например, стрелки или велосипедисты).
Так что инструменты для обучения и инструменты для профессиональной деятельности во всех сферах деятельности — РАЗНЫЕ!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[23]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 07.08.11 15:29
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Что касается тестирования, то там все тривиально. Если метод черный ящик, то для того, чтобы доказать его правильность, надо подать на вход всевозможные допустимые комбинации аргументов и проверить его результат для каждого случая. Практически это можно сделать только в случае, когда множество допустимых комбинаций аргументов конечно и у нас достаточно вычислительных ресурсов. Так что в большинстве практических задач тестирование не может гарантировать нам правильной работы. Все, ответ на вопрос дан, математик, откланявшись, уходит.


Т.е. для тестирования черного ящика математика совершенно бесполезна.
Re[23]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 07.08.11 15:43
Оценка:
Здравствуйте, Mystic, Вы писали:

U>>И таких ТЗ в реальности никто не видел, т.к. написание такого ТЗ будет более трудозатратно, чем решение задачи.

M>Ты путаешь полноту с формальностью.

Проблемы и с полнотой, и с формальностью. Требование — интерфейс программы должен быть удобным для пользователя. Где здесь формальность?

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


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

M>Что касается тестирования, то там все тривиально. Если метод черный ящик, то для того, чтобы доказать его правильность, надо подать на вход всевозможные допустимые комбинации аргументов и проверить его результат для каждого случая. Практически это можно сделать только в случае, когда множество допустимых комбинаций аргументов конечно и у нас достаточно вычислительных ресурсов. Так что в большинстве практических задач тестирование не может гарантировать нам правильной работы. Все, ответ на вопрос дан, математик, откланявшись, уходит.


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

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


Если доступны исходные коды, то метод можно считать белым ящиком. Вперед, докажи математически для произвольного кода его правильность.

Дело не в белости, и черности ящика, а в сути задачи, если суть математическая, то математика может быть полезна и для решения задачи и для проверки результата, если нет, то от математики толку никакого.
Re[17]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 07.08.11 15:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

U>>Вот мы разрабатываем пользовательский интерфейс приложения. Где мы здесь используем математику?

S>Вообще-то — много где. Например, у нас есть статистические данные про то, какие сценарии пользователи используют чаще, какие — реже.
S>Например, при проектировании интерфейса мы используем математику конечных автоматов для описания поведения UI.

Я и не отрицаю, что математика как инструмент полезна в очень многих задачах программирования. Но в многих не значит во всех. Математика это один из инструментов, а не само программирование.

S>А тут мы вообще ничего, кроме математики, не используем. А вы, простите, как-то по-другому что ли это делаете?


При разбиении задачи на сущности никакой математикой я не пользуюсь. Это задача решаемая образным мышлением. Например, в задаче есть сущность водитель. Ты надеюсь не будешь утверждать, что это математическая сущность?

S>У Кнута, к примеру, очень подробно расписан матаппарат, который позволяет получить оценки производительности для тех или иных алгоритмов. А применимость алгоритмов напрямую зависит от использованных структур данных.


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

S>У вас, мне кажется, какое-то неверное понимание того, что такое математика. Весь "ряд приёмов", предоставляемый математикой — это формализация. Как только вы что-то формализовали и построили абстрактную модель — вы получили математику.


Мышление в общем и программирование в частности происходит в рамках образной модели. А математика лишь инструмент, который при необходимости позволяет образную модель упростить до абстрактной.
Re[24]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 07.08.11 19:16
Оценка:
Здравствуйте, Undying, Вы писали:

U>Т.е. для тестирования черного ящика математика совершенно бесполезна.


Нет, это означает, что любое тестирование не может гарантировать корректность работы.
Re[24]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 07.08.11 19:28
Оценка:
Здравствуйте, Undying, Вы писали:

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


U>>>И таких ТЗ в реальности никто не видел, т.к. написание такого ТЗ будет более трудозатратно, чем решение задачи.

M>>Ты путаешь полноту с формальностью.

U>Проблемы и с полнотой, и с формальностью. Требование — интерфейс программы должен быть удобным для пользователя. Где здесь формальность?

Это пример неформального определения, но я его в ТЗ не встречал Варианты: удобство интерфейса на усмотрение разработчика.

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


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


Программированние это написание программ. Что можно сделать только при формализации требований. Более того, любой код также является формальным описанием некоторых требований. Есть еще анализ требований, что не относится к программированию, задача которого и состоит в изложении требований на формальном языке.

U>Т.е. для тестирования черного ящика математика совершенно бесполезна. Для тестирования белого ящика полезна лишь в некоторых частных случаях. Т.е. опять же математика лишь инструмент, который полезен в ряде частных случаев.


Откуда это следует?

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


U>Если доступны исходные коды, то метод можно считать белым ящиком. Вперед, докажи математически для произвольного кода его правильность.


Произвольный код не обязательно будет правильным, исходное высказывание неверно.

U>Дело не в белости, и черности ящика, а в сути задачи, если суть математическая, то математика может быть полезна и для решения задачи и для проверки результата, если нет, то от математики толку никакого.


Ничего не понял, что такое математическая суть? Как узнать, суть математическая или нет?
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 08.08.11 10:43
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Паттерны были придуманы для того, чтобы программисты могли объяснять свои решения.


Паттерн бридж позволяет заменить умножение числа вариантов на сложение числа вариантов. Ты серьезно считаешь, что это ерунда, нужная лишь для того, чтобы "программисты могли объяснять свои решения"?
Re[5]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 08.08.11 11:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Традиционно, минимальный матаппарат в любом программировании — это описание грамматики языка.


Формально, да, язык программирования можно считать разновидностью математического языка. Но практически это не имеет смысла, т.к. математический формализм в данном случае не дает никаких дополнительных возможностей и лишь усложняет понимание. Поэтому 99% программистов сильно удивятся, если им сказать, что они программируют на математических языках.
Re[13]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 08.08.11 16:22
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Я разве называл что-то ерундой? Ты уверен, что программист не знающий о существовании паттерна бридж будет обречен на умножение числа вариантов?


Не знающий названия паттерна или сути паттерна? Если сути, то будет обречен, если названия, то код это писать никак не мешает.

Z>Главный бенефит в том, что добавив суффикс Bridge к классу он ясно дал понять его назначение без огромных UML диаграмм с кучей комментариев.


Ужас какой. Ни разу не добавлял суффиксы паттернов к классам и не видел, чтобы этого делали другие. Зачем этот мусор нужен в коде? Это какая-то реинкарнация венгерской нотации получается.

Z>Ты серьезно считаешь, что банда четырех что-то изобрела? Они сделали классификацию часто применяемых приемов программирования на некоторых языках.


Где я говорил о банде четырех и классификации? Речь шла о одном из приемов борьбы со сложностью. Главное в приеме суть, а не кто его первый назвал и классифицировал. Это дело десятое.
Re[14]: Паттерн Стратегия
От: Undying Россия  
Дата: 08.08.11 16:58
Оценка:
Здравствуйте, gandjustas, Вы писали:

Q>>Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.

G>Вообще-то нет. "Состояние" обычно имеет ссылку на объект, который обладает этим состоянием, а стратегия — нет.

Состояние это частный случай стратегии. Собственно я не случайно перечислил всего лишь четыре паттерна, т.к. остальные паттерны это в лучшем случае производное от них, а в худшем и вовсе антипаттерны, как декоратор к примеру.
Re[17]: Так ли хороша математическая нотация?
От: Шахтер Интернет  
Дата: 08.08.11 17:30
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


U>>Вот мы разрабатываем пользовательский интерфейс приложения. Где мы здесь используем математику?

S>Вообще-то — много где. Например, у нас есть статистические данные про то, какие сценарии пользователи используют чаще, какие — реже.
S>Например, при проектировании интерфейса мы используем математику конечных автоматов для описания поведения UI.

U>>Вот мы думаем какая структура данных хорошо подходит для решения задачи. Где мы здесь используем математику?

S>А тут мы вообще ничего, кроме математики, не используем. У Кнута, к примеру, очень подробно расписан матаппарат, который позволяет получить оценки производительности для тех или иных алгоритмов. А применимость алгоритмов напрямую зависит от использованных структур данных. А вы, простите, как-то по-другому что ли это делаете?

U>>Для того, чтобы найти решение нужно думать. Математика может лишь предоставить ряд приемов, которые в некоторых случаях упрощают процесс мышления, но сам процесс мышления и соответственно поиска решения много сложнее, чем математика.


S>У вас, мне кажется, какое-то неверное понимание того, что такое математика. Весь "ряд приёмов", предоставляемый математикой — это формализация. Как только вы что-то формализовали и построили абстрактную модель — вы получили математику.


S>Просто та математика, которую преподают на первых двух курсах, выглядит какой-то отдалённой от практики из-за отсутствия внятных объяснений этого перехода. Ну, к примеру, все понимают, что Быстрое Преобразование Фурье построено на алгебре полей Галуа. А вот на чём построена модель наследования в C++, понимают не все — потому что нет такого курса "математические основы ООП". Это не значит, что нет математических основ ООП.


Просветите, что такое "алгебра полей Галуа", и как она связана с быстрым преобразованием Фурье.
А таже что за таинственные "математические основы ООП".
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[7]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 03:37
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В этом, в частности, и есть проблема. К примеру, многие гражданские инженеры понимают, что они пользуются математикой. Поэтому мосты, скажем, падают редко. А большинство программистов — не понимают, что пользуются математикой. Поэтому их программы падают часто

S>Это не означает, что в самом программировании мало математики. Это означает, что то, чем занимаются программисты, зачастую похоже на настояшее программирование только издалека.

Доказательства и примеры будут? Или только аналогии?
Re[19]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 03:47
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В задаче — нет. Но в формализации задачи водитель теряет все лишние свойства. В зависимости от того, что за задача решается, водитель становится математическим объектом, обладающим некоторыми свойствами. А дальше начинается математика в полный рост. Рассуждения типа "водитель — человек, у человека есть фамилия, значит у водителя есть фамилия" — в чистом виде математика. В программе это выражается, например, как class Driver: IPerson.


Что нам дает то, что запись class Driver : IPerson мы начали воспринимать как математическую сущность? Пару примитивных и интуитивно понятных без всякой математики преобразований? Или что-то по существенней? Если второе, то, пожалуйста, примеры.

U>>Т.е. опять же речь о математике как инструменте, который позволяет в ряде случаев оценить производительность.

S>Речь идёт о том, что вы используете ровно этот инструмент, чтобы выбрать между списком, массивом, и деревом.

Например, если есть фиксированная последовательность, то я использую массив, список и дерево я даже не рассматриваю. Где я здесь использовал математику для выбора?

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

S>В программе не остаётся никакой образной модели. Остаётся только абстрактная модель.


И что нам дает? Все равно для того, чтобы понять что делает программа и правильно ли это делает нужно выполнить обратное преобразование из абстрактной модели в образную.
Re[14]: Так ли хороша математическая нотация?
От: Ziaw Россия  
Дата: 09.08.11 04:15
Оценка:
Здравствуйте, Undying, Вы писали:

Z>>Я разве называл что-то ерундой? Ты уверен, что программист не знающий о существовании паттерна бридж будет обречен на умножение числа вариантов?


U>Не знающий названия паттерна или сути паттерна? Если сути, то будет обречен, если названия, то код это писать никак не мешает.


Названия.

Z>>Главный бенефит в том, что добавив суффикс Bridge к классу он ясно дал понять его назначение без огромных UML диаграмм с кучей комментариев.


U>Ужас какой. Ни разу не добавлял суффиксы паттернов к классам и не видел, чтобы этого делали другие. Зачем этот мусор нужен в коде? Это какая-то реинкарнация венгерской нотации получается.


Зависит от паттерна, с бриджем я дал маху конечно, но суффиксы Proxy, Visitor, Factory, Adapter общеупотребимы и не являются венгерской нотацией, это самое четкое описание их функционала.

U>Где я говорил о банде четырех и классификации? Речь шла о одном из приемов борьбы со сложностью. Главное в приеме суть, а не кто его первый назвал и классифицировал. Это дело десятое.


Ну так это частные приемы в частных языках. К программированию вообще они имеют мало отношения. На универсальную нотацию не тянут.
Re[14]: Так ли хороша математическая нотация?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 09.08.11 05:58
Оценка:
Здравствуйте, Undying, Вы писали:

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


S>>На всякий случай напомню, что, к примеру, наследование и перегрузка виртуальных методов с VMT прекрасно реализуется как паттерн на языке без поддержки наследования (скажем, C).


U>Это не ерунда, это антипаттерн. Наследование от реализации бывает оправданным крайне редко.

Уточню, что в С нет вообще никакого наследования, и в частности, интерфейсов там тоже нет. Соответственно создание полиморфного поведения объекта без ветвлений (if/switch) требует ручной эмуляции VMT.

S>>Но в современных ОО-языках такого паттерна не нужно, т.к. он уже встроен на уровне синтаксиса и компилятора.

S>>Это не значит, что паттерн "перегрузка метода" — это ерунда. Как раз наоборот.

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

Прием не девается, девается частота его использования. Программируя на C#, ты решаешь что нужен интерфейс и его реализация. Он в языке есть, считай что бесплатен (дешевле реализация разве что в F# — Object expressions). А в C — придется создавать тип для хранения указателей на функции, typedef-ы для функций (с явной передачей this), писать код по заполнению VMT для каждой "реализации", беспокоиться о том что бы передавать нужную VMT вместе с соответствующими данными, если структура данных не предполагает хранения ссылки на VMT. Подумаешь, повзвешиваешь, и окажется что средства зачастую убивают цель.
Re: Так ли хороша математическая нотация?
От: gegMOPO4  
Дата: 09.08.11 07:29
Оценка:
Здравствуйте, Chrome, Вы писали:
C>Вопрос в том, стоит ли близость к математической нотации рассматривать как преимущество синтаксиса языка программирования.

Разумеется. Об этом свидетельствует успех Фортрана.
Re[15]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 07:49
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

S>Без математики подобные трансформации делать нельзя. Из-за этого возникает понятие abstraction penalty и прочие предрассудки относительно дизайнерских решений, выраженных в "образных" понятиях.

Напоминаю, топик-стартер говорил о синтаксисе языка программирования. Т.е. речь идет о преобразовании условия задачи в программный код и применимости математики к этому преобразованию. Зачем ты перескочил на преобразовании программного кода в машинный код? Мы это не обсуждаем.
Re[9]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 08:12
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Вот, скажем, протокол HTTP. Многие программисты знают о математике внутри этого протокола — скажем, что GET считается безопасным методом, а DELETE — идемпотентным.


Что-то ты сам путаешься в терминах:

Согласно стандарту HTTP, запросы типа GET считаются идемпотентными — многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET.


И причем здесь математика? Обычный хак, т.е. решение корректное использование которого неочевидно и возможно только после прочтения документации. Прочтение документации уже стало математическим актом?
Re[10]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 09.08.11 08:35
Оценка:
Здравствуйте, Undying, Вы писали:

U>Кстати, за что не люблю математику это за ее способность делать простое сложным. Для объяснения механизма тут достаточно одной фразы: при DELETE и POST происходит сброс кэшей, при GET — нет. Никакой математики и заумных терминов тут даром не надо.


Любое обобщение это и усложнение и универсализация (повторное использование).
Re[7]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 09:24
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В этом, в частности, и есть проблема. К примеру, многие гражданские инженеры понимают, что они пользуются математикой. Поэтому мосты, скажем, падают редко. А большинство программистов — не понимают, что пользуются математикой. Поэтому их программы падают часто


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

В строительстве мостов набор влияющих факторов почти не меняется от моста к мосту, соответственно давно известен. Поэтому математическим преобразованием этих факторов и умножением полученного результата на три можно добиться высокой надежности. В программировании этот подход не работает, т.к. у каждой программы набор влияющих факторов свой.
Re[15]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 09:47
Оценка:
Здравствуйте, samius, Вы писали:

S>Уточню, что в С нет вообще никакого наследования, и в частности, интерфейсов там тоже нет. Соответственно создание полиморфного поведения объекта без ветвлений (if/switch) требует ручной эмуляции VMT.


Суть полиморфизма вовсе не в отказе от ветвлений. А в том, что код выбора нужного метода для текущего состояния пишется один раз, а не дублируется при каждом вызове. И на C это делается без особых проблем. Проблема C в другом, он позволяет инкапсулировать выбор метода, но не позволяет инкапсулировать данные, т.е. в рамках C мы вынуждены передавать методу инкапсулирующему выбор жирную структуру данных, которая должна быть способна хранить данные и для первой реализации метода, и для второй, и для десятой.
Re[16]: Так ли хороша математическая нотация?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 09.08.11 10:10
Оценка:
Здравствуйте, Undying, Вы писали:

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


S>>Уточню, что в С нет вообще никакого наследования, и в частности, интерфейсов там тоже нет. Соответственно создание полиморфного поведения объекта без ветвлений (if/switch) требует ручной эмуляции VMT.


U>Суть полиморфизма вовсе не в отказе от ветвлений. А в том, что код выбора нужного метода для текущего состояния пишется один раз, а не дублируется при каждом вызове.

В языках с поддержкой ad-hoc полиморфизма код выбора нужного метода не пишется вообще ни разу (если не вспоминать о множественной диспетчеризации).

U>И на C это делается без особых проблем.

Особых нет, но вообще они есть. Иначе нафига бы нужна была поддержка в других языках.

U>Проблема C в другом, он позволяет инкапсулировать выбор метода, но не позволяет инкапсулировать данные, т.е. в рамках C мы вынуждены передавать методу инкапсулирующему выбор жирную структуру данных, которая должна быть способна хранить данные и для первой реализации метода, и для второй, и для десятой.

SelectObject видел? Никаких жирных структур с данными для десяти реализаций. Точнее, как оно там на самом деле — я не знаю, но барьер абстракции позволяет спокойно использовать специальные структуры для каждого случая, т.е. инкапсулировать данные.
Re[8]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 09.08.11 10:29
Оценка:
Здравствуйте, Undying, Вы писали:

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


S>>В этом, в частности, и есть проблема. К примеру, многие гражданские инженеры понимают, что они пользуются математикой. Поэтому мосты, скажем, падают редко. А большинство программистов — не понимают, что пользуются математикой. Поэтому их программы падают часто


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


Если это софт для какой-нить АЭС, то тебя вполне могут попросить еще и доказать коректность используемых алгоритмов/кода, чтобы гарантировать надежность и правильность. Ну а так это извечное соотнощение цена/качество, есть коррекность некритична, то и тесты подойдут.

Опять же, всякие системы для проверки корректности многопоточных алгоритмов...
Re[21]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 14:00
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Вы — не использовали. А зря. Одной фиксированности последовательности недостаточно для того, чтобы выбрать массив. Нужно ещё учитывать то, какие операции будут выполняться. К примеру, если часто выполняется поиск в этой коллекции, то дерево всё ещё может оказаться эффективнее массива.


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

S>Это нам даёт возможность выполнять рассуждения, не вдаваясь в то, что именно делает программа. Например, можно доказать некоторые вещи — типа type safety, проверяемой верификатором в дотнете.


Ты что доказываешь? То что все программирование это математика? Тогда покажи каким образом математика позволяет 1) записать условие произвольной задачи программирования 2) преобразовать полученное условие задачи в программный код 3) убедиться, что полученный программный код решает поставленную задачу.

Корректность типов это необходимое, но и близко недостаточное условие для работоспособности программы.
Re[19]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 14:04
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Совершенно верно. Вы выполняете преобразование реальных сущностей в абстрактные в рамках прикладного программирования. А в дальнейшем работаете исключительно математикой. Просто вы не всегда это осознаёте.


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

S>Осознание математичности программирования помогает писать более хорошие программы. Например, понимание отличий stateless от stateful на математическом, а не образном уровне, помогает делать осознанный выбор между ними и избегать "гибридных" реализаций, обладающих недостатками обоих вариантов.


Поподробнее можно. В чем проблема гибридных реализаций?
Re[15]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 09.08.11 14:14
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Ну так это частные приемы в частных языках. К программированию вообще они имеют мало отношения. На универсальную нотацию не тянут.


Упаси господь, где я предлагал паттерны программирования как универсальную нотацию? Мне просто было интересно как паттерны записываются на математическом языке. Но потом меня просветили, что любой язык программирования это математический язык и что те кто говорят о необходимости близости синтаксиса языка программирования к математической нотации не понимают что относится к математике, а что нет.
Re[10]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 15:10
Оценка:
Здравствуйте, Undying, Вы писали:

U>

U>Согласно стандарту HTTP, запросы типа GET считаются идемпотентными — многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET.

Safe является более сильной гарантией, чем идемпотентность.

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

Ну так всю математику можно считать хаком. Вот то же БПФ — это же хак! Корректное использование свойств комплексной экспоненты в алгоритме кули-тьюки невозможно без прочтения "документации".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[22]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 15:20
Оценка:
Здравствуйте, Undying, Вы писали:

U>В первую очередь нам нужно понять, что в задаче есть сущность, которую следует представить как набор данных и что в этом наборе данных нужно производить поиск по таким-то параметрам. На этом этапе математика нам ничем помочь не может.

Совершенно верно.
U>После этого, да, при выборе подходящего контейнера под набор данных в том числе используется и математика. Т.е. математика это обычный инструмент, как и любой другой инструмент незаменимый в некоторых случаях и совершенно не нужный в других.
А кто-то претендовал на то, что этот инструмент — необычный?

U>Ты что доказываешь? То что все программирование это математика? Тогда покажи каким образом математика позволяет 1) записать условие произвольной задачи программирования 2) преобразовать полученное условие задачи в программный код 3) убедиться, что полученный программный код решает поставленную задачу.

Ну, в общем-то, все современные языки программирования — они именно про это. Пишешь условия на С#, компилятор и джит преобразуют их в машинный код, который в большинстве случаев (кроме багов в компиляторе и джите) решает ровно поставленную задачу. Чем большую часть условия задачи вы можете описать формально, тем больше шансов на строгое доказательство корректности решения. См. например generic collections по сравнению со старым List.

U>Корректность типов это необходимое, но и близко недостаточное условие для работоспособности программы.

Корректность типов — это то, что можно проверить в условиях задачи, записанных на языке программирования.
Поясню на примере из другой области: артиллерист наводит орудие по таблицам, рассчитанным при помощи математики. Это не означает, что математика объяснит ему ещё и как заряжать снаряд и как сделать так, чтобы расчёт не разбежался. Но без математики его шансы попасть в противника совсем никакие.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[20]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 15:21
Оценка:
Здравствуйте, Undying, Вы писали:

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

Первое — нельзя. Второе — можно.

U>Поподробнее можно. В чем проблема гибридных реализаций?

У них плохая производительность stateless сочетается с плохой масштабируемостью stateful.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[19]: Так ли хороша математическая нотация?
От: Шахтер Интернет  
Дата: 09.08.11 20:44
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Шахтер, Вы писали:


Ш>>Просветите, что такое "алгебра полей Галуа", и как она связана с быстрым преобразованием Фурье.

S>1. http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5

Я знаю, что такое поле Галуа, я спросил, что такое "алгебра полей Галуа".

Правильный ответ -- это произвольная комбинация слов.

S>2. http://ru.wikipedia.org/wiki/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5:

S>Алгоритм быстрого преобразования Фурье применим к любым коммутативным ассоциативным кольцам с единицей.

Я спрашивал, какое отношение БПФ имеет к полям Галуа.

Правильный ответ -- никакого.

Ш>>А таже что за таинственные "математические основы ООП".

S>Например, теория классификации.

Совсем тяжелый случай. ООП не имеет каких-то математических основ. Совсем.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[20]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.11 23:49
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Я знаю, что такое поле Галуа, я спросил, что такое "алгебра полей Галуа".

Ш>Правильный ответ -- это произвольная комбинация слов.
Гм. Я, возможно, как-то неправильно употребляю термины. Но с моей, непрофессиональной точки зрения, поле Галуа — это алгебраическая система. Именно але

Ш>Я спрашивал, какое отношение БПФ имеет к полям Галуа.

Ш>Правильный ответ -- никакого.
Почему же? Если верить википедии, Many FFT algorithms only depend on the fact that is an Nth primitive root of unity, and thus can be applied to analogous transforms over any finite field. То есть их можно применять к аналогичным преобразованиям над произвольными полями Галуа.

Ш>Совсем тяжелый случай. ООП не имеет каких-то математических основ. Совсем.

А вы пробовали читать по ссылке?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: Так ли хороша математическая нотация?
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.11 07:25
Оценка:
Z>>Ну так это частные приемы в частных языках. К программированию вообще они имеют мало отношения. На универсальную нотацию не тянут.

U>Упаси господь, где я предлагал паттерны программирования как универсальную нотацию? Мне просто было интересно как паттерны записываются на математическом языке.


Вообще-то на это ответ уже был
Автор: Mamut
Дата: 05.08.11


dmitriid.comGitHubLinkedIn
Re[11]: Так ли хороша математическая нотация?
От: Undying Россия  
Дата: 10.08.11 09:47
Оценка:
Здравствуйте, Sinclair, Вы писали:

U>>Кстати, за что не люблю математику это за ее способность делать простое сложным. Для объяснения механизма тут достаточно одной фразы: при DELETE и POST происходит сброс кэшей, при GET — нет. Никакой математики и заумных терминов тут даром не надо.

S>А я люблю — за то, что она делает смутное понятным. В приведённой формулировке фраза не является корректной. И даже если бы она была корректной, то она никак не помогает писать правильные приложения — потому что непонятно, нужно ли "сбрасывать кэш" или нет в каждом конкретном случае. Именно из таких вот "народных примет" и получаются неэффективные и глючащие веб-приложения.

У тебя с пониманием русского языка как? Как после "происходит сброс кэша" может быть нужен "ручной сброс кэша"?
Re[12]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.11 16:49
Оценка:
Здравствуйте, Undying, Вы писали:

U>У тебя с пониманием русского языка как? Как после "происходит сброс кэша" может быть нужен "ручной сброс кэша"?

У меня — нормально. У вас вот, похоже, какие-то затруднения с восприятием. Слова "ручной" в моём сообщении нет и не было.
Поясню на всякий случай: в задачу не входит понятие кэша. В задачу входит какая-то прикладная вещь, типа построение сервиса для аренды недвижимости. И вот оказывается, что если писать сервис так, чтобы используемые методы HTTP соответствовали природе выполняемых запросов, то всё волшебным образом работает, и работает эффективно.

Не надо думать "как бы мне так сбросить кэш при выполнении запроса ConfirmApartmentBooking". Этот вопрос уводит нас в сторону от корректной и надёжной реализации. Надо думать "является ли запрос ConfirmApartmentBooking идемпотентным или безопасным"? И выбирать метод исходя из этого.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Так ли хороша математическая нотация?
От: Шахтер Интернет  
Дата: 10.08.11 18:43
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Шахтер, Вы писали:


Ш>>Я знаю, что такое поле Галуа, я спросил, что такое "алгебра полей Галуа".

Ш>>Правильный ответ -- это произвольная комбинация слов.
S>Гм. Я, возможно, как-то неправильно употребляю термины. Но с моей, непрофессиональной точки зрения, поле Галуа — это алгебраическая система. Именно але

Ладно, спишем это на плохой французский.

Ш>>Я спрашивал, какое отношение БПФ имеет к полям Галуа.

Ш>>Правильный ответ -- никакого.
S>Почему же? Если верить википедии, Many FFT algorithms only depend on the fact that is an Nth primitive root of unity, and thus can be applied to analogous transforms over any finite field. То есть их можно применять к аналогичным преобразованиям над произвольными полями Галуа.

Это разные вещи.
Сам по себе алгоритм (а лучше сказать алгоритмы, потому что их целое семейство) FFT никакой связи с полями Галуа не имеет.
Нет никаких особых свойств полей Галуа, которые приводят к существованию этого алгоритма. Ни его формулировка, ни доказательство его свойств никоим образом не используют теорию полей Галуа.
То что применять этот алгоритм можно не только к комплексным числам, а и в гораздо более общей ситуации (но опять же, далеко не всегда, не во всяком поле Галуа можно сделать преобразование Фурье, только при определённых условиях) вовсе не означает что цитирую, "Быстрое Преобразование Фурье построено на алгебре полей Галуа".

Ш>>Совсем тяжелый случай. ООП не имеет каких-то математических основ. Совсем.

S>А вы пробовали читать по ссылке?

ООП -- это набор принципов, в соответствии с которыми создаются программы. Этот набор принципов не был выведен из некоторой предшествующей математической теории, он был сформулирован и реализован программистами на практике. Так что никаких математических основ ООП не имеет.

Вот простой пример для контраста. В современной радиосвязи широко применяется технология OFDM. Эта технология имеет математическую основу -- FFT. Т.е. сначала бы придуман алгоритм, потом на его основе был придуман способ модуляции сигнала.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[22]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.11 19:28
Оценка:
Здравствуйте, Шахтер, Вы писали:

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


Ш>Это разные вещи.

Ш>Сам по себе алгоритм (а лучше сказать алгоритмы, потому что их целое семейство) FFT никакой связи с полями Галуа не имеет.
Ш>Нет никаких особых свойств полей Галуа, которые приводят к существованию этого алгоритма. Ни его формулировка, ни доказательство его свойств никоим образом не используют теорию полей Галуа.
Ну хорошо. Расскажите тогда своими словами, на каких свойствах каких алгебраических систем построен алгоритм Кули-Тьюки.

Ш>То что применять этот алгоритм можно не только к комплексным числам, а и в гораздо более общей ситуации (но опять же, далеко не всегда, не во всяком поле Галуа можно сделать преобразование Фурье, только при определённых условиях) вовсе не означает что цитирую, "Быстрое Преобразование Фурье построено на алгебре полей Галуа".


Ш>Вот простой пример для контраста. В современной радиосвязи широко применяется технология OFDM. Эта технология имеет математическую основу -- FFT. Т.е. сначала бы придуман алгоритм, потом на его основе был придуман способ модуляции сигнала.


А вам обязательно нужно, чтобы сначала были основы, а потом уже из них выводили теорию? Подвести математическое обоснование под, казалось бы, интуитивно понятные вещи, не считается?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Так ли хороша математическая нотация?
От: Паблик Морозов  
Дата: 11.08.11 05:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Главное требование к синтаксису языка — легкая читаемость. А она, в свою очередь, сильно зависит от традиций. И так уж сложилось, что подавляющее число программистов лучше всего воспринимают c/паскаль подобный синтаксис. Вот соответствие этому синтаксису, имхо, как раз и можно расценивать как преимущество.


Подавляющее большинство программистов не лучше воспринимают c/паскаль подобный синтаксис, подавляющее большинство ничего не знают, кроме си/паскаля. Это немного разные вещи.
Re[3]: Так ли хороша математическая нотация?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.08.11 08:52
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Подавляющее большинство программистов не лучше воспринимают c/паскаль подобный синтаксис, подавляющее большинство ничего не знают, кроме си/паскаля. Это немного разные вещи.


Они может и разные, но в контексте разговора разницы нет.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[17]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 11.08.11 20:38
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Образно мыслящей общественности потребовалось пятнадцать лет интенсивной половой жизни с XML-RPC, SOAP и прочими противоестественными архитектурами.

/Offtopic: хочу взять бензопилу и разрезать нафиг всех пропонентов REST на кусочки не больше одного кубического сантиметра.
Sapienti sat!
Re[10]: Так ли хороша математическая нотация?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 12.08.11 09:09
Оценка:
Здравствуйте, AndrewVK, Вы писали:

M>>Если это софт для какой-нить АЭС


AVK>Я все ждал, когда ж подтянутся программисты АЭС.


Это образно, но доказетельство корректности алгоритмов иногда таки требовалось.
Re[19]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 12:41
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>/Offtopic: хочу взять бензопилу и разрезать нафиг всех пропонентов REST на кусочки не больше одного кубического сантиметра.

S>А что конкретно вас беспокоит в REST?
Многое.
1) Внешний мир не идемпотентен.
2) Нет возможности нормально делать диалоги — их приходится всё время эмулировать. Криво. Это самое бесящее.
3) Технические ограничения GET-запросов, которыми предлагается делать идемпотентные действия. POST'ы спасают, но по идеологии REST они должны использоваться для действий.
4) Caching is overrated.
5) При использовании версированного API — проблемы с устареванием данных.
Sapienti sat!
Re[20]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.11 14:48
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>Многое.

C>1) Внешний мир не идемпотентен.
Этого не понял.
C>2) Нет возможности нормально делать диалоги — их приходится всё время эмулировать. Криво. Это самое бесящее.
Не очень понятно, что такое "диалоги". Вас интересует stateful сессия? Да, её приходится эмулировать.
Это оборотная сторона REST. Зато эти сессии появляются только там, где необходимо, а не там, где случайно получилось.

C>3) Технические ограничения GET-запросов, которыми предлагается делать идемпотентные действия. POST'ы спасают, но по идеологии REST они должны использоваться для действий.

Да, это кагбэ такая неприличная подробность, о которой не принято говорить. Но она вызвана не природой REST, а косяками конкретных реализаций протокола HTTP. Если вы пишете свой сервер, то особых ограничений в GET-запросах нет: хоть видеофайл в строке передавай.
Для более реалистичных сценариев можно использовать идемпотентный PUT.
C>4) Caching is overrated.
Когда как.
C>5) При использовании версированного API — проблемы с устареванием данных.
Не очень понятно, как проблемы с устареванием данных связаны с API. API с версионированием всего лишь позволяет обнаружить факт устаревания.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 16:14
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>2) Нет возможности нормально делать диалоги — их приходится всё время эмулировать. Криво. Это самое бесящее.

S>Не очень понятно, что такое "диалоги". Вас интересует stateful сессия? Да, её приходится эмулировать.
S>Это оборотная сторона REST. Зато эти сессии появляются только там, где необходимо, а не там, где случайно получилось.
Вот ситуация — надо создать документ. В одном экземпляре.

Попытка номер 1 — POST-метод. Не работает — если теряем соединение после окончания метода, то у нас потеря документа.
Попытка номер 2 — POST-метод с уникальным GUID'ом для tracking'а, передаваемым в запросе. Не работает из-за вопросов безопасности.
Попытка номер 3 — разбиваем на два этапа: получение уникального GUID'а первым запросом, а потом использование этого GUID'а во втором.

Получается криво.

C>>3) Технические ограничения GET-запросов, которыми предлагается делать идемпотентные действия. POST'ы спасают, но по идеологии REST они должны использоваться для действий.

S>Да, это кагбэ такая неприличная подробность, о которой не принято говорить. Но она вызвана не природой REST, а косяками конкретных реализаций протокола HTTP. Если вы пишете свой сервер, то особых ограничений в GET-запросах нет: хоть видеофайл в строке передавай.
S>Для более реалистичных сценариев можно использовать идемпотентный PUT.
А ещё из практических встреч — проблемы с кодировками запросов.

C>>5) При использовании версированного API — проблемы с устареванием данных.

S>Не очень понятно, как проблемы с устареванием данных связаны с API. API с версионированием всего лишь позволяет обнаружить факт устаревания.
Ну и что дальше делать? Получается, что надо темпоральную базу иметь чуть ли не для всех доменных объектов при богатом REST-API. Или кидать в таком случае исключения, что не есть хорошо — блокировок нет, а сценарии с оптимистической блокировкой без атомарности получаются жуткими.

Добавлю ещё:
6) Отсутствие само-описания типа WSDL для SOAP.
7) Нет формальной спецификации — каждый понимает REST по-своему. Из-за этого, клиент практически для любого сервиса приходится писать после долгого вкуривания документации и экспериментов. Для SOAP уже всё почти plug&play — я могу взять WSDL, по ней сгенерировать стабы и использовать в почти любом языке.
8) Проблема с передачей сложных данных (даже банальный hash map нормально не передаётся) и т.д. Я понимаю, что сразу в таких случаях кричат: "JSON в POST/PUT", но в чём тогда отличие от SOAP?

Офигительно ограниченное API.
Sapienti sat!
Re[22]: Так ли хороша математическая нотация?
От: Курилка Россия http://kirya.narod.ru/
Дата: 12.08.11 17:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Добавлю ещё:

C>6) Отсутствие само-описания типа WSDL для SOAP.
А WADL? Оно, конечно, не широкоупотребимо, но как вариант...
Re[23]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 17:21
Оценка:
Здравствуйте, Курилка, Вы писали:

C>>Добавлю ещё:

C>>6) Отсутствие само-описания типа WSDL для SOAP.
К>А WADL? Оно, конечно, не широкоупотребимо, но как вариант...
Это даже не стандарт ещё. Для JSON до сих пор тоже аналога XSD нормального нет — есть json-schema, но опять же, поддержка нулевая.
Sapienti sat!
Re[22]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.11 19:49
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Попытка номер 1 — POST-метод. Не работает — если теряем соединение после окончания метода, то у нас потеря документа.

C>Попытка номер 2 — POST-метод с уникальным GUID'ом для tracking'а, передаваемым в запросе. Не работает из-за вопросов безопасности.
C>Попытка номер 3 — разбиваем на два этапа: получение уникального GUID'а первым запросом, а потом использование этого GUID'а во втором.
Надо было начинать с идемпотентного PUT, используя GUID, который вполне безопасен.

C>А ещё из практических встреч — проблемы с кодировками запросов.

Непонятно, откуда они берутся. Вопрос кодировок в вебе стандпртизован вдоль и поперек — уж всяко лучше, чем в наколенных протоколах.
C>Ну и что дальше делать? Получается, что надо темпоральную базу иметь чуть ли не для всех доменных объектов при богатом REST-API. Или кидать в таком случае исключения, что не есть хорошо — блокировок нет, а сценарии с оптимистической блокировкой без атомарности получаются жуткими.
не понимаю вашу проблему. Темпоральная база нафиг не нужна. Достаточно хранить актуальную версию. Дальше стандартный подход — reload and repeat.
остальное допишу попожже.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 20:00
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Попытка номер 1 — POST-метод. Не работает — если теряем соединение после окончания метода, то у нас потеря документа.

C>>Попытка номер 2 — POST-метод с уникальным GUID'ом для tracking'а, передаваемым в запросе. Не работает из-за вопросов безопасности.
C>>Попытка номер 3 — разбиваем на два этапа: получение уникального GUID'а первым запросом, а потом использование этого GUID'а во втором.
S>Надо было начинать с идемпотентного PUT, используя GUID, который вполне безопасен.
Небезопасен. Так как источник генерирования GUID'ов может быть небезопасен.

C>>А ещё из практических встреч — проблемы с кодировками запросов.

S>Непонятно, откуда они берутся. Вопрос кодировок в вебе стандпртизован вдоль и поперек — уж всяко лучше, чем в наколенных протоколах.
Ага. Именно поэтому в мой сервис иногда данные приходят в cp1251.

S>не понимаю вашу проблему. Темпоральная база нафиг не нужна. Достаточно хранить актуальную версию. Дальше стандартный подход — reload and repeat.

S>остальное допишу попожже.
Мне нужно обновить два ресурса. Я делаю update на первый ресурс, а потом update на второй. Но при втором update'е получаю "чувак, ресурс устарел".

Що робыти? Откатить первое изменение, в общем случае нельзя. В SOAP для такой цели, хотя бы, есть WS-Transaction (при всех её недостатках).
Sapienti sat!
Re[25]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 20:27
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Небезопасен. Так как источник генерирования GUID'ов может быть небезопасен.

S>Это очень большая экзотика. В природе traceable GUIDs не встречаются уже очень много лет.
S>Чтобы выдавать это за недостаток протокола, надо быть более чем слегка параноидальным.
Хех. Мне приходили GUID'ы вида 000000000000001, 000000000000002 и т.д.

C>>Ага. Именно поэтому в мой сервис иногда данные приходят в cp1251.

S>Неважно, в чём они приходят. Главное, чтобы headers соответстовали.
Ага, только вот не всегда.

C>>Мне нужно обновить два ресурса. Я делаю update на первый ресурс, а потом update на второй. Но при втором update'е получаю "чувак, ресурс устарел".

S>Это значит, что границы атомарности объектов были выбраны неправильно. Граница транзакции в REST совпадает с границей объекта. Больше сказать ничего нельзя без конкретных деталей.
Так мне нужно два объекта обновить "одновременно". REST это делает крайне тяжёлым.
Sapienti sat!
Re[23]: Так ли хороша математическая нотация?
От: Cyberax Марс  
Дата: 12.08.11 20:49
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Добавлю ещё:

C>>6) Отсутствие само-описания типа WSDL для SOAP.
S>как раз с discoverability в REST всё очень хорошо.
Агащаз. Как мне найти все параметры, по которым можно искать объект? Или список необходимых параметров при его создании?

А никак, только читать доку. Кстати, если происходит ошибка (скажем, из-за неправильного параметра) — то "you're out of luck". Стандарта на передачу ошибок тоже нет.

C>>7) Нет формальной спецификации — каждый понимает REST по-своему. Из-за этого, клиент практически для любого сервиса приходится писать после долгого вкуривания документации и экспериментов.

C>>Для SOAP уже всё почти plug&play — я могу взять WSDL, по ней сгенерировать стабы и использовать в почти любом языке.
S>Если честно, то я не вижу связи. Без документации SOAP-сервис практически полностью бесполезен.
Да ну? Я по WSDL практически всегда могу читать без проблем как работает сервис.

К примеру, наш родной service2.wsdl — что в нём непонятного?

S>Возможность сделать вызов "в любом языке" совершенно бесполезна без понимания, какие именно вызовы делать. Стандартной штукой является наличие "волшебных параметров", которые ссылаются на какие-то другие объекты, без малейшей идеи где идентификаторы этих объектов нужно брать.

Минимальный объём документации необходим, но не сильно большой.

S>RESTful API можно изучать с помощью браузера. Даже если нет вообще никакой документации, то более-менее понятно, какие именно вещи нужно делать.

КАК его изучать?

Вот тебе реальная ссылка на пример REST API:
http://chart.apis.google.com/chart?chs=220x150&amp;cht=lc&amp;chco=224499&amp;chm=B,76A4FB,0,0,0&amp;chxt=x,y&amp;chxs=0,000000,12,0&amp;chd=s:rswx7796&amp;chxl=0:|Nov|Dec|Jan|Feb|Mar|Apr|May|Jun|1:||$4,999,700||$9,999,400||$14,999,100

Где тут discoverability? http://chart.apis.google.com/chart выдаёт 400. http://code.google.com/apis/chart/ перегоняет на http://code.google.com/apis/chart/ — где ты фиг найдёшь доку, так как этот API у них deprecated.

C>>8) Проблема с передачей сложных данных (даже банальный hash map нормально не передаётся) и т.д. Я понимаю, что сразу в таких случаях кричат: "JSON в POST/PUT", но в чём тогда отличие от SOAP?

S>Нет вообще никакой проблемы с передачей сложных данных. Отличие от SOAP — очень простое: через границу SOAP невозможно передать ссылку на объект.
Можно. Ровно как и в REST.

S>В REST все объекты являются адресуемыми, так что можно передавать URI.

Неверно. Скажем, я не могу из клиента передать ссылку серверу на мой объект — в мобильном телефоне веб-серверы не работают.

Не говоря уж о том, что это исключительно хрупкий подход.

S>Выбор представления для "сложных данных" — полностью на вас. Можно делать XHTML, XML, JSON или вообще произвольный application/octet-stream. Опять же, REST — это не стандарт. Это подход. На основе REST можно построить стандарт; и постепенно это происходит. Точно так же, как SOAP является результатом стандартизации архитектуры SOA.

Слова "REST — это подход" вообще гнилая отмаза. Примерно как "я стратег, а не тактик" в анекдоте про зайцев и сову.
Sapienti sat!
Re[22]: Так ли хороша математическая нотация?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.08.11 23:38
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>6) Отсутствие само-описания типа WSDL для SOAP.


http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

C>7) Нет формальной спецификации — каждый понимает REST по-своему.


Спецификации на что? Спецификация на REST это спецификация на HTTP. Другое дело, что поверх SOAP навернули кучу других спецификаций, аналогов коих для REST мало.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[22]: Так ли хороша математическая нотация?
От: Константин Б. Россия  
Дата: 13.08.11 02:32
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


C>>>2) Нет возможности нормально делать диалоги — их приходится всё время эмулировать. Криво. Это самое бесящее.

S>>Не очень понятно, что такое "диалоги". Вас интересует stateful сессия? Да, её приходится эмулировать.
S>>Это оборотная сторона REST. Зато эти сессии появляются только там, где необходимо, а не там, где случайно получилось.
C>Вот ситуация — надо создать документ. В одном экземпляре.

C>Попытка номер 1 — POST-метод. Не работает — если теряем соединение после окончания метода, то у нас потеря документа.

C>Попытка номер 2 — POST-метод с уникальным GUID'ом для tracking'а, передаваемым в запросе. Не работает из-за вопросов безопасности.
C>Попытка номер 3 — разбиваем на два этапа: получение уникального GUID'а первым запросом, а потом использование этого GUID'а во втором.

C>Получается криво.


А как эта проблема решается прямо в SOAP?
Re[24]: Так ли хороша математическая нотация?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.08.11 14:45
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Агащаз. Как мне найти все параметры, по которым можно искать объект? Или список необходимых параметров при его создании?
Вежливые люди при реализации протокола рендерят XHTML-формы с подсказками.
См. например http://apscatalog.com/all-app/
Видите — всё есть. И как искать, и как сабмиттить. Давайте посмотрим, сможете ли вы сходу найти вопрос, на который не получится ответить путём банального взгляда в браузер.

В более простых случаях REST полагается на WYSIWYG — то есть просто берёте документ, описывающий объект, и делаете PUT такого же документа.
Сам по себе документ может быть насколько угодно self-descriptive.
C>А никак, только читать доку. Кстати, если происходит ошибка (скажем, из-за неправильного параметра) — то "you're out of luck". Стандарта на передачу ошибок тоже нет.
Стандарт, конечно же, есть. И он ничуть не хуже, чем SOAP, в котором любимая ошибка — The creator of this fault did not specify a Reason.
Есть коды 4xx и 5xx, плюс возможность отрендерить сколько угодно деталей про ошибку.
C>Да ну? Я по WSDL практически всегда могу читать без проблем как работает сервис.
C>К примеру, наш родной service2.wsdl — что в нём непонятного?
Ну так он же родной. Попробуйте взять какой-нибудь настоящий сервис. Вот, из последнего, с чем мы имели дело — Office365 API.
Там даже с докой-то не разберёшься.

C>Минимальный объём документации необходим, но не сильно большой.

Ну давайте дадим мне ссылку на минимально интересный WSDL, и посмотрим, далеко ли удастся продвинуться без документации.

C>КАК его изучать?


C>Вот тебе реальная ссылка на пример REST API:

C>http://chart.apis.google.com/chart?chs=220x150&amp;cht=lc&amp;chco=224499&amp;chm=B,76A4FB,0,0,0&amp;chxt=x,y&amp;chxs=0,000000,12,0&amp;chd=s:rswx7796&amp;chxl=0:|Nov|Dec|Jan|Feb|Mar|Apr|May|Jun|1:||$4,999,700||$9,999,400||$14,999,100
Простите, а почему вы думаете, что это — REST?
REST — это не просто отказ от WSDL и SOAP.
C>Где тут discoverability? http://chart.apis.google.com/chart выдаёт 400. http://code.google.com/apis/chart/ перегоняет на http://code.google.com/apis/chart/ — где ты фиг найдёшь доку, так как этот API у них deprecated.
Вы, похоже, путаете REST c чем-то другим. REST — вот: http://developers.facebook.com/docs/reference/api/, см., в частности, раздел Introspection.

S>>В REST все объекты являются адресуемыми, так что можно передавать URI.

C>Неверно. Скажем, я не могу из клиента передать ссылку серверу на мой объект — в мобильном телефоне веб-серверы не работают.
Верно. Вы просто не понимаете, о чём я говорю.
C>Не говоря уж о том, что это исключительно хрупкий подход.
Поясняю: В соседнем ответе я привёл пример с банковской транзакцией.
Ну так в отличие от WSDL, где я должен буду передавать в метод Transfer() какие-то непрозрачные идентификаторы счетов, в REST я буду постить что-то типа
<transaction>
  <amount>165.24</amount>
  <source>.../vasya/accounts/checking.xml</source>
  <target>.../vasya/accounts/savings.xml</target>
</transaction>

Либо, вместо алиасов checking/savings, я буду писать прямо полные номера счетов. Whatever. Ничто не мешает протоколу работать в обоих случаях.
При этом про существование этих URL я могу узнать из того же сервиса, просто побраузив вокруг.
Речи про указание объектов на стороне клиента в REST не идёт.

C>Слова "REST — это подход" вообще гнилая отмаза. Примерно как "я стратег, а не тактик" в анекдоте про зайцев и сову.

Похоже, вы просто не умеете готовить REST и не очень хорошо понимаете, что это такое. Давайте продолжим эту дискуссию — я уверен, это существенно улучшит ваше отношение к REST.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: Паттерн Стратегия
От: vdimas Россия  
Дата: 13.08.11 22:22
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Нет. Паттерн Стратегия выглядит точно так же (вплоть до UML-диаграммы), как и паттерн Состояние. И тем не менее, это разные паттерны.


Это если рассматривать только статическую часть схемы.
Вообще какой-то глупый упор в этих паттернах GoF на статическую структуру решения. И как следствие — в обсуждениях тоже. Статическая структура — это самый низкий, подчиненный уровень. Более того, ввиду своей подчиненности требуемому функционалу, могут иметь несколько подходящих вариантов исполнения. И наоборот, одно и то же исполнение может решать несколько задач. Зависит от того, какую модель происходящего мы нарисуем себе в голове.
Re[24]: Так ли хороша математическая нотация?
От: Mamut Швеция http://dmitriid.com
Дата: 15.08.11 08:52
Оценка:
C>>>Добавлю ещё:
C>>>6) Отсутствие само-описания типа WSDL для SOAP.
S>>как раз с discoverability в REST всё очень хорошо.
C>Агащаз. Как мне найти все параметры, по которым можно искать объект? Или список необходимых параметров при его создании?

C>А никак, только читать доку. Кстати, если происходит ошибка (скажем, из-за неправильного параметра) — то "you're out of luck". Стандарта на передачу ошибок тоже нет.


Вообще-то есть, но мало кто реализует этот стандарт полностью: http://webmachine.basho.com/diagram.html


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.