×Закрыть

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

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

LinkedIn

Лучшие комментарии пропустить

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

C++, стандарт, Comeau, 1TBS, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII/copy-and-swap/exception-safety, правило пяти, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff’s device, Boost, Сик-Ламсдейн/Карлссон, TR on C++ performance, тест Степанова, forwarding problem/move semantics, SPECS

Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile

Мультитредность, обедающие философы, deadlock/livelock/race condition/starvation, атомарность, lock инструкции процессора, memory model/barrier/ordering, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, закон Амдала, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads, future/deferred/promise, модель акторов

Язык ассемблера, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, x86, FPU/MMX/SSEn/AVX, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг, язык ассемблера ARM

Аппаратное обеспечение, Хоровиц-Хилл/Титце-Шенк/От физики к Си от panchul, полупроводниковая электроника/спинтроника/фотоника, транзистор, триггер, схемотехника, микрокод, технология создания процессоров, logic synthesis, static timing analysis, FPGA, Verilog/VHDL/SystemC, SISAL, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn’s taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86, VID/PID

Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, static/dynamic branch prediction, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах (SMP/NUMA), тайминг памяти

Дискретная математика, K2, теорема Поста, схемы, конечные автоматы (ДКА и НДКА), автомат Калашникова, клеточные автоматы

Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем

Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА → ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM/Emscripten, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL

Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос/e-maxx.ru, структуры данных, алгоритмы, сложность, символика Ландау, теорема Акра-Баззи, time-space tradeoff, классы сложности, NP-полные задачи, КМП, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика

Численные методы, дихотомия/метод Ньютона, интер- и экстраполяция, сплайны, метод Гаусса/Якоби/Зейделя, QR и LU-декомпозиция, SVD, МНК, методы Рунге-Кутты, метод Адамса, формулы Ньютона-Котеса, метод Ритца, метод Бубнова-Галеркина, метод конечных разностей/элементов, FFT/STFT, сходимость и устойчивость

Машинное обучение, Рассел-Норвиг/Bishop, подходы к моделированию AI, переобучение/кроссвалидация, байесовские сети, нейросети, сети Кохонена, Restricted Boltzmann machine, градиентный спуск/hill climbing, стохастическая оптимизация (метод Монте-Карло, метод отжига, генетические алгоритмы, муравьиные алгоритмы), SVM, gradient boosting, кластерный анализ, метод главных компонент, LSH, обучение с подкреплением, MDP, information retrieval/data mining/natural language processing, машинное зрение, Szeliski, OpenCV, image processing, OCR, фильтры Собеля, каскад Хаара, Viola-Jones framework, SURF, введение в психофизиологию зрения, IPython/pandas/scikit-learn

Теория информации, сжатие, Хаффман, RLE, BWT, LZ, коды коррекции ошибок, сжатие с потерями (изображения, аудио, видео), информационная энтропия, формула Шеннона, сложность Колмогорова

Криптография, Шнайер/Ященко, Принцип Керкгоффса, симметричная (DES, AES), асимметричная (RSA), качество ГПСЧ, алгоритм Диффи-Хеллмана, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки (атака гроссмейстера), WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, PKI, HTTPS/SSL, доказательство с нулевым разглашением, пороговая схема

Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, Spivak/Dummit-Foote, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)

Физика, правила Кирхгофа, закон Джоуля-Ленца, комплексное сопротивление, скорость и частота света, уравнения Максвелла, лагранжиан и гамильтониан

Химия, стехиометрия, химия кремния

Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер/Буч, защитное программирование, паттерны, SOLID/GRASP/KISS DRY SPOT/YAGNI, UML, OOP (Smalltalk), OOD/OOA, метрики кода

Методологии разработки, Waterfall/RUP/Agile/Scrum/Kanban/XP, TDD/BDD, CASE

Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI

Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), DWARF debug information format, дизассемблеры и декомпиляторы (IDA/HexRays/Reflector), системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ (lint, cppcheck), динамический анализ (valgrind, фаззинг), верификация и валидация ПО (Frama-C, RAISE (RSL), Coq), профайлинг, багтрекеры, документирование кода, системы сборки (CMake), пакетные менеджеры (NuGet)

Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre

Операционные системы, Silberschatz/Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Love/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер устройств, менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX

Компонентно-ориентированные модели, Роджерсон/Таварес, COM/OLE/ActiveX/COM+/DCOM RPC, ATL, апартменты, моникеры, MIDL, XPCOM, CORBA, TAO, D-Bus

