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

Я новичок в программировании. У меня был 1 семестр компьютерных наук (мы использовали java). Я получил A в курсе и смог сделать все, что было назначено, однако я не уверен, что я действительно это понял. Я проигнорировал текст и узнал, посмотрев примеры программ, а затем проб и ошибок. Я был впереди класса, за исключением двух парней, которые познакомились с java или другим языком ООП.

Я бы хотел изучить Python. Я также собираюсь построить второй компьютер из дополнительных частей, которые у меня есть, и использовать linux. В принципе, я хочу улучшить свои знания о компьютерах. Это моя мотивация.

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

Я предполагаю, что это просто, я спрашиваю, что я должен знать, чтобы максимально использовать возможности python. Это не для карьеры. Это из желания узнать. Я больше не специалист по информатике (у него также не было бы прямых приложений для моей предполагаемой карьеры).

Я не хочу учиться в "30 дней" или "1 неделю" или что-то еще. Итак, начиная с очень базового уровня, все в порядке со мной.

Спасибо заранее. Я сделал поиск и не совсем нашел то, что искал.

ОБНОВЛЕНИЕ: Спасибо за все замечательные советы. Я нашел этот сайт на работе и не смог найти его на своем домашнем компьютере, поэтому я просто читаю сейчас.

Ответ 1

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

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

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

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

Д А

Ответ 2

В частности, для части вашего вопроса Python я могу порекомендовать http://www.diveintopython3.net/ от Марка Пилигрима. Это свободно и довольно хорошо структурировано.

Python - отличный выбор, вам будет весело!

Ответ 3

http://www.pythonchallenge.com/

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

Ответ 4

Многое зависит от вашей общей цели - для обучения Python. Вы рассматриваете его как изучение второго языка или лучшее понимание компьютеров и как эффективно использовать язык программирования?

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

Вы упомянули, что не уверены в понимании материала в классе, который вы взяли. Если вы чувствуете, что не понимаете фундаментальных понятий (таких как циклы, классы и т.д.), То изучение Python поможет вам понять программирование, так как большинство книг/руководств пересматривают эти понятия (Learning Python, 3rd Edition должно помочь с этим). Если вы понимаете эти концепции, но вы не знаете, как применять эти понятия, тогда моя рекомендация состояла в том, чтобы узнать о структурах данных и общих алгоритмах (например, сортировка, поиск и т.д.).

Говоря из личного опыта, я не знал, как применить то, что я узнал от вводного класса программирования, к личным проектам программирования. Изучение структур данных из класса помогло укрепить те концепции, которые я ранее изучил, предоставляя алгоритмы/структуры данных, которые строят эти предыдущие знания. Этот класс также позволил мне по-разному думать о проблемах с точки зрения использования этих структур данных.

Чтобы узнать о различных типах структур данных, см. http://en.wikipedia.org/wiki/List_of_data_structures. Обычно каждая структура данных полезна для определенной цели (например, деревья двоичного поиска хороши для поиска отсортированной информации). К сожалению, у меня нет рекомендаций по книге (наш класс не использовал книгу). Googling "Структуры данных" должны быть хорошей отправной точкой.

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

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

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

Если вы все еще в школе, возьмите класс структур данных и посмотрите, что вы думаете об этом. Если вам это нравится, я бы посоветовал пересмотреть роль программирования /CS в вашей карьере. Вам не нужно это делать, но рассмотрите небольшую или, по крайней мере, позицию, в которой используются эти навыки, которые вы изучаете. Я говорю это, потому что, несмотря на то, что это не ваш главный, вы заинтересованы в понимании того, как компьютер работает и принимает такие инициативы, как обучение Python, создание собственного компьютера и установка Linux.

Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать. Удачи!

Ответ 5

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

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

Что вы должны знать... не так много, я думаю. Python - отличный язык для начала программирования. Он упрощает простые вещи, но он достаточно богат, чтобы позволить вам работать до высокого уровня сложности. Я бы предположил, вероятно, глядя на учебник; тот, который я знаю, на веб-сайте Python, но я не утверждаю, что это обязательно лучший для вас. Поиск Google должен дать вам много возможностей для начала.

Ответ 6

Я начал Python (как мой первый язык программирования) несколько месяцев назад. Я бы рекомендовал Изучить Python, Марк Лутц. Но имейте в виду, что ключом к обучению хорошо должен быть непредвзятый, терпеливый и желающий работать и искать вещи, которые вы не понимаете.

Удачи!

Ответ 7

Я бы предложил посмотреть онлайн-книгу http://www.diveintopython.org/, чтобы узнать python.

Что касается проектов python, я бы попытался изучить Django Framework. Это основа для создания веб-приложений. У них отличный tutorial для начала работы с ним. Это также даст вам опыт создания веб-сервера в ящике Linux.

Ответ 8

повысить уровень знаний о компьютерах

Хорошо, что вы на самом деле имеете в виду? Python или любой другой язык высокого уровня предназначены для фактического скрытия всех неприятных деталей. Это одна из причин, почему она подходит для непрофессионалов вроде (например, ученого).

Если вы хотите знать, как на самом деле работают вещи, вы должны учиться чистым C. Но опять же, если вы не планируете заниматься карьерой, связанной с SC, там не так много смысла. Изучите более сложные алгоритмы и структуры данных. Это приведет вас к более интересному, полезному и платформенному и языковому агностику.

Ответ 9

Короткий ответ: все

Длинный ответ:

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

Как конкретное начало, перейдите в wikipedia и просмотрите категориальный список языков программирования, нажмите на все имена, которые вы когда-либо слышал (и что-нибудь еще, что бросается в глаза), и если в статье есть пример кода, дайте ему минуту или две, чтобы погрузиться (остальная часть статьи поможет, конечно). Дело здесь не в овладении каждым отдельным языком (что (1) бессмысленно и (2) невозможно), а для того, чтобы понять, что там есть. Для любого языка есть несколько других таких языков, и если вы можете хотя бы прочитать один язык в большинстве этих категорий, вы освоите довольно большой фрагмент вселенной программирования. Когда появляется новый проект, и что-то в нем напоминает вам о каком-то языке, который вы нашли, вы можете просто изучить этот язык как часть выполнения проекта. Это может показаться большой работой, но после, скажем, вашего пятого большого языка, вы полностью теряете счет и просто случайно изучаете новые все время, не замечая.

Когда вы перестанете ссылаться на один язык на своем родном языке, вы сможете учиться на примерах на других языках, даже если вы никогда не программировали в них. Лично я написал несколько программ Haskell, но возможность читать Haskell предоставила мне множество идей, которые я мог бы использовать в более практичных программах Scala и Python (о, да, после изучения Python дайте Scala просматривать, и вы, вероятно, никогда не будете использовать Java снова)

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

Требуется много лет, чтобы понять, что язык программирования не является полностью иностранным (или, по крайней мере, иностранным, более чем на день взлома), но я думаю, что это очень здоровый и реалистичный долгосрочный план, чтобы попытаться покорить репрезентативную выборку каждой грубой категории. Удачи!

Ответ 10

Поскольку Python не был моим первым языком, я нашел Python Cookbook, полезный для обучения

  • Что Python был способен
  • Идиоматический, "питонический" способ сделать что-то.

Ответ 11

Обучение языку программирования всегда ассоциировалось с формулировкой cliche во время обучения. "Напиши программы для изучения программирования". Я тоже предложил бы то же самое.

Если вы собираетесь начать с основ. Это, конечно, самая рекомендуемая отправная точка. Он длительный, но он стоит все время. http://www.diveintopython.org/

Поскольку вы находитесь в некоторой Java, это может быть даже лучше для вас. http://www.swaroopch.com/notes/Python. Начните либо python 2.x, либо 3.0. Я лично являюсь поклонником python 3. Но для стартера может быть сложно получить образцы и ссылки на программы онлайн. Так что для вас 2.x может быть лучше. Но я оставляю это до вас.

Как я начал "Написать программы..". Вы можете начать здесь.

  • http://www.spoj.pl/ - сайт проблем с программированием, где вы можете выбирать из самых разных тем, в основном алгоритмов, и имеет огромную базу данных вопросов, Конечно, выбор языков программирования зависит от вас.
  • http://projecteuler.net/ - сайт математических вопросов, здесь вам просто нужно подать ответ, здесь может быть изменен обман, поэтому заимствовать логику у других, но попробуйте написать программу самостоятельно.

После того, как вы думаете, что приобрели достаточный уровень владения языком в python, вы можете попробовать рецепты в этой книге python cookbook http://www.amazon.com/Python -Cookbook-Alex-Мартелли/др/0596007973.

Для разработки приложений, после того как вы считаете, что сможете справиться с этим, начните с wxPython или PyQt. Я лично предложил PyQt. Это отзывчивый, быстрый и имеет достойный цикл разработки, я долго не использовал WxPython, но несколько программ, которые я написал, давно не чувствовали себя так здорово. Еще раз, его до вас.