metaclass: (Default)
[personal profile] metaclass
Чтобы ИТ-индустрия окончательно встала раком, Гуглу сейчас нужно сделать ход конем - разработать ТРЕТИЙ вариант кроссплатформенного языка-платформы с собственной виртуальной машиной, JIT, итд, итп, в дополнение к жабе и дотнету. И сманить девелоперов на него какими-нибудь заманухами страшными.
Тем более что дотнет семимильными шагами двигается в ту же over-engineered сраку, что и жаба, а альтернативы реальной тому и другому и нету.

Date: 2010-08-15 04:46 am (UTC)
From: [identity profile] nivanych.livejournal.com
Лисп, скорее, императивный.
Но метапрограммирование позволяет сделать из него некое подобие функционального.

Функциональные языки плохо подходят для описания предметной области?
Мой пойнт в том, что математика лучше всего подходит для описания предметной области.
И конструктивная математика тоже очень подходит, например, достаточно мощная интуиционистская логика. А вот уж категории, так и совсем ;-)
Соответственно, языки, в которых можно описывать предметную область близко к математике, очень даже подходят, и моя практика это подтверждает. Правда, иногда думать много приходится, но это не лишние усилия, это окупается!
То же ОО описывается внутри этих языков, если это зачем-то бывает нужно. Даже на Haskell худо-бедно можно описать ОО, хотя и не всегда внешне похожее на то, что стараемся промоделировать.

Date: 2010-08-15 04:58 am (UTC)
From: [identity profile] norguhtar.livejournal.com

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

Ну для кого как для меня функциональный.


Мой пойнт в том, что математика лучше всего подходит для описания предметной области.
И конструктивная математика тоже очень подходит, например, достаточно мощная интуиционистская логика. А вот уж категории, так и совсем ;-)

В случае когда мы начинаем описывать предметную область математикой мы приходим к математическому аппарату, а это гарантировано порождает полное описание области, даже в тех аспектах которые системой никогда использоваться не будут. Это как следствие порождает громоздкую реализацию. Лучше всего предметную область описывать вербально с выделением сущностей и их взаимодействием. К примеру при помощи use-case диаграмм и представлениями пользователя.


Правда, иногда думать много приходится, но это не лишние усилия, это окупается!

Далеко не всегда. Часто бывает, а давайте сделаем систему! И пока математики формализуют предметную область, программисты уже напишут систему которая будет работать.

Date: 2010-08-15 05:03 am (UTC)
From: [identity profile] nivanych.livejournal.com
Использование математики для описание системы никак не влечёт за собой необходимость полного её описания.

Date: 2010-08-15 05:10 am (UTC)
From: [identity profile] norguhtar.livejournal.com
Увы часто влечет. Потому что в противном случае система с точки зрения математики или будет не полная или прийдется разбивать систему на подсистемы и описывать отдельно. Я в качестве дипломной работы проектировал автоматизированную систему расчетов с клиентами. В качестве одного из материалов я использовал вот эту работу. Вот в ней как раз имеется моделирование математикой, которая хорошо может быть заменена выделением сущностей и описанием их взаимодействия.

Date: 2010-08-15 05:43 am (UTC)
From: [identity profile] metaclass.livejournal.com
Так как раз проблемы в проектировании системы обычно всплывают в мелочах и подсистемах. Т.е. если разбить на подсистемы и спроектировать наиболее неадекватные куски используя строго теоретические модели - мы уже спасемся от части маразма.

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

Date: 2010-08-15 05:48 am (UTC)
From: [identity profile] norguhtar.livejournal.com

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

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


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

Конечно. Но приведение предметной области к такой типизации, при помощи логики займет меньше времени, чем приведение ее же но при помощи математики.

Date: 2010-08-15 05:51 am (UTC)
From: [identity profile] metaclass.livejournal.com
Противопоставление логики и математики очень огорчает психов из комментариев :)

Date: 2010-08-15 05:56 am (UTC)
From: [identity profile] norguhtar.livejournal.com
ну что я могу поделать, если счетаю, что много матана в программировании это вредно? :)

Date: 2010-08-15 06:34 am (UTC)
From: [identity profile] nivanych.livejournal.com
> Противопоставление логики и математики

Ах, вот оно в чём дело.
Подозревал, но не думал, что такое может быть.
Ну, теперь понятно. Дальше смысла объяснять нет.

