Комбинация компьютерных инструкций и данных

Компьютерная программа.

Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010)[1]; 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993)[2].

Первое определение соответствует понятию «исполняемая программа», второе относится к понятию «исходный текст».

Другие определения из нормативных документов:

  • данные, предназначенные для управления конкретными компонентами системы обработки данных в целях реализации определённого алгоритма (ГОСТ 19781—90)[3];
  • представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения (Гражданский кодекс Российской Федерации)[4].

Компьютерные программы как объект авторского права и других прав интеллектуальной собственности относятся к категории нематериальных активов.

Создание программ[править | править код]

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

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

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

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

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

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

Исходные тексты компьютерных программ в большинстве языков программирования состоят из списка инструкций, точно описывающих заложенный алгоритм. Подобный подход в программировании называется императивным. Однако применяются и другие методологии программирования. Например, описание исходных и требуемых характеристик обрабатываемых данных и предоставление выбора подходящего алгоритма решения специализированной программе-интерпретатору — такой подход называется декларативным программированием. К декларативному программированию относятся функциональное и логическое, а также менее распространённые виды программирования.

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

Хранение и выполнение[править | править код]

В 1950-е годы компьютерные программы хранились на перфолентах.

До момента, когда пользователь компьютера явно или неявно выдаст запрос на выполнение компьютерной программы, она обычно хранится в энергонезависимой памяти. При получении такого запроса программа посредством другой компьютерной программы, называющейся операционной системой, загружается в память с произвольным доступом, откуда её непосредственно может выполнять центральный процессор. После этого центральный процессор выполняет программу, инструкция за инструкцией, до её завершения. Выполняющаяся программа называется процессом[6]. Завершение программы происходит либо по достижении её последней инструкции (обычно передающей управление операционной системе), либо по ошибке, программной или аппаратной.

Одновременное выполнение[править | править код]

Многие операционные системы поддерживают механизм многозадачности, который позволяет создать эффект одновременной работы нескольких компьютерных программ на одном компьютере. Операционные системы могут выполнять несколько программ, используя диспетчер операционной системы — программный механизм для переключения процессов, выполняемых процессором. Хотя в каждый момент времени выполняется только одна программа, при достаточно частом переключении пользователь может взаимодействовать со всеми программами во время их работы[7]. Современные многопроцессорные компьютеры или компьютеры с многоядерными процессорами поддерживают одновременное выполнение нескольких программ аппаратно[8].

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

Самомодифицирующиеся программы[править | править код]

Считается, что выполняющаяся компьютерная программа отличается от данных, которые она обрабатывает. Однако это отличие размывается, когда компьютерная программа модифицирует сама себя. Модифицированная компьютерная программа затем выполняется как часть исходной программы. Самомодификация кода возможна в программах, написанных в машинном коде, на ассемблере, Лиспе, Си, Коболе, ПЛ/1 и Прологе.

Использование программ[править | править код]

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

Правовые аспекты[править | править код]

Согласно ст. 1261 ГК РФ, программой для ЭВМ является представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения.

Программы с общедоступными исходными текстами называются открытыми.

Компьютерные программы в большинстве стран являются объектами авторского права (включая Украину и Россию). В некоторых странах компьютерные программы могут защищаться патентами. Патентованию компьютерных программ способствовало Соглашение о торговых аспектах прав интеллектуальной собственности, которое установило минимальные[9] требования к охраняемому ряду объектов прав интеллектуальной собственности и фактически разрешило патентовать программы. Соглашение ТРИПС обязательно для выполнения на территории Украины и России как государств — членов ВТО.

Таким образом, программа может охраняться и как «литературное произведение» и как «изобретение». Для определения режима правовой охраны в первом случае используется «текст кода», в другом — признаки, применяемые для изобретений, предлагаемых для патентования (то есть нужно доказать «инновационность», «оригинальность» и «неочевидность», а также возможность решения существующей технической проблемы и коммерческую пригодность)[10]. При этом существует проблема правового разграничения компьютерных программ от проприетарного цифрового контента и проприетарного программного обеспечения[11].

Исключительное право на программы для ЭВМ и базы данных возникает автоматически с момента её создания и действует в течение всей жизни автора и семидесяти лет, считая с 1 января года, следующего за годом смерти автора (либо смерти последнего из соавторов).

Действующим законодательством Российской Федерации не предусмотрено патентование компьютерных программ как таковых. Данные объекты интеллектуальной собственности охраняются авторским правом, которое возникает автоматически с момента их создания и не требуют обязательной государственной регистрации. Однако программы для ЭВМ и базы данных могут быть зарегистрированы в Роспатенте по желанию правообладателя[12].

Авторское и некоторые другие[какие?] права интеллектуальной собственности позволяют ограничивать доступ к исходным текстам программ.

См. также[править | править код]

  • Программное обеспечение
  • Утилита
  • Встроенное программное обеспечение

Примечания[править | править код]

  1. ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary
  2. ISO/IEC 2382-1:1993, Information technology — Vocabulary — Part 1: Fundamental terms
  3. ГОСТ 19781—90. ЕСПД. Термины и определения
  4. ст. 1261 «Программы для ЭВМ» ГК РФ
  5. Фельдман С. К. Системное программирование. Полный курс лекций с теоретическими материалами и лабораторными работами. — 2003. — 512 с. — ISBN 5-88548-096-6.
  6. Silberschatz, 1994, p. 97.
  7. Silberschatz, 1994, p. 100.
  8. Akhter Shameem. Multi-Core Programming. — Richard Bowles (Intel Press), 2006. — С. 11—13. — ISBN 0-9764832-4-6.
  9. Чибісов Д. М. Правова природа Угоди про торговельні аспекти прав інтелектуальної власності (ТРІПС) (укр.) // Науковий вісник Ужгородського національного університету. Серія «Право». — 2012. — № 19.
  10. Чибисов Д.М. Режимы охраны проприетарного цифрового контента (укр.) (8 апреля 2015). Дата обращения: 9 апреля 2015. Архивировано из оригинала 2 апреля 2015 года.
  11. Д.М. Чибисов. Проприетарный цифровой контент: основная характеристика. Блог (8 апреля 2015). Архивировано 12 июня 2018 года.
  12. Зимин В.А. Регистрация программ для ЭВМ в Российской Федерации. Дата обращения: 9 июня 2016. Архивировано 4 апреля 2016 года.

Литература[править | править код]

  • Silberschatz Abraham. Operating System Concepts, Fourth Edition. — Addison-Wesley, 1994. — С. 97. — ISBN 0-201-50480-4.
  • Knuth, Donald E. The Art of Computer Programming, Volume 1, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89683-1.
  • Knuth, Donald E. The Art of Computer Programming, Volume 2, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89684-8.
  • Knuth, Donald E. The Art of Computer Programming, Volume 3, 3rd Edition (англ.). — Boston: Addison-Wesley, 1997. — ISBN 978-0-201-89685-5.

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

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

