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 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!
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
20. 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
21. 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
25. ● 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
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
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
29. 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/
30.
31.
32. 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
33. Recommended Approach
● Find an interesting problem to solve
● Choose a language and learn the
fundamentals and language features
● Practice, practice, practice…..
● Have fun!
34. ● ...is really not just about learning a
language
● Computer Programming in general
involves a lot more…
In Summary...
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.
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.
Lisp
Haskell
Clojure
Examples
Java
C++
Smalltalk
Scala
Examples
Java
Clojure
Scala
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 ]
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.
High performance, complex computation - weather prediction, mathematical simulation,
Embedded systems (e.g. cars, traffic lights, MRI scanners)
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