(no subject)

From: [identity profile] thesz.livejournal.com - Date: 2010-08-15 04:53 pm (UTC) - Expand

Date: 2010-08-15 06:29 am (UTC)
From: [identity profile] nivanych.livejournal.com
Да, описание может быть не полным, и это ничем не хуже, чем не полностью написанная программа. А лучше очень многим.

Можно даже сказать что-нибудь эдакое -
Из того, что человек что-то программирует, увы, очень часто следует, что это получается крайне криво. И хотя этого можно избежать, и у некоторых даже получается (!), но получается это очень редко и опыт никогда ну никак не удаётся перенять и поэтому, программирование всегда останется кривым, кривым, кривым...

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

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

Крайне редко при наличии достаточных описательных возможностей языка нужно ОО. Даже в OCaml, в котором, на мой взгляд, во многих местах система типов откровенно слабоватая, объекты на практике используются довольно редко, да и далеко "не по полной программе". И уж точно, в Haskell привнесение объектов (был такой O'Haskell) оказалось совершенно никому не нужным. А сейчас это сделать уж совсем запросто, если кому-то будет надо, только не нужно это никому.

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

Это всё равно, как увидеть хуёвый дизайн (пусть даже на любимом ОО-языке), сказать, что это никуда не годится, и переписать на ассемблере, "заменяя выделением сущностей и описанием их взаимодействия".
Математический дизайн тоже бывает плохой! Использование математики, к сожалению, не означает автоматической корректности и удобства работы. Разумеется, первым фактором, влияющим на некую "близость к серебрянной пуле", как и прежде, в первую очередь, остаётся квалификация человека.
Математика даёт возможность ограничить очень много, чего. И затем не допустить многих обшибок, например, по невнимательности или по незнанию (типаа давно писал код, забыл).
Теоретически, есть возможность избежать _всех_ ошибок, сделав полное совпадение с формально описанной спецификацией. Но реально, пока что, это делается довольно редко. Естественно, только потому, что это довольно трудоёмко, но и тут ситуация вполне конкретно переламывается, кстати.
Если найду, покажу измерения в человеко-часах, которые ушли на построение формально верифицированного компилятора C, проект называется Compcert.
Вкратце, даже полностью верифицированная хрень по человеко-часам не очень намного превышала просто хорошо написанный и хорошо оттестированный сишный компилятор. Но у них-то корректность _доказана_, а не протестирована!

Date: 2010-08-15 06:57 am (UTC)
From: [identity profile] norguhtar.livejournal.com
В случае компиляторов уместно использовать математические модели. Они там не избыточны, а вполне себе адекватны. Но строить математическую модель для автоматизации прохождения заявки по предприятию это чистой воды overengeneering. Да это очень круто, но не нужно. И в большинстве прикладного софта, построение математической модели увеличит необходимое время для его написания.

Date: 2010-08-15 07:01 am (UTC)
From: [identity profile] metaclass.livejournal.com
Описание workflow и прочих конечных автоматов это вообще чистая математика. Даже если их проектировать, не называя это математикой.

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-08-15 07:11 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-15 07:25 am (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-08-15 07:30 am (UTC) - Expand

Date: 2010-08-15 07:03 am (UTC)
From: [identity profile] metaclass.livejournal.com
А, и насчет времени написания - построение моделей снижает затраты на поддержку. А у меня нет ни одного написанного софта, который "сдал и забыл" - весь софт сначала год поддерживается бесплатно, затем за небольшую сумму в год - сколько угодно.

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-08-15 07:12 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-15 07:26 am (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-08-15 07:29 am (UTC) - Expand

Date: 2010-08-15 04:52 pm (UTC)
From: [identity profile] thesz.livejournal.com
>В случае когда мы начинаем описывать предметную область математикой мы приходим к математическому аппарату, а это гарантировано порождает полное описание области, даже в тех аспектах которые системой никогда использоваться не будут.

Нет.

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

По крайней мере, так работают профессиональные математики.

Date: 2010-08-16 01:27 am (UTC)
From: [identity profile] norguhtar.livejournal.com
Хорошо допустим у вас есть сценарии использования. Дальше что? У вас не будет математических выкладок и доказательств?

Date: 2010-08-16 08:36 am (UTC)
From: [identity profile] thesz.livejournal.com
Их будет не больше, чем требуют сценарии использования.

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

Теперь подойдём с другой стороны.

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

Date: 2010-08-16 10:05 am (UTC)
From: [identity profile] norguhtar.livejournal.com

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

У меня нет никаких математических выкладок по доказательству не противоречивости модели. Только логические выкладки и использование реляционной логики для отражения предметной области в СУБД и построение графов в случае необходимости.


и что вы не строите полную и непротиворечивую (с точностью до набора сценариев использования) модель предметной области.

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

Date: 2010-08-16 07:25 pm (UTC)
From: [identity profile] thesz.livejournal.com
Да-да.

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

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

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-08-17 01:21 am (UTC) - Expand

Date: 2010-08-15 06:32 am (UTC)
From: [identity profile] kurilka.livejournal.com
А не напишешь хотяб пост как ты видишь математичное переложение предметки? (а лучше статью в ПФП)

Date: 2010-08-15 06:49 am (UTC)
From: [identity profile] nivanych.livejournal.com
Смотря какой предметки.
Для начала, если иметь в виду достаточно мощщную логику (ну там, агда-кок), то так же, как и в функциональщине, только можно накладывать гораздо больше ограничений ;-)
Те же хацкельные паттерны довольно-таки содержательны, только реализовать их надо бы более близко к математике.
Остальное, это онтология, которая тоже довольно неплохо описывается в достаточно мощной логике. Правда, тут очень не хватает автоматического доказательства. И оказывается, что даже какой-то "несчастный" пролог уже много, где рулит ;-)
В идеале, надо заниматься не только онтологией, но и гносеологией-эпистемологией.

Date: 2010-08-15 09:08 am (UTC)
From: [identity profile] kurilka.livejournal.com
если сократить, то будет "нет"? :)

