The Politics of Early Programming Languages

2021 ◽  
Vol 51 (3) ◽  
pp. 379-413
Author(s):  
David Nofre

There probably has never been such a controversial programming language as Algol. In the early 1960s the disciplinary success of the so-called Algol project in helping to forge the discipline of computer science was not matched by a significant adoption of the Algol language, in any of its three versions. This contrast is even more striking when considering the contemporary success of IBM’s Fortran, a language that, like Algol, was also conceived for scientific computation, but unlike Algol, initially only available for IBM computers. Through extensive archival research, this article shows how the relentless pursuit of a still better language that came to dominate the agenda of the Algol project brought to the fore the tension between the research-driven dimension of the project and the goal of developing a reliable programming language. Such a strong research-oriented agenda increased IBM’s doubts about a project that the firm already felt little urge to support. Yet IBM did not want to appear as obstructing the development of either Algol or Cobol, even if these “common languages” posed a clear risk to the firm’s marketing model. The US Department of Defense’s endorsement of Cobol and the rising popularity of Algol in Europe convinced IBM to push for the use of Fortran in Western Europe in order to protect the domestic market. IBM’s action in support of Fortran reminds us of the power imbalances that have shaped computer science.

2010 ◽  
Vol 20 (1) ◽  
pp. 3-18
Author(s):  
JOHN CLEMENTS ◽  
KATHI FISLER

AbstractMany computer science departments are debating the role of programming languages in the curriculum. These discussions often question the relevance and appeal of programming-languages content for today's students. In our experience, domain-specific, “little languages” projects provide a compelling illustration of the importance of programming-language concepts. This paper describes projects that prototype mainstream applications such as PowerPoint, TurboTax, and animation scripting. We have used these exercises as modules in non-programming languages courses, including courses for first year students. Such modules both encourage students to study linguistic topics in more depth and provide linguistic perspective to students who might not otherwise be exposed to the area.


If programming is understood not as the writing of instructions for this or that computing machine but as the design of methods of computation that it is the computer’s duty to execute (a difference that Dijkstra has referred to as the difference between computer science and computing science), then it no longer seems possible to distinguish the discipline of programming from constructive mathematics. This explains why the intuitionistic theory of types (Martin-Lof 1975 In Logic Colloquium 1973 (ed. H. E. Rose & J. C. Shepherdson), pp. 73- 118. Amsterdam: North-Holland), which was originally developed as a symbolism for the precise codification of constructive mathematics, may equally well be viewed as a programming language. As such it provides a precise notation not only, like other programming languages, for the programs themselves but also for the tasks that the programs are supposed to perform. Moreover, the inference rules of the theory of types, which are again completely formal, appear as rules of correct program synthesis. Thus the correctness of a program written in the theory of types is proved formally at the same time as it is being synthesized.


Author(s):  
Wilda Susanti, Et. al.

In this paper, we review the literature related to computer programming learning, where Algorithms and Programming are the topic domains of the Informatics and Computer science clusters. There are 4 competencies in learning outcomes, such as: 1) understand algorithmic concepts; 2) master algorithm concepts and principles; 3) master programming language concepts; and 4) master programming languages and algorithms. The main focus of this review is on beginner programming and topics related to student difficulties in learning programming. Various problems experienced by beginners were identified from the literature to some of the solutions offered by researchers.


2002 ◽  
Vol 67 (3) ◽  
pp. 1065-1077
Author(s):  
Raymond D. Gumb

AbstractThe Logic of Partial TermsLPTis a strict negative free logic that provides an economical framework for developing many traditional mathematical theories having partial functions. In these traditional theories, all functions and predicates are strict. For example, if a unary function (predicate) is applied to an undefined argument, the result is undefined (respectively, false). On the other hand, every practical programming language incorporates at least one nonstrict or lazy construct, such as the if-then-else, but nonstrict functions cannot be either primitive or introduced in definitional extensions inLPT. Consequently, lazy programming language constructs do not fit the traditional mathematical mold inherent inLPT. A nonstrict (positive free) logic is required to handle nonstrict functions and predicates.Previously developed nonstrict logics are not fully satisfactory because they are verbose in describing strict functions (which predominate in many programming languages), and some logicians find their semantics philosophically unpalatable. The newly developed Lazy Logic of Partial TermsLLis as concise asLPTin describing strict functions and predicates, and strict and nonstrict functions and predicates can be introduced in definitional extensions of traditional mathematical theories.LLis “built on top of”LPT. and, likeLPT, admits only one domain in the semantics. In the semantics, for the case of a nonstrict unary functionhin an LL theoryT, we have ⊨Th(⊥) =y↔ ∀x(h(x) = y), where ⊥ is a canonical undefined term. Correspondingly, in the axiomatization, the “indifference” (to the value of the argument) axiomh(⊥) =y↔ ∀x(h(x) = y)guarantees a proper fit with the semantics. The price paid forLL's naturalness is that it is tailored for describing a specific area of computer science, program specification and verification, possibly limiting its role in explicating classical mathematical and philosophical subjects.


2021 ◽  
Author(s):  
Francisco de Assis Zampirolli ◽  
Fernando Teubl ◽  
Guiou Kobayashi ◽  
Rogério Neves ◽  
Luiz Rozante ◽  
...  

Teaching programming logic by means of a single Programming Language (PL) may lead the whole process to a particular syntax and specific libraries. In order to let every student choose their preferred PL we have developed a method that includes didactic material in many PLs by means of notebooks in Colab. We created a filter that generates Lecture Notes in different combinations of PLs from these notebooks. Moreover, each student can choose different PLs to practice with exercises and send their solutions as programming codes, which are individualized because of the parametric questions generated with MCTest+Moodle+VPL. Herewith we present our method, which is easily adaptable, validated with 5 remote classes comprising a total of 221 students, whose average pass rate was 90%.


2015 ◽  
Vol 22 (1) ◽  
pp. 242
Author(s):  
Juliana Kaizer Vizzotto ◽  
Bruno Crestani Calegaro

To help the understanding and development of quantum algorithms there is an effort focused on the investigation of new semantic models and programming languages for quantum computing. Researchers in computer science have the challenge of deve loping programming languages to support the creation, analysis, modeling and simulation of high level quantum algorithms. Based on previous works that use monads inside the programming language Haskell to elegantly explain the odd characteristics of quantum computation (like superposition and entanglement), in this work we present a monadic Java library for quantum programming. We use the extension of the programming language Java called BGGA Closure, that allow the manipulation of anonymous functions (closures) inside Java. We exemplify the use of the library with an implementation of the Toffoli quantum circuit.


2008 ◽  
Vol 18 (5) ◽  
pp. 795-796
Author(s):  
ADRIANA COMPAGNONI ◽  
HEALFDENE GOGUEN

This special issue of Mathematical Structures in Computer Science is devoted to recent work in subtyping. When subtyping was first proposed, it presented a new vehicle for understanding programming languages, together with challenging theoretical issues. The papers in this special issue include a new approach to the decidability of subtyping, a metatheoretic investigation of transitivity of coercive subtyping for parametrised dependent types, and applications of subtyping to the classic programming language concerns of flow analysis and typing for distributed systems. We believe that the scope of the papers demonstrates convincingly that the theory and practice of subtyping continue to be extended in novel and interesting ways.


Author(s):  
Saqib Ali ◽  
Sammar Qayyum

Programming language debates are extremely common among programmers, computer science students and of course, software engineers. However, all of the above-mentioned professionals can concur that different languages excel in different scenarios. Software Engineers and programmers working on different projects can easily use different languages for different tasks during their work. Every year different programming languages are designed and created. In this Research, we will keep in focus the Four Horsemen of programming languages: C, C++, Python and Java; with respect to the criteria of time, speed and simplicity. The same optimized piece of pseudocode is used to write the code of the different programming languages mentioned above by following their respective syntax and rules. The results of the comparison will be displayed with the help of a table in order to simplify the final results for the reader.


2015 ◽  
pp. 30-53
Author(s):  
V. Popov

This paper examines the trajectory of growth in the Global South. Before the 1500s all countries were roughly at the same level of development, but from the 1500s Western countries started to grow faster than the rest of the world and PPP GDP per capita by 1950 in the US, the richest Western nation, was nearly 5 times higher than the world average and 2 times higher than in Western Europe. Since 1950 this ratio stabilized - not only Western Europe and Japan improved their relative standing in per capita income versus the US, but also East Asia, South Asia and some developing countries in other regions started to bridge the gap with the West. After nearly half of the millennium of growing economic divergence, the world seems to have entered the era of convergence. The factors behind these trends are analyzed; implications for the future and possible scenarios are considered.


2020 ◽  
Author(s):  
Cut Nabilah Damni

AbstrakSoftware komputer atau perangkat lunak komputer merupakan kumpulan instruksi (program atau prosedur) untuk dapat melaksanakan pekerjaan secara otomatis dengan cara mengolah atau memproses kumpulan intruksi (data) yang diberikan. (Yahfizham, 2019 : 19) Sebagian besar dari software komputer dibuat oleh (programmer) dengan menggunakan bahasa pemprograman. Orang yang membuat bahasa pemprograman menuliskan perintah dalam bahasa pemprograman seperti layaknya bahasa yang digunakan oleh orang pada umumnya dalam melakukan perbincangan. Perintah-perintah tersebut dinamakan (source code). Program komputer lainnya dinamakan (compiler) yang digunakan pada (source code) dan kemudian mengubah perintah tersebut kedalam bahasa yang dimengerti oleh komputer lalu hasilnya dinamakan program executable (EXE). Pada dasarnya, komputer selalu memiliki perangkat lunak komputer atau software yang terdiri dari sistem operasi, sistem aplikasi dan bahasa pemograman.AbstractComputer software or computer software is a collection of instructions (programs or procedures) to be able to carry out work automatically by processing or processing the collection of instructions (data) provided. (Yahfizham, 2019: 19) Most of the computer software is made by (programmers) using the programming language. People who make programming languages write commands in the programming language like the language used by people in general in conducting conversation. The commands are called (source code). Other computer programs called (compilers) are used in (source code) and then change the command into a language understood by the computer and the results are called executable programs (EXE). Basically, computers always have computer software or software consisting of operating systems, application systems and programming languages.


Sign in / Sign up

Export Citation Format

Share Document