В каком поколении компьютеров использовался язык программирования си

Обновлено: 07.07.2024

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

Считается, что языки программирования ведут свой отсчет с появления FORTRAN в 1957 году. Впоследствии самые разные языки, каждый со своими отличительными особенностями, развивались и давали жизнь тем языкам программирования, которые есть сегодня. Например, C и JavaScript и все остальные.

В 1983 году Бьерн С трауструп создал дополнительные совершенствующие расширения для программы на C, которую он назвал «C++» или «C с классами». При этом он использовал новейшие технологии программирования того времени — ООП, или объектно-ориентированное программирование, где объектами выступают фрагменты данных, с которыми программист производит манипуляции. Так возник язык программирования высокого уровня C++, используемый сегодня.

1. Язык

C++ — объектно-ориентированный язык программирования промежуточного уровня. Упор в нем делается на классах, которые связываются вместе в большой двоичный исполняемый файл.

2. Производительность

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

3. Сборка мусора

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

4. Платформа

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

5. Указатели

На C++ используются в любом месте программы.

6. Среда выполнения

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

7. Размер двоичного кода

На C++ эта программа легче компилируется, поэтому она легковесна.

8. Проверка границ

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

9. Приложения

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

Если принять во внимание определение языка программирования:

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

Программа – это логически упорядоченная последовательность команд необходимая для управления компьютером.

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

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

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

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

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

1) Одна строка кода соответствовала одной команде конкретному устройству.

2) Каждое устройство обладало своим уникальным набором команд, которые не повторялись во всей спроектированной ЭВМ.

3) Каждая команда в ЭВМ была уникальна и не повторялась в рамках одной ЭВМ.

а) Панели ввода – Чаще всего это были либо тумблеры (кнопки переключения состояний).


б) Устройств автоматического ввода – Это могла быть перфолента или перфокарты.


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

Вывод результата мог происходить как на перфоленту так и в виде световой индикации на пульте управления ЭВМ.


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



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

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

Д ля упрощения создания программ в 1950 году было принято решение создать язык assembly это и послужило появлению языков второго поколения. Языки второго поколения позволили представить машинный код в более удобной для человека форме для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды.

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

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

Тестирование – процесс поиска ошибок в программе

Трансляция – перевод программы с языка в машинный код

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

Не важно был ли это assembly или другой язык разрабатываемый в те годы принцип работы у них был схож:

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

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

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

3) После преобразования команд получался бинарный файл который можно было запускать, на тех ЭВМ для которых был транслирован.


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

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

Assembly (Ассемблер) сегодня используется в основном для написания системного ПО.


FORTRAN (Фортран) основном для инженеров, математиков и ученых, которые имеют в основном дело с формулами и проблемами, ориентированными на вычисления.

COBOL (Кобол) был разработан в начале 60-х годов, для того чтобы было легче писать программы для бизнеса, которые могли использоваться в таких видах деятельности как обработка заказов, ведение бухгалтерии, планирование производства и т.д.


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

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

2) Каждая инструкция в программе занимала одну строку.

3) Все представляемые данные (цифры) вводились в двоичной, восьмеричной или шестнадцатеричной системе счисления.

4) Написанные команды переводились из текста в машинный код и после этого процессор мог начать их выполнение.

5) От программиста требовалось знание особенностей работы тех ЭВМ для которых он писал программу потому, а так же знание синтаксиса того языка на котором он писал код (текст) программы.

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

Технологии как и языки программирования не стояли на месте. После изобретения транзистора, в 60х годах, размеры ЭВМ уменьшились. Многие энтузиасты могли в домашних условиях собирать простейшие ЭВМ. Которые в то время подключались к телевизору. Или электронной машинке.


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

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


Это сейчас сходил на рынок купил готовые модули и собрал их в единый блок а в те годы все собиралось из элементарных деталей на самодельных платах


Доступность простым людям деталей для ЭВМ привел к появлению рынка персональных компьютеров для частного сектора. Люди постепенно создавали программы для управления другими программами. Это привело к развитию операционных систем таких как UNIX и MS DOS что привело к появлению языков третьего поколения.

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

Языки 3 поколения унаследовали все достоинства языков 2 поколения и дополнили их своими достоинствами.

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

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

3) Возможность использования специальных синтаксических приемов – программы стали более сложными в них появились блоки команд объединённые в процедуры и функции, что позволяло выполнять программу не по очереди с 1 строки и до последней, а переходить в нужное место по мере необходимости, или вызвать нужные блоки команд.

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

Подавляющее большинство языков 3 поколения успешно применяется и сегодня. Для написания «быстрых программ» и операционных систем.

На данном этапе развития языков программирования были введены следующие понятия:

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


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


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

BASIC (Beginner's All-purpose Symbolic Instruction Code) - Язык, разработанный в 1963 году, который поначалу создавался для того, чтобы инженеры могли производить на компьютерах различные симуляции.


PASCAL- Язык программирования, созданный в 1970х годах и который создавался для обучения программированию.


С - создавался для написания операционных систем (многие UNIX совместимые операционные системы написаны на этом языке), уже долгое время является одним из самых популярных языков программирования.


С++ следующий этап развития языка C с возможностью использовать не только процедуры и функции но и объединять их в классы а классы в объекты


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

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

2) Во время сборки программы препроцессор дополняет текст программиста функциями которые были вызваны из библиотек.

3) Полученный полный текст программы проверяется компилятором который проверяет все ли на месте и правильность самого кода. Далее преобразует всю программу в бинарный файл.

4) На основе выбранной ОС для которой нужно собрать программу, компоновщик связывает бинарный код программы с нужными библиотеками и создает код программы понятный конкретной ОС.


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

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

Как правило реализуется синтаксис одного из существующих языков но бывают и исключения например как в 1С предприятии был реализован собственный язык, позволяющий писать программы на русском языке. Или Action script позволяющий писать программу управления Flash фильмами.

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

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

Язык 1С - средой исполнения языка является программная платформа «1С:Предприятие». Визуальная среда разработки («Конфигуратор») является неотъемлемой частью пакета программ «1С:Предприятие»


VBScript – язык для написания скриптов (микропрограмм - макросов) как в MS Windows так и для приложений MS OFFICE так же распознается Internet Explorer позволяя генерировать WEB страницы.


JavaScript — прототипо-ориентированный сценарный язык программирования. Используется для создания WEB форм, и разработки кросс платформенных приложений так же можно применять в разработке скриптов для Windows и Unix платформ.


ActionScript — объектно-ориентированный язык программирования, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений. ActionScript исполняется виртуальной машиной (ActionScript Virtual Machine), которая является составной частью Flash Player.


SQL англ. Structured Query Language — «Структурированный язык запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. Язык разного вида используется в базах данных таких как MS SQL, Postures SQL, MySQL и других базах.

C (рус. Си) — компилируемый статически типизированный язык программирования общего назначения.

Содержание

История


Язык программирования С был разработан в лабораториях Bell Labs в период с 1969 по 1973 годы Деннисом Ритчи. Самый активный период творчества пришёлся на 1972 год. Язык назвали «Си» (C — третья буква английского алфавита), потому что многие его особенности берут начало от старого языка «Би» (B — вторая буква английского алфавита).

Язык B был в основном произведением Кена Томпсона при содействии Денниса Ритчи и был опубликован в 1969 году. Язык B можно рассматривать как C без типов. Сам B был создан на основе языка BCPL (Basic Combined Programming Language). Предшественником BCPL был язык CPL, разработанный в начале 1960-х. Название B появилось или от названия BCPL, или от имени жены Томпсона — Бонни. Пример кода на B:

В 1970 Bell Labs приобрела для проекта компьютер PDP-11. Так как B был готов к работе на PDP-11, Томпсон переписал часть UNIX на B.

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


В 1971 году Ритчи начал создавать расширенную версию B. Сначала он назвал её NB (New B), но когда язык стал сильно отличаться от B, название сменили на C.

Сформировался синтаксис объявления имён, который отражает синтаксис выражения, где эти имена используются. Так

объявляет целое, указатель на целое и указатель на указатель на целое. Синтаксис этих объявлений отражает тот факт, что i, *pi, и **ppi все в результате дают тип int, когда используются в выражении. Похожим образом

объявляют функцию, возвращающую целое, функцию возвращающую указатель на целое, указатель на функцию возвращающую целое;

объявляют массив указателей на целое, указатель на массив целых.

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

К 1973 году язык С стал достаточно силён, и большая часть ядра UNIX, первоначально написанная на ассемблере PDP-11/20, была переписана на С.

