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

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

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

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

Использование формального языка


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

Простой пример – присваивание переменной. Непрограммисту покажется, что две следующие строки на Python означают одно и то же:

x = 5

5 = x

Я мог бы прочитать обе эти строки так: «пятёрка обозначена через x». Но на самом деле всё не совсем так, и лишь первый вариант корректен. Код Python x = 5 – это инструкция, обязывающая привязать значение 5 к символу x. С другой стороны, нельзя привязать символ к значению литерала 5. Может показаться, что это излишне педантично, но вы же должны знать, как правильно пишутся программы.

Другой пример, на котором прокалываются программисты-новички (равно как и опытные) – это ссылочная эквивалентность.

>>> class A(): pass
...
>>> A() == A()
False

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

Следите за новыми математическими объектами, которые выглядят, казалось бы, знакомо, а на практике проявляют неожиданные свойства. Например, если буквы A и B представляют числа, то A x B = B x A. Но так может и не быть, если A и B – не числа. Так, если A и B – это матрицы, то произведения A x B и B x A обычно будут отличаться. Может быть и так, что лишь одно из этих произведений является возможным, либо ни одно не является.

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

Пишем собственный калькулятор


Калькулятор — не редкость на уроках математики, ведь с его помощью удобно проверять работу. Вы должны уметь умножить в уме шесть на семь, но чтобы убедиться, что ответ действительно равен 42 – можно проверить его на калькуляторе. Также калькулятор помогает экономить время, когда концептуально предмет уже усвоен. Если вы занимаетесь тригонометрией и хотите узнать, сколько будет 3,14159 / 6, то калькулятор вам очень поможет, а вы сможете задуматься о смысле этого ответа. Теоретически, чем больше функций в калькуляторе реализовано «из коробки», тем полезнее он должен быть.

imageКалькулятор для учеников, которые учатся считать

Но иногда калькуляторы чрезмерно усложняются, что не идёт им на пользу. В старших классах мне потребовалось обзавестись графическим калькулятором, и я раздобыл TI-84. На нём было примерно 40 кнопок, и для каждой было предусмотрено два-три режима работы. Я умел работать примерно с 20 из них, так что освоить этот инструмент стоило большого труда. Такая же история была и в первом классе, где даже на простейшем калькуляторе были такие клавиши, которых я на тот момент не понимал. Если бы потребовалось изобрести калькулятор для студентов, то он выглядел бы примерно как на рисунке выше.

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

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

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

Нам пока не требуется кнопок для вычитания, умножения и деления, чтобы справиться с нашими задачами. Если у вас будет пример на вычитание, скажем, «5 — 2», то всё равно можно убедиться в правильности ответа 3 и на таком калькуляторе, убедившись, что «3 + 2 = 5.» Аналогично, можно решать и примеры на умножение, последовательно складывая множители. Далее можно усовершенствовать калькулятор так, чтобы на нём выполнялись все арифметические действия, после того, как напрактикуетесь с показанным выше.

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

Расширяемые калькуляторы, поддерживающие множество типов данных – пример слегка натянутый, но именно таким инструментом вы и пользуетесь, когда пишете на высокоуровневом языке программирования. В Python зашита арифметика, предусмотрен математический модуль, а ещё можно подтянуть множество сторонних математических библиотек, чтобы ваше рабочее окружение стало мощнее (если захотите). Поскольку язык Python является Тьюринг-полным, на нём (в принципе) вычислимо всё, что может быть вычислено. Для этого потребуется лишь достаточно мощный компьютер, достаточно умная реализация, либо и то, и другое.

Наилучший способ изучить, как Python может помочь вам с математикой – закопаться в язык и начать его использовать. Самостоятельная проработка различных реализаций – отличный способ закрепить представления о новой концепции – и вот, у вас в арсенале появляется новый инструмент. Опробовав инструмент самостоятельно, вы всегда можете заменить его на вылизанную мейнстримовую библиотеку (если захотите). В любом случае, новые инструменты, которые вы исследуете или импортируете, подготовят вам почву для исследования ещё более масштабных идей.

Построение абстракций из функций


В программировании вышеописанный процесс называется «абстрагированием». Когда вы устаёте раз за разом складывать числа, вы создаёте абстракцию умножения – и так далее.
Важнейший из всех способов создания абстракций в программировании, который применим и в математике – это создание функции. Функция в Python – это способ многократно выполнять некую задачу, которая может принимать на вход одно или несколько значений, а потом давать вывод. Например:

def greet(name):
  print("Hello %s!" % name)

Так можно выдать множество приветствий при помощи краткого выразительного кода:

>>> for name in ["John","Paul","George","Ringo"]:
...   greet(name)
...
Hello John!
Hello Paul!
Hello George!
Hello Ringo!

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

image

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

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

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

Комментарии (44)


  1. i360u
    00.00.0000 00:00
    +62

    Статья о пользе математики в программировании, и ни слова о теории множеств, теории графов, теории хаоса, теории игр, нечеткой логике, генетических алгоритмах и даже о дифференциальном исчислении и асимптотическом анализе? Вы серьезно, калькулятор для складывания целых чисел?


    1. nulovkin
      00.00.0000 00:00
      +9

      Наверное, какой-то тролль, как с той статьей, где объясняли, как обвести qr-код ручкой по экрану.


    1. iig
      00.00.0000 00:00

      Вы серьезно, калькулятор для складывания целых чисел?

      А что не так? Это тоже программирование. И немного математика ;)


    1. vDyDHp8
      00.00.0000 00:00
      +1

      Коты ещё (теория категорий), чистые функции.


  1. sbw
    00.00.0000 00:00
    +1

    Кому-то поможет, кому-то нет. Обычно считается, что математика должна помочь в изучении программирования. Но у меня один приятель в математике шарил, а программирование для него было сложно, так и не осилил. Лично я изучал программирование и математику в универе параллельно и независимо друг от друга ... Короче, всё сложно))


    1. gsaw
      00.00.0000 00:00

      Ну все примеры в статье и показывают, на чем могут споткнуться математики при программировании. Типа "тут вам не там".


      1. Tyusha
        00.00.0000 00:00
        +4

        Вы серьёзно? На 5 = x? Что за детский сад.


        1. Gryphon88
          00.00.0000 00:00

          Кстати, сопоставление в рефале и прологе штука неинтуитивная, но полезная.


        1. Neusser
          00.00.0000 00:00

          Почему детский сад? Нет большой разницы между 5 = x и популярными ошибками типа

          if x = 5

          или

          if x = 5 or 6 or 7


          1. Tyusha
            00.00.0000 00:00

            Как связаны банальные синтаксические ошибки с математикой?


          1. kertAW
            00.00.0000 00:00
            +1

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


            1. Neusser
              00.00.0000 00:00

              Спасибо, кэп! Я написал то же самое.


            1. CTheo
              00.00.0000 00:00

              Написал if x = 5 на прошлой неделе. C 20 летним опыт. Хорошо что в IDE было предупреждение, которое, правда, я заметил только через 5 минут после написания кода, уже работая над другим участком.


              1. iig
                00.00.0000 00:00

                А когда предлагаешь писать if 5 = x - все такие "фу, пережитки прошлого, как можно, IDE всё исправит"..


      1. domix32
        00.00.0000 00:00

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


    1. edogs
      00.00.0000 00:00
      +1

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

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


      1. rutexd
        00.00.0000 00:00
        +1

        Вещи это не одни и теже. И не одного поля. То что вы описали это алгоритм в целом. Последовательность действий. Рецепт приготовления торта или рисование картины - точно такие же алгоритмы, где то проще - где то сложнее, с большим количеством факторов.

        Что бы уметь писать код - не нужно знание математики. Достаточно лишь понимать что стоит за твоим кодом. Что стоит за числовой переменной, что за представлением строки, за функцией. И понимать банально control flow. Да даже по факту не нужно знать как процессор с числами работает и почему нельзя создать 1, 2 байта, условно. Главное просто принять правила и все. Готово. Вы умеете писать код. И если есть понимание алгоритма - есть умение всего остального. Можно продолжить тему что делает программиста хорошим программистом, но это вне данной темы уже

        А что бы понимать математику - достаточно знать почему 1+2 * 3 =7? Если на совсем простом уровне - да. А завтра вас спросят что такое интегралы, теория графов, множеств и прочая радость математики. И хорошо если вы ещё ответить сможете - ведь после вашего ответа вам дадут уравнение с х неизвестными, где каждый параметр будет в совсем другом синтаксисе в двух или трех разных системам измерения одновременно как оно часто и бывает, где вам надо будет угадать что имеется в виду и под ваш вопрос самостоятельно подогнать параметры с замахом на квантовую механику и теорию струн, где даже сами учёные не знают ничего толком и ищут формулы досихпор. И вам что бы ответить хотя бы на несколько вопросов недостаточно будет понимать 1+2*3. Совершенно. И тут надо понимать и анализировать огромное количество данных и искать в них связь и пытаться как то отнести одно к другому, а не просто читать сверху вниз и пытаться быть биологическим процессором для поиска буквы среди известного множества букв.

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

        Я в свое время математику сильно загубил. И сейчас жалею.


        1. edogs
          00.00.0000 00:00

          Что бы уметь писать код - не нужно знание математики. у не нужно знать почему нельзя создать 1, 2 байта, . Главное просто принять правила и все. Готово. Вы умеете писать код Можно продолжить тему что делает программиста хорошим программистом, но это вне данной темы уже

          Речь не шла о том, что надо уметь доказывать теорему ферма, вот вообще нигде.

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

          Простое "принятие правил" сделает из человека максимум ChatGPT, хотя не факт что и Copilot получится хотя бы. Это уровень crud без пнимания происходящего.


          1. lair
            00.00.0000 00:00

            Просто если нет понимания математики (не каких-то узкоспециализированных знаний, а общего понимания, которое невозможно без некоторых базовых знаний)

            Что такое "общее понимание математики"? Это то, которое в обычной общеобразовательной школе дают, или что-то другое?


            1. iig
              00.00.0000 00:00
              +1

              Это то, которое в обычной общеобразовательной школе дают, или что-то другое?

              Хотя бы да. Если человек научился умножать в столбик и раскрывать скобки - сможет научиться и обходу дерева. Смог выучить таблицу умножения - сможет синтаксис C выучить. Не смог? Ну, наверное, сложно ему будет..


              1. lair
                00.00.0000 00:00

                Тогда это весьма бессмысленное требование - оно тривиально.


            1. edogs
              00.00.0000 00:00

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


              1. lair
                00.00.0000 00:00

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

                Это было в школе. А еще навык решения сложных задач не уникален для математики.

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

                А зачем это в общем программировании?

                Игру в бисер читали?

                Читал слишком давно, чтобы помнить.

                Вот там крайний случай связности наук, но в целом вектор примерно тот же что и в математике/программинге.

                Программирование (которое software engineering) - это, на самом деле, не наука. Но я думаю, что это разделение в данном случае не очень важно для дискуссии.


                1. edogs
                  00.00.0000 00:00

                  Программирование (которое software engineering) - это, на самом деле, не наука. Но я думаю, что это разделение в данном случае не очень важно для дискуссии.

                  Это разделение это собственно как раз то, из-за чего и есть разница во взлядах. С нашей точки зрения программирование это наука, а crud это не программирование, исходя из этого - математика отнюдь не лишняя для программиста. Если исходить из того, что программирование это не наука, а copilot программист, то тогда математика для программиста не нужна разумеется.


                  1. lair
                    00.00.0000 00:00

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

                    А эта точка зрения подтверждается каким-нибудь общепринятым определением, или это просто ваша убежденность?

                    crud это не программирование

                    ...а это противоречит общепринятым определениям.

                    программирование это не наука, а copilot программист

                    А эти два тезиса не вытекают один из другого. Программирование - не наука, но copilot - не программист.


          1. rutexd
            00.00.0000 00:00

            Речь не шла о том, что надо уметь доказывать теорему ферма, вот вообще нигде.

            Я снова утрирую, но а зачем еще существует математика если не для описания сложных вопросов? Как часто вы решаете проблемы 1+2*3 в вашем коде с использованием математики в громком смысле слова и тяжелых раздумий? Я могу предположить, что вы над подобными расчётами вы в вашем коде почти не задумываетесь и делаете их машинально. Затупы конечно у всех бывают, но не до такой степени :)

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


            1. anka007
              00.00.0000 00:00

              Учитывая, что математика во многом развивалась и вдохновлялась задачами из материального мира, то столкнуться с ней можно в практически любой области, взаимодействующей с физическим миром. И чем тоньше и глубже взаимодейтсвие, тем сложнее математика. Да и сфера чисто компьютерных абстракций уже развилась настолько, что для организации оптимальной работы требуются алгоритмы с не самой простой математикой (например big data и векторные вычисления). Правда последнее время вместо того, чтобы задуматься о лежащем в основе явления законе, предпочитают обратиться по API к AI.


        1. randomsimplenumber
          00.00.0000 00:00

          Что бы уметь писать код - не нужно знание математики.

          Дык крутить ручку арифмометра тоже можно без знания математики ;) Делать какие-то вменяемые расчеты - придётся получить теорию.


        1. Survtur
          00.00.0000 00:00

          Что бы уметь писать код - не нужно знание математики.

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

          Обязан ли я знать математику сортировки, чтобы запрограммировать вывод список чисел по убыванию, или я должен только знать, что это делает команда sort()?


          1. iig
            00.00.0000 00:00

            Написание кода - это в большинстве случаев просто декомпозиция задачи на шаги и подзадачи

            В математике доказательство теоремы это тоже декомпозиция.


          1. anka007
            00.00.0000 00:00

            Так математика - это поиск решения задачи в строгих формальных правилах, и последовательная запись решения в строгих формальных правилах.


            1. Survtur
              00.00.0000 00:00

              ЕСЛИ то_что_вы_написали ТО программирование_это_математика


              1. anka007
                00.00.0000 00:00
                +1

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


                1. Survtur
                  00.00.0000 00:00

                  Теорию множеств, как таковую, я не проходил нигде. Но понимаю, что "Петя - Человек", не означает, что "любой человек - Петя". И я сам люблю приставать к людям с такого рода замечаниями, поэтому лайк вам :-)


  1. anka007
    00.00.0000 00:00
    +17

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


  1. prishelec
    00.00.0000 00:00

    Если начать с математики свой путь в программирование, то я не думаю что много дойдет до:

    x = 5

    5 = x

    Пожалейте хотя бы дальнобойщиков которые в возрасте после 30+ хотят перейти в IT. :)


  1. sci_nov
    00.00.0000 00:00

    про особенность присваивания я был удивлен классе так в 7-8 м на курсах по информационным технологиям (было это в 97-98 гг, называлось по другому, что-то вроде "Физика атмосферы и радиосвязь" :) ). Математика тут в стороне, как мне кажется. Уметь их соединять - другой вопрос.


  1. vadimr
    00.00.0000 00:00

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


  1. sergey_privacy
    00.00.0000 00:00
    +3

    1. Статья вообще не соответствует заголовку.

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

      Я написал свою первую программу на бейсике в 88 году. Потом было много всего: и асм, и С/С++, и РНР, и 1С и т.д. Бухгалтерия? Там какие то отчеты, запросы, выборки, отображение. Сайты? Получил, отпарсил, отфильтровал, положил в базу, выбрал из базы, отобразил. Битра? ООП, выборки, логика, отображение, доп.сущности. Ты сушишь голову несколько лет в институте разными аспектами высшей математики, а на практике ИТ и высшая математика очень редко пересекаются. Школьной программы "за глаза" для решения большинства задач.


    1. sci_nov
      00.00.0000 00:00

      так задачи разные; простому программисту особенно знать вышку и не надо, а вот тому, кто соединяет программирование с построением алгоритмов - надо. Линейная алгебра и мат. статистика / теория вероятностей - must have для "непростых" программистов, остальное - по мере надобности.


  1. Azazazakot
    00.00.0000 00:00

    Спасибо за мотивацию дальше учу математику✊


    1. sergey_privacy
      00.00.0000 00:00

      Не стоит. Чуть выше ответил:

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

        Я написал свою первую программу на бейсике в 88 году. Потом было много всего: и асм, и С/С++, и РНР, и 1С и т.д. Бухгалтерия? Там какие то отчеты, запросы, выборки, отображение. Сайты? Получил, отпарсил, отфильтровал, положил в базу, выбрал из базы, отобразил. Битра? ООП, выборки, логика, отображение, доп.сущности. Ты сушишь голову несколько лет в институте разными аспектами высшей математики, а на практике ИТ и высшая математика очень редко пересекаются. Школьной программы "за глаза" для решения большинства задач.

      • Я написал свою первую программу на бейсике в 88 году. Потом было много всего: и асм, и С/С++, и РНР, и 1С и т.д. Бухгалтерия? Там какие то отчеты, запросы, выборки, отображение. Сайты? Получил, отпарсил, отфильтровал, положил в базу, выбрал из базы, отобразил. Битра? ООП, выборки, логика, отображение, доп.сущности. Ты сушишь голову несколько лет в институте разными аспектами высшей математики, а на практике ИТ и высшая математика очень редко пересекаются. Школьной программы "за глаза" для решения большинства задач.


      1. iig
        00.00.0000 00:00
        +1

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


  1. EvgenyKlimov
    00.00.0000 00:00

    "квадратная функция"? О, это что-то новенькое. Видимо, это интеграл от круглой функции