Is the C ++ language old for programming side jobs?
If you write the contents roughly
This result may be related to the time when programmers learned programming languages and the trends and demands of those days.
A major programming language and a long-established "C ++" language.Compared to later programming languages, it is difficult to understand ... → Continue reading
Wikipedia related words
If there is no explanation, there is no corresponding item on Wikipedia.
Japanese Industrial StandardIn the standard name of JIS X 3000 series, all are "program language" (example: JIS X 3001 program language). Fortran, JIS X 3014 Program language C++) Therefore, it is sometimes regarded as a programming language according to it, but since it is a programming language in English, it becomes a programming language according to it.The name of each programming language is sometimes called simply by its name, such as Java, but in the case of a single letter such as "C", it is difficult to understand in most contexts, so only the "language" part is used.SuffixUsed as "C language"And so on.
Natural languagethe same as,Syntax rules(LinguisticsSay inSyntax theoryRule) andSemantic rules(AlsoSemanticsRule).Some languages have formal or informal (natural language) specifications (often syntactic rules are formal, semantic rules are not), and some languages are implementation-only. There is also a language.Programming languages make it easier to understand the tasks of organizing and processing information.algorithmCan be expressed accurately.In particular,Turing completeIs a feature..It was also designed for programming applications.LojbanThere is something that lies between the human language and the programming language.
Programming languages are characterized by a very high demand for accuracy and completeness compared to human conversation.When humans interact with each other in natural language, even if there is a spelling mistake or a grammatical error, the other person corrects it appropriately from the situation and grasps the exact content.But computers don't work with ambiguous instructions, and programmers can't understand the intent they put into their code.With language specificationsProgramThe combination of and its input data must be able to completely specify the result (behavior observed from the outside) when the program is executed.
Many languages are designed to meet new needs, combined with other languages, and eventually become obsolete.There have been some attempts to design a universal language that can be used for all purposes, but no language has succeeded in that sense. [Annotation 2]..Behind the birth of diverse languages is the variety of situations in which languages are used.
- There are a variety of programs, from short scripts written as a hobby to huge systems written by hundreds of programmers.
- Programmers range from beginners who want simplicity in their language to experts who prefer fairly complex languages.
- Also in the systemMicro controllerからSuper computerThere are many, and it is necessary to balance performance, size, and simplicity.
- Some programs will continue to be used once they are developed, while others will be fixed on a regular basis.
- Ultimately, programmers may choose a language according to their taste.
A higher level of common trend in programming language development抽象 化Is trying to gain higher problem-solving ability.Early programming languages were very close to the level of computer hardware.As new programming languages were developed, features were added, allowing programmers to express their ideas farther from hardware instructions.Separating programming from hardware increases programmer productivity.
As a way to eliminate the need for programming languages in programmingNatural language processingThere is also the aspect that has been proposed.However, the direction has not reached practical use, and discussions continue.Edgar DijkstraCriticized programming in natural language in the position of preventing meaningless instructions by using formal languages..Alan ParisWas in a similar position..The historically confusing argument around here is, after all, a kind of dogma that "programming is necessary to utilize a computer, and programming is done in a programming language" is decomposed into the following two events. It became a meaningless discussion.That is, "computerModerate utilizationIn that case, by utilizing various application software, natural language recognition and natural language processing technology (smart speakers, etc.), it is no longer necessary for users to program by themselves. " In order to make the best use of it, specifically, to create such a natural language recognition and natural language processing system itself, programming is still necessary, and the importance of programming languages will increase, not decrease. " Is.
- Difference from natural language
The programming language was originallyA humanIs designed to send instructions to a computer and instruct how to execute it, so that the computer can analyze it without ambiguity.In many cases syntactic mistakes are unacceptable and humans must enter sentences that strictly follow the grammar of the programming language.
On the other hand, in generalNatural languageGrammar rules are much more complex than programming languages, and there are many exceptions.However, this does not mean that the rules are generally sloppy or ambiguous.In general, the rules of natural language are profound and may be backed by surprising irrationality or surprising rationality.Sometimes it is backed by something that is neither surprisingly irrational nor rational, and sometimes it is surprisingly unlined.
In addition, the meaning of natural language is often determined by its context.On the other hand, programming languages are designed so that their meanings cannot change depending on the context so that they can be easily handled by computers, but there are cases where there are parts that are determined by the context.There are some in most languages.
Natural language takes a long time due to misuse and fashion, and changes in an unintended manner due to the use of many people.However, the rules of programming languages change only by the intent and work of the language designer.In reality, the language designer may be "many people" (there are many implementers for languages with simple specifications, and in such cases it can be said that each implementation has its own specifications. ), Some programming languages have changed over time, just like natural language, with the use of many humans (such as Lisp).In addition, programming languages are also popular, and it is not uncommon for specifications to be set later for a kind of "misuse" that was not specified in the original language specifications.
Humans usually useJapaneseSuch asNatural languageUsingComputerSome people fantasize that it is ideal to be able to instruct.However, natural language is so complex, ambiguous and anomalous that it is very difficult to write a program that can compile it into machine language (not a problem that cannot be compiled, but its meaning is "complex, ambiguous and anomalous" in the first place. The problem is that it is anomalous, but those who do not understand it fantasize about it at the beginning).Although such research is underway, no general-purpose and practical program has been created yet.
Therefore, we will create a simple, strict and regular artificial language that is more restrictive than natural language and substitute it.This isProgramming languageIs.Programming languages are somewhat more difficult for humans to handle than natural languages, but they are much more familiar than machine languages, reducing the hassle of human instructions.By the way, it has both formalism for computers and flexibility for humans.LojbanSome of them have different original development purposes but can potentially function as one programming language.
Most programming languages are basically mostlyContext-free grammarHowever, not all grammatical restrictions in programming languages can be expressed in context-free grammars, and they may be more restricted than context-free grammars or extended to context-free grammars. , In many cases, it is not completely in line with context-free grammar.
Of the programming languageSortThere are many laws.
As one classification method (and as a classification method that is mentioned as a kind of standard in computer science textbooks and information processing engineer textbooks), it is either machine-oriented (CPU-oriented) or human (thinking). It is a method of classifying by leaning orLow-level language(British: low-level programming language) / High-level language(British: high-level programming language). As an example of a low-level language (also known as "low-level language / high-level language"),Machine language"Instruction code"[Annotation 3]And one-to-one correspondence "command word"[Annotation 4]Programming withAssembly language(British: assembly language). (Machine language may also be counted as one of the low-level languages.) As an example of a high-level language to be contrastedPerl,Visual Basic,Lisp,PHP,Java,PythonAnd so on. (Note that the boundaries are a little vague, and C language was once regarded as a "high-level language", but since many higher-level languages have appeared since then, C language that does not manage memory today. May be classified as a "low-level language".)
Another classification method isExecutionThere is also a way to classify programming languages by method,InterpreterFormal language(interpreted language (s)) / compilerFormal language(Compilation language,compiled language (s)).Examples of interpreted languages include PHP andRubyCan be mentioned.Examples of compiler-based languages are C, C ++,Erlang,Haskell,Rust,Go, FORTRAN,COBOLAnd so on.Some languages can be executed by the interpreter method and can be executed by the compile method.And since there are cases such as "It can be executed by either method, but the basic is the compilation method", the classification may be a little ambiguous.Some people classify it as "pure compiled language" when they have to point to a language that can only be executed by the compilation method...Since Java is compiled and then executed, it is possible to classify it as a "compile method", butJust-in-time compiler (JIT)とJava virtual machineTherefore, it is often pointed out that "Java is an intermediate method between the compilation method and the interpreter method", and it is in an ambiguous position.
In the past, the method of classifying by human use was often used.For exampleGeneral-purpose programming language / Programming language for business calculation / Programming language for scientific and technological calculation ... etc. In the 1970s and 1980s, it was written that "COBOL is an example of a programming language for business calculations, and FORTRAN is an example of a programming language for scientific and technological calculations", but in recent years such classification has become less common.Java is classified as a "general-purpose programming language".C#, Python, Visual Basic, Ruby, etc.
Procedural languageWhether it is or notProcedural language(British: procedural language) / Non-procedural language(British: non-procedural language) Is also available.FORTRAN, an example of a procedural languageALGOL, C language, COBOL,BASIC,PascalAnd so on.
Object-oriented programmingWhether or not it has a mechanism suitable forObject-oriented language(object-oriented language (s))/ Non-object-oriented language(non-object-oriented language (s)) May be classified.
threadThere is also a method of classifying as parallel language / non-parallel language depending on whether or not multiple languages can be generated and managed.
The 1950s (and 1960s)Theory of computationTheChomsky hierarchyAt the time when the concept and theory were announced, there was an attempt to abstractly classify computer languages into "type 0 / type 1 / type 2 / type 3" based on their ability to express calculations. ..However, such classifications are rarely introduced in recent years.The interest of programming language users and language developers in the world has already moved to another level.[Annotation 5]
There are so many classification methods in programming languages (as is often the case in other fields) that some people do "classification of classification methods" in an attempt to sort out the classification methods that tend to be confusing.For example, about the classification method of high-level languages,Programming paradigmSome people say that it is possible to classify by "classification method by / not by".
Since there are many classification methods for programming languages as described above, each programming language can be classified into a plurality of categories.For example, assembly language is classified as a "low-level language" and a "non-object-oriented language". Java is classified as a "high-level language", an "object-oriented language", and a "concurrency language". Python is an "object-oriented language" and "Script language". Lisp is a "multi-paradigm language," a "functional language," and a "procedural language."
Besides that, "to classify the programming languages that computers use to control printers (and monitors), etc."Page description languageThere is also a classification method called ".A typical example of a page description language isPostScriptCan be mentioned.For example, when printing beautifully with a printer, the command "Print" is selected from the buttons and menus on the screen. At that point, the printer control program in the PC automatically generates a program in the PostScript language, and that program Is sent to the printer via cable or Wifi, and it is executed on the side of the printer that received it, so that it is filled with beautiful printing and delicate curves.fontIs realized.
Other programming languages (like jokes) that aren't very serious, but are purposely made to be difficult to understand, are especially "Esoteric programming languageIt may be classified as.
- Types of programming languages
New programming languages are being created almost every year. As of February 2008, "Computer Language Dictionary"8152 programming languages were listed in.
If you want to know the programming language whose article is posted on WikipediaList of programming languageschecking ...
Depending on the definition of "computer" (the word), if we call it a "machine driven by a computer program", then the computer program was born and raised with the computer, and the notation of that program. It means that there was a programming language.Charles Babbage Difference organizationPlanned followingAnalysis agencyIt is,Punch cardBecause it had a mechanism that was controlled by a row of cardboard with holes that could be said to be the ancestor of19st centuryIt is sometimes called "computer" or "steam-powered computer".
20st centuryIn the beginning,Tabu rating machineByPunch cardThe mechanical processing of data using is started.Not only that actual aspectTheory of computationAs1930 eraから1940 eraOveralgorithmProvides a mathematical abstract expression that expressesLambda calculus(Alonzo Church)WhenTuring machine(Alan Turing) Was devised.Lambda calculus also influences subsequent language design[Annotation 6].
In the 1940s, the world's first group of electronic digital computers was created.1950 eraEarly computerUNIVAC I,IBM 701Then.Machine languageWas using.Machine language programming will soon be availableAssembly languageIt was superseded by programming by. In assembly language in the late 1950sMacro instructionCame to be used, then FORTRAN,LISP,COBOL3High-level languageWas developed.These have been improved and are still in use today, having a significant impact on subsequent language development... Late 1950sALGOLHas appeared and has had various influences on subsequent languages...The specifications and usage of early programming languages were greatly influenced by the restrictions of the programming environment at that time (program input using punch cards, etc.)..
- APL -The language that introduced.Functional programmingAlso influenced.
- PL / I (NPL) --Designed in the early 1960s, incorporating the strengths of FORTRAN and COBOL.
- Start --The world's first (1960s)Object-oriented programmingThe language that adopted. A pure object-oriented language in the mid-1970sSmall talkHas appeared.
- C language -From 1969 to 1973System programmingDeveloped as a language and still popular today.
- Prolog --Designed in 1972Logic programminglanguage.
- ML --A language developed in 1978, based on LISPStatic typingFunctional languageIt became a pioneer of.
The ideas of these languages have been passed down to various languages, and many of today's languages belong to one of these lines.
The 1960s and 1970sStructured programmingIt was also a time when there was a lot of controversy about..One of the most famous of the controversies was published in the Communications of the ACM in 1968.Edgar DijkstraLetterGo To Statement Considered HarmfulWill.As a subsequent counterargument and guidelineKnuth OfStructured Programming with go to StatementsThere is.
The 1960s and 1970s were also advances in techniques that reduced program memory usage and increased programmer and user productivity.Early4GL(Fourth Generation Programming Language) has dramatically reduced the amount of source code compared to writing the same program in a third generation programming language.
Integration and growth
1980 eraWas an era of relative integration.C++Is an integration of object orientation and system programming.In the United States, for the purpose of using it for munitionsTo giveThe system programming language called was standardized.In Japan etc., logic programming was appliedXNUMXth generation languageSpent resources on research..There has been a move to standardize ML and LISP in the functional language community.None of these were intended to create a new paradigm, but to improve the ideas that had been created so far.
One of the key language design trends of the 1980s, aimed at programming for large systemsmoduleThe point that adopted the concept of. As a language that adopted the modular system in the 1980sModula-xnumx, Ada, ML, but before that, alreadyPL / ISupported modular programming.Modular systemGeneric programmingOften used as a component of.
1990 eraIn the middle,インターネットThe rapid growth of the country has created an opportunity for new languages to be created.PerlWas a scripting language on UNIX released in 1987,WebsiteNow used for dynamic content creation.JavaHas come to be used for server-side programming.
The appearance of a programming language is its syntax (syntax ・Syntax theory) Is determined.Use figures etc.Graphical programming languageOf most programming languages, thoughSource code TheStringIs.In file formatPlain textIetext fileIs used.
Also, in most programming languages, we first remove whitespace from the source string (called lexical syntax in English) to extract the least meaningful categorization.Words(Token) ”, and the syntax is often treated as a sequence of words.The process of cutting out words and classifying themLexical analysis, The process of checking the orderParsingThat.
The following isLISPA very small subset of the syntax of.
expression :: = atom | list atom :: = number | symbol number :: = [+-]? ['0'-'9'] + symbol :: = ['A'-'Z''a'-' z']. * list :: ='(' expression *')'
This is the following rule.
- expression Theatomorlist.
- atom Thenumberorsymbol.
- numberIs a string of numbers of one or more characters, optionally preceded by a sign (without spaces).
- symbolIs any string that begins with an alphabet (without spaces).
- listIs a pair of parenthesized symbols, with zero or more in betweenexpressionThere is.
As an example according to this,'
(a b c232 (1))'and so on.
Many languages are designed so that not all syntactically correct programs are semantically consistent.[Annotation 7][Annotation 8]..Also, even if they are semantically consistent, the person who wrote them may not be able to correctly reflect their intentions.
belowC languageThe code fragment is syntactically correct, but semantically problematic.p TheNull pointerSo,p-> realとp-> imAttempting to evaluate is "undefined", in this case probablySegmentation faultCause.
complex *p = NULL; complex abs_p = sqrt(p->real * p->real + p->im * p->im);
Natural languageLinguisticsSyntax (Syntax theory)WhenSemanticsThe "meaning" of a programming language is what the program expresses, as there is.For example, "
a + b The value of the expression is the sum of the value of a and the value of b. "Program SemanticsFormal semantics in the fieldFormal semantics,British: formal semantics) Has also been studied, but there are also languages that give meaning in natural language, such as the C language standard, and languages that give meaning in informal pseudo-languages.
Typed and untyped languages
"this text between the quotes" Is a string type value.Usually, the operation of dividing a number by a string is meaningless.Therefore, such programs are rejected.Depending on the language, it is detected at compile time (static type check) and compile fails.Some languages detect at runtime (dynamic type checking) and make exceptions, while others perform some kind of corement (type coercion). (Theoretically, it refers only to static systems.Type system(Sometimes)
(A special example of a typed language is a monotyped language.REXXScripting languages such asSGMLMarkup languages such as handle only a single data type.In many cases, the data type at that time is a character string type.
Assembly languageUntyped languages such as can perform arbitrary operations on arbitrary data, and the data is simply treated as a bit string of a certain length...An example of a programming language that has some high functionality but is typeless (or single type) isBCPL,Forth(It is not without the concept of type itself. For example, there is an operator called "addition to floating point". However, the operator causes the bit pattern of the word to be a floating point number regardless of the operand. It is considered to be expressed and added.)
As I wrote "more or less", few languages have "strong" type systems, and many have adopted a decent type system...Many practical languages provide means to bypass or overthrow the type system.
Static and dynamic typing
Static typing(Static typed languageIn), the types of all expressions are determined before executing the program (generally at compile time).For example, an expression such as 1 or (2 + 2) is an integer type, cannot be passed to a function that expects a string, and cannot be assigned to a variable defined to store a date (type)..
In static typing, when you specify the type andType inferenceMay be done.In the former, the programmer must specify the type in the appropriate position[Annotation 9]..In the latter, the compiler infers the type of the expression from the context.C++,JavaIn major statically typed languages such as, specify the type.Full type inference is used in non-mainstream languages (Haskell,ML).However, languages that specify types often support partial type inference.For exampleJava,C#Now, type inference is performed in limited situations.
Strong and weak typing
Semantics of execution
Once the data is entered, the computer will perform some processing on the data. "Executive semantics (British: execution semantics) ”Defines when and how the components of a programming language generate the behavior of the program.
For example, in an expressionEvaluation strategy(Advance evaluation,Partial evaluation,Lazy evaluation,Short-circuit evaluationEtc.) are part of execution semantics.Also,Control structureConditional execution practices in are also part of the execution semantics.
A "library" is a set of auxiliary routines for writing and using a program.Many programming languages are standard, although they may be part of the language specification or independent of the language itself.ラ イ ブ ラ リThe specification of is almost always present, and the implementation of the standard library is almost always attached to the implementation of the language.Typical for the standard libraryalgorithm,data structure,Input/outputOften includes mechanisms and the like.
From the user's point of view, the standard library is also part of the language, but from the designer's point of view, it's a different entity.The language specification defines the parts that must be implemented, and in the case of standardized languages, it also includes the standard library.The boundaries between languages and their standard libraries vary from language to language.In fact, some languages may not be able to use some language features without the standard library (for example, some languages have exponentiation operators, but the compilation result is a function call on many processing systems in that language. Well, if the language specification stipulates to call the corresponding function in the standard library, it means that "some language features cannot be used without the standard library").
Macros are often included in libraries as well.For example, the C standard stipulates that some names may be provided by macros rather than functions.AlsoLispIn system languages, many so-called special formats can be implemented with macros instead of language embedding, and one is required like if and cond, but if there is one, the other can be made into a macro. There are also things.SchemeThe standard of is left to the processing implementer to decide which is the language embedded and which is the macro.
Design and implementation
The design of a computer programming language is shown as a "language specification" and the implementation is called a "language processing system".The following is an overview of them.
As mentioned above, programming languages consist of syntax and meaning, so there are also syntax specifications and semantic specifications for specifications.
Syntax specifications are generallyBackus-Naur FormIt is formally indicated by.
Semantic specifications are often written in natural language, but some languages are given formally.
In addition, some languages are given specifications in the following styles.
- Of the processing system of that languageReference implementationAnd what is shown as a model implementation
The implementation of a programming language is called the programming language processing system.compilerIt is,Source codeInput such asIntermediate representationIt is a processing system that converts to expressions that are easier to interpret and execute.Also,InterpreterIs a processing system that interprets and executes the input program (in hardware)ProcessorIt is,Machine languageInterpret and executeInterpreterCan be seen as).
Theoretically, the relationship between the compiler and the interpreterNimura projectionIt is formulated by.
In addition, "There are roughly two methods.compilerとInterpreterIs.It is possible to implement a common language with both a compiler and an interpreter. If you understand it (although it is very common in traditionally written popular manuals), you will not understand the style of many language processing systems in recent years such as Java.
(Machine languagePoint to only those that convert tocompilerThere are some people who want to call it, and that position makes some sense, but then there is no term for a general implementation of Java).
Some people give strange explanations such as "The method of executing the output of the compiler with an interpreter may make the distinction between the compiler and the interpreter ambiguous." However, as mentioned above, the wrong dichotomy method is used in the first place. Because I think about it, it becomes such a strange way of thinking.
Generally translated into machine language (Executable file) Is much faster to run directly in hardware than to run it in the interpreter.As a technique to improve execution in the interpreterJust-in-time compilerSuch asDynamic compilationThere is a method.
Measurement of language usage
It is difficult to determine which programming language is most commonly used.Also, the meaning of use differs depending on the context.Programmer man-hours,Number of lines of code,CPU time[Source required]Etc. can be considered as a scale.Some languages are often used only by applications in a particular field.For exampleCOBOLIs a corporate data centermain frameIs still used in (often)FORTRANIs often used in scientific computing,C languageIs used in embedded systems and operating systems.
There are various scales of language usage as shown below, and it is better to think that there is a kind of bias regardless of which one is selected.
- The number of times the language is mentioned in job advertisements such as programmers
- Number of copies of books related to languages (introductory books, etc.)
- Estimate the number of existing lines of code for each language.Languages that are easily overlooked in open surveys tend to be underestimated.
- Number of references to each language found by search engines
Example of actual index
"There is something programmable other than a computer" "There is a programming language for it"[Source required]
- Daniel P. Friedman, Mitchell Wand, Christopher Thomas Haynes: Essentials of Programming Languages, The MIT Press 2001.
- David Gelernter, Suresh Jagannathan: Programming Linguistics, The MIT Press 1990.
- Shriram Krishnamurthi: Programming Languages: Application and Interpretation, Online version.
- Bruce J. MacLennan: Principles of Programming Languages: Design, Evaluation, and Implementation, Oxford University Press 1999.
- John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
- Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
- Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd ed., Addison-Wesley 1996.
- Michael L. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers 2005.
- Richard L. Wexelblat (ed.): History of Programming Languages, Academic Press 1981.
- ^ In the 1960s, JIS used a translation of "programming language" (JIS C 6201-1967 "computer programming language FORTRAN").For this reasonProgram languageAlthough it is widely seen in JIS and other examples, it is a word that corresponds to the English phrase programming language.Not always appropriate.[Source required]
- ^ IBM released the manual with some ambition when it released PL / I The universal programming language PL / I It is named (IBM Library; 1966).The title reflects IBM's goal of unlimited subsetting capabilities. "PL / I is designed to extract the parts needed for a particular application and allow the subsets to be separated.""Encyclopaedia of Mathematics »P» PL / I". SpringerLink. 2006/6/29Browse.). To giveHad a similar initial goal.
- ^ The CPU instruction code is just like "00101011" at the true CPU level.Binary numberIt is a list of people, and it has no meaning to humans.
- ^ Instructions to the CPU and CPU operations should be performed by combining several letters of the alphabet and numbers.registerEtc. are written.
- ^ Still moreTuring completeLanguage is the samealgorithmIt is possible to express a group.
- ^ Benjamin C. Pierce writes:
- ". .. the lambda calculus has seen widespread use in the specification of programming language features, in language design and implementation, and in the study of type systems." , Widely used in type system research)
- ^ In natural language Colorless green ideas sleep furiouslyThere is an example sentence.
- ^ It depends on the design of the language.There can be a design that always has a consistent meaning if it is syntactically correct.
- ^ For example, in the declaration of a variable, it is often immediately before or after the name.However, in C language, it is completely unknown where the name or type is, such as "void (* signal (int sig, void (* func) (int))) (int);". Sometimes.
- ^ ISO 5127—Information and documentation—Vocabulary, clause 01.05.10 defines a programming language as an “artificial language for writing programs”.
- ^ MacLennan, Bruce J. (1987). Principles of Programming LanguagesOxford University Press. P. 1. ISBN-0 19-511306-3
- ^ Frederick P. Brooks, Jr .: The Mythical Man-Month, Addison-Wesley, 1982, pp. 93-94
- ^ Dijkstra, Edsger W. On the foolishness of "natural language programming." EWD667.
- ^ Perlis, Alan, Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9, September 1982, pp. 7-13
- ^ 
- ^ 
- ^ 
- ^ The Encyclopedia of Computer Languages Archived August 2011, 2, at the Wayback Machine(Murdoch University,Australia）
- ^ a b O'Reilly Media. "History of programming languages". 2006/10/5Browse.
- ^ Frank da Cruz. IBM Punch Cards Columbia University Computing History.
- ^ Richard L. Wexelblat: History of Programming Languages, Academic Press, 1981, chapter XIV.
- ^ François Labelle. “Programming Language Usage Graph". Sourceforge. 2006/6/21Browse.This is the result of taking statistics on the languages used in the projects on Sorceforge. The C language is popular, but was overtaken by Java in 2006.However, including C ++, it is the most used.
- ^ Hayes, Brian (2006). “The Semicolon Wars”. American Scientist 94 (4): pp. 299-303.
- ^ Dijkstra, Edsger W. (March 1968). “Go To Statement Considered Harmful”. Communications of the ACM 11 (3): 147–148 2006/6/29Browse..
- ^ Tetsuro Fujise, Takashi Chikayama, Kazuaki Rokusawa, Akihiko Nakase (December 1994). "KLIC: A Portable Implementation of KL1" Proc. of FGCS '94, ICOT Tokyo, December 1994. Fifth Generation Computer Project Archive
- ^ Jim Bender (March 2004, 3). “Mini-Bibliography on Modules for Functional Programming Languages". ReadScheme.org. 2006/9/27Browse.
- ^ a b c d e Andrew Cooke. “An Introduction to Programming Languages". 2006/6/30Browse.
- ^ British: statically typed language
- ^ British: dynamically typed language
- ^ Milner, R.M. Tofte, R. Harper and D. MacQueen. (1997). The Definition of Standard ML (Revised).MIT Press. ISBN-0 262-63181-4
- ^ Kelsey, Richard; William Clinger and Jonathan Rees (February 1998). “Section 7.2 Formal semantics". Revised5 Report on the Algorithmic Language Scheme. 2006/6/9Browse.
- ^ ANSI — Programming Language Rexx, X3-274.1996
- ^ Survey of Job advertisements mentioning a given language
- ^ Counting programming languages by book sales Archived August 2008, 5, at the Wayback Machine.
- ^ Bieman, JM; Murdock, V., Finding code on the World Wide Web: a preliminary investigation, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation, 2001
- TIOBE Index --Programming language ranking
- 99 Bottles of Beer Published code that implements the same program in many languages
- Computer Languages History graphical chart
- Dictionary of Programming Languages
- History of Programming Languages (HOPL)
- Open Directory-Computer Programming Languages
- Syntax Patterns for Various Languages
- The Evolution of Programming Languages by Peter Grogono
- JIS (Japanese Industrial Standards) X3 (program language)
- "Programming language』- Koto bank