Languages
What are programs
Programs exist to make decision
To automate repeatable actions
Aims of learning a language
When you first learn a language, your job is to learn how to use it to do the jobs you already know how to do.
properties
Interpreted means the code is executed by an interpreter rather than a compiler.
Compiled
Dynamically typed means that types are bound at execution time rather than compile time.
Dont need to declare variable, method types
There are disadvantages: you can’t catch as many errors as you can with static typing because compilers and tools can catch more errors with a statically typed system.
Statically typed
Strongly typed languages check types for certain operations and check the types before you can do any damage.
This check can happen when you present the code to an interpreter or a compiler or when you execute it
Trade off between dynamically interpreted and statically compiled
flexibility versus execution safety
Object-oriented means the language supports
encapsulation (data and behavior are packaged together),
inheritance through classes (object types are organized in a class tree),
polymorphism (objects can take many forms).
The whole premise of the model depends on wrapping behavior around state, and usually the state can be changed. This programming strategy leads to serious problems with concurrency.
Look for syntactic sugar, those little features that break the basic rules of the language to give programmers a little friendlier experience and make the code a little easier to understand.
Some languages are OO but have procedural elements
like java, where int a = 4; is not an object, it is a primitive. It does not have behaviour ie a.add(5); but have 4 + 5;
Prototype languages like Io, Lua, javascript and Self use the object, not the class, as the basis for object definition and even inheritance.
every object is a clone of an existing object rather than a class
Duck typing doesn’t care what the underlying type might be. If it walks like a duck and quacks like a duck, it’s a duck.
the idea of to code to interfaces rather than implementations
ie Ruby
Static typing allows a whole range of tools that make it easier to do syntax trees and thus provide integrated development environments.
poor debugging
Mixins
interface
Metaprogramming
programming that programs itslefs
reflection
change classes onthe fly
Last updated