Forum: Duyurular RSS
DConf 2015 canlı yayını
Sayfa:  1  2  sonraki 
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: DConf 2015 canlı yayını
  https://www.youtube.com/watch?v=-OCl-jWyT9E

Ali
zafer #2
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali selamlar,

Benim gibi inglizce bilmeyenler için videolara alt yazı çalışması yapılsa çok güzel olur.Böyle bir şeyler yapma ihtimali nedir?
https://github.com/zafer06 - depo
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ne yazık ki benim bildiğim bir konu değil. Aslında, izleyen arkadaşlar özetlerlerse daha bile yararlı olabilir.

Ali
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İkinci gün:

  https://www.youtube.com/watch?v=AH35IxWkx8M

Ali
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 2 - Mayıs 28


Andrei'nin konuşması (kendisi asıl programda bugün konuşmuyordu)

Geçen sene olduğu gibi, istatistiklerle başlayan bir konuşma:

  • Siteye ziyaret bu Nisan'da geçen Nisan'ın %244'üymüş.

  • Rekor ay: Mart 2015 500K ziyaret

  • Mart 2010 1423 ziyaret

  • Projelerin github'a taşınmış olmaları çok yarar sağladı

Anlaşılan, ara doldurmak için konuşmuş. Asıl konuşması gerçekten de yarın olacak. Şimdi Walter ve Andrei birlikte konuşuyorlar:

Andrei:

  • Rust, Go, veya başka bir dille yarış halinde değiliz. İşimizi iyi yapmaya çalışıyoruz.

  • "Rust'ta iyi özellikler var."

  • Bizim arkamızda Mozilla gibi güçlü bir firma yok.

  • Andrei'nin kişisel fikri: Rust'ın nesne sahipliği (ownership) tutmayabilir.

  • Kendilerini tanıtım konusunda Rust çok başarılı.

  • Önümüzdeki 6 ay içinde atılım yapıyoruz: araçlar, standart kütüphane, web sitesi, vs.

Walter:

  • Her dilin doğruları ve yanlışları vardır. D'nin yanlışları ölümcül değil.

Andrei:

  • Konferansı düzenlediği için Chuck Allison'a çok teşekkür. Bundan sonra bu tür masrafları ileride kurulacak olan D Vakfı (D Foundation) üstlenecek.

Soru: ANSI standardımız olacak mı? Ne zaman?

  • Walter: Ufukta böyle bir plan görünmüyor.

  • Chuck Allison: Bence standartlaşma çabası yavaşlatır. Örnek olarak C++'a bakabiliriz. Standartlaşmaya kendi isteğinizle gitmemenizi öneririm.

  • Chuck Allison: Açık bir dil ve ortam olduğumuzdan, tartışmalarımız hep yanlışları da ortaya döküyor. C++'ta hiç öyle olmadı çünkü yanlışlar halka açılmadan önce 'working group' denen gruplar tarafından tartışıldı ve düzeltildi. Halk ancak ondan sonra

  • Andrei: Bir blog başlatıyorum.

Andrei'ye soru: Yeni bir kitap yazmayı düşünüyor musun?

  • Andrei: Eninde sonunda bir şey olacak.


  • Walter: Roku üzerinde D kanalları oluşturabiliriz.

Biraz github'a yapılan 'pull request'lerin kalitesi üzerine konuşuluyor... Daha kaliteli koda ihtiyacımız var deniyor.

Belgelerimiz iyi değil. Bu konuda her türlü yardıma ihtiyacımız var.

Ali
zafer #6
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Özet için teşekkürler.
https://github.com/zafer06 - depo
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 2 - Mayıs 28, İlk sunum

Chuck Allison, D'nin neden popüler olmadığı ve C, C++, ve Java gibi başkalarının neden popüler oldukları üzerinde dürüyor.

"Thinking in D" diye bir kitap yazmayı düşündüğünü söylüyor.

C++'ı neden seviyoruz? (Katılımcılar http://padlet.com/chuck_allison/cpp_good adresine giderek aşağıdakileri vs. yazdılar).

  • Hızlı

  • C etkileşimi kolay

  • Cemaati aktif

  • Derlenen kod

  • C kaynak koduna uyumlu

  • Kütüphaneler

  • Okullarda öğretiliyor

  • STL çok iyi

  • Boost

  • Gelişmekte olan bir dil

  • Tutarlı

Hangi dilleri öğrendiğinden bahsediyor. Çok hızlı Datalight C derleyicisini Walter Bright yazmış. Chuck sonra yine Walter'ın yazdığı Zortech C++ derleyicisini kullanmış.

Chuck, 10 yıl C++ standartlaştırma komitesinde bulunmuş.

http://www.artima.com/cppsource dergisinden Walter'dan bir alıntı okuyor: C++'ın en büyük zayıflığının karmaşıklığı olduğunu söylemiş.

Chuck C++'ın karmaşıklığı üzerine 2005'te kendisinin yazdığı Box şablonlu bir örnek gösteriyor. O yazının referanslarından D'nin kurtarıcı olabileceğini yazmış.

Java'nın başarılı olmasının en büyük nedeninin göstergelerin yeni başlayan programcılara zor gelen bir kavram olduğunu düşünüyor.

Walter'ın 2004'te tepegöz ve saydamlar ile sunduğu "Why D" konulu sunumu anlatıyor. (Herkes şikayet etti diye Walter pdf de hazırlamış. :) )

Bu noktada dinleyicileri aşağıdaki sayfaya göndererek bu sefer de D'yi neden sevdiklerini yazmalarını istiyor:

  http://padlet.com/chuck_allison/d_good

Bir kaç ilginç nokta: :)

  • Abicim, kod sevdiğini duydum; kod yazan kod yazdım; derlerken derlersin.

  • Derleme zamanı çokşekilliliği

  • Aralıklar

  • En güçlü modelleme yeteneği

  • Aspirin gerektirmez

  • Anlaşılabilir şablonlar

  • Derlenen Python

  • C++ geliştirmeleri için deneme ortamı

  • Hızlı derleyici

  • Dilimler

  • vs.

Eşleme tabloları üzerine bir örnek gösteriyor ve kolaylığına bayılıyor.

Aynı biçimde, UFCS örneği gösteriyor.

Ve başka bir sürü D olanağının örneğini veriyor: dilim elemanlarının tümü üzerinde işlemler (array-wise), lazy (bunun örneğinden daha önceden bilmediğim Jensen's Device denen yöntemi öğrendim), delegate, shared, atomicOp, vs.

Python için "pilleri de içinde gelir" denir.

Chuck, D için "nükleer reaktörü de içinde gelir" diyor.

Başka örnekler: Algebraic, memoize (işlev sonucunu belirli parametre değerleri için saklar ve sonraki çağrılarda işlevi işletmez, sakladığı sonucu döndürür), fiberler, aralıklar, until, vs.

Bu sefer şu sayfaya gönderiyor ve insanlar sevdikleri araçları yazıyorlar:

  http://padlet.com/chuck_allison/d_tools

Konferansın son konuşmacısı olan Erich Gubler Chuck'ın öğrencisiymiş. Projesinin ortasında D'ye geçmeye karar vermiş. "Why I Love D: An Undergrad Experience" sunumu bu konu üzerineymiş.

Ali
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 2 - Mayıs 28, "Introduction to Ranges", Jonathan M. Davis

Aralıklar üzerine başlangıç düzeyinde bir sunum. Özetleyecek kadar ilginç bir konu göremiyorum.

Ali
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 2 - Mayıs 28, "Leveraging D to mitigate dependency-induced code smell", Mark Isaacson

Mark, Facebook'ta iki staj yapmış, Andrei'nin yanına verilmiş; kodlarını D'de yazmış; şimdi de Facebook'ta çalışıyormuş ve D kullanıyormuş. Konusu ODBC üzerineymiş.

SQLNativeSqlW() işlevinin arayüzünün zararlarından bahsediyor. (Örnek: Veri ve uzunluğu farklı parametre olarak geçiriliyor; hem de bundan iki tane var.)

C ile etkileşen program yazmış. D'den çok yararlanmış.

"C is evil" (C zararlı).

D'nin yalın C göstergesinden dilim üretmesi olanağını çok övüyor:
C_göstergesi[0..uzunluk]
D'nin yararlarını öve öve bitiremiyor.

Kendi işi için bir 'make' dosyası yazmış ama ne yazık ki herşey yavaş olmuş. Sonunda Andrei'nin önerisiyle bütün dosyaları hep birden derleyince bir kaç kat hız kazanmış.

"Programlarımda döngü kullandığım zaman artık bir hata yaptığımı kabul ediyorum."

"D herşeyi çok kolaylaştırıyor ama sorunları da yok değil."

"Betik programlamaya çok elverişli."

Ali
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Üçüncü gün:

  https://www.youtube.com/watch?v=oA1exjdEIWw

Ali
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 3 - Mayıs 29, "Keynote", Andrei Alexandrescu

(Ali'nin yorumu: Bu konuşma çok güzeldi. Ses getireceğinden eminim. Özellikle, üstü kapalı olarak C++'ın sonunda açıkça geride kalacağını da belirtmiş oluyor çünkü Stroustrup 'statif if'e kesinlikle karşı.)

Andrei'nin konuşması ilginç başladı: "Türden bağımsız programlamayı (generic programming) artık bırakmamız gerekiyor" gibi bir sözle başladı ("Generic programming must go").

Şunları söylüyor:

Açık yararlarına rağmen, generic programming esnek olmayabilir (fazla "ridgid"dir.)

Dört adet isimli aralık çeşidi olduğuna göre, türden bağımsız programlamaya karşı hareket ediyoruz: InputRange, ForwardRange, BidirectionalRange, RandomAccessRange.

Bir de şu sabit kavramları tanımladık: hasLength, isInfinite, hasSlicing, hasMobileElements.

"İsim" üzerine odaklansak, şunları tanımlamak gerekirdi: InputRangeWLength, ForwardRangeWLength, BidirectionalRangeWLength, RandomAccessRangeWLength, InputRangeInfinite, ForwardRangeInfinite, BidirectionalRangeInfinite, RandomAccessRangeInfinite, RandomAccessRangeWSlicing, RandomAccessRangeWLengthWSlicing, RandomAccessRangeInfiniteWSlicing, ...

(Bu noktada şimdilerde üzerinde çalıştığı bellek ayırma modülünü (std.allocator) yazarken karşılaştığı konulara geçti.)

Bellek ayırma konusunda şu kavramlar var:

Memory allocation is high-vocabulary
◦ alignment
◦ (dynamically) aligned allocation
◦ rounding up/quantization
◦ in-place expansion
◦ reallocation
◦ contiguous vs. non-contiguous
◦ ownership
◦ resolving internal pointers
◦ deallocation
◦ per-instance state vs. monostate
◦ thread-local vs. shared

Bunların bütün kombinasyonlarına karşılık isimler bulmak saçma olurdu.

Descartes'a gönderme yapıyor: Tüm bildiklerinizi bir kenara bırakın. Şimdi, bellek ayıran koddan ne beklediğimizi düşünelim: Tabii ki allocate()...

Önerisi: Tasarımlarımızı içgözlem (introspection) üzerine kuralım.

Ve tabii allocate()'in yanında bir de 'hizalama birimine' (alignment) ihtiyacımız var.

En basit bellek ayırıcı, bir göstergeyi ilerletmektir. ("Push the pointer" dediği saydam (13/32)).

Şimdi bu bellek ayırıcıya yeni beceriler eklemeye başlıyor: 1'den farklı hizalama birimi, vs.

Sonra birisi başaramazsa diğeri kullanılan iki ayırıcılı FallbackAllocator'ı gösteriyor. (17/32)

FallbackAllocator'ta ilginç bir noktaya değiniyor: null'la karşılaştırmak yerine '(r.length != n)' karşılaştırmasını yapmasının nedeni, kullanıcı 0 bayt ayırmak istediğinde başarılı olmamızın gerekmesiymiş.

Yeni bir temel işleme ihtiyacımız var: "owns()" (ayırıcıya bellek parçasının sahibi olup olmadığını sorabilmemiz için).

Ana ayırıcı (yani, P) owns()'u ve deallocate()'i sunabilir ama ikincil ayırıcının (yani, F) owns()'u sunması gerekmiyor.

static if'i kullanarak bu tür davranışlara isim vermekten kurtulduğunu söylüyor. P ve F'nin ne sunduklarına bağlı olarak istediğimiz davranışı isimlendirme gereği duymadan elde ediyoruz.

Bu noktada üzerinde çalıştığı modülün belgesine gidiyor:

  http://erdani.com/d/phobos-prerelease/std_experimental_all…

Bundan sonra adım adım tasarım üzerinde duruyor. 'static if' çok yararlı, vs.

reallocate()'in işleyişi sırasında gereken crossAllocatorMove() üzerinde duruyor (yani, belleğin birincil ve ikincil ayırıcılar arasında geçirilmesi gereği).

Burada D ile övünüyor: Diğer dillerde bu işlemleri kaç satırda yapabilirsiniz?

Belirli büyüklüğe göre "küçük" veya "büyük" ayrımı yapan Segregator'ı tanıtıyor.

Saydam 26/32: İçgözleme dayanan tasarım alt parçalardan üst parçalar oluşturmaya yol açıyor.

  • Türden bağımsız programlama başarısız olmuştur.

  • Kavramlar (concepts) başarısız olmuştur.

  • İçgözlem kullanın

  • 'static if' ile mantıksal ifadeler kurun

Concepts'in sorunu, herşeye ad vermenin gerekmesiymiş. Kendisi bu çalışma sırasında aydınlanmış ve mutlu. :)

Kod da şuradaymış:

  https://github.com/andralex/phobos/tree/allocator/std/expe…

Saydam 29/32: Herkese soru: Farklı tür ayırıcılardan (Region, HeapBlock, vs.) oluşan diziyi nasıl tasarlardınız? Yeni ayırıcı nasıl eklenirdi? Güzel bir soru: Bu diziyi nerede tutardınız? (Yani, ayırıcı dizisini nerede ayırırdınız?)

Şöyle çözmüş (30/32):

  • Çağrı yığıtında bir ayırıcı kur

  • Onu kullanarak dizi için bellek ayır

  • İlk ayırıcıyı oraya taşı

  • vs.

Özet (31/32):

  • Türden bağımsız programlama yeterince esnek değildir

  • Onun yerine içgözleme dayanan tasarım öneriyor

  • Yalnızca gereken parçaları sunun, gerisini yeteneklere bağlı olarak sunun

  • İçgözlemi kullanarak küçük parçalardan büyük parçalar oluşturun

(32/32):

Derleme zamanındaki içgözlem + CTFE (derleme zamanında işlev işletme) + mantıksal ifadeler + static if = KAZANÇ.

Ali
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gün 3 - Mayıs 29, "Why I Love D: An Undergrad Experience", Erich Gubler

(Chuck'ın öğrencisi, okul projelerinde D'yi nasıl kullandığının ve ne yararlar gördüğünün hikayesini anlatacak. Güz döneminde mezun olacakmış.)

Chuck tanıtıyor: İlk olarak C++ ile başlamış, Chuck'ın dersinde D'yi tanımış.

---

Asıl amacım, moral yükseltmek olacak.

D'nin olanaklarını nasıl keşfettiğime de odaklanacağım.

Deneyimli D'ciler bu konuşmadan pek bir şey almayacaklardır ama alabilirler de.

Herşey Chuck'la başladı. Önce C#, C++, Java filan öğreniriz. Chuck, fonksiyonel programlama dersine ML'i anlatmakla başlar. Sonra D'yi öğrendik ve çok sevdim.

Sanal makine projemi D'ye geçirmeye karar verdim.

Walter'a ve Andrei'ye teşekkür ediyorum.

D'yi sevdiren ilk gözlemlerim:

  • Ayrı ayrı .h ve .cpp dosyaları yazma gerekmemesi çok hoş geldi. D'ye geçtiğimde modül kavramını çok beğendim.

  • Artık gösterge kullanmak zorunda değildim.

  • İsim alanı işlecine gerek yoktu. (C++'taki :: işleci.)

Sonuçta, C++'tan D'ye geçirme işlemi çok kolay oldu.

Enumlar çok yararlıydı: string ve enum değeri arasındaki dönüşümler başka dillerde çok zahmetlidir. switch deyimi, hash table, vs. kötü çözümlerdir. D'de ise derleme zamanındaki olanakları kullanarak basitçe ve hızlıca çözüyoruz. r.to!string çok kolay.

Evet, D süper...

Hocamızın önerdiği bir değişiklik, D'nin olanakları sayesinde çok kolayca çözüldü.

D'nin standart kütüphanesinden sonra başka kütüphaneleri beğenmiyorum. C++'ta her zaman için başka kütüphaneler aramam gerekiyor. İnternette 'd' ile değil, 'dlang' ile aratmak çok daha iyi sonuç veriyor.

Üç hafta önce bir işe girdim. Benden test kodu yazmamı istediler. Testleri csv (comma separated value) olarak kaydedebildik. İnternette aratınca da önceden haberim olmayan std.csv modülünü keşfettim. Bu modülden haberim bile yoktu. Harika!

Derleyicimi yazarken std.getopt modülünden de çok yararlandım. İlk projedeki GNU getopt kolay değildi. switch deyimleri hataya açıktır.

D'ye yeni başlayan arkadaşıma std.getopt'u gösterdiğimde "bu kadar kolay olamaz; hile sayılmalı" dedi.

Şimdi basit bir program yazalım...

(Andrei araya giriyor: "std.getopt, benim ilk yazdığım büyükçe modüllerden birisiydi. Perl'de de buna benzer bir modül vardır. D'de de yapabilmeliydim.")

getopt yardım ekranını da otomatik olarak halleder.

İnsanlar Python'u hızlı geliştirme için tercih ediyorlar. getopt da aynı hızı veriyor.

Derleyicime kanallarla loglama (logging with channels) olanağı da ekledim.

D'nin derleme zamanı olanakları müthiş.

CV'mde iyi görünsün diye veritabanı projemi C++'ta yazdım. getopt'un yaptığını C++'ta yapmak zordu.

Standart kütüphanede yavaş olanaklar olabilir... Sorun değil çünkü daha sonradan gerektikçe hızlandırabiliriz.

D'nin standart kütüphanesindeki varsayılan ayarlar çok doğru.

(Walter'a gönderme yapıyor: Walter, doğru araç seçiminin önemini gösteren şeyler söylemiş.)

(Chuck araya giriyor: Erich bir derste derleyici yazarken, başka bir derste de benzeri bir proje yazıyordu. İkisini birden bitirebilmesi büyük aşamadır.)

(Erich yanıt veriyor: İkisini C++'ta yazmak zorunda kalsaydım bitiremezdim.)

D'nin araçları da çok yararlı. rdmd çok kullanışlı. rdmd, C++'taki yaz+derle+çalıştır döngüsünü unutturdu.

Son olarak birim testlerine geçeceğim. dmd'nin -unittest ve -main seçenekleri tek modülü test etmeyi çok kolaylaştırıyor.

(Walter araya giriyor: Oraya bir de -cov seçeneği eklemelisin.)

Sözleşmeli programlamanın beklenmedik bir yararı, 'invariant' olanağı ile geldi: Eklediğim invariant bloğunun işletilmesi ile 10 dakika içinde aradığım hatanın kaynağını buldum.

Son görüşlerim: Gelişmeden korkmamalıyız. Yeni olanaklar gelince eski kodları dönüştürme konusunda yardım edebiliriz.

STL C++ için büyük bir adımdı. D'nin standart kütüphanesinin o derece büyük bir adım olduğunu görüyorum.

D kullandığım tek dil. Betik için, hız için, hep onu kullanıyorum.

Ali
acehreli (Moderatör) #13
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Haber: DConf 2016, Berlin'de Sociomantic'te yapılacakmış.

Ali
zafer #14
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #11
acehreli:
Andrei'nin konuşması ilginç başladı: "Türden bağımsız programlamayı (generic programming) artık bırakmamız gerekiyor" gibi bir sözle başladı ("Generic programming must go").

Bu biraz ilginç geldi. Bugün türden bağımsız (generic) programlama bir çok dilde mevcut ve kullanılıyor. Ali, sence burada bahsedilen generic programlamanın tamamen bırakilması mı, yoksa generic programlamanın çıkış amacına (türden bağımsız olması) bakıldığında isteneni tam olarak veremediği mi?

Ayrıca jenerik programlama Phobos içinde oldukça sık kullanılan bir teknik. Acaba bu düşünce doğrultusunda Phobos kütüphanesinde bir takım değişiklikler bekleyebilir miyiz?


acehreli:
Descartes'a gönderme yapıyor: Tüm bildiklerinizi bir kenara bırakın. Şimdi, bellek ayıran koddan ne beklediğimizi düşünelim: Tabii ki allocate()...

Önerisi: Tasarımlarımızı içgözlem (introspection) üzerine kuralım.

Bu konu hakkında bilgin varsa biraz daha açabilir misin? İç gözleme dayalı tasarım derken kastedilen tam olarak nedir?


acehreli:
Haber: DConf 2016, Berlin'de Sociomantic'te yapılacakmış.

Bu habere sevindim :)
https://github.com/zafer06 - depo
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
zafer:
Bu biraz ilginç geldi.

E, keynote sunumlarının biraz da uç fikirler ve yepyeni düşünceler getirmesi beklenir. :)

Bugün türden bağımsız (generic) programlama bir çok dilde mevcut ve kullanılıyor.

Şüphesiz ve D bu konuda çok üstün. (Benim hiç bilmediğim başka dillerde daha iyileri de varmış galiba ama bildiğim C++'la karşılaştırıyorum.)

Ali, sence burada bahsedilen generic programlamanın tamamen bırakilması mı, yoksa generic programlamanın çıkış amacına (türden bağımsız olması) bakıldığında isteneni tam olarak veremediği mi?

Konuşma ilerledikçe Andrei'nin aslında bunu biraz da pazarlama sloganı olarak söylediği ortaya çıktı. :) Benim anladığım iki mesaj şu:

  • C++'a eklenmesi uzun zamandır beklenen ama iyi bir yolu bulunmadığı için eklenemeyen concepts'in (ev concepts light'ın) çözüm olmayacağını söyledi. Bu konu, D'de şablon kısıtlaması adıyla çözülüyor. Dolayısıyla, aslında D'dekinin de biraz eksik kaldığını söylemiş oldu.

  • 'static if' çok yararlı bir olanak.

O iki mesaja bakınca ben kendi adıma üstü kapalı da olsa doğrudan C++'a karşı bir mesaj gördüm. Çünkü C++ hâlâ concepts bulmaya çalışıyor ve Bjarne Stroustrup Andrei'nin kendisine yakıştıramadığını söylediği bir tavırla 'static if'in C++'a eklenmesinin düşünülmemesi gerektiğini söyledi. Uzun bir cümle oldu. :) Yani, Bjarne Stroustrup, "'static if', üzerinde durulmaması gerekecek kadar yanlış bir fikirdir" gibi bir makale yazmıştı (başka yazar(lar)ı da var).

Ben de her D sunumumda 'static if'in yararını anlattıktan sonra "'static if' C++'a eklenmeyecek" diyerek o makalenin bağlantısını veriyorum: http://isocpp.org/files/papers/ adresindeki "document N3613".

Özetle, Andrei şunları söyledi:

  • Belirli bir algoritmanın UzunlukBilgisiVeren_ElemanlarıReferansOlan_ForwardRange gerektirdiğini söylemek yerine, 'static if'ten ve derleme zamanında mantıksal ifadelerden yararlanarak duruma göre davranmalıyız.

Tabii bunların hepsini de bitirmeye çalıştığı std. allocator'daki deneyimleri üzerine söyledi.

Ayrıca jenerik programlama Phobos içinde oldukça sık kullanılan bir teknik. Acaba bu düşünce doğrultusunda Phobos kütüphanesinde bir takım değişiklikler bekleyebilir miyiz?

Phobos'ta değişiklik olmayacak çünkü Phobos zaten bahsedilenleri uyguluyor. :) Bundan sonra daha farkında olacağız.

Örneğin, Phobos'ta yukarıdaki gibi çok uzun isimli şablon kısıtlama isimleri yok. Olsa olsa beş aralık ismi var ve bir çok birbirinden bağımsız hasLength() gibi başka kıstaslar var.

İç gözleme dayalı tasarım derken kastedilen tam olarak nedir?

Bir şablonun __traits, std.traits, vs. gibi derleme zamanı olanaklarını kullanarak elindeki türün becerilerini anlaması ve ona göre derlemesi (veya davranması).

Bu arada, bütün (çoğu?) sunum DConf'ın sitesine konuldu. Konuşmacıların sayfalarında 'Slides'a tıklayınca geliyor:

  http://dconf.org/2015/talks/alexandrescu.html

acehreli:
Haber: DConf 2016, Berlin'de Sociomantic'te yapılacakmış.

Bu habere sevindim :)

Kızım liseyi bitirdi. Oğlumun okula gitmesine de bir kaç sene var. Dolayısıyla, yaz ayları dışında da Türkiye'ye gelebileceğim. Yani, seneye Berlin'de görüşürüz! :D

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Forum: Duyurular RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 22:36:04 (UTC -08:00)