Какие виды языков программирования существуют
Типы языков программирования
- Переводы, 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/