51,746 research outputs found
Foundations of Programming Languages
This clearly written textbook provides an accessible introduction to the three programming paradigms of object-oriented/imperative, functional, and logic programming. Highly interactive in style, the text encourages learning through practice, offering test exercises for each topic covered. Review questions and programming projects are also presented, to help reinforce the concepts outside of the classroom. This updated and revised new edition features new material on the Java implementation of the JCoCo virtual machine
Logic programming in the context of multiparadigm programming: the Oz experience
Oz is a multiparadigm language that supports logic programming as one of its
major paradigms. A multiparadigm language is designed to support different
programming paradigms (logic, functional, constraint, object-oriented,
sequential, concurrent, etc.) with equal ease. This article has two goals: to
give a tutorial of logic programming in Oz and to show how logic programming
fits naturally into the wider context of multiparadigm programming. Our
experience shows that there are two classes of problems, which we call
algorithmic and search problems, for which logic programming can help formulate
practical solutions. Algorithmic problems have known efficient algorithms.
Search problems do not have known efficient algorithms but can be solved with
search. The Oz support for logic programming targets these two problem classes
specifically, using the concepts needed for each. This is in contrast to the
Prolog approach, which targets both classes with one set of concepts, which
results in less than optimal support for each class. To explain the essential
difference between algorithmic and search programs, we define the Oz execution
model. This model subsumes both concurrent logic programming
(committed-choice-style) and search-based logic programming (Prolog-style).
Instead of Horn clause syntax, Oz has a simple, fully compositional,
higher-order syntax that accommodates the abilities of the language. We
conclude with lessons learned from this work, a brief history of Oz, and many
entry points into the Oz literature.Comment: 48 pages, to appear in the journal "Theory and Practice of Logic
Programming
CS 3180/5180: Comparative Languages
This course will introduce fundamental concepts and paradigms underlying the design of modern programming languages. For concreteness, we study the details of an object-oriented language (e.g. Java, C#, C++), a functional language (e.g., Scheme, and get introduced to multiparadigm languages (e.g., Python, Scala). The overall goal is to enable comparison and evaluation of existing languages. The programming assignments will largely be coded in Java and in Scheme, and optionally in Python or Scala
Adoption of Python in arts faculties of Sri Lankan universities
A variety of programming languages are used to teach fundamentals of programming in
Universities in Sri Lanka. Among them Python is a modern language with readable and
clean syntax. Python is a widely used high-level, general-purpose, interpreted, dynamic
programming language. Its design philosophy emphasizes code readability, and its syntax
allows programmers to express concepts in fewer lines of code than possible in languages
such as C++ or Java. The language provides constructs intended to enable writing clear
programs on both a small and large scale. Python supports multiple programming
paradigms, including object-oriented, imperative, functional programming,
and procedural styles. It features a dynamic type system and automatic memory
management and has a large and comprehensive standard library. Its design was informed
by experiences with other teaching languages so it is considered suitable for such use.
However some universities teach PASCAL which is rarely used now. In this research I will
discuss the possibility of replacing this Pascal with Python
Recommended from our members
Reusability in software engineering
This paper surveys recent work concerning reusability in software engineering. The current directions in software reusability are discussed, and the two major approaches of reusable building blocks and reusable patterns studied. An extensive bibliography, parts of which are annotated, is included
Objects in Oz
The programming language Oz integrates the paradigms of imperative, functional
and concurrent constraint programming in a computational framework of unprecedented
breadth, featuring stateful programming through cells, lexically scoped
higher-order programming, and explicit concurrency synchronized by logic variables.
Object-oriented programming is another paradigm that provides a set of concepts
useful in software practice. In this thesis we address the question how
object-oriented programming can be suitably supported in Oz. As a lexically
scoped higher-order language, Oz can express a wide range of object-oriented
concepts. We present a simple yet expressive object system, demonstrate its usability
and outline an efficient implementation. A central aspect of Oz is its support
for concurrent computation. We examine the impact of concurrency on the
design of an object system and explore the use of objects in concurrent programming.Die Programmiersprache Oz verbindet die Paradigmen der imperativen, funktionalen und nebenläufigen Constraint-Programmierung in einem kohärenten Berechnungsmodell. Oz unterstützt zustandsbehaftete Programmierung, Programmierung höherer Ordnung mit lexikalischer Bindung und explizite Nebenläufigkeit, die mithilfe logischer Variablen synchroniziert werden kann. In der Softwarepraxis hat sich mit der objekt-orientierten Programmierung ein weiteres Programmierparadigma etabliert. In der vorliegenden Arbeit beschäftige ich mich mit der Frage, wie objekt-orientierte Programmierung in geeigneter Weise in Oz unterstützt werden kann. Ich stelle ein einfaches und doch ausdrucksstarkes Objektsystem vor, belege seine Benutzbarkeit und umreiße seine effiziente Implementierung. Ein zentraler Aspekt der Programmiersprache Oz ist ihre Unterstützung nebenläufiger Berechnung. Infolgedessen nimmt die Untersuchung des Ein- flusses der Nebenläufigkeit auf das Design des Objektsystems einen besonderen Rang ein. Ich untersuche die Möglichkeiten, die das Objektsystem bietet, um nebenläufige objekt-orientierte Programmiertechniken auszudrücken
Introducing Java : the case for fundamentals-first
Java has increasingly become the language of choice for teaching introductory programming. In this paper, we examine the different approaches to teaching Java (Objects-first, Fundamentals-first and GUI-first) to ascertain whether there exists an agreed ordering of topics and difficulty levels between nine relatively basic Java topics. The results of our literature survey and student questionnaire suggests that the Fundamentals-first approach may have benefits from the student's point of view and an agreed ordering of the Java topics accompanying this approach has been established
- …