Сеть, Стивенс, OSI model/Internet model, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг/BGP/OSPF, ARP, атака Митника, syn flood, HTTP/FTP, P2P/DHT, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth/GPS, ACE, Wireshark

Графика и GPGPU, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL/Open Inventor, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA/AMP, ландшафты, лоды, тени, deferred shading, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping, virtual/augmented reality

Форматы, XML/XSLT/XPath/XMLStarlet/DOM/SAX, RTF/ODF, JSON/BSON/bencode, YAML, JPEG/PNG/WebP, AVI/MPEG/RIFF/WAV/MP3/OGG/WebM, SVG, Unicode, кодировки однобайтные/UTF-8/UTF-16/UCS-2/UTF-32, проблемы длины и сравнения Unicode-строк

Базы данных, Грубер/Дейт, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP, семантическая сеть, triplestore, RDF/Turtle, SPARQL, OWL, Semanticscience Integrated Ontology, reasoner, DBpedia

Прикладное программирование, C#/F#, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly, Scala, Хорстманн/Одерски, pattern matching, макросы/квазицитаты

Квантовые вычисления, алгоритм Шора, квантовая криптография

Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), система типов Хиндли-Милнера, монады, тайпклассы, АТД, dependent types, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)

Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/ReactPHP/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/React/Google Closure/ExtJS/node.js, ООП в JavaScript, HTML5, CSS3/табличная и блочная верстка, RSS, canvas/WebGL, Ajax/WebSockets, вопросы безопасности (XSS, SQL injection, CSRF), highload, C10k problem, SWIG

Проектирование GUI и представление информации, Раскин/Тафти, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX

Допустимые теги: 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 разработки математика не нужна

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

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

C++, стандарт, Comeau, 1TBS, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII/copy-and-swap/exception-safety, правило пяти, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff’s device, Boost, Сик-Ламсдейн/Карлссон, TR on C++ performance, тест Степанова, forwarding problem/move semantics, SPECS

Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile

Мультитредность, обедающие философы, deadlock/livelock/race condition/starvation, атомарность, lock инструкции процессора, memory model/barrier/ordering, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, закон Амдала, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads, future/deferred/promise, модель акторов

Язык ассемблера, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, x86, FPU/MMX/SSEn/AVX, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг, язык ассемблера ARM

Аппаратное обеспечение, Хоровиц-Хилл/Титце-Шенк/От физики к Си от panchul, полупроводниковая электроника/спинтроника/фотоника, транзистор, триггер, схемотехника, микрокод, технология создания процессоров, logic synthesis, static timing analysis, FPGA, Verilog/VHDL/SystemC, SISAL, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn’s taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86, VID/PID

Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, static/dynamic branch prediction, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах (SMP/NUMA), тайминг памяти

Дискретная математика, K2, теорема Поста, схемы, конечные автоматы (ДКА и НДКА), автомат Калашникова, клеточные автоматы

Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем

Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА → ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM/Emscripten, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL

Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос/e-maxx.ru, структуры данных, алгоритмы, сложность, символика Ландау, теорема Акра-Баззи, time-space tradeoff, классы сложности, NP-полные задачи, КМП, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика

Численные методы, дихотомия/метод Ньютона, интер- и экстраполяция, сплайны, метод Гаусса/Якоби/Зейделя, QR и LU-декомпозиция, SVD, МНК, методы Рунге-Кутты, метод Адамса, формулы Ньютона-Котеса, метод Ритца, метод Бубнова-Галеркина, метод конечных разностей/элементов, FFT/STFT, сходимость и устойчивость

Машинное обучение, Рассел-Норвиг/Bishop, подходы к моделированию AI, переобучение/кроссвалидация, байесовские сети, нейросети, сети Кохонена, Restricted Boltzmann machine, градиентный спуск/hill climbing, стохастическая оптимизация (метод Монте-Карло, метод отжига, генетические алгоритмы, муравьиные алгоритмы), SVM, gradient boosting, кластерный анализ, метод главных компонент, LSH, обучение с подкреплением, MDP, information retrieval/data mining/natural language processing, машинное зрение, Szeliski, OpenCV, image processing, OCR, фильтры Собеля, каскад Хаара, Viola-Jones framework, SURF, введение в психофизиологию зрения, IPython/pandas/scikit-learn

Теория информации, сжатие, Хаффман, RLE, BWT, LZ, коды коррекции ошибок, сжатие с потерями (изображения, аудио, видео), информационная энтропия, формула Шеннона, сложность Колмогорова

