Top Banner
FONKSİYONEL PARADİGMA #direnstate #nedirtv muhammed cuma tahiroğlu @devmucit 18 ekim 2014
55

Fonksiyonel paradigma

Jul 17, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Fonksiyonel paradigma

FONKSİYONEL PARADİGMA

#direnstate#nedirtv

muhammed cuma tahiroğlu

@devmucit18 ekim 2014

Page 2: Fonksiyonel paradigma
Page 3: Fonksiyonel paradigma

?

Page 4: Fonksiyonel paradigma

1950model

Akademi > Endüstri

Page 5: Fonksiyonel paradigma

FONKSİYONEL PROGRAMLAMA KONSEPTLERİ

IMMUTABILITY

REFERENTIAL TRANSPARENCY

CURRYING IDEMPOTENCE

SIDE-EFFECT

LAZY EVALUATION

RECURSION

PATTERN MATCHING

Page 6: Fonksiyonel paradigma

OOP:ABSTRACTION

ENCAPSULATION

Page 7: Fonksiyonel paradigma

Nesne Yönelimli Programlama, hareketli parçaları enkapsüle ederek kodu anlaşılır kılıyor. Fonksiyonel Programlama ise hareketli parçaları en aza indirgeyerek kodu anlaşılır kılıyor.

— Michael Feathers

Page 8: Fonksiyonel paradigma
Page 9: Fonksiyonel paradigma
Page 10: Fonksiyonel paradigma
Page 11: Fonksiyonel paradigma

SIDE EFFECT

Page 12: Fonksiyonel paradigma

S T A T E

M U T A B L E

Page 13: Fonksiyonel paradigma

FP

STATE

Page 14: Fonksiyonel paradigma

Variable

Değişkent

Page 15: Fonksiyonel paradigma

1;

var x = 1;

x = x + 1;

Page 16: Fonksiyonel paradigma

İlginç bir anekdot

250 sayfa boyunca atama (assignment) yok!

Page 17: Fonksiyonel paradigma
Page 18: Fonksiyonel paradigma

y = f(x)AssertEquals(f(x), f(x));

f(x) = f(x)

Page 19: Fonksiyonel paradigma

string«IMMUTABLE» SINIFLARIN EFENDİSİ

Page 20: Fonksiyonel paradigma
Page 21: Fonksiyonel paradigma

KODA GEL

https://www.flickr.com/photos/norfolkodyssey/3863851867

Page 22: Fonksiyonel paradigma

MAP

C# 3.0

Page 23: Fonksiyonel paradigma

MAP

C# 3.0

Page 24: Fonksiyonel paradigma

FILTER

C# 3.0

Page 25: Fonksiyonel paradigma

FILTER

C# 3.0

Page 26: Fonksiyonel paradigma

REDUCE

C# 3.0

Page 27: Fonksiyonel paradigma

REDUCE

C# 3.0

Page 28: Fonksiyonel paradigma

STRATEGY PATTERN

Page 29: Fonksiyonel paradigma

MOTİVASYON

Page 30: Fonksiyonel paradigma

Unit Test yazmak, fonksiyonel programlamayı fonksiyonel olmayan dillerdeyeniden icat etmektir

Page 31: Fonksiyonel paradigma

Asıl problem, «stateful» programların büyüdükçeiyi olmayan bir yöne doğru evrilmesidir.

Page 32: Fonksiyonel paradigma

Gerektiğinde imperative programlayın; mümkün olduğunda ise fonksiyonel.

Page 33: Fonksiyonel paradigma

YAZMASI VE BAKIM YAPMASI DAHA BASİT

DAHA AZ «CONCURRENCY» SORUNU

«TEMPORAL COUPLING» YOK

«STATE NEDİR?» DİYE SORMAK YOK#direnstate

Page 34: Fonksiyonel paradigma

HAFIZA KULLANIMI

Page 35: Fonksiyonel paradigma
Page 36: Fonksiyonel paradigma
Page 37: Fonksiyonel paradigma

8 byte vs 8 Gb

Page 38: Fonksiyonel paradigma

MULTI-CORE COMPUTING (PARALEL PROGRAMLAMA)

Page 39: Fonksiyonel paradigma
Page 40: Fonksiyonel paradigma

AssertEquals(f(x), f(x));

Çekirdek - 1Çekirdek - 2

Page 41: Fonksiyonel paradigma
Page 42: Fonksiyonel paradigma

FONKSİYONEL DİLLER

Page 43: Fonksiyonel paradigma

Clojure (Lisp)

ML

Page 44: Fonksiyonel paradigma

F#2002’de Microsoft Research yayınladı

Page 45: Fonksiyonel paradigma
Page 46: Fonksiyonel paradigma

MARTIN ODERSKY

Page 47: Fonksiyonel paradigma
Page 48: Fonksiyonel paradigma
Page 49: Fonksiyonel paradigma
Page 50: Fonksiyonel paradigma

C# Java (8)

Page 51: Fonksiyonel paradigma

FONKSİYONEL OLANLA OLMAYAN MODÜLLERİ AYIRIN

Page 52: Fonksiyonel paradigma
Page 53: Fonksiyonel paradigma

«İyi bir yazılım mühendisi olmak için en uygun teknikleri bulup bir denge sağlamak gerekir. Ayrıca teknik olmayan yanlar ve hedefler de var. Mesela kodun her ekip elemanı tarafından anlaşılabilmesi gibi. Doğru olan, en verimli yaklaşım hedeflerini net olarak belirleyerek, teknikleri o amaçla tutarlı bir şekilde kullanmaktir bence. Yoksa mesela her For döngüsünü Map'e çevirdiğinizde kodunuzun kalitesi artmaz; düşebilir bile.»

BURAK EMİRGoogle - İsviçre

Page 54: Fonksiyonel paradigma
Page 55: Fonksiyonel paradigma

TEŞEKKÜRLER

@devmucit

FONKSİYONEL PARADİGMA

muhammed cuma tahiroğlu

tahiroglu.com#nedirtv