Самостоятельная работа номер 22 программирование линейных алгоритмов ответы по информатике 8

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

Получите еженедельный информационный бюллетень Five Books

Похоже, отличный папа! Затем вы выбрали информатику в качестве программы бакалавриата и магистратуры. А оттуда перешли к докторской степени по вычислительной биологии?

Верно, в Принстоне.

Биология часто выбирается для кандидатов наук, связанных с информатикой, но люди не всегда остаются в этой области. Это ваш случай или вы все еще работаете над геномикой?

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

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

Давайте поговорим об обучении программированию. Есть ли у вас какое-либо мнение по поводу дебатов о “обучении кодированию”? Несколько лет назад все, казалось, думали, что мы все должны научиться программировать. В последние годы или даже месяцы другие люди начали говорить: “На самом деле это интересный навык, но не такой важный. Как базовый счет. Письмо и чтение”. Как вы думаете, может быть полезно всем научиться программировать, или это остается продвинутым навыком. Который интересен только тем. Кто хочет им заниматься?

Это умение, которым должен обладать каждый. Как только вы сможете решить проблему вычислительным способом. Ее легко автоматизировать и заставить компьютер выполнять задачу за вас много раз очень быстро. Программную часть легко получить, есть много ресурсов в Интернете, которые вы можете найти. И вы можете выучить любой язык самостоятельно. Это умение, которое вы могли бы иметь и использовать в своей повседневной жизни, чтобы улучшить его.

“Каждый должен обладать умением мыслить вычислительно”

Но навык, которому мы на самом деле пытаемся научиться здесь, — это идея мышления логическим или вычислительным способом. Речь идет об изучении синтаксиса языка. Итак, у вас есть математика, у вас есть английский, и чтобы преуспеть в обеих этих областях. Вам нужен другой способ мышления. Информатика, или мышление вычислительным способом. Находится где-то посередине: вам действительно нужен логический способ мышления. Но есть также немного творчества. Которое задействовано. Каждый должен обладать умением мыслить вычислительно.

И я думаю, что цель таких программ, как Scratch, состоит в том. Чтобы позволить младшим студентам сосредоточиться на вычислительных и алгоритмических аспектах. А не на синтаксисе?

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

Вы обучаете студентов младших курсов в возрасте от 18 до 20 лет. Если мы расширим это до тех, кто заинтересован в том. Чтобы научиться программировать. Независимо от их возраста и их высшего образования. Насколько это сложно? Часто говорят. Что программирование-это навык, который очень хорошо поддается самообразованию, что люди. Которые не изучали его в университете. Могут получить его позже. Вы согласны с этим или вы думаете. Что получение надлежащего университетского диплома сделает вас лучшим программистом?

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

Другая распространенная точка зрения заключается в том. Что программированию трудно научиться в более позднем возрасте. Есть ли у вас опыт общения с людьми, которым удалось научиться этому в свои пятьдесят или шестьдесят?

Вы можете научиться этому позже в жизни, но это сложнее. Биологический аспект, конечно, очевиден: с возрастом становится все труднее чему-либо научиться. Но я запускаю онлайн версию вводного курса MIT по edX, и у нас есть студенты в возрасте 11 лет, проходящие этот курс. Это трудный курс, они борются с ним, но некоторые из них действительно делают это, и они чувствуют себя великолепно. И тогда у нас есть 70-летние люди, принимающие его, и они также могут преуспеть. Есть не так много молодых или старых студентов, проходящих курс edX. Но при настойчивости они могут добиться больших успехов. Биология-это одно, но я думаю, что успех больше зависит от человека.

Давайте поговорим о книгах по программированию, которые вы выбрали. Первый — обеспеченияЯ никогда не слышал об этом раньше, но это кажется очень интересным. Это хороший первый шаг, чтобы проверить, насколько вы заинтересованы в этой теме?

