1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Типы языков программирования

    Переводы, 9 марта 2015 в 16:37

Для погружения в программирование нужно всего 3 вещи:

  • Решить, с какого языка/технологии вы хотите начать.
  • Решить, на каком ресурсе вы хотите обучаться.
  • Выделить время на само программирование.

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

Некоторые люди начинают с относительно низкоуровневого программирования на C и C++. Другие выбирают более традиционный путь, изучая Java или C#. Равно как есть и те, кто начинает с высокоуровневых или скриптовых языков наподобие Python, Ruby или JavaScript. У таких подходов есть много преимуществ, однако есть и другие пути, просто эти самые популярные.

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

Низкий уровень

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

Примеры: C, C++, Assembler.

+ Полный контроль практически надо всем; вы используете только то, что вам нужно.

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

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

– Управлять памятью может быстро стать очень сложным.

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

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

+ Мотивирует думать об эффективности.

– Требуется предварительная оптимизация.

+ Мотивирует думать об архитектуре наперёд.

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

– Относительно бедная стандартная библиотека означает, что вы должны часто полагаться на третьих лиц или изобретать колесо.

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

Средний уровень

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

+ Управлять памятью необязательно, но при желании вы можете это делать самостоятельно.

– До сих пор нужно понимать, как устроена память и как работает сборка мусора, но язык этому обучению не способствует.

+ Богатые стандартные библиотеки.

– Многие абстракции мешают новичку в освоении концепций, т.к. непонятно, почему они созданы именно таким образом.

+ Компилируется в байт-код, упрощающий взаимодействие с другими языками.

– Байт-код требует установленной среды выполнения.

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

Высокий уровень

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

Примеры: Python, Ruby, JavaScript, Common Lisp.

+ Абстракции делают сложные задачи простыми.

– Надстройки для реализации абстракций снижают производительность.

+ В целом всё просто и интуитивно, даже при внесении изменений.

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

+ Сравнительно большие стандартные библиотеки означают, что то, что вы хотите сделать, скорее всего уже реализовано и доступно.

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

+ Меньше вставок стандартного кода (boilerplate) – синтаксис значительно проще.

– Динамическая типизация усложняет поиск ошибок без запуска кода.

Заключение

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

Список языков программирования

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

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

Языки программирования, имеющие название в кириллице

  • A+
  • A++
  • A# .NET
  • A# (Axiom)
  • A-0
  • ABAP
  • ABC
  • ABC ALGOL
  • ABLE
  • ABSET
  • ABSYS
  • ACC
  • Accent
  • ActionScript
  • ASP
  • Ace DASL
  • ACT-III
  • AppleScript
  • Amiga E
  • AMOS
  • ARC
  • AutoHotkey
  • AutoIt
  • AWK
  • AWL
  • Bistro
  • BLISS
  • Blitz Basic
  • Blue
  • Boo
  • Bourne shell
  • BPEL — Business Process Execution Language
  • Brainfuck
  • BUGSYS
  • BuildProfessional
  • BYOND
  • C—
  • C++ — ISO/IEC 14882
  • C# — ISO/IEC 23270
  • C shell (csh)
  • Caché ObjectScript — См. также Caché Basic
  • Caml
  • Cat
  • Cayenne
  • Cecil
  • Cesil
  • CFML
  • Cg
  • Ch interpreter (C/C++ интерпретатор Ch)
  • Chapel
  • CHAIN
  • Charity
  • Chef
  • CHILL
  • CHIP-8
  • chomski
  • Chrome
  • ChucK
  • Cilk
  • CICS
  • CL
  • Clarion
  • Clean
  • Clipper
  • CLIST
  • Clojure
  • CLU
  • CMS-2
  • CobolScript
  • Cobra
  • CODE
  • ColdFusion
  • COMAL
  • Common Intermediate Language (CIL)
  • Common Lisp
  • COMIT
  • Concurrent Clean
  • Constraint Handling Rules
  • Converge
  • CORAL66
  • CorVision
  • COWSEL
  • CPL
  • CSP
  • Csound
  • Curl
  • Curry
  • Cyclone
  • D
  • Dao
  • DASL — Distributed Application Specification Language
  • DASL — Datapoint’s Advanced Systems Language
  • DarkBASIC
  • DarkBASIC Professional
  • Dataflex
  • Datalog
  • dBASE
  • dc
  • Deesel (прежний G)
  • Delphi
  • Dialect
  • DinkC
  • DCL
  • Dialog Manager
  • DIBOL
  • DL/I
  • Dylan
  • Dart
  • E
  • Ease
  • EASY
  • Easy PL/I
  • EASYTRIEVE PLUS
  • ECMAScript
  • Edinburgh IMP
  • Einstein
  • Elan
  • Elena
  • Emacs Lisp
  • EGL Programming Language (EGL)
  • Epigram
  • Erlang
  • Escapade — программирование сервера
  • Esterel
  • Euclid
  • Euphoria
  • Euler
  • EXEC
  • EXEC2
  • F
  • F#
  • Factor
  • Falcon
  • Fan
  • Felix
  • Ferite
  • F#
  • Fjölnir
  • FL
  • FLOW-MATIC
  • FOCUS
  • FOIL
  • FORMAC
  • Formula language
  • Forth
  • Fortran — ISO/IEC 1539
  • Fortress
  • FoxPro
  • FP
  • Franz Lisp
  • Frink
  • F-Script
  • Fuxi Programming Language
  • GM
  • GAP
  • Gambas
  • Game Maker Language
  • G-code
  • General Algebraic Modeling System
  • Generic Java
  • Gentee
  • Gibiane
  • G (LabVIEW)
  • Gödel
  • Godiva
  • Go
  • GOTRAN (см. IBM 1620)
  • GPSS
  • GraphTalk
  • GRASS
  • Green
  • Groovy
  • HAL/S
  • HAScript
  • Haskell
  • HaXe
  • High Level Assembly
  • Hop
  • html (не является языком программирования, есть интерпретатор)
  • HyperTalk
  • IBM Basic assembly language
  • IBM RPG
  • ICI
  • Icon
  • IDL
  • Idle
  • IMP
  • Inform
  • Information Processing Language (IPL)
  • Informix-4GL
  • Io
  • IPTSCRAE
  • Interactive System Productivity Facility
  • J
  • J#
  • J++
  • JADE
  • Jal
  • Janus
  • JASS
  • Java
  • JavaScript
  • JCL
  • Join Java
  • JOSS
  • Joule
  • JOVIAL
  • Joy
  • JScript
  • JSP
  • K
  • KEE
  • Kiev
  • Korn Shell
  • Kite
  • KRC
  • KRYPTON
  • L
  • LabVIEW
  • Ladder
  • Lagoona
  • LANSA
  • Lasso
  • Lava
  • Leda
  • Lead
  • Leadwerks Script
  • Legoscript
  • Lexico
  • Liberty BASIC
  • Limbo
  • Limnor
  • LINC
  • Lingo
  • LISA (Language for Instruction Set Architecture)
  • LISP
  • Lisaac
  • LOLCODE
  • LPC
  • LSL
  • LSE
  • Lua
  • Lucid
  • Lush
  • Lustre
  • LYaPAS
  • M4
  • MacRuby
  • MAD
  • Magik
  • Magma
  • MapBasic
  • Maple
  • MAPPER (Unisys/Sperry) сейчас часть BIS
  • MARK-IV
  • Mary
  • Mathematica
  • MATLAB
  • Maxima (см. также Macsyma)
  • MaxScript внутренний язык 3D Studio Max
  • Maya (MEL)
  • Mercury
  • Mesa
  • Metalua
  • Michigan Algorithm Decoder см. MAD programming language
  • Microcode
  • MicroScript
  • MillScript
  • MIMIC
  • Mindscript
  • MIVA Script
  • ML
  • Moby
  • Model 204 User Language
  • Modula
  • Mondrian
  • Mortran
  • Moto
  • MOUSE
  • MSIL — отклонённое название для Common Intermediate Language
  • MSL
  • MUMPS
  • Napier88
  • Natural
  • NEAT
  • Nemerle
  • NESL
  • Net.Data
  • NewLISP
  • NewtonScript
  • NGL
  • Nial
  • Lego Mindstorms NXT (NXT-G)
  • Nice
  • Nickle
  • Noop
  • Nosica
  • NQC
  • NXC
  • Nu
  • o:XML
  • Object Lisp
  • ObjectLOGO
  • Object Pascal
  • Objective-C
  • Objective-J
  • OCaml (Objective Caml)
  • Obliq
  • Occam
  • occam-π
  • Octave
  • OmniMark
  • Opal
  • Open programming language
  • OPS5
  • ORCA/Modula-2
  • Organiser Programming Language (OPL) — сравн. Psion Organiser
  • Oxygene
  • Oz
  • P′′
  • Parallel C#
  • PARI/GP
  • PureBasic
  • Parser
  • Pawn
  • PBASIC
  • PCASTL
  • PEARL
  • Perl Data Language
  • PHP
  • Phrogram
  • Pico
  • Piet
  • Pike
  • PIKT
  • PILOT
  • Pizza
  • PL/0
  • PL/8
  • PL/B
  • PL/C
  • PL/M
  • PL/P
  • PL/SQL
  • PLEXIL
  • Pliant
  • PPL
  • POP-11
  • PostScript
  • PowerBASIC
  • Processing
  • Prograph
  • Progress 4GL
  • Turbo Prolog
  • Promela
  • Protheus
  • PRO-IV
  • ProvideX
  • Python
  • Q
  • Qi
  • R
  • R++
  • Ratfiv
  • Ratfor
  • RBScript
  • rc
  • REBOL
  • Redcode
  • Reia
  • Reilly
  • Revolution
  • REXX
  • Rlab
  • Robot Scripting Language (RSL)
  • RPG
  • RPL
  • Ruby
  • REALBasic
  • S
  • S2
  • S-PLUS
  • S-Lang
  • SAIL
  • SAM76
  • SAS
  • Sather
  • Scala
  • Scheme
  • Scilab
  • Script.NET
  • Scriptol
  • Sed
  • Self
  • Shift Script
  • SiMPLE
  • SIMSCRIPT
  • SISAL
  • Slate
  • SLIP
  • SMALL
  • Small Basic
  • Smalltalk
    • SPITBOL
  • Snowball
  • SNUSP
  • SPARK
  • Spice
  • SPIN
  • SP/k
  • SP-Forth
  • SPS (1620)
  • Squeak
  • Squirrel
  • SR
  • SSL
  • Standard ML
  • SBL Superbase Basic Langauge
  • SuperCollider
  • Subtext
  • Suneido
  • SYMPL
  • SyncCharts
  • SystemVerilog
  • T
  • TACL
  • TACPOL
  • TADS
  • Tea
  • TIE
  • Transaction Application Language
  • Tcl
  • Transact-SQL
  • teco
  • TELCOMP
  • Telon
  • Tex — Text Executive Programming Language
  • TI-BASIC
  • Tom
  • TOM
  • Topspeed
  • tpu
  • Trac
  • TTCN
  • Turbo Pascal
  • Turing
  • TUTOR
  • TXL
  • Ubercode
  • Unicon
  • Uniface
  • Unix shell
  • Unlambda
  • UnrealScript
  • Vala
  • VBA
  • VBScript
  • VDM++, VDM-SL
  • Verilog
  • VHDL
  • Visual Assembler
  • Visual Basic
  • Visual Basic.NET
  • Visual DataFlex
  • Visual DialogScript
  • Visual FoxPro
  • Visual J++
  • Visual Objects
  • Vvvv
  • VX-REXX
  • Water
  • WATFIV, WATFOR
  • WebQL
  • Whitespace
  • Winbatch
  • WinDev
  • Windows PowerShell
  • X++
  • X10
  • XBL
  • xHarbour
  • XL
  • XOTcl
  • XPL
  • XPL0
  • XQuery
  • XSLT — см. XPath
  • Yorick
  • Z
  • Zonnon
  • ZOPL
  • ZPL
  • ZZT-oop
