Читать книгу «Основы программирования с Java» онлайн полностью📖 — Тимура Машнина — MyBook.
image

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

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

Перед этим мы говорили о прикладном программном обеспечении и системном программном обеспечении.

Это на самом деле программы, которые были написаны на определенных языках программирования.

Например, операционная система UNIX, которая является системным программным обеспечением, написана в основном на языке С.

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

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

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

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

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

Вот некоторые примеры из языков программирования высокого уровня:


Fortran рассматривается как один из первых языков программирования высокого уровня. Он был разработан в 1950-х годах.

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

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

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

Вы до сих пор можете найти, что многие системы банков и финансовых учреждений написаны на Cobol.

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

VBA Microsoft или Visual Basic for Applications является реализацией Visual Basic вместе со своей интегрированной средой разработки.

«С» – это язык программирования общего назначения, разработанный в AT&T Bell Labs в начале 1970-х.

Многие черты C были приняты многими более поздними языками, включая C++, который является объектно-ориентированной версией С.

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

Он поддерживает несколько парадигм программирования, в том числе императивное, объектно-ориентированное и функциональное программирование.

Java это язык программирования, который мы собираемся использовать здесь, был разработан в 1990-х годах Sun Microsystems, которая была приобретена Oracle.

Он особенно популярен для веб-приложений и мобильных приложений.

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

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

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

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

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



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

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

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

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

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

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

Этот процесс называют компиляцией.

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

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

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

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

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

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

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

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

В настоящее время, все эти процессы могут осуществляться в интегрированной среде разработки (IDE).

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

Далее приведем общие компоненты IDE.



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

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

Некоторые могут даже помочь вам сделать некоторую первоначальную проверку на синтаксис.

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

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

Отладчик может помочь в выявлении и локализации ошибок.

Он позволяет программисту проследить шаг за шагом выполнение программы.

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

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

Это похоже на грамматику в естественном языке, таком как русский или английский язык.

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

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

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

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

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

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

Для компьютера, он всегда даст каждой программе ровно одну интерпретацию.

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

Как решать задачи?

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

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


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

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

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

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

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

Во многих задачах может быть несколько решений.

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

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

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

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

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

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

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

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

Используем пример поиска способа путешествовать из Москвы в Лондон.

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

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

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

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

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

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

Или опросить кого-нибудь с предыдущим опытом создания подобной поездки.

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

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

И это эквивалентные шаги при попытке запрограммировать компьютер как процесс решения задач.

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

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



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

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

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

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

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

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

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

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

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

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

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