VictorS
11.10.2006, 23:36
Вот, заняться мне нечем, решил узнать есть ли тут фанатики программирования. :) А заодно хочу просветить тех интересующихся, которые только в начале своего пути. :)
Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Каждый язык программирования может быть представлен в виде набора формальных спецификаций, определяющих его синтаксис и семантику. Эти спецификации обычно включают в себя описание:
Типов и структур данных
Операционную семантику (алгоритм вычисления конструкций языка)
Семантические конструкции языка
Библиотеки примитивов (например, инструкции ввода-вывода)
Философии, назначения и возможностей языка
Для многих широко распространенных языков программирования созданы международные комитеты по стандартизации, которые выполняют регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Компилируемые и интерпретируемые языки
Языки программирования делятся на два класса — компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) ее текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.
Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. А для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.
Классы языков программирования
Функциональные
Императивные
Процедурные
Языки векторного программирования
Аспектно-ориентированные
Декларативные
Языки динамического программирования
Учебные
Описания интерфейсов
Прототипные
Объектно-ориентированные
Рефлексивные
Языки логического программирования
Языки параллельного программирования
Сценарные, или скриптовые
Узкоспециализированные
Эзотерические
На данный момент самыми развивающимися являются обьектно-ориентированные языки программирования.
Какие языки использовал и использую я: Лого, QBASIC, Pascal, C, C++, Perl, JavaScript, PHP, *SQL, assembler x86, sh/bash/zsh (*nix shell), Java, LISP, C#. (Курсивом выделено то что используется в реальной работе.)
В планах изучить: Python, Ruby.
Если заинтересовали какие-то термины или просто хотите поболтать на эту тему, то спрашивайте. :) Только избавте меня от вопроса "а как написать программу, которая... ?" ;)
Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Каждый язык программирования может быть представлен в виде набора формальных спецификаций, определяющих его синтаксис и семантику. Эти спецификации обычно включают в себя описание:
Типов и структур данных
Операционную семантику (алгоритм вычисления конструкций языка)
Семантические конструкции языка
Библиотеки примитивов (например, инструкции ввода-вывода)
Философии, назначения и возможностей языка
Для многих широко распространенных языков программирования созданы международные комитеты по стандартизации, которые выполняют регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Компилируемые и интерпретируемые языки
Языки программирования делятся на два класса — компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) ее текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.
Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. А для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.
Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.
Классы языков программирования
Функциональные
Императивные
Процедурные
Языки векторного программирования
Аспектно-ориентированные
Декларативные
Языки динамического программирования
Учебные
Описания интерфейсов
Прототипные
Объектно-ориентированные
Рефлексивные
Языки логического программирования
Языки параллельного программирования
Сценарные, или скриптовые
Узкоспециализированные
Эзотерические
На данный момент самыми развивающимися являются обьектно-ориентированные языки программирования.
Какие языки использовал и использую я: Лого, QBASIC, Pascal, C, C++, Perl, JavaScript, PHP, *SQL, assembler x86, sh/bash/zsh (*nix shell), Java, LISP, C#. (Курсивом выделено то что используется в реальной работе.)
В планах изучить: Python, Ruby.
Если заинтересовали какие-то термины или просто хотите поболтать на эту тему, то спрашивайте. :) Только избавте меня от вопроса "а как написать программу, которая... ?" ;)