Когда-то знакомство с основами программирования начиналось не с изучения таких сложных языков, как С и Assembler, а с изучения языка Basic. Эта аббревиатура расшифровывается как “универсальный символьный код для начинающих”. Basic является интерпретирующим языком.
Раньше интерпретирующие языки программирования были предназначены только для начинающих, так как программы, написанные на этих языках, могли выполняться лишь в редакторах программ. Теперь же Visual Basic (наследник Basic) имеет в своем составе компилятор, а для интерпретирующих языков программирования предусматривается среда выполнения, которая встраивается в различные операционные системы.
Рассмотрим теперь различия в схемах построения программ в так называемом процедурном программировании, с одной стороны, и объектно-ориентированном, с другой. Одним из предшественников Java был С (подробнее о родословном древе языков мы скажем позднее), который “исповедовал” процедурный тип программирования. В процедурном программировании основной единицей программы выступает процедура (или функция) — обособленный именной блок кода, который можно откуда-либо вызывать.
Где Брать Коды GS1 или UPC ? Как Создать Листинг (Карточку Товара) 24.08.2022 Полная Инструкция l
Главная процедура main (основной блок кода) последовательно вызывала другие процедуры программы, которые могли передавать управление друг другу. Написанная таким образом программа была громоздкой и не очень структурированной.
Этих недостатков в определенной мере лишена программа, построенная по принципам объектно-ориентированного программирования (ООП). Такие программы стали писать на языке С++, выступившим наследником языка С. В ООП структурной единицей программы считается не процедура, а так называемый класс. У класса есть свойства (характеристики класса) и методы (действия над конкретным объектом — “экземпляром” — данного класса). Ссылки на объект сокращают текст программы за счет обращения к соответствующим характеристикам и методам класса, к которому принадлежит данный конкретный объект. Приведем пример, который пояснит сказанное.
Предположим, у нас есть программа, которая работает со списком пользователей данного персонального компьютера. Каждый новый пользователь становится конкретным «объектом» класса “пользователи”. При создании нового объекта ему приписываются “свойства”, которые должны быть у каждого экземпляра, или объекта, класса (это могут быть фамилия, имя, отчество, дата рождения и т.п.). С объектом можно что-то сделать (вставить в список, удалить из списка, изменить адрес или фамилию пользователя и т.п.) — это и есть “методы” (блоки кода, которые принадлежат классу, но вызываются данным конкретным объектом и позволяют выполнять как минимум одну операцию с данным объектом).
Введем еще несколько понятий, важных для последующего наложения: событие и обработчик события. Сразу поясним, что это такое, на том же примере. Когда мы пользуемся упомянутой программой, мы можем щелкнуть на соответствующих кнопках (каждая из которых обозначает какую-то важную для нас операцию, например: “добавить”, “удалить”, “изменить” и т.п.).
Вся суть чистого кода
Как только мы щелкнем на какой-то конкретной кнопке, возникает событие. Сразу же вступает в действие обработчик события, т.е. начинает работать код, являющийся реакцией на событие. Обработчик события, скажем щелчка на кнопке «Добавить», может по нашему желанию создать новый объект класса пользователи и применить какой-либо метод данного класса для этого конкретного объекта для изменения его свойств (например, свойству фамилия мы по желанию пользователя присваиваем значение Иванов). В классе есть четкое описание всех возможных методов, которые можно применить к любому экземпляру данного класса. Поэтому обращение к классу экономит время и силы программиста, работающего с конкретными объектами.
Язык С++ — предшественник Java — нельзя было назвать исключительно “объектно-ориентированным языком”. В программе на языке С++ могли не использоваться классы — структурные единицы ООП, а главная процедура main не принадлежала ни к какому классу.
Напротив, Java — строго объектно-ориентированный язык, он четко выдерживает все требования парадигмы ООП.
Рассмотрим еще три важных понятия ООП: наследование, инкапсуляция, полиморфизм. Наследование — это способность классов быть производными от других классов, наследуя при этом какие-то их методы и свойства. Вернемся к нашему старому примеру.
Класс пользователи может быть дочерним классом родительского класса люди и. естественно, наследовать какие-либо его свойства (допустим, пол, год рождения и т.п.) и методы (например, метод-запрос пользователя/человека о его паспортных данных).
Инкапсуляция позволяет ограничить приписывание каких-либо свойств класса другим объектам, которые не являются объектами этого класса. Полиморфизм позволяет объектам принимать несколько различных форм (в нашем примере один объект, созданный как объект типа пользователи, может быть как экземпляром класса пользователи, так и экземпляром класса люди).
А теперь познакомимся с историей создания языка Java.
История языка Java
Давным-давно программисты писали программу непосредственно в двоичном коде. С появлением первого языка программирования — Assembler — работа программистов сильно упростилась. Стали появляться все новые и новые языки программирования.
В 1972 году Деннис Ритчи из AT public static void main (String args[]) < System.out.println («Это Ваша первая программа на Java»); >>
Разберем эту программу построчно.
class My Program
В этой строке мы создаем класс My Program.
Класс состоит из двух типов данных: поля — это данные, которые позволяют описывать свойства класса, и методы — о них мы уже говорили.
В этом классе содержится лишь один метод — main (который является самым главным методом, так как с него начинается выполнение программы), о чем мы и указываем в следующей строке,
public static void main (String args[])
Объявление класса (т.е. описание его содержимого) происходит между двумя фигурными скобками после имени класса, также, как и объявление метода.
Содержимое между фигурными скобками называется телом метода (содержимое класса, соответственно, называется телом класса).
В вышеуказанной строке мы объявляем метод main.
Слово public говорит нам о том, что доступ к этому методу разрешен для любых объектов. Ключевое слово static говорит нам о том, что этот метод будет выполняться без создания объекта — т.е. в самом начале программы. Метод может передавать данные другому методу или переменной — это называется возвращением значения.
Переменная — это именованная ячейка памяти, в которую можно записывать данные определенного типа. Ключевое слово void говорит нам о том, что этот метод ничего не возвращает. После имени метода в круглых скобках указываются аргументы или параметры метода — данные, которые мы можем передать методу при вызове. В данном случае мы можем передать массив строковых объектов (об этом мы расскажем в последующих главах).
В третьей строке программы из листинга 1.1:
System.out.println («Это Ваша первая программа на Java»);
Code listing
L a T e X is widely used in science and programming has become an important aspect in several areas of science, hence the need for a tool that properly displays code. This article explains how to use the standard verbatim environment as well as the package listings, which provide more advanced code-formatting features. This separate article discusses the minted package, which performs syntax-highlighting using Python’s pygmentize library.
The verbatim environment
The default tool to display code in L a T e X is verbatim , which generates an output in monospaced font.
beginverbatim> Text enclosed inside textttverbatim> environment is printed directly and all LaTeX<> commands are ignored. endverbatim>
The code above produces the following output:
Just as in the example at the introduction, all text is printed keeping line breaks and white spaces. There’s a starred version of this command whose output is slightly different.
beginverbatim*> Text enclosed inside textttverbatim> environment is printed directly and all LaTeX<> commands are ignored. endverbatim*>
The code above produces the following output:
In this case spaces are emphasized with a special «visible-space» character: ␣ .
Verbatim-like text can also be used in a paragraph by means of the verb command.
In the directory verb|C:Windowssystem32| you can find a lot of Windows system applications. The verb+ldots+ command produces ldots
The code above produces the following output:
The command verb|C:Windowssystem32| prints the text inside the delimiters | in verbatim format. Any character, except letters and * , can be used as delimiter. For instance verb+ldots+ uses + as delimiter.
Using listings to highlight code
To use the lstlisting environment you have to add the following line to the preamble of your document:
usepackagelistings>
Here’s an example of using the lstlisting environment from the listings package:
beginlstlisting> import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M endlstlisting>
The code above produces the following output:
In this example, the output ignores all L a T e X commands and the text is printed keeping all the line breaks and white spaces typed. Let’s see a second example:
beginlstlisting>[language=Python] import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M endlstlisting>
The code above produces the following output:
The additional parameter inside brackets [language=Python] enables code highlighting for this particular programming language (Python), special words are in boldface font and comments are italicized. See the reference guide for a complete list of supported programming languages.
Importing code from a file
Code is usually stored in a source file, therefore a command that automatically pulls code from a file becomes very handy.
The next code will be directly imported from a file lstinputlisting[language=Octave]BitXorMatrix.m>
The command lstinputlisting[language=Octave] imports the code from the file BitXorMatrix.m, the additional parameter in between brackets enables language highlighting for the Octave programming language. If you need to import only part of the file you can specify two comma-separated parameters inside the brackets. For instance, to import the code from the line 2 to the line 12, the previous command becomes
lstinputlisting[language=Octave, firstline=2, lastline=12]BitXorMatrix.m>
If firstline or lastline is omitted, it’s assumed that the values are the beginning of the file, or the bottom of the file, respectively.
Code styles and colours
Code formatting with the listing package is highly customisable. Let’s see an example
documentclassarticle> usepackagelistings> usepackagexcolor> definecolorcodegreen>rgb>0,0.6,0> definecolorcodegray>rgb>0.5,0.5,0.5> definecolorcodepurple>rgb>0.58,0,0.82> definecolorbackcolour>rgb>0.95,0.95,0.92> lstdefinestylemystyle> backgroundcolor=colorbackcolour>, commentstyle=colorcodegreen>, keywordstyle=colormagenta>, numberstyle=tinycolorcodegray>, stringstyle=colorcodepurple>, basicstyle=ttfamilyfootnotesize, breakatwhitespace=false, breaklines=true, captionpos=b, keepspaces=true, numbers=left, numbersep=5pt, showspaces=false, showstringspaces=false, showtabs=false, tabsize=2 > lstsetstyle=mystyle> begindocument> The next code will be directly imported from a file lstinputlisting[language=Octave]BitXorMatrix.m> enddocument>
The code above produces the following output:
As you see, the code colouring and styling greatly improves readability.
In this example the package xcolor is imported and then the command definecolor<><><> is used to define new colours in rgb format that will later be used. For more information see: using colours in L a T e X
There are essentially two commands that generate the style for this example:
lstdefinestyle <. >Defines a new code listing style called «mystyle». Inside the second pair of braces the options that define this style are passed; see the reference guide for a full description of these and some other parameters. lstset Enables the style «mystyle». This command can be used within your document to switch to a different style if needed.
Captions and the list of Listings
Just like in floats (tables and figures), captions can be added to a listing for a more clear presentation.
beginlstlisting>[language=Python, caption=Python example] import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M endlstlisting>
The code above produces the following output:
Adding the comma-separated parameter caption=Python example inside the brackets, enables the caption. This caption can be later used in the list of Listings.
lstlistoflistings
Sample Overleaf project
Reference guide
Supported languages
supported languages (and its dialects if possible, dialects are specified in brackets and default dialects are italized):
ABAP (R/2 4.3, R/2 5.0, R/3 3.1, R/3 4.6C, R/3 6.10) | ACSL |
Ada (2005, 83, 95) | Algol (60, 68) |
Ant | Assembler (Motorola68k, x86masm) |
Awk (gnu, POSIX) | bash |
Basic (Visual) | C (ANSI, Handel, Objective, Sharp) |
C++ (ANSI, GNU, ISO, Visual) | Caml (light, Objective) |
CIL | Clean |
Cobol (1974, 1985, ibm) | Comal 80 |
command.com (WinXP) | Comsol |
csh | Delphi |
Eiffel | Elan |
erlang | Euphoria |
Fortran (77, 90, 95) | GCL |
Gnuplot | Haskell |
HTML | IDL (empty, CORBA) |
inform | Java (empty, AspectJ) |
JVMIS | ksh |
Lingo | Lisp (empty, Auto) |
Logo | make (empty, gnu) |
Mathematica (1.0, 3.0, 5.2) | Matlab |
Mercury | MetaPost |
Miranda | Mizar |
ML | Modula-2 |
MuPAD | NASTRAN |
Oberon-2 | OCL (decorative, OMG) |
Octave | Oz |
Pascal (Borland6, Standard, XSC) | Perl |
PHP | PL/I |
Plasm | PostScript |
POV | Prolog |
Promela | PSTricks |
Python | R |
Reduce | Rexx |
RSL | Ruby |
S (empty, PLUS) | SAS |
Scilab | sh |
SHELXL | Simula (67, CII, DEC, IBM) |
SPARQL | SQL |
tcl (empty, tk) | TeX (AlLaTeX, common, LaTeX, plain, primitive) |
VBScript | Verilog |
VHDL (empty, AMS) | VRML (97) |
XML | XSLT |
Options to customize code listing styles
- backgroundcolor — colour for the background. External color or xcolor package needed.
- commentstyle — style of comments in source language.
- basicstyle — font size/family/etc. for source (e.g. basicstyle=ttfamilysmall )
- keywordstyle — style of keywords in source language (e.g. keywordstyle=color )
- numberstyle — style used for line-numbers
- numbersep — distance of line-numbers from the code
- stringstyle — style of strings in source language
- showspaces — emphasize spaces in code (true/false)
- showstringspaces — emphasize spaces in strings (true/false)
- showtabs — emphasize tabulators in code (true/false)
- numbers — position of line numbers (left/right/none, i.e. no line numbers)
- prebreak — displaying mark on the end of breaking line (e.g. prebreak=raisebox[0ex][0ex]<ensuremath<hookleftarrow>> )
- captionpos — position of caption (t/b)
- frame — showing frame outside code (none/leftline/topline/bottomline/lines/single/shadowbox)
- breakatwhitespace — sets if automatic breaks should only happen at whitespaces
- breaklines — automatic line-breaking
- keepspaces — keep spaces in the code, useful for indetation
- tabsize — default tabsize
- escapeinside — specify characters to escape from source code to L a T e X (e.g. escapeinside=<*)>)
- rulecolor — Specify the colour of the frame-box
Further reading
For more information see:
- Code Highlighting with minted
- Using colours in LaTeX
- Table of contents
- Management in a large project
- Multi-file LaTeX projects
- Font sizes, families, and styles
- Font typefaces
- listings package documentation
- listings CTAN website
- Documentation Home
- Learn LaTeX in 30 minutes
Overleaf guides
- Creating a document in Overleaf
- Uploading a project
- Copying a project
- Creating a project from a template
- Using the Overleaf project menu
- Including images in Overleaf
- Exporting your work from Overleaf
- Working offline in Overleaf
- Using Track Changes in Overleaf
- Using bibliographies in Overleaf
- Sharing your work with others
- Using the History feature
- Debugging Compilation timeout errors
- How-to guides
- Guide to Overleaf’s premium features
Источник: ru.overleaf.com
Что такое листинг программы
Исхо́дный код (также исхо́дный текст) — текст компьютерной программы на каком-либо языке программирования. В обобщённом смысле — любые входные данные для транслятора.
Исходный код либо транслируется в исполняемый код при помощи компилятора, либо исполняется непосредственно по тексту при помощи интерпретатора.
Назначение
Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.
Другое важное назначение исходного кода — в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии. Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду — т. н. генераторы документации.
Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.
Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability).
Исходный код — важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.
Организация
Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов. Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си, с целью оптимизации, содержат вставки кода на языке ассемблера. Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking).
Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования.
Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.
Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями.
Качество
В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО. О качестве исходного кода можно судить по следующим параметрам:
- читаемость кода (в том числе наличие или отсутствие комментариев к коду;
- лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
- низкая сложность;
- низкое использование ресурсов — памяти, процессора, дискового пространства;
- отсутствие замечаний, выводимых компилятором;
- отсутствие «мусора» — неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.
Читать еще: С какими девушками нельзя встречаться
Неисполняемый исходный код
Копилефтные лицензии для свободного ПО требуют распространения исходного кода. Эти лицензии часто используются также для работ, не являющихся программами — например, документации, изображений, файлов данных для компьютерных игр.
В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:
- для файла, сжатого с потерей данных — версия без потерь;
- для рендеравекторного изображения или трёхмерной модели — соответственно, векторная версия и модель;
- для изображения текста — такой же текст в текстовом формате;
- для музыки — файл во внутреннем формате музыкального редактора;
- и наконец, сам файл, если он удовлетворяет указанным условиям, либо если более удобной версии просто не существовало.
Большая Энциклопедия Нефти и Газа
Листинг – программа
Листинги программ каждого модуля являются логической частью его описания. Однако листинги могут быть слишком объемистыми для объединения их в первозданном виде с каким-либо другим документом. Возможно включение в этот раздел листингов на микрофишах или помещение ссылок на них. Если здесь будут приведены не листинги, а ссылки, необходимо особенно тщательно следить за их точностью, сохраняя ее на протяжении всей фазы использования. [1]
Листинг программы должен иметь удобочитаемый вид. Несколько страниц листинга можно сэкономить за счет уплотнения команд, но при этом теряется существенно больше в смысле удобочитаемости и общего понимания программы. Языки высокого уровня допускают большую свободу в использовании пробелов ддя расширения предложений. Ничего не теряется при неплотном написании факти-ческого кода, поскольку компилятор игнорирует незначащие про белы. Поэтому, убедительно рекомендуется записывать предложения в ясном и логичном формате. [3]
Изучив листинги программы ПЗР , вычислите среднее число вопросов, задаваемых в обеих версиях для определения животного. [4]
Кроме листинга программы , выдаваемого на печать на первом шаге, получается ряд выходных наборов данных, которые затем передаются на второй шаг как входные. [5]
Печать листинга программы будет осуществлена с этой отметки. Директива LIST не будет напечатана, но последующие строки будут выводиться в исходной распечатке. [6]
Из основного листинга программы FileBox видно, что и первая кнопка-селектор, и кнопка Close использует стиль WS GROUP. Данный стиль информирует Windows о том, что этот и следующие за ним элементы управления должны рассматриваться как группа. [7]
По листингу программы легко удостовериться, что это правильная ссылка на MEM при относительной адресации. Расчет смещения выполняется в предположении, что счетчик команд указывает на следующую ячейку. [8]
В листинге программы 3.5 F приведены только оригинальные подпрограммы для интерполяционного метода. [9]
В листинге программы 7.3 F не приведены подпрограммы метода секущих SECANT и интегратора Рунге-Кутты RK21, взятые без изменения из программ 1.6 F и 6.2 F. Названные подпрограммы записаны в отдельном файле, который подсоединяется к программе 7.3 F на этапе компиляции и редактирования. Предлагаемый способ передачи параметров не нарушает общности подпрограммы SECANT и RK21 и позволяет использовать их без изменения. Синтаксис языка Фортран запрещает включать формальные параметры подпрограмм и функций в COMMON-блоки. [10]
Ниже приведены листинги программ , реализующих указанные процедуры. [11]
Ниже представлен листинг программы , используемый в этом параграфе. Программа содержит обучающий алгоритм. Для того чтобы прийти к быстрому решению, в ней используются минимальные и максимальные значения. Вопросы задаются на основе полученных оценок для соответствующих правил с учетом абсолютных разностей максимальных и минимальных значений для оценки степени их важности. Возможные исходы, которые не могут получить достаточно высоких оценок, чтобы заместить лучшие на данный момент предсказания, исключаются из дальнейшего рассмотрения. Запустив программу один раз, постарайтесь изменить ее так, чтобы значения в массиве RULEVALUE вычислялись в виде сумм квадратов отклонений относительно средних, а не абсолютных значений разностей. [12]
Читать еще: Что такое визуальное оформление в играх
В [4-7] приведен листинг программы на Фортране, реализующей стандартный алгоритм БПФ. В [8] представлена эффективная программа, написанная на Фортране, для действительных последовательностей. [13]
В противном случае листинг программы будет иметь несколько необычный вид: все используемые буквы кириллицы в комментариях и сообщениях будут преобразованы в соответствующие буквы латинского алфавита. [14]
Используя отладчик и необходимые листинги программы , можно очень быстро отладить программу, даже если она не располагает встроенными средствами отладки. [15]
Типы программирования. Первые листинги.
Типы программирования и основы объектно-ориентированного программирования
Когда-то знакомство с основами программирования начиналось не с изучения таких сложных языков, как С и Assembler, а с изучения языка Basic. Эта аббревиатура расшифровывается как «универсальный символьный код для начинающих». Basic является интерпретирующим языком.
Раньше интерпретирующие языки программирования были предназначены только для начинающих, так как программы, написанные на этих языках, могли выполняться лишь в редакторах программ. Теперь же Visual Basic (наследник Basic) имеет в своем составе компилятор, а для интерпретирующих языков программирования предусматривается среда выполнения, которая встраивается в различные операционные системы.
Рассмотрим теперь различия в схемах построения программ в так называемом процедурном программировании, с одной стороны, и объектно-ориентированном, с другой. Одним из предшественников Java был С (подробнее о родословном древе языков мы скажем позднее), который «исповедовал» процедурный тип программирования. В процедурном программировании основной единицей программы выступает процедура (или функция) — обособленный именной блок кода, который можно откуда-либо вызывать.
Главная процедура main (основной блок кода) последовательно вызывала другие процедуры программы, которые могли передавать управление друг другу. Написанная таким образом программа была громоздкой и не очень структурированной.
Этих недостатков в определенной мере лишена программа, построенная по принципам объектно-ориентированного программирования (ООП). Такие программы стали писать на языке С++, выступившим наследником языка С. В ООП структурной единицей программы считается не процедура, а так называемый класс. У класса есть свойства (характеристики класса) и методы (действия над конкретным объектом — «экземпляром» — данного класса). Ссылки на объект сокращают текст программы за счет обращения к соответствующим характеристикам и методам класса, к которому принадлежит данный конкретный объект. Приведем пример, который пояснит сказанное.
Предположим, у нас есть программа, которая работает со списком пользователей данного персонального компьютера. Каждый новый пользователь становится конкретным «объектом» класса «пользователи». При создании нового объекта ему приписываются «свойства», которые должны быть у каждого экземпляра, или объекта, класса (это могут быть фамилия, имя, отчество, дата рождения и т.п.). С объектом можно что-то сделать (вставить в список, удалить из списка, изменить адрес или фамилию пользователя и т.п.) — это и есть «методы» (блоки кода, которые принадлежат классу, но вызываются данным конкретным объектом и позволяют выполнять как минимум одну операцию с данным объектом).
Введем еще несколько понятий, важных для последующего наложения: событие и обработчик события. Сразу поясним, что это такое, на том же примере. Когда мы пользуемся упомянутой программой, мы можем щелкнуть на соответствующих кнопках (каждая из которых обозначает какую-то важную для нас операцию, например: «добавить», «удалить», «изменить» и т.п.).
Как только мы щелкнем на какой-то конкретной кнопке, возникает событие. Сразу же вступает в действие обработчик события, т.е. начинает работать код, являющийся реакцией на событие. Обработчик события, скажем щелчка на кнопке «Добавить», может по нашему желанию создать новый объект класса пользователи и применить какой-либо метод данного класса для этого конкретного объекта для изменения его свойств (например, свойству фамилия мы по желанию пользователя присваиваем значение Иванов). В классе есть четкое описание всех возможных методов, которые можно применить к любому экземпляру данного класса. Поэтому обращение к классу экономит время и силы программиста, работающего с конкретными объектами.
Читать еще: Как правильно общаться с девушкой в соцсетях
Язык С++ — предшественник Java — нельзя было назвать исключительно «объектно-ориентированным языком». В программе на языке С++ могли не использоваться классы — структурные единицы ООП, а главная процедура main не принадлежала ни к какому классу.
Напротив, Java — строго объектно-ориентированный язык, он четко выдерживает все требования парадигмы ООП.
Рассмотрим еще три важных понятия ООП: наследование, инкапсуляция, полиморфизм. Наследование — это способность классов быть производными от других классов, наследуя при этом какие-то их методы и свойства. Вернемся к нашему старому примеру.
Класс пользователи может быть дочерним классом родительского класса люди и. естественно, наследовать какие-либо его свойства (допустим, пол, год рождения и т.п.) и методы (например, метод-запрос пользователя/человека о его паспортных данных).
Инкапсуляция позволяет ограничить приписывание каких-либо свойств класса другим объектам, которые не являются объектами этого класса. Полиморфизм позволяет объектам принимать несколько различных форм (в нашем примере один объект, созданный как объект типа пользователи, может быть как экземпляром класса пользователи, так и экземпляром класса люди).
А теперь познакомимся с историей создания языка Java.
История языка Java
Давным-давно программисты писали программу непосредственно в двоичном коде. С появлением первого языка программирования — Assembler — работа программистов сильно упростилась. Стали появляться все новые и новые языки программирования.
В 1972 году Деннис Ритчи из AThttps://plus48.ru/vse-stati/chto-takoe-listing-programmy.html» target=»_blank»]plus48.ru[/mask_link]