şükela:  tümü | bugün
  • (bkz: delikli kart)
  • ekşi sözlükte bu kadar çok okuduğunu anlamayan gerizkalıların doluştuğu ender başlıklardandır. öncelikle coder değilim ve cevabını bilmiyorum.

    fakat adamın sorusunu anlamayıp delikli kartlara, mayalara inkalara götürecek kadar gerizekalı olduğunuza epey şaşırdım.

    "elemanın sorusu basit: kodların en temelinde 1 ve 0 var, peki biz a yazınca bilgisayar bunu nasıl oluyor da 1010 olarak algılayıp a harfini tanıyor?"

    cevap elbette compiler onları bir şekilde 0 ve 1 basitliğine kadar indirgeyerek bilgisayara okutması ama nasıl? işte soru tam olarak bu.

    temelde kabaca 3 adım ele alalım.

    - ilk etapta kodlar 1 ve 0 ile yazıldı (ya da delikten yola çıkarsak dolu, boş şeklinde)

    - sonra bir adam çıktı "selam" kelimesini işlemciye aktarmak için bile 01110011 01100101 01101100 01100001 01101101 şeklinde uzun bir kodlama lazım, biz nasıl koca cümleyi bilgisayara yazdıralım, çok vakit alır deyip bunu nasıl kısaltacağını düşündü.

    - daha sonra çıkıp (mesela c++) cout<< "selam" yazınca. bilgisayara compile yaparak otomatik olarak "01110011 01100101 01101100 01100001 01101101" dizimini aktaran ve ekrana "selam" çıktısını veren bir dil geliştirdi.

    yani ne oldu 01110011 01100101 01101100 01100001 01101101 yazarak yapacağımız işi "cout<<"selam" yazarak hallettik.

    hah işte sevgili akıllı yazarlar adam bunu sormuş tam olarak. yani o 1 ve 0 ların bir kelime ile ifadesi (-ki bu da programlama dili oluyor) ilk nasıl bulundu diye sormuş.

    merak ediyor muyum? hayır. ama en azından okuduğumu anlıyorum.
  • biri 0-1 demeden önce ben sormak istiyorum. hesap makinesi gibi bir aletten nasıl bu seviyeye geldi bu durum? yani ben bilgisayara örneğin 0101100 kodlarını yazarak ona diğer kodlama dillerini nasıl öğrettim? mantıklı açıklama yapacak yazarlar bekleniyorsunuz.
  • kodlama dilleri makine diline çevrilir, bu bakımdan temelde makine dili vardır. betikten gelen ikili tabandaki komut anakarttı dolaştıktan sonra işlemcideki ampülleri yakıyor. işlemcinin farklı kısımları işlemcideki ampülleri yorumlayıp tekrar anakarta veriyor, gerisini anakart hallediyor.
  • müzik kutusunun içindeki çıkıntılı silindir bile bir yazılım kodudur. her saniye ne yapması gerektiği önceden programlanarak bu basit makineye işletmek üzere yüzeye kaydedilmiştir. günümüzde kullandığımız cihazlara kadar gelecek olursak en temelinde bir ışık anahtarını açtığınızda, yani devreyi tamamladığınızda bu 1'dir. ışığı kapattığınızda da 0. temelinde tüm elektronik cihazlar da hala en kaba tabirle bu şekilde çalışıyor. akım varsa 1, yoksa 0.

    en üst katmanda çalışan yazılımların insanların kullandığı konuşma diline benzer kodları da yine en temelinde karta bu şekilde iletilir. elektrik var ya da yok.
  • (bkz: elektriğin kontrol edilebilmesi)
    kabaca ampulün yanması "1" olarak, yanmaması "0" olarak düşünelim ve 8 adet ampulümüz olsun. bunun tam tersi de olabilirdi, tamamen makinenin tasarımına bağlı. ilk 4 ampul yanıyor ve son 4 ampul yanmıyorsa girişe 11110000 değerini yollamış oluruz. giriş ne dersek (bkz: transistör)

    günümüz bilgisayarların temelini merak eden olursa (bkz: alan turing)(bkz: turing machine)
    bu durumu anlatan en iyi film (bkz: the imitation game)
    1 ve 0 sayılarının temeli maalesef (bkz: matematik)
  • ilk compiler nasıl programlandı sorusudur.birden anlaşılabilecek konular değil bunlar.önce compilerın çalışma mantığı öğrenilmeli sonra yarı iletkenlerin nasıl çalıştığıyla harmanlanmalıdır.1 ve 0 ile çalışıyor hepsi tabii ki fakat makina bu 1 ve 0 ı nasıl anlıyor.(opcode)1 yazınca neden elektrik veriyor da 0 da vermiyor?64 bitlik bilgisayarda 2 üzeri 64 kadarlık bir komut imkanınız vardır ki neredeyse her şeyi yapmaya yeten bir olasılık.dna da 4 adet bazın yanyana farklı dizilimleriyle hücreye nasıl davranacağını komut ediyor.aynı mantık.verilen komutlar dışında gerçekleşen olayların çok hızlı ve kompleks olmaları bizim gibi sıradan insanların kafasını karıştırsa da inatla üzerine varırsanız aynı insanın evrimi gibi bilgisayarların da zamanla hazır olanın üstüne bir şey daha koyarak gününüzdeki halini aldığını görebilirsiniz.
    bilgi nedir(dna'daki kimyasal baz dizilimi(komut depolamak)1 ve 0 ların diziliminin benzerliği)
    bilgisayar sadece onunla uğraşanların gözünün önünde olan ve daha 70 yıllık bir mazisi olan bir alet.bakın alet diyorum yani bununla bir şeyler üretiyorsunuz.

    şöyle düşünün bir inşaat düşününce 3 aşağı 5 yukarı binanın nasıl inşa edildiğini gözünüzde çok basitçe canlandırabiliyorsunuz çünkü binlerce yıldır bu bilgiye sahibiz örneğin çimentonun nasıl oluşturulduğunu bilenler azınlıkta değildir ve tüm bunlar binlerce yıldır gözümüzün önünde yapılıyor.binaların nasıl inşa değildiği bir gizem değil yani.bilgisayarın işleyişi de değil.elektriği istediğimiz şekilde kullanabilecek iletkenler sayesinde son gönderilen sinyalin düşük gerilimli mi yüksek gerilimli mi olmasına göre 1 ve 0 dediğimiz bitler anlam kazanıyor ve bu dizilimlere atanan komutlarla aynı anda çok sayıda devre anlık olarak sinyal gönderiyor.eğer her şeyi önceden ayarladıysanız işte önümüzdeki bilgisayarın çalıştığıı görüyoruz.bu aşırı yüzeysel bir yaklaşım oldu ve teknik terim kullanmamaya dikkat ettiğim için verdiğim bilgiler yanlış lanse edilebilir fakat temelinde böyle bir mantık yatar.

    ilk compiler nasıl compile edildihow do computers read codeyalnız elektrik elektronik müh. ya da bilgisayar müh. değilseniz bu kadar şeyi öğreneceğiniz zamanda çok daha verimli işler yapabilirsiniz.çünkü gerçekten tam olarak anlaşılmask güç konular bunlar.belli bir eşiği aştıktan sonra ise inanılmaz aydınlanma yaşıyorsunuz yalnız. microcode nedir(1 ve 0 ları anlayan gömülü yazılım)
  • hazır mısınız ? işte başlıyorum.

    aslında ilk kod büyük patlama ile kendi kendine ortaya çıktı sonra zamanla şimdiki halini aldı.

    ilk yapıldığında programlama dili diye bişey yoktu. bir kart tasarlanır ve karta elektrik verilerek karta kablolar ile bağlı olan bir led ile sonucu görüyordunuz ( mevcut 1 ve 0 mantığı ) ve sabit değerler ile işlem yapan kartlardı.

    elinize bir pil, iki adet kablo ve bir tane led olduğunu düşünün. ( kablolardan biri kesik ) bu kablolar led ampüle bağlı ve diğer uçları pile değdiğinde led yanıyor ( kesik olmasaydı ). ancak bir kablo kesik demiştik. bu durumda pil ile led arasında enerji akışı olmayacağı için led yanmayacaktır. bu kabloları birbirine bağlayarak yada o kesik yere bir anahtar ekleyerek enerjiyi yönetebilirsiniz. anahtar açık ise led yanar değilse led yanmaz. ( aslında burada basit bir if kullanmış oluyoruz. ama makine dilinde ve dışarıdan müdahale şansı yok. )

    daha sonraki gelişmeler de bu kartlara elektrik vererek özel olarak bazı işleri yapacak şekilde yeniden tasarlandılar. ve o kartın üzerinde ki elektrik sinyallerine göre işlem yapılması sağlandı ( hala mevcut 1 ve 0 mantığı ortada if, for vb. işlemler yok.)

    daha sonra bazı komut setlerini anlayacak kartlar geliştirildi. bu kartlar standart bir kod parçacağını çalıştırmak yerine gelen elektrik sinyaline göre işlem yapılmasını sağlıyordu. ( hala 1 ve 0 mantığı devam ediyor ) sadece 1 ve 0 dışarıdan giriliyor artık.

    bu nasıl çalışıyor, bir kart tasarladınız ve bu kartın ucunda iki tane led bağladınız. bu ledlerin birinin elektrik iletim yolu 101 ( elektrik var, yok, var ) diğeri 011 ( elektrik yok, var, var ) şeklinde. şimdi normalde siz bu karta düz elektrik verdiğinizde iki led de yanacaktır. ama ledlerin iletim yollarına göre elektrik verdiğinizde o zaman sadece biri yanacaktır. hatalı girdiğinizde size hiç bir sonuç dönmeyecektir. örneğin 010 girdiğinizde kart bunu anlamayacak böyle bir iletim yolu olmadığı için ledler yanmayacaktır.

    daha sonra bu kartlar daha fazla geliştirildi ve artık makine dilini anlayacakları seviyeye getirildiler. ve bu kartlara mevcut if, for swicht case, foreach gibi kalıplar işlenerek entegre edildi. bu kartlar if ve for gibi terimlerin ne demek olduğunu hiç bir zaman bilmedi, bilmeyecek. çünkü makine dilinde 1 ve 0 var sadece. o elektrikten anlar.

    kartın üzerine if için atıyorum 10111011 (i) 01001000 (f) gibi elektrik sinyallerini yönetecek şekilde tasarlandığını düşünün. ancak bu kartlar 1 ve 0 gibi sayılarıda anlamıyor 1 ve 0 demek kart için elektrik var ve yok demek. sayıların hiç bir anlamı yok onun için.

    hala modern programlama dillerinden oldukça uzaktayız. çünkü bir program yazmak için if yerine 01 kodları yazarak haberleşme sağlanıyor. ( ortada bir derleyici yok. ) yani siz if yazmak için bir sürü 0 ve 1 yazıyorsunuz ki o kart bunun if olduğunu ondan sonra ne geleceğini anlayabilsin.

    en sonunda modern programlama dillerine geçiş ise bu kartlar ile yazdığınız kodların iletişimini sağlayan derleyiciler ortaya çıktı. bu derleyiciler sizin yazdığınız kodları 1 ve 0 olarak değiştirip o kartlara ( işlemciye ) gönderiyor ve bu şekilde haberleşiyor. yani aslında siz ekranda if ve for gidi kelimeler yazarken arka planda derleyiciler bunları makine diline çeviriyor.

    yani aslında biz şuan da 1 ve 0 yazmıyoruz. kod yazmak kolaylaştı. ama donanım o yazdığımız kodları 1 ve 0 olarak algılayıp yine sonucu bize 1 ve 0 olarak veriyor. bizim ekranda gördüklerimiz ise derleyici ve yorumlayıcıların bize gösterdikleri.

    olayın özü bu aslında.

    edit. derleyici nasıl çalışıyor.

    derleyici belli bir dosya uzantısına bakar. örneğin siz gidip bir tane metin belgesi açıp ( buna şimdilik test.txt diyelim ) içine bir sürü if ve for yazarak bunu çalıştıramazsınız. açmak isteseniz bile yazdıklarınız olduğu gibi karşınıza çıkar. programlama dilindeki derleyici size bunu derleyemiyorum bunu benim anlayacağım şekilde söyle der. sizde bu dosyaları onun anlayacağı şekle çevirirsiniz ( test.php yaparak ) peki bitti mi hayır. derleyici dosya uzantısını algıladı ama hala o dosyanın içinde kod olup olmadığını bilmiyor. bunu da her programlama dilinin kendini özgü olan bir etiketi ile yapıyoruz. yine php ile devam edeyim. az önce oluşturduğunuz test.php dosyasının içindeki kodların en başına <?php ve en sonuna ?> yazarak derleyiciye bunun kod olduğunu söyelersiniz.

    siz dosyası çalıştırdğınız gibi derleyici bu dosyanın ilk satırından okumaya başlar ve bakar ki aha <?php etiketler var hah ben bunu anladım der ve satır satır okumaya başlar. taki sonuna kadar. bittiğini de ?> tagı ile anlar.
  • 1800lü yıllarda kullanılan dokuma makinalarının desen kasetleri üzerine açılan deliklerdir. boş delikten kumaşa boya akmış, dolu kısımdan akamamıştır. bilinen ilk kodlama örneklerindendir
  • suna compiler diyen davarlara, compiler nasil yazildi desek ne cevap verecekler cok merak ediyorum. *
    (bkz: compiler bootstrapping)
hesabın var mı? giriş yap