Что включает в себя программирование
Компьютерное программирование
Разработка программного обеспечения |
---|
Процесс разработки ПО |
Шаги процесса |
Анализ | Проектирование | Реализация | Тестирование | Внедрение | Сопровождение |
Модели / методы |
Agile | Cleanroom | Итеративная | Scrum | RUP | MSF | Спиральная | Водопад | XP |
Сопутствующие дисциплины |
Конфигурационное управление | Документирование | Управление проектами |
Программи́рование — процесс и искусство создания компьютерных программ и/или программного обеспечения с помощью языков программирования. Программирование сочетает в себе элементы искусства, фундаментальных наук (прежде всего информатика и математика), инженерии, спорта и ремесла.
В узком смысле слова, программирование рассматривается как Кодирование алгоритмов на заданном языке программирования. Под программированием также может пониматься разработка логической схемы для ПЛИС, а также процесс записи информации в ПЗУ. В более широком смысле программирование — процесс создания программ, то есть разработка программного обеспечения.
Программирование включает в себя:
Содержание
Языки программирования
Большая часть работы программистов связана с написанием исходного кода и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.
Различные языки программирования поддерживают различные стили программирования (т. н. парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать один из языков, наиболее полно подходящий для решения имеющейся задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый процессором — это машинный язык (также называемый машинным кодом). Изначально все программисты прорабатывали программы в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого программисты пишут исходный код на языке программирования высокого уровня, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.
Программные средства
Программные средства, используемые при разработке программ делятся на системные и инструментальные, лицензионные и свободно распространяемые. В системном обеспечении основными являются операционные систем, инструментальные средства и технологии Windows и Linux и прочих операционных систем.
Свободно распространяемые инструментальные средства можно устанавливать и использовать на любых компьютерах с операционными системами семейства Windows и Linux. На олимпиадах по информатике и программированию с успехом используются только свободно распространяемые инструментальные средства в среде Windows и Linux, позволяющие разрабатывать программное обеспечение без ошибок. На олимпиадах по программированию последние годы использовались языки программирования Pascal, C/C++ и Java.
Для ведения документации при разработках программ вполне могут использоваться лицензионные и свободно распространяемые офисные пакеты программ Open Office и Microsoft Office. Файлы документации, создаваемые в лицензионных и свободно распространяемых офисных, информационно совместимы.
Программирование
Программирование сочетает в себе элементы искусства, науки, математики и инженерии.
В узком смысле слова, программирование рассматривается как кодирование — реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. В более широком смысле, программирование — процесс создания программ, то есть разработка программного обеспечения.
Большая часть работы программиста связана с написанием исходного кода на одном из языков программирования.
Различные языки программирования поддерживают различные стили программирования (т. н. парадигмы программирования). Отчасти, искусство программирования состоит в том, чтобы выбрать один из языков, наиболее полно подходящий для решения имеющейся задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).
Единственный язык, напрямую выполняемый процессором — это машинный язык (также называемый машинным кодом). Изначально, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого, программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.
Содержание
Парадигмы программирования [ править ]
Функциональное программирование в соответствующем Вики-учебнике подробно изложено, поэтому поговорим об императивном программировании.
Для императивных языков программирования можно выделить 4 современных парадигмы программирования:
Процедурное программирование [ править ]
Вот пример процедурного кода, выводящего строку:
Вот пример объектно-ориентированного кода, который делает то же самое:
Методологии программирования [ править ]
Сравнение языков программирования [ править ]
В этой статье сравнивается более 50 языков программирования по основным свойствам синтаксиса.
Выражения [ править ]
Выражения в языках программирования в широком смысле могут быть подразделены на 4 типа по синтаксической структуре:
Операторы [ править ]
Как правило в языках программирования имеются следующие соглашения по операторам:
Разделитель операторов используется для демаркации границы между двумя отдельными операторами. Терминатор операторов используется для маркировки конца отдельного оператора. Языки, которые интерпретируют конец строки как конец оператора называются однострочными языками программирования.
«Продолжение строки» — это соглашение для однострочных языков о ситуациях, когда символ окончания строки может быть неправильно интерпретирован как окончание оператора. В таких языках «продолжение строки» позволяет оператору охватывать более одной строки.
Продолжение строки [ править ]
Операция продолжения строки обычно происходит на стадии лексического анализа: как правило символ новой строки не добавляет токен в соотв. список, если было обнаружено продолжение строки.
Библиотеки [ править ]
Импорт библиотеки — это способ добавить внешние (возможно откомпилированные) процедуры, программы или пакеты. Импорты классифицируют по уровню (модуль, пакет, класс, процедура,…) и по синтаксису (директивы, атрибуты,…)
Вышеуказанные операторы также могут быть разделены на 2 группы — являются ли они синтаксическим удобством (просто добавляют элементам краткое название, при этом элементы всё равно доступны по своему полному названию), либо нужны для доступа к коду (без этого оператора доступ к элементам невозможен даже при наличии полного имени).
Блоки [ править ]
Блок представляет собой способ группировки двух или более отдельных операторов, выражений или иных элементов кода, которые должны представлять собой целое..
Комментарии [ править ]
Однострочные комментарии [ править ]
Как правило эти комментарии простираются до символа перевода строки, и используют оговоренную последовательность токенов для индикации начала комментария.
Символ | Языки |
---|---|
C | Фортран от I до Фортрана (C в первом столбце) |
REM | Бейсик, Bat-файлы |
:: | Bat-файлы, COMMAND.COM, Cmd.exe |
NB. | J; от аббревиатуры Nota bene (с лат. — «заметь хорошо»). |
⍝ | APL; используется функциональный глиф (up shoe jot — U+235D) напоминающий лампу («освещающий» комментируемое). |
# | sh и другие оболочки UNIX, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, make, Maple, Elixir, Nim [12] |
% | TeX, Пролог, MATLAB, [13] Erlang, S-Lang, Visual Prolog |
// | ActionScript, Си)|C (C99), Си++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, Sass, Swift, Xojo |
‘ | Monkey, Visual Basic, VBScript Small Basic, Gambas, Xojo |
! | Фортран, Basic Plus, Inform, Pick Basic |
; | Assembly x86, AutoHotkey, AutoIt, Лисп, Common Lisp, Clojure, REBOL, Scheme, |
— | Euphoria, Haskell, SQL, Ада, AppleScript, Eiffel, Lua, VHDL, SGML |
* | Assembler S/360 (* в первом столбце), Кобол от I до Коболa 85, PAW, Фортран от IV до Фортрана 77 (* в первом столбце), Pick Basic |
|| | Curl |
« | Vimscript, ABAP |
\ | Форт |
*> | Кобол 90 |
Многострочные комментарии [ править ]
Как правило многострочные комментарии используют оговоренные последовательности символов для маркировки начала и конца комментария. В этом контексте символы пустого места или перевода строки игнорируются.
Символ | Языки | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
comment */ | ActionScript, AutoHotkey, Си, Си++, C#, D [16] Go, Java, JavaScript, Kotlin, Objective-C, PHP, ПЛ/1, Rexx, Rust (могут быть вложенными), Scala (могут быть вложенными), SAS, SASS, SQL, Swift, Visual Prolog, CSS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#cs +/ | D (могут быть вложенными) [16] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/# #/ | Cobra (могут быть вложенными) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Perl6 (можно использовать любые скобки — (), <>, <>, [], зеркальные пары символов Юникода, а также символы Юникода со свойствами Ps/Pe/Pi/Pf) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
=begin -> | Haskell (могут быть вложенными) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(* *) | ML, Mathematica, Object Pascal (Delphi), Паскаль, Seed7, Applescript, OCaml (могут быть вложенными), Standard ML (могут быть вложенными), Maple, Newspeak, F# | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
< %> | MATLAB [13] (символы должны быть в отдельной строке) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#| |# | Лисп, Scheme, Racket (во всех трёх могут быть вложенными). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
—[[ ]=] | Lua (первая форма может включаться во вторую) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
«Уникальные варианты [ править ]Фортран [ править ]Кобол [ править ]Cobra [ править ]Curl [ править ]Lua [ править ]Perl 5 [ править ]Perl 6 [ править ]PHP [ править ]Python [ править ]Ruby [ править ]S-Lang [ править ]Scheme and Racket [ править ]ABAP [ править ]Эзотерические языки программирования [ править ]Сравнение комментариев [ править ]Существует большое разнообразие способов объявления комментариев в исходном коде. BlockComment курсивом указывает многострочное тело комментария. InlineComment курсивом указывает однострочное тело комментария.
Примеры функций [ править ]abs() — математическая функция из библиотеки stdlib.h для вычисления модуля числа. Принимает и возвращает значения типа int. labs() — тоже вычисляет модуль числа, но принимает и возвращает значения типа long. информатикаЛекции1. ВведениеИНФОРМАЦИЯ И ЕЕ РОЛЬ В СОВРЕМЕННОМ ОБЩЕСТВЕ. ИНФОРМАТИКА- НАУКА, ИЗУЧАЮЩАЯ СПОСОБЫ АВТОМАТИЗИРОВАННОГО СОЗДАНИЯ, ХРАНЕНИЯ, ОБРАБОТКИ, ИСПОЛЬЗОВАНИЯ, ПЕРЕДАЧИ И ЗАЩИТЫ ИНФОРМАЦИИ. ИНФОРМАЦИЯ – ЭТО НАБОР СИМВОЛОВ, ГРАФИЧЕСКИХ ОБРАЗОВ ИЛИ ЗВУКОВЫХ СИГНАЛОВ, НЕСУЩИХ ОПРЕДЕЛЕННУЮ СМЫСЛОВУЮ НАГРУЗКУ. В развитых странах большинство работающих заняты не в сфере производства, а в той или иной степени занимаются обработкой информации. Поэтому философы называют нашу эпоху постиндустриальной. В 1983 году американский сенатор Г.Харт охарактеризовал этот процесс так: «Мы переходим от экономики, основанной на тяжелой промышленности, к экономике, которая все больше ориентируется на информацию, новейшую технику и технологию, средства связи и услуги..» 2. КРАТКАЯ ИСТОРИЯ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ. Вся история развития человеческого общества связана с накоплением и обменом информацией (наскальная живопись, письменность, библиотеки, почта, телефон, радио, счеты и механические арифмометры и др.). Коренной перелом в области технологии обработки информации начался после второй мировой войны. В вычислительных машинах первого поколения основными элементами были электронные лампы. Эти машины занимали громадные залы, весили сотни тонн и расходовали сотни киловатт электроэнергии. Их быстродействие и надежность были низкими, а стоимость достигала 500-700 тысяч долларов. Появление более мощных и дешевых ЭВМ второго поколения стало возможным благодаря изобретению в 1948 году полупроводниковых устройств- транзисторов. Главный недостаток машин первого и второго поколений заключался в том, что они собирались из большого числа компонент, соединяемых между собой. Точки соединения (пайки) являются самыми ненадежными местами в электронной технике, поэтому эти ЭВМ часто выходили из строя. В ЭВМ третьего поколения (с середины 60-х годов ХХ века) стали использоваться интегральные микросхемы (чипы)- устройства, содержащие в себе тысячи транзисторов и других элементов, но изготовляемые как единое целое, без сварных или паяных соединений этих элементов между собой. Это привело не только к резкому увеличению надежности ЭВМ, но и к снижению размеров, энергопотребления и стоимости (до 50 тысяч долларов). История ЭВМ четвертого поколения началась в 1970 году, когда ранее никому не известная американская фирма INTEL создала большую интегральную схему (БИС), содержащую в себе практически всю основную электронику компьютера. Цена одной такой схемы (микропроцессора) составляла всего несколько десятков долларов, что в итоге и привело к снижению цен на ЭВМ до уровня доступных широкому кругу пользователей. СОВРЕМЕННЫЕ КОМПЬТЕРЫ- ЭТО ЭВМ ЧЕТВЕРТОГО ПОКОЛЕНИЯ, В КОТОРЫХ ИСПОЛЬЗУЮТСЯ БОЛЬШИЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ. 6.ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В КОМПЬЮТЕРЕ И ЕЕ ОБЪЕМ. ЛЮБОЕ СООБЩЕНИЕ НА ЛЮБОМ ЯЗЫКЕ СОСТОИТ ИЗ ПОСЛЕДОВАТЕЛЬНОСТИ СИМВОЛОВ- БУКВ, ЦИФР, ЗНАКОВ. Действительно, в каждом языке есть свой алфавит из определенного набора букв (например, в русском- 33 буквы, английском- 26, и т.д.). Из этих букв образуются слова, которые в свою очередь, вместе с цифрами и знаками препинания образуют предложения, в результате чего и создается текстовое сообщение. Не является исключением и язык на котором «говорит» компьютер, только набор букв в этом языке является минимально возможным. В КОМПЬЮТЕРЕ ИСПОЛЬЗУЮТСЯ 2 СИМВОЛА- НОЛЬ И ЕДИНИЦА (0 и 1), АНАЛОГИЧНО ТОМУ, КАК В АЗБУКЕ МОРЗЕ ИСПОЛЬЗУЮТСЯ ТОЧКА И ТИРЕ. Действительно, закодировав привычные человеку символы (буквы, цифры, знаки) в виде нулей и единиц (или точек и тире), можно составить, передать и сохранить любое сообщение. ЭТО СВЯЗАНО С ТЕМ, ЧТО ИНФОРМАЦИЮ, ПРЕДСТАВЛЕННУЮ В ТАКОМ ВИДЕ, ЛЕГКО ТЕХНИЧЕСКИ СМОДЕЛИРОВАТЬ, НАПРИМЕР, В ВИДЕ ЭЛЕКТРИЧЕСКИХ СИГНАЛОВ. Если в какой-то момент времени по проводнику идет ток, то по нему передается единица, если тока нет- ноль. Аналогично, если направление магнитного поля на каком-то участке поверхности магнитного диска одно- на этом участке записан ноль, другое- единица. Если определенный участок поверхности оптического диска отражает лазерный луч- на нем записан ноль, не отражает- единица. ОБЪЕМ ИНФОРМАЦИИ, НЕОБХОДИМЫЙ ДЛЯ ЗАПОМИНАНИЯ ОДНОГО ИЗ ДВУХ СИМВОЛОВ-0 ИЛИ 1, НАЗЫВАЕТСЯ 1 БИТ (англ. binary digit- двоичная единица). 1 бит- минимально возможный объем информации. Он соответствует промежутку времени, в течение которого по проводнику передается или не передается электрический сигнал, участку поверхности магнитного диска, частицы которого намагничены в том или другом направлении, участку поверхности оптического диска, который отражает или не отражает лазерный луч, одному триггеру, находящемуся в одном из двух возможных состояний. Итак, если у нас есть один бит, то с его помощью мы можем закодировать один из двух символов- либо 0, либо 1. 3 бита- 8 вариантов; Продолжая дальше, получим: 4 бита- 16 вариантов, 7 бит- 128 вариантов, 8 бит- 256 вариантов, 9 бит- 512 вариантов, 10 бит- 1024 варианта, В обычной жизни нам достаточно 150-160 стандартных символов (больших и маленьких русских и латинских букв, цифр, знаков препинания, арифметических действий и т.п.). Если каждому из них будет соответствовать свой код из нулей и единиц, то 7 бит для этого будет недостаточно (7 бит позволят закодировать только 128 различных символов), поэтому используют 8 бит. ДЛЯ КОДИРОВАНИЯ ОДНОГО ПРИВЫЧНОГО ЧЕЛОВЕКУ СИМВОЛА В КОМПЬЮТЕРЕ ИСПОЛЬЗУЕТСЯ 8 БИТ, ЧТО ПОЗВОЛЯЕТ ЗАКОДИРОВАТЬ 256 РАЗЛИЧНЫХ СИМВОЛОВ. СТАНДАРТНЫЙ НАБОР ИЗ 256 СИМВОЛОВ НАЗЫВАЕТСЯ ASCII ( произносится «аски», означает «Американский Стандартный Код для Обмена Информацией»- англ. American Standart Code for Information Interchange). ОН ВКЛЮЧАЕТ В СЕБЯ БОЛЬШИЕ И МАЛЕНЬКИЕ РУССКИЕ И ЛАТИНСКИЕ БУКВЫ, ЦИФРЫ, ЗНАКИ ПРЕПИНАНИЯ И АРИФМЕТИЧЕСКИХ ДЕЙСТВИЙ И Т.П. КАЖДОМУ СИМВОЛУ ASCII СООТВЕТСТВУЕТ 8-БИТОВЫЙ ДВОИЧНЫЙ КОД, НАПРИМЕР: ОБЪЕМ ИНФОРМАЦИИ, НЕОБХОДИМЫЙ ДЛЯ ЗАПОМИНАНИЯ ОДНОГО СИМВОЛА ASCII НАЗЫВАЕТСЯ 1 БАЙТ. Очевидно что, поскольку под один стандартный ASCII-символ отводится 8 бит, Остальные единицы объема информации являются производными от байта: 1 КИЛОБАЙТ = 1024 БАЙТА И СООТВЕТСТВУЕТ ПРИМЕРНО ПОЛОВИНЕ СТРАНИЦЫ ТЕКСТА, 1 МЕГАБАЙТ = 1024 КИЛОБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 500 СТРАНИЦАМ ТЕКСТА, 1 ГИГАБАЙТ = 1024 МЕГАБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 2 КОМПЛЕКТАМ ЭНЦИКЛОПЕДИИ, 1 ТЕРАБАЙТ = 1024 ГИГАБАЙТАМ И СООТВЕТСТВУЕТ ПРИМЕРНО 2000 КОМПЛЕКТАМ ЭНЦИКЛОПЕДИИ. СКОРОСТЬ ПЕРЕДАЧИ ИНФОРМАЦИИ ПО ЛИНИЯМ СВЯЗИ ИЗМЕРЯЕТСЯ В БОДАХ. В частности, если говорят, что пропускная способность какого-то устройства составляет 28 Килобод, то это значит, что с его помощью можно передать по линии связи около 28 тысяч нулей и единиц за одну секунду. 7. СЖАТИЕ ИНФОРМАЦИИ НА ДИСКЕ ИНФОРМАЦИЮ НА ДИСКЕ МОЖНО ОБРАБОТАТЬ С ПОМОЩЬЮ СПЕЦИАЛЬНЫХ ПРОГРАММ ТАКИМ ОБРАЗОМ, ЧТОБЫ ОНА ЗАНИМАЛА МЕНЬШИЙ ОБЪЕМ. Сжатие информации используют, если объем носителя информации недостаточен для хранения требуемого объема информации или информацию надо послать по электронной почте Программы, используемые при сжатии отдельных файлов называются архиваторами. Эти программы часто позволяют достичь степени сжатия информации в несколько раз.
|