Содержание

почему всем нужно научиться писать код

Навык программирования может пригодиться не только тем, кто хочет создавать программы или сайты профессионально. О том, как умение писать код может облегчить жизнь, рассказал Илья Щуров, доцент кафедры высшей математики ВШЭ и преподаватель Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ. T&P публикуют конспект его лекции «Программирование как новый английский, или Почему программирование не только для разработчиков».

Илья Щуров

доцент кафедры высшей математики ВШЭ и преподаватель Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ

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

Опрос профессиональных программистов этого года показал, что 81% из них программируют в качестве хобби. Это означает, что программирование доставляет удовольствие, что это не просто работа, но и развлечение. Вы можете пользоваться готовыми программами, и в 95% случаев вы будете это делать, даже если вы профессиональный программист. Но в любой области есть задачи, которые никто до вас не решал, и умение программировать позволяет решать их гораздо эффективнее. Однажды я был в call-центре, и меня попросили объединить две таблицы. Человек, который поручил мне эту задачу, ожидал, что я начну по одной копировать ячейки из первой таблицы во вторую. Я перенес пару записей, мне надоело, и я написал короткий скрипт, который брал данные из одной таблицы и вместо меня заполнял гугл-форму, что не очень сложно. Мне это понравилось, но больше всего мне понравилось то, что коллеги смотрели на меня так, будто я владею какой-то магией.

Писать код интересно, но, с другой стороны, это испытание. Ты взаимодействуешь с компьютером, и очень часто это взаимодействие, особенно если ты осваиваешь новую технологию, новый язык, выглядит так. Ты пишешь код, считаешь, что написал его верно, а компьютер говорит, что у тебя ошибка синтаксиса. Действительно, забыл точку с запятой, исправил, запустил заново. А компьютер говорит: «Закрой скобку». Через несколько таких итераций программа начинает работать, и становится ясно, кто в доме хозяин. Дело в том, что и у навыка программирования, и у процесса обучения ему есть некоторые побочные (в том числе положительные) эффекты.

1. Экстремальный опыт руководства

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

2. Новый подход к информации

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

3. Профессиональная коммуникация

Если вы научитесь программировать хотя бы чуть-чуть, вам будет гораздо проще общаться с программистами. Полезно хотя бы на базовом уровне понимать, как устроен мир IT, и коммуницировать в этой сфере без посредников. Люди учат языки, чтобы лучше понять другую культуру, а языки программирования — технологии.

4. Ответственность

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

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

Это история как в «Маленьком принце»: вы в ответе за тех, кого приручили. Люди и процессы зависят от кода, который вы написали. То есть, как только вы делаете что-то полезное для других, цена ошибки возрастает.

© generes / iStock

Как научиться?

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

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

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

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

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

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

3. Не беспокойтесь по поводу математики. Желательно знать, что такое остаток от деления числа на другое число, но все зависит от задач, которые перед вами стоят. Конечно, если вы хотите хитро обрабатывать данные, то вам нужна математика в том объеме, который нужен для такой обработки.

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

Есть мнение, что на фоне развития искусственного интеллекта и машинного обучения программисты скоро будут не нужны: компьютеры сами научатся себя программировать. Но мне кажется, что это не так. До тех пор, пока есть задачи и пока нужно объяснять, как их решать, программирование будет существовать. Безусловно, программирование сильно эволюционирует, за последние 20 лет оно изменилось очень сильно. Но от того, что компьютеры стали умнее, разработчиков меньше не стало — наоборот, их стало гораздо больше. И мне кажется, что дальше будет происходить то же самое.

Как писать код, чтобы тебя не уволили? / Хабр

Это несерьёзная статья на серьёзную тему. Есть такое понятие, как JSDD — Job Safety (Security) Driven Development, мы часто видим его в крупных компаниях. От этого не избавлены и небольшие компании, особенно когда в штате всего несколько программистов. Разработчики пишут свой код столь изысканным способом, что, несмотря на очень низкую скорость разработки, их страшно уволить, потому что, кроме них, этот код никто понять не сможет. Давайте попробуем разобрать, почему и как такое происходит.

Меня зовут Константин Митин, я сооснователь и руководитель компании АйТи Мегастар/АйТи Мегагруп. Когда-то был простым разработчиком, работал в L3, дорос до тимлида, затем и до руководителя филиала разработки крупной ИТ-компании. Теперь я в АйТи Мегагруп.

Предыстория появления подхода

В разработке программного обеспечения есть много полезных инструментов и методологий. Например, когда я сам писал код, мне нравилось использовать TDD (Test Driven Development). Это разработка через тестирование, когда ты сначала пишешь тесты для своего функционала, а потом реализуешь сам функционал. Затем дорабатываешь тесты, следом дорабатываешь функционал.

Помните выбор между быстро, качественно и недорого? На самом деле, делать качественно — быстрее и дешевле, потому что ты выпускаешь меньше брака. TDD даёт именно такой эффект. Кому-то может показаться странным, но большую часть рабочего времени программист думает, а не набирает код. Большинство программистов не обладает навыками слепой печати просто потому, что разработку этот навык никак не ускоряет.

Делать качественно — быстрее и дешевле. Ты меньше ошибаешься и меньше тратишь время на исправление ошибок.

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

Мне часто приходилось работать с чужим и уставшим кодом. Видел я при этом всякое. Иногда это был уже не рефакторинг, а реинжиниринг кода. В таких случаях написать тесты для заменяемого функционала, чтобы сохранить обратную совместимость, просто необходимо в целях безопасности. Заодно, пока пишешь тесты, исследуешь заменяемый функционал, понимаешь, как и почему именно так он работает, находишь в нём ошибки и принимаешь решение по их исправлению. Именно принимаешь решение исправлять ошибку либо придётся писать имитатор ошибки, как это было сделано в Win98 для сохранения обратной совместимости с Win95. Иногда исправить ошибку в месте, над которым работаешь — это обрушить целый модуль на другом краю приложения, потому что код изобилует костылями. И никто не рассчитывал, что всё внезапно заработает.

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

Bus factor — количество ключевых специалистов, после потери которых работа не сможет продолжаться.

Есть такое понятие, как «bus factor». Представьте, что ваш ключевой сотрудник выходит из офиса и его насмерть сбивает автобус. Что дальше? Этот вопрос всегда держит в голове хороший разработчик и руководитель проекта. Мы должны быть взаимозаменяемыми.

Кроме TDD есть ещё BDD (Behavior Driven Development), FDD (Feature driven development) и другие виды xDD.

Job Safety Driven Development

В общем, иногда разработчики забывают, что программистов нанимают, чтобы они приносили пользу компании, а не для того, чтобы программировали. Программисты не работают над созданием красивого ПО, их целью не является решение сложных проблем программирования или написание беспроблемного кода. Задача программиста — повысить прибыль или сократить издержки бизнеса.

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

Задача программиста — повысить прибыль или сократить издержки бизнеса, а не решение сложных проблем разработки или написания красивого и беспроблемного кода.

Либо просто уже хочется стабильной работы и надёжного источника пропитания для себя и своей семьи. В наше время постоянно появляются новые технологии, методологии, надо быстро учиться, чтобы не отстать и не остаться за бортом. А тут уже и возраст подходит. Возникает потребность в «Job Safety».

На помощь приходит методология JSDD (Job Safety Driven Development), его сторонники прикладывают максимум усилий, чтобы стабильность их положения ничто не могло поколебать. А для этого нужно, чтобы bus factor был равен 1.

Знаете, когда-то был термин «индусский код»? Когда-то много индусских программистов работало на аутсорс и платили им за строчки кода. Ну ребята сразу научились делать простое сложным и писать тысячи строк вместо одной-двух. Работать с таким кодом — изысканное удовольствие, если конечно ты не разработчик с построчной оплатой кода. С JSDD так же.

Как и в любой методологии в JSDD есть best practices и принципы. Давайте познакомимся с ними поближе. Иногда будет казаться, что они несовместимы, но JSDD действительно может их подружить между собой.

Простое должно стать «rocket science»

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

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

Например, у вас есть сервис, написанный на Django, с базой данных в виде SQLite, который посещает 10 человек в месяц. К вам приходят и спрашивают: «Сколько будет добавить поле в таблицу?». Вы должны сказать, что из-за нагруженности системы это сделать будет непросто, нужно будет написать миграцию для базы данных, провести полное регрессионное тестирование, обеспечить даунтайм в день для того, чтобы все смогло развернуться. Плюс ко всему, в сервисе реализована подсистема работы с кластерными базами данных, обеспечивающая отказоустойчивость в момент, когда кластер баз данных отказал, причём с двумя слоями кеширования запросов, потому что кластер Redis тоже может отказать. Кроме того, у вас там развитая система логирования, которая в том числе обеспечивает логирование всех транзакций, чтобы можно было в случае отказа кластера базы данных, кластера кеширования, кеширования в ОЗУ, восстановить данные по логу транзакций. Работа предстоит сложная и займёт 1-2 месяца. Запомните, сложную работу нельзя сделать быстро.

Надеюсь, разработчики юмор оценили. Для бизнеса же скажу, что это всё вообще не нужно и можно всё сделать за 1-2 часа работы вместе с внедрением и всеми проверками.

Запомните, сложную работу нельзя сделать быстро. Любую работу можно сделать сложной.

Не оставляй следов

Вы должны научиться не оставлять за собой следов. Прежде всего это относится к документации. Её категорически нельзя писать, делайте всё, что угодно. Лучше всего ссылаться на практики Agile, ведь работающий продукт важнее документации? Если вас загнали в угол, то закатывайте глаза и давайте оценку на документацию в виде «овердофига».

Помните, что сложную работу — нельзя сделать быстро. А вам предстоит потрудиться. Нужно создать объёмную и запутанную документацию, которую никто не будет читать. Можно даже описывать всё, как есть. Всё равно вы не будете её обновлять. У вас не должно быть на это времени.

Точно так же с постановками задач. Из них бизнесу не должно быть понятно, что и зачем вы делаете. Никогда не пишите задачи на человекопонятном языке. Лучше всего используйте в описании задачи мета-код и обязательно запросите время на исследование. Потом создайте десятки подзадач с оценками в 1-2 часа.

Запомните, для сложной работы просто так постановку задач не сделать. Это сложно, а сложную работу — нельзя сделать быстро.

Никакой документации и внятной постановки задач. Сопротивляйтесь до последнего.

Переусложнение архитектуры

Хорошо, мы уже всем классно рассказали, почему добавить поле в наш сервис чуть более сложно, чем отправить человека на Марс. Мы провели необходимые технические исследования и ознакомились с содержимым технологических форумов, после чего написали отчёт и прикрепили к документации для потомков, если они, не дай Бог, будут.

