High-Level Programming Language - Wikipedia, The Free Encyclopedia

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

4/29/2015

HighlevelprogramminglanguageWikipedia,thefreeencyclopedia

Highlevelprogramminglanguage
FromWikipedia,thefreeencyclopedia

Incomputerscience,ahighlevelprogramminglanguageisaprogramminglanguagewithstrong
abstractionfromthedetailsofthecomputer.Incomparisontolowlevelprogramminglanguages,itmay
usenaturallanguageelements,beeasiertouse,ormayautomate(orevenhideentirely)significantareasof
computingsystems(e.g.memorymanagement),makingtheprocessofdevelopingaprogramsimplerand
moreunderstandablerelativetoalowerlevellanguage.Theamountofabstractionprovideddefineshow
"highlevel"aprogramminglanguageis.[1]
Inthe1960s,highlevelprogramminglanguagesusingacompilerwerecommonlycalledautocodes.[2]
ExamplesofautocodesareCOBOLandFortran.[3]
ThefirsthighlevelprogramminglanguagedesignedforcomputerswasPlankalkl,createdbyKonrad
Zuse.[4]However,itwasnotimplementedinhistime,andhisoriginalcontributionswere(duetoWorld
WarII)largelyisolatedfromotherdevelopments,althoughitinfluencedHeinzRutishauser'slanguage
"Superplan"(andtosomedegreealsoAlgol).ThefirstreallywidespreadhighlevellanguagewasFortran,a
machineindependentdevelopmentofIBM'searlierAutocodesystems.Algol,definedin1958and1960,by
committeesofEuropeanandAmericancomputerscientists,introducedrecursionaswellasnestedfunctions
underlexicalscope.Itwasalsothefirstlanguagewithacleardistinctionbetweenvalueandname
parametersandtheircorrespondingsemantics.[5]Algolalsointroducedseveralstructuredprogramming
concepts,suchasthewhiledoandifthenelseconstructsanditssyntaxwasthefirsttobedescribedbya
formalmethod,calledBNF,forBackusNaurform.DuringroughlythesameperiodCobolintroduced
records(alsocalledstructs)andLispintroducedafullygenerallambdaabstractioninaprogramming
languageforthefirsttime.

Contents
1Features
2Abstractionpenalty
3Relativemeaning
4Executionmodels
5Highlevellanguagecomputerarchitecture
6Seealso
7References
8Externallinks

Features
"Highlevellanguage"referstothehigherlevelofabstractionfrommachinelanguage.Ratherthandealing
withregisters,memoryaddressesandcallstacks,highlevellanguagesdealwithvariables,arrays,objects,
complexarithmeticorbooleanexpressions,subroutinesandfunctions,loops,threads,locks,andother
abstractcomputerscienceconcepts,withafocusonusabilityoveroptimalprogramefficiency.Unlikelow
http://en.wikipedia.org/wiki/Highlevel_programming_language

1/5

4/29/2015

HighlevelprogramminglanguageWikipedia,thefreeencyclopedia

levelassemblylanguages,highlevellanguageshavefew,ifany,languageelementsthattranslatedirectly
intoamachine'snativeopcodes.Otherfeatures,suchasstringhandlingroutines,objectorientedlanguage
features,andfileinput/output,mayalsobepresent.

Abstractionpenalty
Whilehighlevellanguagesareintendedtomakecomplexprogrammingsimpler,lowlevellanguagesoften
producemoreefficientcode.Abstractionpenaltyistheborderthatpreventshighlevelprogramming
techniquesfrombeingappliedinsituationswherecomputationalresourcesarelimited.Highlevel
programmingexhibitsfeatureslikemoregenericdatastructures,runtimeinterpretation,andintermediate
codefileswhichoftenresultinslowerexecutionspeed,highermemoryconsumption,andlargerbinary
programsize.[6][7][8]Forthisreason,codewhichneedstorunparticularlyquicklyandefficientlymay
requiretheuseofalowerlevellanguage,evenifahigherlevellanguagewouldmakethecodingeasier.In
manycases,criticalportionsofaprogrammostlyinahighlevellanguagecanbehandcodedinassembly
language,leadingtoamuchfasterormoreefficientoptimisedprogram.
However,withthegrowingcomplexityofmodernmicroprocessorarchitectures,welldesignedcompilers
forhighlevellanguagesfrequentlyproducecodecomparableinefficiencytowhatmostlowlevel
programmerscanproducebyhand,andthehigherabstractionmayallowformorepowerfultechniques
providingbetteroverallresultsthantheirlowlevelcounterpartsinparticularsettings.[9]Highlevel
languagesaredesignedindependentofstructureofaspecificcomputer.Thisfacilitatesexecutingaprogram
writteninsuchalanguageondifferentcomputers.