Криптография, Шнайер/Ященко, Принцип Керкгоффса, симметричная (DES, AES), асимметричная (RSA), качество ГПСЧ, алгоритм Диффи-Хеллмана, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки (атака гроссмейстера), WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, PKI, HTTPS/SSL, доказательство с нулевым разглашением, пороговая схема

Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, Spivak/Dummit-Foote, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)

Физика, правила Кирхгофа, закон Джоуля-Ленца, комплексное сопротивление, скорость и частота света, уравнения Максвелла, лагранжиан и гамильтониан

Химия, стехиометрия, химия кремния

Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер/Буч, защитное программирование, паттерны, SOLID/GRASP/KISS DRY SPOT/YAGNI, UML, OOP (Smalltalk), OOD/OOA, метрики кода

Методологии разработки, Waterfall/RUP/Agile/Scrum/Kanban/XP, TDD/BDD, CASE

Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI

Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), DWARF debug information format, дизассемблеры и декомпиляторы (IDA/HexRays/Reflector), системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ (lint, cppcheck), динамический анализ (valgrind, фаззинг), верификация и валидация ПО (Frama-C, RAISE (RSL), Coq), профайлинг, багтрекеры, документирование кода, системы сборки (CMake), пакетные менеджеры (NuGet)

Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre

Операционные системы, Silberschatz/Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Love/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер устройств, менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX

Компонентно-ориентированные модели, Роджерсон/Таварес, COM/OLE/ActiveX/COM+/DCOM RPC, ATL, апартменты, моникеры, MIDL, XPCOM, CORBA, TAO, D-Bus

Сеть, Стивенс, OSI model/Internet model, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг/BGP/OSPF, ARP, атака Митника, syn flood, HTTP/FTP, P2P/DHT, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth/GPS, ACE, Wireshark

Графика и GPGPU, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL/Open Inventor, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA/AMP, ландшафты, лоды, тени, deferred shading, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping, virtual/augmented reality

Форматы, XML/XSLT/XPath/XMLStarlet/DOM/SAX, RTF/ODF, JSON/BSON/bencode, YAML, JPEG/PNG/WebP, AVI/MPEG/RIFF/WAV/MP3/OGG/WebM, SVG, Unicode, кодировки однобайтные/UTF-8/UTF-16/UCS-2/UTF-32, проблемы длины и сравнения Unicode-строк

Базы данных, Грубер/Дейт, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP, семантическая сеть, triplestore, RDF/Turtle, SPARQL, OWL, Semanticscience Integrated Ontology, reasoner, DBpedia

Прикладное программирование, C#/F#, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly, Scala, Хорстманн/Одерски, pattern matching, макросы/квазицитаты

Квантовые вычисления, алгоритм Шора, квантовая криптография

Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), система типов Хиндли-Милнера, монады, тайпклассы, АТД, dependent types, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)

Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/ReactPHP/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/React/Google Closure/ExtJS/node.js, ООП в JavaScript, HTML5, CSS3/табличная и блочная верстка, RSS, canvas/WebGL, Ajax/WebSockets, вопросы безопасности (XSS, SQL injection, CSRF), highload, C10k problem, SWIG

Проектирование GUI и представление информации, Раскин/Тафти, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX

Рад, что не могу

считаться настоящим программистом

))))

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

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

Блин. Надо было его в аппаратное обеспечение перенести.

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

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

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

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

Вот необходимый минимум

Коммент-страшилка для вайтишников :)

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

це список на джуніор позицію?
до речі, списочок місцями трохи застарілий, років на 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: это была шутка юмора

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,2». заюзаешь английскую будет одно, заюзаешь русскую, украинскую, будет другое.

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

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

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

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

Кто ж знал, что ты имел в виду.

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

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

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

это ж что у тебя за CPU, что бит столько?

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

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

Там 6 байт на мантиссу. Это 48 бит. У тебя на вскидку больше значащих десятичных циферок получилось, чем влезет в 48 бит. Или мне просто так показалось. Но есть еще 80 битный плавающий и x86 FPU раньше их умели.

Там 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-я студия их юзала, насколько я помню. Вычисления там часто в 80 битах делались. Ну и понятно, ключики компиляции и т.п. Сейчас как-то почти никто этим не заморачивается.

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) — и не планируют, промежуточные расчёты повышенной точности с такими алгоритмами не нужны.

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

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