Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu podcast, Selman (Uber'da front-end engineer) ve Burhan (Grup firmasında çalışan) adlı iki yazılım mühendisi tarafından sunulan teknik bir sohbet formatındadır.
- Podcast, JavaScript'in 2018 yılındaki durumunu ve popülerlik sebeplerini ele alarak başlıyor ve ardından React, Vue, Angular gibi popüler frontend framework'lerini karşılaştırıyor. Daha sonra state management teknolojileri (Redux, GraphQL, Apollo), backend framework'leri (Express, Next.js, Koa), test çerçeveleri (Jest, Mocha, Jasmine) ve mobil geliştirme teknolojileri (React Native, Cordova, Ionic) hakkında detaylı tartışmalar sunuluyor. Son bölümde ise kod editörleri (Atom, VS Code, Vim) ve programlama araçları (Flow, TypeScript) inceleniyor.
- Konuşmacılar, her bir teknolojinin avantaj ve dezavantajlarını, popülerlik sebeplerini ve farklı projelerde nasıl kullanılabileceğini tartışırken, JavaScript'in giriş bariyerinin düşük olması, framework'lerin sağladığı standartlaşma ve kod anlaşırlığı gibi konulara da değiniyorlar. Ayrıca, jQuery'nin popülerliğinin azalması, modern JavaScript geliştirme ortamları ve kod kalitesini artırmak için kullanılan araçlar hakkında da bilgiler paylaşılıyor.
- 00:09Podcast Sunumu ve Sunucuların Tanıtımı
- Selman, Amerika'nın Barria bölgesinde Uber adlı şirkette front-end engineer olarak çalışmakta ve dört-beş senelik full time tecrübesi bulunmakta.
- Burhan da aynı bölgede Grup adlı firmada (eski adı Rival) e-ticaret alanında yazılım mühendisi olarak çalışmakta.
- 01:45Podcast Konusu ve JavaScript Anketi
- Podcast, JavaScript'in 2018 senesindeki durumunu ele alacak ve stateofjs.com adlı web sitesinde yapılan yıllık ankete dayanacak.
- Ankette 20 binden fazla katılım oluyor ve JavaScript'in popülerlik durumu, kullanıcı memnuniyeti gibi detaylar inceleniyor.
- Podcast, sadece Türkiye'de değil dünya genelinde JavaScript'in kullanım alanlarını ve şekillerini ele alacak.
- 03:20JavaScript'in Popülaritesi
- JavaScript ilk başta sadece kullanıcı arayüzünde kullanılacak bir diliydi, Node.js ve single page apps gibi gelişmelerle popülerliğini kazandı.
- JavaScript'e giriş bariyeri düşük olduğundan, özellikle scripting dili olarak başlangıç için uygun bir dil haline geldi.
- Java ve C gibi dillerde "hello world" yazdırmak için daha karmaşık yapılar gerektirirken, JavaScript daha kolay başlangıç sağlıyor.
- 05:52Kütüphanelerin Popülaritesini Belirleyen Faktörler
- GitHub'daki yıldız sayısı (star) bir kütüphanenin popülaritesini gösteren bir göstergedir, yüksek yıldız sayısı güvenilirlik anlamına gelir.
- NPM'de paketlerin indirilme sayıları da popülariteyi belirleyen önemli bir göstergedir.
- Stack Overflow gibi platformlarda bir konuyla ilgili ne kadar soru ve cevap paylaşıldığı, o konunun popülaritesini gösterir.
- 07:51JavaScript Anketleri ve Frameworkler
- Anket, kullanıcıların hangi teknolojileri kullandıklarını, sevdiğini ve tekrar kullanıp kullanmayacaklarını soruyor.
- JavaScript dünyasında çok sayıda framework var ve her gün yeni framework'ler çıkıyor.
- JavaScript'in elastik yapısı ve çözümleri yeniden kullanılabilmesi dilin güçlü yönlerinden biri.
- 10:46Frameworklerin Avantajları
- yalın JavaScript kullanmak mantıklı değil çünkü problemlerin çoğunu diğer insanlar da yaşıyor ve çözümler üretiyor.
- Frameworkler yazılım geliştirme yöntemini dikte ediyor ve herkes aynı şekilde yapması sayesinde kodları başkaları kolayca anlayabiliyor.
- Frameworkler, iyi geçerliliği kabul edilmiş pattern'ları takip etmenin imkanı sunuyor.
- 12:23Popüler Front-End Frameworkler
- En popüler front-end framework'lerden biri React, Amerika'da %60-70 oranında kullanılıyor.
- İkinci sırada Vue, üçüncü sırada Angular bulunuyor.
- Angular'ın birçok versiyonu var, eski versiyonlar artık desteklenmiyor.
- 14:29React ve Angular Karşılaştırması
- React sadece view'ları handle eden bir kütüphane iken, Angular daha kapsamlı bir framework.
- Angular'da iki taraflı veri bağlama problemi var ve bu performans sorunlarına neden oluyor.
- React, zip edildiğinde daha küçük ve hızlı yükleme sağladığı için tercih ediliyor.
- 16:35React ve View Karşılaştırması
- React, boyut olarak daha küçük olduğu için tercih edilmektedir.
- React'te life cycle metodları çıkarılarak boyut küçültülmüştür.
- View, React gibi component tabanlı olmasına rağmen kendi ayrı bir template sistemi vardır.
- 17:27View Teknolojisinin Özellikleri
- View, CS dediği bir dil kullanır ve HTML ile JavaScript kodunu ayırmaz.
- View'da Redux'a benzeyen state management araçları bulunmaktadır.
- View, Çin'de çok popülerdir ve Alibaba gibi büyük firmalar tarafından kullanılmaktadır.
- 18:40Demografik ve State Management
- React kullanıcıları genellikle Kanada, Amerika ve Avustralya gibi ülkelerdedir.
- View, Çin'de büyük bir popülerliğe sahiptir ve nedeni Alibaba'nın kullanmasıdır.
- Uygulama kompleksleştiğinde, sadece component state'i manage etmek yeterli olmaz ve daha kapsamlı bir state management gerekir.
- 19:41State Management ve React
- Uygulamanın mevcut state'ini anlamak ve kullanıcı interaksiyonu sonrası durumu tahmin etmek zor olabilir.
- Angular gibi kütüphaneler, objeleri farklı yerlerden değiştirmeyi kısıtlamıyor ve bu durumda state değişikliklerini kontrol etmek zorlaşabilir.
- Redux gibi kütüphaneler, state'i yönetmeyi zorlaştırarak geliştiricilere yardımcı oluyor ve özellikle büyük projelerde ileride kodu anlamanı kolaylaştırıyor.
- 21:33Redux ve Alternatifler
- Redux, state management için popüler bir kütüphane olmasına rağmen anlaşılması zaman alabilir ve sadece front-end dünyasına değil, daha genel bir pattern'ın uyarlanmış halidir.
- Redux, iki yönlü binding yerine tek yönlü bir yapı sunar; kullanıcı bir aksiyon tetikler, reducer'lar state'i bu aksiyona göre şekillendirir.
- MobX gibi alternatifler Redux'un yaptığı bazı işleri otomatikleştirerek daha kolay kullanım sunar, ancak bu da trade-off'larla (performans, blackbox kullanımı gibi) birlikte gelir.
- 23:18React Context
- React Context, komponentler arası veri paylaşımında ortaya çıkan problemleri çözmek için global state sağlar.
- Context, high order komponentleri kullanarak en üst seviyede bir değer getirerek alttaki tüm komponentlerin erişimini sağlar.
- Küçük projelerde Redux yerine React state kullanmak daha mantıklı olabilir, ancak kompleks enterprise uygulamalarında Redux kesinlikle tercih edilmelidir.
- 25:17GraphQL ve Apollo
- GraphQL, Facebook'un tanımladığı bir query language olup, API'lar arasındaki iletişimleri kolaylaştırmak için bir sistem sunar ve REST'in güçlü bir alternatifi olarak görülebilir.
- Apollo, GraphQL için popüler bir kütüphane olup, client side cashleme gibi işleri otomatikleştirerek geliştirme sürecini hızlandırır.
- Apollo, kendi state management sistemi sunarak Redux'un alternatifi olarak görülür ve React Apollo kütüphanesi ile her komponentin declarative şekilde API'dan istek yapabilmesini sağlar.
- 29:19Backend ve Frameworkler
- Node.js, JavaScript'in backend'te kullanılabilmesini sağlayan bir runtime platformudur ve Chrome'un V8 engine'ini kullanır.
- Express, Node.js için popüler bir web framework'tür ve RESTful API'ler yazmak için gerekli tüm özellikler sunar.
- Express, middleware yazma imkanı, performans iyileştirmeleri ve express generator ile hızlı proje başlatma gibi avantajlar sunar.
- 31:12Alternatif Frameworkler
- Next.js, server-side render applicationlar için kullanılan bir teknolojidir ve React'ta kullanılır.
- Uber'in web platform takımının kullandığı Fusion.js, open source bir proje olup COA üzerine inşa edilmiş ve plugin-based bir yapıya sahiptir.
- Happy.js gibi eski framework'ler de vardı ancak bazı kısıtlamaları nedeniyle popülerliklerini kaybetmişlerdir.
- 34:16Test Frameworkler
- Uber'de Jest test framework'i kullanılmaktadır ve snapshot özelliği ile React komponentlerinin render durumunu test etmeyi kolaylaştırır.
- Jest'in snapshot özelliği, UI değişikliklerini test etmek için ekran görüntüsü almak yerine komponentin render durumunu kaydetmeyi sağlar.
- Jasmine, eski bir test framework'idir ve Angular zamanında popülerdi, ancak günümüzde popülaritesi azalmıştır.
- 37:52JavaScript'in Web Dışında Kullanımı
- Electron, JavaScript'in web dışındaki uygulamalarda kullanılabilmesini sağlayan bir platformdur.
- Atom, VSCode, Slack ve Discord gibi popüler uygulamalar Electron kullanılarak geliştirilmiştir.
- Elektron ile kiosk uygulamaları gibi fiziksel aletlerde kullanıcı deneyimi tasarlanabilmektedir.
- 39:11Mobil Uygulama Geliştirme Teknolojileri
- React Native, Cordova, Ionic ve NativeScript gibi mobil uygulama geliştirme teknolojileri mevcuttur.
- React Native özellikle popülerdir ve Facebook'un Messenger uygulaması da React Native ile geliştirilmiştir.
- Kompleks uygulamalar (örneğin harita render etme) için React Native ve native code arasındaki ilişkiyi kurmak zorlaşabilir ve büyük bir overhead oluşturabilir.
- 40:23Progressive Web Apps
- Progressive Web Apps (PWA) gibi yeni terimler ortaya çıkmaktadır.
- PWA, kullanıcıların telefonlarına uygulama indirmek istememesi durumunda mobil uygulama deneyimi sunmayı amaçlamaktadır.
- PWA, offline çalışabilme, servis worker'lar kullanma ve optimistik yanıt verme gibi özellikler sunmaktadır.
- 42:52Utility Library'ler
- Utility library'ler (Lowdash, Lodash, etc.) popüler olmaya devam etmektedir.
- Webpack gibi araçlar sayesinde sadece işe yarayan fonksiyonları import etmek mümkün hale gelmiştir.
- Developerlar kolaylık sağlayıcı kütüphaneler sayesinde hızlı bir giriş yapabilir ancak belli bir seviyeye ulaştığında performans farkları ortaya çıkabilir.
- 44:39Performans Önemi
- Performans, özellikle e-ticaret gibi alanlarda çok önemlidir.
- Amazon'ın bir deneyimi göstermektedir ki sayfa yükleme süresindeki 200 milisaniye gecikme yıllık 2-3 milyar dolar zarara neden olabilir.
- Çalışılan şirkette performans takibi için özel bir grup var ve her iki haftada bir performans durumu değerlendirilmektedir.
- 46:54Geliştirme Ortamları ve Kütüphaneler
- jQuery popülaritesini kaybetmiş olmasına rağmen hala üçüncü sırada yer almaktadır.
- Lowdash ve Moment.js birbiriyle yarışıyor, jQuery bunlardan %30 daha az popülerdir.
- Geliştirme ortamları olarak WebStorm, VSCode, Sublime Text ve Vim gibi araçlar tercih edilmektedir.
- 49:04Kod Editörleri Hakkında Görüşler
- Konuşmacı, Vim'de plugin kurmanın zor olduğunu ve Atom'un daha kolay kullanım sunduğunu belirtiyor.
- Atom'da paketler sayesinde bir tıkla flow düzenlenebiliyor ve çok güzel çalışıyor.
- Atom'un çok hoşuna gittiğini ancak istatistiklere göre VSCode'un bunun iki-üç kat daha popüler olduğunu söylüyor.
- 51:31Podcast Kapanışı
- Podcastin henüz ismi olmadığını ve önümüzdeki günlerde bir isim bulacaklarını belirtiyorlar.
- Dinleyicilerden destek olmalarını ve sevdikleriyle paylaşmalarını istiyorlar.
- Kar amacı gütmeyip bildiklerini paylaşmak ve dinleyicilerden öğrenmek istediğini, Twitter'da geri bildirim alabileceklerini söylüyorlar.
- Bu işi ilk kez yaptıklarını ve profesyonel olarak daha önce yapmadıklarını, yapıcı geri bildirimlerin değerli olduğunu belirtiyorlar.