Computer Programming Overview
Outline ● Overview ● Paradigms ● Languages ● Popular Languages ● Choosing a Language ● Learning Resources ● Summary
Programming Overview
What is programming? ● Instructing a computer to carry out a task ● Creative process of turning ideas into software ● Empowers you to make computers do anything you want...?
Why do we program? ● A natural, satisfying and creative experience ● Enables accomplishments previously possible. ● Opens new world of intellectual endeavor ● It is cool, fun and potentially very rewarding ● Anyone can do it!
Programming Paradigms
A programming paradigm is... ● A way of building the structure and elements of computer programs
Procedural Languages
Structured Languages
Functional Languages
Object-oriented Languages
Multi-paradigm Languages ● Languages can support one or more paradigms
More recently… +
Programming Languages
Natural Language Examples ● Kids Make Nutritious Snacks ● Red Tape Holds Up New Bridge ● Police Squad Helps Dog Bite Victim ● Local High School Dropouts Cut in Half [ real news paper headlines, compiled by Rich Pattis ]
Generations ● Machine Language (1GL) o Very low level, tedious and error-prone ● Assembly Language (2GL) o Usually specific to a particular processor family and environment ● High-level Languages (3GL) o Independent of a particular type of computer hardware ● Fourth Generation Languages (4GL) o Provides a higher level of abstraction than 3GLs o Closer to natural human languages ● Natural Language o Ambiguous and hard for computer to understand
Languages
Common Features ● Data Types & Structures ● Operators, Conditionals and Loops ● Functions and Procedures ● Exception Handling
Choosing a Language
Where do you begin? ● Depends on your problem domain o High performance, low latency applications o Complex computation and data analysis o Embedded and control systems o Enterprise applications o Dynamic web applications, widgets and APIs o Computer graphics and animation o Computer and console games o Mobile applications and games
Choose a language that is... ● Best suited to the problem you are trying to solve ● Widely available o Runs on various hardware platforms o Supports multiple operating systems ● Widely used o Large, active community o Readily available libraries and frameworks
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Source: http://sogrady-media.redmonk.com/sogrady/files/2014/01/lang-rank-114-wm.png
Popular Languages
● Problem Domains o High performance applications o Complex computations o Embedded systems o Computer and console games o Mobile applications and games ● Communities o C - http://www.cprogramming.com o C++ - https://plus.google.com/communities/1 16007775542700637383 o Objective-C - https://plus.google.com/communities/1 03997592872376747208
● Problem Domains ● Client/server applications and APIs ● Mobile applications and games ● Communities o http://www.meetup.com/Londonjavaco mmunity/ o http://www.csharpforums.net o http://androidcommunity.com
● Problem Domains o Dynamic web sites and applications o Web Plugins and widgets o Web based games o Automation of system admin tasks o Popular choices for learning programming ● Communities o http://phpcommunity.org o https://www.python.org/community/ o https://www.ruby- lang.org/en/community/ o https://plus.google.com/communities/1 00875929141897651837
Learning Resources
Learning Resources ● Intensive Courses o http://www.makersacademy.com o https://generalassemb.ly ● Online courses o https://www.coursera.org/ o https://www.udacity.com/ o https://developers.google.com/university/ ● Online tutorials o https://www.khanacademy.org/ o http://www.codecademy.com ● Other online resources o http://www.w3schools.com o http://learncodethehardway.org/
Aim of this Meetup Group ● Help you to Learn Computer Programming o Programming 101: Fundamentals o Programming 201: Hands-on Workshops o Coaching & Mentoring ● Build a fun and vibrant community of passionate programmers
Recommended Approach ● Find an interesting problem to solve ● Choose a language and learn the fundamentals and language features ● Practice, practice, practice….. ● Have fun!
● ...is really not just about learning a language ● Computer Programming in general involves a lot more… In Summary...
Think Big, Work Smart and Have Fun!
Questions?

Computer Programming Overview

  • 1.
  • 2.
    Outline ● Overview ● Paradigms ●Languages ● Popular Languages ● Choosing a Language ● Learning Resources ● Summary
  • 3.
  • 4.
    What is programming? ●Instructing a computer to carry out a task ● Creative process of turning ideas into software ● Empowers you to make computers do anything you want...?
  • 5.
    Why do weprogram? ● A natural, satisfying and creative experience ● Enables accomplishments previously possible. ● Opens new world of intellectual endeavor ● It is cool, fun and potentially very rewarding ● Anyone can do it!
  • 6.
  • 7.
    A programming paradigmis... ● A way of building the structure and elements of computer programs
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    Multi-paradigm Languages ● Languagescan support one or more paradigms
  • 13.
  • 14.
  • 15.
    Natural Language Examples ●Kids Make Nutritious Snacks ● Red Tape Holds Up New Bridge ● Police Squad Helps Dog Bite Victim ● Local High School Dropouts Cut in Half [ real news paper headlines, compiled by Rich Pattis ]
  • 16.
    Generations ● Machine Language(1GL) o Very low level, tedious and error-prone ● Assembly Language (2GL) o Usually specific to a particular processor family and environment ● High-level Languages (3GL) o Independent of a particular type of computer hardware ● Fourth Generation Languages (4GL) o Provides a higher level of abstraction than 3GLs o Closer to natural human languages ● Natural Language o Ambiguous and hard for computer to understand
  • 17.
  • 18.
    Common Features ● DataTypes & Structures ● Operators, Conditionals and Loops ● Functions and Procedures ● Exception Handling
  • 19.
  • 20.
    Where do youbegin? ● Depends on your problem domain o High performance, low latency applications o Complex computation and data analysis o Embedded and control systems o Enterprise applications o Dynamic web applications, widgets and APIs o Computer graphics and animation o Computer and console games o Mobile applications and games
  • 21.
    Choose a languagethat is... ● Best suited to the problem you are trying to solve ● Widely available o Runs on various hardware platforms o Supports multiple operating systems ● Widely used o Large, active community o Readily available libraries and frameworks
  • 22.
  • 23.
  • 24.
  • 25.
    ● Problem Domains oHigh performance applications o Complex computations o Embedded systems o Computer and console games o Mobile applications and games ● Communities o C - http://www.cprogramming.com o C++ - https://plus.google.com/communities/1 16007775542700637383 o Objective-C - https://plus.google.com/communities/1 03997592872376747208
  • 26.
    ● Problem Domains ●Client/server applications and APIs ● Mobile applications and games ● Communities o http://www.meetup.com/Londonjavaco mmunity/ o http://www.csharpforums.net o http://androidcommunity.com
  • 27.
    ● Problem Domains oDynamic web sites and applications o Web Plugins and widgets o Web based games o Automation of system admin tasks o Popular choices for learning programming ● Communities o http://phpcommunity.org o https://www.python.org/community/ o https://www.ruby- lang.org/en/community/ o https://plus.google.com/communities/1 00875929141897651837
  • 28.
  • 29.
    Learning Resources ● IntensiveCourses o http://www.makersacademy.com o https://generalassemb.ly ● Online courses o https://www.coursera.org/ o https://www.udacity.com/ o https://developers.google.com/university/ ● Online tutorials o https://www.khanacademy.org/ o http://www.codecademy.com ● Other online resources o http://www.w3schools.com o http://learncodethehardway.org/
  • 32.
    Aim of thisMeetup Group ● Help you to Learn Computer Programming o Programming 101: Fundamentals o Programming 201: Hands-on Workshops o Coaching & Mentoring ● Build a fun and vibrant community of passionate programmers
  • 33.
    Recommended Approach ● Findan interesting problem to solve ● Choose a language and learn the fundamentals and language features ● Practice, practice, practice….. ● Have fun!
  • 34.
    ● ...is reallynot just about learning a language ● Computer Programming in general involves a lot more… In Summary...
  • 35.
    Think Big, WorkSmart and Have Fun!
  • 37.

Editor's Notes

  • #5 Using pre-packaged software is not programming!
  • #9 Notes: Structural and Procedural paradigms were at the beginning of the computing era, and thereabouts also existed the Functional paradigm. Some languages are designed to support one particular paradigm (Smalltalk supports object-oriented programming, Haskell supports functional programming), while other programming languages support multiple paradigms (such as Object Pascal, C++, Java, C#, Scala,Visual Basic, Common Lisp, Scheme, Perl, Python, Ruby,Oz and F#). For example, programs written in C++ or Object Pascal can be purely procedural, purely object-oriented, or they can contain elements of both or other paradigms. Software designers and programmers decide how to use those paradigm elements. The next advance was the development of procedural languages. These third-generation languages (the first described as high-level languages) use vocabulary related to the problem being solved. For example, COBOL (COmmon Business Oriented Language) – uses terms like file, move and copy. FORTRAN (FORmula TRANslation) – using mathematical language terminology, it was developed mainly for scientific and engineering problems. ALGOL (ALGOrithmic Language) – focused on being an appropriate language to define algorithms, while using mathematical language terminology and targeting scientific and engineering problems just like FORTRAN. PL/I (Programming Language One) – a hybrid commercial/scientific general purpose language supporting pointers. BASIC (Beginners All purpose Symbolic Instruction Code) – it was developed to enable more people to write programs. C – a general-purpose programming language, initially developed by Dennis Ritchie between 1969 and 1973 at AT&T Bell Labs. All these languages follow the procedural paradigm. That is, they describe, step by step, exactly the procedure that should, according to the particular programmer at least, be followed to solve a specific problem. The efficacy and efficiency of any such solution are both therefore entirely subjective and highly dependent on that programmer's experience, inventiveness and ability.
  • #10 Notes: Structural and Procedural paradigms were at the beginning of the computing era, and thereabouts also existed the Functional paradigm. Some languages are designed to support one particular paradigm (Smalltalk supports object-oriented programming, Haskell supports functional programming), while other programming languages support multiple paradigms (such as Object Pascal, C++, Java, C#, Scala,Visual Basic, Common Lisp, Scheme, Perl, Python, Ruby,Oz and F#). For example, programs written in C++ or Object Pascal can be purely procedural, purely object-oriented, or they can contain elements of both or other paradigms. Software designers and programmers decide how to use those paradigm elements. The next advance was the development of procedural languages. These third-generation languages (the first described as high-level languages) use vocabulary related to the problem being solved. For example, COBOL (COmmon Business Oriented Language) – uses terms like file, move and copy. FORTRAN (FORmula TRANslation) – using mathematical language terminology, it was developed mainly for scientific and engineering problems. ALGOL (ALGOrithmic Language) – focused on being an appropriate language to define algorithms, while using mathematical language terminology and targeting scientific and engineering problems just like FORTRAN. PL/I (Programming Language One) – a hybrid commercial/scientific general purpose language supporting pointers. BASIC (Beginners All purpose Symbolic Instruction Code) – it was developed to enable more people to write programs. C – a general-purpose programming language, initially developed by Dennis Ritchie between 1969 and 1973 at AT&T Bell Labs. All these languages follow the procedural paradigm. That is, they describe, step by step, exactly the procedure that should, according to the particular programmer at least, be followed to solve a specific problem. The efficacy and efficiency of any such solution are both therefore entirely subjective and highly dependent on that programmer's experience, inventiveness and ability.
  • #11 Lisp Haskell Clojure
  • #12 Examples Java C++ Smalltalk Scala
  • #14 Examples Java Clojure Scala
  • #17 Natural Language Examples Kids Make Nutritious Snacks Red Tape Holds Up New Bridge Police Squad Helps Dog Bite Victim Local High School Dropouts Cut in Half [ real news paper headlines, compiled by Rich Pattis ]
  • #19 In computer science, primitive data type is either of the following:[citation needed] a basic type is a data type provided by a programming language as a basic building block. Most languages allow more complicated composite types to be recursively constructed starting from basic types. a built-in type is a data type for which the programming language provides built-in support. In most programming languages, all basic data types are built-in. In addition, many languages also provide a set of composite data types. Opinions vary as to whether a built-in type that is not basic should be considered "primitive".[citation needed] The actual range of primitive data types that is available is dependent upon the specific programming language that is being used. For example, in C, strings are a composite but built-in data type, whereas in modern dialects of BASIC and in JavaScript, they are assimilated to a primitive data type that is both basic and built-in. Classic basic primitive types may include: Character (character, char); Integer (integer, int, short, long, byte) with a variety of precisions; Floating-point number (float, double, real, double precision); Fixed-point number (fixed) with a variety of precisions and a programmer-selected scale. Boolean, logical values true and false. Reference (also called a pointer or handle), a small value referring to another object's address in memory, possibly a much larger one. More sophisticated types which can be built-in include: The Boolean type represents the values true and false. Although only two values are possible, they are rarely implemented as a single binary digit for efficiency reasons. Many programming languages do not have an explicit boolean type, instead interpreting (for instance) 0 as false and other values as true. Character and string types can store sequences of characters from a character set such as ASCII. Since most character sets include the digits, it is possible to have a numeric string, such as"1234". However, many languages would still treat these as belonging to a different type to the numeric value 1234 Any type that does not specify an implementation is an abstract data type. Abstract types can be handled by code that does not know or "care" what underlying types are contained in them. Programming that is agnostic about concrete data types is called generic programming. Arrays and records can also contain underlying types, but are considered concrete because they specify how their contents or elements are laid out in memory.
  • #21 High performance, complex computation - weather prediction, mathematical simulation, Embedded systems (e.g. cars, traffic lights, MRI scanners)
  • #25 http://norvig.com/21-days.html
  • #26 http://arihant427.blogspot.co.uk/2014/12/overview-of-c-language.html
  • #28 Python - great first language for beginners available on multiple platforms Ruby - “...focus on simplicity and productivity with an elegant syntax that is natural to read and easy to write” - www.ruby-lang.org PHP - Usually for web programming and “hackers” language of choice
  • #30 http://www.mooc-list.com/course/programming-everybody-coursera https://www.coursera.org/course/pythonlearn