Oop Languages Comparison Essay

Programming languages are used for controlling the behavior of a machine (often a computer). Like natural languages, programming languages conform to rules for syntax and semantics.

There are thousands of programming languages[1] and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmers may use dozens of languages in a career.

Most programming languages are not standardized by an international (or national) standard, even widely used ones, such as Perl or Standard ML (despite the name). Notable standardized programming languages include ALGOL, C, C++, JavaScript (under the name ECMAScript), Smalltalk, Prolog, Common Lisp, Scheme (IEEE standard), Ada, Fortran, COBOL, SQL, HTML, XQuery and XML.

General comparison[edit]

The following table compares general and technical information for a selection of commonly used programming languages. See the individual languages' articles for further information. Please note that the following table may be missing some information.

LanguageIntended useImperativeObject-orientedFunctionalProceduralGenericReflectiveEvent-drivenOther paradigm(s)Standardized?
ActionScript 3.0Application, client-side, webYesYesYesYes1996, ECMA
AdaApplication, embedded, realtime, systemYesYes[2]Yes[3]Yes[4]concurrent,[5]distributed,[6]1983, 2005, 2012, ANSI, ISO, GOST 27831-88[7]
AldorHighly domain-specific, symbolic computingYesYesYesNo
ALGOL 58ApplicationYesNo
ALGOL 60ApplicationYes1960, IFIP WG 2.1, ISO[8]
ALGOL 68ApplicationYesconcurrent1968, IFIP WG 2.1, GOST 27974-88,[9]
Ateji PXParallel applicationYespi calculusNo
APLApplication, data processingarray-oriented, tacit1989, ISO
Assembly languageGeneralYesany, syntax is usually highly specific, related to the target processorNo
AutoHotkeyGUI automation (macros), highly domain-specificYesNo
AutoItGUI automation (macros), highly domain-specificYesYesYesNo
BashShell, scriptingYesYes
BASICApplication, educationYesYes1983, ANSI, ISO, ECMA
BBjApplication, business, webYesYesNo
BeanShellApplication, scriptingYesYesYesYesIn progress, JCP[10]
BitCSystemYesYesNo
BLISSSystemYesNo
BlitzMaxApplication, gameYesYesYesYesNo
BlueEducationYesYesYesNo
BooApplicationNo
Brodomain-specific, applicationYesYesNo
CApplication, system,[11] general purpose, low-level operationsYesYes1989, ANSI C89, ISO C90, ISO C99, ISO C11[12]
C++Application, systemYesYesYesYesYes1998, ISO/IEC 1998, ISO/IEC 2003, ISO/IEC 2011,ISO/IEC 2014[13]
C#Application, RAD, business, client-side, general, server-side, webYesYesYes[14]YesYesYesYesstructured, concurrent2000, ECMA, ISO[15]
ClarionGeneral, business, webYesYesYes[16]Unknown
CleanGeneralYesYesNo
ClojureGeneralYesconcurrentNo
CLUGeneralYesYesYesYesNo
COBOLApplication, businessYesYesYesANSI X3.23 1968, 1974, 1985; ISO/IEC 1989:1985, 2002, 2014
CobraApplication, business, general, webYesYesYesYesYesNo
ColdFusion (CFML)WebYesYesNo
Common LispGeneralYesYesYesYesYesYesYesextensible syntax, syntactic macros, multiple dispatch1994, ANSI
COMAL 80EducationYesYesNo
CrystalGeneral purposeYesYes[17]YesYesalpha stage[18]No
CythonApplication, general, numerical computingYesYesYesYesaspect-orientedNo
DApplication, systemYesYesYesYesYesYesgenerative, concurrentNo
DartApplication, web, server-side, mobile, IoTYesYesYesstructuredEcma-408 standard
DylanApplicationYesYesNo
EiffelGeneral, application, business, client-side, server-side, web (EWF)YesYesYes[19][20]YesYes Erl-GYes AgentsdistributedSCOOP, Void-safe2005, ECMA, ISO[21]
ElixirApplication, distributedYesYesconcurrent, distributedNo
ErlangApplication, distributedYesYesconcurrent, distributedNo
EuphoriaApplicationYesYesNo
FactorGeneralYescan be viewed asYesYesstack-orientedNo
FalconGeneral, applicationYesYesYesprototype OOP, message oriented, tabular programmingNo
FPYesNo
F#ApplicationYesYesYesYesNo
ForthGeneralYescan be viewed asstack-oriented1994, ANSI
FortranApplication, numerical computingYesYesYesYes1966, ANSI 66, ANSI 77, MIL-STD-1753, ISO 90, ISO 95, ISO 2003, ISO/IEC 1539-1:2010 (2008)
FreeBASICApplication, numerical computingYesYesYesYesNo
G2Application, inference, expert systemYesYesYescommon graphical development and runtime environmentNo
GambasApplicationYesYesYesNo
Game Maker LanguageApplication, gamesYesYesYesNo
GLBasicApplication, gamesYesYesYessimple object-orientedNo
GoApplication, web, server-sideYesYes[22]YesYesYesYesconcurrentDe facto standard via Go Language Specification
GosuApplication, general, scripting, webYesYesYesYesNo
GraphTalkApplicationYeslogicNo
GroovyApplication, general, scripting, webYesYesYesaspect-orientedIn progress, JCP[23]
HarbourApplication, business, data processing, general, webYesYesYesYesYesYesdeclarativeNo
HaskellApplicationYesYeslazy evaluation2010, Haskell 2010[24]
HaxeApplication, general, webYesYesYesYesYesNo
HyperNextApplication, educationYesYesweakly typedNo
HyperTalkApplication, RAD, generalYesYesweakly typedUnknown
IoApplication, host-driven scriptingYesYesNo
IPLGeneralYesUnknown
ISLISPGeneralYesYesYesYes1997, ISO
JData processingarray-oriented, function-level, tacitNo
JADEApplication, distributedYesYesNo
JavaApplication, business, client-side, general, mobile development, server-side, webYesYesYesYesYesYesYesconcurrentDe facto standard via Java Language Specification
JuliaGeneral, technical computingYesYesYesYesYesYesmultiple dispatch, meta, scalar and array-oriented, parallel, concurrent, distributed ("cloud")No
JavaScriptClient-side, server-side, webYesYesYesYesYesprototype-based1997, ECMA
JoyResearchYesstack-orientedNo
KData processing, businessarray-oriented, tacitUnknown
KotlinApplication, mobile development, server-side, client-side, webYesYesYesYesYes[25]No
LabVIEW (G)Application, industrial instrumentation-automationYesYesYesYesdataflow, visualNo
LispGeneralYesUnknown
LiveCodeApplication, RAD, generalYesYesweakly typedNo
LogtalkArtificial intelligence, applicationYesYesYeslogicNo
LSLVirtual worlds content scripting and animationYesYesYesScripts exist in in-world objectsYes[26]
LuaApplication, embedded scriptingYesYes[27]YesYesYesaspect-orientedNo[28]
MapleSymbolic computation, numerical computingYesYesYesYesdistributedNo
MathematicaSymbolic languageYesYesYesYeslogic, distributedNo
MATLABHighly domain-specific, numerical computingYesYesYesNo
Modula-2Application, systemYesYes1996, ISO[29]
Modula-3ApplicationYesYesYesNo
MUMPS (M)Application, databasesYesYesconcurrent, multi-user, NoSQL, transaction processing1977, ANSI
NimApplication, general, web, scripting, systemYesYesYesYesYesYesmultiple dispatch, Concurrent, metaNo
OberonApplication, systemYesYesNo
Object PascalApplication, general, mobile app, webYesYesYesYesYesYesstructuredNo
Objective-CApplication, generalYesYesYesconcurrentNo
OCamlApplicationYesYesYesYesNo
OccamGeneralYesYesconcurrent, process-orientedNo
OpaWeb applicationsYesYesYesdistributedNo
OxygeneApplicationYesYesYesNo
Oz-MozartApplication, distribution, educationYesYesYesconcurrent, logicNo
PascalApplication, educationYesYes1983, ISO[30]
PerlApplication, scripting, text processing, WebYesYesYesYesYesYesNo
PHPServer-side, web application, webYesYes[31]Yes[32]YesYes"De facto" standard via language specification and Requests for Comments (RFCs)
PL/IApplicationYesYesYes1969, ECMA-50 (1976)
PlusApplication, system developmentYesYesNo
PowerShellAdministration, application, general, scriptingYesYesYesYesYespipelineNo
PrologApplication, artificial intelligencelogic1995, ISO
PureBasicApplicationYesNo
PythonApplication, general, web, scripting, artificial intelligence, scientific computingYesYesYesYesYesaspect-oriented"De facto" standard via Python Enhancement Proposals (PEPs)
RApplication, statisticsYesYesYesYesYesNo
RacketEducation, general, scriptingYesYesYesYesmodular, logic, metaNo
REALbasicApplicationYesUnknown
REBOLDistributedYesYesYesdialectedNo
RPGApplication, systemYesYesNo
RubyApplication, scripting, webYesYesYesYesaspect-oriented2011(JIS X 3017), 2012(ISO/IEC 30170)
RustApplication, systemYesYes[33]YesYesYesconcurrentNo
SApplication, statisticsYesYesYesYesNo
S-LangApplication, numerical, scriptingYesYesNo
ScalaApplication, distributed, webYesYesYesYesYesYesDe facto standard via Scala Language Specification (SLS)
SchemeEducation, generalYes1998, R6RS
Seed7Application, general, scripting, webYesYesYesYesmulti-paradigm, extensible, structuredNo
SimulaEducation, generalYesYesYesdiscrete event simulation, multi-threaded (quasi-parallel) program execution1968
Small BasicApplication, education, gamesYesYescomponent-orientedNo
SmalltalkApplication, general, business, artificial intelligence, education, webYesYesYesYesYesYesconcurrent, declarative1998, [ANSI
SNOBOLText processingUnknown
Standard MLApplicationYesYesYes1997, SML '97[34]
SwiftApplication, generalYesYesYesYesYesYesconcurrentNo
TclApplication, scripting, webYesYesYesYesYesYesNo
Visual BasicApplication, RAD, education, business, general, (Includes VBA), office automationYesYesYesYescomponent-orientedNo
Visual Basic .NETApplication, RAD, education, web, business, generalYesYesYesYesYesYesYesstructured, concurrentNo
Visual FoxProApplicationYesdata-centric, logicNo
Visual PrologApplicationYesYesYesYesdeclarative, logicNo
Wolfram LanguageSymbolic languageYesYesYesYeslogic, distributedNo
XLYesYesconcept programmingNo
XojoApplication, RAD, general, webYesYesYesYesYesNo
XPath/XQueryDatabases, data processing, scriptingYestree-orientedW3C 1999 XPath 1, 2010 XQuery 1, 2014 XPath/XQuery 3.0
LanguageIntended useImperativeObject-orientedFunctionalProceduralGenericReflectiveEvent-drivenOther paradigm(s)Standardized?

Type systems[edit]

Main article: Comparison of programming languages by type system

Failsafe I/O and system calls[edit]

Most programming languages will print an error message or throw an exception if an input/output operation or other system call (e.g., chmod, kill

Abstract

Object-oriented programming has become a widely used, important programming paradigm that is supported in many different languages. C++ has become the most widely used object-oriented language and many C++ programmers are unfamiliar with the different approaches taken by other languages in the paradigm. This paper is intended as an introduction to a broad range of ideas in object-oriented programming. Specifically, we introduce four modern programming languages that support object-oriented programming (Oberon-2, Modula-3, Sather and Self), and show how a simple application is coded in these languages. While each of these programming languages provide support for inheritance, dynamic dispatch, code reuse, and information hiding, they do so in very different ways and with varying levels of efficiency and simplicity. The use of a simple example, based on a common programming problem, facilitates our comparison. We have coded the application in all of these languages, including C++, and we compare the compile times, object code sizes, and run times of the available implementations. Implementations of all the languages compared and all of the programs we measure are available on the Internet. Ultimately, our goal is to encourage and facilitate programmers in understanding and exploring a variety of object-oriented programming languages.

Categories: 1

0 Replies to “Oop Languages Comparison Essay”

Leave a comment

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *