Математика vs программирование
От: rfq  
Дата: 27.05.15 17:55
Оценка: 1 (1) :))
Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?

Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?
Re: Математика vs программирование
От: Vaako Украина  
Дата: 27.05.15 17:58
Оценка: +1
Здравствуйте, rfq, Вы писали:

rfq>Как от математической переменной перейти к программистской и наоборот?


rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?


Машина Тьюринга?
Re: Математика vs программирование
От: vmpire Россия  
Дата: 27.05.15 18:48
Оценка: +1
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?

Насчёт учемников не знаю, но в программировании такой "математический" подход хорошо известен, называется Immutable Object
Применяется обычно в функциональном программировании, но зачастую полезен и в императивном, чтобы код было проще читать.
Иными словами, "программистская" переменная есть надмножество "математической".
Re: Математика vs программирование
От: VTT http://vtt.to
Дата: 27.05.15 19:00
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


В общем-то есть много разных языков программирования, и во многих из них понятие переменной определяется по-своему.
Расхождение этих понятий с математическими удивляет не только вас. Почитайте например Армстронга "Программирование на Эрланге", он там как раз об этом рассуждает (вы это высказывание не у него подчерпнули случаем?).
А вообще более-менее полноценный математический формализм можно выстроить только путем создания дополнительных уровней абстракций над конкретным языком. В конечном же итоге они все должны сводится к примитивным машинным командам.
Если нужна математика — используйте Mathematica, Maple, MATLAB и т.д.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re: Математика vs программирование
От: hi_octane Беларусь  
Дата: 27.05.15 19:04
Оценка:
rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?

Посмотри на уроки к Wolfram Language, по тому чем я пользовался — математическая запись там вполне естественна.
Re: Математика vs программирование
От: __kot2  
Дата: 27.05.15 19:17
Оценка: :)
Здравствуйте, rfq, Вы писали:
rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?
переменных в математике вообще нет.
а переменные в программировании возникают только из-за желания оптимизировать по памяти — одно значение замещает другое. мы теряем к другому доступ, но можем с этим жить, если оно нам больше и не нужно
вообще по уму переменных быть не должно. соб-но это и есть центральная идея функционального программирования, как я ее понимаю
Re: SSA
От: Qbit86 Кипр
Дата: 27.05.15 20:11
Оценка: 1 (1) +8
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


Ты просто версионируешь значения «a₁=a₀+1», и вместо модификации старых переменных создаёшь всё время новые константы. (Или даже целый мир, и протаскиваешь его во входящие/выходящие параметры чистых функций.) Если этого не сделаешь ты, возможно даже за тебя это сделает компилятор в промежуточном представлении.
Глаза у меня добрые, но рубашка — смирительная!
Re: Математика vs программирование
От: smeeld  
Дата: 27.05.15 20:15
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


Сущность переменной в программировании определяется текущим ЯП целиком и полностью, и тесно связана
с целевыми для ЯП задачами и его реализацией. Приходится различать, int это, float, list, или lambda.
В математике переменная есть величина, принимающая множество значений, это чистая абстракция.
Фантазёры идут в математики, тем у кого с фантазией проблемы-в програмисты. Для последних пишутся тонны
спецификаций по ЯП, строго в соответствии с которыми они обязаны понимать и работать.
Re: Математика vs программирование
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 28.05.15 06:37
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?


В математике переменная — это величина, принимающая значения на каком-то множестве, т.е. по сути элемент множества. Если, скажем, множество образовано из натуральных чисел (0, 1, 2, ...), элемент множества обозначен как "a", то операция "a=a+1" просто не имеет смысла. Ей (в математике) нечего сопоставить.
В программирование переменная — состояние ячейки памяти. Операция "a=a+1" изменяет состояние ячейки памяти и уже имеет смысл.
Кацца так
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re: Математика vs программирование
От: watchyourinfo Аргентина  
Дата: 28.05.15 06:41
Оценка:
rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


от программистской к математической -- добавить sequence id

