• Порекомендуйте книги по математике?

    A1EF
    @A1EF
    Тут какие-то странные люди советуют Кудрявцева. Вы серьезно? Человеку со "слабым математическим бекграндом"?

    Для "чайничка" есть дельный ресурс mathprofi.ru
    Это всяко разумнее чтения фундаментальных курсов с разбором определений и доказательств всяких теорем с использованием эпсилон-дельта символизма. Есть неплохая книга Зельдовича и Яглома "Высшая математика для начинающих физиков и техников" - самые основы интегрирования и дифференцирования можно там поглядеть. Есть хорошие книги с сильной практической направленностью, типа Данко, Попов, Кожевникова "Высшая математика в упражнениях и задачах", "Практические занятия по высшей математике" Каплана, сборник задач Рябушко..
    Это будет куда разумнее чтения тех же талмудов Кудрявцева. А если хотите теорию изучить, то начните с "Математического анализа" Зорича.

    Кстати, по линалу начался курс от ВШЭ: https://www.coursera.org/course/linalg
    Ответ написан
    Комментировать
  • Какую литературу читать для изучения архитектуры компьютера и ОС?

    @Evsign
    Просто отлично, что вы к этому пришли.
    Как говорится, с начала освойте азбуку, а потом уже за c++ принимайтесь.

    1. Charles Petzold "C.O.D.E."
    Читать обязательно. Очень хорошо разжёвываются все эти битности, разрядности и .тд.
    В процессе чтения Вы, вместе с автором постепенно собираете компьютер и попутно осваиваете для этого необходимый бекграунд.
    С начала разбираются подходы в кодировании информации, не шифровка, а принципы представления информации в нулях и единицах. Потом разбираются системы счисления, потом немного химии и физики, что бы представлять как течёт ток по проводам. Потом разбираетесь как работают реле, далее идут первые логические элементы на реле. Потом вместе с автором собираете различные компоненты типо памяти, процессора на основе ранее сконструированных логических элементах. В общем это всё продолжается пока вы в конце не построите компьютер и изучите несколько основных ассемблерных команд, попутно изучив как считать в разных системах счисления, краткую историю развития комп техники и все логические элементы.

    2. Andrew Tannenbaum "Structured Computer Organization"
    По идее, можете даже сразу начать с этой книги, но все те фундаментальные вещи, которые разжёвывает Петцольд тут будут упомянуты вскользь, но тут пойдут уже более серьёзные вещи по поводу архитектуры. Будут рассматриваться уровни устройства современных процессоров, памяти, ассемблер, прерывания и т.д. т.д. т.д. Перечислять всё не имеет смысла, т.к. список будет оооочень большой. Это наиболее полная и подробная книга об архитектуре ЭВМ. В принципе, прочитая её от корки до корки вы будите достаточно хорошо разбираться в архитектуре самих компьютеров.

    3. Hennessy J., Patterson D. "Computer Architecture A Quantitative Approach"
    Эту пока ещё не читал, но судя по содержанию может быть отличным дополнением после танненбаума. Хотя, вполне может оказаться довольно самодостаточной книгой на ровне с вышеупомянутой книгой.
    Судя по предисловию и содержанию, в ней в дополнении к тому, что разбирает танненбаум, много уделяется внимание параллелизму, облакам, шарингу ресурсов и т.д.

    Можете взяться за это так:
    Если цените время, то начинайте сразу с Танненбаума, но если окажется сложным, то закрывайте и с начала читайте Петцольда.

    Если время хватает, то сразу читайте Петцольда, а потом Танненбаума :) И это лучший вариант. ИМХО)
    Петцольд читается очень легко и интересно. Я прочитал его на одном дыхании, а вот с Танненбаумом всё не так просто)

    UPD:
    По поводу актуальности. Актуально всё)
    2 и 3 разбирают современные ARM-Cortex A8 и i7 процессоры, Nvidia Fermi, CUDA и т.д.
    Ну а в первой книге этого и не надо)
    Ответ написан
    3 комментария
  • Математика для программиста

    Termos
    @Termos
    Азы линейной алгебры, дискретную логику, и аналитическую геометрию знать обязаны

    Из постоянно нужного: статистика (на хорошем углублённом уровне), численные методы.

    Это подъёмно изучить за 1-2 месяца. А далее сами разберётесь — по необходимости

    Если вы в ладах с матаном — учите оценку сложности алгоритмов. Это настоящий третий глаз для программиста. Если с матаном не в ладах — учите матан :)

    Специальные теории вроде теории графов, теории алгоритмов или нейронных сетей — не так эффективны при изучении без знаний математики

    А для программирования — учите программирование.
    Ответ написан
    Комментировать
  • Список литературы для самостоятельного изучения программированию?

    @seledkapod
    Ну во первых, как выше уже сказали, никто вам разжёвывать и в рот ложить не будет абсолютно нигде. Даже в Гарвардском университете. А вот тот бред про бесплатные курсы и Ютуб каналы хауди хо и ему подобных, вообще полный П. Курсы бесплатны для того чтобы ты потом пришел и купил платные. А эти всезнайки тупо топят только лишь бы канал раскрутить, а в своих видеокурсах несут полную ересь. Хороший программист это тот, который сам может найти ответы на свои вопросы, так что если хотите с самого начала быть не говнокодером учитесь гуглить. Второе, прежде чем игры писать и под Андроид разработку вести, нужно определиться вообще, а нужно ли вам это? Все что тут посоветовали, юнити х...юнити, это вам сейчас ни в коем случае не нужно. Для быстрого старта и изучения именно программирования начните с такого языка как Python, прям с нуля. Изучите что такое переменные, функции, циклы, и прочие конструкции этого языка. Потом учим алгоритмы, хорошая книга "Грокаем Алгоритмы", автора не помню найдете сами. Потом плавно переходите к ООП, объекты, классы, наследование. На это у вас уйдет около года - двух. Потом бросаем Python и с той базой что у вас уже есть, если до сих пор не перехотелось программировать, быстренько учим синтаксис C#, типы данных и все с этим связанное. Усиленно углубляемся в ООП, учим наследование, инкапсуляцию, сокрытие, учим паттерны, тот же PIDOR(это не мат, это аббревиатура названия паттерна), всякие там методики, SOLID, DRY и т.п. И каждый раз при обучении ставьте себе задачу, ну например написать калькулятор, там написать бота для игры, так обучение будет профитнее. На все это вам ещё года 2. И если вы не перегорите, не умрёте от коронавируса, или ещё какой нибудь напасти которая ожидает нас в будущем, и все ещё будете хотеть писать игры и приложения под Андроид, то милости просим. Всю базу для осуществления вашей мечты за это время вы наберёте. Ну а как игры писать, или под Андроид кодить, вы уже и сами разберётесь после всего этого)) А если вы хотите все и сразу, то такого не бывает, лучше сразу идите заразитесь короной, чтобы ни себя ни других не мучать. Программированию не научишься за месяц или за два, да даже за год. За год вы максимум станете говнокодером, который чутка изучил синтаксис какого либо языка, но программирование это не знание какого-либо языка. Будучи программистом, но не зная синтаксиса языка, на изучение синтаксиса уйдет действительно месяц. Но для такого нужна база, именно программирования. Все выше что я расписал, лишь малая часть этой базы. А языки подобраны чтобы обучение было более простым. В случае с C# это тоже простой язык на самом то деле, и он отлично даёт понимание ООП. Но опять же, ЯП это всего лишь инструмент программиста.

    По поводу книг, полный бред выше написали. Не книги устаревают, а новые версии языков и библиотек выходят, но база которую дают книги никогда не устареет. Сомневаюсь что если в книге расписан например какой нибудь паттерн, то он устареет раньше чем программист который будет его использовать)) С таким же успехом и видеокурсы аналогично устаревают. Просто книги, как и любую техническую литературу нужно уметь читать. И по большинству своему книги не читаются от начала и до конца. Особенно те в которых под 1000 страниц. А вот как справочник ее можно использовать)

    P.S. И кстати да, не для каждых задач в программировании нужна математика(ну прям высшая), хватает обычно базовой школьной или какая у вас там есть. Усиленные познания нужны для ML, DS, там для игр(но опять же не везде), для каких то специфических инженерных задач. Но тот же бот написать для игры, вообще математика не нужна. Ну разве что вы двоечник, и даже 2 + 2 * 2 не решите.

    P.P.S. А и самое главное, программирование это такая штука, которой учатся всю жизнь. Если среди присутствующих объявится несогласный с этим, то знайте, вы отсталый программист(динозаврам привет). Технологии постоянно развиваются, и нужно поспевать за ними. Всегда будет какой нибудь новый язык, который лучше для ваших текущих задач(ну если из коммерческих побуждений вы не вынуждены будете использовать тот который придется), всегда будут новые методики, да даже алгоритмы будут новые появляться. И все это вам нужно будет учить. И помимо учить, ещё и уметь применять. А не просто, а я вот выучил новый паттерн проектирования.

    P.P.P.S. А ещё если у вас все получится, то рекомендовал бы не брезговать изучать и низкоуровневые языки, тот же ASM, это даст вам понятие как вообще работает компьютер(процессор, контроллер, железо кароч которое выполняет ваш код), а ещё лучше даже прям с этого и начать. Да будет трудно, но зато вы будете понимать сразу что такое стек, что такое регистры, что такое оперативная память и для чего она нужна, ну и прочее прочее отсюда вытекающее. Сто пудов уверен большинство считающих себя JS программистами(разработчиками) и знать не знают даже что такое переменная в их даже JS. Оттого то им и сложно переучиваться потом на более серьезные языки.
    Ответ написан
    1 комментарий
  • Как калькулятор обрабатывает выражение в скобках?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Это довольно топорная реализация рекурсивного спуска.
    После завершения выражения в скобках будет рекурсивный возврат на строку, откуда primary вызвана, то есть на left *= primary()
    left в этот момент будет 5, primary - результатом выражения в скобках.
    Ключевое слово - рекурсия.
    Ответ написан
    Комментировать
  • Ошибка range_error, можно ли исправить этот цикл?

    @TheCalligrapher
    if(moda_min==i[zumzum+1]){

    Это уже очевидный вылет за пределы массива. Да и вообще везде, где вы обращаетесь к элементу i[zumzum+1] вы потенциально вылетаете за пределы массива.
    Ответ написан
    1 комментарий