Relativemeaning
ExamplesofpopularhighlevelprogramminglanguagestodaymayincludePython,VisualBasic,Delphi,
Perl,PHP,ECMAScript,Rubyandmanyothers.
Thetermshighlevelandlowlevelareinherentlyrelative.Somedecadesago,theClanguage,andsimilar
languages,weremostoftenconsidered"highlevel",asitsupportedconceptssuchasexpressionevaluation,
parameterisedrecursivefunctions,anddatatypesandstructures,whileassemblylanguagewasconsidered
"lowlevel".Today,manyprogrammersmightrefertoCaslowlevel,asitlacksalargeruntimesystem(no
garbagecollection,etc.),basicallysupportsonlyscalaroperations,andprovidesdirectmemoryaddressing.
It,therefore,readilyblendswithassemblylanguageandthemachinelevelofCPUsandmicrocontrollers.
Assemblylanguagemayitselfberegardedasahigherlevel(butoftenstillonetooneifusedwithout
macros)representationofmachinecode,asitsupportsconceptssuchasconstantsand(limited)expressions,
sometimesevenvariables,procedures,anddatastructures.Machinecode,initsturn,isinherentlyata
slightlyhigherlevelthanthemicrocodeormicrooperationsusedinternallyinmanyprocessors.

Executionmodels
Therearethreegeneralmodelsofexecutionformodernhighlevellanguages:
Interpreted
Interpretedlanguagesarereadandthenexecuteddirectly,withnocompilationstage.Aprogram
calledaninterpreterreadseachprogramstatementfollowingtheprogramflow,decideswhattodo,
http://en.wikipedia.org/wiki/Highlevel_programming_language

2/5

4/29/2015

HighlevelprogramminglanguageWikipedia,thefreeencyclopedia

anddoesit.Ahybridofaninterpreterandacompilerwillcompilethestatementintomachinecode
andexecutethatthemachinecodeisthendiscarded,tobeinterpretedanewifthelineisexecuted
again.Interpretersarecommonlythesimplestimplementations,comparedtotheothertwovariants
listedhere.
Compiled
Compiledlanguagesaretransformedintoanexecutableformbeforerunning.Therearetwotypesof
compilation:
Machinecodegeneration
Somecompilerscompilesourcecodedirectlyintomachinecode.Thisistheoriginalmodeof
compilation,andlanguagesthataredirectlyandcompletelytransformedtomachinenative
codeinthiswaymaybecalled"trulycompiled"languages.Seeassemblylanguage.
Intermediaterepresentations
Whenalanguageiscompiledtoanintermediaterepresentation,thatrepresentationcanbe
optimizedorsavedforlaterexecutionwithouttheneedtorereadthesourcefile.Whenthe
intermediaterepresentationissaved,itisoftenrepresentedasbytecode.Theintermediate
representationmustthenbeinterpretedorfurthercompiledtoexecuteit.Virtualmachinesthat
executebytecodedirectlyortransformitfurtherintomachinecodehaveblurredtheonceclear
distinctionbetweenintermediaterepresentationsandtrulycompiledlanguages.
TranslatedorTranscompiled
Alanguagemaybetranslatedintoalowerlevelprogramminglanguageforwhichnativecode
compilersarealreadywidelyavailable.TheCprogramminglanguageisacommontargetforsuch
translators.SeeChickenSchemeandtheEiffelasexamples.Specifically,thegeneratedCandC++
codecanbeseen(asgeneratedfromtheEiffelprogramminglanguagewhenusingtheEiffelStudio
IDE)intheEIFGENsdirectoryofanycompiledEiffelproject.InEiffel,the"Translated"processis
referredtoasTranscompilingorTranscompiled,andtheEiffelcompilerasaTranscompiler.
Notethatlanguagesarenotstrictly"interpreted"languagesor"compiled"languages.Rather,language
implementationsuseinterpretationorcompilation.Forexample,Algol60andFortranhavebothbeen
interpreted(eventhoughtheyweremoretypicallycompiled).Similarly,Javashowsthedifficultyoftrying
toapplytheselabelstolanguages,ratherthantoimplementationsJavaiscompiledtobytecodeandthe
bytecodeissubsequentlyexecutedbyeitherinterpretation(inaJVM)orcompilation(typicallywithajust
intimecompilersuchasHotSpot,againinaJVM).Moreover,compilation,transcompiling,and
interpretationarenotstrictlylimitedjustadescriptionofthecompilerartifact(binaryexecutableorIL
assembly).

Highlevellanguagecomputerarchitecture
Alternatively,itispossibleforahighlevellanguagetobedirectlyimplementedbyacomputerthe
computerdirectlyexecutestheHLLcode.Thisisknownasahighlevellanguagecomputerarchitecture
thecomputerarchitectureisdesignedtobetargetedbyaspecifichighlevellanguage.ApureHLLCAin
factlacksanassembler,havingonlyacompiler,withmachinecodesimplybeingabytecoderepresentation
ofaHLLprogram.
HLLCAsareintuitivelyappealing,andhavehadoccasionalpopularityovertheyears,buthavebeenvery
minorcomparedtogeneralpurposecomputersthatarenotadaptedtoanyparticularlanguage.HLLCAs
datetotheBurroughslargesystems(1961),whichwasdesignedforALGOL(1960),andthemostwell
http://en.wikipedia.org/wiki/Highlevel_programming_language

3/5

4/29/2015

HighlevelprogramminglanguageWikipedia,thefreeencyclopedia

knownHLLCAsaretheLispmachinesofthe1980s(forLisp,1959).AtpresentthemostpopularHLLCAs
areJavaprocessors,forJava(1995),andtheseareaqualifiedsuccess,beingusedforcertainapplications.

Seealso
Abstraction(computerscience)
Generationallistofprogramminglanguages
Lowlevelprogramminglanguages
Veryhighlevelprogramminglanguages
Categoricallistofprogramminglanguages

References
1. HThreadsRDGlossary(http://www.ittc.ku.edu/hybridthreads/glossary/index.php)
2. London,Keith(1968)."4,Programming".IntroductiontoComputers.24RussellSquareLondonWC1:Faber
andFaberLimited.p.184.ISBN0571085938."The'high'levelprogramminglanguagesareoftencalled
autocodesandtheprocessorprogram,acompiler."
3. London,Keith(1968)."4,Programming".IntroductiontoComputers.24RussellSquareLondonWC1:Faber
andFaberLimited.p.186.ISBN0571085938."Twohighlevelprogramminglanguageswhichcanbeusedhere
asexamplestoillustratethestructureandpurposeofautocodesareCOBOL(CommonBusinessOriented
Language)andFORTRAN(FormularTranslation)."
4. Giloi,Wolfgang,K.(1997)."KonradZuse'sPlankalkl:TheFirstHighLevel"nonvonNeumann"Programming
Language".IEEEAnnalsoftheHistoryofComputing,vol.19,no.2,pp.1724,AprilJune,1997.(abstract)
(http://doi.ieeecomputersociety.org/10.1109/85.586068)
5. Althoughitlackedanotionofreferenceparameters,whichcouldbeaprobleminsomesituations.Several
successors,includingAlgolW,Algol68,Simula,Pascal,ModulaandAdathereforeincludedreferenceparameters
(TherelatedClanguagefamilyinsteadallowedaddressesasvalueparameters).
6. SuranaP(2006)."MetaCompilationofLanguageAbstractions."(ftp://lispnyc.org/meetingassets/200702
13_pinku/SuranaThesis.pdf)(PDF).Retrieved20080317.
7. Kuketayev."TheDataAbstractionPenalty(DAP)BenchmarkforSmallObjectsinJava."
(http://www.adtmag.com/joop/article.aspx?id=4597).Retrieved20080317.
8. ChatzigeorgiouStephanides(2002)."EvaluatingPerformanceandPowerOfObjectOrientedVs.Procedural
ProgrammingLanguages".InBliebergerStrohmeier.Proceedings7thInternationalConferenceonReliable
SoftwareTechnologiesAdaEurope'2002.Springer.p.367.
9. ManuelCarro,JosF.Morales,HenkL.Muller,G.Puebla,M.Hermenegildo(2006)."Proceedingsofthe2006
internationalconferenceonCompilers,architectureandsynthesisforembeddedsystems"
(http://www.clip.dia.fi.upm.es/papers/carro06:stream_interpreter_cases.pdf)(PDF).ACM.|chapter=ignored
(help)

Externallinks
http://c2.com/cgi/wiki?HighLevelLanguageTheWikiWikiWeb'sarticleonhighlevelprogramming
languages
Retrievedfrom"http://en.wikipedia.org/w/index.php?title=High
level_programming_language&oldid=657272949"
Categories: Programminglanguageclassification
http://en.wikipedia.org/wiki/Highlevel_programming_language

4/5

4/29/2015

HighlevelprogramminglanguageWikipedia,thefreeencyclopedia

Thispagewaslastmodifiedon20April2015,at02:51.
TextisavailableundertheCreativeCommonsAttributionShareAlikeLicenseadditionaltermsmay
apply.Byusingthissite,youagreetotheTermsofUseandPrivacyPolicy.Wikipediaisa
registeredtrademarkoftheWikimediaFoundation,Inc.,anonprofitorganization.

http://en.wikipedia.org/wiki/Highlevel_programming_language

5/5

You might also like