Компьютерная программа

  • Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010); 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993).

    Первое определение соответствует понятию «исполняемая программа», второе — относится к понятию «исходный текст».

    Другие определения из нормативных документов:

    Программа — данные, предназначенные для управления конкретными компонентами системы обработки данных в целях реализации определённого алгоритма (ГОСТ 19781—90).

    Программа — представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения (Гражданский кодекс Российской Федерации).Компьютерные программы как объект авторского права и других прав интеллектуальной собственности относятся к категории нематериальных активов.

Источник: Википедия

Связанные понятия

Ути́ли́та (англ. utility) — вспомогательная компьютерная программа в составе общего программного обеспечения для выполнения специализированных типовых задач, связанных с работой оборудования и операционной системы (ОС).

Пла́гин (англ. plug-in, от plug in «подключать») — независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения и/или использования её возможностей. Плагины обычно выполняются в виде библиотек общего пользования.

Библиоте́ка (от англ. library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).

Интерфе́йс по́льзователя, он же по́льзовательский интерфейс (UI — англ. user interface) — интерфейс, обеспечивающий передачу информации между пользователем-человеком и программно-аппаратными компонентами компьютерной системы (ISO/IEC/IEEE 24765-2010).

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

Упоминания в литературе

В 1994 г. термин «умный» контракт был введен американским юристом и специалистом в области криптографии Ником Сабо (Nick Szabo). Под смарт-контрактом следует понимать компьютерную программу, автоматическое исполнение которой соответствует закрепленным в программном коде условиям, содержащимся в блокчейне. Такие, составленные в виде программного кода, инструкции автоматически исполняются при наступлении оговоренных контрактом событий. Следовательно, отступления от договора невозможны даже технически. Код наделяется юридической силой и работает на фундаментальный для права принцип: «Договоры должны соблюдаться»[88].

World wide web – всемирная паутина или Web является одним из наиболее популярных и удобных для работы ресурсов Интернета. WWW обладает широкими возможностями, унифицируя и связывая воедино всю информацию, хранящуюся в Интернете в форме текстов, изображений и звукового сопровождения. Использование Web предполагает создание Web-серверов, предназначенных для хранения и передачи различных документов, изображений, компьютерных программ и т.д., что может быть предоставлено в виде компьютерного файла. Находящиеся на Web-серверах файлы называют страницами.

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

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

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

Связанные понятия (продолжение)

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

Подробнее: Прикладное программное обеспечение

Интерфе́йс (от англ. interface) — общая граница между двумя функциональными объектами, требования к которой определяются стандартом; совокупность средств, методов и правил взаимодействия (управления, контроля и т.д.) между элементами системы.

Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами.

Синхронизация (от др.-греч. σύγχρονος — одновременный) в информатике обозначает одно из: синхронизацию процессов, либо синхронизацию данных, либо процесс синхронизации передачи данных.

Графи́ческий интерфе́йс по́льзователя (ГИП), графический пользовательский интерфейс (ГПИ) (англ. graphical user interface, GUI) — разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений. Также называется графической оболочкой управления.

Програ́ммное обеспе́чение (допустимо также произношение обеспече́ние) (ПО) — программа или множество программ, используемых для управления компьютером (ISO/IEC 26514:2008).

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

Ввод-вывод (от англ. input/output, I/O) в информатике — взаимодействие между обработчиком информации (например, компьютер) и внешним миром, который может представлять как человек, так и любая другая система обработки информации. Ввод — сигнал или данные, полученные системой, а вывод — сигнал или данные, посланные ею (или из неё). Термин также может использоваться как обозначение (или дополнение к обозначению) определенного действия: «выполнять ввод-вывод» означает выполнение операций ввода или вывода…

Отла́дчик (деба́ггер, англ. debugger от bug) — компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.

Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.

Текстовый пользовательский интерфейс, ТПИ (англ. Text user interface, TUI; также Character User Interface, CUI) — разновидность интерфейса пользователя, использующая при вводе-выводе и представлении информации исключительно набор буквенно-цифровых символов и символов псевдографики. Характеризуется малой требовательностью к ресурсам аппаратуры ввода-вывода (в частности, памяти) и высокой скоростью отображения информации. Появился на одном из начальных этапов развития вычислительной техники, при развитии…

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.

Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).

Интерфейс командной строки (англ. Command line interface, CLI) — разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши. Также известен под названием консоль.

Среда выполнения (англ. execution environment, иногда «ранта́йм» от англ. runtime — «время выполнения») в информатике — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. В среде выполнения, как правило, невозможно изменение исходного текста программы, но может наличествовать доступ к переменным окружения операционной системы, таблицам объектов и модулей разделяемых библиотек.

Те́кстовый реда́ктор — самостоятельная компьютерная программа или компонент программного комплекса (например, редактор исходного кода интегрированной среды разработки или окно ввода в браузере), предназначенная для создания и изменения текстовых данных в общем и текстовых файлов в частности.

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

Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем.

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

Проце́сс — программа, которая выполняется в текущий момент. Стандарт ISO 9000:2000 определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

Монтирование файловой системы — системный процесс, подготавливающий раздел диска к использованию операционной системой.

Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например…

Оболо́чка операцио́нной систе́мы (от англ. shell «оболочка») — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

Планировщик задач — программа (служба или демон), часто называемая сервисом операционной системы, которая запускает другие программы в зависимости от различных критериев, как, например…

Подсве́тка си́нтаксиса — выделение синтаксических конструкций текста с использованием различных цветов, шрифтов и начертаний.

Де́мон (daemon, dæmon, др.-греч. δαίμων божество) — компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем.

Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.

Компоновщик (также редактор связей, от англ. link editor, linker) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль.

Установка программного обеспечения, инсталляция — процесс установки программного обеспечения на компьютер конечного пользователя. Выполняется особой программой (пакетным менеджером), присутствующей в операционной системе (например, RPM, APT или dpkg в Linux, Установщик Windows в Microsoft Windows), или же входящим в состав самого программного обеспечения средством установки. В операционной системе GNU очень распространено использование системы GNU toolchain и её аналогов для компиляции программного…

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

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

Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор…

Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации…

Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог скриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.

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

Открытое программное обеспечение (англ. open-source software) — программное обеспечение с открытым исходным кодом. Исходный код таких программ доступен для просмотра, изучения и изменения, что позволяет убедиться в отсутствии уязвимостей и неприемлемого для пользователя функционала (к примеру, скрытого слежения за пользователем программы), принять участие в доработке самой открытой программы, использовать код для создания новых программ и исправления в них ошибок — через заимствование исходного кода…

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

Элеме́нт интерфе́йса — примитив графического интерфейса пользователя, имеющий стандартный внешний вид и выполняющий стандартные действия.

Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.

Многопото́чность — свойство платформы (например, операционной системы, виртуальной машины и т. д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.

Око́нный интерфе́йс — способ организации полноэкранного интерфейса программы (разновидность графического интерфейса), в котором каждая интегральная часть располагается в графическом окне — собственном субэкранном пространстве, находящемся в произвольном месте «над» основным экраном. Несколько окон, одновременно располагающихся на экране, могут перекрываться, виртуально находясь «выше» или «ниже» друг относительно друга.

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

Аппара́тное обеспече́ние, аппаратные средства, компьютерные комплектующие, «железо», (англ. hardware) — электронные и механические части вычислительного устройства, входящие в состав системы или сети, исключая программное обеспечение и данные (информацию, которую вычислительная система хранит и обрабатывает). Аппаратное обеспечение включает: компьютеры и логические устройства, внешние устройства и диагностическую аппаратуру, энергетическое оборудование, батареи и аккумуляторы. К аппаратному обеспечению…

Закры́тый исхо́дный код — программа, лицензия которой не подходит под определение открытого ПО. Как правило, это означает, что распространяются только бинарные (скомпилированные) версии программы и лицензия подразумевает отсутствие доступа к исходному коду программы, что затрудняет создание модификаций программы. Доступ к исходному коду третьим лицам обычно предоставляется при подписании соглашения о неразглашении.

Упоминания в литературе (продолжение)

Терминология и виды электронных документов, соответствующие условиям работы библиотек, получили закрепление в ГОСТ Р 7.0.95-2015 «Система стандартов по информации, библиотечному и издательскому делу. Электронные документы. Основные виды, выходные сведения, технологические характеристики», дата ввода в действие которого – 1 июля 2016 г. В этом стандарте подчеркивается, что он «не распространяется на электронные документы и формы документов сферы управления и делопроизводства, требующие электронную подпись, компьютерные программы, документы и данные, предназначенные исключительно для компьютерной обработки; финансовые документы и документы ограниченного распространения» [68]. Соответственно, зафиксированные в данном стандарте термины «электронный документ» и «копирование электронного документа» не ориентированы на управленческий документооборот. Однако при этом некоторые приведенные в стандарте свойства и технологические характеристики электронных документов, находящих применение в библиотечном деле, в силу их физической природы сопоставимы с аналогичными характеристиками электронных управленческих документов.

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

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

Однако одновременно с развитием теории программисты-энтузиасты проводили и первые практические опыты. Так, в 1971 году работавший в вычислительной лаборатории компании «Bolt, Beranek and Newman» американский программист Боб Томас занимался исследованием возможностей созданной им же самим подсистемы RSEXEC, позволявшей осуществлять удаленный запуск программ в операционной системе Tenex. Экспериментируя с системами передачи данных между различными вычислительными машинами, Томас написал программу, которую назвал «Ползуном» (Te Creeper). «Ползун» самостоятельно копировал себя с одного компьютера на другой, перемещаясь таким образом по сети, и выводил на экран каждого терминала забавное сообщение: «Я – Ползун… Если сможешь, поймай меня!» (I’m the Creeper… Catch me if you can!). Эта небольшая программа не размножалась, а просто «ползала» с одного сетевого узла на другой: когда на удаленном компьютере запускалась новая копия Creeper, исходный экземпляр уничтожался. Фактически этот случай можно назвать первым в истории документально подтвержденным фактом успешной разработки автономно распространяющейся компьютерной программы, которую, впрочем, все же нельзя назвать полноценным «компьютерным вирусом», поскольку она не несла в себе никакого вредоносного функционала. К слову, история гласит, что, когда другому специалисту Bolt, Beranek and Newman, Рэю Томлинсону, надоело бороться с бесконечно отвлекающими его от работы «Ползунами», он написал другую программу, получившую наименование Reaper («Жнец»). Reaper в точности так же самостоятельно перемещался по сети, но с совершенно иной целью: программа вылавливала и безжалостно уничтожала всех «Ползунов», которые попадались ей на пути. Эта незамысловатая «игра в догонялки» продолжалась какое-то время, пока программисты лаборатории окончательно не утратили к ней интерес.

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

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

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

Компьютерная графика в последнее время все чаще применяется во всех областях, связанных с кинематографией, архитектурой, производством рекламной и дизайнерской продукции. Все большее количество фирм, так или иначе связанных с этой деятельностью, наряду с традиционными средствами используют разнообразные компьютерные программы и привлекают к сотрудничеству людей, владеющих ими. Во многих высших учебных заведениях уже введены курсы обучения трехмерной графике и компьютерному черчению. Какова же причина такого повышенного интереса к компьютерной графике и в чем ее основное преимущество перед привычными классическими решениями? Наверное, в том, что она позволяет с потрясающей фотореалистичностью стереть грань между нашей фантазией и ее визуальным воплощением. Теперь не надо строить огромные макеты чудовищ для того, чтобы показать динозавров в фильме «Парк Юрского периода», или лететь на далекие планеты, чтобы поучаствовать в битвах «Звездных войн». Можно увидеть будущий дом или квартиру во всех деталях раньше, чем строители возьмутся за инструменты, и изменить проект или исправить ошибки до того, как дом будет построен. Возможность заглянуть в далекое или близкое будущее – вот, очевидно, главная причина популярности этого сравнительно молодого вида искусства.

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

В Турбо Паскале пять структурированных типов:

— Массивы;

— Строки;

— Множества;

— Записи;

— Файлы;

Структурированные типы данных классифицируют по следующим основным признакам: однородная – неоднородная, упорядоченная – неупорядоченная, прямой доступ – последовательный доступ, статическая – динамическая. Эти признаки противостоят друг другу лишь внутри пары, а вне этого могут сочетаться.

Если все элементы, образующие структуру, однотипны (например – целые числа или символы), то структура является однородной; если же в ней «перепутаны» элементы разной природы (например, числа чередуются с символами), то неоднородной.

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

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

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

Массивы

Самым широко известным из структурированных типов данных является массив (иначе называемый регулярным типом) – однородная упорядоченная статическая структура прямого доступа.

Массивом называют однородный набор величин одного и того же типа, называемых компонентами массива, объединенных одним общим именем (идентификатором) и идентифицируемых (адресуемых) вычисляемым индексом. Это определение подчеркивает, что все однотипные компоненты массива имеют одно и то же имя, но различаются по индексам, которые могут иметь характер целых чисел из некоторого диапазона, литер, перечисленных констант. Индексы позволяют адресовать компоненты массива, т.е. получить доступ в произвольный момент времени к любой из них как к одиночной переменной. Обычный прием работы с массивом – выборочное изменение отдельных его компонент.

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

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

Записи, множества, файлы

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

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

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

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

Существенно иные возможности дает структура данных, моделирующая свойства математического объекта – множества.

Над множеством могут быть выполнены следующие операции:

1) объединение множеств (операция сложения ‘+’);

2) пересечение множеств (операция умножения ‘*’);

3) теоретико-множественная разность (вычитание множеств ‘-‘);

4) проверка принадлежности элемента множеству.

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

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