Теперь надо это реализовать. Я серьёзно. Мы должны сделать простое сложным. Поэтому мы будем удовлетворять свои амбиции и реально напишем подсистему для работы с кластерным SQLite и двухслойную систему кеширования данных, плюс систему логирования и восстановления по логу транзакций. Заодно ещё и отдельный ELK под это дело развернём. Главное самому не запутаться.

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

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

Если вы увлеклись, начали не спать и работать по ночам и выходным, то подавайте это как вовлеченность и лояльность к компании.

Оверинжиниринг

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

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

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

Помните, что если можно сделать что-то простое сложным, то сделайте это. Сложным должен быть не только ваш код, вся ваша работа должна выглядеть сложной.

Сложным должен быть не только ваш код, вся ваша работа должна выглядеть сложной.

Слепое следование стереотипам

В мире информационных технологий очень много полезных инструментов и подходов. Их нужно использовать, но как это совместить с JSDD? Всё просто. Не пользуйтесь первоисточниками. Не надо разбираться в том, какие идеи изначально вкладывались в рефакторинг Фаулера, паттерны проектирования «Банды четырёх» и прочего. Вам нужны инфоцыгане. После нескольких итераций перепечатки без понимания даже очень хороший подход станет пригоден для JSDD.

А инфоцыгане не понимают, они классно и сложно рассказывают. И им постоянно нужен новый контент. Это ваш верный союзник по JSDD. И вы всегда сможете сослаться на «общепринятое мнение» и «комьюнити».

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

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

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

Никакой обратной совместимости

Внимание! Важно. Вы должны постоянно переписывать и дописывать функционал. Теряйте обратную совместимость, это полезно. Потом закроете проблему костылями.

В идеале вам следует написать первый слой API. Потом начать писать вторую версию API, бросить её на полпути, начать писать третью версию API, включая туда новые методы. Методы в первой, второй и третьей версиях API должны ссылаться друг на друга. Обещайте всё исправить в четвёртой новой версии API, в которой будут только новые методы API.

В какой-то момент нужно просто отказаться от одной версии API, получить огромный регресс и заняться багфиксом с помощью написания костылей. Со временем ваш код настолько устанет, что не придётся прикладывать особых усилий, чтобы код был объёмным, сложным и непонятным, а времени на решение простых задач уходило действительно «овердофига». И любой новый человек, посмотрев на ваше произведение искусства, просто увольнялся бы.

Сделай несколько недописанных API, которые перекрестно используют функционал друг друга.

Велосипедостроение и инновации

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

При этом нужны и велосипеды. Прямо в ядре того, чем вы занимаетесь. Идеально написать свой фреймворк, вокруг которого развешать инновационные микросервисы. Даже если кто-то уже 1000 раз решал какую-то задачу до вас, то ваше 1001 индивидуальное решение всё равно необходимо миру. Ведь у вас получится лучше. Ведь если бы вы не сидели в своей компании, а, например, запускали бы людей на Марс, то люди бы уже летели на Альфа-Центавру.

Даже если кто-то уже 1000 раз решал какую-то задачу до вас, то ваше 1001 индивидуальное решение всё равно необходимо миру.

Индивидуальная разработка

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

Классной идеей является ввод код-ревью. С помощью него можно останавливать работу особо инициативных и продвинутых. А ещё можно совместно работать с собратом по JSDD, переправляя и усложняя код друг друга. Кроме того, код-ревью удлиняет работу, а вы делаете сложную работу, сложную работу — нельзя сделать быстро. И код-ревью даёт видимость сложности, под него даже можно сделать особый процесс с приёмом мёрж-реквестов по пятницам. Заодно возникнут конфликты с коммитами, и весь понедельник можно тратить на их разбор.

Можно сделать особый процесс с приёмом мёрж-реквестов по пятницам. Заодно возникнут конфликты с коммитами, и весь понедельник можно тратить на их разбор.

Непредсказуемость

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

Идеально для затягивания сроков подходит багфикс. Давайте оценку на разработку без учёта отладки и багфикса. Лучше всего разрабатывать через багфикс. Тогда вы, наоборот, занижаете оценку, пишите что-то не проверяя, а потом тратьте х10 времени на исправление багов. Заодно и вашего QC не уволят. Регресс очень важен для JSDD. Все должны понимать, что без вас всё сломается и никто, кроме вас, не сможет это починить.

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

Идеально для затягивания сроков подходит багфикс.

Стань супер-героем и спаси всех

Если вы знаете о надвигающейся беде, которая приведёт к аварии, где без вас совсем никак, то никому об этом не говорите. Вместо этого тайно, чтобы никто не заметил, подготовьтесь к подъёму упавшего, и убедитесь, что при падении оно в дребезги не разобьётся. Например, вы знаете, что из-за вашей восхитительной системы логирования, на сервере скоро закончится место. После чего сервер просто упадёт, а функционал отключится.

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

Потому что, когда вам будут в панике звонить, вы сможете описать, как вы сейчас сидите с удочкой на отдалённом горном озере и сейчас вам очень сложно будет что-то сделать. После чего вы скажете, что сейчас попробуете исправить всё с телефона (!!!). Для этого включаем VPN на телефоне, получаем консольный доступ к серверу. Нет, я не шучу, были реальные случаи, когда так приходилось делать. И через консоль на телефоне — поднимаете сервер. Желательно, минут за 10 до того, как ответственные люди должны предстать перед генеральным директором организации.

Заранее выберите жертву, которая будет во всём виновата. Когда опасность спадёт, обязательно перезвоните и расскажите всем, каков вы чёртов технический гений, который с телефона, фиг пойми как, решает аварийные ситуации, возникшие из-за рассинхронизации в силу дедлока в одной из реплик кластера базы данных, который обрушил сначала всю оркестрацию на сервисе, из-за чего рухнул балансировщик, и вообще, вы говорили, что не надо добавлять это поле в базу данных либо просто «этот функционал», который «опасный» и который пришлось делать несколько месяцев. Разбавляйте технические термины обсценной лексикой, чтобы всем было хоть немного понятно, как вам было сложно и какой технический подвиг вы только что совершили, чтобы всех спасти.

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

Спаси всех, подняв сервер с помощью консоли, запущенной на телефоне во время своей поездки куда-нибудь.

Подводя итоги

Принципов и best practices в Job Safety Driven Development гораздо больше, чем я смог описать, например, есть еще адаптация JSDD под Agile. Всё же это лишь несерьёзная статья на серьёзную тему. Она призвана только подсветить проблему, пусть даже в виде шутки.

Возможно, я когда-нибудь напишу про JSDD уже серьёзно. Мы иногда проводим ИТ-аудит, при котором встречается разное. Часть случаев списана с реальных событий, происходивших в компаниях наших заказчиков, да и в нашей собственной компании тоже. На самом деле, доля шутки в том, что я написал выше, не такая уж и большая.

Давайте напоследок выделим главное в Job Safety Driven Development:

  • Bus factor сотрудника стремится к единице.

  • Сотрудник не может либо не хочет говорить на понятном всем языке. Поверьте, «птичий язык» в области информационных технологий не является чем-то обязательным.

  • Работа сотрудника носит непредсказуемый и непонятный характер, вокруг него всегда много суеты.

  • Создаётся видимость высоких рисков для бизнеса. Важность многих проблем сильно преувеличивается.

Конечно, можно выделить ещё что-нибудь, но пора заканчивать. Если вы дочитали до конца, вам было интересно и забавно, то спасибо вам. Если вы поняли для себя что-то важное, то спасибо вам вдвойне.

P.S.

После написания статьи, оказалось что стоит рассказать о том, почему даже опытные и добросовестные программисты волей случая могут попадать в схожие ситуации. Сначала захотелось написать статью «Почему ошибаются программисты?» (Часть 1 и Часть 2), то есть о том почему программисты ошибаются вообще. Оказалось, что это слишком разные темы. Затем оказалось, что и на эту тему получился очень длинный текст. Пришлось разбить его на части. В первой части были рассмотрены обычные случаи, которые знакомы многим крупным компаниям. И дополнено понятие «серебряная пуля» понятием «золотая шестерёнка». Во второй части коснулись вопроса о том, какую цену вам, скорее всего, придётся заплатить за «золотую шестерёнку», там я привел немного своего опыта.

Как правильно изучать программирование и начать писать код

Как самостоятельно обучиться и стать программистом – минимум знаний, правильный выбор учебных материалов, какой язык изучить первым, чтобы быстро начать писать код.

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

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

Лучше всего учиться по тщательно составленным и продуманным курсам с тестовыми заданиями и возможностью общения с преподавателями. Можем порекомендовать пройти обучение в ITEA – https://itea.ua/courses-itea/python-dev/python-advanced/ программированию на Python.

Минимум знаний

Первое, что вы должны усвоить, есть такое понятие как минимум знаний – это обязательный теоретический запас для написания того или иного функционала. Для каждой задачи он свой и вы должны уметь определять хватает ли вам тех знаний, которые у вас есть в текущий момент, чтобы написать тот или иной код.

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

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

Теория и практика

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

Все знания мы можем разделить на две части – теория и практика. Вы не можете написать практику, если у вас нет теории. Поэтому очень важным моментом является то какую теорию вы изучаете и какие теоретические материалы вы впитываете.

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

Например, в первом случае вам говорят сделать бота для Telegram, который будет искать и показывать новости, релевантные запросу пользователя. А во втором случае вам предлагают написать функцию, которая принимает какие-то переменные и рассчитывает какой-то результат.

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

Прежде всего просмотрите разделы с практическими заданиями – если вам в принципе понятно что от вас требуется и зачем это нужно, то приступайте к изучению теоретической части. Если вам вообще ничего не понятно или после изучения теории вы не можете пройти практику – откажитесь от этого курса и поищите другой.

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

Языки программирования

Не рекомендуем начинать изучение программирования со сложных языков, таких как C++ или PHP, так как это довольно объемный пласт, на освоение которого уйдут годы, если вы еще очень упорны и дойдете до конца.

Исключение составляют случаи, когда вы точно знаете, чего хотите. Например, для создания игр и сложных приложений вам все равно придется учить C++. А вот в веб-разработку можно войти более плавно, начинайте с HTML и CSS – это просто и осилит каждый, уже через несколько месяцев вы сможете реально что-то зарабатывать.

Когда верстка пойдет на автомате, в какой-то момент от вас наверняка потребуют использовать Java Script, его изучение также не является сложной задачей – это повысит вашу квалификацию и доход. Затем можно перейти к PHP – зная фронтенд, гораздо проще будет освоить бэкенд. А это уже совсем другой уровень и другие деньги, так как это настоящий мощный язык программирования, в отличие от предыдущих довольно примитивных и узко прикладных языков разметки и скриптов.

Довольно универсальным и сравнительно простым является язык Python.

На нем можно делать много чего и такие специалисты востребованы во множестве сфер, найти себе применение не составит труда.

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

Обзор редакторов кода — Блог HTML Academy

  • Sublime Text 3;
  • Atom;
  • VS Code;
  • WebStorm.

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

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

Существуют как платные редакторы, так и бесплатные. На сегодняшний день наиболее популярные из них: Visual Studio Code, Sublime Text, Atom, WebStorm.

Что умеют редакторы кода

Подсветка синтаксиса

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

Автоматические отступы

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

Файл, в котором корректно выставлена вложенность, легко читается, также это даёт программе возможность скрывать блоки кода. Например, чтобы лучше видеть границы участка и случайно не затронуть соседние, можно удобно сгруппировать блоки кода и оставить видимым только тот, который нужен.

Автодополнение

Во время разработки часто приходится искать справочную информацию. Благодаря встроенной возможности автодополнения можно не тратить на это время. Программа на ходу анализирует написанный код и предлагает варианты продолжения.

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

Разделение рабочей области

Рабочую область редактора можно разделить на два и более секторов. Например, так можно разделить файл разметки и стилей, для того чтобы не тратить время на переключение между проектами и папками.

Мини-карта

Для удобной навигации в документе можно использовать миникарту. Обычно она находится в правой колонке и отображает структуру файла. При нажатии на миникарту отобразится нужная часть документа.

Внешний вид

Для тех, кто любит настраивать инструмент под себя, в настройках есть множество регулировок: можно изменять размер шрифта, цветовые схемы, правила переноса текста и многое другое. Это поможет сделать процесс разработки ещё комфортнее.

Проекты

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

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

Такой анализ даёт возможность безопасно проводить рефакторинг кода, удалять файлы и прочее.

Плагины

Помимо выполнения основной функции — предоставления комфортных условий для написания кода — редакторы могут включать в себя функциональность сторонних приложений. Это делает из простой программы интегрированную среду разработки. В базовую версию у разных редакторов входит разное количество таких приложений.

Обогатить функциональность можно через добавление плагинов. Рассмотрим некоторые подобные возможности.

Система контроля версий

Работать с системой контроля версий для разработчика — обычное дело. Часто все команды прописываются и выполняются через консоль. Для ускорения процесса разработки часть рутинных операций, такие как push, pull, commit и другие можно выполнять через редактор.

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

Также в удобной форме можно посмотреть: историю коммитов, кто, когда и как изменял файлы и многое другое.

К примеру, через Atom или WebStorm можно сделать commit изменений, выполнить push в удалённый репозиторий и после создать pull request в сервисе GitHub. И все эти действия делаются в рамках редактора.

Возможности редактора при работе с Git

Emmet

Во многие редакторы по умолчанию встроен плагин emmet. С его помощью можно из короткой строки развернуть большой кусок кода.

Используя подобную технику можно в разы ускорить написание разметки.

Консоль

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

Консоль

Дебаггер

Ещё один удобный инструмент — встроенный дебаггер, позволяющий отлаживать код. Можно выставлять точки останова и искать, в каком месте программы происходит неожиданное поведение.

Отладчик

Единый стиль написания кода в команде

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

  • Через editorconfig можно прописать часть настроек для редактора. Например, выбрать, с помощью чего производить отступы — табы или пробелы, указать тип окончания строк и прочее;
  • Через плагин eslint редактор на лету может проверять JavaScript код на соответствие заданным правилам. В случае ошибки редактор укажет на место, где была допущена ошибка, и расскажет, какое правило нарушено.
Единый стиль кода

Библиотека плагинов

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

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

Горячие клавиши

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

Sublime Text 3

Скачать редактор с официального сайта можно здесь.

Расширения для редактора

Для Sublime Text 3 написано множество пакетов, которые делают работу в редакторе более комфортной. Далее рассмотрим ряд таких расширений и посмотрим, как их устанавливать в программу.

Для того чтобы добавить пакет, нужно открыть интерфейс для ввода команд. Сделать это можно через пункт меню Tools → Command Palette или вводом горячих клавиш command (control) + shift + p. После этого в интерфейсе для ввода команд нужно выбрать пункт Package Control: Install Package

После этого программа покажет список пакетов. Здесь можно выбрать и установить нужный пакет. Посмотреть подробное описание каждого расширения для Sublime Text 3 можно на сайте Package Control.

Установка расширений в Sublime Text 3

Условно пакеты можно разделить на несколько типов.

Ускоряющие разработку:

  • Emmet. Плагин, ускоряющий написание разметки и стилей.
  • BracketHighlighter. Дополнительно добавляет подсветку границ скобок, элементов и прочего. Помогает лучше ориентироваться в коде.

Добавляющие функциональность:

  • SideBarEnchacements. Увеличивает количество действий, которое можно сделать в боковой панели при работе с файлами и папками.
  • Sublime​Code​Intel. Делает редактор «умнее». Добавляет автодополнение для разных языков и другие полезные возможности.
  • Git и GitGutter. Добавляют интеграцию с системой контроля версий Git в редактор.
  • EditorConfig. Полезный пакет для настройки параметров редактора.

Проверяющие синтаксис:

Сперва для редактора следует установить пакет SublimeLinter. Также на компьютере должен быть установлен Node.js. После этого нужно установить интересующие плагины для проверки. В большинстве они называются SublimeLinter-нужный пакет. Например:

  • SublimeLinter-eslint. Проверяет JavaScript-код. Для работы нужно глобально установить npm-пакет eslint. Подробнее в инструкции по ссылке.
  • SublimeLinter-stylelint. Проверяет CSS. Для работы нужно глобально установить npm-пакеты: postcss и stylelint.

Изменяющие внешний вид:

Если недостаточно стандартных встроенных тем, то можно установить дополнительные. Примеры тем можно посмотреть на официальном сайте.

Atom

Продукт, произведённый командой GitHub Inc. Приятный на вид, кроссплатформенный бесплатный редактор. Имеет встроенную интеграцию с Git и GitHub.

Скачать с официального сайта можно здесь.

Расширения для редактора

Для того чтобы установить пакет в Atom, нужно перейти в настройки редактора и выбрать пункт Install. После этого в поле ввода нужно ввести название интересующего расширения.

Установка расширений в Atom

Список популярных расширений можно посмотреть на официальном сайте.

Условно плагины можно разделить на несколько типов.

Ускоряющие разработку:

  • Emmet. Плагин, ускоряющий написание разметки и стилей.

Добавляющие функциональность:

  • Minimap. Добавляет поддержку миникарты в Atom.
  • PlatformIO IDE Terminal. Встраивает терминал в редактор.
  • Atom-Beautify. Форматирует текст по заданным настройкам и приводит его к единообразию.
  • Editorconfig. Полезный пакет для настройки параметров редактора.

Проверяющие синтаксис:

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

  • linter-eslint. Проверяет JavaScript-код.
  • linter-stylelint. Проверяет CSS.

Изменяющие внешний вид:

  • File Icons — заменяет стандартные иконки файлов.
  • Кастомные темы для Atom на официальном сайте.

Visual Studio Code

Бесплатный кроссплатформенный редактор компании Microsoft. Является одним из самых популярных редакторов на данный момент. Скачать можно здесь.

В базовой версии есть интеграция с Git и режим отладки кода. Поддерживает, в том числе и через дополнения, большое количество языков.

Обзор редактора VS Code

Расширения для редактора

VS Code в базовой версии содержит большое количество плагинов. К примеру, консоль, emmet и мини-карта в нём присутствуют с самого начала. Добавить новые пакеты можно через интерфейс программы. Для этого во вкладке активного меню нужно выбрать пункт extensions и в поле ввода ввести интересующий плагин. После этого его можно установить.

Установка расширений в VS code.

Посмотреть список популярных плагинов можно через интерфейс редактора, либо на официальном сайте. Рассмотрим ряд полезных плагинов, которые могут помочь при разработке. Условно их можно разделить на несколько типов.

Добавляющие функциональность:

  • Для удобной работы с системой контроля версий Git можно добавить плагины Git History и GitLens.
  • Project Manager — добавляет редактору возможность работать с несколькими проектами.
  • Settings Sync — синхронизирует настройки и установленные плагины между программами на разных компьютерах.
  • Beautify — форматирует текст по заданным настройкам и приводит его к единообразию.

Проверяющие синтаксис:

  • ESLint — проверяет JavaScript код по заданным параметрам.

Изменяющие внешний вид:

  • Vscode-icons — заменяет стандартные иконки файлов.
  • Посмотреть на кастомные темы для Vscode можно на официальном сайте.

WebStorm

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

Продукт платный и доступен к использованию по подписке, установить и оформить подписку можно здесь. Каждый из продуктов отвечает за определённую сферу. WebStorm, к примеру, больше подходит для фронтенд-разработки, а PHPStorm — для написания серверного кода на языке PHP.

Расширения для редактора

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

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

Установка расширений в WebStorm.

Установить новые можно через пункт Install Jetbrains plugin. Из интересных можно выделить:

  • Editorconfig;
  • LiveEdit.

Вывод

У всех редакторов, которые мы рассмотрели, есть свои особенности и преимущества. При выборе программы стоит отталкиваться от задачи.

Если для работы важна скорость редактора, то тут лучшим выбором будет Sublime Text. Он легковесный и мало тратит ресурсов компьютера.

Если приоритетно удобство или вы совсем новичок в разработке, то тут хорошо подойдёт Atom. У него приятный интерфейс и хорошо проработана интеграция с сервисами Git и GitHub.

Для опытных разработчиков отличным решением будет WebStorm. Программа требует минимальных настроек для комфортной разработки и обладает богатой функциональностью.

Некоторой золотой серединой выступает VS Code. C одной стороны, он из коробки обладает большим количеством возможностей, с другой — интуитивно понятный и легко настраиваемый. При этом программа достаточно быстро работает.

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

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

Попробуйте свои силы на курсе по вёрстке

Запишитесь на ближайший поток курса «HTML и CSS. Профессиональная вёрстка сайтов», чтобы попробовать всё на практике.

Хочу

Ещё из рубрики «Софт»

Adobe покупают Фигму. Всё пропало?

Не факт, но есть разные мнения.

Работа с Git в Visual Studio Code

Один из способов работать с Гитом.

Как искать и выбирать npm-пакеты?

Шпаргалка для начинающих.

Процесс написания кода | Жизнь программиста

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Не волнуйтесь, если что-то не работает. Если бы всё работало, вас бы уволили.

Насколько важным является процесс кодирования в программировании? Ответ на этот вопрос не так очевиден, как может показаться на первый взгляд. Некоторые считают, что это и есть программирование, но на самом деле это не так.

Факты о программировании

Вот некоторые неочевидные факты о программировании:

  • Только 10-20% времени тратится на кодирование
  • Большая часть времени тратится на размышления
  • Существенная часть времени тратится на отладку
  • В день пишутся лишь десятки строк кода, которые пойдут в конечный продукт

Действительно, профессиональные разработчики тратят лишь 10-20% времени непосредственно на написание кода. Сравним, как выглядит работа программиста в реальной жизни с тем, как она обычно представляется в кино. В фильмах программисты постоянно набирают что-то на клавиатуре, но в обычной жизни вы скорее увидите человека, который чешет голову и задумчиво смотрит в экран, записи или вообще в пустоту. Зачастую тот код, который пишет программист, не является конечным. Он может постоянно его дорабатывать, переписывать, и в конечном итоге в день будет написаны несколько десятков строк готового кода, которые пойдут в конечный продукт.

Рассмотрим график, который показывает распределение рабочего времени в зависимости от уровня программиста: от начинающего до профессионального.

Ось Х отражает уровень программиста, а ось Y — его рабочий день. Видно, что есть очень сильная корелляция между уровнем разработчика и тем, на что уходит его рабочее время. Когда человек только начинает учиться программированию, то большую часть времени занимает именно процесс кодинга и отладки. Причем на отладку будет уходить даже больше времени, нежели указано на графике — не менее 90%. Отладка — это процесс поиска ошибок в коде. Именно количество времени, которое уходит на отладку, является одним из показателей уровня программиста. Помимо отладки новичок много занимается и кодингом, потому что ему нужно набивать руку. Кодинг можно сравнить с любым ремеслом, даже боевым искусством. Это такой процесс, который в конечном итоге, когда вы становитесь профессионалом достаточно серьёзного уровня, автоматизируется и становится просто способом реализации того, что вы придумали.

И для ремесленника, и для художника, и для программиста первоочередная и самая сложная задача — это создать идею, продумать, что она в себя будет включать и как её воплотить в жизнь. А сам процесс воплощения обычно протекает гораздо проще.

Из чего состоят языки

Процесс кодинга — это непосредственная работа с языком. Пришло время разобраться, что из себя представляет язык. Любой язык программирования, равно как и язык естественный, состоит из 3 элементов.

Лексика

Первый элемент — это лексика. Лексика включает в себя словарь языка — набор слов, который в нём используется. В языках программирования такой набор слов гораздо более ограничен: в нём могут использоваться несколько десятков слов и спецсимволов против десятков тысяч слов в естественном языке. С другой стороны, выучить лексику языков программирования, а значит и усвоить его основы, гораздо проще. Ключевые слова учатся в процессе обучения и очень похожи во многих языках.

Синтаксис

Второй элемент языка — синтаксис, то есть те слова и конструкции, которые в нём присутствуют. Они записываются в виде программ, которые должны быть синтаксически корректными — это означает, что слова должны стоять в определенном порядке и подчиняться определенным правилам. Нарушение синтаксиса — это ошибка, и, в отличие от естественных языков, синтаксис в языках программирования — штука очень строгая, его нарушение сразу приводит к ошибке. Именно с этими ошибками в первую очередь сталкиваются программисты, которые пишут свои первые программы. Синтаксические ошибки просто отслеживать — нужно лишь немного набить руку. Знание синтаксиса — это основа, с которой начинается программирование.

Семантика

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

Чем на самом деле является язык программирования

Языки программирования существуют в 2 формах:

  • Стандарт языка
  • Реализация стандарта

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

Вторая форма языка — это реализация стандарта. Их может быть несколько, они все могут быть разработаны разными производителями, иметь свои особенности, но все без исключения должны подчиняться спецификации (стандарту). Подчинение спецификации даёт возможность исполнять код в разных средах.

Разобраться в разнице между стандартом языка и его реализацией можно на примере популярнейшего языка программирования JavaScript, который используется абсолютно везде и часто идёт вторым языком почти в каждом проекте, особенно в веб-разработке. Есть стандарт ECMA-262 или ECMAScript, а есть

язык JavaScript, который является его реализацией. Существует несколько реализаций ECMAScript, среди которых TypeScript и JScript, которые написаны Microsoft, ActionScript от Macromedia (Adobe) и другие. При этом сам язык JavaScript остаётся такой же реализацией, которая имеет несколько сред исполнения.

Одной из таких сред является браузер. Есть несколько разных браузеров, у каждого из которых своя реализация JavaScript. Существует еще серверная, бэкенд-реализация — она называется NodeJS — которая позволяет исполнять тот же самый JavaScript. Некоторые теряются и не понимают разницы между JavaScript и NodeJS, выбирая, что же из этого им нужно учить. На самом деле, выбор здесь прост: в первую очередь надо осваивать JavaSсript, как самую популярную реализацию стандарта ECMAScript, и только после этого погружаться в специфики сред исполнения.

Примерно такая же ситуация с другими языками.

Для любого языка истина в последней инстанции — это его спецификация. Зачастую её очень непросто читать, и есть более человечные способы знакомства с синтаксисом и семантикой языка, но помните о первоисточнике — к нему всегда можно обратиться и найти ответ на вопрос, как работает тот или иной элемент языка.

Заблуждение

Знание синтаксиса языка программирования и семантики и есть программирование?

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


Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Как писать код и сразу видеть результат

Когда только начинаешь программировать и делать сайты, важно понимать, что вообще происходит. Вот изменил ты параметр объекта — а правильно или нет? Заработало это или нет? Красиво вышло или ужасно?

Чтобы разработчик сразу видел результат труда, боги создали для него IDE — integrated development environment, по-русски — среду разработки. Это программа, в которой программист пишет код, ловит ошибки и наблюдает результат.

Чисто технически работать можно и без IDE: писать код в блокноте и просматривать его в специальных программах или браузере. Но это бывает медленно и требует дополнительных телодвижений. Лучше научиться пользоваться IDE и писать в сто раз быстрее.

Выбор среды разработки (IDE) — дело вкуса и привычки. Какие-то из них — универсальные, другие заточены под конкретные языки программирования. IDE часто похожи по своим возможностям и позволяют увеличивать функциональность за счёт внешних дополнений.

Visual Studio Code

Программу можно скачать с официального сайта. Несмотря на то, что VS Code делает Микрософт, это бесплатный продукт с открытым исходным кодом, доступный на всех платформах. Благодаря этому и своим возможностям VS Code стал одной из самых популярных сред для разработки в мире.

VS Code распознаёт почти все существующие языки программирования, самостоятельно или с помощью плагинов, и форматирует их соответствующим образом. Кроме этого, у него глубокая поддержка HTML, CSS, JavaScript и PHP — он проследит за парными тегами, закрытыми скобками и ошибками в командах.

Вот самые интересные возможности VS Code.

Умное автодополнение. Программа анализирует, какую команду вы хотите ввести, и предлагает закончить фразу за вас, с подсказками и объяснением. Удобно, если  вы забыли порядок следования переменных или как точно звучит нужная команда:

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

Множественное выделение и поиск. Чтобы поменять много одинаковых значений переменных или найти все одинаковые слова или команды, VS Code использует свой алгоритм обработки. Благодаря этому редактировать код становится проще, а замена функций или переменных происходит быстрее.

Мультикурсор помогает вводить одинаковые значения сразу на нескольких строках

Найденные одинаковые слова и команды можно тут же заменить на другие

Навигация по коду и описания функций. Когда пишешь большую программу, легко забыть то, что делал в начале — как работает функция или какого типа переменная используется в этом месте. Чтобы этого избежать, VS Code может показывать саму функцию, описание переменной или какие параметры передаются при вызове команды. Ещё это пригодится, если код достался вам по наследству от прошлого разработчика и нужно быстро понять, какие куски кода за что отвечают и как работают:

Сразу после установки VS Code не умеет показывать результаты работы кода, когда мы делаем веб-страницы. Это можно исправить с помощью расширения Live HTML Previewer. Для этого заходим в раздел «Extensions», щёлкая на последнем значке на панели слева или нажимая Ctrl+Shift+X, и начинаем писать «Live HTML Previewer» в строке поиска.

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

WebStorm

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

Автоподстановка. Некоторые IDE с автоподстановкой тормозят и не предлагают сразу все варианты переменных или команд — но не WebStorm. Здесь всё работает с первой буквы и понимает, когда надо предложить переменную, а когда команду или служебное слово:

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

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

Чтобы сразу видеть, что получается на странице, нам понадобится плагин LiveEdit. По умолчанию он выключен, но его можно включить или поставить отдельно в любое время. После активации нужно будет в настройках плагина поставить галочку «Update application in Chrome on changes in» — она как раз отвечает за обновление информации в браузере Chrome. Теперь можно писать код и сразу видеть результат:

Sublime Text 3

Бесплатный редактор, который назойливо предлагает занести денег разработчикам.

Про Sublime Text у нас есть отдельная и более подробная статья — почитайте, там тоже интересно.

Sublime Text — потрясающе мощный текстовый редактор. Его сила — в скорости работы, он одинаково быстро обработает простую веб-страничку или программу на сто тысяч строк кода. Подсветка синтаксиса всех возможных языков программирования, автоподстановка, умное закрытие тегов — всё это доступно сразу после установки.

Пример разметки HTML-кода в Sublime Text

Вот что ещё умеет программа сразу после установки:

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

Вторая суперспособность, которая превращает Sublime Text из простого текстового редактора в универсальное решение, — плагины. По принципу действия они такие же, как и в других программах из обзора, но они совершенно не влияют на скорость работы. Когда начинаешь плотно работать с Sublime Text, может показаться, что у него есть плагины для всего. Нужно редактировать одновременно один и тот же код, но в разных панелях — пожалуйста, написать быстро HTML-код — само собой, проверить код на ошибки и недочёты — без проблем.

Emmet сокращает время на написание кода, подставляя вместо стандартных команд целые куски готового кода

JavaScript & NodeJS Snippets упрощает написание кода на JavaScript и работает по тому же принципу, что и Emmet

Почему Node.js — это гуд

SublimeCodeIntel помогает быстро разобраться в коде со множеством функций. Если щёлкнуть на название любой функции, плагин сразу покажет вам её описание.

Так как эта статья — для начинающих программистов, которым важно сразу видеть изменения в коде, то посмотрим, как это делает Sublime Text.

Сразу после установки он этого делать не умеет, но нам поможет плагин LiveReload. Он показывает все изменения в браузере, как только мы сохраняем рабочий файл с кодом. Это не так изящно, как в VS Code, но в случае с Sublime Text простительно. Дело в том, что привыкнув однажды писать в нём код, сложно пересесть на что-то другое, что работает с той же скоростью. Установка LiveReload состоит из двух компонентов — плагин для Sublime Text и расширение для браузера.

После установки давайте посмотрим, что у нас получилось. Создадим файл tested.html в Sublime Text, разметим его внутри стандартным шаблоном как HTML-документ, а рядом откроем окно браузера.

В реальном времени мы не увидим на странице те изменения, которые вносим в код, как это было в VS Code. Но если нажать Ctrl+S, чтобы сохранить все данные, то браузер моментально показывает то, что мы сделали.

Если вы серьёзно настроены программировать, присмотритесь к Visual Studio Code. Почти со всем он справляется сам или с плагинами, не нужно подключать дополнительно браузеры или сторонний софт.

Любите, чтобы после установки были доступны почти все нужные функции? Попробуйте WebStorm — платную, но мощную среду разработки.

Если вам важна скорость работы в любых ситуациях, то Sublime Text — лучший выбор. Он очень быстрый, и для него есть плагины почти на все случаи жизни.

Как начать писать код

Статья

By Pluralsight    | 12 мая 2015 г.

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

Что такое написание кода?

Термины «написание кода», «кодирование» и «программирование» в основном взаимозаменяемы. В широком смысле знание того, как писать код, — это процесс создания инструкций, которые говорят компьютеру, что делать и как это делать. Коды пишутся на разных языках, таких как javascript, C#, Python и многих других.

Разные языки программирования используются для разных функций, и очень важно знать несколько из них, а не только один. Некоторые языки более тесно связаны друг с другом, чем другие. Например, если вы интересуетесь веб-разработкой — созданием веб-сайтов — вы, вероятно, захотите изучить HTML, CSS и Javascript, а также связанные с ними библиотеки и фреймворки, такие как jQuery или Angular. Но, вопрос на миллион долларов, с чего начать?

Как писать код

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

  1. Решите, почему вы хотите научиться программировать и чего вы надеетесь достичь. Учитывайте количество времени и денег, которые вы готовы инвестировать в процесс.

  2. Определите, какой язык кодирования вам нужно выучить, чтобы достичь своей цели, или вы хотите выучить несколько языков.

  3. Выберите, как и где вы хотите учиться. Онлайн-курсы из дома? Высшее образование? Только основы из книг, видео на YouTube и онлайн-статей?

  4. Выберите и загрузите редактор кода, чтобы вы могли писать код из дома после прохождения курсов или в процессе домашнего обучения.

  5. Начинайте творить и практиковаться, практиковаться, практиковаться!

  6. Присоединяйтесь к сетевым сообществам, посещайте живые семинары или найдите что-то еще, что позволит вам обсуждать идеи, задавать вопросы и получать отзывы о своей работе.

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

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

 

Какой

лучший язык?

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

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

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

Как выбрать и выучить желаемый язык программирования

Существует несколько типов языков программирования, включая функциональные языки, которые больше подходят для работы с большими объемами данных и процедурных языков. Их лучше использовать для выполнения низкоуровневых системных задач, но сейчас я сосредоточусь на наиболее часто используемых языках объектно-ориентированного программирования (ООП). Хотя у всех языков есть свое лучшее применение, я собираюсь сделать смелое заявление, что на данный момент я думаю, что объектно-ориентированные языки более благоприятны для начинающих. Почему? Потому что основной принцип почти всех объектно-ориентированных языков один и тот же — вы создаете объекты и делаете с ними что-то.

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

  • Java — этот язык используется для загрузки фотографий, интерактивных карт, игр и виртуальных туров. Java — это не то же самое, что Javascript.

  • Python — Python можно использовать для создания веб-сайтов, программного обеспечения, игр и настольных графических пользовательских интерфейсов (GUI), а также для предоставления доступа к базе данных. Python можно использовать отдельно или как часть другой среды, например Django.

  • Objective C — Этот язык ООП основан на C, созданном Apple. Он используется для разработки приложений для продуктов Apple, но не совместим с Android и другими платформами.

  • C++ — C++ используется для разработки программного обеспечения, игр и приложений, но, в отличие от C, он совместим с несколькими платформами, включая Apple и Android, а также Windows и Blackberry.

Вот базовая программа, написанная на нескольких разных языках ООП. Этот пример представляет собой самую простую программу для написания, которая называется «Hello, World», и ее часто используют программисты, чтобы получить представление о самых основных функциях языка.

Сначала создайте строку и присвойте ей значение: «Hello, World»

Теперь давайте сделаем что-нибудь с этим значением, написав его где-нибудь на экране (ПРИМЕЧАНИЕ: речь идет не о понимании всего кода, это просто чтобы заметить их сходство).

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

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

Дополнительные советы по обучению написанию кода

Если вы только начинаете, может быть полезно окунуть пальцы ног в воду, прежде чем нырять. Попробуйте некоторые онлайн-курсы, чтобы узнать, подходит ли вам программирование. Сайт Javascript.com, принадлежащий Pluralsight, предлагает несколько интересных вариантов курсов, которые помогут вам научиться программировать дома.

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

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

Наконец-то получайте удовольствие! Знаете ли вы, что существуют игры по программированию, в которые вы можете играть, чтобы развить свои навыки? Попробуйте CodinGame, Hour of Code, Minecraft: Education Edition или FreeCodeCamp. И не забывайте о большом количестве видео на YouTube, которые вы можете посмотреть во время обеденного перерыва или в свободное время.

Начните учиться писать код с помощью этих советов и пошаговых инструкций уже сегодня!

Об авторе

Pluralsight 9Платформа технологических навыков 0060. Мы даем возможность отдельным лицам и командам развивать свои навыки, ускорять карьеру и создавать будущее.

Написание кода | Академическая честность в Массачусетском технологическом институте

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

Когда я должен ссылаться на источник в своем коде?

  • При копировании кода из внешнего источника. Независимо от того, копируете ли вы фрагмент кода или весь модуль, вы должны указать источник.

  • Когда вы копируете код и адаптируете его, вы все равно должны указать источник. Вы не были первоначальным разработчиком кода.

Как указать код?

  • Как правило, достаточно URL-адреса и даты получения. Добавьте больше деталей, если это поможет читателю лучше понять источник.

  • Если вы адаптировали код, вы должны указать «Адаптировано из:» или «На основе», чтобы было понятно, что вы изменили код.

  • У вашего инструктора могут быть особые инструкции о том, как вы должны или не должны цитировать свои источники. Если вам не ясно, что приемлемо, спросите у своего инструктора.

Использование программного обеспечения с открытым исходным кодом

При использовании кода из проекта с открытым исходным кодом необходимо указать источник и следуйте условиям любой лицензии с открытым исходным кодом, применимой к коду, который вы используете . Имейте в виду:

  • Когда вы загружаете исходный код, лицензия обычно является частью загрузки.

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

  • При включении в программу кода с лицензией с открытым исходным кодом рекомендуется дублировать авторские права в коде и/или хранить лицензию в файле с кодом.

  • Если вы не получили лицензию при загрузке, вы сможете найти ее на сайте проекта с открытым исходным кодом, например на сайте Apache HTTP Server, или на сайте Open Source Initiative (OSI).

Преподаватели определяют конкретные ожидания в отношении повторного использования кода в каждом классе.

Часто требования описываются в политике сотрудничества для класса. Если политика не описана четко в материалах курса, и вы не уверены, что приемлемо, спросите своего преподавателя.

Политика сотрудничества с весны 2012 г. 6.
005 Элементы построения программного обеспечения:
( используется с разрешения профессора Роба Миллера, кафедра электротехники и компьютерных наук )

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

Индивидуальная работа

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

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

Хорошо помогать другим ученикам. Но, как правило, в то время, когда вы помогаете другому студенту, ваше собственное решение не должно быть видно ни вам, ни им. Заведите привычку закрывать ноутбук, пока помогаете.

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

Можно использовать материалы из внешних источников, таких как StackOverflow, но только с указанием авторства и только в том случае, если это позволяет задание. В частности, если в задании сказано «внедрить X», то вы должны создать свой собственный X, а не повторно использовать его из внешнего источника.

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

Пример 1

  • Алисса и Бен сидят рядом со своими ноутбуками и работают над набором задач. Они в общих чертах говорят о разных подходах к решению поставленной задачи. Они рисуют схемы на доске. Когда Алисса обнаруживает полезный класс в библиотеке Java, она рассказывает об этом Бену. Когда Бен находит ответ StackOverflow, который помогает, он отправляет URL-адрес Алиссе. ХОРОШО.
  • Когда они набирают строки кода, они произносят код вслух другому человеку, чтобы убедиться, что оба человека знают правильный код. НЕПРИЛИЧНЫЙ.
  • В сложной части набора задач Алисса и Бен смотрят на экраны друг друга и сравнивают их, чтобы правильно написать свой код. НЕПРИЛИЧНЫЙ.

Пример 2

  • Джерри уже закончил набор задач, но его друг Бен сейчас борется с неприятной ошибкой. Джерри сидит рядом с Беном, смотрит на его код и помогает отлаживать. ХОРОШО.
  • Джерри открывает свой ноутбук, находит свое решение набора задач и обращается к нему, пока помогает Бену исправить код. НЕПРИЛИЧНЫЙ.

Пример 3

  • На этой неделе у Луи было три набора задач и две викторины, он несколько дней отсутствовал в кампусе на соревнованиях по легкой атлетике, а затем заболел. Он уже взял два свободных дня в срок и почти не продвинулся в поставленной задаче. Бену жаль Луи и он хочет помочь, поэтому он садится рядом с Луи и говорит с ним о том, как решить поставленную задачу, пока Луи работает над ней. Бен уже передал свое решение, но он не открывает свой ноутбук, чтобы посмотреть на него, пока помогает Луи. ХОРОШО.
  • Бен открывает свой ноутбук и читает собственный код, помогая Луи. НЕПРИЛИЧНЫЙ.
  • Бен уже провел с Луи пару часов, и Луи все еще нуждается в помощи, но Бену действительно нужно вернуться к своей работе. Он помещает свой код в Dropbox и делится им с Луи, после того как Луи обещает просматривать его только тогда, когда ему действительно нужно. НЕПРИЛИЧНЫЙ.

Пример 4

  • Джон и Эллен работали над своими наборами задач по отдельности. Они обмениваются друг с другом тест-кейсами, чтобы проверить свою работу. НЕПРИЛИЧНЫЙ. Тестовые примеры являются частью материала для набора задач и частью учебного опыта курса. Вы копируете, если используете чужие тесткейсы, пусть и временно.

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

Эта политика применяется ко всем курсовым работам, сдаваемым отдельными лицами: наборы задач, упражнения по чтению, нановикторины и т. д.

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

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

Вы также можете использовать материалы из внешних источников при условии, что: (1) эти материалы доступны всем учащимся в классе; (2) вы правильно указали авторство; и (3) само назначение позволяет это. В частности, если в задании сказано «внедрить X», то вы должны создать свой собственный X, а не повторно использовать чужой. Наконец, ваша группа не может повторно использовать проекты, идеи или код, созданные другой группой, в этом или предыдущих семестрах.

Хотя принято адаптировать примеры кода, найденные в Интернете,

  • Никогда не копируйте код других учащихся. Ваши коллеги не считаются авторизованным источником.

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

Примеры ссылок на источники кода:

Пример 1

При описании класса PluginProxyUtil в исходном коде проекта Apache разработчик ссылается на источник как сообщение на форуме и включает URL, автора и дату:

/**
* Вспомогательный класс, дающий апплетам возможность определять настройки прокси-сервера.
* Это было адаптировано из сообщения Криса Форстера от 20030227 на форуме Sun Java
* здесь:
* http://forum.java.sun.com/thread.jspa?threadID=364342&tstart=120
[…]
*/

(Источник: исходный код проекта Apache http://svn.apache.org получено в июле 2019 г.)

Пример 2

В функции OutputTraceToStream в исходном коде Google Chrome stack_trace_win разработчик ссылается на исходный код как на Microsoft Developer Network и включает URL-адрес:

// Код адаптировано из примера MSDN:
// http://msdn. microsoft.com/en-us/library/ms680578(VS.85).aspx

(Источник: https://github.com/adobe/chromium/blob/master/base /debug/stack_trace_win.cc получено в июле 2019 г.)

Пример кода с лицензией с открытым исходным кодом:

В верхней части исходного файла Google Chrome stack_trace_win обратите внимание на авторские права и ссылку на лицензию с открытым исходным кодом:

// Copyright (c) 2011 Авторы Chromium. Все права защищены.
// Использование этого исходного кода регулируется лицензией в стиле BSD, которая может быть
// находится в файле LICENSE.

Если вы включаете этот код в программу, вы должны следовать условиям, изложенным в файле лицензии с открытым исходным кодом авторов Chromium, который показан ниже. Хотя эта лицензия требует дублирования авторских прав и лицензии только в случае повторного распространения кода, рекомендуется всегда дублировать авторские права в коде и/или хранить лицензию в файле с кодом. Таким образом, если вы захотите позже распространить код, проверка интеллектуальной собственности станет намного проще.

// Copyright (c) 2014 Авторы Chromium. Все права защищены.
//
// Распространение и использование в исходном и бинарном виде, с модификацией
// или без нее, разрешены при условии, что
// выполняются следующие условия:
//
//* Распространение исходного кода должно сохранять выше авторское право
// уведомление, этот список условий и следующий отказ от ответственности.
//* Распространение в двоичной форме должно воспроизводить указанное выше
// уведомление об авторских правах, этот список условий и следующий отказ от ответственности
// в документации и/или других материалах, поставляемых с дистрибутивом
//.
//* Ни название Google Inc., ни имена ее
// участников не могут использоваться для поддержки или продвижения продуктов, созданных на основе
// этого программного обеспечения, без специального предварительного письменного разрешения.
//
// ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ОБЛАДАТЕЛЯМ АВТОРСКИХ ПРАВ И УЧАСТНИКАМ
// «КАК ЕСТЬ» И ЛЮБЫМИ ЯВНЫМИ ИЛИ ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ FOR
// КОНКРЕТНАЯ ЦЕЛЬ ОТКАЗЫВАЕТСЯ.
// ВЛАДЕЛЕЦ ИЛИ УЧАСТНИКИ АВТОРСКОГО ПРАВА НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ,
// ОСОБЫЕ, ПРИМЕРНЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЯ ИСПОЛЬЗОВАНИЯ,
// ДАННЫЕ ИЛИ ПРИБЫЛЬ; ИЛИ ПРЕРЫВАНИЕ БИЗНЕСА) КАКОЙ-ЛИБО ПРИЧИНОЙ И НА ЛЮБОМ ПУТИ
// ТЕОРИЯ ОТВЕТСТВЕННОСТИ, БУДЬ ТО ПО КОНТРАКТУ, СТРОГОй ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛОВЫМ ПРАВАМ
// (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНЫМ ОБРАЗОМ), ВОЗНИКШИХ КАКИМ-ЛИБО ОБРАЗОМ НЕ ИСПОЛЬЗУЕТСЯ
// ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ ПРЕДУПРЕЖДАЕТСЯ О ВОЗМОЖНОСТИ ТАКОГО ПОВРЕЖДЕНИЯ.
//

(Источник: файл лицензии авторов Chromium https://src. chromium.org/viewvc/chrome/trunk/src/LICENSE получен в июле 2019 г.)

Шесть заповедей для написания хорошего кода

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

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

Хотя все это похвальные цели для разработчиков программного обеспечения, тем не менее, я рискну добавить еще одну цель: ремонтопригодность. В частности, «хороший код» — это код, который легко и просто поддерживается организацией (а не только его автором!) и который будет жить дольше, чем просто спринт, в котором он был написан. карьера инженера в больших и малых компаниях, в США и за границей, что, кажется, коррелирует с ремонтопригодным, «хорошим» программным обеспечением.

Никогда не соглашайтесь на код, который просто «работает». Пишите превосходный код.

Твит

Заповедь №1: относитесь к своему коду так, как вы хотите, чтобы код других относился к вам

Я далеко не первый, кто пишет, что основной аудиторией вашего кода является не компилятор/компьютер, а кто-то следующий должен читать, понимать, поддерживать и улучшать код (что не обязательно будет для вас через шесть месяцев). Любой достойный инженер может создать код, который «работает»; Что отличает превосходного инженера, так это то, что он может эффективно писать поддерживаемый код, который поддерживает бизнес в долгосрочной перспективе, и обладает навыками простого, понятного и удобного в сопровождении решения проблем.

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

Примером языка, который многие считают «чистым» и удобочитаемым, является Python. Сам язык обеспечивает некоторый уровень дисциплины пробелов, а встроенные API-интерфейсы многочисленны и довольно последовательны. Тем не менее, можно создавать невыразимых монстров. Например, можно определить класс и определить/переопределить/отменить определение любого и каждого метода в этом классе во время выполнения (часто это называется исправлением обезьяны). Этот метод естественным образом приводит в лучшем случае к несогласованному API, а в худшем — к невозможному отлаживать монстра. Можно наивно подумать: «Конечно, но никто так не делает!» К сожалению, они это делают, и просмотр pypi не займет много времени, прежде чем вы столкнетесь с существенными (и популярными!) библиотеками, которые (ab) широко используют обезьяньи исправления в качестве ядра своих API. Недавно я использовал сетевую библиотеку, весь API которой меняется в зависимости от сетевого состояния объекта. Представьте, например, что вы звоните client. connect() и иногда получая ошибку MethodDoesNotExist вместо HostNotFound или NetworkUnreachable .

Заповедь № 2: Хороший код легко читается и понимается частично и полностью

Хороший код легко читается и понимается частично и полностью другими (а также автором в будущем, пытаясь избежать синдрома «Я действительно это написал?» ).

Под «частично» я подразумеваю, что если я открою какой-нибудь модуль или функцию в коде, я смогу понять, что они делают, без необходимости читать весь остальной код. Он должен быть максимально интуитивным и самодокументируемым.

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

Еще несколько мыслей о «локальной» читабельности:

  • Хорошо инкапсулированный код, как правило, более удобочитаем, разделяя задачи на каждом уровне.

  • Имена имеют значение. Активируйте метод «Быстрое и медленное мышление» в системе 2, с помощью которого мозг формирует мысли и вкладывает в имена переменных и методов реальные, тщательные размышления. Несколько дополнительных секунд могут принести значительные дивиденды. Хорошо названная переменная может сделать код более интуитивным, в то время как неудачно названная переменная может привести к обману и путанице.

  • Ум — враг. При использовании замысловатых приемов, парадигм или операций (например, списков или тернарных операторов) будьте осторожны и используйте их таким образом, чтобы ваш код0133 читабельнее , а не просто короче.

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

  • Разделение ответственности. Данный проект управляет бесчисленным количеством локально важных допущений в различных точках кодовой базы. Предоставьте каждой части кодовой базы как можно меньше таких проблем. Скажем, у вас есть система управления людьми, в которой объект-человек иногда может иметь нулевую фамилию. Для кого-то, кто пишет код на странице, отображающей объекты-человеки, это может быть очень неудобно! И если вы не ведете справочник «неудобных и неочевидных предположений, которые есть в нашей кодовой базе» (я знаю, что нет), ваш программист отображаемой страницы не будет знать, что фамилии могут быть нулевыми, и, вероятно, будет писать код с нулевым указателем. исключение в нем, когда появляется нулевой регистр последнего имени. Вместо этого обрабатывайте эти случаи с помощью хорошо продуманных API и контрактов, которые различные части вашей кодовой базы используют для взаимодействия друг с другом.

Государство — враг. Почему? Потому что это самая сложная часть любого приложения, и с ней нужно работать очень обдуманно и вдумчиво. Общие проблемы включают в себя несогласованность базы данных, частичные обновления пользовательского интерфейса, когда новые данные не отражаются везде, неупорядоченные операции или просто умопомрачительно сложный код с операторами if и ветвлениями повсюду, что делает код трудным для чтения и еще более сложным в обслуживании. Ставя состояние на пьедестал, чтобы к нему относились с большой осторожностью, и будучи чрезвычайно последовательным и преднамеренным в отношении доступа к состоянию и его изменения, вы значительно упрощаете свою кодовую базу. Некоторые языки (например, Haskell) применяют это на программном и синтаксическом уровне. Вы будете удивлены, насколько может улучшиться ясность вашей кодовой базы, если у вас есть библиотеки чистых функций, которые не обращаются к внешнему состоянию, а затем небольшая поверхность кода с состоянием, который ссылается на внешнюю чистую функциональность.

Заповедь № 4: Хороший код не изобретает колесо, он стоит на плечах гигантов

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

Тем не менее, вполне разумным контраргументом является то, что зависимости не приходят «бесплатно» без каких-либо недостатков. Используя стороннюю библиотеку или библиотеку с открытым исходным кодом, которая добавляет некоторые интересные функции, вы берете на себя обязательство и становитесь зависимым от этой библиотеки. Это большое обязательство; если это гигантская библиотека, и вам нужна только небольшая часть функциональности, вы действительно хотите бремя обновления всей библиотеки, если вы обновляете, например, до Python 3.x? Более того, если вы столкнулись с ошибкой или хотите улучшить функциональность, вы либо зависите от автора (или поставщика) в предоставлении исправления или улучшения, либо, если это открытый исходный код, вы оказываетесь в положении изучения ( потенциально существенной) кодовой базе, с которой вы совершенно незнакомы, пытаясь исправить или изменить малоизвестную часть функциональности.

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

Ниже приведены некоторые из наиболее распространенных примеров вещей, которые вам, вероятно, не следует заново изобретать в современную эпоху в вашем проекте (если только это НЕ ваши проекты).

Базы данных

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

  • «Традиционная» схема SQL: Postgres / MySQL / MariaDB / MemSQL / Amazon RDS и т. д.
  • Key Value Stores: Redis / Memcache / Riak
  • NoSQL: MongoDB/Кассандра
  • размещенных БД: AWS RDS / DynamoDB / AppEngine Datastore
  • Тяжелая работа: Amazon MR / Hadoop (Hive/Pig) / Cloudera / Google Big Query
  • Сумасшедшие вещи: Mnesia от Erlang, Core Data от iOS

Уровни абстракции данных

В большинстве случаев вам не следует писать необработанные запросы к любой базе данных, которую вы решили использовать. Скорее всего, существует библиотека, которая находится между БД и кодом вашего приложения, отделяя проблемы управления одновременными сеансами базы данных и детали схемы от вашего основного кода. По крайней мере, у вас никогда не должно быть необработанных запросов или встроенного SQL в середине кода вашего приложения. Вместо этого оберните его функцией и сосредоточьте все функции в файле с каким-нибудь очевидным именем (например, «queries.py»). Строка вроде users = load_users() , например, бесконечно легче читать, чем users = db.query("SELECT username, foo, bar from users LIMIT 10 ORDER BY ID") . Этот тип централизации также значительно упрощает использование единообразного стиля в ваших запросах и ограничивает количество мест, куда можно перейти для изменения запросов при изменении схемы.

Другие общие библиотеки и инструменты, которые следует рассмотреть возможность использования

  • Службы очереди или Pub/Sub. Выберите поставщика AMQP, ZeroMQ, RabbitMQ, Amazon SQS
  • Хранение. Amazon S3, облачное хранилище Google
  • Мониторинг: Graphite/Hosted Graphite, AWS Cloud Watch, New Relic
  • Сбор/обобщение журналов. Логгли, Спланк

Автоматическое масштабирование

  • Автоматическое масштабирование. Heroku, AWS Beanstalk, AppEngine, AWS Opsworks, Digital Ocean

Заповедь №5: Не переходи ручьи!

Есть много хороших моделей для программирования дизайна, pub/sub, актеров, MVC и т. д. Выберите то, что вам больше нравится, и придерживайтесь его. Различные виды логики, работающие с разными видами данных, должны быть физически изолированы в кодовой базе (опять же, это разделение концепций и снижение когнитивной нагрузки на будущего читателя). Например, код, который обновляет ваш пользовательский интерфейс, должен физически отличаться от кода, который вычисляет, что входит в пользовательский интерфейс.

Заповедь № 6: По возможности дайте компьютеру сделать всю работу

Если компилятор может отлавливать логические ошибки в вашем коде и предотвращать плохое поведение, ошибки или прямые сбои, мы обязательно должны воспользоваться этим. Конечно, для некоторых языков есть компиляторы, которые делают это проще, чем для других. Haskell, например, имеет знаменитый строгий компилятор, из-за которого программисты тратят большую часть своих усилий только на то, чтобы компилировать код. Однако после компиляции «он просто работает». Для тех из вас, кто никогда не писал на строго типизированном функциональном языке, это может показаться нелепым или невозможным, но не верьте мне на слово. Серьезно, нажмите на некоторые из этих ссылок, абсолютно возможно жить в мире без ошибок времени выполнения. И это действительно так волшебно.

По общему признанию, не каждый язык имеет компилятор или синтаксис, который поддается значительной (или в некоторых случаях любой!) проверке во время компиляции. Для тех, кто этого не делает, уделите несколько минут изучению того, какие необязательные проверки строгости вы можете включить в свой проект, и оцените, имеют ли они смысл для вас. Краткий, неполный список некоторых распространенных, которые я использовал в последнее время для языков с мягкой средой выполнения, включает:

  • Python: pylint, pyflakes, предупреждения, предупреждения в emacs
  • Рубин: предупреждения
  • JavaScript: jslint

Заключение

Это ни в коем случае не исчерпывающий и не идеальный список заповедей для создания «хорошего» (т. е. легко поддерживаемого) кода. Тем не менее, если бы каждая кодовая база, которую мне когда-либо приходилось собирать в будущем, соответствовала хотя бы половине концепций из этого списка, у меня было бы гораздо меньше седых волос, и, возможно, я даже смог бы добавить к концу своей жизни дополнительные пять лет. И я, безусловно, найду работу более приятной и менее напряженной. https://en.wikipedia.org/wiki/CAP_theorem

Создание примера кода | Техническое письмо

Расчетное время: 10 минут

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

Хорошие образцы правильные и краткий код , который ваши читатели могут быстро понимают и легко повторно используют с минимальными побочными эффектами .

Правильно

Пример кода должен соответствовать следующим критериям:

  • Сборка без ошибок.
  • Выполнить задачу, на выполнение которой он претендует.
  • Будьте максимально готовы к производству. Например, код не должен содержать какие-либо уязвимости безопасности.
  • Соблюдайте соглашения для конкретных языков.

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

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

Многие команды повторно используют свои модульные тесты в качестве примеров программ, что иногда плохая идея. Основная цель модульного теста — тестирование; единственная цель а Образец программы для обучения.

Фрагмент кода — это фрагмент примера программы, возможно, только один или несколько линии длинные. Документация с большим количеством фрагментов часто со временем ухудшается, потому что команды, как правило, не тестируют фрагменты так строго, как полные примеры программ.

Запуск примера кода

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

  • Установить определенную библиотеку.
  • Скорректируйте значения, присвоенные определенным переменным среды.
  • Настройте что-нибудь в интегрированной среде разработки (IDE).

Пользователи не всегда правильно выполняют предыдущие действия. В некоторых ситуациях пользователи предпочитают запускать или (экспериментировать) пример кода напрямую в документации. («Нажмите здесь, чтобы запустить этот код».)

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

Краткий

Пример кода должен быть коротким и включать только основные компоненты. Когда начинающий программист на C хочет научиться вызывать функцию malloc , дайте этому программисту краткий фрагмент, а не все исходное дерево Linux. Нерелевантный код может отвлекать и сбивать с толку вашу аудиторию. Тем не менее, никогда используйте плохие методы, чтобы сократить свой код; всегда предпочитаю правильность лаконичность.

Понятный

Следуйте этим рекомендациям, чтобы создать понятный пример кода:

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

Упражнение

Какая из следующих строк кода будет более полезной в пример программы? Предположим, что целевая аудитория состоит из инженеры-программисты новички в go.so API.

  1. MyLevel = go.so.Level(5, 28, 48)
  2. MyLevel = go.so.Level(rank=5, 28, 48)
  3. MyLevel = go.so.Level (ранг = 5, размерность = 28, непрозрачность = 48)
«> Нажмите на значок, чтобы увидеть ответ.

Ответ 3 здесь лучший выбор. Хотя заманчиво сохранить образец код как можно короче, отсутствие имен параметров усложняет работу для новичков учиться.


Примите во внимание следующие рекомендации по комментариям в примере кода:

  • Делайте комментарии короткими, но всегда предпочитайте ясность краткости.
  • Избегайте писать комментарии о очевидном коде , но помните, что очевидно для вас (эксперта), может быть неочевидным для новичков.
  • Сосредоточьте свою энергию комментирования на чем-то неинтуитивном в коде.
  • Когда ваши читатели хорошо разбираются в технологии, не объясняйте что код делает, объясните почему код делает это.

Следует ли размещать описания кода внутри комментариев к коду или в текст (абзацы или списки) вне примера кода? Обратите внимание, что читатели кто копирует и вставляет фрагмент, собирает не только код, но и любые встроенные Комментарии. Итак, поместите любые описания, которые принадлежат вставленному коду, в код Комментарии. Напротив, когда вы должны объяснить длинную или сложную концепцию, обычно вы должны поместить текст перед образцом программы.

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

Упражнение

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

/* Создать поток из текстового файла по пути /tmp/myfile. */
mystream = br.openstream(pathname="/tmp/myfile", mode="z")
 
Нажмите на значок, чтобы увидеть ответ.

Комментарии содержат следующие недостатки:

  • Комментарий развивает довольно очевидную часть кода.
  • Фрагмент не объясняет неочевидную часть кода. А именно, что такое параметр режима и что означает значение z иметь в виду?

Многоразовый

Чтобы ваш читатель мог легко повторно использовать код примера, предоставьте следующее:

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

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

Пример и антипример

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

# Правильное назначение строки.
s="Дождь в Мэне."
 
# Недопустимое присвоение строки из-за пробелов с обеих сторон
# знак равенства.
s = «Дождь в Мэне».
 

Последовательный

Хороший образец кода демонстрирует диапазон сложности .

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

Упражнение

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

  1. Следующий набор функций:
    1. Функция, не принимающая параметров и ничего не возвращающая.
    2. Функция, которая принимает один параметр, но ничего не возвращает.
    3. Функция, которая принимает один параметр и возвращает одно значение.
    4. Функция, которая принимает три параметра и возвращает одно значение.
  2. Следующий набор функций:
    1. Функция, которая принимает три параметра и возвращает одно значение.
  3. Следующий набор функций:
    1. Функция, которая принимает один параметр и возвращает одно значение.
    2. Функция, которая принимает три параметра и возвращает одно значение.
Нажмите на значок, чтобы увидеть ответ.

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


Что дальше?

Поздравляем: вы выполнили подготовительную работу по техническому письму 2.

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

Краткий обзор тем, затронутых в Техническом письме 2 доступен на странице «Сводка».

А.И. Теперь может писать свой собственный компьютерный код. Это хорошие новости для людей.

Технология|А.И. Теперь может писать свой собственный компьютерный код. Это хорошие новости для людей.

https://www.nytimes.com/2021/09/09/technology/codex-artificial-intelligence-coding. html

Как только Том Смит получил в свои руки Кодекс — новую технологию искусственного интеллекта, которая пишет свои собственных компьютерных программ — он дал ему собеседование при приеме на работу.

Он спросил, может ли он решить «проблемы кодирования», с которыми программисты часто сталкиваются при прохождении собеседований на высокооплачиваемую работу в таких компаниях Силиконовой долины, как Google и Facebook. Может ли он написать программу, которая заменяет все пробелы в предложении тире? Еще лучше, может ли он написать код, который идентифицирует недопустимые почтовые индексы?

И то, и другое он сделал мгновенно, прежде чем выполнить несколько других задач. «Многим людям, в том числе и мне, было бы трудно решить эти проблемы, а ответ он напечатал бы за две секунды», — сказал г-н Смит, опытный программист, курирующий работу ИИ. стартап под названием Gado Images. «Жутковато было смотреть».

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

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

«Это инструмент, который может значительно облегчить жизнь программиста, — сказал г-н Смит.

Изображение

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

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

Около четырех лет назад исследователи из таких лабораторий, как OpenAI, начали разрабатывать нейронные сети, которые анализировали огромное количество прозы, включая тысячи цифровых книг, статей из Википедии и всех видов другого текста, размещенного в Интернете.

Выявляя шаблоны во всем этом тексте, сети научились предсказывать следующее слово в последовательности. Когда кто-то вводил несколько слов в эти «универсальные языковые модели», он мог завершить мысль целыми абзацами. Таким образом, одна система — творение OpenAI под названием GPT-3 — могла писать свои собственные сообщения в Твиттере, речи, стихи и новостные статьи.

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

Видео

Если вы попросите Codex «сделать метель на черном фоне», он сделает именно это, сгенерировав и запустив код.

В результате система понимает и прозу, и код — до определенного момента. Вы можете запросить на простом английском языке снег, падающий на черный фон, и он даст вам код, создающий виртуальную метель. Если вы попросите синий прыгающий мяч, он даст вам и его.

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

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

Иногда программы, созданные Кодексом, не запускаются. Или они содержат недостатки безопасности. Или они и близко не подходят к тому, что вы от них хотите. По оценкам OpenAI, Codex производит правильный код в 37% случаев.

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

Другими словами, Кодекс был по-настоящему полезен только опытному программисту.

Но это может помочь программистам выполнять свою повседневную работу намного быстрее. Это могло помочь им найти основные строительные блоки, в которых они нуждались, или указать им на новые идеи. Используя эту технологию, GitHub, популярный онлайн-сервис для программистов, теперь предлагает Copilot, инструмент, который предлагает следующую строку кода, так же, как инструменты «автозаполнения» предлагают следующее слово, когда вы печатаете тексты или электронные письма.

«Это способ написания кода без необходимости писать столько кода», — сказал Джереми Ховард, который основал лабораторию искусственного интеллекта Fast.ai и помог создать языковую технологию, на которой основана работа OpenAI. «Это не всегда правильно, но достаточно близко».

Видео

В знак уважения к популярному интернет-мему Codex создает веб-сайт для «кота-адвоката», предоставляя биографию, номер телефона и небольшой аватар.

Г-н Ховард и другие считают, что Codex может также помочь новичкам научиться программировать. Он особенно хорош для создания простых программ из кратких описаний на английском языке. И это работает и в другом направлении, объясняя сложный код простым английским языком. Некоторые, в том числе Джоэл Хеллермарк, предприниматель из Швеции, уже пытаются превратить систему в инструмент обучения.

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

Грег Брокман из OpenAI сказал, что искусственный интеллект берет на себя тяжелую работу с рабочих мест, а не заменяет их. Фото… Стив Дженнингс/Getty Images может автоматически сортировать фотоархивы газет и библиотек, восстанавливая забытые изображения, автоматически добавляя подписи и теги и делясь фотографиями с другими изданиями и предприятиями. Но технология могла справиться только с частью работы.

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

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

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

«А.И. происходит не так, как все ожидали», — сказал Грег Брокман, главный технический директор OpenAI. «Казалось, что он будет выполнять эту работу и эту работу, и все пытались выяснить, какая из них пойдет первой. Вместо этого он заменяет отсутствие рабочих мест. Но это снимает тяжелую работу со всех сразу».

Введение в программирование: как писать и выполнять код

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

Содержание

  • Как писать код в среде Python
  • Что такое текстовые редакторы и как их использовать
  • Как написать свою первую программу
  • Как запустить свой код
  • Как писать код с помощью командной строки Python
  • Как написать и запустить сценарий
  • Какие другие среды программирования вы можете использовать?

 

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

 

  • Введение в Python: как подготовить компьютер к запуску Python

 

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

 

Как писать код в средах Python

Когда дело доходит до программирования на Python, у нас есть следующие типы «сред» для написания кода:

 

  • Текстовые редакторы, такие как Sublime, Atom и Visual Studio Code
  • Командная строка Python
  • Так называемые «блокноты» (например, Jupyter, Google Colab)

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

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

 

Что такое текстовые редакторы и как их использовать

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

 

  • Введение в программирование: комментарии к коду Python

Мы не будем вдаваться в подробности об этих функциях, поскольку они могут немного отличаться от одной к другой, но, как минимум, вы можете ожидать следующее:

 

  • Автозаполнение
  • Подсветка синтаксиса
  • Поиск по ключевому слову
  • Разведка проекта

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

Что касается редакторов, я бы рекомендовал Sublime, Atom и Visual Studio Code. Я использую в основном Emacs, но я бы не рекомендовал его новичкам, так как его кривая обучения довольно крутая. Как правило, все хорошие редакторы кода можно настроить с помощью подключаемых модулей в соответствии с вашими рабочими требованиями и стилем программирования.

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

Хотя я использую Emacs для собственного программирования, в этой статье я буду использовать Atom в качестве редактора, так как его легче понять. Пожалуйста, не стесняйтесь следовать в своем собственном редакторе.

 

  • Примечание. Очень важно всегда помнить о программах Python: файлы, в которых вы пишете свой код, должны сохраняться с расширением .py. Еще одна хорошая практика при именовании файлов, содержащих компьютерный код, — избегать использования пробелов. Это просто для того, чтобы их было легко набирать в командной строке. Возможно, сейчас это не имеет большого смысла, но поверьте мне — лучше избегать использования пробелов при именовании файла с компьютерным кодом. Если вам нужно разделить слова в имени, лучше всего использовать символы подчеркивания. Так, например, хорошим именем файла будет hello_world.py.

 

Как написать свою первую программу

Наконец, чтобы показать вам, как писать и запускать программу, нам нужно выбрать программу для написания.

Хотите верьте, хотите нет, но программа, которую часто используют для ознакомления новичков с языком программирования, — это программа, которая просто выводит слова «hello world». Согласно Википедии, традиция использования этой фразы восходит к влиятельной книге, опубликованной в 1970-х годах под названием 9019.8. Язык программирования Си, Брайан Керниган.

Мы соблюдаем эту традицию и напишем код Python для программы, которая будет печатать фразу «привет, мир».

Теперь в Python, как вы можете видеть здесь, мы достигаем этой задачи, написав:

 print("hello world") 

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

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

Источник изображения: Atom Editor, https://atom.io/

Теперь давайте щелкнем меню «Файл» и выберем в нем «Новый файл». Вы должны увидеть новое открытое окно, и именно здесь вы можете написать свой код.

Введите вашу программу:

 print("hello world") 

Источник изображения: Atom Editor, https://atom.io/

Когда вы закончите, вы можете сохранить файл, выбрав «Файл» > «Сохранить». Я сохраню это в папке Мои проекты/i2p.

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

Я сохраню этот файл как hello_world.py. Случилось интересное — теперь у нас есть цвета!

Источник изображения: Atom Editor, https://atom. io/

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

 

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

 

Как запустить свой код

Отлично, вы написали свою первую программу и сохранили ее на нашем компьютере, теперь пришло время ее запустить. Кстати, эта программа «Hello World» — ваша первая 9-ка.0133 скрипт . Вы часто будете слышать, что определенные программы называются сценариями. Не позволяйте этому сбить вас с толку. Скрипт — это просто программа . Сценарий или программа просто указывает компьютеру, что делать. Так почему же у нас есть два имени для этого, программа и сценарий? Некоторые из них обусловлены историческими причинами, но обычно мы используем слово «сценарий» для более простых программ и «программа» для более сложных программ.

Когда вы запускаете свою программу, она читается и выполняется Python Interpreter — это часть программного обеспечения на вашем компьютере, созданная для понимания кода Python. Это программное обеспечение называется интерпретатором, потому что оно в основном интерпретирует (или переводит) код для компьютера. Ваш компьютер изначально не понимает язык Python. Он понимает только гораздо более старый и сложный язык, на котором людям очень сложно писать. Вот почему нам нужен переводчик.

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

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

 

  • Введение в программирование: использование командной строки. Часть 1 
  • Введение в программирование: как использовать командную строку — часть 2

 

Источник изображения: Atom Editor, https://atom. io/

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

Самое время попрактиковаться в навигации по командной строке. Мы можем использовать cd для перехода в каталог. На своем компьютере я сохранил свою программу в Projects/i2p, поэтому мы можем просто ввести: cd Projects/i2p

Теперь запустите команду ls, и вы увидите сценарий hello_world.py, который вы сохранили ранее.

Источник изображения: Atom Editor, https://atom.io/

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

Для этого просто введите python hello_world.py и нажмите Enter.

Источник изображения: Atom Editor, https://atom.io/

Вы видите, что интерпретатор Python прочитал код в вашем файле, выполнил его и вывел фразу «hello world», как она есть. было поручено сделать. В терминале python — это просто команда, как cd или ls. Команда python — это команда, которую вы используете для запуска интерпретатора Python.

Помните, интерпретатор — это просто часть программного обеспечения, которое находится на вашем компьютере, читает файлы, содержащие код Python, и выполняет код внутри них. В этом случае за командой python следует имя файла, содержащего код, который вы хотите запустить, а именно hello_world.py. Если раньше вы давали файлу программы другое имя, то вам следует использовать его вместо hello_world.py.

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

 

Как писать код с помощью командной строки Python

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

Вернемся к терминалу и немного поиграем с командой python. Как вы видели ранее, вы знаете, что если после него указать имя файла, содержащего код Python, он просто прочитает файл и выполнит код внутри него.

Но что, если вы вообще не вводите имя файла, а просто набираете python и нажимаете Enter? Давайте попробуем и посмотрим, что получится:

Источник изображения: Atom Editor, https://atom.io/

Это прямо здесь режим командной строки интерпретатора Python. Когда он запускается, вы можете видеть, что он выводит кучу полезной информации, например версию Python. Ранее я упоминал, что интерпретатор Python — это программа, которая может читать и запускать программы Python. Это можно сделать двумя способами: либо прочитав и запустив файл, как вы видели выше, либо прочитав и запустив команды, которые вы вводите непосредственно в этой командной строке Python.

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

 

  • Примечание. Вначале вы можете спутать командную строку Python с обычной командной строкой, но вот хитрость: если вы видите знак с тремя стрелками (>>>) в начале каждой строки, вы вы находитесь в командной строке Python, и вы можете набирать и запускать код Python. Если вы его не видите, значит, вы находитесь в обычной командной строке и не можете вводить и запускать код Python, но можете вводить и запускать такие команды, как cd и ls .

Итак, возможно, вам интересно, если мы находимся в командной строке Python, можете ли вы запустить код, который вы написали в своем файле сценария? Конечно вы можете. Давай попробуем.

Я наберу print(‘hello world’) и нажму Enter, и как только я нажму Enter, я увижу, что интерпретатор Python прочитал введенную мной команду и выполнил ее. Это довольно круто, правда?

Источник изображения: Atom Editor, https://atom.io/

Почему существует два способа запуска кода с помощью интерпретатора Python?

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

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

 

Как написать и запустить сценарий

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

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

Как новичок, вы, вероятно, задаетесь вопросом, как объединить преимущества файлового метода с преимуществами терминального метода Python. Это возможно? Да, это так!

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

 

  • Шпаргалка по Python
  • Памятка по скобкам

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

Источник изображения: Atom Editor, https://atom.io/

 

Какие другие среды программирования вы можете использовать?

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

 

  • Как писать и выполнять код в Jupyter Notebooks

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