по специальности литература

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

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

Классификации

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

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

  1. скомпилировано
  2. интерпретировано

и их соответствующие программы жевания и слюны называются 🥁

  1. компилятор
  2. переводчик

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

В дополнение к этому я также отмечу языки разметки, которые не обладают всеми функциями языка программирования, но все же являются языками, которые дают инструкции, которые компьютер может выполнить после обработки посредником. (так называемый рендерер). Рассматриваемые инструкции с языками разметки часто представляют собой макеты и расположение элементов на экране. Типичным примером является HTML, который постоянно сопровождается дебатами: Является ли HTML языком программирования?.

И последний тип компьютерного языка, о котором я упомяну, — это язык сериализации данных. Когда программа генерирует данные, которые необходимо использовать вне программы, они преобразуются в формат, понятный месту назначения. Наиболее распространенным форматом является JSON, который во многих случаях заменил ранее распространенный XML.

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

Написание исходного кода

Первым шагом к разработке программного обеспечения является написание программы.

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

Самое важное, что следует отметить при написании программ (по моему мнению), это то, что вы пишете простые текстовые файлы. В Windows и MacOS такие файлы часто имеют расширение .txt. В системах GNU/Linux, где расширения файлов не имеют значения, вывод file в терминале будет выглядеть как <stuff> text.

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

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

И причина длинного извилистого объяснения заключается в том, что вы можете использовать любое приложение, способное редактировать обычный текст, для написания исходного кода. Блокнот, Wordpad, TextEdit, Gedit, Leafpad, Xed… и т. д. Вы даже можете использовать Microsoft Word, Pages, Libre/OpenOffice, если файл сохранен в текстовом формате. И, как мы отметили ранее, формат не имеет ничего общего с расширениями файлов. Формат должен быть установлен на обычный текст при сохранении с помощью любого приложения. Текстовые редакторы делают это немного проще, потому что они почти всегда сохраняют в обычный текст!

Пишем больше исходного кода…

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

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

Visual Studio Code от Microsoft стал очень популярным бесплатным вариантом из того, что я наблюдал среди друзей и интернет-тенденций (эй, как рифмовано!) — это также то, чем я лично пользуюсь. Но есть и множество других вариантов. Выберите то, что лучше всего подходит для вас. Есть и платные. В совершенно случайном порядке, некоторые популярные, о которых я слышал

Некоторые IDE оптимизированы для определенных вариантов использования — например, XCode от Apple и Android Studio от Google.

Управление исходным кодом

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

Это достигается с помощью VCS (система контроля версий). Самым популярным с огромным отрывом является Git. Так что это инструмент, на котором я сосредоточусь в этой статье.

Git можно использовать разными способами — в графическом интерфейсе, интеграции с IDE и т. д. — и они также различаются в зависимости от ОС. Но в этой статье представлена ​​общая командная строка.

Эти команды следует запускать в терминальном приложении вашей ОС. В Windows при установке с git-scm.com также будет установлен файл с именем git-bash, который можно найти в меню Пуск.

Репозиторий

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

Создание репо

Сначала создайте папку, затем инициализируйте репо.

mkdir Project-1
cd Project-1
git init

Команда git init создает скрытую подпапку — .git

git status

Команду git status можно использовать для проверки состояния репозитория, пока мы находимся в папке Project-1.

Но сама папка «Проект-1» не является репозиторием. В той же папке могут быть файлы, не являющиеся репо. Фактически ни один файл (или папка), созданный в папке Project-1, не является частью репозитория, пока он не будет зарегистрирован в git. Как только файл зарегистрирован в репо; git начинает отслеживать его изменения.

Чтобы проверить файл в git, он должен быть зафиксирован в репо. Что поднимает вопрос: что такое коммит?

Совершить

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

Сначала давайте создадим файл — помните, что файлы кода — это текстовые файлы — README.txt

# README.txt
---
This is Project-1!

Если запустить git status сейчас, файл README.txt будет указан как неотслеживаемый файл.

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

git add README.txt

Повторная проверка git status говорит нам о том, что файл является промежуточным. Теперь, когда печатный станок готов, его просто нужно покрасить и прижать к бумаге — зафиксировать — чтобы сохранить текст вместе с сообщением, обозначенным с помощью -m, чтобы подытожить внесенные изменения для облегчения идентификации позже. .

git commit -m "create README file"

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

git config --global user.name "John Doe"
git config --global user.email "[email protected]"

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

Создание истории

Цикл

  1. написание или изменение кода
    внесение изменений в рукопись
  2. внесение изменений с помощью git add
    изменить предыдущий шаблон на печатном станке
  3. и фиксируя их с помощью git commit
    прижать к бумаге

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

Совет:git add . используется для подготовки всех файлов в текущем каталоге вместо вывода имен файлов.

Филиал

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

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

### creating a new branch from the last commit
git branch risky-experiment
### switching to the branch
git checkout risky-experiment
### 2-in-1 create new branch and switch
git checkout -b risky-experiment

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

Объединить

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

git checkout main
git merge risky-experiment --ff-only

ff в --ff-only означает ускоренную перемотку вперед. Существуют разные стратегии слияния, и быстрая перемотка вперед — самая простая. Остальные слишком продвинуты для статьи под названием «Основы».

Совместное использование исходного кода

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

Чтобы преодолеть это, люди часто размещают свои репозитории git, часто для публичной аудитории, но иногда и для более частной аудитории, состоящей из избранных пользователей. Обычно для этого требуется собственный веб-сервер; но не у всех он есть — отсюда и огромное количество таких сервисов, как GitHub, GitLab, Bitbucket и других, которые предоставляют пользователям инфраструктуру для размещения и совместного использования их репозиториев git.

Дистанционный пульт

Репозиторий, созданный и размещенный на таком сервисе (или размещенный самостоятельно), является удаленным репозиторием, а созданный ранее — локальным репозиторием. И git предоставляет инструменты для их синхронизации после добавления URL-адреса удаленного репо (предоставленного службой) к локальному.

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

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

При добавлении URL-адреса в качестве имени для удаленного

git remote add origin <url-to-remote-repo>

Толкай и тяни

После добавления пульта вы можете отправить свою историю (или обновления) на пульт, используя

git push --set-upstream origin main

Где main — ветка, которую вы хотите отправить. Обычно вы нажимаете ветку, а не весь репо. А --set-upstream указывает git отслеживать ветку с именем main в источнике и в локальном репозитории main как записи одной и той же истории. Затем для последующих операций push можно использовать более простую команду.

git push

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

git pull

Но если это не удается, потому что git не знает подходящей удаленной ветки, используйте

git pull origin main --set-upstream

где main — это ветка, которую вы хотите получить и впоследствии отслеживать (--set-upstream)

Для операций извлечения и отправки вам часто придется проходить аутентификацию в службе, из которой вы извлекаете — метод зависит от службы (… я думаю — я использовал только GitHub, лол)

Клон

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

git clone <url-to-remote-repo>

Это создает папку с именем репо, указанным в сервисе, и автоматически добавляет удаленный URL-адрес с именем origin (из-за соглашений), а также отслеживает ветку по умолчанию, которая часто называется основной — или так как он раньше назывался master.

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

Публикация программного обеспечения

Йииш. Это называется основы. Иди в другое место. Это зависит от характера вашего проекта.

ИЗМЕНЕНИЙ

Отмечая существенные вещи, которые я меняю после первоначальной публикации.