• Buradasın

    Clojure Programlama Dili Eğitim Sunumu

    youtube.com/watch?v=4NN1dsoNd4k

    Yapay zekadan makale özeti

    • Bu video, Hürriyet'in CTO'su ve 40 yaşındaki profesyonel müzisyen olan Umut Gökbayrak tarafından sunulan Clojure programlama diline giriş formatında bir eğitim içeriğidir. Konuşmacı, 20-25 yıldır bu dilde kod yazdığını belirtmektedir.
    • Video, Clojure'nin tanıtımı, temel özellikleri ve kullanım alanlarını kapsamlı şekilde ele almaktadır. İçerikte Clojure'nin Lisp ailesinden bir dil olduğu, JVM üzerinde çalıştığı, immutable veri yapıları, prefix syntax, fonksiyon tanımlama, destructuring, recursion, lazy sequence ve makrolar gibi temel özellikleri anlatılmaktadır. Ayrıca Clojure'da proje başlatma, kütüphane yönetimi, IDE seçenekleri ve veritabanı bağlantıları hakkında pratik bilgiler sunulmaktadır.
    • Sunumda Clojure'nin Google, Facebook, Twitter gibi büyük şirketlerde ve Storm, Cascalog gibi açık kaynak projelerinde nasıl kullanıldığı da anlatılmaktadır. Konuşmacı, Clojure'nin "zero efekt" prensibini vurgulamakta ve bu dilin JVM üzerinde inovatif projeler için Scala ile birlikte tercih edilebileceğini belirtmektedir. Video, Clojure öğrenmek isteyenlere kitap önerileriyle sonlanmaktadır.
    00:31Konuşmacının Tanıtımı
    • Konuşmacı Hürriyet'in CTO'su olan Umut Gökbayrak'tır ve kendisini bir hardcore developer olarak tanımlamaktadır.
    • Clojure'nin birinci dilidir ve Türkiye'de toplam beş kişilik bir kullanıcı kitlesi bulunmaktadır.
    • Konuşmacı ayrıca üç çocuğu, iki kedi ve bir insan çocuğu olan bir profesyonel müzisyen olduğunu belirtmektedir.
    01:27Clojure'nin Tanıtımı
    • Clojure, Lisp'in JVM üzerinde çalışan bir versiyonudur ve hem JVM hem de CR üzerinde çalışabilir.
    • Dünyada Stack Overflow ve GitHub'daki commitler üzerinden değerlendirildiğinde, Clojure oldukça popüler bir dil olmasına rağmen, Scala, Haskell, Go gibi dillere göre daha az popülerdir.
    • Clojure, Google Trends'e göre üç aşağı beş yukarı bir çizgi içerisinde popülerlik göstermektedir.
    02:57Lisp'in Özellikleri
    • Clojure ve diğer Lisp tarzı dillerde kod yukarıdan aşağı okunmaz, içten dışa doğru okunur ve fonksiyonlar iç içe parantezler içinde yer alır.
    • Lisp, 1958'den beri kullanımda olan en eski ikinci dil olup, Clojure ise günümüzde popüler olan Lisp versiyonudur.
    • Lisp tabanlı dillerde "code is data" prensibi uygulanır; yani yazılan kod aynı zamanda bir data olarak anında convert edilebilir.
    05:08Clojure'nin Modern Özellikleri
    • Clojure, modern bir dil olarak okunabilir kodlar, tek satırla web server'ın ayağa kaldırılması gibi özellikleri sunmaktadır.
    • Clojure, akademisyenlerin değil, uygulayan insanların ihtiyaçları doğrultusunda geliştirilmiş bir dil olup, güçlü bir web framework desteği bulunmaktadır.
    • Clojure Script, JavaScript'e benzer bir dil olup, Clojure koduyla client-side kod yazılabilir ve daha iyi bir JavaScript kodu üretebilir.
    06:17Clojure'nin Teknik Özellikleri
    • Clojure, dinamik ve factional bir dil olup, standart olarak tüm objelerinin immutable (değişmez) olduğu bir dildir.
    • Immutable özelliği, bir obje üzerinde değişiklik yapıldığında orijinal objenin değişmediği, yeni bir obje yaratıldığı anlamına gelir.
    • Clojure, JVM üzerinde çalıştığı için Java'ya yakın bir performans sunar ve Java ile yazılmış tüm kütüphaneleri kullanabilir.
    07:59Clojure Öğrenme
    • Clojure öğrenmek için Leiningen ile başlanmalıdır.
    • Java'da Maven ve Ant gibi paket yönetimi araçları varken, Clojure kullanıcıları Ant'i sevmedikleri için Leiningen adını vermişlerdir.
    • Leiningen, çok kolay kullanılabilecek ve iki satırda kurulabilen bir paket yönetimi aracıdır.
    08:27Clojure Proje Başlatma ve Template Sistemi
    • Clojure'da npm gibi bir sistem bulunur ve sıfırdan proje başlatmak için Leiningen'i indirip "lein new luminus" komutuyla başlangıç yapabilirsiniz.
    • Luminus, Clojure'da yüzlerce binlerce mevcut uygulama şablonundan biridir ve bu şablonlar projenizin ihtiyaçlarına uygun şekilde seçilebilir.
    • Clojure'da tam teşekküllü web framework'ler (Ruby'nin Rails'ı, Django veya Kemal gibi) mevcuttur, ancak Clojure kullanıcıları genellikle kendi framework'lerini oluşturmayı tercih ederler.
    10:30Clojure Kütüphane Sistemi
    • Clojure şablonlarının adlarını öğrenmek için Clojure ARS (clojure ars nokta org) web sitesi kullanılabilir, bu site Ruby gemlerinin öğrenildiği bir web sitesi gibidir.
    • Clojure ARS'da on binlerce kütüphane bulunur, sayıca az olsa da nitelik olarak yüksektir.
    • Kütüphane yazdığınızda "lein deploy clojars" komutuyla Clojure ARS'a gönderilebilir.
    11:50Clojure Kod Yazma Ortamları
    • Clojure kodu nerede yazılabilir, teknik olarak her yerde yazılabilir ancak pratikte syntax desteği için IDE'ler tercih edilir.
    • Clojure kullanıcıları genellikle Emacs kullanır çünkü büyük bir kısmı Lisp tabanlıdır ve Emacs Lisp ile yazılmıştır.
    • Light Table, Clojure için özel olarak tasarlanmış bir IDE'dir ve kodun içinde herhangi bir satırın sonuna gidip komut çalıştırıp çıktısını görebilme gibi güçlü fonksiyonlar sunar.
    13:27Clojure Proje Yapısı ve Bağımlılıklar
    • Clojure projelerinde her projenin bir "project.clj" dosyası vardır ve burada bağımlılıklar (kütüphaneler) ve versiyonları belirtilir.
    • Projeyi çalıştırdığınızda, belirtilen kütüphaneler Clojars'dan, GitHub'dan veya belirtilen diğer kaynaklardan otomatik olarak yüklenir.
    • Clojure sadece Clojure kütüphanelerini değil, aynı zamanda ClojureScript kütüphanelerini de bağımlılıklar bölümünden yönetebilir.
    15:37Clojure'da Veritabanı Entegrasyonu
    • Clojure'da veritabanına bağlanmak için özel kodlar kullanılır ve bu kodlar projenin belirli bölümlerinde yer alır.
    • Clojure'da SQL kodları ayrı dosyalarda tutulabilir ve bu kodlar fonksiyonlar olarak kodunuza enjekte edilebilir.
    • Bu sayede SQL kodları ve uygulama kodları ayrı kalır, böylece kodun daha temiz ve düzenli olmasını sağlar.
    16:47RAPL Dili ve Sintaksı
    • RAPL, Lisp'in bir versiyonu olup, "read eval print loop" (REPL) denilen konsolu açarak kod yazılabilir.
    • RAPL'de prefix syntax kullanılır, yani operatörler (fonksiyonlar) komutların başında yer alır, bu da kodun daha tutarlı ve basitleştirilmiş hale gelmesini sağlar.
    • RAPL'de vektörler köşeli parantezlerle gösterilir ve veri tipleri immutable (değişmez) özelliğe sahiptir.
    19:10Performans ve İmmutability
    • RAPL, JVM üzerinde çalışan diller arasında performans kaybı en çok olan dillerden biridir çünkü Java class'larının üzerine rapperlar oluşturur.
    • İmmutability özelliği, kodun paralel çalıştırılmasını ve ölçeklenebilir olmasını sağlar çünkü fonksiyonlar birbirlerinin verilerine bağımlı değildir.
    • İmmutability istenmiyorsa "transient" ve ünlem işareti kullanılarak orijinal verinin değiştirilmesi mümkündür.
    21:51Kod Okuma ve Fonksiyon Tanımlama
    • RAPL'de kod en iç parantezden dışa doğru okunur, bu başta zor gelebilir ancak zamanla alışılabilir.
    • Fonksiyonlar "defn" anahtar kelimesiyle tanımlanır ve tek bir fonksiyon birden fazla parametre versiyonu taşıyabilir.
    • Variable argümanlar kullanılarak istenilen kadar parametre geçirilebilir ve diğer kütüphaneler "require" ile dahil edilebilir.
    25:03Scope ve Destructuring
    • "def" anahtar kelimesiyle tanımlanan değişkenler global scope'a sahiptir, "let" anahtar kelimesi ise mevcut scope içinde değişken tanımlaması sağlar.
    • Destructuring özelliği, fonksiyonlara geçirilen parametreleri daha yapılandırılmış şekilde kullanmayı sağlar.
    • Hash veri tiplerinde de destructuring kullanılarak sadece ihtiyaç duyulan değerler değişkenlere atanabilir.
    28:07Clojure'da Döngüler ve Rekürsiyon
    • Clojure'da döngüler için for yerine rekürsiyon kullanılır, çünkü Clojure'nin mantığı parantezlerden en diptekiine doğru gider ve her parantezin çıktısı bir üstteki parantezin girdisidir.
    • Clojure'da "do-seq" komutu tam anlamıyla for döngüsünü sağlar, ancak Clojure'nin mentalitesine uymaz.
    • Rekürsiyon, bir counter ile sayma işlemi gibi işlemlerde x değerini her seferinde düşürerek ve print olarak göstererek çalışır.
    29:47Tail Recursion ve Performans
    • Tail recursion, JVM üzerinde rekürsiyon yaparken stack overflow sorununu çözmek için sadece rekürsiyon edecek olan kısmı ayrı bir bellek hanesinde tutup recursion'ı ayrı bir fonksiyon olarak yapabilmeyi sağlar.
    • İyi yazılmış Clojure kodu ile Java arasında %2-10 arası performans farkı olabilir, çünkü Clojure dinamik bir dil.
    • Clojure lazy sequence'ları destekleyen bir dil olup, bir sequence yaratıp on the fly işleyebilirsiniz.
    31:36Clojure'nin Özellikleri
    • Clojure'da polimorfizm için objeler yaratıp birbirlerinden inherit ettirmek mümkündür.
    • Clojure çok farklı bir mantıkta çalıştığı için öğrenmek diğer dilleri öğrenmekten farklıdır.
    • Clojure öğrenmek için cheat sheet'e bakıp fonksiyon isimlerini öğrenmek ve Closure doksundan örneklerle detaylarını öğrenmek yeterlidir.
    32:48Makrolar ve Clojure'nin Avantajları
    • Makrolar programlama dilinize dilde olmayan bir özelliği eklemeye yarar, örneğin "and" makrosu if'in nalı halini sağlar.
    • Makrolar güçlü bir araç olmasına rağmen, ne yaptığınızı bilmiyorsanız kötü kod yazabilir ve programınız yavaşlayabilir.
    • Clojure modern bir dil olup JDBC'yi destekleyen tüm veritabanlarıyla çalışabilir.
    35:26Clojure'nin Kod Kalitesi
    • Clojure'da kodlar daha kısa olur çünkü verboz olmayıp, detayları tek tek belirtmeye gerek kalmaz.
    • Clojure'da for loop yerine map, iterator ve animator gibi metotlar kullanılarak döngüler oluşturulabilir.
    • Clojure'da yazılmış kütüphanelerin stabilitesi efsanevi seviyede olup, uzun süredir geliştirilen kodların alfa versiyonları bile büyük oranda stabildir.
    36:22Closure Script ve Kullanımı
    • Closure Script, JavaScript'te compile olan bir kod olup, front-end kodu yazmak için kullanılır.
    • Closure içindeki Hick-Up gibi kütüphaneler sayesinde HTML yazmadan Closure ile HTML generate edilebilir.
    • Closure Script, Closure syntax ile yazılan Google'ın Closure kütüphanesiyle compile olup JavaScript'te generate edilen bir dildir.
    38:07Veritabanı Bağlantısı ve Performans
    • Veritabanlarına bağlanmak için SQL kodunun tepesine comment olarak yazılan şey function adı olup, herhangi bir yerde normal fonksiyon gibi çağrılabilir.
    • Genellikle ORM (Object Relational Mapping) kütüphaneleri kullanılmaz, çünkü SQL kodu tamamen ayrılabildiği için native SQL kod yazmak tercih edilir.
    • Closure stabil ve hızlı çalışır, Java'nın garbage collector ile uğraşmak gerekir, ancak programlama dili scale etmek üzere tasarlanmış olduğundan yüzlerce makineye dağıtabilirsiniz.
    39:18Closure'un Kullanıcıları
    • Closure, Google, Facebook, Twitter, Walmart gibi büyük şirketlerin arka tarafta kullandığı popüler bir dildir.
    • Türkiye'de IETT'nin "Nasıl Gidiyorum" mobil app'i ve anonymous e-mail servisi olan Peace Mail.com Closure ile yazılmıştır.
    • Closure ile yapılmış en büyük open source projelerden biri Apache'nin Storm framework'idir, bu streaming processing için dünyada Spark'la beraber en yaygın kullanılan iki framework'ten biridir.
    42:01Closure'un Avantajları
    • Closure, React, Angular gibi popüler teknolojileri destekler ve ClosureScript wrapper'ları ile bu teknolojileri kullanabilirsiniz.
    • Closure'da "zero effect" prensibi uygulanır, yani yazdığınız bir fonksiyon diğer fonksiyonu asla bozmaz.
    • Immutable objeler kullanılarak kod yazmak, hata yapma olasılığını azaltır ve kod yazmayı kolaylaştırır.
    43:02Projeleri Başlarken Yaklaşım
    • Richard Stallman'a büyük bir proje nasıl başlanır sorulduğunda, en zor kısmını bulup ondan başladığını söylemiştir.
    • Closure'da immutable objeler sayesinde fonksiyonlar kendi içinde bağımsız çalışır ve projeyi zoradan kolaya doğru ilerletmenizi sağlar.
    • Closure'da projeyi yaparken ilk önce çıplak bir proje template seçerek başlanır ve fonksiyonlar zoradan basite doğru yazılır.
    49:56Clojure Veritabanı Bağlantısı
    • Normal bir Clojure projesinde ilk olarak projenin başladığı yerlerde bir veritabanına bağlantı açılır.
    • Java standart kütüphaneleri kullanılarak CTP-zero adlı kütüphane ile arka tarafta polling yapılır ve bir veritabanı objesi verilir.
    • Bu veritabanı objesi HugSQL'e input olarak gönderilir ve SQL dosyasındaki commentleri function olarak enjekte ederek native function gibi kontrol edilebilir hale getirir.
    51:32Clojure Kitap Önerileri
    • Clojure üzerine çok fazla kitap yazılmış olup, konuşmacı bunlardan sadece bir kısmını faydalandığını belirtiyor.
    • Hızlı ve kolay başlangıç için "Pragmatic Programmer" kitabının önerildiği, hem Lisp hem de Clojure'a güzel bir başlangıç sağladığı belirtiliyor.
    • Clojure script'inin özellikle incelenmesi öneriliyor ve bazı kitapların ücretsiz olarak internetten indirilebileceği belirtiliyor.
    52:46Clojure Kullanımı ve Trendler
    • Türkiye'de telekom sektöründe Clojure kullanıldığı görülmemiş, ancak yurt dışında büyük şirketlerin içinde beklenmedik yerlerde karşımıza çıkıyor.
    • JVM üzerinde daha inovatif bir şey yapmak isteyenler için şu an en temel iki dil Scala ve Clojure olarak belirtiliyor.
    • Ekibin içerisinde deneyimli kişiler varsa Clojure makul bir alternatif haline geliyor, ancak şu an için oyların büyük bir kısmı Scala'ya eğiliyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor