Do general-purpose programming languages have a future?
|
|
|
- Susan Cannon
- 10 years ago
- Views:
Transcription
1 Do general-purpose programming languages have a future? Bjarne Stroustrup Texas A&M University (and AT&T Research)
2 Abstract As the computing world matures, the roles of computer professionals are becoming more specialized. In particular, a programmer can spend a whole career doing work in embedded systems or data analysis without a need to gain expertise in other fields. Would such programmers be best served by completely different special-purpose languages? What are the fundamental and commercial factors that drive language evolution? What are the roles of program development environments, libraries, and tools? I think that general-purpose languages will have a key role in the programming world, but that the role will evolve and differ from what most people think of today. To make the discussion a bit concrete, I'll base some of my observations on examples from current C++ and its possible future developments.
3 Intellectual tradition My background (think Cambridge and Bell labs) Pragmatic/empirical Build the system the best you can, try it out, measure it, analyze it, fix it, then write about it Primarily considers systems to be used by others Idealistic The best system should win Even if it isn t mine There are usually many different criteria for best Individual needs, taste, and opinions matter There are unacceptable ways of winning Lies (incl. gross exaggeration), money, many forms of marketing
4 My perspective Researcher (Ideas and systems can be fascinating by all by themselves) Research manager (yes, I can budget; I count costs and estimate economic benefits) Consultant (usually unpaid so I don t have to tell people what they want to hear) Teacher (mostly to professional programmers and managers) Academic (that s a recent development) My bias: Applications with a high systems programming component Industrial applications Software is a very serious business lives depend on software key aspects of our civilization runs on software
5 Caveat My world view is heavily influenced by C++ And C++ reflects my world view in many ways I don t consider C++ an ideal language It s a most useful language ( I suspect I know its weaknesses as better than most people E.g. irregular syntax and imperfect type system No language is perfect I like programming languages I don t think there could be or should be just one language or just one kind of language What we want/need is good software A language is (just) a tool There is no perfect language, and there never will be
6 Overview What is a general-purpose language? And why would anyone care? What are the advantages of Special-purpose languages? General-purpose languages? Key examples Object model Container models Ideals for a general-purpose language How might this apply to C++?
7 Do general-purpose programming languages have a future? For me, this is not just an academic question Should I continue to work on C++? Should I aim for generality? Should I try to guide C++ into a (safe) niche? (yes, yes, no) In general our answer has implications on how we structure systems what we teach where we spend resources Research Tools
8 Programming languages For every one problem/purpose, the ideal language is a special-purpose one. Examples: Modeling mechanical systems (e.g. car engine, transmission) Stereoscopic display of molecules Engineering math (e.g. symbolic, numeric, visualization) Video game engine (e.g. DOOM) Graphical (e.g. GC) Text manipulation (e.g. layout, analysis, transformation) 2D and 3D Layout (e.g., architectural, chip design, graphics) Graph computation (e.g. routing) Expert systems (e.g. training simulators) We can t always afford our ideals So how can we best approximate them?
9 What can a language do for a programmer? No single language feature is essential Lots of good programs have been written in languages deemed bad C, Cobol, Fortran, Lots of projects have failed in languages proclaimed great Most failing projects use a fashionable/popular language A language cannot Prevent ill-conceived design strategies Prevent ill-conceived implementation strategies A language can help a programmer to express concepts directly express independent concepts separately in general affordably
10 Why do we specialize languages? To radically simplify expression of ideas To provide stronger guarantees To make programming easier for People who are not professional programmers But understand an application domain far better than programmers and computer scientists Novices (students) This can be dangerous The less smart and less highly educated to be able to use more and cheaper programmers (this also can be dangerous) When done well, this necessarily limits the area of application
11 Problems with special-purpose languages By definition, an S-P language has an edge beyond which a problem cannot be expressed So how do we reason about problems beyond the edge You can t reason without concepts, without a language How do we extend the S-P language? Modify compiler Add new primitive Link to program fragment written in another language Another S-P language? A low-level language (e.g. C or assembler) A general-purpose language with a suitable library Some problems are messy We don t (yet) have a formal model that could be supported by a special-purpose (domain specific) language
12 What is a general-purpose programming language? Originally Without specific restrictions of expressiveness or performance At least as expressive as Algol 60 Without special facilities and restrictions for commercial or scientific programming Not (just) COBOL Not (just) Fortran PL\1 was the original attempt to unify the programming world Of course it simply added one more faction Once in significant use, a language doesn t die And it wasn t better than Fortran and COBOL in their core areas So the special-purpose languages won round #1
13 Consider application areas (We re come a long way since the days of Algol 60) Fuel injectors Cell phones & systems PDAs Switching systems Games Individual business applications Database-based transaction systems Airspace control systems Expert systems Symbol manipulation Enterprise systems Data mining Scientific/numeric applications Parallel computing Missile guidance Robotics, Telemetry Speech recognition/analysis Compilers Natural language analyzer Image processing Image analysis Medical instrument control Payroll systems Billing systems Airline reservation systems systems Web browsers VLSI layout Chemical engineering process control Device drivers Electronic trading Engine control Graphics Geometric modeling, Operating systems
14 What is a general-purpose programming language? Do we have a general-purpose language? Can a language be consider general-purpose if we can t use it to write a device driver? an operating system? a text analysis application? a record processing database-intensive application? an expert-system symbolic manipulation application? a web commerce application? an engineering/numeric application? We have G-P languages in the sense that we can use them for all such purposes We don t have a G-P language in the sense that a language is a close-to ideal for all such purposes A G-P language is at best the second choice for any one application
15 What s right about a G-P language? You can do everything in it You can do any two tasks in it And that s by definition rarely the case for a special-purpose language You can with a high probability collaborate with someone in a different field Share source or link But Doing anything without proper libraries is painful Getting libraries from different producers to work together in non-trivial A general-purpose language rely on abstraction where specialpurpose languages rely on built-in specialized features To improve a general-purpose language, we must strengthen its abstraction mechanisms
16 There will always be many languages Significant systems rely on code written in many languages Not just legacy code There are hundreds of millions of lines of code out there legacy code approximately means code that s being used Programmers are often more important than code And programmers differ in their preferences of languages, tools, and programming styles A general-purpose language must enable (and preferably encourage and ease) interoperability
17 Which G-P languages do we currently have? Candidates Ada, C, C++, C# (?), Java (?), ML (?), Pascal(?) Not candidates PERL, Visual Basic, Python COBOL, Fortran There are N*1000 languages Domain specific Dead Unsupported Academic Platform specific Proprietary
18 Do G-P programming languages have a future? Of course, but should they have? yes Just for legacy code? no Would the world be better without them? No, we can t manage with just special-purpose languages Explorations of new/immature fields Implementation of special-purpose languages As glue for special-purpose languages Should we try to improve them? Yes, none is anywhere perfect What is it about G-P languages that we might improve? Abstraction facilities Interoperability Performance
19 Can you restrict programming style? Type safety is good Not a restriction except when dealing with hardware Complete type safety implies garbage collection for some degree of generality Forcing object orientation has been a failure methods that can t be overridden methods that doesn t operator on an object Classes have been successful as modules, though Strongly condemned features are making a comeback Overloading Generic programming Nested classes / events Multiple inheritance Static type checking Value types
20 Programming Styles (paradigms) A G-P language will be used for different paradigms C style ( Pascal style ) Procedures, structures, pointers Data abstraction Object-Oriented Programming Generic Programming Constraints Logical Rule-based Aspect-oriented A general-purpose language needs broad support for paradigms Multi-paradigm programming
21 Languages stretch C++ is a stretch language - Peter Deutch (it was not meant to be a compliment) All languages stretch to serve a larger user community By serving A and B you server both A and B better than just serving A or B Need to serve related uses Need to help users meet new challenges Applying lessons of experience Pressure from other languages Languages never shrink Older language have many features Some mainly for historical reasons (compatibility) warts Typically offer several ways of doing something All languages are older when they become mainstream
22 Languages stretch Pascal Borland Pascal C ML C++ C# Modula-3 Java??? Simula Smalltalk Classes, inheritance, exceptions, generics, abstract classes, overloading, value types, properties, reflection, type safety, garbage collection, modules, etc. Simplified chart: C, C++, and Java have evolved significantly Critical design points: how to handle hardware How to handle performance needs
23 Is C a G-P Language? No It s a low-level language It offers hardly any type safety It offers no advanced features It offers no specific abstraction mechanisms Yes It is used for a wider range of applications than any other language Except C++ It offers practical portability It runs on essentially every platform It offers performance that allows programmers to compensate for lack of advanced features It interoperates with essentially all languages
24 Is Java a G-P language? No It s an Object-oriented language It can t handle low-level systems programming It can t handle high-performance computing It s strengths comes partly from restriction It s a platform Give up portability and you can handle a wider range of applications Yes It can do more than Algol60 It can handle an huge range of applications well enough It is becoming a stretch language Several editions to increase its range of underlying systems At the cost of portability Many new language features over the years
25 Is it fair to consider performance? Yes, performance often matters Commerce: amazon, google, Amadeus, Images: medical, movies, games, Gadgets: cell phones, fuel injectors, Scientific computation: protein folding, heat transfer, weather forecasting, Data management: mining, data capture, real time analysis (e.g. fraud detection, monitoring), DBMS, Naturally, performance isn t always important Often, it is not But I can see echo delays in some modern single-user text processing systems running on a GHz machine (I consider that a disgrace)
26 A general-purpose language must efficient In time In space Where needed Predictably Portably (this is a very tough challenge)
27 Object models Primitive object 1 Composite object 1 2 Object on heap 1 2 Polymorphic object info 1 2 Consider Fortran, C, C++, Java, C# Interoperability Hardware access Type info
28 Object model C container struct Cmplx { double re, im; }; struct Cmplx a[max] ; struct Cmplx *p = a; Struct Cmplx *q = malloc(sizeof(struct Cmplx)*MAX); Can address specific hardware locations directly bytes, half-words, words, double words, etc. Can match externally imposed layout exactly (bit fields) Explicit management of heap (2 words per array overhead)
29 Object model C++ container class complex { double re, im; public: /* operations and operators */ }; vector<complex> v; size alloc Space for growth Like C plus abstraction Enables, but doesn t require run-time range checking User-defined types are fundamentally similar to built-in types 4 words per vector overhead
30 Object model Java/C# container class Complex { double re, im; /* operations and operators */ }; Complex[] v = new Complex[2]; v[0] = new Complex(1,2); References plus data on (garbage collected) heap Built-in types differ from user-defined types 2 words per vector plus 2 words per element overhead
31 Key example: Container access Most basic: C array (support for contiguous sequence of element of built-in types; that s what traditional hardware supports) int a[4]; a[2] = 7; int x = a[2]; // holds objects directly struct My_type p = 0; void* aa[4]; // indirection needed for polymorphism aa[2] = p; p = (struct My_type*) aa[2]; // explicit, efficient, and // unchecked conversion (unsafe)
32 Key example: Container access Container of general ( universal ) object Java, C#, (and C++ if you really want to) int[] a = new int[10]; // special case for Array and small built-in types a[5] = 5; int x = a[5]; ArrayList aa = new ArrayList(10); // container of references to objects aa[5] = new My_class(3); My_class v = (My_class)aa[5]; // explicit run-time check That cast is ugly, expensive, and often logically unnecessary
33 Key example: Container access Typed container C++ (and soon Java and C#) // no special case for small built-in types (in C++ at least) Vector<My_class> vmc[10]; // state the element type explicitly vmc[5] = My_class(3); My_class v = vmc[5]; C++ no run-time test elements are access directly (store pointer if you want indirection) C#, Java: implicit (expensive) run-time test elements are still stored indirectly
34 Roles for a general-purpose language Language for writing libraries Language for writing messy application parts Language for writing performance critical application parts Target for code generation Low-level glue language (e.g. C, unsafe, fast) As opposed to scripting languages Higher-level glue language (e.g. Java, safe, slow) Language for writing complete applications (?) Only through libraries, increasingly through libraries Teaching language (?) It is much easier to teach a simplified language Where, when, and how do you learn about real-world problems and constraints?
35 Can a general-purpose language be completely type safe? Depends on your definition Strictly-speaking: No But complete type safety is an advantage for a huge range of uses Probably unfair to deem a language that has a large stretch not general-purpose We need to improve interoperability between type safe and (typically unsafe) low-level languages Verification/proof techniques Clear (and non-proprietary) interfaces Clearly declared unsafe program areas (like Modula-3)
36 Ideals for a G-P language Simplicity Incl. teachability Precise specification Easy to analyze Run-time performance uncompromising Ability to run everywhere And take advantage of local facilities Type safety And a facility to do type-unsafe operations Extensibility Good abstraction facilities Ability to interoperate With code from different implementations With code from different languages
37 Can any of this be used to improve C++? C++0x is being prepared by the ISO C++ committee Plus national representatives, of course Design by committee is a horror Committees don t have an overall aim/ vision (some) Individuals do (and they don t agree) Compromises are needed a language good enough for everyone and ideal for none Only a committee can deal with an established mainstream language the ISO committee process is the worst, except for all the alternatives (with apologies to W. Churchill)
38 Overall Goals Make C++ a better language for systems programming and library building Rather than providing specialized facilities for a particular sub-community (e.g. numeric computation or Windows application development) Maintain the zero-overhead principle Make C++ easier to teach and learn Through increased uniformity, stronger guarantees, and facilities supportive of novices (there will always be more novices than experts) Through better libraries
39 So, do general-purpose programming languages have a future? Yes And we still have a long way to go to meet obvious ideals Type safety Elegant and general abstraction Performance Interoperability Teachability Regular syntax and semantics Look to C, C++, C#, Java That s where the major use that shapes demands will be Ideas can come from experimental languages
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
What is a programming language?
Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
Evolution of the Major Programming Languages
142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
CSE 130 Programming Language Principles & Paradigms
CSE 130 Programming Language Principles & Paradigms Thomas A. Powell [email protected] Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework
White Paper: 5GL RAD Development
White Paper: 5GL RAD Development After 2.5 hours of training, subjects reduced their development time by 60-90% A Study By: 326 Market Street Harrisburg, PA 17101 Luis Paris, Ph.D. Associate Professor
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
Chapter 12 Programming Concepts and Languages
Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution
Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design
Java in Education Introduction Choosing appropriate tool for creating multimedia is the first step in multimedia design and production. Various tools that are used by educators, designers and programmers
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.
Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
Programming Languages & Tools
4 Programming Languages & Tools Almost any programming language one is familiar with can be used for computational work (despite the fact that some people believe strongly that their own favorite programming
Fall 2012 Q530. Programming for Cognitive Science
Fall 2012 Q530 Programming for Cognitive Science Aimed at little or no programming experience. Improve your confidence and skills at: Writing code. Reading code. Understand the abilities and limitations
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
CS 40 Computing for the Web
CS 40 Computing for the Web Art Lee January 20, 2015 Announcements Course web on Sakai Homework assignments submit them on Sakai Email me the survey: See the Announcements page on the course web for instructions
Why (and Why Not) to Use Fortran
Why (and Why Not) to Use Fortran p. 1/?? Why (and Why Not) to Use Fortran Instead of C++, Matlab, Python etc. Nick Maclaren University of Cambridge Computing Service [email protected], 01223 334761 June 2012
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation
Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology
Peter Mileff PhD SOFTWARE ENGINEERING The Basics of Software Engineering University of Miskolc Department of Information Technology Introduction Péter Mileff - Department of Information Engineering Room
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
The Fastest Way to Parallel Programming for Multicore, Clusters, Supercomputers and the Cloud.
White Paper 021313-3 Page 1 : A Software Framework for Parallel Programming* The Fastest Way to Parallel Programming for Multicore, Clusters, Supercomputers and the Cloud. ABSTRACT Programming for Multicore,
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
Generalizing Overloading for C++2000
Generalizing Overloading for C++2000 Bjarne Stroustrup AT&T Labs, Florham Park, NJ, USA Abstract This paper outlines the proposal for generalizing the overloading rules for Standard C++ that is expected
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Introduction to Software Paradigms & Procedural Programming Paradigm
Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Computer Information Systems (CIS)
Computer Information Systems (CIS) CIS 113 Spreadsheet Software Applications Prerequisite: CIS 146 or spreadsheet experience This course provides students with hands-on experience using spreadsheet software.
CSC 272 - Software II: Principles of Programming Languages
CSC 272 - Software II: Principles of Programming Languages Lecture 1 - An Introduction What is a Programming Language? A programming language is a notational system for describing computation in machine-readable
Software: Systems and. Application Software. Software and Hardware. Types of Software. Software can represent 75% or more of the total cost of an IS.
C H A P T E R 4 Software: Systems and Application Software Software and Hardware Software can represent 75% or more of the total cost of an IS. Less costly hdwr. More complex sftwr. Expensive developers
High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
How To Understand Programming Languages And Programming Languages
Objectives Differentiate between machine and and assembly languages Describe Describe various various ways ways to to develop develop Web Web pages pages including including HTML, HTML, scripting scripting
programming languages, programming language standards and compiler validation
Software Quality Issues when choosing a Programming Language C.J.Burgess Department of Computer Science, University of Bristol, Bristol, BS8 1TR, England Abstract For high quality software, an important
Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1
The Role of Programming in Informatics Curricula A. J. Cowling Department of Computer Science University of Sheffield Structure of Presentation Introduction The problem, and the key concepts. Dimensions
History OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
.NET and J2EE Intro to Software Engineering
.NET and J2EE Intro to Software Engineering David Talby This Lecture.NET Platform The Framework CLR and C# J2EE Platform And Web Services Introduction to Software Engineering The Software Crisis Methodologies
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING
COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University
Enterprise Mobile Application Development: Native or Hybrid?
Enterprise Mobile Application Development: Native or Hybrid? Enterprise Mobile Application Development: Native or Hybrid? SevenTablets 855-285-2322 [email protected] http://www.seventablets.com
Mobile web apps: The best option for business? A whitepaper from mrc
Mobile web apps: The best option for business? A whitepaper from mrc Introduction Mobile apps have finally reached the point where businesses can no longer afford to ignore them. Recent surveys and studies
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Domains and Competencies
Domains and Competencies DOMAIN I TECHNOLOGY APPLICATIONS CORE Standards Assessed: Computer Science 8 12 I VII Competency 001: The computer science teacher knows technology terminology and concepts; the
The Design of the Inferno Virtual Machine. Introduction
The Design of the Inferno Virtual Machine Phil Winterbottom Rob Pike Bell Labs, Lucent Technologies {philw, rob}@plan9.bell-labs.com http://www.lucent.com/inferno Introduction Virtual Machine are topical
Programming Language Inter-conversion
Programming Language Inter-conversion Dony George Priyanka Girase Mahesh Gupta Prachi Gupta Aakanksha Sharma FCRIT, Vashi Navi Mumbai ABSTRACT In this paper, we have presented a new approach of programming
Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
ATSBA: Advanced Technologies Supporting Business Areas. Programming with Java. 1 Overview and Introduction
ATSBA: Advanced Technologies Supporting Business Areas Programming with Java 1 Overview and Introduction 1 1 Overview and Introduction 1 Overview and Introduction 1.1 Programming and Programming Languages
Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages
Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please
School of Computer Science
School of Computer Science Computer Science - Honours Level - 2014/15 October 2014 General degree students wishing to enter 3000- level modules and non- graduating students wishing to enter 3000- level
Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child
Introducing A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child Bio Tim Child 35 years experience of software development Formerly VP Oracle Corporation VP BEA Systems Inc.
How To Teach Object Oriented Programming At An Introductory Level Course
149 TEACHING OBJECT ORIENTED PROGRAMMING AT THE INTRODUCTORY LEVEL Mehmet C. OKUR * ABSTRACT Teaching object oriented programming has become a rapidly expanding preference at various educational environments.
Fundamentals of Programming and Software Development Lesson Objectives
Lesson Unit 1: INTRODUCTION TO COMPUTERS Computer History Create a timeline illustrating the most significant contributions to computing technology Describe the history and evolution of the computer Identify
Developing Embedded Software in Java Part 1: Technology and Architecture
Developing Embedded Software in Java Part 1: Technology and Architecture by Michael Barr Embedded Systems Conference Europe The Netherlands November 16-18, 1999 Course #300 Sun s introduction of the Java
Python, C++ and SWIG
Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,
DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING
DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING Fall 2000 The instructions contained in this packet are to be used as a guide in preparing the Departmental Computer Science Degree Plan Form for the Bachelor's
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
3 SOFTWARE AND PROGRAMMING LANGUAGES
3 SOFTWARE AND PROGRAMMING LANGUAGES 3.1 INTRODUCTION In the previous lesson we discussed about the different parts and configurations of computer. It has been mentioned that programs or instructions have
Computer Science. 232 Computer Science. Degrees and Certificates Awarded. A.S. Degree Requirements. Program Student Outcomes. Department Offices
232 Computer Science Computer Science (See Computer Information Systems section for additional computer courses.) We are in the Computer Age. Virtually every occupation in the world today has an interface
UML for the C programming language.
Functional-based modeling White paper June 2009 UML for the C programming language. Bruce Powel Douglass, PhD, IBM Page 2 Contents 2 Executive summary 3 FunctionalC UML profile 4 Functional development
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Evolution of Java Zoran Budimlić (Rice University) The Beginnings Sun Microsystems 1990 - Create a language for delivering programs on small electronic
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Course Notes on A Short History of Database Technology
Course Notes on A Short History of Database Technology Traditional File-Based Approach Three Eras of Database Technology (1) Prehistory file systems hierarchical and network systems (2) The revolution:
Course Notes on A Short History of Database Technology
Course Notes on A Short History of Database Technology Three Eras of Database Technology (1) Prehistory file systems hierarchical and network systems (2) The revolution: relational database technology
Source Code Translation
Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven
Introduction to Python
1 Daniel Lucio March 2016 Creator of Python https://en.wikipedia.org/wiki/guido_van_rossum 2 Python Timeline Implementation Started v1.0 v1.6 v2.1 v2.3 v2.5 v3.0 v3.1 v3.2 v3.4 1980 1991 1997 2004 2010
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
COS 301 Programming Languages
Preliminaries COS 301 Programming Languages Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories
2! Multimedia Programming with! Python and SDL
2 Multimedia Programming with Python and SDL 2.1 Introduction to Python 2.2 SDL/Pygame: Multimedia/Game Frameworks for Python Literature: G. van Rossum and F. L. Drake, Jr., An Introduction to Python -
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile
Lesson 06: Basics of Software Development (W02D2
Lesson 06: Basics of Software Development (W02D2) Balboa High School Michael Ferraro Lesson 06: Basics of Software Development (W02D2 Do Now 1. What is the main reason why flash
The ObjectStore Database System. Charles Lamb Gordon Landis Jack Orenstein Dan Weinreb Slides based on those by Clint Morgan
The ObjectStore Database System Charles Lamb Gordon Landis Jack Orenstein Dan Weinreb Slides based on those by Clint Morgan Overall Problem Impedance mismatch between application code and database code
Software Development. Topic 1 The Software Development Process
Software Development Topic 1 The Software Development Process 1 The Software Development Process Analysis Design Implementation Testing Documentation Evaluation Maintenance 2 Analysis Stage An Iterative
How To Teach Computer Graphics
Computer Graphics Thilo Kielmann Lecture 1: 1 Introduction (basic administrative information) Course Overview + Examples (a.o. Pixar, Blender, ) Graphics Systems Hands-on Session General Introduction http://www.cs.vu.nl/~graphics/
Fundamentals of Programming Languages
A puzzle and a dilemma Suppose I want to capture/catch/slay crashing programs before they have a chance to run (=static type safety). Do I let this one go? let c = ref (fun x -> x) in c := (fun x -> x
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE
USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE Gonzalo Garcia VP of Operations, USA Property of GMV All rights reserved INTRODUCTION Property of GMV All rights reserved INTRODUCTION