Я выбрал его, потому что он говорит вам, как работает компьютер. Очень часто люди думают, что монитор-это компьютер. Я не знаю, насколько распространено это заблуждение, но это определенно так! Эта книга рассказывает обо всех фишках и воротах, и она идет от очень низкого уровня до самого высокого. Это заставляет вас использовать свое воображение, чтобы практически построить компьютер. Ее легко читать, можно лежать на диване и наслаждаться ею—это не столько учебник. Он демистифицирует магию компьютера и то, что это такое. Здесь нет никакой теории, скорее она представляет компоненты и то, как они соединяются.

Итак, вы бы порекомендовали эту книгу всем, кто интересуется компьютерным программированием. Даже если они не хотят начинать кодировать сами?

Именно так. Если вы не хотите учиться программировать, но все же хотите узнать. Что такое компьютер и немного истории за ним. Это очень хорошая книга. Он проходит весь путь от микросхем, составляющих компьютер, до периферийных устройств, таких как экран и клавиатура. Детали того, как мы строим компьютеры, не изменились с тех пор, как Петцольд написал эту книгу. Но размеры вещей изменились!

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

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

Для начинающих один из неизбежных вопросов: ‘С какого языка начать?’ Почему Python так часто рекомендуется? Десять или пятнадцать лет назад студенты, изучающие компьютерные науки, обычно начинали с языков более низкого уровня. Таких как C/C++ или Java. И в последние годы произошел большой сдвиг. Хотя Python существует с 1990-х годов. Вы думаете, для этого есть какая-то особая причина?

Первая причина заключается в том. Что все больше людей хотят научиться программировать, а такие языки. Как C/C++ и Java, громоздки. Поэтому синтаксис не так прост для понимания. Что делает Python интересно и легко узнать. Что это похоже на грубый перевод английского языка в код. Вы говорите на ломаном английском, и если вы читаете код Python вслух, вы часто можете сказать, что происходит. Что очень приятно. В Python вам также не нужно объявлять типы переменных. Как это было бы в C/C++ или Java; это делает его еще более доступным. Вам не нужно думать об этом аспекте, язык делает это за вас. Устранение этих раздражающих мелочей-это то. Что делает Python приятным для всех.

“Трудно понять. Что алгоритм-это просто рецепт, и еще сложнее придумать новые рецепты самостоятельно”

Другая причина заключается в стремлении к науке о данных и, как правило, работе с большим количеством данных. Это делает Python более приятным в использовании, потому что он близок к таким языкам. Как Matlab или R. С Python вы можете писать простые и быстрые скрипты. Без слишком много надоедливых языковых деталей. Многие люди. Которые не являются учеными-компьютерщиками или программистами. Хотят попасть в эту область науки о данных и проанализировать данные. Которые идут им навстречу. Удобство использования делает Python очень привлекательным языком.

Так что Python определенно будет вашей очевидной рекомендацией, или вы видите какие-то альтернативы для начинающих?

Python-самый простой в освоении язык, и его вполне достаточно. Если вы не собираетесь работать в области информатики и программирования. Кроме того, Java-это еще один большой язык, который я бы рекомендовал, а затем C++. У вас гораздо больше контроля над этими языками, и ваш код становится намного эффективнее. Если вы имеете дело с таким важным приложением, как полет на самолете. Вы бы не хотели писать это программное обеспечение на Python!

Вы недавно написали свое собственное введение в программирование, Get Programming: Learn to code with Python. Вы, должно быть, собрали много идей из своего опыта обучения сотен студентов в Массачусетском технологическом институте. Есть ли что-то конкретное, что вы делаете в книге, что иногда делается неправильно. Когда дело доходит до обучения программированию?

Нет правильного или неправильного способа обучения программированию, но одна особенность заключается в том. Что я на самом деле не вхожу в код до главы 4. Я сосредотачиваюсь на том. Чтобы заставить читателя понять. Что такое компьютерная наука. И заставить его думать о вещах таким образом.

“Что делает Python интересным и легким в освоении, так это то. Что он похож на грубый перевод английского языка в код”