обратно -- проблем совсем вроде нет
Re: Математика vs программирование
От: Mamut Швеция http://dmitriid.com
Дата: 28.05.15 10:12
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


Использовать функциональное программирование с иммутабельными «переменными» и сопоставлением с образцом. Оно наиболее близко к мат. записи и понятиям.


dmitriid.comGitHubLinkedIn
Re: Математика vs программирование
От: dsorokin Россия  
Дата: 28.05.15 17:39
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


Поэтому в языке Haskell вводятся ссылки. Там ссылку ты можешь изменить в рамках вычисления, а переменную можешь только связать с неким постоянным значением. Переменную можно использовать везде, а ссылки — только внутри вычислений. Впрочем, я не уверен, что термин "переменная" часто используется в Haskell. Получается переменная, которая не меняется

rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?


Советую посмотреть на чистый язык функционального программирования Haskell. Причем, что важно, он является языком общего назначения.
Re: Математика vs программирование
От: GhostCoders Россия  
Дата: 28.05.15 18:05
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?


не думаю, что понятия переменной отличиются.
ты не задумавался, почему в программировании есть два "равенства"? Например, операция проверки на равенство == и операция присваивания =
Или как в Паскале = и :=

a == a+1

даже в С\С++ всегда будет false

Еще вспомнил, что в Бейсике (для ZX Spectrum) операция присваивания называется LET, что переводиться как "допустим".
10 LET A = A+1




А вообще правильно написал Qbit86

P.S.: Вспомнил свои первые школьные уроки по информатике. Учитель в начале урока написал на доске i = i + 1
и сказал, что такое выражение в математики не имеет смысл, а в программировании имеет.

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

А математические уравнения описывают ограничения между текущими состояними переменных.
При этом, для данных ограничений, множество удовлетворяющих значений переменных может быть пустым (когда уравнение не имеет решений, как а=а+1),
или же их бесконечно много (например, 2+a=2+a), или одно\нескольно.
Ннапример, 2*a=5; при этом одно значение переменной а (это 2.5 ) удовлетворяет данным ограничениям.

rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?
Третий Рим должен пасть!
Re[2]: Математика vs программирование
От: DreamMaker  
Дата: 29.05.15 06:10
Оценка: :)
Здравствуйте, GhostCoders, Вы писали:

GC>
GC>a == a+1
GC>

GC>даже в С\С++ всегда будет false

любой хороший программист знает, что не всегда
In P=NP we trust.
Re: Математика vs программирование
От: Silver_S Ниоткуда  
Дата: 31.05.15 16:06
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?

Смотря какая математика и программирование.
В принципе, и в "почти" математике так можно написать a=a+1, только результат такой функции(=) будет false. Когда такое пишут в математике, то подразумевают Assert(a=a+1)

Есть вот нечто среднее между математикой и программированием: http://rise4fun.com/z3/tutorial
Там такая запись не лишена смысла, просто результат будет соответствующий.
(declare-const a Int)
(assert (= a (+ a 1)))
(check-sat)
Re: Математика vs программирование
От: noone  
Дата: 07.07.15 15:25
Оценка: 2 (1) +1
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются.


Что такое "переменная в математике"? Математика большая, про какие переменные мы говорим? Да и в разных языках программирования "переменная" означает разные вещи.

rfq>В частности, в математике нельзя написать a=a+1.


Еще как можно. Например, это можно считать частью выражения на C-подобном языке программирования, любой из которых является одним из (бесконечного) множества математических языков. Еще это можно прочитать как уравнение в какой-нибудь алгебраической системе, и у него даже может быть решение если "+" определить нужным способом. Или это предикат. Или определение фиолетовых треугольников из раздела про цветные треугольники.
Re: Математика vs программирование
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.07.15 22:55
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>В частности, в математике нельзя написать a=a+1


Смотря, в какой теории. В рамках ZFC, например, — так нельзя написать исключительно потому, что символ равенства там используется для обозначения бинарного отношения (внезапно) равенства двух множеств, а в том, что ты называешь "программированием" — он обозначает операцию связывания символической переменной с каким-либо символическим или конкретным значением, что вполне можно выразить математически с помощью тривиальной (3,3)-программы для МТ
... << RSDN@Home 1.2.0 alpha 5 rev. 76>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Отредактировано 07.07.2015 22:58 kochetkov.vladimir . Предыдущая версия .
Re: Математика vs программирование
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.07.15 21:29
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1.


Математика бывает разной.

rfq> Как от математической переменной перейти к программистской и наоборот?


Математика состоит из огромного количества разделов, а не единой монолитной теории. Поэтому ответ на твой вопрос сильно зависит от конкретики.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Математика vs программирование
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.07.15 21:29
Оценка:
Здравствуйте, __kot2, Вы писали:

__>переменных в математике вообще нет.


О как! А мужики то и не знают.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Математика vs программирование
От: Ops Россия  
Дата: 25.07.15 19:19
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>
GC>a == a+1
GC>

GC>даже в С\С++ всегда будет false

Это смотря как целиться. В C сходу только один способ попасть в ногу нашел, а в плюсах...
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Математика vs программирование
От: BulatZiganshin  
Дата: 26.07.15 10:21
Оценка:
Здравствуйте, Ops, Вы писали:

GC>>a == a+1

Ops>Это смотря как целиться. В C сходу только один способ попасть в ногу нашел, а в плюсах...

препроцессор и double — уже два
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Математика vs программирование
От: Ops Россия  
Дата: 26.07.15 10:27
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>препроцессор и double — уже два


Сходу про препроцессор только подумалось. Но тут и одного случая достаточно, чтобы всеобщность опровергнуть.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Математика vs программирование
От: LaPerouse  
Дата: 31.07.15 12:25
Оценка:
Здравствуйте, __kot2, Вы писали:

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

rfq>>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?
__>переменных в математике вообще нет.
__>а переменные в программировании возникают только из-за желания оптимизировать по памяти — одно значение замещает другое. мы теряем к другому доступ, но можем с этим жить, если оно нам больше и не нужно
__>вообще по уму переменных быть не должно. соб-но это и есть центральная идея функционального программирования, как я ее понимаю

Дело не только в оптимизации. Изменяемое состояние при правильном использовании увеличивает уровень абстракции.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re: Математика vs программирование
От: Kolesiki  
Дата: 23.11.15 17:50
Оценка: :)
Здравствуйте, rfq, Вы писали:

rfq>Как от математической переменной перейти к программистской и наоборот?


Точно так же, как и от кулинарной переменной к альпинистской: навсегда зарубить себе на носу, что программирование не имеет ничего общего с математикой!
Re: Математика vs программирование
От: velkin Удмуртия https://kisa.biz
Дата: 23.11.15 18:23
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Понятия переменной в математике и программировании существенно различаются. В частности, в математике нельзя написать a=a+1. Как от математической переменной перейти к программистской и наоборот?

rfq>Собственно, я сформулировал для себя ответ на этот вопрос, но, прежде чем его обнародовать, хотелось бы убедиться, что я не ломлюсь в открытую дверь. Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?

Математика состоит из разделов, например, Арифметика, Алгебра. Поясняю, арифметическое выражение != алгебраическое уравнение. В принципе, можете посмотреть школьные учебники по математике для средних классов, там разбираются эти вопросы. В языки программирования обычно встроены арифметические выражения, а вот задачи решения алгебраических уравнений потребуют дополнительных библиотек алгоритмов, ну или обычному пользователю можно использовать какой-нибудь математический пакет.
Отредактировано 23.11.2015 18:25 velkin . Предыдущая версия .
Re: Математика vs программирование
От: LaptevVV Россия  
Дата: 23.11.15 19:19
Оценка:
rfq>Есть ли учебники или научные работы, где разбирается этот и/или сопутствующие вопросы?
Есть. Так и называется, как тебе надо...
http://www.ozon.ru/context/detail/id/31921728/
Александр Степанов, Даниэл Роуз. От математики к обобщенному программированию.

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

Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.