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

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

description

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

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

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