مقدمة عن لغة سكالا

55
Welcome to the Scalable Language Ahmed Soliman Founder and Chairman noZom NGO Tuesday, May 24, 2011

Upload: nozom-information-technology-ngo

Post on 10-May-2015

4.320 views

Category:

Technology


7 download

DESCRIPTION

مقدمة عن لغة سكالا من المهندس احمد سليمان

TRANSCRIPT

Page 1: مقدمة عن لغة سكالا

Welcome to the Scalable Language

Ahmed SolimanFounder and Chairman

noZom NGO

Tuesday, May 24, 2011

Page 2: مقدمة عن لغة سكالا

@AhmedSoliman

AhmedSoliman.com

[email protected]

Tuesday, May 24, 2011

Page 3: مقدمة عن لغة سكالا

Martin OderskySwitzerland

Tuesday, May 24, 2011

Page 4: مقدمة عن لغة سكالا

@odersky

✦ 52 years old

✦ Pizza Programming language

✦ Generic Java

✦ Scala 2001

Tuesday, May 24, 2011

Page 5: مقدمة عن لغة سكالا

What is Scala?

Tuesday, May 24, 2011

Page 6: مقدمة عن لغة سكالا

What is Scala?

✦ Pronounced ‘skah-lak’

✦ Scalable Language

✦ Tastefully typed language

✦ Blend of object-oriented and functional programming

Tuesday, May 24, 2011

Page 7: مقدمة عن لغة سكالا

What is Scala?

✦ Uses the glorious JVM

✦ Can be used as scripting language

✦ Compiled!

✦ Everything is an expression!

Tuesday, May 24, 2011

Page 8: مقدمة عن لغة سكالا

Expression vs. Statement

Tuesday, May 24, 2011

Page 9: مقدمة عن لغة سكالا

Grows on you

✦ Looks like modern dynamically typed languages (Python, Ruby, etc.)

✦ Unlike Python, maps in scala is not a language syntax! {‘key’: ‘value’}

Tuesday, May 24, 2011

Page 10: مقدمة عن لغة سكالا

Growing new types

✦ BigInt looks like a built-in type, because you can use integer literals and operators such as (*, -, and +) with values of that type

Tuesday, May 24, 2011

Page 11: مقدمة عن لغة سكالا

What makes Scala scalable?

✦ Scala is object oriented in pure form!

✦ Every value is an object and every operation is a method call

✦ Scala is full-blown functional programming language

Tuesday, May 24, 2011

Page 12: مقدمة عن لغة سكالا

Functional?

✦ Lisp late 50s

✦ Scheme, SML, Erlang, Haskell, OCaml, and F#

✦ For long time, popular in academia, but not in industry

Tuesday, May 24, 2011

Page 13: مقدمة عن لغة سكالا

What’s functional?

✦ Functions return a value, given a set of parameters a function has one possible result.

Tuesday, May 24, 2011

Page 14: مقدمة عن لغة سكالا

Two Main Ideas: I

Functions are first-class citizens

Tuesday, May 24, 2011

Page 15: مقدمة عن لغة سكالا

Citizens?

✦ A function is a value of the same status as, say, an integer or a string.

✦ You can pass functions as arguments to other functions

✦ Return functions as a results from functions

✦ Store them in variables

Tuesday, May 24, 2011

Page 16: مقدمة عن لغة سكالا

Functions, citizens?

✦ You can define functions without giving them a name, sprinkling your code with function literals as easy as integer literals, like 25

✦ A good example is the pain in writing code for event handling in java

Tuesday, May 24, 2011

Page 17: مقدمة عن لغة سكالا

This is Java

Tuesday, May 24, 2011

Page 18: مقدمة عن لغة سكالا

Two Main Ideas: II

✦ Operations of a program should map input values to output values rather than change data in place

✦ Consider the difference between Strings in Java and Ruby!

✦ Immutable data structures are the cornerstone of functional programming

Tuesday, May 24, 2011

Page 19: مقدمة عن لغة سكالا

Referential Transparency

Tuesday, May 24, 2011

Page 20: مقدمة عن لغة سكالا

State is the evil!Pun intended

Tuesday, May 24, 2011

Page 21: مقدمة عن لغة سكالا

Multi-core problems✦ The future!

✦ Threading is damn hard to get right

✦ Memory overhead

✦ Dead locks?

✦ Shared state? Monitor? Mutex? Semaphore?

✦ Demand for highly concurrent application is increasing

Tuesday, May 24, 2011

Page 22: مقدمة عن لغة سكالا

Why Scala?

Tuesday, May 24, 2011

Page 23: مقدمة عن لغة سكالا

Why Scala?✦ The Java Virtual Machine

✦ Concise (programs are shorter)

Tuesday, May 24, 2011

Page 24: مقدمة عن لغة سكالا

Why Scala??✦ A rich static type system that gets out of your

way when you don’t need it, is awesome when you do. (Type Inference). Verifiable!

✦ Flexible syntax

✦ Immutable and mutable variables

Tuesday, May 24, 2011

Page 25: مقدمة عن لغة سكالا

Why Scala??

✦ Functional programming features: mapping, filtering, folding, currying, so much more.

✦ FAST! (most of the times as fast as Java)

✦ Can call any Java code

✦ Can be called by any Java code

Tuesday, May 24, 2011

Page 26: مقدمة عن لغة سكالا

Mapping

Tuesday, May 24, 2011

Page 27: مقدمة عن لغة سكالا

Reducing

21

Tuesday, May 24, 2011

Page 28: مقدمة عن لغة سكالا

Pattern Matching

Tuesday, May 24, 2011

Page 29: مقدمة عن لغة سكالا

Currying

Tuesday, May 24, 2011

Page 30: مقدمة عن لغة سكالا

Concurrency

✦ Actor model! (kinda like erlang)

✦ Threads

✦ Any other JVM concurrency framework (Netty, Apache Mina, etc.)

Tuesday, May 24, 2011

Page 31: مقدمة عن لغة سكالا

Concurrency :: Actor✦ Actor Mode: a different way to implement

concurrency

✦ Each object is an actor

✦ Each actor has a mailbox

✦ Actors (asynchronously) send messages and receive them in their mailbox

✦ No Shared State

✦ Why?

Tuesday, May 24, 2011

Page 32: مقدمة عن لغة سكالا

Actors :: Performance✦ Apache (C/Threads) vs. Yaws (Erlang/Actor)

Tuesday, May 24, 2011

Page 33: مقدمة عن لغة سكالا

Actors :: Simpler

✦ Code is design around single-threaded mind

✦ No Mutable State

✦ No (Dead) lock

Tuesday, May 24, 2011

Page 34: مقدمة عن لغة سكالا

Language Tour

Tuesday, May 24, 2011

Page 35: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 36: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 37: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 38: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 39: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 40: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 41: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 42: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 43: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 44: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 45: مقدمة عن لغة سكالا

What for?

Tuesday, May 24, 2011

Page 46: مقدمة عن لغة سكالا

✦ Scripting

✦ Concurrent Applications

✦ Web Development (Lift)

✦ Backend Components

Tuesday, May 24, 2011

Page 47: مقدمة عن لغة سكالا

Who uses Scala?

Tuesday, May 24, 2011

Page 48: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 49: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 50: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 51: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 52: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 53: مقدمة عن لغة سكالا

Tuesday, May 24, 2011

Page 54: مقدمة عن لغة سكالا

Summary✦ Fast

✦ Reuses the Java Ecosystem

✦ Functional

✦ Expressive

✦ Statically typed

✦ Concurrent

✦ Has tons of features, complex? Worth it!

Tuesday, May 24, 2011

Page 55: مقدمة عن لغة سكالا

www.nozom.orgTuesday, May 24, 2011