
Turkish: 
Aynı problemi bir ila on arasında toplama
aslında sihir gibi görünen şey tarafından yapılır
basitçe "toplam ... bir ... on."
Bitti.
O kadar kolay değil.
Kendimi bir bilgisayar bilimcisi olarak tanıtırken sorduğum sorulardan bir tanesi:
tam olarak ne yapıyorum ve bunun için en kolay cevap "programlama" dır.
Farklı stiller var ve
birçok insan onların farkında olmayabilir
yani bugün, en popüler olanlardan ikisinin karşıtlığına gidiyorum.
Yani, zorunlu programlama ve işlevsel programlama.
İki dilde bir ile on arasında sayı ekleme
Java ve Haskell
Böylece Java ile başlayacağız.
Bir değişkeni "total", bir tamsayı getirerek ve "iyi, başlamak için sıfır" diyerek başlıyoruz.
çünkü henüz bir şey eklemedik.
ve bu nispeten kolay.
ve ilmeğin asıl eti bir for ilmeği açılarak yapılır.

English: 
The same problem of summing up from one to ten
is actually done by what would appear to be magic
by simply going, "sum... one... ten."
Done.
It's not quite as easy as that.
One of the questions that I get asked umm when introduce myself as a computer scientist is
what exactly is I do and the easiest answer for that is, "programming."
There are different styles and
a lot of people might not be aware of them
so, today, I'm just going contrast two of the most popular ones.
Namely, imperative programming and functional programming.
Adding the numbers from one to ten in two languages
Java and Haskell
So, we'll start with Java.
We begin by introducing a variable, "total", an integer and saying, "well, that's zero to start with."
because we haven't added anything up yet.
and that's comparatively easy.
and the actual meat of the loop is done by opening up a for loop

English: 
where we say, "for some number int i = 0
and i less than or equal to ten then i plus plus
and what that means here
is we've got this little tracking variable, i, which we initialize to zero
we're going to be repeating this loop as long as it's less than
or equal to 10.
And every time we repeat the loop, we're going to increase "i" by 1.
We're adding numbers 1 to 10
so the obvious thing to do
is to say we'll change the variable "total" to the result of
"total" plus "i."
All we have here, is we've got an appearance of
the "equals" sign--some people would look at this and go
"Right. This is clearly the mathematical definition of 'equals'."
"which means that the left hand is equal to the right hand side."
Now, that's not the case in Java and other "C-like" languages.
What this single "equals" actual means
is, um, an assignment. We're saying that "total" is now equal to the previous
value of "total" and we've added to it in some way. In this way we've added 1 to it.

Turkish: 
deyince "bazı numaralar için int i = 0
ve ben ondan küçük veya ona eşit, sonra artı
ve bunun anlamı ne?
Bu küçük izleme değişkenine sahip miyiz?
daha az olduğu sürece bu döngüyü tekrarlayacağız
veya 10'a eşit.
Ve döngüyü her tekrarladığımızda, "i" yi 1 artıracağız.
1'den 10'a kadar sayılar ekliyoruz
yapması gereken çok şey var
"total" değişkenini sonuç olarak değiştireceğimizi söylemek için
"toplam" artı "i"
Burada sahip olduğumuz tek şey, bir görünüme sahip olduğumuz.
"eşittir" işareti - bazı insanlar buna bakar ve giderdi
“Doğru. Bu açıkça“ eşittir ”nin matematiksel tanımıdır.”
"bu, sol elin sağ el ile aynı olduğu anlamına gelir."
Şimdi, Java ve diğer "C benzeri" dillerde durum böyle değil.
Bu tek "eşittir" fiili araç ne
bir atamadır. "Toplam" değerinin şimdi öncekine eşit olduğunu söylüyoruz.
"toplam" ın değerini ve bir şekilde buna ekledik. Bu şekilde ona 1 tane ekledik.

Turkish: 
eşittir o zaman biz kontrol
eşitlik, bu durumda toplam
toplam artı ne yanlış olurdu tüm
0 yaşında olduğum durumlar hariç
içeren bir açıklama
toplam gibi değişkenler
karakteristik zorunlu diller
Ana hesaplama yöntemi nerede
değişkenlere değer ataması
Bu toplamla başladığımızı söyleyecek
sıfır, 50 toplamı, 0 artı 0 0'a eşittir.
sonra geri döneriz artarız bir tane alırım
bu yüzden şimdi tamam toplam 0 artı 1 diyelim
geri döndüğümüz hangisi şimdi toplam
1 artı 2
şimdi üç ve biz bir kez tekrar ediyoruz
sonuna kadar sonra bittik
toplamı çağırmak istiyorsak o zaman olur
sadece 1 + 2 + 3 +
w ve sonunda
arayacak olursak toplamı
55
çünkü bu bir adımdaki toplam
bu bir zorunluluk niteliğidir
bunu iki programladığımızda programlama
değişkenler

English: 
equals then we would be checking for
equality in which case this total equals
total plus what I would be false in all
cases except for when I was 0 so this
kind of statement that involves
variables such as total is
characteristic imperative languages
where the main method of computation is
assignment of values to variables
that's going to say we start with total
zero its a 50 total equals 0 plus 0 0
then we go back we increase i buy one
so now we say okay total is 0 plus 1
which is one we go back is now to total
is 1 plus 2
it's now three and we repeat once we get
to the ends then we're done
if we want to call total then it would
just be the result of going 1 + 2 + 3 +
w and eventually at the end of it will
have total if we were to do a calling it
is 55
because that's the sum from one step
this is a characteristic of imperative
programming in that we are referring two
variables

English: 
that are defined globally this is a
simple example of adding a couple of
numbers up in an imperative language
namely this is done in java
what I'd like to do now having just
spoken about the mathematical definition
of equals move on to a another language
in which to do this something from one
to ten
namely Haskell which is a functional
programming language
so the same problem of something up from
one to ten is actually done by what
would appear to be magic are simply
going
some 110 done
it's not quite as easy as that there is
a library function in the background
that's explaining how some actually
works
the first thing that we need to know
about the sum function is what it's type
is so we would say that the function sum
is the function that takes a list of
integers
this is syntax for list and it returns a
single integer

Turkish: 
küresel olarak tanımlanan bu bir
birkaç ekleyerek basit bir örnek
zorunlu bir dilde sayılar
yani bu java'da yapılır.
şimdi ne yapmak isterdim
matematiksel tanım hakkında konuşulur
eşitliği başka bir dile geçiyor
bunu bir şeyden yapmak için
on
yani işlevsel olan Haskell
Programlama dili
yani aynı şeyden bir sorun aynı
bire bir on aslında ne tarafından yapılır
sihirli göründüğü gibi
gidiyor
yaklaşık 110
o kadar kolay değil
arka planda bir kütüphane işlevi
Bu aslında nasıl bazılarını açıklayan
Eserleri
bilmemiz gereken ilk şey
sum işlevi hakkında ne tür olduğunu
yani fonksiyonun toplam olduğunu söyleyeceğiz.
listesini alan işlev
tamsayılar
Bu liste için sözdizimi ve bir döndürür
tek tamsayı

Turkish: 
yani birden on'a kadar bir liste alırsak
bazılarını iade edeceğiz ve
Şimdi ne yapacağız
bu fonksiyonu terimlerle tanımlayacağım
Bir fonksiyonun eşleştirilmesi
ile ilişkili birden çok tanım
kendisine verilen değer ne kalıp
eşleşen bitenler karar vermenin bir yoludur.
Uygulamada kullanılacak işlevin tanımı
yapısına bağlı olarak verilen dava
giriş yani biz diyelim ki
listeleri alan bir işleve bakmak
o zaman bu işlev bakıyor olabilir
boş bir liste
biriyle bir listeye bakıyor olabilir
İçindeki element ya da bakıyor olabilir
bunlardan daha fazlasına sahip ve daha basit bir tane
örnek belki bir işlev tanımlanmıştır
milyarlarca
yani bir milyar değer ya doğru olabilir ya da
false ve öğrenmek için bir işlev
Bunun bariz olanı öyle olmayacak
doğru değil yanlış yanlış değil doğru ve
örüntü eşleme kullanıyorsak
Değerimi alıp söyleyeceğim
aldığım değer doğruysa doğru
sonra fonksiyon tanımını kullanıyorum
eğer değeri yanlışsa

English: 
namely if we take a list from one to ten
we're going to return some of them and
what we're going to do now is we're
going to define this function in terms
of pattern matching a function can have
multiple definitions associated with the
value that's given to it what pattern
matching ends is a way of deciding which
definition of a function to apply in a
given case depending on the structure of
the input so let's say that we are
looking at a function that takes lists
then that function could be looking at
an empty list
it could be looking at a list with one
element in it or it could be looking at
one with more than that and a simpler
example perhaps is a function is defined
over the billions
so a billion value can either be true or
false and a function that's to find out
of that the obvious one will be not so
not true is false not false is true and
if we're using pattern matching
I'm going to take my value and say is it
true if the value that I've got is true
then i use the function definition of
going to false if the value that I've

Turkish: 
yanlış olduğu şuna bak diyecek
ilk satır ve eğer doğru olursa hayır
Bir sonrakine inmeyeceğim ve
Ayrıca
tamam ne zaman orada bir maç var
bir fonksiyona girişinizi bakarsınız
En baştan söyleyeceğin şeyi ve eşleşmeyi deneyeceksin
1i haklı değil mi
Bir sonrakine bak ben
İhtiyacımız yok bir sonraki ve bu olabilir
hepsine sahip olmamanız durumunda
tam olarak tanımlamak için gerekli desenler
okulun hangi durumda olacağı
sana hata ver
yorucu olmayan bir örüntü yani öyleyse
tek bir sayının toplamına sahip olmak
bu söylediğimiz bir elementin listesi
bir toplamın sonuçları
sayı sadece bir sayıdır ve biz
Birden fazla numaradan oluşan bir listeye sahip olmak
böyle yazarız
bazı ve biter bu sadece için steno
olduğunu söyleyerek
listenin önünde n diyoruz
diğer unsurlara uçlar denir ve biz

English: 
got is false it will say look at this
first line and well if I got true no i
don't i'll go down to the next one and
also
okay well I've got a match there when
you look at a function your input
you will try and match from the top say
is that the 1i need no right
look at the next one is that the one I
need no is next one and it may be the
case that you don't have all of the
patterns necessary to fully define your
function in which case a school will
give you an error
it's a non-exhaustive patterns so if we
have this sum of a single number
this is a list of one element we say
that the results of the sum of one
number is just that one number and if we
have a list of more than one number then
we would write it like this
some and ends this is just shorthand for
saying that the element that's at the
front of the list we call n all the
other elements are called ends and we

English: 
were just define that as n plus some
ends so this function sum is defined
recursively that is to say it's defined
in terms of itself
what I might like to do for some people
aren't familiar with functional
programming is going through a very
quick example of how the sum function
works some of 452
so we can refer to this function here
and throughout and see how this is
equivalent to the java representation
that we've got over here
so what pattern matching involves we
look down and say are we looking at a
single list
no we're not so we can move down to the
next pattern and we say okay
in this instance this for is the end of
this 52 is the ends so this is defined
to be 4 plus the son of 52 grand next
step we're going again
summers are defined in terms of itself
we haven't gotten down to the base value
yet so we're going to have to carry on
so we do so by saying okay so what you
mean by the base for them

Turkish: 
Sadece n artı bazı olarak tanımlamak
sona erer, böylece bu işlev toplamı tanımlanır
özyinelemeli, tanımlanmış olduğunu söylemek
kendisi açısından
bazı insanlar için ne yapabilirim
işlevsel aşina değil
programlama çok geçiyor
Toplamanın nasıl işlediğinin hızlı bir örneği
452 bazı çalışır
bu yüzden burada bu işleve başvurabiliriz
ve boyunca ve bunun nasıl olduğunu görmek
java temsiline eşdeğer
burada olduğumuzu
öyleyse hangi örüntü eşleştirme biz
aşağıya bak ve diyelim mi
tek liste
hayır değiliz, aşağı inebiliriz
sonraki desen ve biz tamam diyoruz
bu örnekte bunun sonu
bu 52 uçtur, yani tanımlanır
4 artı bir sonraki 52 binin oğlu olmak
adım tekrar gidiyoruz
yazlar kendisi açısından tanımlanır
temel değere inmedik
yine de devam etmemiz gerekecek
öyleyse biz bunu tamam diyerek yaparız
onlar için tabanla demek

Turkish: 
Tamam çok fonksiyonel programlama ana
Bunun için hesaplama yöntemi
işlevlere argüman uygulamak
Java ile karşılaştırıldığında ama atama
Değişkenlere göre değerleri burada söylediğimde
bir değere ulaştık
Yani bir singleton'u değerlendirdik
ve geri döndü ve devam etmek
bu değerlendirme ne yapmak istediğimi duymak
tamam demek, beş artı toplam
iki, çünkü bu örnekte burada
bu sondu ve bu sondu
ve şimdi devam ediyorum ve eğer oh
Düzeltilecek gidiyorum
dirsek ve dört artı beş artı
şimdi bakıp söyleyebilirim
desen eşleştirme üstten başlar
Listelenecek bir tane var evet yaparım
öyleyse ne geri döneceğim
iki numaralı
şimdi onu kaynamaya başlayabilirim
bu 4 artı 7 eşittir 11
bu yüzden burada geçti sadece bir hızlı
işlevsel bir programlamanın nasıl bir örnek

English: 
ok so functional programming the main
method of computation for that is
applying arguments to functions as
compared with Java but it's assigning
values to variables by here when I say
we've reached a value
I mean that we've evaluated a singleton
and returned and so to carry on with
this evaluation hear what I want to do
is to say okay that's some five plus sum
of two because in this instance here
this was the end and this was the ends
and now I carry on and I say oh well if
I'm going to be corrected going to
bracket that and say four plus five plus
now i can look and say
pattern matching start from the top have
I got a single to list yes I do
so what am I going to return just that
number two
so now I can start boiling it down so
that's 4 plus 7 equals 11
so wyd gone through here is just a quick
example of how a functional programming

Turkish: 
yaklaşımı bazı fonksiyonlara götürür
Bazılarının gerçekte ne yaptığını tanımlama
aşağı bakıyor ve içeriye bakıyor
değişkenlerin şartları
bu ve buna ve sonunda ekleyin
sonuç kıyafeti düşecek
muhtemelen söylemeye değer
Bu bazı tanımlandığı gibi değil
Haskell yüksek getirim aslında
bazı kat l + 0 olarak tanımlanır, ancak bu
karanlık içine girmek istemiyorum
o
bu video bu yüzden özellikle önemli
burda almam gereken şey
Bu ikisinin zıddı
bu örnek burada bulundum
Java’da bir
bu biraz bunun etrafında dönüyor
Değişen toplam değişken
for döngüsü ilerledikçe
Bu toplam değişkeni güncelliyordum
ve yeni bir değeri yansıtacak şekilde arttırmak
for döngüsünün sonuna kadar
yani bu zorunlu olanın özelliği
Programlama dilleri

English: 
would take the approach to some function
defining what the some actually does as
opposed to looking down and doing it in
terms of variables saying will track
this and add it to this and eventually
the result will fall outfit
it's it's probably worth saying though
that this isn't how some is defined in
my Haskell high bring it is actually
defined as some fold l + 0 but that is
dark out that I don't want to get into
it
this video so one particularly important
thing to take away here given that i've
been contrasting these two is that in
this example here where I've been
something one to ten in java
this is revolved somewhat around this
variable total which has been evolving
as the for loop progresses
I've been updating this total variable
and increasing it to reflect a new value
until I get to the end of the for loop
so this is characteristic of imperative
programming languages

Turkish: 
Dışsal bir küresel olduğum gerçeği
bir vasfı güncelleyebileceğim değişken
Oysa fonksiyonel programlama ve
Lise dışında devlet yok
Dışarıdan bir şey aramıyorum
bu toplama işlevi, bu toplama 1'den 10'a kadar
tamamen kendisi ile tanımlanır
toplam referans yok ya da
açıkça olmayan bir şey
Bu fonksiyon gövdesinin içinden ulaşılabilir
ve bunun nedeni işlevsel
programlama dilleri veya tamamen
fonksiyonel programlama dilleri
yan etkileri ve belirli bir izin vermek
bir yan etki örneği değişkendir
devlet tarafından değiştirilebilen yemin
Yani değiştirebilirsin, değiştirebilirsin.
bu yüzden bir değerden değişebilir
bir program ilerledikçe başka
Bunların ikisinin de olduğunu söylemeye değer
yüksek seviyeli dil örnekleri ve
özellikle basit örnekler
bu yüksek seviyeden parçalar
duujjil
bunlar şekilde oldukça farklı görünüyor
şeylere yaklaşmaları, ancak
kaynatılmak
makine kodu ve çok benzer makine
bir şey yaptığı verilene git

English: 
the fact that i have a external global
variable that i can update a will
whereas in functional programming and
high school there is no state externally
I'm not calling anything from outside
this sum function this sum from 1 to 10
is defined entirely in terms of itself
there is no reference to a total or
something that's not explicitly
reachable from inside this function body
and that's because functional
programming languages or purely
functional programming languages don't
allow for side effects and a particular
example of a side effect is a mutable
state swear by mutable
I mean it can mutate you can update it
so it can change from one value to
another as a program progresses
it's worth saying that these are both
high level instances of languages and
particularly simple instances of
fragments from these high-level
languages
these do look quite different in the way
that they approach things but they will
be boiled down
to machine code and very similar machine
go to that given that it does something

Turkish: 
oldukça basit ve etkili bir şekilde aynı
Bu bir ila on bir şey değil
çok çok yapılabilecek bir şey
farklı derleyicilerden karmaşık yöntemler
peki ya üniversite sadece
bilgisayar simülasyonu
ne tür şeyler olduğunu nasıl bilebiliriz
görmeyi beklediğimizde
sekmemize sahip olabilir miydik
bu çalışmayı yapabilmek
Bir simülasyonla gurur içinde yaşamayı biliyorsun
kelimelerin ve aşağı döndürülmesi
bir tarafta tüm elementler dersi ve
sonra diğer tarafta Mesih
Demek istediğim hiçbir şeyi alamadım
Yan gibi bir şey, böylece görebilirsiniz
Sol taraftaki her şey yapıldı.
ve sağ tarafı yapmaya başladım.
kağıdın tüm sol tarafını yapar
bunu yapmaya devam eden başka bir pivot
sıralanana kadar hayvan

English: 
quite simple and in effectively the same
way it's something one to ten it's not
something that can be done very very
complicated ways by different compilers
what if the university is just a
computer simulation
how would we know what sort of things
when we expect to see
could we have our tab could we ever be
able to work out that work
you know living in proud of a simulation
of words and being pivoted down putting
all the elements lesson on one side and
then Christ on the other side
I mean it that does not get any to
something like side so you can see it's
kind of it's done all the left hand side
and I start doing the right hand side so
the paper it does all the left hand side
it's another pivot keeps doing this this
animal until it's sorted
