
Turkish: 
Yeni bir dizi videoda bulundum
Yaptık,
HTML ile ilgili, gerçekten almış bir
en sonuncusunda ciddi dayak
Ben de tam profesörlere utanç duyuyorum
programlama dilinin ne olduğunu bilmiyorum
ve bir işaretlemeden farklılığı
dil. Ve tavrım şöyle olacak:
"Söylediklerimin yanındayım".
HTML çok kısıtlı bir şeklidir
programlama dili, benim görüşüme göre, biz
Bunu gerekçelemek gerekir.
Ve en başta şunu söylemeliyim ki
önceki tüm HTML’leri görmenize gerek yok
Bunu anlayabilmek için videolar,
çünkü gerçekten aşağı geliyor
aslında çok olan bir şey
temel. Sonunda aşağı geliyor
iki farklı programlama stili
seninle ilgili olan dil
Bir şekilde aralarında ayırt edebilir.
Ve biri ne zaman diğerine birleşir? Ve
programlama yapmanın bu iki yolu
Ticarette bilinen, genel olarak, ya

English: 
I've been in a recent set of videos that
we've done,
related to HTML, I really have taken a
severe beating in the latest one that
I'm a disgrace to Full Professors as I
don't know what a programming language is
and how it differs from a markup
language. And my attitude is going to be:
"Well I stand by what I say".
HTML is a very restricted form of
programming language, in my view, so we
need to justify that.
And I need to say at the outset that you
don't need to see all the previous HTML
videos in order to understand this one,
because it really comes down to
something that's actually very
fundamental. In the end it comes down to
two different styles of programming
language that are interrelated that you
can differentiate, in a way, between them.
And when does one merge into the other? And
these two ways of doing programming are
known in the trade, generically, as either

English: 
the imperative style or the dclarative.
Now the one that most of you will be the
more familiar with is the imperative so
we'll do that first.
This is really just programming as you
and I understand it you take your
language of your choice
Assembler, Java, C, Basic, whatever and
you are required to give a detailed
specification of how you are going to do
this problem. And, as we know, this
detailed specification might be simple
arithmetic programming statements;
it might require going round things in
loops;
it would certainly require taking
decisions. So it will have 'if' statements
inside it.
So, if you like, ordinary straightforward
detailed nuts-and-bolts programming is
in an imperative style, because you
have to say how you are going to solve

Turkish: 
Emir tarzı ya da açıklayıcı.
Şimdi çoğunuz olacak
daha aşina olmak zorunluluktur
önce bunu yapacağız.
Bu gerçekten sadece sizin gibi programlama
ve anlıyorum ki sen al.
seçtiğiniz dil
Assembler, Java, C, Basic, her neyse ve
detaylı vermeniz gerekir
nasıl yapacağınız
bu sorun. Ve bildiğimiz gibi, bu
detaylı özellikler basit olabilir
aritmetik programlama ifadeleri;
etrafta dolaşmayı gerektirebilir
döngüler;
kesinlikle alarak gerektirir
kararlar. Yani 'if' ifadesi olacak
içinde.
Yani, eğer normal, basit
detaylı somun ve civata programlaması
zorunlu bir tarzda, çünkü sen
nasıl çözeceğini söylemek zorundasın

Turkish: 
sorun. Burada "Nasıl" ifadesini koyacağım
Bunun sizi 'eğer' için 'götüreceğini' söyleyerek
aritmetik ifadeler, neye ihtiyacınız varsa.
>> SEAN: Yani bu nasıl gideceğinizi belirliyor
bir şey yap. Bu düğmeye basılırsa
o zaman bunu yap?
>> DFB: Evet! Evet! Ve büyük çoğunluğu
çoğu insanın düşündüğü programlar
programlama şartları, bu tarzda yapılır.
Peki ya o zaman bildirici? İyi
'bildirim' - daha işlevsel bir stil
tercüman için programlama
Diliniz ayrıntıları ve
aslında bir stil diğerine dönüşebilir
Ve çok güzel bir örneğim var
kendi ve Computerphile'da yaptık.
Ackermann'ı yapmak için bir program yazdım
işlevi. Sanırım bu benim en büyük hitim
uzak - bu belirli video. Ve içinde
fonksiyonu 'ackermann' programını gördük
ifadeleri, özyinelemenin kullanımını gördük,

English: 
the problem. I'll put "How" in quotes here
saying that leads you to 'if', 'for',
arithmetic statements, whatever you need.
>> SEAN: So this is setting out how you are going to
do something. If this button is pressed
then do this?
>> DFB: Yes! Yes! And the vast majority of
programs that most people think of, in
terms of programming, are done in this style.
Now what about declarative then?  Well
'declarative' -  it's a more functional style
of programming, where the interpreter for
your language does the details and
actually one style can merge into another
And I've got a very good example of my
own and we've done it on Computerphile.
I wrote a program to do the Ackermann
function. I think it's my biggest hit so
far - that particular video. And within the
function 'ackermann' we saw program
statements, we saw use of recursion,

Turkish: 
'ackermann' 'ackermann' dediğini gördük ve
Bütün bu tür şeyler. Ve sonunda
bir cevabı iade etme ve geri gönderme.
Ancak, ana programa geri döndüm.
'ackermann' çağırmak
belirli argümanlarla ve ben
argüman olarak 'ackermann işlevi' ....
Endişelenmiyorum
'ackermann'ın uygulama detayları
Ben sadece onu çağırdım - büyük bir sonunda
printf deyimi hatırladığım kadarıyla. Diyorum
bildirerek "Bana 'ackermann' ver -
benim için yap! Detaylarını unuttum
Ben yaptım ". Birçoğunuz bunu biliyor. Bütün
kendi kütüphanenizi doldurma fikri
belirli bir iş için işlevler
daha sonra daha soyut çalışabilirsiniz. ve
daha yüksek bir seviyede. "Yazdım diyebilirsin
bu 20 yıl önce. Onları nasıl yaptığımı unuttum.
Ama önemli değil. 'Ackermann' yapalım
"şey" ve "şey" parametreleri - bunun gibi bir şey.
Yani bir tanesinin birleşebileceğini görüyorsunuz.
daha işlevsel olarak aldığın gibi
yaklaşım. Her birini gevşekçe tartışabilirsin
bir işlev kütüphanesi kullandığınız zaman

English: 
we saw 'ackermann' calling 'ackermann' and
all this kind of stuff. And finally
returning and delivering back an answer.
However, back in the main program where I
call up 'ackermann'
with certain arguments and I call up the
'ackermann function' as the arguments ....
I don't worry about the
implementation details of 'ackermann'
I just call it up - at the end of a big
printf statement as i recall. I say
declaratively "Give me 'ackermann' -
do it for me! I forgot the details of how
I did it". Many of you know this. The whole
idea of writing your own library full of
functions for a particular job is that
you can then work more abstractly.  and
at a higher level. You can say "I wrote
those 20 years ago. I've forgotten how I did them.
But it doesn't matter. Do me 'ackermann' with
parameters "thing" and "thing" --  something like that.
So you see the one can merge into the
other as you take a more functional
approach. You could argue, loosely, every
time you use a library of functions that

Turkish: 
oradan bir yerden satın aldın
bu şekilde daha bildirici hale geliyor
Onu kullandığın için
Bu yüzden bildirimde bulunma konusu sensin
somun ve civata içine girmek zorunda değilsiniz
detaylar. Sadece ne istediğini sor
ve sihirli bir şekilde olur.
Gerçek beyannamenin tipik örnekleri
diller Haskell gibi şeylerdir.
bu konuda ne gibi değişimler var? İyi,
muhtemelen çoğunu söyleyebilirsin
bu bildirim dilleri
Çıplak metal üzerinde çalışma, seninki gibi
C programı sonunda yapabilirdi. Onlar
bir yazılım katmanı ile yorumlanır
sen ve çıplak metal arasında. Şimdi
size esneklik verir çünkü
Haskell tercümanı temelde olabilir
her türlü mimariye aktarılmıştır.
Biri zor işi yapmalı ama
o zaman biliyorsun ki Haskell'i alırsan
program boyunca
Sadece çalıştırabilirsin. Zorunda değilsin
onu bir ikiliye dönüştürün. Sadece çalışır
yorumlama modu. Bu yüzden takas
Ve diğer şeyler eşit (daha az

English: 
you bought in from somewhere then you
are becoming more declarative in the way
that you use it.
So the point about declarative is you
don't have to go into the nuts and bolts
details. You just ask for what you want
and magically it happens.
Typical examples of real declarative
languages are things like Haskell.
what are the trade-offs about this? Well,
you could probably say that most of
these declarative languages
don't work on the bare metal, like your
C program could do eventually. They are
interpreted, with a layer of software
between you and the bare metal. Now that
gives you flexibility because the
Haskell interpreter can be basically
ported to all sorts of architectures.
Somebody's got to do the hard work but
then you know that if you take the Haskell
program along
you can just run it. You don't have to
convert it into a binary. It just runs on
the interpretive mode. So it's trade-offs
And other things being equal (it's less

English: 
true now it used to be) you lose a little
bit of efficiency in an
interpreter whereas, y' know, if you refine
a thing right down to a hard-core binary
it'll go off like a Maserati,
we hope. And some languages, as we know,
have a compromise here. Java started life
as being a portable interpreted system
but with a syntax that's really pretty much
like C. But it's notable that now, when
you've developed from the Java, there's very
often an option to say 'If you want to
compile this and make a real executable
binary of it
yes, you can do that'. But during
development you get a lot of flexibility
by just being able to do things and try
them out instantly . That then, I hope, has
given you a bit more insight into what
the imperative vs. the declarative
approach is. And that's very relevant to
discussions of whether
HTML is, or is not, a programming language.

Turkish: 
doğru şimdi öyleydi) biraz kaybedersin
bir verimlilik biraz
tercüman iken
sert çekirdekli bir ikili aşağı doğru bir şey
Maserati gibi sönecek,
umut ediyoruz. Ve bildiğimiz bazı diller,
burada bir uzlaşma var. Java hayata başladı
taşınabilir bir yorumlu sistem olarak
ama gerçekten çok fazla olan bir sözdizimi ile
C gibi. Ama şimdi, ne zaman önemli
Java’dan geliştirdiniz, çok var
sık sık 'eğer istersen
Bunu derleyin ve gerçek bir çalıştırılabilir yapın
ikilik
evet, bunu yapabilirsin '. Ama sırasında
gelişim size çok esneklik kazandırıyor
Sadece bir şeyler yapabilir ve deneyebilir
anında onları dışarı. O zaman umarım ki
sana neyin biraz daha iyi olduğunu anladım
zorunluluk vs. beyanname
yaklaşım. Ve bu çok alakalı
olup olmadığını tartışmaları
HTML bir programlama dilidir veya değildir.

Turkish: 
Hepimiz biliyoruz  demek
Bana bir başlık ver, birinci seviye.
Şimdi, elbette, nerede olduğunu göstermek zorundayım
sizin başlığınız olan şeyler - metin -
biter. Ama bana göre "Bak, ben
 işlevini çağırıyorum, veriyorum
argüman
'Bu benim başlığım' h1 de yapılacak
stil ". Ve  gerçekten
"Oh! Bu arada, başka hiçbir şey yok
metin dizgimin nerede olduğunu belirtebilirim
biter, noktalı virgül veya benzeri bir şey değil ".
Geleneksel olarak onun . Bana göre
evet, bunu bir
Bir şekilde işlev çağrısı.
Ancak, bazılarınız gerçekten eve çarptı
biraz daha doğru, sanırım sen
"Bir programlama dili olamaz
gerçekten, çünkü Turing Complete değil.

English: 
We all know  means
give me a heading, level one.
Now, of course, I have to show where the
stuff that is your heading - the text -
ends. But to me you can say "Look, I'm
calling up the function , I'm giving it
the argument
'this is my heading' to be done in h1
style". And  is really just
to say, "Oh! by the way, there's no other
way I can signify where my text string
ends, It's not semicolon or anything like that".
Conventionally its . So to me,
yes, you can think of that as being a
function call in a way.
However, some of you really did hit home
a bit more accurately, I think, when you
said "It can't be a programming language,
really, because it's not Turing Complete.

Turkish: 
Şimdi bu bir konu - üzgünüm nefret ediyorum
cliffhangers yapıyorum biliyorsun yapıyorum! -
bu bahsettiğimiz bir konu
zaman zaman bu yeterince büyük
ayrı bir video yapmamız gerektiğini,
gerçekten, bu konuda, bu kesinlikle doğru
HTML asla olarak düşünülemez
tam gelişmiş programlama dili.
Ham ifadelerinde 'if' yapamaz
vanilya formu!
HTML'in içine girmenize imkan yok
"Bana bir megabayt daha yer verin
çalışmak ". Bu sadece dilin bir parçası değil.
Birinin işaret ettiğini düşünüyorum, sanırım,
CSS ile HTML çok olur
güçlü Turing-Complete dili ancak
kullanmak istemezsin.
Genel amaç değil - bu başka
şey. Bu gerçekten bir soru mu?
zorunlu; bildirim mi yapıyor? "
beyan edici ancak genel amaç mı?
Hayır, bu gerçekten web sayfalarını programlamak içindir.
Ben de böyle düşünüyorum ve
Dediğim gibi, Turing Complete değil, ama

English: 
Now that is a topic - I'm sorry I hate
doing cliffhangers, you know I do! -
that's a topic that we have mentioned
from time to time but it's big enough
that we need to do a separate video,
really, on that, It's perfectly correct that
HTML could never be thought of as a
full-blown programming language.
It can't do 'if' statements in its raw
vanilla form!
There's no way inside HTML that you
can say "Give me a megabyte more space to
work with". It's just not part of the language.
Somebody has pointed out, I think, that
HTML with CSS does become a very
powerful Turing-Complete language but
you wouldn't want to use it.
It's not general purpose - that's another
thing. It's really is a question of "Is it
imperative; is it declarative?"  This is
declarative but is it general purpose?
No, this is really for programming Web pages.
That's the way I think of it and also,
like I say, it's not Turing Complete, but

Turkish: 
kesinlikle bir şey olduğunu iddia edebilirsin
etiketleri sanki işlevdeymiş gibi alır
onları çağırır ve yorumlar.
sen, bir anlamda, kısıtlı anlamda
Yine de görüntülemek
bir programlama dili.

English: 
you can certainly argue that anything
that takes tags as if they were function
calls and interprets them and does them for
you is, in some restricted sense, in my
view anyway,
a programming language.
