Yazılım Dilleri Nasıl Oluştu?

Katılım
4 Aralık 2014
Mesajlar
880
Makaleler
9
Çözümler
1
Arkadaşlar programlamaya ilgim var ve ileride bilgisayar mühendisi olmak istiyorum. Merak ettiğim bir şey var. Biz programları yazılım dilleriyle yazıyoruz peki yazılım dilleri nasıl oluşturuluyor? İlk yazılım dili nasıl yapıldı mesela ? Teşekkürler.
 
Bilgisayar yani bir makineye kazandırılan işlem gücü elektriğin kontrol edilebilmesi ile başladı.
Bugün kullandığın işlemcilerde sayamayacağın miktarda transistör yani elektrik akımını yönlendiren binlerce, daha doğrusu milyonlarca kapı bulunmaktadır, ilk micro işlemcide bile 2K küsür kapı vardı. Üretim teknolojileri küçüldükçe açtığımız kapıların haddi hesabı tutulamaz miktarlara yükselmeye başladı. Haliyle daha çok veriyi daha kısa sürede işleyebilir, kontrol edebilir hale geldik.

Aslında ilk yazılım dilinin ucu ister istemez ilk işlemcilere dayanıyor. Mikro işlemcilerde kullanılan makine dili ile başladı her şey. Şuan kullandığın sistem bile en temelde, merkezi işlem birimi olan CPU'da makine dilini kullanarak işlem sağlıyor. Bilgisayarın kendisi başlı başına bir converter, bir veri işlenirken farklı kalıplara sokulup işlem görüyor.

İnternete bağlı bulunduğun ethernet protokolünde bile birçok katman ve her katmanda farklı veri tipleri mevcut. Temelde CPU'da dönen şey hep aynı, makine dilinde ifade edilişi hep aynı. Değişen tek şey bu yazılımların insanlara hizmet edip hayatını kolaylaştırıyor olması. Bugün bunca işlemi makine dilini kullanarak asla yapamazdık, kolaylaştırılmadan bu iş imkansız olurdu. Kolaylaştırmadan asla gelişemezdik. Kolaştırmadan, klavyeye 2 tuştan fazlasını ekletemezdik. Ekletsek bile bilgisayar herkesin kullanabildiği bu kadar basit bir cihaz olamazdı.

Bunca kolaylık yetmedi, halen daha yapay zeka teknolojilerini kullanarak işi başkasının üzerine, yazılımların üzerine atmaya çalışıyoruz. Hayatımızı daha da kolaylaştırmaya çalışıyoruz. İsteklerimize en kısa sürede yanıt verecek yazılımlar, yazılım dilleri üretiyoruz. Yinede yetmeyecek, insan oğlu hep daha kolayını daha hızlısını arayacak. Ben korkuyorum ki ileride kullanacağımız yazılım dillerini de yapay zeka yazılımları geliştirir hale geleceğiz :D Olay tamamen yazılımların insan hayatını kolaylaştırmasına yönelik olarak evrildi.

  • İlk işlemcilerle direkt olarak makine dilinde iletişim kuruluyordu. Haliyle zor işti, uzun işti.
  • Daha sonradan üretilen yazılımlar yukarıda da bahsettiğim ve kendi bilgisayarımızın da yapmış olduğu çeviri işlemini mevcut kılan, komutların insanlar tarafından daha rahat anlaşılmasını - hafızada tutulmasını sağlayan kısaltmalar kullanılmaya başlandı. Ancak her sistem için ayrı ayrı kodlanması gerekiyordu ortak bir payda olmadığı için.
  • Ve şuan çoğumuzun kullandığı yazılım dilleri meydana geldi. C dilleri en büyük örneği bunların. Bu yazılım dillerinin çalışması için derleyicilere ihtiyaç var. Nasıl ki yeni format atılmış bir sistemde oyun oynamak istediğinde C kütüphanelerini yüklemeni istiyor, nasıl ki DX kütüphanesi olmadan 3D görüntü yürütemiyorsun aynı mantık.
Bunun da ötesine gittiğimizde ise mantık ve yapay zekanın bizi karşıladığını görüyoruz. Kendi kendine öğrenebilen yazılımlar bahsettiğim sınıfa giriyor. Artık yazılımcı, bu kabiliyeti sağlayabilmek için daha farklı dillere ihtiyaç duymaya başlıyor. Yani bir seviyeden sonra olay tamamen ALGORİTMA üzerinde dönmeye başlıyor.

Yapay zekanın mantığı da üretilen algoritmanın, ihtiyacı kendiliğinden karşılamasıdır zaten.
Yapay zeka hakkında bilgi sahibi olmak istersen aşağıdaki yazıyı da okuyabilirsin.

Kısacası hiçbir şey yoktan var olmadı yazılımda. En temelde elektriğin yönlendirilmesi - 0/1'lerin tayin edilmesi ve kısaltılması ile başladı. Sonra ise gelişe gelişe bu günlere geldi.
Ben de yazılım ile uğraşan, aynı senin gibi yapay zeka meraklısı biriyim. Şuan okuduğum üniversitede de yapay zeka dersi yüzünden yarım dönemim uzadı. Bu dönem 45 puan alarak yapay zeka dersinde bölüm birincisi oldum, yapay zeka gerçekten anlaması zor bir konu. Bir insan, başka bir insana yapay zekayı anlatamazken bir insanın bir programa yapay zekayı, kodlar ile anlatabilmesi gibi bir durum :D Yapay zeka kendi içerisinde çok farklı dallara ayrılan bir alan. Ve bana kalırsa cidden zor bir konu, insanın aklını, mantığını, sınırlarını zorlayan bir dal.

Kaçamak cevap olarak algılama elimden geldiğince net cevaplar vereceğim, sohbet ediyormuşuz gibi düşün eğer ki sıkılmazsan :)
Benim doğduğum tarihte dünya satranç birincisi, bir yapay zeka programı karşısında yenik duruma düşüyor. Mesela bu yazılım ; Öğrenebilen bir yazılım değildi. Öğretilenin dışında yeni bir şey keşfetmiyordu yani. Satranç programları tamamiyle üst düzey birer hesap makinesi yazılımından farksızdı.

Yani satranç oyunundaki her hamle matematiğe dökülmüştü. Bugün yapay zeka uygulamalarının öğrenemeyen kısmını oluşturan çoğu yazılım aslında ; Düşüncenin matematiğe aktarılabilmiş halinden ibaret. Yazılım her olasılık için binlerce matematik işlemini önceden hızlıca yapıyor, hatta sonsuz sayıda hamleyi önceden hesaplıyor. Aslında oyunu kimin kazanacağı en başından belli kısacası.

Aynı şekilde tavla oyunları da birer yapay zeka uygulaması artık. İnternetten oynadığınız o tavla oyunlarının gelişmiş birkaçında zarlar rastgele atılmıyor. Gelecek olan sayı program tarafından hesaplanıyor ve ona göre sayılar düşüyor.

Yapılacak hesapları, programa aktaran kişinin satranç zekası da programın totalde sahip olacağı zeka ile doğrudan orantılı oluyor haliyle. Programa bir konuyu, kodlar vasıtasıyla anlatmaya çalışan kişinin o konuyu gerçek hayatta, bir insan olarak da çok iyi bilmesi gerekiyor. Satranç oyununu bilmeyen birinin yapay zeka satranç uygulaması geliştiremeyecek olması gibi.

Kısacası Kasparov'un bilgisayara yenilişi yapay zekanın en önemli örneklerindendir. Ve öğrenebilme yeteneği yoktur, insan programa öğretmiştir. Program ise yalnızca öğretileni uygulamıştır. Öğrenebilen bir yapay zeka örneği asla değildir. Bir çıkarım yürütemez, beklenenin dışında bir olasılığa yanıt veremez. Önceden hesaplanmış durumlara karşı hazırlıklıdır yalnızca. Ve bu örnekte öğreten kişi, konu hakkında kesinlikle çok derin ve detaylı bir bilgi dağarcığına sahip olmak zorundadır.

Eki Görüntüle 271443

Gelelim öğrenebilen yapay zeka programlarına. Söylediğim gibi, bunlar da kendi içerisinde alanlara ayrılıyor. Ama konu tamamen algoritmalar ile alakalıdır. Tamamen geliştirilen algoritmanın ne iş yaptığı ile alakalıdır. Bugün en güvenli şifreleme yöntemleri bile en temelde birer algoritmadan ibarettir.

Mesela IPhone X yüz tanıma teknolojisi de öğrenebilen bir yapay zeka uygulaması sayılabilir.
Programa yüzünü gösterdiğin vakit o da her bir piksel üzerinde matematiksel işlemler yaparak senin suratını matematiksel birer bilgiye çeviriyor. Uzuvların arası mesafeyi ölçüyor mesela.
İnsandaki yetinin birebir aynısını programa kazandırmaya çalışıyorlar yani.
1 defa Ahmet'i gösteriyorsun, diğer tüm fotoğraf karelerinde Ahmet'i arıyor matematiksel işlemler yapan ilgili program. Ölçüyor biçiyor, onun Ahmet olup olmadığını anlıyor.

Yukarıdaki satranç yazılımı ile çok benzer gelebilir ancak burada programa verdiğin bir bilgi yok.
Programa yalnızca öğrenebilmeyi öğretiyorsun, tanımayı öğretiyorsun. Yani aynı gibi görünse de aslında ikisi çok farklı programlar. Yine satranç mevzusundan "Öğrenebilen satranç yazılımı" ile arasındaki farkı da söyleyeyim.

Mesela nasıl yapılıyor bu öğrenebilen satranç yazılımları? 1977 yılında satranç birincisini yenen yazılım ile arasındaki fark nedir? ALFA GO oyunu nedir? Programa hiçbir taktik öğretilmeden nasıl bu kadar gelişti kendi kendine?

Eki Görüntüle 271448

İşte tam burada "DENE VE GÖR" mantığı ortaya çıkıyor. Bu algoritmada kesinlikle programı yazan kişinin oyunu bilmek, iyi bilmek veya Alfa Go birincisi olmak gibi bir zorunluluğu yok.
Bak Technopat linkini de koydum buraya, makale varmış okursun.

Yeni Yapay Zeka, AlphaGo'yu 100 - 0 Yendi - Technopat

Burada ise tamamiyle donanımın gücü açığa çıkıyor. Bilgisayarların hesaplama potansiyeli ile doğrudan alakalı bir durum. Bir insanın öğrenme kabiliyeti sınırlıyken bir bilgisayarın öğrenme gücü kesinlikle sınırsızdır, donanımlar her geçen gün geliştirilebilir ancak insan hep yerinde sayacaktır.
Bir "Aynştayn" dünyaya bir defa gelecek olsa bile asla bir bilgisayar etmeyecektir, asla bir bilgisayarın hesaplama kapasitesine sahip olamayacaktır bir insan. İnsan doğası gereği yavaş bir mahluktur. Ülkeden ülkeye değişmekle beraber teknoloji konusunda en gelişmiş ülkenin insanları bile yatakta oldukça yavaş, sönük bir performans sergileyebiliyorlar :)

ALFA GO yapay zeka programının numarası şu ; Var olan tüm donanım gücünü kullanarak sayısız kez bilgisayar, başka bir bilgisayara karşı oyun oynuyor. Yalnızca kurallar belirtiliyor, yazılım sadece kuralları biliyor. Başka hiçbir taktiğe sahip değil, kaldı ki 19*19 kareye sahip oyun. Mantıksal algoritmasını kurmak çok zor olur, satranç gibi değil. Anı karekök gibi 2 haneli bir rakamın mantık algoritmasını kurma zorluğu 4 iken 19 haneli bir rakamın mantık algoritmasını kurmak hesap bile edemeyeceğim rakamlara ulaşıyor. Olasılık çoğaldıkça mantığı kavramak ve kavratmak inanılmaz zorlaşıyor. Bu yüzdendir ki çoğu süper zeki sistem uygulamasının bilgi alanı çok ama çok dar.
Her konuda zeka sergileyebilen bir süper sistem henüz yok, aslında insan ile aynı özelliği taşıyor bir nevi.

Kısacası yazılıma sayısız kez oyun oynatılıyor ve iyisi ile kötüsü ile tüm sonuçlar kayıt altına alınıyor.
Program haliyle bakıyor, kim yenmiş kim kazanmış. Kazanan ne yapmış kaybeden ne yapmış.
Dolayısıyla her bir sonraki oynayışında, bir önceki eldeki doğru davranışlardan bir miktar kırpıp kendisine katıyor. 80 hamlenin hangisi doğru hangisi yanlıştı bunu anlayabiliyor. En önemli nokta bu, doğru ile yanlışı deneyerek ayırt edebilme yöntemi de en net çözüm sağlayan yöntemlerden biri. Mevzu da tam olarak bu ; Kimse "Bu hamle doğru hamle" demediği halde, program hangi hamlenin doğru hangi hamlenin yanlış olduğunu anlayabiliyor.

Yani her oyunda, doğru olan birkaç davranışı öğrenip kendi bünyesine katıyor. Programın sayısız kez oyun oynadığını düşünürsek 3 gün gibi bir sürede ALFA GO dünya birincisi olan bir insanı sayısız kez malup edebilecek bir yazılım ortaya çıkıyor.

Yani bilgisayarın
deneme yanılma yöntemi ile bir şeyler öğrenebileceğinin en kesin kanıtlarından birisidir bu. Donanım ve algoritmaları geliştirebilirsek süper bilgisayarlar ile birlikte amansız işler amansız zekalar geliştirilebilir kısacası.

Yani bu yapay zeka çok insanı işinden edecek ileride. Bunu bile bile "Yazılım öldü, artık herkes bilgisayar kullanmayı biliyor" gibi sözler sarf edenlere ileride gülüp alay edeceğiz kısacası. O yazılım bilmeyenlerin teker teker işsiz kaldığı dönemlere şahitlik edeceğiz ilerleyen zamanlarda.

Eki Görüntüle 271449

Mesela yapay zeka "Hastalık Teşhisi" koyan yazılımlardan bahsedelim. Bu öğrenebilen yazılımların can alıcı noktası ise veritabanında bulunan verilerdir genel olarak. Yukarıdaki örnek gibi bilgisayar kendiliğinden bir hasta yaratıp hastalık var edip deneme yanılma yapamaz. Çünkü deneme yanılma yapabilmesi için gerçek bir insana ihtiyaç duyar, hastalığın ne tepki vereceği önceden bilinse zaten yapay zekaya gerek kalmazdı :)

Bu noktada hastalığın belirtileri - hastalığın gelişmesi - tedavi sürecinde uygulanan yöntemler ve hastanın bu tedavilere karşı ne yanıt verdiği - Hastalığın ilerleme aşamasında ulaşılan tetkiklerin neler olduğu gibi soruların yanıtları büyük bir veri tabanına toplanınca yapay zeka meydana çıkıveriyor.

Bu büyük ve kesin deliller neticesinde oluşturulmuş veritabanını yorumlamayı öğrenen bir program kendisine yeni bir hasta tanıtıldığında ne aşamada olduğunu veya ileride ne olacağını önceden gördüğü, yüksek oranda tahmin edebildiği için çok daha kesin tedavi yöntemleri uygulanabiliyor.

Tek sorun öncesinde düzgün bir bilgi topluluğunun oluşturulması. Sağlık sektöründe bu verinin ulaşım süresi maalesef biraz daha uzun olabiliyor. 3 günde sayısız örnek tecrübe edemiyor yani yazılım.



Öncelikle senden kaynak talep ediyorum, hangi yapay zeka yazılımından bahsediyorsun? Benim bildiğim henüz "Kelimeleri anlamak ve anlam çıkartmak, aynı şekilde ; Karşılığından tekrardan anlamı bir cümle kurarak cevap verebilme" yetisi tam olarak kazandırılamadı. Siri gibi örnekler vereceksen eğer Siri hiçbir şekilde öğrenebilen bir yapay zeka programı değil, gelen sorulara verilecek cevaplar insanlar tarafından düşünülüp yazılıyor, güncellemelerde programa ekleniyor.

Hani Siriyi açıp "Siri senin ben a.....a koyayım" tarzı cümleler kuruyoruz ya :) İşte o küfürlerin hepsi şirketin depolama aygıtlarında saklanıyor, kullanılan veri siliniyor mudur bilmiyorum.
Ama yeni güncellemeler ile birlikte "Ben de senin a..a koyayım" gibi cevaplar da vermeye başlıyor :D
Bu da yukarıda verdiğim örneğin "Öğrenemeyen" versiyonu. Yukarıda program deneme yanılma ile karar verebiliyordu. Ancak Siri ve benzeri programlarda henüz öğrenebilen bir algoritma tam anlamıyla geliştirilemedi.

Bazı Siri rakibi yazılımların oldukça edebi sorulara bile güzel cevaplar veriğini görürsün. Aynı programı indir ve absürt bir soru sor, dilinin bağlanacağını görürsün :) Henüz gelişmedi o kadar.

Zaten yapay zekanın önündeki ennn ama enn önemli problem de bu ; Cümleyi anlama ve karşılığında anlamlı bir cümle kurabilme yeteneği.
Eski yapay zeka fikircilerinden biri "Bilgisayarda konuştuğun kişinin insan mı yoksa bilgisayar mı olduğunu ayırt edemediğin vakit öğrenebilen bir yapay zeka gelişmiştir" tarzı bir söz söylemişti.

Yani @YapayBilgisayarKurdu isimli yapay zeka bir üyelik düşün :D :D Senin sorduğun bu soruya, açtığın konuya karşılık bu kadar yazıyı bir araya getirip yazabilen bir yazılım düşün.
Ne kadar zor değil mi? Kulağa ne kadar imkansız geliyor değil mi? Hatta internetten görsel ararken hoşuna gidenleri seçip beğendiğini :D Merak etme fotoğraf seçme kısmı çoktan halledildi, Netflix gibi sinema yayıncıları bile görsel aramak için vakit kaybetmiyor, program onların yerine yapıyor.
O da deneme yanılma yöntemi ile resimlerin beğenilip beğenilmemesine göre doğru olan metodu bulmaya, kusursuzlaştırmaya çalışıyor her geçen gün.

Yani asıl mevzu insanın dilinden anlayabilen ve insan gibi konuşabilen bir yazılım geliştirmek. Senin sorduğun sorunun geldiği son nokta burası. Bu sorunun cevabını tam olarak bilsem yapay zekada tarih yazmış olurdum bu yaşımda :D O kısım cidden zor ancak fazla uzak değil, yakında insanların Sex Shop'lardan aldığı canlı mankenler ile evlenme kararı aldığı günleri de göreceğiz. Sex Shop'lar ne zaman ki gelişmiş anla ki o zaman yapay zeka pişmiş. Ve 19*19 tablodan örnek verdiğim üzre bir dilin sahip olduğu kelime sayısı arttıkça mantıklı bir cümle kurmak ve bir cümledeki mantığı kavratabilmek gittikçe zorlaşıyor.
İleride bu programları evrenselleştirebilmek için de bir çaba sarf edilir diye düşünüyorum. Yoksa Türkçe'den Arapça'ya bile tam anlamıyla bir çeviri söz konusu değil. Bu evrenselleştirme olayını da programın öğrenebilme kabiliyeti halledecek zaten.

İnternet kafelerde "Abi 8 numarayı 45 dakika uzat" demeden, programın seni tanıyıp kendiliğinden süreyi uzattığı dönemler göreceğiz. Parası olmadığı halde süreyi uzattıranları otomatik olarak kafeden kapı dışarı atan robotlarla tanışacağız.

Belki bu makaleyi yazan bir yapay zeka olur günün birinde he ne dersin?
Belki 45 yaşıma geldiğimde dönüp bu yazdıklarımı okuyup güleceğim günün birinde?
Geçmişte yazdığım şeyleri, sahip olduğum fikirleri yıllar sonra geriye dönüp okumak cidden çok hoşuma giden bir şey.

Buradan not geçelim ; Programlamanın ulaşabileceği noktanın ucu bucağı yok ancak benim ülkemde insanlar fetö bahanesiyle dolandırılırken bu programlama gelişse de halka ulaşmaz kolay kolay :D
Bilgisayarlar ne kadar gelişirse gelişsin insanlar bu kadar beyinsiz olmaya devam ettiği sürece o ilimden o bilimden o bilgiden nasibimizi biz biraz zor alırız.

Platonik aşıklar için sevdiğinin birebir kopyası klonlar üretileceği gibi bekliyorum ben. O gün geldiğinde herkes korkusuzca açılabilecek sevdiğine. Reddetse bile Vatan Computer 24 ay garanti ile aynısını satıyor olacak nasıl olsa :) Biliyorum uzun oldu ancak ben böyle yorumluyorum yapay zekayı.
 
İşlemcinin nasıl çalıştığını tam teşekkürlü bir şekilde anlamak, anlamak sorunuzun cevabı olacaktır.
Intel sağolsun, "zibilyon" tane transistör var işlemcilerde. :D
Ben pek anlayamadım tam olarak ama sanırsam transistörler kapı görevi görüyor ve RAM ile veri alışverişi ile işlemcimiz çalışıyor. Sanırım. :D

Üretim teknolojisi git gide sınıra yaklaşıyor. 7 nm, silikon işlemciler için sınır olarak gözüküyor. Başka bir alaşımından 5 nm bir işlemci yapıldı IBM tarafından fakat nasıldır, nedir, ne değildir bilemeyeceğim.
 
Uyarı! Bu konu 7 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı