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

Добрый день! Мучает такой вопрос. По специальности я эникейщик, хочу обучиться на программиста, но по математике всегда были двойки, не учил никогда, знаю таблицу умножения, довольно хорошо считаю, но в остальном полный ноль, смогу ли я обучиться с этими знаниями, или нет? Если нет, проинформируйте, что из разделов математики мне нужно знать и(или) литературу. Задачи, которые собираюсь решать программированием, это скорее веб разработка (JavaScript, PHP, возможно Python). Заранее спасибо!

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Этот топик — очередное доказательство, что тема «математика и программирование» снова и снова будет обсуждаться. Ответ есть: вот учебник «Математика програмістам»: dou.ua/forums/topic/24851

Если вы не осилили школьную программу по математике, и вас это беспокоит, то освоить нужно именно её. Соответственно литература — школьные учебники. Или зайдите в какую — нибудь «Студию 2×2», «Математика качественно и без боли» и.т.п.

Привіт! В мене теж з математикою було дуже погано (так і не навчився рішати діфури), але це не завадило стати мені формошльопом!

Ось поради:

JavaScript
Завтра ищешь в интернете книжку HTML5 Canvas. Похуй если ничего не поймешь. Затем идешь на w3.org и изучаешь стандарты от корки до корки. Потом зубришь, именно, сука, вызубриваешь содержимое сайта developer.mozilla.org, чтобы от зубов отскакивало. Когда напишешь свой первый сайт — видеоредактор, по пути детально разобравшись в WebGL, скачиваешь и изучаешь любой редактор, рекомендую Notepad++ или Adobe Dreamweaver. Как переделаешь редактор, чтобы можно было добавлять объекты из 3DSMax и красивые 3D-переходы, можешь идти дальше — тебя ждет увлекательный мир JavaScript. WebCL, XUL, сверхбыстрый асинхронный Node.JS, сверхмощная мозговыебывательная многоуровневая обфускация. ... уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Python
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода — PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше — тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. ... уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.

Все просто, потрібно лише мати наполегливість.

Что-то освоишь, что-то, возможно, не освоишь... Главное, какие перед тобой цели и альтернативы? Начинай изучать, если почувствуешь недостаток математики — не так уж и сложно оценить величину пробела и либо восполнить, либо переключиться на что-то другое.

Если исключить математические вопросы, которые могут возникнуть на собеседовании, все таки поучите булеву алгебру и вообще мат логику.
Знаю некоторых functional configurator, считай эникейщиков, которые валились на написании формул и понимании, как правильно работать с AND и OR.

так, вже екзамен на трійку здав ;) (старий бородатий анекдот)

Это специфические математические разделы, которые не всякому математику нужны. Зачем? На практике нужны битовые операции, но даже тут скиллы большинства нагуглить Bit Hacks, а прочитать их в коде уже проблемы...

У Бернарда Шоу спросили, умеет ли он играть на рояле.
— Не знаю, не пробовал!
И Ты не будешь знать, пока не попробуешь.

Все зависит от способности учится, но этот навык можно развить. Советую почитать книгу «В работу с головой. Паттерны успеха от IT-специалиста» — это первое что нужно сделать чтобы добиться успеха. Потом идти по списку habr.com/post/260201

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

для web разработки математика не нужна

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

автомат Калашникова

Тот случай когда закончил универ, а привычка вставлять в простынях текста ерунду осталась со времён написания курсачей :)

На самом деле тут не ерунда, а знание стандартной шутки. Вот надо ли её было вставлять сюда — уже вопрос стиля.

Не пугайте, большинству формошлепов это нафиг не нужно знать

Цікаво, а автори, які це писали, серйозно вірили в те що несуть, чи все ж просто задались метою зібрати в одне місце всі ключові слова, до яких тільки змогли дотягнутись?

Колись цей список був трохи коротший,
і можна було якщо не все-все, то якусь частину по-кожному пункту знати :)

Благодарим за новые требование для Джуниор специалистов.
С уважением, HR отдел большой аутосорс компании.

и все это за 500$ и 2 недели отпуска

це список на джуніор позицію?
до речі, списочок місцями трохи застарілий, років на 10 точно

нынче от джунов требуют топ 3% во всяких рейтингах

Большая часть того, что ты тут написал полная чушь в отношении наших реалий программирования, а некоторая информация вообще не имеет ничего общего с ИТ ) Интересно, это ты писал?

Тогда уж сразу сошлитесь на оригинал.
Там же и разъяснения по составу и принципу формирования.

... И это только чтобы считаться!
А уж чтобы БЫТЬ — все это возвести в куб!!!
(и не поленился же столько накопипастить...)

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

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

Интересно но факт — даже в поиске ошибок тебе часто пригодятся некоторые мат теории, к примеру: «метод половинного деления» и тд...

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

Математика это скорее искусство построения доказательств. Описана скорее прикладная математика.

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

но по математике всегда были двойки, не учил никогда

А по чем двоек небыло, что когданибуть учили ?

Физкультуру ? Боюсь ответ будет разочаровующий...

если не идти в machine learning и прочий датасаенс, то не нужна математика. Ну может немного на уровне понимания что такое функция и логарифм для оценки сложности алгоритмов

З приводу потрібності логарифмів у програмуванні я вже якось півкоментаря накатав :) Зараз бачу, що надлишково емоційно, але своїх слів не відмовлюсь
dou.ua/...​rums/topic/24851/#1407794

З приводу потрібності логарифмів у програмуванні

ну ок, по большей части они нужны на собеседованиях =) и то не в Украине

если не идти в machine learning и прочий датасаенс, то не нужна математика.

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

А лучше вообще не идти в программирование.

а если только frontend с его связкой HTML+CSS+JS+фреймворки этих технологий ??

Всё равно элементарные вещи нужны — булева алгебра, битовые операции и проч. Естественно, знание работы операторов в джс, приоритета и т.п. — это прямой отзыв к математике.

Периодически оказывается нужна, хотя серьезно в ML с DS не совался, но мой опыт несколько специфичен ©

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

гомотопическая теория типов

ненужна

Почитал о нём, охренел, не удивительно, что он такое говорит.

знаю таблицу умножения

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

я как раз и хочу именно в Web, дальше JS/PHP/Python идти и не думаю

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

Алгебра логіки, система числення.

Не

Алгебра логіки

а всього лиш кілька нещасних таблиць істинності :) Бо якщо вчити булеву алгебру по-чесному, то там можна довчитись до ручки теореми Стоуна про представлення булевих алгебр чи теореми про розширення фільтра до ультрафільтра (забув як точно називається). Остання доводиться з застосуванням аксіоми вибору — та ще радість.

З неї і варто починати вчити математику програмісту.

Зависит от того, как в данной области видимости определна полугруппа для кортежей :)

сколько будет 0,1 + 0,2 ?

А ми купуєм чи продаєм?

0,1,2 — по крайней мере на питоне :) ps: это была шутка юмора

Залежить від того що там після ? йде — en.wikipedia.org/wiki/?

0,1 + 0,2

боюсь что интерпретатор/компилятор выдаст синтаксическую ошибку)

> python
Python 2.7.15 (default, May 21 2018, 17:53:03) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0,1 + 0,2
(0, 1, 2)
>>> (0,1) + (0,2)
(0, 1, 0, 2)
>>>

що перше прийшло в голову, там і попробував
у консолі хрома смішніше
> 0,1 + 0,2
< 2
> (0,1) + (0,2)
< 3

Значит мои опасения по поводу запятой в десятичных и т.п. дробных числах были напрасны. :)
P.S. Питон таки рулит. :)

дело не в локали, просто раз предполагается сложение двух чисел, то по-идее по-программирерски это правильнее записать как 0.1 + 0.2, и в этом случае питон (консоль, запущенная в редакторе PyScripter) выдает

*** Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32. ***
*** Remote механизм Python является активным ***
>>> 0.1 + 0.2
0.30000000000000004
>>>

Причем насколько помню JavaScript примерно то же самое выдает)
(насколько помню - это известная особенность разных интерпретаторов).

А конструкцию 0,1 + 0,2 каждый язык действительно будет по своему интерпретировать, так например интерпретатор питона, насколько я понимаю ее воспринимает как (0,1) + (0,2), т.е. как сложение не чисел, а кортежей.

Да ладно, не в локали ;). Распарсь строку «0,1 + 0,2». заюзаешь английскую будет одно, заюзаешь русскую, украинскую, будет другое.

Так я не локаль имел ввиду, а запятые в цифрах в программировании (типа надо 0.1 писать, а не 0,1 и все такое).
А то что локаль тоже влияет на результат — это 100%)

Про питон выше уже было, он воспринимает, как 0 (1+0) 2

т.е. ты имел ввиду " 0,(1+0),2 «? (ибо если в консоли питона ввести» 0 (1+0) 2 ″, то он выдаст синтаксическую ошибку). Ну в принципе да, я о таком (более логичном) варианте скобок не подумал. По крайней мере, в любом из приведенных случаев, питон выводит не тот результат, который от него ожидает юзер))

Согласен, мне надо было сразу пояснить)

0.3000000000000000444089209850062616169452667236328125, если правильно завершить эту идею.

А у вас, кстати, округление в конце неправильное, что в свете этого сообщения очень удивляет.

Это любой с поддержкой IEEE754 64-bit binary, он же double. У тебя такой же.

То, что я вывел — это точный перевод двоичного значения в десятичный вид.
Более привычное 0.30000000000000004 это не точный перевод, а самая короткая из форм, которая обратно переводится в то же двоичное значение.

Там 6 байт на мантиссу. Это 48 бит.

Ошибаешься. В binary64 — 52 явно хранимых бита мантиссы (точнее, там это называется significand), и ещё один подразумевается всегда 1, если число нормализованное (как в данном случае). Итого 53.

Соответственно:

$ ipython
In [1]: '%.52f' % (0.1*3)
Out[1]: '0.3000000000000000444089209850062616169452667236328125'
In [3]: '%.53f' % (0.1*3)
Out[3]: '0.30000000000000004440892098500626161694526672363281250'

дальше увеличивать — будут добавляться только нули, меньше — начнётся округление.

80 бит я этими средствами вызвать не могу, надо компилировать явно под такое, покамест облом. x86 FPU их умеет всегда, только надо 1) заставить компилировать соответствующие команды, 2) включать режим под это (по умолчанию может быть включен какой-то урезанный).

6-я студия их юзала, насколько я помню.

На 32 битах до SSE альтернативы-то толком и не было. Хотя она вроде и 386 без сопроцессора как-то поддерживала...

Сейчас как-то почти никто этим не заморачивается.

История гласит, что те 80 бит были введены для того, чтобы обеспечить точность финальных 64-битных результатов сложных операций типа возведения в степень (!) которая на FPU делалась как pow(x,y) = exp2(y*log2(x)), при том, что встроенные команды давали exp2(x)-1, log2(x+1), и масштабирования. Это давало погрешность аж до 1 ULP, что было для тех времён фантастикой. Ну и то, что пытались в FPU87 впихнуть все трансцедентные операции, тоже было особенностью того времени. Сейчас так не делают: FPU всех видов делают только десяток базовых операций, из которых деление обычно самая сложная, а всё остальное — на софт. А после того, как сделали точные алгоритмы подсчёта таких функций (в основном это сделали Sun и IBM) — и не планируют, промежуточные расчёты повышенной точности с такими алгоритмами не нужны.

прошу простить мою безалаберность, но вы правильно уловили ход моих мыслей — я выразил именно идею :) я не преследовал цели быть истиной в последней инстанции.

Підписатись на коментарі