Одна из самых ранних глав — “Принципы изучения языка программирования”, то есть вы делаете только то. Что вам говорят. Как люди, мы можем делать выводы; если кто-то говорит вам приготовить ужин, вы знаете. Что это означает пойти на кухню. Взять кастрюли и сковородки. Использовать ингредиенты и т. Д. Но если вы скажете компьютеру “приготовить ужин”, он не будет знать, с чего начать. Поэтому я пытаюсь заставить читателей понять. Что компьютер нуждается в очень специфических командах, потому что он не знает. Как сделать какие-либо выводы. Затем книга проходит через изучение Python, продолжая подчеркивать эти моменты на этом пути.

Один последний вопрос, прежде чем мы углубимся в остальную часть вашего выбора. Конечно, в Пяти книгах нас очень интересуют любимые книги людей. Но в Интернете так много ресурсов для изучения программирования. Как вы думаете, есть ли еще достоинства в изучении информатики с помощью книг?

Забавно, что ты так говоришь. Когда я начал думать об этом интервью и книгах, которые я выберу, моей первой реакцией было то. Что вам почти не нужно больше читать книги. Поиск в Интернете намного проще и быстрее. Когда у вас есть вопрос, скорее всего, несколько человек уже задали его и ответили на него на таких сайтах. Как StackOverflow. Книги не могут конкурировать с этим. То, что вы можете получить из книг по программированию, — это мыслительный процесс, стоящий за идеями. Язык отходит на задний план по отношению к представленным концепциям в том смысле. Что идеи в книге должны быть универсальными для любого языка программирования. Они должны быть актуальны как для начинающих, так и для людей, которые программируют уже 20 лет, и так же актуальны сегодня. Как и тогда. Когда люди начали программировать. Я попытался сосредоточиться на книгах, которые представляют это: не книги. Которые являются специфичными для языка, но книги. Которые представляют идеи. Которые вы должны знать. Независимо от вашего опыта программирования и того. Какой сейчас год.

Ваша вторая книга — Его подзаголовок-Руководство по гибкому программному мастерству. Не могли бы вы рассказать нам, в чем дело?

Эта книга покажет вам, как писать код, который в будущем будет читаем самим или кем-то другим. Мартин написал его очень доступным способом, и что мне понравилось, когда я прочитал его, так это то. Что он сразу же начинает говорить о коде. На самом деле все начинается с самого простого-с того, как называть объекты в коде. Когда вы программируете, вы все время работаете с объектами; поэтому, чтобы сделать ваш код читаемым. Вам нужно использовать собственные имена для ваших переменных. Это первая глава, и это часто упускается из виду, так что я был счастлив увидеть это.

Получите еженедельный информационный бюллетень Five Books

Тон книги вполне разговорный. Опять же, вы можете сидеть на диване и читать его; вам не нужно кодировать. Вы действительно можете наслаждаться этим, если вы вообще не знаете, как программировать. Каждая глава начинается с небольшого сценария, часто разговора между двумя людьми, и он задает сцену для того. О чем будет говорить глава. Это очень полезно, и это делает книгу очень приятной для чтения.

Эта идея читаемого кода является традиционным советом, особенно от учителей к студентам. Но читаемость, и особенно комментирование, часто рассматриваются как одна из самых скучных частей программирования. Как убедить своих учеников в том. Что это не пустая трата времени и что чистый код будет полезен как для других людей. Читающих их программы. Так и для их будущего

Что ж, мне до сих пор не удалось убедить своих учеников в том. Что это важно! Я не знаю, возможно ли это. Иногда даже я не делаю этого и потом жалею. Дело в том. Чтобы не делать этого, а потом вернуться к своему коду через несколько недель и не вспоминать. Что вы сделали. И учиться на этом опыте! Две книги. Которые я выбрал, сосредоточены на том. Чтобы сделать ваш код читаемым; так что да, это очень важно.

Идея о том. Что может существовать такая вещь, как “мастерство кода”, часто трудно понять новичкам или людям. Которые не программируют. Можете ли вы объяснить, что обычно понимается—или ваше собственное определение—того. Что такое хорошо продуманный код?

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

Поддержка Пяти Книг

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

Ваша третья книга-Code Complete: A Practical Handbook of Software Construction, Стива Макконнелла. Идет ли это дальше в ту же самую идею, или эта книга добавляет что-то другое?

Это довольно длинная книга. Это похоже на Чистый код, но он идет дальше. Чистый код дает примеры на Java; этот дает примеры на нескольких разных языках, чтобы подчеркнуть, что понятия. Которые он преподает. Не являются специфичными для языка и должны быть применимы к любому языку. Он не учит вас коду, он учит вас программному построению: комментированию, классам, отладке, рефакторингу…

В то время как Чистый код учит лучшим практикам людей, которые пишут код для себя, код полный это для людей. Работающих в промышленности. Пишущих программное обеспечение для компаний. Что означает. Что они передают свой код другим людям. В нем даже есть небольшие контрольные списки в ключевых точках книги; если вы работаете в отрасли, вы можете убедиться. Что ваш код читаем и отлажен. Пройдя через эти контрольные списки и убедившись. Что вы касаетесь всех аспектов. Так что он определенно больше ориентирован на промышленность. Если вы заинтересованы в том. Чтобы углубиться в это, это будет книга для чтения. Это довольно старая книга. Но она все еще очень актуальна. Я помню, как мой отец читал ее.

Считаете ли вы, что концепции, представленные в этих двух книгах, — это то. Что заставляет вас перейти от того. Кто умеет программировать, к тому. Кто программирует очень хорошо?

Code Complete выходит за рамки очистки кода и гарантирует. Что он также может быть развернут или работает в более широком масштабе в контексте компании или отрасли. Но иметь чистый код было бы достаточно. Чтобы быть довольно хорошим программистом.

Давайте перейдем к вашей четвертой книге. Посвященной другой теме: она называется Это исчерпывающая книга по алгоритмам. Что вы можете рассказать о них?

В книге представлены некоторые очень простые алгоритмы. Использующие Java. Она написана двумя авторами. С которыми я работал в аспирантуре Принстона. Есть две основные книги по алгоритмам. Используемым в университетах. И это одна из них. Они оба представляют одни и те же важные алгоритмы, которые вам нужно знать. Но этот делает это гораздо более доступным способом. Каждый алгоритм, который вы видите в книге, также реализован на Java, поэтому, если вы хотите запустить его. Вы можете скопировать код и выполнить его самостоятельно. Мне нравится. Что это так практично. Он не увязает в математической терминологии и доказательствах. Что мне тоже нравится.

Я бы не советовал сидеть на диване с этим человеком, потому что вам нужно быть немного более активным. Но что касается книг по алгоритмам. То эта книга довольно доступна. Я бы сказал. Что это также полезно. Если вы собираетесь пойти на собеседование по программированию. Обычно они просят вас написать какой-нибудь алгоритм или фрагмент кода, и чтение этой книги заранее было бы очень полезно. Чтобы подготовиться.

Слово “алгоритмЯ нахожу это очень любопытным, потому что. Когда вы изучаете информатику. Алгоритмы на самом деле являются чем угодно. Но только не черными ящиками. Это очень четкие. Пошаговые программы. В которых вы переходите от проблемы к детальному решению. Вы думаете. Что просвещение людей о том, какие алгоритмы являются полезными, и сделать нас меньше бояться их?

Это отличная мысль. Алгоритмы звучат как нечто таинственное. Но это не так. Это рецепты с серией шагов для перехода от входа к выходу. Все очень просто. И в этом нет ничего таинственного или злого. Если вы собираетесь изучать компьютерные науки или хотите начать программировать. Вам следует в какой-то момент узнать что-то об алгоритме. И даже широкая публика должна знать. Что с алгоритмами не происходит ничего сумасшедшего. Даже если это слово разбрасывается повсюду без особого смысла. Это очень просто. Точно так же. Как вы испекли бы по рецепту или построили бы предмет мебели Икеа.

Наконец, ваша пятая книга — Эта книга, кажется. Углубляется в некоторые математические теории. Лежащие в основе компьютерного программирования. Можете ли вы попытаться объяснить нашим читателям. Что такое теория типов и почему ее важно понять?

Эта последняя книга довольно продвинута. Речь идет о дизайне языка программирования. Лучший способ объяснить это-провести параллель между физическим миром и языками программирования. Если вы думаете о физическом мире вокруг нас—объектах. Вещах в природе и т. Д.—Мы придумали математику, чтобы помочь нам описать то, что происходит, систематическим и логическим способом. Информатика-это то же самое. Но для того. Что происходит внутри компьютера. И вокруг этой идеи вычислений можно строить системы типов. Системы типов-это математика, которую мы придумали; они помогают нам описать вычисления или то, что происходит в программе. Какие операции происходят. Они помогают нам рассуждать о том. Что делает программа, и часто помогают программистам избегать ошибок при написании кода. Например, система типов может сказать:

“Вам действительно нужно сильное понимание математики, но не традиционной математики, о которой думают люди ”

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

Это подводит меня к другому аспекту. О котором мы еще не говорили: люди часто говорят. Что для изучения компьютерных наук нужно хорошо разбираться в математике. Вы все еще думаете. Что это так сегодня. Когда компьютеры скрывают так много вычислительной теории за слоями абстракции. Или вы думаете. Что для того. Чтобы хорошо программировать. Вам все еще нужно глубокое понимание математики?

Это отличный вопрос. Вам действительно нужно хорошо разбираться в математике, но не в традиционной математике, о которой думают люди. Когда люди думают о математике. Они думают об операциях. Сложении вещей. Вычислениях. Математическое понимание, которое вам нужно, больше относится к логической стороне: размышление о бинарном выборе—что-то. Что является Этот логический способ мышления. Который является способом мышления компьютера. Также является разделом математики. К сожалению, вы изучаете его только в бакалавриате, но вы сталкиваетесь с ним в жизни во многих отношениях. Когда вы делаете онлайн-тест, где вы следуете блок-схеме, чтобы узнать. Что вы за собака, вы используете логику. Чтобы что-то выяснить. Такая математика очень полезна. И именно это дает вам ум программиста. Но вы должны изменить свой мыслительный процесс. Чтобы думать о высказываниях на языке программирования вместо изображений собак!

Получите еженедельный информационный бюллетень Five Books

Если вернуться к информатике в целом. Это область. Которая печально известна своим отсутствием разнообразия. С очень низкими пропорциями женщин и людей с цветом кожи. Вы заметили какие-нибудь улучшения за последние несколько лет? Ваша собственная роль в обучении информатике студентов старших курсов кажется шагом в правильном направлении.

На многих уровнях образования определенно есть улучшения. Многие женщины проходят мой вводный курс по информатике. Потому что они признают. Что это полезный навык. В моем классе у нас около 40% женщин. Что довольно высоко. Наш штат довольно большой—у нас 15 ассистентов—преподавателей. И большинство из них на самом деле женщины. Много раз студентки будут проходить курс, им это понравится, они будут специализироваться в области компьютерных наук. И ближе к концу они захотят вернуться. И мне это нравится, потому что они часто хотят быть ассистентами преподавателей, и они очень преданны своему делу. И они делают очень хорошую работу. И поскольку 80% наших сотрудников-женщины, то начинается этот цикл: студенты, принимающие курс, видят. Что большинство ТАС-женщины. Поэтому они думают: Конечно, толчок к общему компьютерному образованию в средней школе, безусловно. Также поможет.

Это отличный переход к моему последнему вопросу: какой совет вы бы дали старшеклассникам. Думающим о том. Чтобы начать карьеру в области компьютерных наук?

Я бы сказал. Просто идите на это. Выберите язык. Придерживайтесь его и изучайте как можно больше. Неважно, на каком языке. Даже если вы начинаете с визуального языка. Такого как Scratch. Это потрясающе. Это начинает заставлять вас задуматься о компьютерных науках и логическом способе мышления компьютеров. Это огромный шаг к успеху в информатике после окончания средней школы.

Five Books стремится поддерживать свои книжные рекомендации и интервью в актуальном состоянии. Если вы являетесь интервьюируемым и хотите обновить свой выбор книг (или даже просто то. Что вы говорите о них), пожалуйста. Напишите нам по адресу editor@fivebooks.com