Понятие «файл» при всей своей привычности употребляется в информатике в нескольких не совсем совпадающих смыслах. Здесь мы остановимся лишь на представлении о файле как однородной упорядоченной динамической структуре последовательного доступа – очереди.

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

1) новые компоненты могут добавляться лишь в «хвост» очереди;

2) значения компонент могут читаться (извлекаться) лишь в порядке следования компонент от «головы» к «хвосту» очереди.

Размер очереди заранее не оговаривается и теоретически может считаться бесконечным. Для запоминания (хранения) компонент очереди часто используют внешние запоминающие устройства большой емкости – магнитные диски и ленты. Отсюда другое название очереди – файл (в английском языке это слово имеет несколько значений, в том числе «картотека», «шеренга», «очередь»).

Исторически слово «файл» стало впервые применяться в информатике для обозначения последовательного набора каких-либо данных или команд (программа), хранящихся на внешнем запоминающем устройстве. Несколько позже были осознаны абстрактные, не зависящие от магнитных дисков и лент, свойства очереди как структуры данных, полезные при решении многих задач обработки информации. Такой принцип извлечения и добавления компонент к очереди часто называется «первым вошел – первым вышел» (английская аббревиатура -«FIFO»)

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

Время на прочтение
21 мин

Количество просмотров 4.5K

На алгоритмической арене будет дано новое представление. Под куполом «Искусственного интеллекта» покажут потолок своих возможностей «Языки программирования» в столкновении с ограничениями, унаследованными от естественных языков. Будут продемонстрированы особенности использования структуры, контролирующей последовательность исполнения алгоритма. Мы приоткроем секреты фокуса «Китайская комната». Выясним на какой алгоритмический путь вступила технология искусственных нейронных сетей (ИНС). А самое главное подготовим почву для заключительной статьи, призванной зафиксировать единственно возможный способ синтеза информации.

Итак, время пришло. Мы начинаем…

Title

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

Простите мне это цирковой конферанс над катом. Никак не могу разделаться с нотками восторга, находясь в предвосхищении разговора, который является целью каждой опубликованной мной статьи. Текущая статья — продолжение игры с термином «Алгоритм». Эта игра начата здесь совсем не для состязания, но ради изучения. Совсем как в детстве, когда мы, играясь, с нуля познавали этот мир, подобно игре с порядковым номером [05:00] в заголовке. И как в любой игре мешают правила, запомненные в игре предыдущей, так и последующем разговоре мешают многие устоявшиеся термины. И потому читать дальше будет интереснее тому, кто на время готов забыть привычное, способен поиграться увиденным и уцепить за хвост закономерное…

"игра в кальмара"

Задача

Предыдущая статья серии была о философии. С одной стороны это не самая уместная тема на Хабр. Но, статья-жертва оказалась необходима. В ней состоялся обзор закономерностей, существующих в естественном языке, которые являются важными предпосылками для разговора текущего. Совсем странно было бы размещать лишь предыдущую статью отдельно на философском форуме, и здесь ссылаться на сформулированные в ней положения.

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

мост Cirque Shanghai

Главной опорой при построении обозначенного «моста» является автоматизация способов формирования аксиом и правил вывода для прикладной области, заданной извне. Конечно, предлагаемое средство является лишь дополнением к старому и проверенному способу аксиоматизации, задачами которой практически всегда за редкими исключениями занимался человек. Но это дополнение необходимо. Потому что абсолютизация человеческого участия в построении теорий является существенным ограничением для одной очень важной области. Аксиоматическая «изоляция смысла», тщательно выполняемая человеком, неизбежно ограничивает развитие возможностей наших вычислителей, устанавливая непреодолимые барьеры, проистекающие из ограничений формальных систем (аксиоматических теорий), в них закладываемых.

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

  • оценить насколько критичными для развития вычислительной системы являются ограничения формальных систем, самое существенное из которых — теорема о неполноте Гёделя;
  • узнать на примере существующих языков программирования, какого способа не хватает языковым средствам для преодоления ограничения, обозначенного в предыдущем пункте;
  • и порадоваться тому факту, что «прорывной» способ на самом деле уже нами реализован и успешно используется, но без должной оценки его значимости. А без осознания его реального значения упускается важный вектор развития, который уже давно может быть «позаимствован» у живых организмов.

магия и фокус с перемешиванием

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

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

Давайте начнем с последнего пункта, указывающего на противоречивую технологию ИИ. Словом «противоречивый» здесь хочется зафиксировать отсутствие на текущий момент единого мнения, определяющего конечный набор демонстрируемых системой функциональных возможностей, которые однозначно позволяют отнести её к классу ИИ. Есть очень разнородный список функций характерных ИИ. В этом списке с течением времени появляются завоёванные позиции:

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

Но есть в списке и пока непокоренные рубежи. Среди них выделим функцию, которая выполняет «манипуляции» с человеческими знаниями. Одним из способов реализации такой функции для знаний, представленных текстом, являются системы, создаваемые для прохождения Теста Тьюринга. Такие системы являются яркой демонстрацией «противоречия» в области ИИ, потому что пока существует сомнение в их полезности для чего-нибудь кроме прохождения самого теста. Примером формулировки этих сомнений является мысленный эксперимент Джона Сёрла «Китайская комната». Чуть позже в статье нам пригодится структура этого эксперимента.

Китай

Для борьбы с выявляемыми противоречиями области предпринимаются попытки систематизировать существенные признаки ИИ. И уже на их основе классифицировать существующее множество функции. В процессе такой систематизации на текущий момент сформирована договоренность, выделяющая слабый и сильный ИИ. Но поиск значимых признаков в области ИИ по-прежнему сложен. Крайне необходим прорыв, позволяющий устранить сложившиеся противоречия. Многие согласны, что для прорыва необходимо сформировать описание структуры процессов мозга, которое объяснит все внешне наблюдаемые признаки, делающие демонстрируемое человеком поведение таким уникальным. Но по состоянию на момент публикации или никто не знает приёмов позволяющих создать такое описание, или кто-то знает, но никому о них не рассказывает, или верен пессимистический вариант — и такие приёмы просто невозможны.

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

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

Точка зрения

Тут справедливо можно указать на необоснованность и странную однобокость этого утверждения. Думаю, время рассудит и взвесит приведенную здесь формулировку. А пока попробуем не заострять на этом внимание и приведем общепринятое значение слова «Аксиома» (википедия):

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

Обозначив термин «Аксиома», стоит оценить остальные три пункта указанного в начале списка технологий. В рамках текущей статьи нам необходимо поиграться несколькими терминами и, скрестив «трех ежей с удавом», попробовать выяснить:

  • чему соответствует аксиома: в области языков программирования, во множестве алгоритмов человеческого поведения и в процессе обучения ИНС;
  • каковы требования к «структурной мощности» системы описания алгоритма для возможности формирования аксиомы в этой системе;
  • какие процессы в построении структуры описания алгоритма разрешают вопрос «Китайской комнаты»;
  • в чём отличие обучения структуры ИНС и обучения структуры, формирующей поведение человека.