Date: 2010-08-15 10:37 am (UTC)
From: [identity profile] nivanych.livejournal.com
Мне сейчас откровенно некогда.
То есть, при большом желании, конечно, можно выделить время.
Но ведь написать про это не очень просто, а я убеждён,
что мне ещё надо оочень многое читать, вот и стараюсь.
Тем более, что практика у меня ограничивается лишь немного большим,
чем моделирование разного "функционально-категорными" паттернами.
Хотя и это уже довольно сильно и может описать очень многое.

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

Date: 2010-08-15 11:04 am (UTC)
From: [identity profile] kurilka.livejournal.com
Прикольно, ну бум ожидать :)

Date: 2010-08-15 12:39 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Мне гораздо проще отвечать на вопросы.
В этом случае получается, как бы, что ты сам формируешь лекцию, наиболее удобную для твоего понимания. И к объясняющему обращаешься, как к базе знаний. Гораздо проще извлечь из памяти что-то, чем думать над тем, как бы это уложить в какую-то целостную структуру типа статьи.
Отчасти, именно поэтому я и прошу всех спрашивать в category_theory, поскольку, ответить на конкретный вопрос гораздо проще для отвечающего, чем подготовить хорошее целостное объяснение.

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-15 12:50 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2010-08-15 12:57 pm (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-15 01:03 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2010-08-15 01:08 pm (UTC) - Expand

Date: 2010-08-15 12:52 pm (UTC)
From: [identity profile] nivanych.livejournal.com
;-) С другой стороны, постараюсь не разочаровать.
Знал бы ты, какие там крутые экономисты!
С другой стороны, если они заинтересовались категориями, то уж точно крутые ;-)
Но имён называть не буду, до поры до времени.
И они заинтересовались категориями, как инструментом для манипулирования онтологиями.
Классно же? ;-)
Заодно, я более внимательно перечитал, что писал про онтологии Осман Бинеев, и это было любопытно.

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-15 12:57 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2010-08-15 01:00 pm (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-15 01:04 pm (UTC) - Expand

(no subject)

From: [identity profile] clayrat.livejournal.com - Date: 2010-08-15 08:34 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2010-08-16 03:43 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-16 04:54 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2010-08-16 05:31 am (UTC) - Expand

(no subject)

From: [identity profile] algebraic-brain.livejournal.com - Date: 2010-08-16 09:28 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2010-08-16 10:16 am (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 16th, 2025 07:50 am
Powered by Dreamwidth Studios