Thread overview
"Facebook C++ Conference" gözlemlerim
Jun 04, 2012
Salih Dinçer
Jun 04, 2012
erdem
Jun 04, 2012
zafer
Jun 04, 2012
Racih
June 04, 2012

Anlayamadım, bu webiner değil sanırım ama Facebook ile ne alakası var? Belli aralıklarda düzenlenen bir şey mi? Bu arada fbstring bir değişken türü mü; tam anlayamadım da herhalde Facebook'a özel bir şey...

Epey uzun bir bildiri olmuş; eminim çok zevk almış olmalısın. Paylaştığın için teşekkürler ve Türkiye'yi temsil ettiğin içinde...:)

TÜTEV'de yapacağımız çok farklı geçebilir. Sonuçta burası Türkiye...:D

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 04, 2012

Çok ilginç gerçekten de ..

Ben de geçen seneye kadar Facebook'u işte PHP, Ajax vs.. genelde web teknolojileri üzerinde çalışan bir şirket olarak düşünüyordum. Ama geçen sene gene siz mi göstermiştiniz bu çizit kuramı ("graph theory") uygulamalarını anlatan bir sunum vardı. Burada Facebook'un bu teknolojiyi nasıl kullandığından bahsediyordu. Ayrıca Andrei de Facebook'ta araştırmacı bilim adamı olarak çalışıyor sanırım.

Bu arada Scott Meyers'in Türkiye'ye konuşmacı olarak gelmesi süper olurdu :-)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 04, 2012

Geçen hafta içinde rastladığım bir arkadaşım Facebook C++ Conference'a gidip gitmediğimi sordu. Haberim bile yoktu! Söylediğine göre davetle girilen özel bir konferansmış ve kendisi davetliymiş:

http://www.facebook.com/events/459645077394507/

Konuşmacılara baktım: Scott Meyers, Andrei Alexandrescu, Spencer Ahrens adında bilmediğim birisi, ve Herb Sutter! Üstelik Facebook bana 15 dakika uzakta; kaçmaz! :) Hemen Andrei'ye ve Facebook'ta çalışan başka bir arkadaşıma (Ben'e) e-mail yazdım. Anlaşılan davetiye konusu fazla önemli değilmiş ve aslında RSVP gerekiyormuş. Neyse, sabah erkenden gittim, ve Ben beni rahatça içeriye aldı.

Konferansı Facebook düzenlediği için evsahibi Andrei idi.

Girdiğimizde Scott ve Andrei'yi ayakta sohbet ederken gördük ve yanlarına gittik. Andrei beni Scott'a tanıştırdı ama ben Scott'a zaten tanıştığımızı hatırlattım. (Daha önce o zamanlar yazmakta olduğu ama şu anda askıya aldığını söylediği kitabıyla ilgili yemekli bir toplantıda bulunmuştuk. (Kitap programların ve işletim sistemlerinin kullanıcıya hemen tepki vermesi gibi konuları kapsayacaktı.))

Ayaküstü sohbetimiz çok güzel geçti: Ali'nin Türkçe D kitabından ve çevirisinden bahsedildi. C++'ın yeni olanaklarını tam bilmediği halde Tütev'de anlatmaya çalışacağından konuşuldu. :p Bunun üzerine Scott Türkiye'ye hiç gitmediğini, çok merak ettiğini, ve eğer konuşma fırsatı çıkarsa gelmek istediğini söyledi. Hemen davet ettim tabii ama programı çok doluymuş. Belki seneye...

Arkadaşım Ben bir kaç önce Türkiye'ye tatile gitmişti. Türkiye ballandıra ballandıra anlatıldı ama ülkenin gidişatının beğenilmeyen taraflarının da altı çizildi.

Scott Meyers

Scott'ın konuşmasının adı "Perfect Forwarding"di. Bu, C++'a eklenen çok yararlı bir olanakla ilgili. (Yararlı diyorum çünkü ben de çalıştığım yerde bunun sıkıntısını çekmiştim.) C++98'de işlev şablonlarında bir sıkıntı vardır: Bir işlev şablonu içindeyken "referans veya değil, hangi türden olursa olsun, işlev parametrelerini oldukları gibi şu diğer işleve geçir" denemez. Hatta, "herhangi türlerden belirsiz sayıda parametre" kavramı da yoktur. (D'deki "T..." şablon parametresi.)

Scott bu sorunun C++11'de nasıl çözüldüğünü ama her durumu kurtarmadığını, programcının nasıl debelenmek zorunda kaldığını, nasıl yanılabildiğini, kısacık bir şey söyleyebilmek için bile satırlarca karmaşık kod yazılması gerektiğini gösterdi.

Kendisi süper bir konuşmacı: Eğlendirici, akıllı, hiçbir noktayı kaçırmıyor, soruları çoğunlukla "yanıtı bir sonraki slaytta" diye yanıtlayabiliyor. :)

Sonuçta C++'ın çözümü o kadar korkunç ki, insan boşverip kod tekrarına veya makrolara kaçmak istiyor.

Öğle Yemeği

Yemekte Ben, diğer arkadaşım, simasını VMware'den hatırladığım ve şimdi Facebook'ta çalışan Keith (Facebook'ta önemli birisi olmuş), ve başka Facebook'lularla oturdum. Ortalık beyin kaynıyordu. :) Çok akıllı, genç, motive, konularının uzmanı, teknik konuları şakır şakır konuşan bir grup. Kıskandım. :) Facebook'un ne de olsa PHP yazan bir web sitesi olduğunu sanabilirdim ama öyle değilmiş: Korkunç büyük verileri işlemeleri gerektiği için C++ onlar için çok önemli. Mikroişlemcilerden çok iyi anlıyorlar; bırakın birden fazla çekirdeği, birden fazla ALU'nun bile nasıl olaya katılacağını araştırıyorlar. Kodu nasıl yazdıklarında g++'ın daha etkin derlediğini biliyorlar, vs.

Tabii abartıyorumdur: Orada çalışan herkes o kadar süper değildir ve kendi konusunu anlatan insanlar zaten dinleyenlere çok akıllı gelirler. :)

Andrei Alexandrescu

Bu konuşmanın adı "Sheer Folly" idi. Konuşma özeti olarak yalnızca "bütün C++ programcılarının hoşuna gidecek bir duyuru yapacağız" deniyordu.

Andrei sistem dillerini neden sevdiğimizi hatırlattı: Tek bir baytın bile hangi amaçla kullanılabileceğini belirleyebiliyoruz. Bunun bir örneği olarak Facebook'ta kendi amaçlarına uygun olarak yazdıkları fbstring türünün daha hızlı çalışabilmesi için neler yapıldığını gösterdi.

Small string optimization denen bir eniyileştirme yöntemi vardır. Harf sayısı az olunca dinamik bellekten yer ayırmak yerine dizgi nesnesinin kendi kapladığı alan kullanılır (örneğin normalde dinamik belleği gösteren göstergenin kendisi bile karakterleri barındırın). Bu hem hız hem de bellek kullanımı açısından çok yararlıdır.

fbstring üç çeşit işleyebiliyormuş: Birinci çeşit, yirmi üç karakter ve aşağısını kapsıyor ve small string optimization'ı kullanıyor. İkinci çeşit, 24-255 (aslında şu anda üst sınırdan emin olamıyorum) harf arasını kapsıyor ve normal bir string gibi işliyor (fbstring'in vücudundaki gösterge normal olarak kullanılıyor ve dinamik bellekte duran karakterleri gösteriyor). Üçüncü çeşit ise başka bazı C++ kütüphanelerinin de uyguladığı copy-on-write (COW) eniyileştirmesinden yararlanıyor.

Ondan sonra kendi geliştirdikleri atoul()'u nasıl hızlandırdıklarını aşama aşama anlattı.

Konuşmayı izlemek çok kolay ve eğlenceliydi çünkü teknik konular hem fazla derin değillerdi hem de çok ilginçtiler.

Ara not: Hani sizler bazen kodlarınızı hız kaygıları ile yazabiliyorsunuz ve ben hep "okunaklılık ve bakım ön planda olmalıdır" diye karşılık veriyorum ya... Örneğin çok eski forum konularında bile for ve foreach döngülerinin kullanımında görmüştük. Andrei'nin konuşması aslında sizi destekliyor gibiydi; ama yine de bu eniyileştirmeleri ölçerek gerçekleştirdiklerini hatırlatmak isterim. Kodu yazmışlar, kullanmaya başlamışlar, fbstring'in fazla zaman harcadığını görmüşler, ve ancak ondan sonra hızlandırma yollarını araştırmışlar. Hatta, bu eniyileştirmeler başka programlarda o kadar yararlı olmayabilirler çünkü özellikle Facebook kullanıcı numaralarının fbstring olarak işlenmeleri gibi işlerde zaman kazancı sağlıyormuş.

Neyse... Bu kadar kısa bir yazı için fazla teknik ayrıntıya girdim bile. :)

Konuşmanın sonunda da sürpriz haberi verdi: Facebook bu kütüphaneyi Folly adı altında açık kod olarak sunuyormuş. Hatta Andrei kolunu aşağıya indirerek sembolik olarak tam o anda genel kullanıma açtı. (Belki de gerçekten öyle olmuştur.) Folly, şaka bir kısaltma: "Facebook Open source LLibrarY"den geliyormuş. :p

https://www.facebook.com/notes/facebook-engineering/folly-the-facebook-open-source-library/10150864656793920

Spencer Ahrens

Bu konuşma Folly'nin başka bir parçası olan AsyncHashMap topluluğunu anlattı. Aslında yine çok özel bir yapı çünkü yararlı olabilmesi için bazı kısıtlamaları var: Elemanların bir kere eklendikten sonra pek silinmedikleri durumlara uygun. Bir de tablonun büyüklüğü hakkında baştan kabaca bir fikrinizin olması gerekiyormuş.

İlginç bir bilgi olarak, hash table çakışmaları için bağlı liste değil, hash table'ın diğer yaygın yöntemini kullanıyorlar: Open Addressing. (Yani "separate chaining" kullanmıyorlar.)

http://en.wikipedia.org/wiki/Hash_table#Open_addressing

Bu konuşma çok daha teknikti ve her tarafından akıl akıyordu. :)

Herb Sutter

(Konuşmasından önce yanına yaklaşıp "daha önce SD2000'de size kitap imzalatmıştım" diyebildim ama sohbet edecek zaman kalmadı. :))

Herb Sutter bir kaç ay önce yayınladığı "Welcome to the Jungle" makalesinin konuşmasını verdi. Bırakın çok çekirdekleri ve çok GPU'ları, programlar artık bulutta duran işlemcileri de kullanmak zorundalar. Milyonlarca işlemci programın hizmetinde olacak. Moore's Law fiziksel olarak son buldu ama işlemci adedi olarak müthiş bir patlama yaşanıyor. vs.

Hiç teknik olmayan ve daha çok endüstrinin geleceği ile ilgili öngörülerle dolu bir konuşmaydı.

Yorgunluk ve Sıkıntı

Herb'ün konuşmasının ortalarından itibaren ben ve çoğu başka insan yorulmaya başladık. Yanımdakiler laptop'larını açıp e-mail filan okuyorlardı.

Bu da bende Tütev için bir korku uyandırdı: Gerçekten yedi saat dayanabilecek miyiz? Acaba yine de elimizdeki programa sadık kalsak ama konuşmaları kısa tutup araları mı uzatsak? Bu sefer de sıkılıp gitmek isteyenler olur. (?) Korktum. :)

D

Konuşmalardan sonra bir "happy hour" oldu. Andrei'yle ancak o zaman D ile ilgili olarak konuşabildim ve ancak "Facebook'ta D kullanıyor musunuz" diye sorabildim. Hayır, kullanmıyorlar. Daha önce de başka Facebook'lulara D'yi sormuştum ve ancak Andrei'nin ve Ben'in bildiklerini söylemişlerdi.

Dinlediğinizi için teşekkürler. Bu konferanstan tesadüfen haberimin olması ve katılabilmiş olmam beni bayağı heyecanlandırdı. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 04, 2012

Alıntı (Salih Dinçer):

>

Anlayamadım, bu webiner değil sanırım ama Facebook ile ne alakası var?

Facebook'un düzenlediği ve kendi yerlerinde gerçekleşen özel bir C++ konferansıydı. Düzenli bir konferans idiyse benim bundan da haberim yok. Seneye de olur herhalde.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 04, 2012

Alıntı (Salih Dinçer):

>

fbstring bir değişken türü mü

Facebook'un yazdığı ve std::string'in eşdeğeri gibi işleyen bir bir tür. fb, Facebook'tan geliyor. İşte şu:

https://github.com/facebook/folly/blob/master/folly/FBString.h

Ali

Not: Mesajına başka değişiklik yaptıysan bundan sonrakiler gözümden kaçıracağım. ;)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 04, 2012

Anlaşılan çok keyifli bir zaman geçirmişsin Ali :) Gerçi içeriği okuduktan ve isimleri gördükten sonra oldukça keyifli bir ortam olduğu anlaşılıyor.

Alıntı (acehreli):

>

Bu da bende Tütev için bir korku uyandırdı: Gerçekten yedi saat dayanabilecek miyiz? Acaba yine de elimizdeki programa sadık kalsak ama konuşmaları kısa tutup araları mı uzatsak? Bu sefer de sıkılıp gitmek isteyenler olur. (?) Korktum. :)

Bu konu bendede endişe uyandırıyor. Bir düzenleme yapacaksak hala zaman var!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 05, 2012

Ali abi yazı için çok teşekkürler. Bu kadar güncel bilgiyi ancak sadece senden alabiliriz zaten :P. Bir yazıda okuduğuma göre Facebookun kullandığı alt yapı çok çeşitliymiş. Sadece donanım optimizasyonunu başka firma yapıyormuş (hp idi sanırım). Google ise kendi donanımlarını optimize ederek kullanıyormuş. Facebook php kodunu c++ çeviren uygulaması bile var. https://github.com/facebook/hiphop-php

Neyse Facebook ve Google ın malı, programcının dilini yorar :).

Facebook farklı dillerle haşır neşir olması sebebiyle d dilinide bir gün kullanmaya başlayacaktır. Ama bunu dmd ile değilde özgür bir derleyeciyle olacaktır.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]