Но для начала необходимо ответить на следующий вопрос.

Что есть Язык программирования?

Можно сразу указать ответ со страницы Википедии:

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

Для дальнейших задач необходимо дополнить его следующим определением (стандарт ISO/IEC/IEEE 24765:2010):

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

Программа

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

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

Возможно, Вас тоже несколько смущает упомянутое словосочетание «структура алгоритма». Оно отсутствует в Википедии. В поисковике такой запрос выводит список ссылок на кусочки, посвященные условиям и циклам, из книг и лекций по программированию. Это кардинально отличается от результатов совсем другого качества, формируемых запросом «Структура данных». Для него отыскиваются ссылки на статьи и книги, всецело посвященные только этой теме. О чем это может говорить? Все просто: человек или меньше работает со «структурами алгоритма», или ему не нужны в этом подсказки.

Из личного опыта могу подтвердить, что и в моей профессиональной практике слово «структура» чаще всего указывает на сложно организованные данные. Для таких данных все время приходится создавать алгоритмы анализа и трансформации. Технологии обработки структурированных данных постоянно и повсеместно используются в нашей отрасли. Совсем иначе обстоят дела со «структурой алгоритма». После работы Эдсгера Дейкстры «О вреде оператора goto», давшей отправную точку парадигмы «структурного программирования», было немало работ, посвященных «структуре алгоритма»: методология ООП, функциональное программирование, паттерны проектирования, принципы SOLID… Но исключительно малое количество этих работ говорит об этом как о структуре. Получается, что «структуры алгоритма» — это узконаправленная область знаний, автоматизация в которой по-настоящему интересна только ограниченному кругу специалистов, разрабатывающих компиляторы, языки программирования и среды для написания программного обеспечения.

Структура

Слово «структура» настолько приросло к слову «данные», что недавно, рассчитывая довольно древнюю, но еще живую метрику кода, полчаса не мог понять, что имеется в виду под количеством «основных логических структур». Возможно так происходит с легкой подачи того множества книг по программированию, которые находятся в активном использовании. А еще по образцу из классической и любимой книги Н.Вирта «Алгоритмы и структуры данных».

К чему весь этот разговор о «структуре алгоритма»? Он здесь появился, потому что, разбираясь с определениями слова «Алгоритм», со временем пришёл к заключению, что самым расстраивающим меня местом во всех предлагаемых формулировках является отсутствие конкретных указаний на доступные программисту способы «описания порядка действий»:

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

Да, сложно описать все возможные задачи. Пусть, не перечислить типов существующих действий. Но ведь можно как-то систематизировать, какие доступны «правила»? Какими способами можно «описать порядок»? За этой систематизацией отправился на специальность «Программное обеспечение». Но в ВУЗе никто так и не дал прямого ответа на эти странные вопросы. Именно поэтому в первой статье серии описано наблюдение, что каждый программист вынужден на личном опыте постигать программирование. Но, правильно поставленные вопросы — это почти пол-успеха в поиске ответа. И опыт программирования с попутным анализом используемых способов «описания порядка» добавил вторую половину. Теперь я знаю, что способом описания порядка и правил в алгоритме всегда является структура. Для языков программирования этой структурой является записанный текст алгоритма. Структура текста алгоритма транслируется в бинарную структуру машинных кодов, которая описывает и контролирует порядок действий исполнителя (например, ЭВМ). Вроде здесь всё тривиально? Зачем вообще было заострять на этом внимание? Это необходимо только потому, что структура контролирующая исполнение может быть много сложнее текста программы. И с усложнением структуры появляются достойные внимания результаты. К этому нужно будет вернуться чуть позже. А сейчас попробуем разобрать, что есть общего и чем все же различаются текст на языке программирования и текст на естественном языке.

При сравнении формального и «естественного» текста нам поможет то, что обнаруживается сходство между процессами развития языков программирования и описанными в предыдущей статье процессами развития естественного языка. В естественный язык для работы с высказываниями целенаправленно вводились ограничения на формулирование (борьба с парадоксальными утверждениями) и фиксировались корректные трансформации (силлогизмы, логика высказываний). В программировании с целью повышения эффективности работы с текстом алгоритма шёл аналогичный процесс. В ходе этого процесса последовательно вводились ограничения, закрепляющие успешные формы развития кода и оберегающие программиста от совершения ошибок. Наиболее важные решения, послужившие развитию систем разработки кода, мы теперь называем парадигмами программирования: структурное программирование, объектно-ориентированное программирование… История появления этих шаблонов формирования и развития кода, сопровождаемая аналогиями, существующими в биологических системах, и объясняемая с точки зрения необходимости эволюционного развития алгоритмической системы, пока только тезисно прописана в теоретической книге ОТА. Для желающих освежить в памяти главные события этого развития могу порекомендовать статью «Сказка о парадигмах программирования». Думаю, используемое в указанной статье сказочное повествование должно порадовать тех, кто смог пробраться через «сложноязычие» предыдущих статей моей серии.

Вспомним и зафиксируем: «Компьютерная программа» — это некоторая структура алгоритма и данных, используемая вычислителем. В тексте на естественном языке, разбираемом в прошлой статье, тоже была структура из слов, используемая человеком при коммуникации. При этом мы отметили, что некоторые слова в тексте на естественном языке являются глаголами, а некоторые указывают на признаки объектов или состояний. Очевидно, что некоторые тексты на естественном языке являются описанием алгоритма. Сложнее заметить, что описанием алгоритма поведения (или его части) являются все существующие осмысленные тексты, даже текст текущей статьи. Выполненная человеком формализация языка: перевод глаголов в идентификаторы машинных операций; перевод признаков в условные операторы, оценивающие данные; введение ограничений на возможные последовательности ключевых слов — все это не изменило главного. Общее для текста на естественном языке и компьютерной программы сводится к наличию в них структуры, описывающей некоторый алгоритм. Отличие же этих двух форм только в исполнителе, который контролируется этим описанием.

Путь к аксиоме

Чтобы продвинуться в наших рассуждения дальше, нам придётся использовать множество утверждений, которые описывают закономерности, обнаруженные в естественном языке. Каждое из этих утверждений на текущий момент является только гипотезой. Все они требуют обсуждения и проверки. Для каждого утверждения ранее была сформирована отдельная статья этой серии. Но их обсуждения почти не было. Объясняю это тем, что не была видна общая картина, в которую эти утверждения встраиваются. В текущей статье картина будет представлена полностью, а потому надеюсь, что аргументированная критика всех предпосылок состоится. Для продолжения чтения этой статьи попробуем принять их на веру. Да, у нас получается немного затейливо: на пути к аксиоме нам нужно некоторые положения принять как аксиомы. Но тут ничего не поделать. Рекурсивность терминов, пожалуй, главная особенность работы с понятием «Алгоритм».

Катрина собрана

Итак, основываясь на гипотезе эволюции текста в компьютерную программу, можно предположить, что язык программирования унаследовал все ограничения, существующие в процессе синтеза алгоритма на естественном языке. Эти ограничения обусловлены способом формирования естественного языка, появившегося из-за необходимости взаимодействия организмов для исполнения коллективных алгоритмов выживания («Язык» статья 3.25). Уже потом для выживания стала необходима передача важных алгоритмов поведения от взрослой особи её потомкам. Это породило специализацию коллективного алгоритма («Обучение» статья 3.14), в совершенствовании которой стали оттачиваться текстовые структуры оптимальные для описания и копирования алгоритмов поведения. Способы синтеза алгоритмов поведения изначально не были текстовыми («Эволюция памяти» статья 3.1), и уже потому многие из процессов изучения среды и создания нового алгоритма поведения не сводятся к трансформациям текста. Невозможно свести к операциям, выполняемым только над текстом, интерполяционные способы синтеза (пример в статье 5.0). Их назначение сформировать описание закономерности выполняемых действий и признаков в среде, чтобы дать человеку возможность использовать описанный процесс в виде элементарного алгоритма (или «действия» в терминах статьи 1). Именно такие алгоритмы, найденные в среде, мы называем аксиомами. Для них не существует языкового доказательства исполнимости, потому что они — замеченная однородность среды, описанная в некоторой структуре мозга («Память и мозг» статья 3). Единственным критерием их истинности является то, что они продолжают наблюдаться в среде, а значит на их основе можно строить более сложные алгоритмы.

Используя описанное выше, мы можем сделать первый шаг в построении аксиоматической теории. Для этого необходимо использовать интерполяционный синтез алгоритма и наблюдать за средой, обнаруживая аксиомы. Второй шаг, формирующий правила вывода, тоже основан на интерполяционном синтезе. На этом этапе синтезируются алгоритмы, фиксирующие доступные в среде способы трансформации и группировки имеющихся аксиом. Оставшиеся шаги на пути к теории являются способами проверки и огранки обнаруженного интерполяцией алмаза. И, как показал нам пример перехода от персонажа Тор к электро-магнитному объяснению молнии («Философия» статья 5.0), этот путь тернист. «Огранка» заключается в оценке полезности и повышении эффективности системы выявленных аксиом и правил. При этом необходимо отсеять несостоятельные аксиомы и проверить границы их применимости. Для повышения эффективности целесообразно уменьшать количество аксиом и правил вывода с устранением их взаимозависимостей.

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

Появление бозона Хиггса при столкновении двух протонов

Но весь путь формирования теории слишком велик для одной статьи. Поэтому сосредоточимся на его первом шаге. Факт зарождения аксиомы очень примечателен. Как выполнить обещанную автоматизацию этого действия? В какой структуре кроме человеческой памяти аксиома может быть зафиксирована? Есть ли в существующих языках программирования подобные структуры? Ведь эта структура должна выявлять закономерность, фиксировать её и потом обеспечивать исполнение зафиксированного. Вам ничего не напоминает последовательность этих мероприятий? Они очень похожи на задачи решаемые ИНС.

Почему ИНС близка ИИ?

Давайте попробуем посмотреть на ИНС с точки зрения алгоритмов, которые она исполняет. Как мы помним из выше приведенного определения: алгоритм является решением определённой задачи или некоторого класса задач. Перечислим какие задачи стоят перед ИНС.

Перед еще не тренированной ИНС стоит одна задача. И алгоритм тоже один — по обучающей выборке данных натренироваться на распознавание (признаковую трансформацию) некоторых данных. В результате решения этой задачи происходит фиксация полученных весовых коэффициентов расчетной структуры слоев ИНС, первая задача забывается, но появляется возможность выполнить решение новой задачи. Новая задача может быть вполне конкретной, например, узнать есть ли на изображении кот. Для других обучающих данных, используемых в решении первой задачи, фиксация может произойти на задаче обнаружения пчелы или, возможно, классификации изображений по временам года. Но, где есть автоматическое решение задачи, там есть и алгоритм?

Значит, в процессе обучения ИНС выполняется синтез нового алгоритма. Но для указанного алгоритма распознавания образа можно сказать, что результирующие разные алгоритмы («кот», «пчела», «сезоны») — занимаются выполнением одной и той же вычислительной задачи отождествления данных, сходных с обучающим набором. При этом они выполняют заданную и одинаковую для каждого варианта последовательность операций пересчета и трансформации некоторого массива данных. Да, конечно, при этом решаются задачи несколько отличные в плане практического использования.

Но это был простой вариант.

Го и пчела

А если взять два экземпляра еще не тренированной ИНС посложнее (AlphaGo). И натренировать один экземпляр для игры «Го», а второй заставить узнавать изображения пчелы, которые выложены камешками на игровом поле. Конечно, указанный пример достаточно условен, но не думаю, что это совсем неразрешимая задача для обозначенной ИНС. Синтезированные в результате тренировок алгоритмы очень различаются. Пчелок как в прежнем варианте узнают-распознают. А вот в «игроке Го» ситуация посложнее: наблюдаются последовательности действий, стратегические композиции.

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

Конечно, это не делает сложный вариант ИНС совсем невписывающимся в определение алгоритма. Просто задача у алгоритма ИНС не тривиальная — это алгоритм создания алгоритма решения другой задачи и алгоритм исполнения созданного алгоритма. Например, если это будет алгоритм сборки «Кубика-Рубика» (DeepCubeA Forest Agostinelli), то синхронно будут исполняться два алгоритма (вычислительный и синтезированный сборочный). Какой-то из них, конечно, будет соответствовать терзаемому в этой серии статей определению «Алгоритма». Но какой? И знают ли элементы исполняющие вычислительный алгоритм что-нибудь о том, что они собирают Кубик-Рубика?

Тут самое место вспомнить «Китайскую комнату». Два одновременно исполняющихся алгоритма — это ответ на незнание Джоном Сёрлом китайских символов. Машине, реализующей алгоритм решения Кубика-Рубика, тоже известен только вычислительный алгоритм ИНС, и заранее не известен алгоритм сборки. Имея опыт работы с ИНС, мы понимаем, что готовый алгоритм сборки Кубика не является необходимым знанием, вкладываемым в алгоритм обучения и использования ИНС DeepCubeA. А есть ли возможность для человека понять суть алгоритма решения синтезированного в ИНС DeepCubeA и использовать этот алгоритм для решения в «ручном режиме»?

И тут можно перейти к мозгу. Является ли знание алгоритма сборки Кубика-Рубика методом Джессики Фридрих необходимым при формировании алгоритмов работы нейронов нашего мозга? Есть ли возможность по алгоритмам работы нейронов нашего мозга определить, что человек знает алгоритм сборки Кубика? Необходимо ли Джону Сёрлу знать языковые алгоритмы работы с китайскими символами, если у него есть пусть и непонятное ему, но строгое описание требуемых «вычислительных» операций для имитации собеседника, владеющего китайским языком, в прохождении Теста Тьюринга? Очень похоже, что иногда для исполнения алгоритма не требуется его «понимание». А на основе этого можно предположить, что сеть нейронов, составляющая наш мозг, является лишь структурой способной синтезировать некоторый алгоритм. Что в частном случае позволяет этой сети, основываясь на анализе сигналов рецепторов сетчатки и управляя сигналами для движения рук, разработать и исполнить алгоритм решения головоломки.

Но ведь очевидно, что при отмеченной схожести работы структуры ИНС и структуры человеческой памяти у них есть и существенные отличия? Лучше всего эти отличия можно оценить, если экстраполировать найденную выше закономерность в виде утверждения:

Основная деятельность мозга — это синтез и исполнение алгоритмов поведения.

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

Проверка работоспособности приведенного выше утверждения стала целью формирования теоретической книги ОТА. В статьях «Эволюция памяти» (3.1) и «Эволюция поведения» (5) зафиксированы результаты, наиболее важные в описании работы мозга. В ходе анализа развития алгоритмов поведения разной сложности не раз подтверждено, что интерполяция алгоритма, выполняемая мозгом, использует совсем иной способ регистрации повторимости признаков наблюдаемой закономерности по сравнению со способом ИНС. Для технологии ИНС, которая является наследницей методов кластерного анализа, интерполяции и оптимизации по массиву известных данных, для выявления алгоритмической повторимости требуется статистическая обработка. Для расчета статистики необходимы большие массивы обучающих данных. В то время как для памяти организма основой способа выявления алгоритмической повторимости является запоминание прецедента и повторное его обнаружение. Как мы зафиксировали в статье 1 признак повторимость «подсказывает», что обнаружен алгоритм. Каждый из этих методов (ИНС и память) имеет и достоинства, и недостатки. Память человека скорее представляет эвристический подход к исследованию среды, в то время как ИНС является методом статистической оптимизации. При недостатке обучающих данных эвристика в отличие от ИНС уже может дать решение, но при проверке на большом количестве тестовых данных это решение, вероятно, окажется лишь локальным оптимумом. Конечно, это различие полезно использовать. И, уверен, наиболее эффективные системы ИИ будут использовать симбиоз этих двух подходов. Но вернёмся к языкам программирования.

Так почему языки программирования не стали ИИ?

А почему они должны были им стать? Наверно, спросите Вы. Например, потому что, обобщая, предыдущий раздел можно переформулировать: «Мозг должен уметь синтезировать алгоритм, хранить полученное описание и по необходимости его исполнять». Вероятно, ИИ тоже должен выполнять подобную работу. А какие средства на текущий момент мы используем, чтобы хранить описание создаваемых алгоритмов? Наиболее общеупотребительным средством является именно язык программирования.

И, конечно, не нова идея получения ИИ с использованием возможности создания нового алгоритма путем трансформации алгоритма, записанного на языке программирования. Специально для реализации этой возможности было разработано множество особенных языков программирования. Пожалуй, самый известный из них Lisp. В этом языке текст алгоритма не отличается по структуре от текста, представляющего данные. И существует возможность модификации этой общей структуры в момент исполнения. Казалось бы, вот то, что нужно. Почему же язык с такой возможностью так и не стал системой ИИ? Ответ уже дан чуть раньше. Его только необходимо скомпоновать.

Язык Lisp пока не стал системой ИИ, потому что в нём не реализован достаточно универсальный метод синтеза нового алгоритма, который основывался бы не на уже существующих и описанных алгоритмах, а на выявляемой закономерности внешней среды. При этом даже если мы сейчас добавим в Lisp возможность синтеза аксиомы, например, в виде внешнего модуля ИНС, то всё равно систему ИИ ещё не получим. Потому что сразу появится еще один вопрос. Как преобразовать алгоритм, синтезированный внутри ИНС, в структуру языка Lisp для выполнения впоследствии доступных языку трансформаций? На этот вопрос можно ответить, если получится понять, как алгоритм сборки DeepCubeA объяснить человеку. Для формальной системы, это тождественно решению задачи по переформулированию аксиомы, выявленной в параметрах сложной структуры (например, ИНС), в язык этой формальной системы. Не самая простая задача?

Но способ её решения есть. И с его использованием преодолевается ограничение неполноты формальной системы, доказанное Гёделем. Конечно, мало сказать, что способ существует. А если к этому добавить, что ключевые моменты способа уже описаны? И детали этого описания разбросаны по предыдущим статьям. Нет, они еще не доказательство и не реализация. Здесь каждый волен оценить, есть ли смысл тратить усилия, чтобы попытаться понять и попробовать осуществить описанное. Тот, кому эта затея кажется хоть немного полезной, в комментариях найдет место для критики и вопросов.

Выводы

Да, окончание статьи вышло неожиданным. Головоломка, «родившаяся» из-за резкой остановки повествования в последнем абзаце, показалась мне занятным инструментом. Посмотрим насколько этот инструмент будет полезен для ОТА. Но это не помешает нам вознаградить себя за проделанную в чтении статьи работу. Пусть даже наградой будет лишь похвала и перечисление значимых свершений.

В этой статье мы:

  • разобрались, как можно сопоставить формулирование аксиом и правил вывода с интерполяционным синтезом алгоритма;
  • указали на структуру как единственный способ описания алгоритма;
  • обнаружили, что структура алгоритма может быть сформирована не только языком программирования;
  • выяснили почему алгоритм, синтезирующий и исполняющий новый алгоритм, плохо соответствует текущему определению термина «Алгоритм»;
  • установили, что, не понимая алгоритма, можно выполнить его исполнение;
  • сформулировали гипотезу «Об основной функции мозга»;
  • добавили заключительную деталь головоломки «Ограничение Гёделя» к деталям, уже описанным в предыдущих статьях серии.

Было ли перечисленное и на этот раз только игрой?

Спасибо Вам за внимание.

Отзывы

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

Отдельное волнение у меня есть по стилю повествования и форматированию, используемым в статье (кавычки, абзацы, курсив…). Напишите, пожалуйста, если у Вас есть конструктивные замечания к ним. Можно личным сообщением.