В 70-х программистов на C было немного и большинство из них были пользователями UNIX. Тем не менее, в 80-х C вышел за узкие рамки мира UNIX. Компиляторы C стали доступны на различных машинах, работающих под управлением разных операционных систем. В частности, C стал распространяться на быстро развивающейся платформе IBM PC.

В 1978 году Брайан Керниган и Деннис Ритчи опубликовали первую редакцию книги «Язык программирования Си». Эта книга, известная среди программистов как «K&R», служила многие годы неформальной спецификацией языка. Версию языка Си, описанную в ней, часто называют «K&R C».

The C Programming Language preview.jpg

K&R ввёл следующие особенности языка:

  • структуры (тип данных struct);
  • длинное целое (тип данных long int);
  • целое без знака (тип данных unsigned int);
  • оператор += и подобные ему (старые операторы =+ вводили анализатор лексики компилятора C в заблуждение, например, при сравнении выражений i =+ 10 и i = +10).

K&R C часто считают самой главной частью языка, которую должен поддерживать компилятор C. Многие годы даже после выхода ANSI C он считался минимальным уровнем, которого следовало придерживаться программистам, желающим добиться от своих программ максимальной переносимости, потому что не все компиляторы тогда поддерживали ANSI C, а хороший код на K&R C был верен и для ANSI C.

Стандарты

ANSI C (C89)

В 1983 году Американский национальный институт стандартов (ANSI) сформировал комитет для разработки стандартной спецификации Си. По окончании этого долгого и сложного процесса в 1989 году он был наконец утверждён как «Язык программирования Си» ANSI X3.159-1989. Эту версию языка принято называть ANSI C или C89.

Одной из целей этого стандарта была разработка надмножества K&R C, включающего многие особенности языка, созданные позднее. Однако комитет по стандартизации также включил в него и несколько новых возможностей, таких, как прототипы функций (заимствованные из C++) и более сложный препроцессор.

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

В 1990 году, стандарт ANSI C (с небольшими изменениями) был принят Международной организацией по стандартизации (ISO) как ISO/IEC 9899:1990. Эту версию иногда называют C90. Однако, термины C89 и C90 относятся в сущности к одному языку.

После стандартизации в ANSI спецификация языка C оставалась относительно неизменной в течение долгого времени, в то время как C++ продолжал развиваться. Однако в конце 1990-х годов стандарт подвергся пересмотру, что привело к публикации ISO 9899:1999 в 1999 году. Этот стандарт обычно называют «C99». В марте 2000 года он был принят и адаптирован ANSI.

Некоторые новые особенности C99:

  • подставляемые функции (inline);
  • объявление локальных переменных в любом операторе программного текста (как в C++);
  • новые типы данных, такие, как long long int (для облегчения перехода от 32- к 64-битным числам), явный булевый тип данных _Bool и тип complex для представления комплексных чисел;
  • массивы переменной длины;
  • поддержка ограниченных указателей (restrict);
  • именованная инициализация структур: struct < int x, y, z; >point = ;
  • поддержка однострочных комментариев, начинающихся на //, заимствованных из C++;
  • несколько новых библиотечных функций, таких, как snprintf;
  • несколько новых заголовочных файлов, таких, как stdint.h.

8 декабря 2011 опубликован новый стандарт для языка С (ISO/IEC 9899:2011). Основные изменения:

  • поддержка многопоточности;
  • улучшенная поддержка Юникода;
  • обобщенные макросы (type-generic expressions, позволяют статичную перегрузку);
  • анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);
  • управление выравниванием объектов;
  • статичные утверждения (static assertions);
  • удаление опасной функции gets (в пользу безопасной gets_s);
  • функция quick_exit;
  • спецификатор функции _Noreturn;
  • новый режим эксклюзивного открытия файла.

Где взять стандарт почитать

Однако можно найти черновые версии в свободном доступе. Например C11.

Популярность

Что написано на C

  • Ядро Linux.
  • Ядро Windows.
  • Интерпретаторы Python, Perl, PHP, bash.
  • Классические UNIX-утилиты.
  • Web-серверы nginx, Apache.
  • СУБД: SQLite, MySQL (

Рейтинги

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

Tiobe.jpg

По рейтингу GitHub (объём изменений в репозиториях) язык занимает 9-е место в 2016 г.

Альтернативы?

Компиляторы C

Компиляторов C на самом деле много, но популярных и качественных совсем немного.

  • Язык программирования Си разрабатывался в период с 1969 по 1973 годы в лабораториях Bell Labs. Согласно Ритчи, самый активный период творчества пришёлся на 1972 год. Язык назвали «Си» (C — третья буква английского алфавита), потому что многие его особенности берут начало от старого языка «Би» (B — вторая буква английского алфавита). Существует несколько различных версий происхождения названия языка Би. Кен Томпсон указывает на язык программирования BCPL, однако существует ещё и язык Bon, также созданный им. Ритчи предполагает, что название языка могло быть производным от имени жены Томпсона Бонни.

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

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

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

Кобо́л (COBOL, COmmon Business Oriented Language) — один из старейших языков программирования (первая версия выпущена в 1959 году), предназначенный, в первую очередь, для разработки бизнес-приложений. Руководителем проекта по созданию Кобола была Грейс Хоппер («бабушка Кобола»). Практически с самого своего рождения Кобол является ANSI-стандартизованным языком программирования.

Hardware Abstraction Layer (HAL, Слой аппаратных абстракций) — слой абстрагирования, реализованный в программном обеспечении, находящийся между физическим уровнем аппаратного обеспечения и программным обеспечением, запускаемом на этом компьютере. HAL предназначен для скрытия различий в аппаратном обеспечении от основной части ядра операционной системы, таким образом, чтобы большая часть кода, работающая в режиме ядра, не нуждалась в изменении при её запуске на системах с различным аппаратным обеспечением.

Кросс-компиля́тор (англ. cross compiler) — компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор. Такой инструмент бывает полезен, когда нужно получить код для платформы, экземпляров которой нет в наличии, или в случаях когда компиляция на целевой платформе невозможна или нецелесообразна (например, это касается мобильных систем или микроконтроллеров с минимальным объёмом памяти).

Фокал (Focal, акроним от англ. formula calculator) — интерпретируемый язык программирования высокого уровня, переработка языка JOSS.

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

Компонентно-ориентированное программирование (англ. component-oriented programming, COP) — парадигма программирования, существенным образом опирающаяся на понятие компонента — независимого модуля исходного кода программы, предназначенного для повторного использования и развёртывания и реализующегося в виде множества языковых конструкций (например, «классов» в объектно-ориентированных языках программирования), объединённых по общему признаку и организованных в соответствии с определёнными правилами.

Систе́ма прове́рки правописа́ния (также спелл-че́кер от англ. spell checker) — компьютерная программа, осуществляющая проверку заданного текста на наличие в нём орфографических ошибок. Найденные ошибки или опечатки отмечаются специальным образом — обычно для этого используется подчёркивание. В некоторых случаях пользователю помимо указания на места возможных ошибок предоставляется возможность выбрать один из правильных вариантов написания. Может быть также выведен комментарий, объясняющий, каким.

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

Защита памяти (англ. Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надёжность работы как программ, так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты.

Раскрутка компилятора (англ. bootstrapping — от boot и strap) — метод создания транслятора для некоторого языка программирования, при котором транслятор пишется на том же языке программирования, для трансляции которого создаётся; создание транслятором исполняемых файлов из исходного кода самого транслятора. Используется для переноса трансляторов на новые платформы. Появился в середине 1950-х годов. Позволяет создать транслятор, который генерирует сам себя. Применялся для создания трансляторов многих.

Макрокоманда, макроопределение или мáкрос — программный алгоритм действий, записанный пользователем. Часто макросы применяют для выполнения рутинных действий. А также макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов, например: фрагмент html-страницы в веб-шаблонах, или одно слово из словаря синонимов в синонимизаторах.

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

Станда́рт оформле́ния ко́да (станда́рт коди́рования, стиль программи́рования) (англ. coding standards, coding convention или programming style) — набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования. Наличие общего стиля программирования облегчает понимание и поддержание исходного кода, написанного более чем одним программистом, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения.

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

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

Ло́го (англ. Logo) — язык программирования высокого уровня, разработанный в 1967 году Уолли Фёрзегом, Сеймуром Пейпертом и Синтией Соломон в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.).

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

Кома́нда — это указание компьютерной программе действовать как некий интерпретатор для решения задачи. В более общем случае, команда — это указание некоему интерфейсу командной строки, такому как shell.

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

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

Язы́к ассе́мблера (англ. assembly language) — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам машины или их последовательностям, также он может предоставлять дополнительные возможности облегчения программирования, такие как макрокоманды, выражения, средства обеспечения модульности программ. Может рассматриваться как автокод (см. ниже), расширенный конструкциями языков программирования высокого уровня. Является существенно платформо-зависимым.

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

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста. Визуальное программирование часто представляют как следующий этап развития текстовых языков программирования. Наглядным примером может служить утилита Визуальный Pascal или Microsoft Visual Studio, где редактируются графические объекты и одновременно отображается соответствующий текст программы. В последнее время визуальному программированию стали уделять больше.

Транспью́тер (англ. transputer) — элемент построения многопроцессорных систем, выполненный на одном кристалле большой интегральной схемы, продукт английской компании Inmos (ныне — подразделение STMicroelectronics).

DLL (англ. Dynamic Link Library — «библиотека динамической компоновки», «динамически подключаемая библиотека») в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. Эти библиотеки обычно имеют расширение DLL, OCX (для библиотек содержащих ActiveX), или DRV (для ряда системных драйверов). Формат файлов для DLL такой же, как для EXE-файлов Windows, т. е. Portable Executable (PE) для 32-битных и 64-битных.

AMP или ASMP (от англ.: Asymmetric multiprocessing, рус.: Асимметричная многопроцессорная обработка или Асимметричное мультипроцессирование) — тип многопроцессорной обработки, который использовался до того, как была создана технология симметричного мультипроцессирования (SMP); также использовался как более дешевая альтернатива в системах, которые поддерживали SMP.

Снобо́л — язык программирования высокого уровня, разработанный в 1962—1967 годах и предназначенный преимущественно для обработки текстовых данных.

Защищённый режим (режим защищённой виртуальной адресации) — режим работы x86-совместимых процессоров. Частично был реализован уже в процессоре 80286, но там существенно отличался способ работы с памятью, так как процессоры ещё были 16-битными и не была реализована страничная организация памяти. Первая 32-битная реализация защищённого режима — процессор Intel 80386. Применяется в совместимых процессорах других производителей. Данный режим используется в современных многозадачных операционных системах.

Байт-код (байтко́д; англ. bytecode, также иногда p-код, p-code от portable code) — стандартное промежуточное представление, в которое может быть переведена компьютерная программа автоматическими средствами. По сравнению с исходным кодом, удобным для создания и чтения человеком, байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. В нём в явном виде закодированы типы, области видимости и другие конструкции. С технической точки зрения, байт-код представляет.

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

Виртуальная файловая система (англ. virtual file system — VFS) или виртуальный коммутатор файловой системы (англ. virtual filesystem switch) — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем. VFS может быть использована для доступа к локальным устройствам и файлам (fat32, ext4, ntfs), сетевым устройствам и файлам на них (nfs), а также к устройствам, не предназначенным для.

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.

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

Скретч (англ. Scratch, МФА:skræt͡ʃ) — визуальная событийно-ориентированная среда программирования, созданная для детей и подростков. Название произошло от слова scratching — техники, используемой хип-хоп-диджеями, которые крутят виниловые пластинки вперед-назад руками для того, чтобы смешивать музыкальные темы.

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

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

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

Разделяемая память (англ. Shared memory) является самым быстрым средством обмена данными между процессами.

Механизм копирования при записи (англ. Copy-On-Write, COW) используется для оптимизации многих процессов, происходящих в операционной системе, таких как, например, работа с оперативной памятью или файлами на диске (пример — ext3cow).

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

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

Ассе́мблер (от англ. assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

Систе́ма кома́нд (также набо́р команд) — соглашение о предоставляемых архитектурой средствах программирования, а именно.

Реальный режим (или режим реальных адресов; англ. real-address mode) — режим работы процессоров архитектуры x86, при котором используется сегментная адресация памяти (адрес ячейки памяти формируется из двух чисел: сдвинутого на 4 бита адреса начала сегмента и смещения ячейки от начала сегмента; любому процессу доступна вся память компьютера). Изначально режим не имел названия, был назван «реальным» только после создания процессоров 80286, поддерживающих режим, названный «защищённым» (режим назван.

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

Читайте также: