127

Про математику и программирование1

Небольшое наблюдение о том, как важна математика программисту. Я изучал язык программирования Python с помощью программы, скаченной на Goodle Plays (май инглиш ис вери бэд). Там было одно задание, которое должно было научить азам, пользованию циклами, а задание такое - "сложите все цифры от 1 до N, точнее напишите программу, которая сделает это за вас". Скорее всего разработчики ждали что-то такое (циклы же):

S=0

while i<N:

S=S+i

i+=1

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

S=N(N+1)/2

Здравия желаю))) Слова о том, что программист не может без знания математики, не беспочвенны

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Автор поста оценил этот комментарий

это случайно не факториал называется?

раскрыть ветку (1)
3
DELETED
Автор поста оценил этот комментарий

Не, факториал - это произведение натуральных чисел, а тут сумма

показать ответы
DELETED
Автор поста оценил этот комментарий

Не, я в другом смысле слова "просто". Пример очень простой, уровень 6-8 класса. И это... В питоне не используют циклы. Если есть цикл, значит надо переписать код.

раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

Ну, по части циклов с вами много кто не согласится, вообще как их не использовать?)

показать ответы
Автор поста оценил этот комментарий

Старый стал, я.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

А вот это зря))) Я вам говорю, молодые сейчас глупые. Кому не умничать как старым

показать ответы
0
Автор поста оценил этот комментарий

про условный цикл.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Всё равно не понял, N+=1 - это запись принятая в Питоне, она заменяет то, что вы написали

показать ответы
0
Автор поста оценил этот комментарий

тогда n+1. и ошибка исправлена.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Ты про что? Формула ряда натуральных чисел воспроизведена верно, там произведение N+1 и N

показать ответы
0
Автор поста оценил этот комментарий

Никакой журналистики. Просто не хочется об этом говорить на виду у всех. Может какой-то другой канал для связи?

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
Нет
показать ответы
0
Автор поста оценил этот комментарий

В другой теме ты отвечал по СВО

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
Неа, не пришлю, здесь спрашивай. Ато потом пишет "журналист", хочу сотрудничать, " Слей мне шо-нибуть"
показать ответы
0
Автор поста оценил этот комментарий

Привет, спасибо за отклик и помощь. Пришли пожалуйста свою телегу на почту bevosis728@dusyum.com

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
??? Какую помошчь?
показать ответы
0
Автор поста оценил этот комментарий

я не знаю синтаксис питона.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

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

показать ответы
DELETED
Автор поста оценил этот комментарий

Ваш код не запустится, у вас переменная i не определена

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ой, классно. А у меня ещё и другие переменные не обьявлены

1
Автор поста оценил этот комментарий

Ахахахахахахаххаха)))))))))00))))


Сколько будет дважды два?


- четыре

- да

- так точно!

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Нет, не так.

Вот, например, одно из старых заданий (и ответ не четыре), сейчас и задачи куда сложнее:

Иллюстрация к комментарию
2
Автор поста оценил этот комментарий

Всеармейских Олимпиад

Звучит покруче специальной олимпиады.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Да нет, просто куча курсантов, собранных в одном месте, решающих интересные математические задачи

показать ответы
3
Автор поста оценил этот комментарий

Как много нам открытий чудных... У меня вот 6 лет стажа и 10 лет профильного образования, а один фиг всё ещё сложно)

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

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

DELETED
Автор поста оценил этот комментарий

Да, а ты в курсе что у тебя ошибка в цикле. Чему равна N. N всегда конечное число а не бесконечность. С тем же успехом в цикле можно было написать просто true и цикл так же был бы бесконечный. Ну и  можно было внести i++ и s+=i

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Конечное, абсолютно верно, я думал, из изложения задачи понятно, что это число вводится пользователем

DELETED
Автор поста оценил этот комментарий

Ох ты блин.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Я извиняюсь, если написал чушь. Просто моё наблюдение

показать ответы
DELETED
Автор поста оценил этот комментарий
Готовлю часть 2
7
Автор поста оценил этот комментарий

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

2. Далеко не все программисты программируют сложные вычислительные системы. Очень часто, думаю что более 90% (но это не точно) - это банальные вычисления для банальных задач типа "повторить 5 раз и передать значение". Где гораздо дешевле использовать просто навыки программирования и арифметику, не задействовав сложную математику и дорого профессора кафедры, чтобы автоматизировать процессы, которые задалбывает пользователя повторять 10 раз в день.

3. По большей части под капотом системника в упрощенной функции, происходит всё тоже самое, что и расписанной в начальном примере построчным кодом.
Не задумывались, что компьютер не пользуется таблицей умножения, а считает все по сути "палочками" 2+2 = (1+1)+(1+1), 2*3 = (1+ 1) + (1+1) + (1+1). (ну, там тоже есть свои математические штучки, но не все так красиво, как кажется ТСу).


4(-). И если критична скорость вычислений, настолько, что нужно использовать навыки высшей математики, то это все же не пайтон.

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

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ге-ни-аль-но! Ты думал, я не знал, зачем такие задачи? Да у меня прямо сейчас есть пример задачи, которая "не для обучения циклам и остальной фиговине" При этом решается горой циклов, но математически решается проще

1
Автор поста оценил этот комментарий

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

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

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий
Я математик. Первые три курса у нас были общие с физиками и информатиками. Сейчас тоже работаю с питоном, но как математик, поэтому да, мне математика важна.
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Да я сам любитель, из математики у меня пара Всеармейских Олимпиад по математике в которых мне посчастливилось участвовать. На самом деле удивительно, то, что  существует только на листе бумаги, привлекает столько внимания)

показать ответы
DELETED
Автор поста оценил этот комментарий

Как бы всё верно, но очень уж просто.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Вот в этом фишка математики для программиста - вместо нескольких строк всего одна) Плюс экономия памяти

показать ответы
2
Автор поста оценил этот комментарий

ошибка не в этом, возможно n задана раньше, самой N в сумме не хватает, там должно быть <=.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Не обязательно. Конечно это ошибка, либо раньше просто было N-1, что не имеет смысла. Очевидно тут я ошибся) Не судите строго, я пью коньяк сейчас, и я орк)

показать ответы
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Наоблорот, в питоне, если ты указал тип переменных, она останется этого типа до страшного суда, в некоторых других языках такого нет, переменные там это то, что им назначили

показать ответы
DELETED
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

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

DELETED
Автор поста оценил этот комментарий

Не, я в другом смысле слова "просто". Пример очень простой, уровень 6-8 класса. И это... В питоне не используют циклы. Если есть цикл, значит надо переписать код.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Пример, да, это изучается в 8-м классе, но фишка не в этом

3
Автор поста оценил этот комментарий

Как много нам открытий чудных... У меня вот 6 лет стажа и 10 лет профильного образования, а один фиг всё ещё сложно)

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Я просто на досуге интересуюсь математикой, много книг про нее современных читаю. Но вообще я работаю орком)

5
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

На самом деле ничего сложного, у меня с математикой и программированием до армии плохо было) Потом как то перестроился мозг

показать ответы
3
DELETED
Автор поста оценил этот комментарий

Круто.

Я бы так сделал:


sum(list(range(1, N+1)))

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Тоже самое у тебя, но с использованием функций библиотеки math)

показать ответы
24
Автор поста оценил этот комментарий

Благодаря своим знаниям математики, ты научился циклам на питоне и прошёл этот тест?

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Наоборот, зачастую я путаю While и For. В Lua всё проще)

64
Автор поста оценил этот комментарий
всё прекрасно, только пример высосан из пальца. Обычно если нужно найти сумму, то это сумма какого-либо свойства определенного списка объектов, а не сумма прогрессии, и тут без циклов никак
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Да и если ряд гармоничный (если уж мы про циклы говорим), то формула всегда есть

64
Автор поста оценил этот комментарий
всё прекрасно, только пример высосан из пальца. Обычно если нужно найти сумму, то это сумма какого-либо свойства определенного списка объектов, а не сумма прогрессии, и тут без циклов никак
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

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

показать ответы