Что такое компьютерный код
В предыдущей части мы затронули азы программирования, где рассказали о машинном языке, преобразователях, языках программирования и работе с CLI. Двигаемся дальше.
Исходным кодом называется основной файл вроде Microsoft (.doc), но немного другой. Это текстовый файл, написанный с помощью простых редакторов, таких как Windows Блокнот. В предыдущем разделе мы перечислили, что нужно, чтобы интерпретаторы или компиляторы конвертировали исходный код в двоичный. Первый должен быть сохранен в файле, что передается для ввода в переводчик (преобразователь).
В зависимости от выбранного языка, есть назначенные расширения для сохранения файла: Python – .py. Java – .java. PHP – .php, PERL – .pl и т. д.
Когда вы закончите писать код, запустите его через переводчик. Рассмотрим в качестве примера запуск кода на языке Python с использованием команды python.
Почему грамотное программирование важно сегодня?
Несмотря на очевидные недостатки этого подхода – его стоимость и отсутствие возможности изменять написанную программу, грамотное программирование может стать невероятно мощным навыком для разработчиков программного обеспечения, работающих в самых разных контекстах. Как показывает опыт Франушича по написанию постов в блоге компании Twilio, оно может быть полезным, позволяя вам объединить рассказ и код в одном месте.
Франушича особенно недвусмысленно говорит о его ценности: «Изучение грамотного программирования сделает вас более успешным программистом. Это также поможет вам писать более качественный код, за что ваше будущее «я» будет вам очень благодарно.
Рэмси повторил это мнение в более взвешенных выражениях: « Это действительно заставляет вас думать, прежде чем писать код » .
Ценность этой вынужденной саморефлексии невозможно недооценить. Да, грамотное программирование должно помочь вам писать более качественный код, но оно также побуждает вас думать о том, почему вы делаете то, что делаете. Почему так, а не иначе? Почему я сделал это так, а не иначе?
Хотя вы можете и не начать использовать грамотное программирование в повседневной работе, изучение инструмента, который может дать вам новый взгляд на программирование, может быть только положительным моментом.
Статья разделена на 4 части. Обратите внимание, что важные слова или словосочетания, введенные в этой серии, выделены жирным шрифтом. В конце каждого из четырех разделов будет приведена короткая викторина, проверяющая знания и подробно объясняющая некоторые моменты.
Самый простой и точный вариант ответа: «Программирование – это акт инструктирования компьютеров для выполнения задач». Еще его называют разработкой или кодингом.
Итак, что такое компьютерная программа? ПО представляет собой последовательность инструкций, выполняемых ПК. Компьютер же – это любое устройство, способное обрабатывать код. Сюда относятся стационарные ПК, ноутбуки, планшеты, банкоматы, Raspberry Pi, серверы etc.
Анатомия типичного кода
Теперь мы рассмотрим содержимое типичного файла исходного кода. Ниже приведены регулярные компоненты.
Почему грамотное программирование не получило более массового распространения?
Хотя грамотное программирование, похоже, нашло свой путь в мир статистических вычислений, Рэмси рассказал The New Stack, почему этот подход не обязательно должен использоваться повсюду.
Одна из вещей, которые мы узнали, состоит в том, что это очень дорого. И поэтому вы тратите время, стараясь понять, какие ситуации оправдывают затраты. И одна из них – когда люди создают сравнительно небольшие, сложные ядра, которые будут широко использоваться.
Франушич поддержал эту идею.
Как только я написал грамотную программу, я убедился, что очень трудно реорганизовать или вносить серьезные изменения в эту программу. Поэтому, учитывая это, я начну писать грамотную программу только после того, как буду достаточно уверен, что она максимально готова.
Другими словами, сегодня это просто не подходит для многих инженерных контекстов, особенно для тех, которые подчеркивают скорость и масштаб. Значит ли это, что сегодня практически нечему научить тех, кто пишет код за пределами статистического и численного программирования?
Основные типы данных
Исходный код – сосредоточение разных типов даннх: числа (3, 5.7, -100, 3.142) и символы (M, A). В некоторых языках программирования числа разбиваются на подтипы, такие как integers (целые числа).
Целые числа могут быть знаковыми и беззнаковыми, большими и малыми. Последние фактически зависят от объема памяти, зарезервированного для таких чисел. Есть числа с десятичными частями, обычно называемые double и float, в зависимости от языка, который вы изучаете.
Также существуют логические типы данных boolean, которые имеют значение true или false.
Начало работы: ваша первая программа
- Следуйте приведенным здесь инструкциям, чтобы настроить Python в вашей компьютерной системе.
- Установите простой редактор, чтобы ввести исходный код. Для начала можете использовать этот текстовый редактор.
3. Откройте в нем новый файл и введите следующее:
- Не забудьте сохранить файл как main.py.
- Найдите путь к файлу через CLI и введите следующую команду:
Результат должен выглядеть так:
Эволюция нового подхода
Но прежде чем приступить к этому, стоит взглянуть на то время, в котором возникло грамотное программирование. В течение многих лет после того, как Кнут впервые представил этот метод, им заинтересовалось небольшое, но увлеченное сообщество инженеров и компьютерных ученых.
Норман Рэмси, профессор информатики в Университете Тафтса, рассказал изданию The New Stack, как он познакомился с грамотным программированием, когда был техническим руководителем группы инженеров, работавших на американского государственного подрядчика.
Мы подписали контракт с ВВС на поставку программного обеспечения для проверки, и математика, лежащая в основе того, что мы разрабатывали, была довольно сложной.
Сложная математика, лежавшая в основе проекта, привела Рэмси и его команду к грамотному программированию. Это произошло потому, что сама природа грамотного программирования даёт возможность показать свою работу в тексте рядом с исходным кодом. Это позволяет упорядочить свои мысли и ясно изложить свою методику.
Если WEB – первый инструмент Кнута для грамотного программирования – был написан на Паскале, а CWEB, созданный Кнутом вместе с математиком Сильвио Леви, на Си, то проект, который Рэмси и его коллектив выполняли для ВВС, должен был быть написан на языке Ada. Это побудило Рэмси разработать Spidery WEB – инструмент, который позволял инженерам « красиво печатать » на языках, выходящих за рамки тех, которые ранее были в центре внимания сообщества грамотных программистов. В итоге работа Рэмси позволила сделать грамотное программирование более заметным и доступным.
После Spidery WEB Рэмси создал Noweb, возможно, один из самых распространенных инструментов, который позволяет людям заниматься грамотным программированием независимо от конкретного языка программирования.
Его главные достоинства, – утверждается в тексте на сайте проекта, – это простота, расширяемость и независимость от языка – особенно ощутимые по сравнению с другими инструментами грамотного программирования.
Это был интересный обзор того, как развивалась инженерная практика в то время, которое мы можем считать самыми ранними годами современной компьютерной науки: разнообразная смесь личностей с различными мотивами и интересами, работающих вместе, чтобы обнаружить новые способы выполнения задач.
Сегодня часто игнорируется этот аспект технологических инноваций, но мы должны помнить, что именно это сочетание изобретательности и контекстной удачи – правильное место, правильное время – способствует изменениям.
Грамотное статистическое программирование
Возможно, наиболее часто грамотное программирование сегодня можно обнаружить в статистике и науке о данных.
Этот способ, чаще называемый грамотным статистическим программированием, особенно удобен не только из-за сложной математики, которая является неотъемлемой частью статистического программирования, но и из-за потребности в совместном использовании кода и уточнении того, как статистическая программа выдает свои результаты. Это также имеет особый смысл, если учесть, что статистические вычисления – это практика, которая часто встречается в исследовательской среде.
Jupyter Notebooks, как упоминалось выше, является особенно популярным инструментом, который можно рассматривать как реконтекстуализацию грамотного программирования. Хотя вы, возможно, и не догадывались об этом – ни на странице проекта в Википедии, ни на его домашней странице нет никаких намеков на грамотное программирование – признание тайной истории инструмента, который вы можете использовать каждый день, в какой-то мере важно.
Это помогает осознать тайные проблемы и идеи, способствовавшие его созданию, и, может быть, даже способствует возникновению некоторой формы солидарности с другими. В свою очередь, это может способствовать более глубокому самоанализу инженерной практики и подходов.
Франушич направил The New Stack на один из своих любимых репозиториев Jupyter Notebook, созданный Питером Норвигом, сотрудником Стэнфорда и директором по инженерным вопросам в Google. « Если вы не видели эти блокноты, я советую вам познакомиться с ними, чтобы понять, насколько убедительной может быть грамотная программа » .
Они действительно таковыми являются; каждая из них – это своего рода повествование о решении проблем, объединяющее кодера и рассказчика таким образом, чтобы сделать нечто большее, чем просто « показать свою работу » . В Jupyter Notebook Норвиг также может пояснить, почему он делает то, что делает. Это миниатюрные драмы, построенные на триумвирате человека, проблемы и кода.
Часто задаваемый вопрос
Вот вопрос, который обычно задают начинающие: «С какого языка начать?»
Существуют сотни ЯП. Они оцениваются по популярности, комьюнити, долгосрочной поддержке, педагогике и использованию. Они также могут быть оценены по техническим параметрам. Например, являются ли они функциональными, императивными, статическими, сильными или слабо типизированными.
Некоторые языки программирования предназначены исключительно для образовательных целей, а не для использования в бизнесе. Хороший пример – ЯП для детей. Также существуют мощные языки, которые легко настроить и изучить. Python – один из них. Обычно его и рекомендуют начинающим.
Если вы заинтересованы в более подробном изучении вопроса, вот несколько хороших исследований.
Когда вы захотите изучить новый язык, понадобится переводчик языка. Это программа, которая устанавливается и настраивается в компьютерной системе.
Рекомендуем начать осваивать работу с командной строкой (CLI). Подумайте о терминале как об альтернативе графическому интерфейсу (GUI). Работая с компьютером посредством GUI, вы зависите от визуальных представлений каталогов и всего, что делаете. Но при использовании CLI вы взаимодействуете с компьютером напрямую, с помощью терминала и специальных команд.
В Windows встроенный терминал представляет собой командную строку. Для пользователей Mac и Linux по умолчанию установлен терминал Bash. Чтобы использовать его в Windows, установите Git Bash или PowerShell.
Сложные типы данных
Указанные выше типы известны как элементарные, первичные или базовые. Мы можем создавать более сложные типы данных из приведенных базовых.
Массив (Array) – это простейшая форма сложного типа. Строка (String) – это массив символов. Мы не можем обойтись без этих данных и часто используем их при написании кода.
Комбинация символов – это строка. Чтобы использовать аналогию, строка для компьютера означает, что слово принадлежит человеку. Слово «термометр» состоит из 9 символов – мы просто называем это строкой символов. Обработка строк – это обширная тема, которая должна изучаться каждым начинающим программистом.
Сложные типы данных поставляются с большинством языков программирования, которые используются. Есть и другие, такие как системы классов. Это явление также известно как объектно-ориентированное программирование (ООП).
Грамотное программирование на сегодняшний день
Рэмси стал меньше работать над грамотным программированием в 90-х годах. Он прекратил вносить свой вклад в экосистему инструментов и идей. Во многом это было связано с его работой в качестве исследователя; он сконцентрировался на новых проблемах.
Тем не менее, в последнее время его влияние можно заметить в таких различных инструментах, как Jupyter Notebooks и JS-Doc, инструмент разметки для аннотирования кода JavaScript. Язык Haskell также предоставляет способ грамотного программирования, с которым впервые и столкнулся Франушич.
Стоит отметить, защитники программирования могут не согласиться с тем, что эти инструменты выполняют подход грамотного программирования. Они считают, что эти инструментам не хватает контроля над отношениями между кодом и текстом, необходимого для того, чтобы действительно соответствовать оригинальному видению Кнута.
Но невозможно не признать, что целый ряд современных практик извлекают пользу из идей, над которыми трудились Кнут и Рэмси в восьмидесятых и девяностых годах.
У Франушича есть своя личная история, которая может подтвердить его ценность в относительно новой сфере – евангелизме разработчиков и отношениях с ними.
« Мой обычный рабочий процесс, когда я пишу о коде, состоит из следующих шагов:
По его словам, этот способ довольно мучительный, потому что он требует синхронизации двух документов, пока они пишутся. Случается так, что код в статье и код, опубликованный на GitHub, не синхронизируются.
Используя грамотное программирование, он смог решить эту задачу; поскольку код и повествование находятся в одном месте, любые проблемы синхронизации исчезают.
Хотя это немного нестандартный случай, всё же интересно посмотреть, как грамотное программирование обрело новую значимость в контексте мира современного контента для разработчиков и евангелизма разработчиков – то, что было бы совершенно чуждо ориентированным на исследования компьютерным ученым в 80-х годах.
Рэмси говорит, что « грамотное программирование сегодня " скрыто " от студентов на его курсах, однако, он отметил, что много материалов, которые им даются, особенно домашние задания, готовятся, как грамотные программы » . Это потому, что, по его словам, он может гарантировать, что код, который они видят, это код, который на самом деле выполняется.
Параллели между написанием Франушича и обучением Рэмси достойны внимания. Они свидетельствуют о том, что грамотное программирование может предлагать полезный способ не только упорядочить свои идеи, когда дело доходит до написания кода, но и гарантировать уверенность в том, что код будет работать у других людей тоже.
Пробелы и вкладки
Это пробелы, созданные между кодом, который вы пишете. Они ставятся при нажатии пробела или клавиши табуляции на клавиатуре.
Переменные
Переменные – это просто имена областей памяти. Иногда нужно сохранить данные в исходном коде в месте, откуда их можно вызвать, чтобы использовать. Обычно это место памяти, которое резервирует компилятор/интерпретатор. Нам нужно дать имя этим ячейкам памяти, чтобы потом их вспомнить. Рассмотрим фрагмент кода Python ниже:
pet_name – пример переменной, и тип данных, хранящихся в pet_name, является строкой, что делает переменную строковой. Существуют также числовые. Таким образом, переменные классифицируются по типам данных.
Интерпретаторы
Чтобы разработка программного обеспечения прошла успешно, нужно понимать, что языки могут интерпретироваться. В таком случае переводчик обрабатывает исходный код по строкам и в готовой программе (приложении) также запускает каждую строку. Это означает, что интерпретируемый исходный код запускается до тех пор, пока не встретит ошибку. Затем интерпретатор перестает сообщать о таких ошибках.
Python – хороший пример интерпретируемого языка программирования.
Осваивайте языки программирования
Чтобы общаться с машинами, которые говорят на двоичном языке, мы осваиваем такие языки, которые максимально близки к нашему собственному, а именно – языки программирования. Они четко структурированы и должны быть тщательно изучены.
Существуют высокий и низкий уровни. Языки программирования высокого уровня находятся дальше от машинного, чем языки низкого уровня. Это «дальше» обычно называют абстракцией.
Компьютер нуждается в понимании нашего человеческого языка. Для этого понадобится переводчик.
Естественный язык компьютера
Машины пользуются своим собственным языком. Они не понимают русский, английский или испанский. Естественным языком электронного оборудования является двоичный код - 1 и 0. Он представляют собой два состояния: on (1), off (0).
Операторы
Шансы, что вы будете писать исходный код для выполнения какой-нибудь операции, крайне высоки. Любые языки программирования, которые мы используем, включают в себя множество операторов. Среди применяемых выделяют сложение (+), деление (/) умножение (*), вычитание (-) и знак больше (>).
Операторы обычно классифицируются следующим образом:
- Операторы присваивания. Они иногда истолковываются как equals, что неправильно. Равенство используется для сравнения двух значений. А вот оператор присваивания присваивает значение переменной, например pet_name = 'Hippo'
- Арифметические операторы. Состоят из операторов для выполнения арифметических задач, таких как сложение и вычитание. Некоторые языки программирования предоставляют арифметические операторы, когда другие могут их не иметь в своем арсенале. Например, оператор модуля/остатка (%) возвращает остаточное значение в операциях деления.
- Реляционные операторы. Используются для сравнения значений. Они включают в себя больше, меньше, равно, не равно. Их представление также зависит от того, какой язык программирования вы изучаете. Для некоторых ЯП не равно – это <>, для других же – != или !==.
- Логические операторы. Применяются для произведения логических операций. Обычно используемыми логическими операторами являются и, или, нет. Некоторые языки представляют эти операторы в виде специальных символов. Например, && для представления логического и, || – для или, и ! – для нет. Логические значения принято оценивать с помощью булевых значений true или false.
Ключевые слова
Короткие человекочитаемые слова, обычно называемые ключевыми. Они свойственны изучаемому вами языку и они особенны. Их просто нужно знать. Вот небольшой набор ключевых слов, часто используемых в Python.
Неисполняемый исходный код
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.
Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.
Двигаемся дальше
Приготовьтесь, ведь разработка программного обеспечения началась! Подготовимся к написанию первой строки кода. Для этого потребуется следующее:
- Компьютерная система. Необязательно сложный или очень дорогой ПК. Подойдет просто компьютер, который хорошо работает.
- Установка CLI. Вот хороший курс для начала работы.
- Установка текстового редактора (например, Notepad++).
- Понимание хотя бы одного языка программирования. Из статьи вы узнаете основные элементы, которые составляют фундамент большинства ЯП.
Резюмируя вышесказанное, мы изучили основы с введением в переводчики. Слово «исходный код» уже не странно для вас. Более подробно мы рассмотрим его дальше.
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.
Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.
Назначение
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Содержание
Литералы
В каждом исходном коде существуют типы данных, которые используются повсюду и изменяются только в том случае, если их отредактировали. Это литералы, которые не следует путать с переменными или константами. Ни один исходный код не обходится без них. Литералы могут быть строками, числами, десятичными знаками или любыми другими типами данных.
В приведенном выше фрагменте слово «Hippo» является строковым литералом. Это всегда будет «Hippo», пока вы не отредактируете исходный код. Когда вы научитесь кодить, узнаете, как управлять литералами таким образом, чтобы оставлять неизменной большую часть кода.
Организация
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями.
Викторина
Определите элементы, которые мы изучили, в приведенном ниже фрагменте кода Java:
Кажется довольно очевидным, но код пишется не только для компьютеров: он пишется и для людей. Упущение этого факта может обернуться дальнейшими проблемами. Рассказываем, что такое грамотное программирование и как писать качественный код.
Друг моего отца рассказал мне о том, как однажды он наткнулся на действительно ужасный код на работе. Код был просто кошмарным: « плохо написанный, плохо прокомментированный » , – рассказал Джоэл Франушич, инженер по решениям компании Okta, в интервью The New Stack по электронной почте. Он был так взбешен, что решил выяснить, кто же написал этот код, чтобы потом высказать ему все, что он думает.
Но оказалось, что это был его код.
Эта ситуация точно показывает распространенный, но мучительный для программистов опыт: разобраться в коде, независимо от того, чья эта работа – его собственная или постороннего человека. Существует ряд разнообразных способов решения этой проблемы, но есть особенно эффективный, хотя его часто игнорируют — грамотное программирование.
Двигаемся дальше
Вы познакомились с исходным кодом и изучили его содержимое. Скомпилированный или преобразованный код может не запускаться по ряду причин. Эти причины обычно связаны с ошибками. Действие поиска и удаления ошибок называется отладкой и является навыком, который вы должны изучить. Ошибки мы рассмотрим в следующей части.
Убедитесь, что вы правильно настроили Python в своей компьютерной системе, и запустите свою первую программу.
Определение переводчиков
Исходный код относится к коду, написанному на выбранном языке программирования. Переводчики же несут ответственность за преобразование исходного кода в машинный язык (те самые единицы и нули). Мы можем ссылаться на двоичные файлы, такие как код объекта, программу или общепринятый сегодня термин – приложение.
Переводчики могут быть любыми:
- интерпретаторы;
- компиляторы;
- гибриды интерпретаторов и компиляторов;
- ассемблеры.
Пунктуация/Символы
В большинстве написанных программ вы найдете различные знаки препинания в зависимости от выбранного языка программирования. Например, в Java используется больше знаков препинания, чем в Python.
Основные знаки включают в себя запятую (,), точку с запятой (;), двоеточие (:), фигурные скобки (<>), обычные круглые скобки (()), квадратные скобки ([]), кавычки ("" или ''), вертикальную черту (|), слэш (\), точку (.), знак вопроса (?), карет (^) и процент (%).
Неисполняемый исходный код
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
Ассемблеры
Ассемблер также используется для перевода низкоуровневого языка Ассемблер в двоичный, но мы сосредоточимся на языках высокого уровня.
Хороший способ понять различия переводчиков – лично увидеть их работу. Просто загрузите необходимые и установите на компьютер.
Компиляторы
Компиляторы работают по-разному. Они полностью конвертируют исходный код с помощью компиляции в двоичный файл. Затем выполняется двоичный код. Если в исходном варианте были ошибки, они обнаруживаются и помечаются во время компиляции. Это прерывает процесс генерации двоичного кода.
Интерпретаторы работают построчно и выполняют одну линию перед тем, как перейти к следующей. Компилятор же переводит все строки программы в файл (двоичный) и выполняет его целиком.
Помните определение компьютерной программы? Это последовательность инструкций для компьютера. Выполнение программы обычно называется процессом. Такие ПО используют определенные ресурсы в компьютерной системе или любом другом девайсе. К ресурсам относятся память, дисковое пространство и файловая система.
Мы используем слово «run» при выполнении компьютерной программы. Время, затрачиваемое на запуск, называется временем выполнения программы.
Обычно рассматриваются продукты, известные как приложения. Еще мы ассоциируем программы с платформами или средами, в которых они работают или для которых предназначены. Существуют веб-приложения, запускаемые в браузерах, есть мобильные ПО, работающие на смартфонах, а также настольные, такие как Evernote.
Интерпретируемый исходный код выполняется из исходного файла, скомпилированный – преобразовывается в двоичный файл. Затем этот файл выполняется. Скомпилированный код может завершиться неудачно во время выполнения даже после успешной компиляции.
Разработка программного обеспечения и аналогия
Во-первых, примеры программирования есть даже в повседневной жизни. Вселенная довольно предсказуема: день и ночь, времена года, восход и закат. Люди проходят через такие этапы, как встреча нового дня, посещение школы, университета или работа. Мы получаем инструкции от начальников и учителей. Также существуют рецепты, следуя которым можно приготовить блюдо.
Во-вторых, каждый раз, когда мы используем девайсы, встроенный в них код уже работает в фоновом режиме. Перемещение курсора с одной части экрана в другую может показаться простой задачей, но на самом деле за данный процесс отвечает немало строк написанного кода. Акт, столь же простой, как ввод букв в Google Docs, приводит к тому, что код выполняется в фоновом режиме. Это нормальные повседневные процессы, свойственные всем IT-устройствам.
Компьютерные программы также являются кодом. Однако лучше не использовать слово «коды»: это непрофессионально.
Организация
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями.
Содержание
Комментарии
Документация будет важным аспектом деятельности в сфере программирования. Это то, как вы объясняете свой код другим программистам. Подобное делается с помощью комментариев, которые добавляются к различным частям кода. С помощью комментариев вы можете направлять других программистов через написанную программу.
Компилятор игнорирует строки кода, которые являются комментариями.
Вот пример комментария в Python:
Качество
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие или отсутствие комментариев к коду;
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- низкая сложность;
- низкое использование ресурсов — памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.
Идентификаторы
Слова, изобретенные вами. Да, не удивляйтесь! Вы, программист. Эти слова обычно называются идентификаторами. Они могут быть созданы вами или другими программистами. Они упакованы в плагины, более известные как библиотеки.
Примером является библиотека Math. Она позволяет получить доступ к функциям, таким как квадратный корень (Math.sqrt), используемый в JavaScript.
Многие языки программирования поставляются со множеством библиотек. Они обычно называются SDK (комплекты разработки программного обеспечения). Загружаются вместе с компилятором для дальнейшего создания технологий, приложений и проектов. Также существуют фреймворки, созданные, чтобы облегчить разработку проекта и объединить его различные составляющие.
Некоторые идентификаторы в комплекте с выбранным языком не могут использоваться в качестве идентификатора пользователя. Примером является слово string в Java. Такие идентификаторы вместе с ключевыми словами называются Зарезервированными Словами. Они также являются особыми.
Все ключевые слова являются зарезервированными. Также слова, которые вы выбираете, должны иметь смысл для тех, кто впервые их видит.
Гибридные переводчики
Гибридный переводчик представляет собой комбинацию интерпретатора и компилятора. Популярным гибридным языком программирования является Java.
Разработка программного обеспечения на Java удобна. Сначала исходный код компилируется в промежуточный формат, известный как Bytecode. Затем Bytecode интерпретируется и выполняется с помощью виртуальной машины. Это позволяет гибридным переводчикам запускать байт-код в различных операционных системах, делать его кроссплатформенным.
Назначение
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Что такое грамотное программирование?
Грамотное программирование – это подход к программированию, при котором код разъясняется с использованием обычного языка наряду с кодом. Это отличается от смежных практик, таких как документация или комментарии к коду, где код первичен, а комментарии и объяснения вторичны. В грамотном программировании же объяснение кода имеет равные права с самим кодом.
Документация фундаментально отделена от кода. Зачастую документацию пишет человек, который не работает над кодом. Это затрудняет реальное понимание того, что делает код.
Таким образом, грамотное программирование служит средством достижения большей прозрачности и ясности кода.
Разработанное в начале 80-х годов Дональдом Кнутом, ученым-компьютерщиком, ныне почетным профессором Стэнфордского университета, грамотное программирование некоторые инженеры откидывают как пережиток гораздо более ранней эпохи вычислительной техники.
Тем не менее, задачи, стоявшие перед пионерами современной программной инженерии, на самом деле не так уж сильно отличаются от нынешних: все, в конце концов, желают писать чистый, внятный код, который люди смогут понять и взаимодействовать с ним позже.
Тот факт, что грамотное программирование имеет аудиторию в ряде сообществ является явным показателем того, что оно все еще имеет ценность. Единственный вопрос заключается в том, есть ли другие плюсы у этого подхода, которые программисты упускают?
Константы
Константы – это значения, которые не изменяются на протяжении всего жизненного цикла программы. Чаще всего в их именах используются заглавные буквы. Некоторые языки поддерживают создание постоянных значений, а некоторые – нет.
Существуют строго типизированные языки программирования, в которых каждая переменная должна быть определенного типа. Выбрав тип один раз, вы больше не сможете его изменить. Java – хороший пример такого ЯП.
Другие же не предоставляют эти функции. Они являются свободно типизированными или динамическими языками программирования. Пример – Python.
Вот как объявить постоянное значение в JavaScript:
Качество
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие или отсутствие комментариев к коду;
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- низкая сложность;
- низкое использование ресурсов — памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.
Читайте также: