Programming overview
-
Upload
frank-amankwah -
Category
Software
-
view
109 -
download
1
description
Transcript of Programming overview
Learning Computer ProgrammingProgramming Overview
Presenter: Frank Amankwah ([email protected])
Contents
● Programming: What & Why● Programming Paradigms● Programming Languages● Choosing a Language● Wrap up
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
impossible.● Opens new world of intellectual endeavor● It is cool, fun and potentially very rewarding● Anyone can do it!
Programming Paradigms
Programming Paradigm
● A way of building the structure and elements of computer programs
In the early days...
Structured
Procedural
More recently…
Object-oriented
+
Programming Paradigms
● Languages can support one or more paradigms
Programming Languages
Programming Language 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 3GLso Closer to natural human languages
● Natural Languageo Ambiguous and hard for computer to understand
Programming Languages
Common Language 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
Choosing a Language● Best suited to the problem you are trying to solve
● Widely availableo Runs on various hardware platforms
o Supports multiple operating systems
● Widely usedo Large, active community
o Readily available libraries and frameworks
TIOBE Programming Language Index
Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
RedMonk Programming Language Rankings
Source: http://sogrady-media.redmonk.com/sogrady/files/2014/01/lang-rank-114-wm.png
● Problem Domainso High performance applicationso Complex computations o Embedded systemso Computer and console gameso Mobile applications and games
● Communitieso C - http://www.cprogramming.como C++ -
https://plus.google.com/communities/116007775542700637383
o Objective-C - https://plus.google.com/communities/103997592872376747208
● Problem Domains
● Client/server applications
● Web/mobile applications and APIs,
● Web Plugins and widgets
● Web/mobile games
● Communitieso http://www.meetup.com/Londonjavaco
mmunity/
o https://plus.google.com/communities/100875929141897651837
o http://www.csharpforums.net o http://androidcommunity.com
● Problem Domainso Dynamic web sites and applications o Automation of system admin taskso Popular choices for learning
programming
● Communitieso http://phpcommunity.orgo https://www.python.org/community/o https://www.ruby-lang.org/en/communit
y/
Why Learning by Yourself is Hard
● Commitmentso Flexible o Intensiveo Relevant
Why Learning by Yourself is Hard
● Motivationo Autonomyo Masteryo Purpose
Learning the Language● Intensive Courses
o http://www.makersacademy.com o https://generalassemb.ly
● Online courseso https://www.coursera.org/ o https://www.udacity.com/ o https://developers.google.com/university/
● Online tutorialso https://www.khanacademy.org/ o http://www.codecademy.com
● Other online resourceso http://www.w3schools.com o http://learncodethehardway.org/
Aim of this Meetup Group
● Help you to Learn Computer Programmingo “Overview” Meetups & Eventso Hands-on Workshops/Webinarso Flexible Software Development Courseso Coaching & Mentoring
● Build a vibrant community
Wrap Up
● It’s really not just about learning a language!
● Software Development involves a lot more…
● So think big and work smart!
In Summary...
Recommended Approach
● Find an interesting problem to solve● Choose a language and Learn the
fundamentals and language features● Practice, practice, practice…..● Have fun!
Questions?