10 Mayıs 2012 Perşembe

iOS vs Android veya Ezeli Rekabet

Cep telefonuna para vermeyi seven insanlar bugünlerde ikiye bölünmüş vaziyette: Bir tarafta iPhonecular var, diğer tarafta da Androidçiler. İki taraf da birbirini kırmaya kadar varan tartışmaların içine girebiliyorlar. Bu rekabet, her ne kadar son zamanlarda ortaya çıkmış gibi gözükse de, aslında kökü hayli eski zamanlara dayanan bir rekabet, veyahut daha doğru deyişle husumet. Bu yazıda da bunu anlatacağız.Özellik olarak karşılaştırma yapmayacağız, zira bunun pek de önemi yok; birisinin yaptığı güzel şeyin muadilini diğeri de hemen geliştirdiğinden, aslında arada öyle çok bir fark da yok.
Soldaki Android tabanlı bir telefon, sağdaki ise iPhone

iOS da, Android de işletim sistemi (operating system, kısaca OS) adı verilen yazılımlardır. PC ve laptoplarımızda kullandığımız Windows gibi. Bu aşamada söyleyelim; iOS adlı yazılım iPhone'ların işletim sistemidir, Android de Android tabanlı cep telefonlarının. Tabii sadece cep telefonu ile sınırlamamak lazım. Android ile iOS son zamanlarda popülerleşen tablet bilgisayarların da işletim sistemi haline gelmişlerdir.

Bilgisayar (cep telefonu da bir bilgisayardır) adı verilen aygıtlara salt donanım olarak bakıldığında son derece ham ve ilkel oldukları görülür. İşletim sistemleri bu aygıtları deyim yerindeyse adam ederler. İşletim sisteminin ne yaptığını çok kabaca anlatmak gerekirse, öncelikle donanım kaynaklarını teknik detaylarından soyutlayarak programlar tarafından kolay anlaşılabilir hale getirir. Örneğin sabit disk denilen şey aslında silindirlerden, izlerden ve onların içine manyetik olarak kodlanmış 0 ve 1'lerden ibarettir. İşletim sistemi ise diski dosyalar ve klasörler olarak anlaşılabilir şekilde soyutlar. Daha da ileri gider, silindirlerle alakası olmayan taşınabilir USB hafıza, CD gibi depolama aygıtlarını da klasör/dosya mantığına göre soyutlarlar.

İşletim sistemlerinin ikinci işlevi de, yazılım uygulamalarına (herkesin ağzındaki "aplikasyon" kelimesi)  çalışabileceği ortam yaratmasıdır. Bununla bir programın ne zaman başlayacağını, bilgisayarın kaynaklarını nasıl kullanacağı gibi yönetimsel işlevleri kastediyoruz.

Sabırsızlanmayın, yavaş yavaş konumuza geliyoruz. Bir işletim sistemi geliştirmek kolay değildir. Geliştirmek derken salt geliştirme nisbeten kolaydır belki, ama tüm programlar kendisine dayandığı için hatasız olmalıdır (halbuki normal programlar bol bol hata içerebilirler, pratikte). Ayrıca varolan programların çalışması için onlarla uyumlu olmalıdır. Yaratılan yeni bir işletim sistemi ne kadar teknik olarak üstün olursa olsun, eğer varolan programları çalıştıramıyorsa hiçbir işe yaramaz.

Şimdi ezeli rekabetin ayrıntılarına girebiliriz. Herşey 1969 yılında AT&T şirketine ait Bell laboratuvarlarında geliştirilen Unix adlı işletim sistemiyle başladı. Sonucu baştan söyleyeyim: Hem iOS hem de Android de 43 sene önce yaratılmış bu işletim sistemi temeli üzerinden geliştirilmişlerdir.
Ayakta duran sakallı Unix geliştiricilerinden Ken Thompson

1980'lerde PC devrimi Microsoft firmasının geliştirdiği (aslında DOS'u bir Seattle firmasından 50 bin dolara satın almışlardır; sonra da IBM PC vasıtasıyla milyonlarca dolar kazanmışlardır. Neyse.., kapa parantez) DOS ve Windows işletim sistemleri ile tam gaz ilerlerken, Unix, her ne kadar akademikimsi bir ortamda ortaya çıkmışsa da, PC'den daha büyük bilgisayarların (bunlara ironik bir şekilde mini bilgisayar denir) ticari işletim sistemi olarak hayatını devam ettirdi. Ticari işletim sistemi derken, birçok firma kendi Unix'ini geliştiriyordu: IBM AIX, SCO Unix, Solaris, Xenix (bu ürün Microsoft'undur) ve benzerleri...

1980'lerin ortalarına doğru ticari Unix'lere uyuz olan Richard Stallman özgür yazılım hareketini başlattı. Daha önce Unix'lerde kullanılan en popüler metin editörü olan Emacs'i geliştirmiş olan bu çılgın programcının bu seferki amacı yeni ve özgür bir işletim sistemi geliştirmekti. Kurduğu hareketin adına GNU dedi, ki açılımı "Gnu's Not Unix" olan bir yinelemeli kısaltma (recursive acronym) idi.
Richard Stallman kıl biridir ama endişeleri de zamanla hep doğru çıkar

Aynı zamanlarda Berkeley'deki California Üniversitesi 1977'den beri Unix'in sahibi AT&T'den lisansladığı kendi BSD (Berkeley Software Distribution) adlı işletim sistemin geliştirmesini ve dağıtımını yapıyordu. AT&T lisans fiyatını 200 bin dolar civarına çıkarınca bir karar verildi: BSD'deki tüm AT&T kodu yeniden yazılarak çıkarılacak ve lisansa bağımlı olmayan bir işletim sistemi elde edilecekti.

Tüm bunlar yavaş yavaş pişerken, hiç beklenmeyen bir şekilde 1991 yılında Finlandiya'da Linus Torvalds adlı bir üniversitesi öğrencisi eve kapanıp Linux adıyla kendi işletim sistemini geliştirmeye başladı. Minix adında bir işletim sistemini temel alıyordu. Bu işletim sistemi Andrew Tanenbaum adlı ünlü bir hoca tarafından öğrencilere örnek olsun diye geliştirilmiş bir yazılımdı.
Linus Torvalds

İlk özgür Unix türevi için başlayan GNU idi, ama GNU önce işletim sisteminin yardımcı programlarını geliştirdi. Sonra 1990 yılında GNU Hurd adıyla işletim sistemine de başladı, ama çok idealist tasarlanan bu işletim sistemi halen tamamlanamamıştır! Diğer yandan BSD özgür olarak bitmek üzereyken 1991'de AT&T'nin açtığı dava ile karşılaştı. Bu dava 1995'de tatlıya bağlanana kadar geliştirme ister istemez durmasa bile tadını kaybetti. Böylece 1991'de başlayan Linux biraz da Linus'un tatlı sert karizmasıyla aradan sıyrılıp popülerleşti.

Peki bitememesine rağmen GNU'dan neden bu kadar bahsettik? Çünkü Linus akıllılık ederek işletim sisteminin sadece temelini (çekirdek) geliştirdi, diğer tüm yardımcı parçaları GNU'dan aynen aldı. Bu yüzden Stallman uzun süre "bu sistem GNU Linux diye isimlendirilmelidir" diye çemkirmiştir. Aslında haklıydı da, ama bu isim hiç tutmadı ve kullanılmadı.

BSD ticari prangalardan kurtulduktan sonra FreeBSD, NetBSD ve OpenBSD diye 3 tane özgür işletim sistemi ortaya çıktı. Teknik olarak daha üstün olduklarını iddia etmelerine rağmen Linux tarafından sollanmak bu işletim sistemlerinin geliştiricilerinin ağzında acı bir tad bıraktı. Bu da husumetin başlangıcı oldu.
FreeBSD'nin simgesi Linux'un simgesini tepelerken
Tarihe biraz ara verip Unix benzeri işletim sistemleri olan Linux ile BSD'nin en önemli farkına bakalım: Linus Torvalds müşfik diktatör (benevolent dictator) olarak Linux geliştirmelerini tek elden yönetir gibi gözükse de, tüm süreç açıktır. Şu dakikada bile http://www.kernel.org sitesinden tüm kodlara ve en önemlisi tartışmalara ulaşılabilir. BSD geliştirmesi ise daha elitisttir, küçük gruplar aralarına başkalarını pek almazlar. O yüzden çeşitli kavgalar sebebiyle BSD üçe bölünmüştür.

Şimdi bambaşka bir yer ve zamana gidelim. Apple firması Macintosh serisinden bilgisayarlarıyla PC'lerin en büyük rakibiydi. Macintosh'lar 1984 yılından beri firma bünyesinde geliştirilmiş Mac OS adlı işletim sistemiyle çalışıyordu. 1994'de eskiyen işletim sistemini yenileme çalışmalarına başlandı. 1996'da bitirilemeyeceği anlaşılınca proje iptal edildi. Bu başarısızlıklar Apple CEO'su Gil Amelio'nun istifasına ve kurucu Steve Jobs'ın şirkete geri dönmesine yolaçtı. Jobs akıllı bir karar vererek yenilenmiş Mac OS X'in BSD'den temel alınarak geliştirilmesini sağladı. İlk Mac OS X 2001 yılında çıkabildi. Geç oldu güç oldu ama bu yıllarda iflasa çok yaklaşan Apple kurtuldu.

Bu aşamada bir inceliği söylemek lazım. Linux GPL adı verilen GNU tarafından yazılmış bir lisans ile lisanslanmıştır. Bu lisansa göre türeyen yazılımların da açık kaynaklı olması gerekir. Diğer yandan BSD işletim sistemleri aynı adı taşıyan BSD lisansı ile lisanslanmıştır. Bu lisans türeyen yazılımların açık kaynaklı olup olmadığını umursamaz. Apple böylece işletim sistemini BSD'den türetebilmiş ama kapalı kodunu koruyabilmiştir. Linux'u temel alsa bunu yapamayacaktı.
Android robotunun içine Linux'un pengueni mi saklanmış ne?

Seneler geçti ve cep telefonları müthiş bir buluş olarak yaygınlaştı. Nokia gibi dev firmalar kendi işletim sistemleriyle telefonlarını donatırken, 2003 yılında Android Inc. adlı bir firma kuruldu. Bu firma gizlice Linux tabanlı bir cep telefonu işletim sistemi geliştirmeye başlamıştı. Cep telefonu sahasında ihtirasları olan Google 2005 yılında bu firmayı satın aldı ve geliştirmeler Google bünyesinde devam etti. 2008'den itibaren Android tabanlı telefonlar da çıkmaya başladı.

Bu arada Apple 2007 yılında çıkardığı iPhone cep telefonları için Mac OS X tabanlı bir işletim sistemi geliştirdi. Bu işletim sistemi için ilk "iPhone runs on OS X", sonrasında da "iPhone OS" gibi parlak olmayan isimler verildi. En sonunda 2010 yılında IOS isminin sahibi Cisco'dan lisans hakkını alarak işletim sistemini iOS diye resmen isimlendirdi.
Steve Jobs iOS'u tanıtırken

Yazımızın sonuna doğru ancak iOS-Android karşılaştırmasına varabildik gibi gözükse de, karşılaştırmanın bence özü olan tarihçeyi sanırım anlatabilmişimdir. Bu tarihçenin günümüze bir yansıması da, Android işletim sistemi Linux tabanlı olduğu için kodunun açık kaynaklı olması ve her isteyen cep telefonu firmasının lisanslayarak kullanabilmesidir. iOS ise kimseye lisanslanmadığı için sadece Apple tarafından kullanılabilmektedir. Kodu da açık değildir.

Tüm bu gelişmeler neredeyse 20 sene önce gelişen BSD-Linux husumetinin dev firmalar Google ile Apple arasında devam ettiğini göstermektedir. Bu rekabet çok medyatik olmasa da, önemseyenler için halen canlıdır. Örneğin bu haberde Linux taraftarlarının senelerdir "BSD öldü" diye dalga geçmelerine rağmen Mac OS X sayesinde geliştirme platformu olarak BSD'nin ilk defa Linux'u solladığından bahsedilmektedir.

16 Şubat 2012 Perşembe

Google Nasıl Para Kazanır?

Fıkrayı duymuşsunuzdur: Nasrettin hoca borcunu nasıl ödeyeceğini soran alacaklısına "Bak şu bahçenin kenarındaki çalıları görüyor musun? Buradan geçen koyunların yünleri bu çalılara takılacak. Bu yünleri toplayacağım. Eğirtip iplik yaptıracağım. İpliği satıp sana borcumu ödeyeceğim." demiş. Alacaklısı gülünce de "Peşin parayı görünce nasıl da gülersin?" diye takılmış.
Çoğu Internet projesi göle maya çalma iyimserliğinde başlar

İşler Internet ölçeğinde olunca Nasreddin hocanın fıkrası da neredeyse gerçek oluyor. Google arama motoru ile bir arama yapacaksınız DA, o aramanın yanındaki çıkan reklamlar ilginizi çekecek DE, tıklayacaksınız DA, ancak ondan sonra Google bu tıklamadan 3-5 sent kazanacak. Böyle anlatılınca zor görünse de, Google'ın gelirlerinin %97'si reklamdan geliyor ve bunun parasal ifadesi de yılda tam 32.2 milyar dolar.... (Kaynak)

Arama Motoru

Google 1998 yılında arama motoru piyasasına girdi. Çoğu internet başarı hikayesinin aksine, piyasaya girdiklerinde meydan gayet dolu görünüyordu: Go.com, Lycos, Excite, Yahoo, Altavista, Inktomi, HotBot, MSN Search, AllTheWeb ve daha nicesi... (1990'larda internete girmeye başlayanlar derin bir "Aah ah!" demişlerdir şimdi) Meydan dolu, kar marjı düşük, oldukça yüksek bilgi işlem gücü isteyen bir işe soyunan iki üniversiteli. Pek akıl karı değil gibi gözüküyor değil mi?

Ancak kurucular Sergey Brin ile Larry Page her yazılımcının hayali olan şeyi yaptılar ve buldukları (ve aynı zamanda doktora tezleri de olan) PageRank adlı algoritmayla Internet'in en başarılı arama motorunu yapıp tüm diğer arama motorlarını ezdiler geçtiler ve gayet de zengin oldular.
Karizma sıfır (Ön sıra soldan sağa: Sergey, Larry. Arkada ise Eric Schmidt abi)

Arama motorlarında arama yapıldığında, sonuçların sıralaması çok önemlidir. Çünkü kullanıcı doğal olarak ilk sıradaki sonuca, sonra da ilk sonuç sayfasındaki sonuçlara daha çok bakma eğilimindedir. Peki, bir arama motoru bulduğu sayfaları nasıl sıralar? Önemli olan soru budur.

PageRank algoritmasını kısaca anlatmadan önce, Google dışındaki arama motorlarının ne yaptığını görmek yerinde olur. Diğer arama motorlarına bir kelime yazıp aradığınızda o kelimenin en çok geçtiği site en önce gelir, daha doğrusu kelimenin geçme sıklığına göre sıralama değişir. Internet'in ilk ve de naif zamanlarında iyi sonuçlar veren bu sistem zamanla kötü (ve daha sonra iyiler de bunların arasına katıldı) niyetli web sitesi sahipleri tarafından popüler kelimeler sitenin sayfalarında bol bol bulundurulmak suretiyle sabote edilmeye başlandı. Hatta bu kelimeler sitenin görüntüsü bozulmasın diye siyah zemin üzerine siyah font kullanmak gibi hinlikler ile yazılıyordu. Bunun sonucunda arama sonuçlarının güvenilirliğini azalmaya başladı.

Dahası, arama motorları para kazanabilmek için para aldıkları firmaların sayfalarını sonuçlarda öne çıkarmaya başladılar. Böylece arama sonuçlarından işe yarar sonuçlar çıkarabilmek neredeyse imkansız hale geldi. Şahsen ben bu dönem arama sonuçlarına pek güvenmeyip daha çok dizin servisleri olan, yani siteleri hiyerarşik kategoriler halinde ayıran Yahoo ile Dmoz'u kullanıyordum. Elbette bugünkü verimin yanına bile yaklaşamıyordum.

PageRank ise bambaşka bir yaklaşım getirdi. Bu algoritma bir sayfanın popülaritesini kendisine ne kadar link verildiğiyle ölçer ve sonuçları da buna göre sıralar. Örneğin daha önce Microsoft kelimesini arattığımızda ilk sırada sayfasına 10 bin kere Microsoft kelimesini yazdıran bir sayfa gelirken, bu sefer Microsoft kelimesiyle en fazla link yapılan site, yani microsoft.com ilk sırada gelmeye başladı. Bu, arama sonuçlarının sıralamasını güvenilir hale getiren müthiş bir gelişmeydi. Hatta Google bunu farkedip normal arama düğmesinin yanına "Kendimi Şanslı Hissediyorum" düğmesini ekledi. Bu düğmeye basıldığında arama sonucu hiç listelenmeden ilk sıradaki siteye doğrudan gidilir. Bugün çoğu normal kullanıcı web sitesi adresi, URL gibi şeyleri aklında tutmaya gerek görmemekte ve Google'a aradığı şeyi doğrudan yazarak gitmektedir.
Google'ın ana sayfası gayet sadedir.

Hilecilerin PageRank algoritmasına ilk tepkisi link çiftlikleri oluşturmak şeklinde oldu. Yani kendisine para verenlere link veren siteler ortaya çıktı. Google bunu çözmek için dünyanın en parlak zekalı programcılarını toplamaya ve çok iyi koşullarda çalıştırmaya başladı. Haftada 1 çalışma gününüzü kendi hobi projenize (side project) ayırmanızın "zorunlu" olduğu (örneğin Gmail böyle ortaya çıkmıştır), evcil hayvanınızı işe getirebileceğiniz, gurme kalitesinde bedava restoran sunan, doktor ve spor salonları olan ve daha neler neler bulunan bir iş ortamı. Tabii böyle parlak beyinler Google'ın en değerli varlığı olan, sonuçları herkese açık ama kendisi gayetle gizli arama motoru programının çalışmasını hergün izlemekte ve devamlı ince ve bazen kalın ayarlar yapmaktadırlar. Böylece link çiftlikleri gibi hile hurdalar fazla zarar veremeden yakalanmakta ve arama sonuçlarından atılmakta, yani internet anlamında öldürülmektedirler.

Peki Nasıl Para Kazanır Bu Google?

Google'ın araması gibi, reklamı da gayet başarılıdır. Aslında reklam mevzusu Internet'in çok hassas bir konusudur. Kullanıcılar reklamları, özellikle "yanarlı dönerli" reklamları sevmemektedirler, tıklamamaktadırlar, görmemektedirler, ve hatta, reklam olmadığı halde yanar döner görünümündeki şeylere otomatikman tıklamamaktadırlar.

Peki Google'ın reklamları niye başarılıdır? Çünkü reklamları reklama benzemez, daha doğrusu "yanar döner" değildir. Basit ve kısa metinler biçimindedir. Ayrıca asla ve asla arama sonuçlarını reklama göre getirme günahını işlemezler; reklamlar arama sonuçlarının yanında alternatif olarak gelir.

Reklamlar arama sonuçlarının üstünde (ve ayrı renkte) ve yandadır. Mahçup mahçup "neden bu reklamlar?" diye hesap da vermektedirler.

İşte Google milyarca dolarlık kazancını bu reklamlara yapılan tıklamalardan sağlamaktadır. Arama sonucuyla entegre ama bozmadan. (İtiraf etmek gerekirse eskiden yukarıdaki resimdeki görünüm daha sadeydi; sanki biraz agresifleşmişler)

Google'a reklam vermek için AdWords adı verilen programa üye olmak gerekmektedir. Üye olan firmalar kısa bir reklam metni vererek "arama kelimesi" satın alırlar. Satın aldıkları kelimeler kullanıcılar tarafından arandığında reklamları çıkabilir; "-bilir" dedik, zira firmalar bu kelimelerin tıklanması başına belli bir para teklif ederler ve hangi reklamın çıkma sıklığı teklif edilen paraya göre belirlenir.

2000 senesinde başlayan Adwords programıyla beraber Google kaynaklı reklamlar her yanı sarmıştır. Örneğin, eğer Gmail kullanıyorsanız o an okuduğunuz mailde geçen kelimelerle alakalı reklamlar görebilirsiniz. Dahası, Google'ın AdSense adı verilen programına üye olursanız sitenizde, blogunuzda, mobil uygulamanızda reklam yayınlatabilir ve bu reklamlar tıklanırsa Google ile birlikte para kazanabilirsiniz.

Altyapı

Günümüzde Google yüzlerce hizmet sunmaktadır. Bu hizmetlerden belli başlılarını listeleyelim:
  • Search: Arama motoru hizmeti, herşeyin başlangıcı.
  • Books: Google hızla basılı kitapları indekslemekte, görüntülenebilir ve aranabilir hale getirmektedir.
  • Groups: Mailing list hizmeti. Ayrıca Internet'in ilk zamanlarında çok popüler olan ama spam'e yenik düşen UseNet de buradan hizmet vermeye devam etmektedir.
  • News: Haber sitelerindeki haberleri taze ve aranabilir şekilde veren hizmet.
  • Adwords: Reklam verme hizmeti.
  • Adsense: Reklam yayınlayarak para kazanma hizmeti.
  • Apps: Yazılan uygulamayı Google altyapısında çalıştırma hizmeti. (Buna Ne ka İstemci O ka Sunucu yazımızın sonlarında bulut bilgi işlem başlığında değinmiştik)
  • Blogger: Blog yaratma ve yayınlama hizmeti (Naçizane okumakta olduğunuz blog bu hizmetten faydalanmaktadır)
  • Calendar: Takvim hizmeti.
  • Contacts:  Kişi fihristi.
  • Docs: MS Office'e alternatif çevrimiçi ofis uygulamaları.
  • Gmail: Mail uygulaması.
  • Google+: Facebook benzeri sosyal platform.
  • Maps: Dünya haritası.
  • Youtube: Dünyanın videosu...
  • Code: Açık kaynaklı yazılım barındıran hizmet.
  • Dart: Javascript'e alternatif yeni bir web sayfası dili
  • Go: C/C++'a alternatif yeni programlama dili.
  • Android: Cep telefonları gibi küçük cihazlar için Linux tabanlı işletim sistemi.
  • Chrome: Web tarayıcısı.
Sadece bazılarını sıraladığımız bu hizmetlerin geliştirilmesi müthiş bir programcı kaynağı gerektirdiği gibi, müthiş bir bilgi işlem gücü de gerektirmektedir. Bu güç özel süper bilgisayar, mainframe gibi büyük bilgisayarlardan değil, Linux yüklü normal x86 tabanlı PC'lerin çok sayıda olmak üzere paralel çalıştırılmasıyla sağlanmaktadır (bkz. Google Platform). Paralel çalışma için MapReduce tekniği kullanılmaktadır. Bu tekniği kısaca özetlemek gerekirse, bir işlem (örneğin bir arama isteği) önce birden çok bilgisayara dağıtılmakta, sonra da çıktılar tekrar birleştirilmektedir.

Konumuza geri dönersek, Google'ın neredeyse tek gelir kaynağı reklamdır ve sayıları giderek artan ürünlerine bir şekilde reklam hizmetini fazla acıtmadan enjekte etmektedir. Her ürüne bu şekilde bakmakta fayda vardır. Yani Nasreddin hoca her geçen gün çalıların miktarını ve çeşidini arttırmakta, biz koyunlar da gönüllü olarak bu çalılara takılmaktayız ve peşin parayı görüp gülmekteyiz.

Peki neden böyle bir yazı yazma ihtiyacı duydum? İlk sebep zenginin malının züğürdün çenesini yorması olmakla beraber, Google değişik bir firma; sloganı "Don't be evil", yani "kötü olma". Herkesin bizi kazıklamaya çalıştığı günümüzde ne kadar da basit ve etkili bir slogan! Yazılımları mümkün olduğunca açık kaynaklı ("bu da ne?" diye soranlar bu yazımı okuyabilirler), ya da en azından ticari çıkarları gereği uygulamaları kapalı olsa bile dayandığı teknolojiler açık kaynaklı. Örneğin Google Web Toolkit. Ben de dünyadaki tüm insanları ilgilendiren böylesi iyi kalpli dev firmayı kendimce tanıtmaya çalıştım. Hikaye devam ediyor, bizim de takibimiz eleştirel gözle devam edecek.