Skip to content
Free planNo credit card requiredStart writing

Search 250 million research papers

Read the abstract, see who wrote it and who cites it, and get the citation in APA, MLA, Chicago or Harvard.

About 7,055 papers for “programming language concepts”

Programming Language Concepts

Carlo Ghezzi, Mehdi Jazayeri, Samson Abramsky et al. · 2017

This chapter focuses on some of the more abstract, theoretical aspects of programming languages. In imperative programming, programmer's code is mostly a sequence of instructions for the computer to follow. Functional programming is largely inspired by the desire to avoid “side effects”. Functional programming lends itself well to data science, especially while doing some kind of batch processing. An object-oriented language will package data and the logic that handles the data into user-friendly black boxes called “objects”. Hardcore object-oriented code consists almost entirely of defining class and their member functions and makes liberal use of class inheritance and other fancy features. Besides the programming paradigm(s) that it implements, a language is also characterized by its “type system”. “Compiled languages” and “interpreted languages” used to have very clear-cut meanings. Traditionally, a compiler is a special-purpose program that translates human readable code into “machine code”, which just operates on raw bytes and is directly executed by the microprocessor.

Cited by 143Open access

Programming Language Concepts

2024

So far, the book has focused on quick-and-dirty scripting, in the service of larger analytics goals.The most in-depth I've gotten about code is how to do unit testing and work within the context of a conventional software engineering team.This chapter will take a step back and get into some of the more abstract, theoretical aspects of programming languages.This is important to know for two reasons.First, these considerations will often dictate important decisions about what tools to use when.You don't want to lock yourself into using the wrong technology for a task, especially if you find yourself working to create a large software framework.Second, tools that are fundamentally different can take some getting used to; understanding the core concepts will ease the transition if you have to pick up a new tool that is profoundly different from what you're used to.

Cited by 85Open access

Programming Language Concepts

Şehitoğlu, Onur Tolga · 2020

To teach theoretical background and common concepts in programming languages. Making students familiar with different paradigms including functional, object-oriented and logic programming paradigms. To establish an understanding of the programming language design quality. To give an idea of how concepts in programming languages including syntax is implemented.

Cited by 0Open access

Programming Language Design Concepts

David A. Watt · 2004

Preface.PART I: INTRODUCTION.1. Programming Languages.1.1 Programming linguistics.1.1.1 Concepts and paradigms.1.1.2 Syntax, semantics, and pragmatics.1.1.3 Language processors.1.2 Historical development.Summary.Further reading.Exercises.PART II: BASIC CONCEPTS2. Values and Types.2.1 Types.2.2 Primitive types.2.2.1 Built-in primitive types.2.2.2 Defined primitive types.2.2.3 Discrete primitive types.2.3 Composite types.2.3.1 Cartesian products, structures, and records.2.3.2 Mappings, arrays, and functions.2.3.3 Disjoint unions, discriminated records, and objects.2.4 Recursive types.2.4.1 Lists.2.4.2 Strings.2.4.3 Recursive types in general.2.5 Type systems.2.5.1 Static vs dynamic typing.2.5.2 Type equivalence.2.5.3 The Type Completeness Principle.2.6 Expressions.2.6.1 Literals.2. 6.2 Constructions.2.6.3 Function calls.2.6.4 Conditional expressions.2.6.5 Iterative expressions.2.6.6 Constant and variable accesses.2.7 Implementation notes.2.7.1 Representation of primitive types.2.7.2 Representation of Cartesian products.2.7.3 Representation of arrays.2.7.4 Representation of disjoint unions.2.7.5 Representation of recursive types.Summary.Further reading.Exercises.3. Variables and Storage.3.1 Variables and storage.3.2 Simple variables.3.3 Composite variables.3.3.1 Total vs selective update.3.3.2 Static vs dynamic vs flexible arrays.3.4 Copy semantics vs reference semantics.3.5 Lifetime.3.5.1 Global and local variables.3.5.2 Heap variables.3.5.3 Persistent variables.3.6 Pointers.3.6.1 Pointers and recursive types.3.6.2 Dangling pointers.3.7 Commands.3.7.1 Skips.3.7.2 Assignments.3.7.3 Procedure calls.3.7.4 Sequential commands.3.7.5 Collateral commands.3.7.6 Conditional commands.3.7.7 Iterative commands.3.8 Expressions with side effects.3.8.1 Command expressions.3.8.2 Expression-oriented languages.3.9 Implementation notes3.9.1 Storage for global and local variables.3.9.2 Storage for heap variables.Summary.Further reading.Exercises.4. Bindings and Scope.4.1 Bindings and environments.4.2 Scope.4.2.1 Block structure.4.2.2 Scope and visibility.4.2.3 Static vs dynamic scoping.4.3 Declarations.4.3.1 Type declarations.4.3.2 Constant declarations.4.3.3 Variable declarations.4.3.4 Procedure definitions.4.3.5 Collateral declarations.4.3.6 Sequential declarations.4.3.6 Recursive declarations.4.3.8 Scopes of declarations.4.4 Blocks.4.4.1 Block commands.4.4.2 Block expressions.4.4.3 The Qualification Principle.Summary.Further reading.Exercises.5. Procedural Abstraction.5.1 Function procedures and proper procedures.5.1.1 Function procedures.5.1.2 Proper procedures5.1.3 The Abstraction Principle.5.2 Parameters and arguments.5.2.1 Copy parameter mechanisms.5.2.2 Reference parameter mechanisms.5.2.3 The Correspondence Principle.5.3 Implementation notes5.3.1 Implementation of procedure calls.5.3.1 Implementation of parameter passing.Summary.Further reading.Exercises.PART III: ADVANCED CONCEPTS.6. Data Abstraction.6.1 Program units, packages, and encapsulation.6.1.1 Packages.6.1.2 Encapsulation.6.2 Abstract types.6.3 Objects and classes.6.3.1 Classes.6.3.2 Subclasses and inheritance.6.3.3 Abstract classes.6.3.4. Single vs multiple inheritance.6.3.5 Interfaces.6.4 Implementation notes.6.4.1 Representation of objects6.4.2 Implementation of method calls.Summary.Further readingExercises.7. Generic Abstraction.7.1 Generic units and instantiation.7.1.1 Generic packages in ADA.7.1.2 Generic classes in C++.7.2 Type and class parameters.7.2.1 Type parameters in ADA.7.2.2 Type parameters in C++.7.2.3 Class parameters in JAVA.7.3 Implementation notes7.3.1 Implementation of ADA generic units.7.3.2 Implementation of C++ generic units.7.3.3 Implementation of JAVA generic units.Summary.Further reading.Exercises8. Type Systems.8.1 Inclusion polymorphism.8.1.1 Types and subtypes.8.1.2 Classes and subclasses.8.2 Parametric polymorphism.8.2.1 Polymorphic procedures.8.2.2 Parameterized types.8.2.3 Type inference.8.3 Overloading.8.4 Type conversions.8.5 Implementation notes8.5.1 Implementation of polymorphic procedures.Summary.Further reading.Exercises.9. Control Flow.9.1 Sequencers.9.2 Jumps.9.3 Escapes.9.4 Exceptions.9.5 Implementation notes9.5.1 Implementation of jumps and escapes.9.5.2 Implementation of exceptions.Summary.Further reading.Exercises.10. Concurrency (by William Findlay).10.1 Why concurrency?.10.2 Programs and processes.10.3 Problems with concurrency.10.3.1 Nondeterminism.10.3.2 Speed dependence.10.3.3 Deadlock.10.3.4 Starvation.10.4 Process interactions.10.4.1 Independent processes.10.4.2 Competing processes.10.4.3 Communicating processes.10.5 Concurrency primitives.10.5.1 Process creation and control.10.5.2 Interrupts.10.5.3 Spin locks and wait-free algorithms.10.5.4 Events.10.5.5 Semaphores.10.5.6 Messages.10.5.7 Remote procedure calls.10.6 Concurrent control abstractions.10.6.1 Conditional critical regions.10.6.2 Monitors.10.6.3 Rendezvous.Summary.Further reading.Exercises.PART IV: PARADIGMS11. Imperative Programming.11.1 Key concepts.11.2 Pragmatics.11.2.1 A simple spellchecker.11.3 Case study: C.11.3.1 Values and types.11.3.2 Variables, storage, and control.11.3.3 Bindings and scope.11.3.4 Procedural abstraction.11.3.5 Independent compilation.11.3.6 Preprocessor directives.11.3.7 Function library.11.3.8 A simple spellchecker.11.4 Case study: ADA.11.4.1 Values and types.11.4.2 Variables, storage, and control.11.4.3 Bindings and scope.11.4.4 Procedural abstraction.11.4.5 Data abstraction.11.4.6 Generic abstraction.11.4.7 Separate compilation.11.4.8 Package library.11.4.9 A simple spellchecker.Summary.Further reading.Exercises.12. Object-Oriented Programming.12.1 Key Concepts.12.2 Pragmatics.12.3 Case study: C++.12.3.1 Values and types.12.3.2 Variables, storage, and control.12.3.3 Bindings and scope.12.3.4 Procedural abstraction.12.3.5 Data abstraction.12.3.6 Generic abstraction.12.3.7 Independent compilation and preprocessor directives12.3.8 Class and template library.12.3.9 A simple spellchecker.12.4 Case study: JAVA.12.4.1 Values and types.12.4.2 Variables, storage, and control.12.4.3 Bindings and scope.12.4.4 Procedural abstraction.12.4.5 Data abstraction.12.4.6 Generic abstraction.12.4.7 Separate compilation and dynamic linking.12.4.8 Class library.12.4.9 A simple spellchecker.12.5 Case study: ADA95.12.5.1 Types.12.5.2 Data abstraction.Summary.Further reading.Exercises.13. Concurrent Programming (by William Findlay).13.1 Key concepts.13.2 Pragmatics.13.3 Case study: ADA95.13.3.1 Process creation and termination.13.3.2 Mutual exclusion.13.3.3 Admission control.13.3.4 Scheduling away deadlock.13.4 Case study: JAVA.13.4.1 Process creation and termination.13.4.2 Mutual exclusion.13.4.3 Admission control.Summary.Further reading.Exercises.14. Functional Programming.14.1 Key concepts.14.1.1 Eager vs normal-order vs lazy evaluation.14.2 Pragmatics.14.3 Case study: HASKELL.14.3.1 Values and types.14.3.2 Bindings and scope.14.3.3 Procedural abstraction.14.3.4 Lazy evaluation.14.3.5 Data abstraction.14.3.6 Generic abstraction.14.3.7 Modeling state.14.3.8 A simple spellchecker.Summary.Further reading.Exercises.15. Logic Programming.15.1 Key concepts.15.2 Pragmatics.15.3 Case study: PROLOG.15.3.1 Values, variables, and terms.15.3.2 Assertions and clauses.15.3.3 Relations.15.3.4 The closed-world assumption.15.3.5 Bindings and scope.15.3.6 Control.15.3.7 Input/output.15.3.8 A simple spellchecker.Summary.Further reading.Exercises16. Scripting.16.1 Pragmatics.16.1.1 Regular expressions.16.2 Case study: PYTHON.16.2.1 Values and types.16.2.2 Variables, storage, and control16.2.3 Bindings and scope.16.2.4 Procedural abstraction.16.2.5 Data abstraction.16.2.6 Separate compilation16.2.7 Module library.Summary.Further reading.Exercises.PART V: CONCLUSION.17. Language Selection.17.1 Criteria.17.2 Evaluation.Summary.Exercises.18. Language Design.18.1 Selection of concepts.18.2 Regularity.18.3 Simplicity.18.4 Efficiency.18.5 Syntax.18.6 Language life cycles.18.7 The future.Summary.Further reading.Exercises.Bibliography.Glossary.Index.

Cited by 63

Programming language concepts and paradigms

Choice Reviews Online · 1991

This book introduces the basic concepts that underlie functional, object-oriented and imperative programming languages. It then goes on to cover more advanced topics.

Cited by 90

Mathematical concepts in programming language semantics

Dana Scott · 1971

In mathematics after some centuries of development the semantical situation is very clean. This may not be surprising, as the subject attracts people who enjoy clarity, generality, and neatness. On the one hand we have our concepts of mathematical objects (numbers, relations, functions, sets), and on the other we have various formal means of expression. The mathematical expressions are generated for the most part in a very regular manner, and every effort is made to supply all expressions with denotations. (This is not always so easy to do. The theory of distributions, for example, provided a non-obvious construction of denotations for expressions of an operational calculus. The derivative operator was well serviced, but one still cannot multiply two distributions.)

Cited by 39