Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Не могу разобраться с программой обучения по программированию [закрыт]

#c


        
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Update the question so it
can be answered with facts and citations by editing this post.
                        
                        Закрыт 7 месяцев назад.
                                                                                
           
                
        
Ребят, можете подсказать какие книжки нужно купить для понятия того, как все устроено(как
работают железяки, операционная система и т.д и т.п), дочитываю сейчас Грег Перри,
Дин Миллер программирование на си для начинающих и параллельно решаю задачки из книги
100 примеров на си. Недавно я понял что выучив язык программирования программистом
я не стану (и даже близко), после того как все эти книжки пройду думаю прочесть книгу
по устройству операционной системы и изучить основы языка ассемблера и уже потом прочесть
книгу по языку си от его разработчика . Я вообще на правильный путь встал или мне нужно
координально поменять программу обучения(уже поменял один раз, когда понял что на курсах
ничему не научусь)? Сразу говорю что WEB мне совершенно не интересен. Обучаюсь ессетственно
самостоятельно. Каникулы , ещё не пошел в 8 класс, времени полно. Если можете, посоветуйте
какие книги мне нужно купить, что поменять в обучении и т.д, буду очень благодарен :)
    


Ответы

Ответ 1



Николай, Вы задали хороший и сложный вопрос. Вы правы что просто изучив язык программирования и послушав курсы, программистом Вы не станете. Перечисленный Вами список желаемых знаний очень объёмный и преподаётся в ВУЗах в течении нескольких лет. Я затрудняюсь рекомендовать Вам книжки по данной теме для средней-старшей школы, но могу рекомендовать классические книги для изучения этих дисциплин. Сначала я всё же рекомендовал бы прочитать книгу Б. Кернигана и Д. Ритчи "Язык программирования C" - она, хотя и устаревшая, но написана хорошим языком и даёт минимальный набор знаний, необходимых для разработки на языке Си. Программисту необходимо знать минимальный набор алгоритмов. Для этого есть две классические книги: четырёхтомник Д. Кнута "Искусство программирования" - фундаментальная, но написанная довольно тяжёлым языком, и книга Т. Кормена "Алгоритмы. Построение и анализ", рекомендовал бы начать с неё. По операционным системам есть довольно много литературы, сначала имеет смысл научиться работать с ними на уровне пользователя. Например следует понимать как работать внутри командной строки ОС Unix и её потомков (ОС GNU/Linux). Лично мне нравится хоть и устаревшая книга, но от автора этой системы Р. Пайка и уже небезызвестного Вам Б. Кернигана "UNIX - универсальная среда программирования". Уверен, что Вы сможете найти и более актуальные труды на данную тему. По устройству операционных систем существует классический труд от Э. Таненбаума "Современные операционные системы". Также есть неплохая, котируемая в наших ВУЗах книга Олиферов "Сетевые операционные системы". Общее устройство компьютера я бы также рекомендовал начать с книги Э. Таненбаума "Архитектура компьютера". Касательно ассемблера мне давать рекомендации сложнее, т.к. учил я его не по книгам, но по содержанию мне понравилась книга О. Калашникова "Ассемблер — это просто. Учимся программировать". Вообще, рекомендовал бы поискать книги по ассеблеру для процессоров с архитектурой ARM. Хочется отметить что все эти знания необходимо подкреплять практикой решения задач. Я не знаю хороших учебников для этих целей, но могу посоветовать просмотреть сайты кафедр системного программирования ведущих ВУЗов, там вполне могут быть выложены лабораторные работы, которые являются хорошим примером практической задачи.

Ответ 2



Сам недавно задавался подобным вопросом и лично для себя составил примерно такой список книг… Искусство писать программы Знания по устройству ОС, ассемблеру, дискретной математики, C, C++ и т. д. — это действительно важно и нужно. Но вместе с тем гораздо более важно для программиста — это уметь писать программы. А значит, уметь управлять сложностью своих программ. Уметь разбивать большую и сложную задачу на множество мелких, не теряться во всех слоях абстракций. Этому учит классический труд, широко известный под аббревиатурой «SICP», в русском переводе — «Структура и интерпретация компьютерных программ». Книга бесплатная, прямая ссылка на русскоязычную PDF-версию. Аппаратное обеспечение Пока что лучшей книгой, которую я читал по теме аппаратного обеспечения — это «Цифровая схемотехника и архитектура компьютера». Начинается все с булевой алгебры, затем простейшие логические вентили, последовательная логика, языки описания аппаратуры, ассемблер, C. Опять же бесплатная книга, можно найти, например, здесь. Еще одна прекрасная книга по этой теме — The Elements of Computer Systems. Точнее, нас больше интересует курс MIT на основе этой книги — Nand2Tetris. В этом курсе, изначально имея только логический вентиль НЕ-И (NAND), нужно построить свой CPU, память, машинный язык, ассемблер, виртуальную машину, операционную систему и даже компилятор высокоуровневого языка! В общем, книга/курс проведет читателя по всем слоям абстракций компьютерных систем. И снова, все материалы курсы доступны абсолютно бесплатно. Есть еще книга на эту тему — книга профессора Э. Таненбаума «Архитектура компьютера» («Structured Computer Organization» в оригинале. Помимо устройства CPU, памяти и т. п. дает представление об устройстве внешних устройств. Тоже хорошая книга, но читать нужно именно в оригинале, ибо перевод просто ужасен! Алгоритмы Программисту нужно иметь базовые знания алгоритмистики. Как минимум — понимать, что такое сложность алгоритма. Так же неплохо было бы иметь представления о бинарном поиске, быстрой сортировке (и почему она быстрее сортировки слиянием, которая имеет лучшую алгоритмическую сложность), подход «разделяй и властвуй», используемый при решении задач, жадные алгоритмы. Также необходимо иметь представление о простейших структурах данных — массивах, связных списках, хэш-таблицах. Да, конечно, существует «Искусство программирования» Кнута, но все мы смертны и жизнь коротка. А если серьезно, то никто в здравом уме не будет использовать этот труд в качестве обучающего материала. Я бы посоветовал взять книгу «Грокаем алгоритмы». Написана очень простым языком, к тому же прекрасная подача материала. Язык C На самом деле, не знаю, какую книгу можно посоветовать по языку C. Основы языка даются в абсолютно любой книге, так что не суть важно какую именно взять. А о каких-то более глубоких вопросах можно узнать только из стандарта или из прекраснейшего ресурса C FAQ. Но помните, что выучить язык поможет только практика!

Комментариев нет:

Отправить комментарий