Ссылки

  • Главная страница и теория работы (GitLab GPL): Проект «Общая теория алгоритмов» (ОТА)
  • Вводная статья работы «Разрабатываем теорию алгоритмов как проект с открытым исходным кодом». Пожалуйста, не судите строго эту наивную публикацию «сверх-идеи» устаревшей версии 2019 года.
  • Статьи серии «Что такое алгоритм?!»
    • №1 «Действие»,
    • №2 «Жизнь»,
    • №3 «Синтез алгоритма запоминанием»
    • №3.1 «Эволюция памяти»
    • №3.14 «Обучение»
    • №5 «Эволюция поведения»
    • №4 «Математика»
    • №4.0 «Физика»
    • №3.25 «Язык»
    • №5.0 «Философия»
  • Статьи в хабе «Программирование»:
    • Детская сказка программисту на ночь
    • Эволюция программного проекта и ООП
    • Как не понимать принципы развития архитектуры SOLID
  • Рисунок яблока в статье сформирован сообществом Wikipedia. Лицензия (Creative Commons Attribution-Share Alike 4.0 International)
  • Иллюстрация «Приглашение к игре». Отсылка к внешнему виду визитки из сериала «Игра в кальмара». Студия Siren Pictures Inc. 2021 г.
  • Иллюстрация «Строительство моста». Фотография номера Cirque Shanghai: Bai Xi
  • Иллюстрация «А кролика мы не заметили». Изображение раздела «Фокусы» с сайта kartinkin.net
  • Иллюстрация «Китайские львы». Фотография программы «Китайского цирка» Фотограф Alenik
  • Иллюстрация «Аксима — взляд со стороны». Фотография программы Cirque du Soleil (Цирк Солнца).
  • Иллюстрация «Программа». Фотография программы цирка Чинизелл. Начало 20-го века.
  • Иллюстрация «Структура». Фотография акробатической пирамиды на репетиции Le Grand Cirque в Sydney Opera House, 2009. (Getty Images)
  • Видеоиллюстрация «Естественный язык». Видеозапись номера Вячеслава Полунина («Асисяй») «Телефон». 1981 г
  • Иллюстрация «Картина сложилась». Картина «Цирк». Художник Сальвадор Дали. 1921 г.
  • Иллюстрация «Подтверждение абстрактному выводу». Моделирование, показывающее появление бозона Хиггса при столкновении двух протонов.
  • Иллюстрация «ИНС AlphaGo». Схема партии Го, в которой соревновались AlphaGo и Фань Хуэй (трехкратный чемпион европы). ИНС одержала победу после 165 ходов.
  • Видеоиллюстрация «Суть алгоритма». Видеозапись кальциевой активности нейронов мозга личинки Danio rerio. Описание эксперимента. Источник Daniil A. Markov, Luigi Petrucco, Andreas M. Kist & Ruben Portugues. A cerebellar internal model calibrates a feedback controller involved in sensorimotor control // Nature Communications. 2021. DOI: 10.1038/s41467-021-26988-0.
  • Видеоиллюстрация «Алгоритм сборки Кубика-Рубика». Видеозапись телепрограммы «Удивительные люди». Цюэ Цзяньюй. Спидкубер-жонглер.
  • Видеоиллюстрация «История Lisp и ИИ». Англоязычный авторский youtube канал cryoCode

Автор вопроса: Михаил Михайлов

Опубликовано: 23/10/2022

Что такое программа простыми словами?

У нас есть 22 ответов на вопрос Что такое программа простыми словами? Скорее всего, этого будет достаточно, чтобы вы получили ответ на ваш вопрос.

  • Что такое программа в двух словах?
  • Что такое программа по информатике?
  • Что такое компьютерная программа своими словами?
  • Какая самая первая программа?
  • Что такое программа и программирование?
  • Сколько видов программы?
  • Для чего нужны системные программы?
  • Что такое программа простыми словами? Ответы пользователей
  • Что такое программа простыми словами? Видео-ответы

Отвечает Никита Романов

Программа — это текст (код), написанный на одном из языков программирования, содержащий инструкции и операторы в логической последовательности, …

Что такое программа в двух словах?

Програ́мма (от греч. προ — пред, греч. γράμμα — запись) — термин, в переводе означающий «предписание», то есть заданную последовательность действий. Данное понятие непосредственно связано с понятием алгоритм.

Что такое программа по информатике?

Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010); 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая …

Что такое компьютерная программа своими словами?

Компью́терная програ́мма — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины. Чаще всего образ программы хранится в виде исполняемого модуля (отдельного файла или группы файлов).

Какая самая первая программа?

Том Килбурн – автор самой первой программы, один из разработчиков машины SSEM (Small Scale Experimental Machine), которую еще называли The Baby (1948). Манчестерский «Бэби» был первым программируемым компьютером, поэтому вполне естественно, для него и была написана первая программа.

Что такое программа и программирование?

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

Сколько видов программы?

Программное обеспечение, установленное на ПК, делится на 3 разновидности: прикладное; системное; инструментальное.

Для чего нужны системные программы?

Системные программы – средства управления ресурсами персонального компьютера, а именно: оперативною памятью, процессором, устройствами ввода-вывода (клавиатура, монитор, принтер, сканер). Системные программы отвечают за вспомогательные функции.

Отвечает Максим Габитов

Программы есть на каждом компьютере, ноутбуке и даже в ваших телефонах и планшетах. … Cервер — Что это такое: Подробно простыми словами.

Отвечает Руслан Шифрин

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

Отвечает Яков Мухамадиев

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

Отвечает Камран Телкин

Программа — данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определённого алгоритма. — ГОСТ …

Отвечает Андрей Стрельцов

Программирование — это написание программ с помощью языков программирования. Программа — это алгоритм, записанный на языке, который понимает вычислительная …

Отвечает Раиль Сайфулин

Объясняем простыми словами. Утилита — небольшая вспомогательная программа для решения специализированных задач по настройке, оптимизации, …

Отвечает Руслан Алексеев

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

Отвечает Татьяна Гагарина

Начиная с 1991 года бухгалтеры смогли отказаться от муторного ручного труда по заполнению ведомостей и отчетов. Именно тогда фирма «1С» представила …

Отвечает Ангелина Шерстнева

C++ — он нужен для создания большинства программ и игр для ПК;; C# — используется для создания программ на Windows и компьютерных игр; …

Как работает программа? Как компилируется код? (устройство компьютерных программ) [2020]

Что такое программа? Программа – некая виртуальная сущность, написанная на языке программирования, рассчитанная …

Как работает программа? Как компилируется код? (устройство компьютерных программ) [2020]

Что такое программирование и язык программирования? Просто о сложном.

… вопросы простыми словами с примерами. Во второй половине видео привожу пример на языке программирования Swift.

Что такое программирование и язык программирования? Просто о сложном.

Как работает язык программирования(Компилятор)? Основы программирования.

Telega и чатик — https://t.me/wndtn boosty(менторинг) — https://boosty.to/wndtn instagram — https://instagram.com/winderton/ github …

Как работает язык программирования(Компилятор)? Основы программирования.

Что такое компьютерная программа

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

Что такое компьютерная программа

Что такое НДС простыми словами?

❗️Об этом и многом другом — смотрите наш ролик, а также другие ролики и вебинары по схожим темам!

Что такое НДС простыми словами?

Понравилась статья? Поделить с друзьями:
  • Комбилипен уколы инструкция по применению цена уколы отзывы взрослым
  • Комбимакс 700 браун инструкция на русском языке кухонный комбайн
  • Комбилипен уколы инструкция по применению цена отзывы аналоги мидокалм
  • Комбилипен ушные капли инструкция по применению
  • Комбилипен уколы цена инструкция по применению от чего помогает отзывы внутримышечно