|
|
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Доброго часа! Начну немного издалека. Недавно наткнулся на статью, где описывался подход к макроэкономике с позиций высшей математики. А именно там приводился анализ устойчивости рынков, финансовых систем и мировой экономики в целом (сильно упрощённый конечно) с точки зрения теории управления (если я правильно со времён универа запомнил, к какому разделу высшей математики относятся все эти критерии устойчивости, передаточные функции и иже с ними). В том числе там затрагивался и кризис, совсем недавно наступивший всему миру на причинное место (ну тут конечно можно сказать, что задним числом все умные, даже астрологи). После прочтения этой статьи мне почему-то подумалось, а скольих бы кризисов и прочих экономических катаклизмов удалось бы избежать, если бы экономикой занимались не гуманитарии, а математики. Но речь пойдёт не об этом. Оная мысль довольно быстро перетекла в другую: а как дело обстоит в области моей профессиональной деятельности, а именно в корпоративной разработке? И как ни странно, я пришёл к выводу, что в этой области преобладает преимуществнно гуманитарный подход. "Огуманитариваться" разработка на мой взгляд начала с приходом ООП, когда начали использоваться объекты - структуры, удобные для человека, но абсолютно бесполезные с точки зрения машины. К тому же дающие массу накладных расходов (особенно если это не просто объект, а реализация класса с целой вереницей предков). Далее, по мере усложнения разрабатываемых программ начали придумывать паттерны - шаблонные комбинации объектов, предназанченные для решения каких-то типовых задач. Я ничего не имею против паттернов, как эдакого сплава опыта многих программистов, удобного способа научиться на чужих ошибках, не наступать на сотни грабель и не изобретать десятки велосипедов. Проблема в том, что изыскивались эти паттерны методом проб и ошибок, часто проявляющихся очень поздно и стоящих очень дорого. При применении паттернов многие программисты сталкиваются с нечёткостью их определений. Что должно входить в каждый класс, входящий в паттерн, в контексте данной конкретной задачи? Какой паттерн наиболее целесообразен при решении данной конкретной задачи? Особенно часто эти вопросы возникают у начинающих программистов. И даже если два опытных программиста начинают решать одну и ту же задачу с применением одного и того же паттерна код у них может получиться разный, как небо и земля, потому что каждый будет иметь своё представление, что например должно входить в модель, а что - в контроллер, должна вьюха иметь возможность напрямую взаимодейтсвовать с моделью или нет (пример касается MVC паттерна). Те же Фаулер и Банда Четырёх, признанные авторитеты в ООП, не дают чётких ответов на эти вопросы. Их описания паттернов имеют характер более рекомендаций, чем строгих определений. Нигде я не видел, чтобы эти вопросы анализировались с позиций строгой математики. Аналогичная ситуация с методологиями разработки. Замечательная идея сразу спроектировать систему, а потом её реализовывать в виде кода раз за разом разбивается о суровую реальность, где системный инженер просто не в состоянии предусмотреть всех нюансов, которые могут возникнуть при реализации архитектуры, заложенной им. Нет, я не говорю, что примеров успешного проектирования нет. Но соотношение успехов к провалам в данном вопросе ИМХО заставляет задуматься. Под провалами я тут понимаю в т.ч. и успешно реализованный проект, где код в конечном счёте значитеьно расходится с моделью, или модель допиливалась уже походу кодирования. Из-за того, что нет внятных механизмов анализа систем приходится выполнять массу работы, направленной на тестирование программ. При этом объём таких работ иногда может превышать трудозатраты на написание системы. Даже в тех областях, где есть вполне применимый математический аппарат, он просто не используется. Для примера, РБД опираются на подобный аппарат. Но многие ли программисты применяют его при проектировании БД и написании запросов? Может быть я конечно не прав. Может быть у меня просто непонятно с какого перепугу произошло обострение юношеского максимализма и идеализма, и разрабокта, как область человеческой деятельности, движется в правильном направлении. Но на мой взгляд в разработке очень не хватает сейчас того самого зубодробительного матана, который попортил столько крови любому студенту технического ВУЗа. Не хватает математического чёткости и строгости вместо смутного сумбура "паттернов", "концепций", "парадигм" и иже с ними. Что вы думаете по этому поводу? Может быть уже есть какие-то языки, подходы, методики разработки, платформы, фрэймворки, позволяющие поставить огромный багаж математических знаний, накопленных человечеством за столетия, на службу программисту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 12:07 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
P.S.: прошу прощения, если мои мысли показались кому-то слишком пространными, а их изложение - слишком объёмным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 12:09 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Писатель КодовЧто вы думаете по этому поводу? Может быть уже есть какие-то языки, подходы, методики разработки, платформы, фрэймворки, позволяющие поставить огромный багаж математических знаний, накопленных человечеством за столетия, на службу программисту? есть, например ф-е программирование. без знания матана, на ф-х языках можно писать с той же успешностью что и на ООП-языках. но со знанием матана, там есть где разгуляться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 12:35 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Бертран Мейер пытается использовать аксиоматическое описание классов при проектировании. есть еще другие формальные методы разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 13:26 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Шаблоны - это в некотором роде музей. Музей концептуальных решений. Скажу честно. Я пытался НАСИЛЬНО впихнуть в свои проекты шаблоны фасада и бриджа, но это ничем не закончилось. Я после этого свой собственный исходник стал хуже понимать. Поэтому стоит больше осматриваться по сторонам и исходить из целевой аудитории разработчиков. Кто сможет подхватить и поддержать, а главное - ПОНЯТЬ шаблон. Да и сам по себе процесс внедрения шаблона - очень спорный. У разработчиков нет единого взгляда на собственно результат. Сколько их в проекте - столько и мнений. И все - правильные. И нет экономического обоснования их внедрять. Или я не знаю расчётной формулы полезного эффекта от их внедрения. По поводу зубодробительного матана, чёткости строгости e.t.c. Разработка ПО тесно связана с физикой реального мира. Это машина Неймана с конкретными физ. характеристиками. С лагами, шумящим характером загрузки CPU, гистерезисным поведением жёсткого диска, со странным поведением памяти и кешей разных уровней. Если быть дотошным и стоить мат.модель всего этого, то на написание простейшего бизнес-процесса вы потратите всю жизнь. Поэтому многими явлениями и эффектами программисты просто пренебрегают так-же как и физик может учитывать или не учитывать "лунную гравитацию" и "солнечный ветер" в своих экспериментах. Многие явления просто нереально посчитать или найти о них подробную информацию. Приходится исходить из модели чёрного ящика и строить гипотезы относительно того, что находится внутри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 14:58 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Писатель Кодовогромный багаж математических знаний, накопленных человечеством за столетия, на службу программисту? Огромный багаж математических знаний, все эти математические анализы, топологии, комплексные методы, линейные алгебры и прочая и прочая и прочая - абсолютно не нужны, и даже вредны (серьезно). Все что нужно изучить программисту - это некоторые разделы дискретной математики (автоматы, графы, булеву алгебру и что-то там еще не помню даже что). Ну и арифметику - + - / *. И все. Миф про то, что лучшее место выучиться программированию - это ВМК или Мехмат МГУ - полная ерунда (достаточно посмотреть на программы обучения - насколько редкостная ахинея читается студентам). Computer science тоже идет в сад. Спольски об этом хорошо написал вот тут: http://local.joelonsoftware.com/wiki/%D0%A1%D0%BE%D0%B2%D0%B5%D1%82_%D1%81%D1%82%D1%83%D0%B4%D0%B5%D0%BD%D1%82%D0%B0%D0%BC_%D0%B8%D0%B7%D1%83%D1%87%D0%B0%D1%8E%D1%89%D0%B8%D0%BC_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D1%83 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 20:51 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Вообще существует клише, что программист - это математик, имеет и должен иметь мышление математика. На самом деле это не так. Программист - это больше лингвист. Переводчик на машинный язык. И лучший способ отбора программистов - это дать им задание что-то написать на естественном языке. Если человек хорошо и структированно излагает свои мысли на бумаге - у него есть отличный шанс быть хорошим как минимум кодером. А всякие гениоты, вроде Ландау - да, они могут быть гениями, и находить просто невероятные решения простых задач, но одна проблема - они это не смогут записать (реализовать как минимум в коде), два - их хрен кто потом сможет понять. Потому гениальных физиков и математиков - в аналитики, а за кодерами можно сразу в Иняз топать. Все равно их, молодежь, заново всему учить надо будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 21:08 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Про паскальВообще существует клише, что программист - это математик, имеет и должен иметь мышление математика. На самом деле это не так. Программист - это больше лингвист. Переводчик на машинный язык. И лучший способ отбора программистов - это дать им задание что-то написать на естественном языке. Если человек хорошо и структированно излагает свои мысли на бумаге - у него есть отличный шанс быть хорошим как минимум кодером.Кстати да, тоже где-то читал, что программизмъ по внутреннему способу мышления примерно одинаков с написанием худ. произведений, всякое там грамотное изложение, построение структуры и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 21:11 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Писатель Кодов, боян. Была книжка такая "Доказательное программирование", давно. Рассматривался аппарат формального вывода программ. А твой огромноый багаж (если такой есть) это твя общая культура, не парься. Про паскальОгромный багаж математических знаний, все эти математические анализы, топологии, комплексные методы, линейные алгебры и прочая и прочая и прочая - абсолютно не нужны, и даже вредны (серьезно). Все что нужно изучить программисту - это некоторые разделы дискретной математики (автоматы, графы, булеву алгебру и что-то там еще не помню даже что). Ну и арифметику - + - / *. И все. Зачем дискретная математика? И зачем не помню даже что? Кликать контрольчики на формочки можно без арифметики, уметь читать тоже не надо (есть обучающие видюшки), про всякую #ню вроде музыки с литературой ваще молчу. Жрать можно руками. А нахрен сдалось мыться? Энто вредно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 21:26 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
УнрегистередА нахрен сдалось мыться? Энто вредно. Ты в школе минимум четыре года долбил тригонометрию в самых извращенных формах и решал системы линейных уравнений. А в ВУЗе - решал дифуры аналитическим методом. И? Пять лет - коту под хвост - ты ни разу эти знания так и не применил на практике. Культура говоришь? При том, бьюсь об заклад, такие слова как inversion of control и dependency injection - тебя до сих пор ставят в тупик. Так что надо было в школе изучать? Еще один метод определения точки пересечения медианы с биссектрисой или азы формальной логики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 21:54 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
On 01.12.2010 12:07, Писатель Кодов wrote: > Аналогичная ситуация с методологиями разработки. Замечательная идея сразу > спроектировать систему, > Даже в тех областях, где есть вполне применимый математический аппарат, он > просто не используется. Для примера, РБД опираются на подобный аппарат. Но > многие ли программисты применяют его при проектировании БД и написании запросов? Ну, думаю что по крайней мере половина. Или все успешные программисты РБД. > Что вы думаете по этому поводу? +1. Да только особенно в разработке ПО никаких мат. методологий и методик не существует. Ну и математика во многих местах двигалась в тех направлениях, где нужно было что=то сделать БЕЗ компьютеров. Аналитически. Вычислительные подходы к решению задач порой просты, тупы и прямолинейны, в противоположность математике. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 23:30 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
MasterZiv> Что вы думаете по этому поводу? +1. Да только особенно в разработке ПО никаких мат. методологий и методик не существует. есть. алгебраическое проектирование класса есть, ат лист ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 23:52 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingizMasterZiv> Что вы думаете по этому поводу? +1. Да только особенно в разработке ПО никаких мат. методологий и методик не существует. есть. алгебраическое проектирование класса есть, ат лист Пруфлинк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 23:54 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
а по русски? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2010, 23:56 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingizа по русски? Если ты про вот это, то это полная ерунда (притянутая за уши), в которой от математики лишь слова "аксиома" и "алгебра".: http://www.realcoding.net/dn/docs/ClassDesign.pdf Пруфлинк - это proof link - ссылка на пример реального применения (чтоб тебя понимали верно). Реальное применение математической логики, к примеру - можно упрощать сложные выражения, плюс под таблицы истинности - формировать логические выражения. Раздел в программировании не применяется, но для аппаратных контроллеров - очень даже (при проектировании релейных схем, и их упрощении в т.ч.). Это был пример применения математической логики (про релейные схемы). Потому ты можешь или дать ссылку на статью (про реальное применение в промышленности), или пояснить словами, зачем оно надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:01 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
1 на проектирование по контракту не надо давать прулинки? 2 Specification Case Studies in RAISE, Springer 2002, FACIT series ISSN 1431-9683. Глава 5 система отслеживания сбора налогов Вьетнама ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:09 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
это надо, что бы ошибки отлавливать не в дебагере, кликая мышкой, а на более ранних стадиях разработки, а еще лучше - не допускать их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:11 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingiz1 на проектирование по контракту не надо давать прулинки? Нет, потому что там и близко нет математического аппарата tchingiz2 Specification Case Studies in RAISE, Springer 2002, FACIT series ISSN 1431-9683. Ок, почитаем. Хотя выглядит это все сомнительно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:14 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingizэто надо, что бы ошибки отлавливать не в дебагере, кликая мышкой, а на более ранних стадиях разработки, а еще лучше - не допускать их. Прямо интрига. Человеческие невнимательность, глупость и невежество можно побороть чудо математическим аппаратом? Это-же нобелевка. Каждый год - и так лет 15 подряд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:19 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Про паскальtchingiz1 на проектирование по контракту не надо давать прулинки? Нет, потому что там и близко нет математического аппарата система аксиом - это матаппарат. Про паскальtchingiz2 Specification Case Studies in RAISE, Springer 2002, FACIT series ISSN 1431-9683. Ок, почитаем. Хотя выглядит это все сомнительно уже положили в свободный доступ ftp://ftp.iist.unu.edu/pub/RAISE/case_studies/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:23 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingizПро паскальпропущено... Нет, потому что там и близко нет математического аппарата система аксиом - это матаппарат. Аксиома - это фигня, не требующая доказательств. Это не матаппарат, это как раз то, что матаппарат осилить вообще не может, потому вынужден принимать без доказательства, но на что вынужден опираться. Не надо ляля, нас этому еще в школе научили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:33 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
ссылку на статью (про реальное применение в промышленности), ссылки из которых можно выбрать реальное применение в промышленности ftp://ftp.iist.unu.edu/pub/techreports/ Кстати, геометрия, не считалась математикой, до тех пор, пока не начаал применятья в промышленности? или уже считалась? это русские проекты http://www.unitesk.com/content/category/9/25/60/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:36 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
Про паскальtchingizпропущено... система аксиом - это матаппарат. Аксиома - это фигня, не требующая доказательств. Это не матаппарат, это как раз то, что матаппарат осилить вообще не может, потому вынужден принимать без доказательства, но на что вынужден опираться. Не надо ляля, нас этому еще в школе научили. до свидания, спасибо за сотрудничество ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:37 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
я при случае расскажу Гильберту и Кантору, что они занимались фигней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:39 |
|
||
|
Математика в программировании
|
|||
|---|---|---|---|
|
#18+
tchingizссылку на статью (про реальное применение в промышленности), ссылки из которых можно выбрать реальное применение в промышленности ftp://ftp.iist.unu.edu/pub/techreports/ Кстати, геометрия, не считалась математикой, до тех пор, пока не начаал применятья в промышленности? или уже считалась? Геометрия считалась математикой изначально, еще до нашей эры. tchingizэто русские проекты http://www.unitesk.com/content/category/9/25/60/ Ок, спасибо, хоть что-то интересное. Почитаем обязательно. Только я надеюсь это не про линейное "программирование" (вроде Симплекс-метода или Монте-Карло) читать про реализацию еще одного математического метода на ЭВМ для отвлеченных прикладных задач - не сильно хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2010, 00:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36990032&tid=1343272]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 475ms |

| 0 / 0 |