Читать еще:  Какой климат в Междуречье

Примечания

См. также

Wikimedia Foundation . 2010 .

Смотреть что такое «Список языков программирования» в других словарях:

Список языков программирования по категориям — Списки языков программирования По категориям Хронологический Генеалогический Приведён список языков программирования, сгруппированных по категориям. Некоторые языки попали в несколько категорий. Содержание … Википедия

Генеалогический список языков программирования — Списки языков программирования По категориям Хронологический Генеалогический Приведён генеалогический список языков программирования. Языки классифицируются в соответствии с предшествующими языками, которые оказали сильное влияние на формирование … Википедия

Список языков описания пользовательских интерфейсов — Содержание 1 По производителю или платформе 1.1 Flash 1.2 Java 1.3 Microsof … Википедия

Хронология языков программирования — Списки языков программирования По категориям Хронологический Генеалогический Хронология языков программирования упорядоченный в хронологическом порядке список языков программирования. Содержание … Википедия

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

Список .NET-языков — Эта страница информационный список. Языки программирования .NET (Языки с поддержкой CLI или CLI языки) компьютерные языки программирования, используемые для создания библиотек и программ, удовлетворяющих требованиям Comm … Википедия

Список текстовых редакторов — Основная статья: Текстовый редактор Список текстовых редакторов Windows и таблица сравнения. Содержание 1 Таблица сравнения известных текстовых редакторов … Википедия

Список программ, написанных на C Sharp — Язык программирования C# один из наиболее популярных языков программирования на сегодняшний день. Paint.NET открытое программное обеспечение для обработки растровой графики SharpDevelop открытая IDE для языков C#, Visual Basic .NET (VB.NET), Boo … Википедия

Список пакетов GNU — Это список программного обеспечения, разрабатываемого Free Software Foundation как часть проекта GNU UNIX подобной операционной системы состоящей целиком из свободного программного обеспечения. Большая часть из этих пакетов также… … Википедия

Список дистрибутивов Linux — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей … Википедия

Виды языков программирования

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

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

Языки низкого уровня (law-level languages) — это средство записи инструкций для компьютера на аппаратном языке, т.е. в машинных кодах (в виде последовательности нулей и единиц). Языки низкого уровня жестко ориентированы на определенный тип аппаратуры (систему команд процессора, у каждого типа процессоров — свой машинный код).

Языки высокого уровня (high-level languages) – это языки программирования, позволяющие записывать программу в удобном для человека виде. Данные языки ориентированы не на систему команд того или иного процессора, а на систему операторов (команд), характерных для записи определенного класса алгоритмов.

Языки высокого уровня проще в обращении, поскольку их задача состоит в обслуживании потребностей программиста, а не в выявлении возможностей компьютера. Написанные на этих языках программы следует перекодировать — перевести на машинный язык (machine code), так, чтобы до запуска программ компьютер мог их понять. Поэтому в системы программирования на ЯВУ входит либо интерпретатор (interpreter) языка, либо компилятор (compiler).

Читать еще:  Почему люди постоянно врут

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

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

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

Проведём небольшой исторический экскурс (от машинных кодов до языков программирования высокого уровня).

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

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

Пример 1: Отрывок кода на языке ассемблера

Данный пример демонстрирует язык ассемблера. Этот отрывок кода помещает синий символ восклицательного знака в текущую позицию курсора на экран. В регистры процессора заносится номер функции, код символа, цвет и номер видеостраницы, а затем вызывается прерывание BIOS (Basic Input-Output System — Базовая Система Ввода Вывода) отвечающее за вывод изображения на экран. Это, несомненно, гораздо понятнее и проще машинных кодов, но чтобы доказать многословность и сложность, которая все ещё присуща языку ассемблера, достаточно привести пример, выполняющий то же действие, но записанный на языке высокого уровня, например Паскале:

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

Языки высокого уровня были следующей ступенью развития средств программирования. Существует огромное количество языков программирования: от 2000 до 4000. Языки высокого уровня подразделяются на группы по типу парадигмы, которую поддерживают. Существуют императивные языки, функциональные языки, логические языки, объектно-ориентированные языки, а также многие другие. Итак, с появлением языков высокого уровня программы стали выглядеть более понятно.

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

В операционной системе Windows фирмы Microsoft на практике реализована концепция объектно-ориентированного программирования. Windows является графической системой. В ней реализован стандартный пользовательский интерфейс, доступный каждой прикладной программе через вызов функций Windows-API, представляющие собой набор классов описывающих объекты системы, например, кнопку, или поле ввода. Данный подход имеет ряд преимуществ. При использовании обычной текстовой операционной системы, например, MS-DOS разработчику приходилось каждый раз программировать пользовательский интерфейс с нуля. Задача значительно усложнялась, если приходилось проектировать графический интерфейс с пользователем. Так как программа MS-DOS работает непосредственно с аппаратурой компьютера (в частности, с видеоконтроллером), она должна учитывать наличие у потребителей большого количества самой разнообразной и несовместимой аппаратуры. Windows дисциплинирует разработчика приложений, предлагая стандарт на диалоговый интерфейс с пользователем. Если приложение будет соответствовать стандарту, на его изучение и освоение со стороны пользователя будет затрачено минимальное время.

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

Несмотря на очевидную простоту и удобство программирование для Windows считается довольно сложным. Одновременно с увеличением возможностей увеличилась сложность и громоздкость кода программы. Значительную часть времени стало занимать проектирование и описание в программе ее интерфейса, внешнего вида. В связи с этим были созданы Системы Быстрого Проектирования Приложений — RAD. Рассмотрим такую систему на примере, пожалуй, самого популярного пакета MS Visual C++.

Visual C++ представляет собой сложный инструмент для создания приложений Windows. Несмотря на то, что сложность программ увеличилась, интегрированная среда MS Developer Studio пакета Visual C++ позволяет в считанные секунды создать вполне работоспособное приложение Windows. Включенная в состав VC++ библиотека классов Microsoft Foudation Classes (MFC) уже стала фактическим стандартом для разработчиков компиляторов на языке С++. Визуальные средства разработки интерфейса превращают это сложное занятие в увлекательную игру. VC++ не просто компилятор программного кода — это генератор программного кода. С его помощью можно в считанные минуты создать приложение Windows из готовых фрагментов программного кода. Генератор приложений формирует прототип вполне работоспособной программы.

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

Читать еще:  Почему Билан лысый

Другие виды языков программирования используются для решения более узких задач (например, язык запросов (query language); генератор программ печати отчетов (report program generator)).

Основные понятия программирования

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

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

— минимальные требования к компьютеру, на котором работает программа.

— ясность входных и выходных данных и простота программы.

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

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

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

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

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

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

for (int I=0; I=10; I++) printf(Интерация цикла N%d,I);

if (x0) printf(X-меньше нуля);

case 1:printf(выбран первый пункт);

case 2:printf(выбран второй пункт);

Пример 2: Оператор цикла, условный оператор и оператор выбора на языке С

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

Основная идея объектно-ориентированных языков в том, что программисту дается инструмент для создания своего типа данных — объекта или класса.

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

Основными отличительными свойствами классов являются:

— инкапсуляция — объединение полей данных с функциями-методами, работающими с этими данными;

— наследование — задание класса, затем использование его для построения иерархии порожденных классов с наследованием доступа каждого из порожденных классов к коду и данным предка;

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

Допустим, наши практические интересы лежат в области построений изображений звездных тел в двумерной проекции. Очевидно, что основой всякого изображения является положение (позиция) отдельного элемента на экране, описываемая координатами X и Y. Что можно сделать с парой координат? Во-первых, может потребоваться задать значения координат. Во-вторых, нам может потребоваться знание фактических значений координат. При обычном подходе нам необходимо было бы объявить структуру данных описывающую координаты, а также функции, получающие эту структуру в качестве параметра. Логично было бы связать данные и функции в одну структуру. Объектно-ориентированный язык программирования предоставляет для этого мощный и удобный инструмент.

void Init(int CoordX, int CoordY);

Эта структура лишь объявляет класс, реализация методов обычно выполняется после. Теперь рассмотрим объект звезду с координатами X и Y. Ее можно сделать видимой или невидимой, ей можно задать цвет, ее можно переместить. Заметим, что поля X, Y и методы GetX, GetY класса position подходят и нашему объекту — звезде. Объектно-ориентированный язык предоставляет возможность учесть эту ситуацию. Новый класс следует считать порожденным от класса position.

class star : position<

unsigned int Color;

void Init(int, int, int);

void Move(int, int);

Класс star теперь наследует свойства класса position. Поля X, Y явно не заданы в star, но star ими обладает благодаря наследованию.

Статьи к прочтению:

Языки программирования — просто о сложном

Похожие статьи:

Глава 5. ЯЗЫКИ ПРОГРАМММИРОВАНИЯ Эволюция языков программирования Электронно-вычислительные машины первого поколения находили свое применение (как…

ЯЗЫКИ ПРОГРАМИРОВАНИЯ Число когда-либо разработанных языков программирования вместе с их модификациями в настоящее время достигает трех тысяч, однако…

Источники:

http://tproger.ru/translations/programming-languages-types/
http://dic.academic.ru/dic.nsf/ruwiki/101221
http://csaa.ru/vidy-jazykov-programmirovanija/

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector