Kitap 01 · Özet sayfa
Programlamanın Temelleri
Her dilde karşılaşılan temel kavramlar: değişkenler, fonksiyonlar, asenkron kod ve programlama paradigmaları.
Software Dictionary · softwaredictionary.org/tr/kutuphane/programming/ozet
- 01Algoritma
- Algoritma, bir listeyi sıralamak ya da en kısa yolu bulmak gibi bir sorunu çözmek veya bir işi tamamlamak için izlenen, sonlu ve adım adım yönergeler bütünüdür.
- Algoritma, bir girdiyi çıktıya dönüştüren sonlu ve sıralı adımlar bütünüdür.
- Dilden bağımsızdır; kod onu ifade etmenin yalnızca bir yoludur.
- Verimlilik, zaman ve bellek için Big O gösterimiyle anlatılır.
- 02Async/Await
- Async/await, asenkron kodu sıradan adım adım kod gibi okunur biçimde yazmayı sağlayan, her await'te bir promise ya da görev bitene dek duran sözdizimidir.
- async bir fonksiyonu asenkron olarak işaretler; JavaScript'te her zaman bir promise döndürür.
- await, bir promise sonuçlanana dek yalnızca mevcut fonksiyonu duraklatır, tüm programı değil.
- Hatalar sıradan try/catch blokları ile yönetilebilir.
- 03Base64
- Base64, resim ya da anahtar gibi her tür ikili veriyi yalnızca 64 güvenli metin karakteriyle yazar; böylece veri metin için yapılmış sistemlerden geçebilir.
- Base64 her tür byte'ı 64 metin karakteriyle yazar.
- Her 3 byte 4 karaktere dönüşür; veri yaklaşık üçte bir büyür.
- İkili veriyi e-posta, JSON, URL'ler ve HTTP başlıkları üzerinden taşır.
- 04Big O gösterimi
- Big O gösterimi, girdi büyüdükçe bir algoritmanın çalışma süresinin ya da bellek kullanımının nasıl arttığını, kesin hız yerine büyüme oranıyla anlatır.
- Big O, girdi boyutu n arttıkça zamanın ya da belleğin nasıl büyüdüğünü anlatır.
- Yaygın sınıflar O(1), O(log n), O(n), O(n log n), O(n^2) ve O(2^n)'dir.
- Sabitler ve daha küçük terimler atılır; bu yüzden 3n + 5, O(n) olur.
- 05CallbackGeri çağırma fonksiyonu
- Callback, başka bir fonksiyona argüman olarak verilen ve o fonksiyonun bir iş bittiğinde ya da bir olay gerçekleştiğinde sonradan çağırdığı fonksiyondur.
- Callback, daha sonra çalıştırılmak üzere başka bir fonksiyona verilen fonksiyondur.
- Callback'in ne zaman ve kaç kez çalışacağını onu alan fonksiyon belirler.
- Callback'ler senkron (map gibi) ya da asenkron (setTimeout gibi) olabilir.
- 06ClosureKapanış
- Closure, oluşturulduğu kapsamdaki değişkenleri hatırlayan bir fonksiyondur; dıştaki fonksiyon sona erdikten sonra bile bu değişkenleri kullanabilir.
- Closure, bir fonksiyon ile onun çevre kapsamdan yakaladığı değişkenlerin bütünüdür.
- Yakalanan değişkenler, closure var olduğu sürece yaşamaya devam eder.
- Closure'lar değişkenleri referansla yakalar, bu yüzden her zaman en son değeri görür.
- 07Constructor
- Constructor, bir sınıftan yeni bir nesne oluşturulduğunda çalışan ve nesnenin başlangıç değerlerini ayarlayarak onu kullanıma hazırlayan özel bir metottur.
- Constructor, bir sınıftan yeni bir nesne oluşturulduğunda kendiliğinden çalışır.
- Görevi nesneye geçerli bir başlangıç durumu vermektir.
- JavaScript'te constructor, Python'da __init__ adını taşır; Java ve C#'ta sınıfın adını alır.
- 08Çok biçimlilik
- Çok biçimlilik, kodun farklı türlerdeki değerlerle ortak bir arayüz üzerinden çalışabilmesidir; her tür kendi davranışını sağlar.
- Çok biçimlilik, tek arayüz ve birçok uygulama demektir.
- Alt tür çok biçimliliği, nesnenin gerçek türüne göre doğru geçersiz kılınmış metodu çalışma zamanında seçer.
- Metot aşırı yüklemesi ve generics, çok biçimliliğin diğer biçimleridir.
- 09Çöp toplama
- Çöp toplama, dil çalışma zamanının programın artık kullanamadığı verileri bulup bu belleği yeniden kullanıma açtığı otomatik bellek yönetimidir.
- Çöp toplama, programın artık ulaşamadığı belleği otomatik olarak serbest bırakır.
- Çoğu toplayıcı referansları köklerden izler; ulaşılamayan nesneler çöptür.
- Birçok bellek hatasını önler ama kısa duraklamalara ve ek bellek yüküne yol açabilir.
- 10Değişken
- Değişken, bir programda sayı ya da metin gibi bir değeri tutan ve kodun çalışırken okuyup değiştirebildiği, adlandırılmış bir depolama alanıdır.
- Değişken, saklanan bir değere işaret eden bir addır.
- Değeri genellikle program çalışırken okunabilir ve değiştirilebilir.
- Tür, hangi tür veri tutacağını; kapsam ise nerede görünür olacağını belirler.
- 11Değişmezlik
- Değişmezlik, bir değerin oluşturulduktan sonra değiştirilememesi demektir; her güncelleme, orijinali yerinde değiştirmek yerine yeni bir değer üretir.
- Değişmez bir değer oluşturulduktan sonra asla değişmez; güncellemeler yeni değerler üretir.
- Değişmez veriler fonksiyonlar ve iş parçacıkları arasında güvenle paylaşılabilir.
- Fonksiyonel diller değişmezliği varsayılan yapar ve kopyaları ucuz tutmak için kalıcı veri yapıları kullanır.
- 12Derleyici
- Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- Derleyici, kaynak kodu makine koduna, bytecode'a ya da başka bir dile çevirir.
- Aşamalar hâlinde çalışır: token'lara ayırma, çözümleme, denetleme, en iyileme ve kod üretme.
- Derleme zamanı hataları, program hiç çalışmadan önce yakalanır.
- 13Dinamik Tipleme
- Dinamik tipleme, türlerin değişkenlere değil değerlere ait olması ve program çalışırken kontrol edilmesidir; bir değişken önce sayı, sonra string tutabilir.
- Türler değerlere aittir ve çalışma zamanında kontrol edilir.
- Python, JavaScript, Ruby ve PHP dinamik tiplidir.
- Betikler, prototipler ve keşif için hızlıdır.
- 14Dize
- Dize, bir isim, cümle, URL ya da dosya içeriği gibi metni sıralı bir karakter dizisi olarak temsil eden bir veri türüdür.
- Dize, metni temsil etmek için kullanılan sıralı bir karakter dizisidir.
- Dize değişmezleri tırnak içinde yazılır ve karakterlere 0'dan başlayan bir indeksle erişilir.
- Karakterler UTF-8 ve UTF-16 gibi Unicode kodlamalarıyla sayı olarak saklanır.
- 15Dizi
- Dizi, tek bir ad altında saklanan ve her öğesine genellikle 0'dan başlayan indeks adlı sayısal konumuyla erişilen, sıralı bir değerler koleksiyonudur.
- Dizi, sıralı bir değerler listesini tek bir ad altında saklar.
- Öğelere, genellikle 0'dan başlayan indeksle erişilir.
- İndeksle öğe okumak, dizi ne kadar büyük olursa olsun hızlı, yani O(1)'dir.
- 16Döngü
- Döngü, bir kod bloğunu belirli sayıda, bir koleksiyondaki her öğe için bir kez ya da bir koşul doğru kaldığı sürece tekrar eden bir kontrol yapısıdır.
- Döngü bir kod bloğunu tekrarlar; her tekrara iterasyon denir.
- for döngüleri sayar, while döngüleri bir koşulu denetler, for-each döngüleri ise bir koleksiyondaki her öğeyi ziyaret eder.
- break bir döngüden erken çıkar, continue ise sonraki iterasyona atlar.
- 17Düzenli ifade
- Düzenli ifade (regex), dizeler içinde aranacak, doğrulanacak, çıkarılacak veya değiştirilecek metni tarif eden, kompakt sözdizimli bir desendir.
- Regex, eşleşecek metnin biçimini tarif eden bir desendir.
- Karakter sınıfları, niceleyiciler, bağlayıcılar ve gruplar temel yapı taşlarıdır.
- Metin aramak, doğrulamak, çıkarmak ve değiştirmek için kullanılır.
- 18EnumSabit Değerler Kümesi
- Enum, bir siparişin olası durumları gibi sabit ve adlandırılmış bir değerler kümesi tanımlayan bir veri türüdür; kod bu kümenin dışında bir değer kullanamaz.
- Enum, sabit bir adlandırılmış değerler kümesine sahip bir türdür.
- Geçersiz değerleri önler ve sihirli sayılardan ya da dizelerden daha okunaklıdır.
- C'de enum'lar adlandırılmış tamsayılardır; Java, Rust ve Swift'te metot ya da veri taşıyabilirler.
- 19Eşzamanlılık
- Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.
- Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerlemesini sağlar.
- İş parçacıkları, olay döngüleri, async/await, goroutine'ler ya da aktörlerle sağlanabilir.
- Paralellik, görevlerin birden çok çekirdekte tam anlamıyla aynı anda çalışması demektir; eşzamanlılık bunu gerektirmez.
- 20Fonksiyon
- Fonksiyon, belirli bir işi yapan, isteğe bağlı olarak parametre denen girdiler alıp sonuç döndürebilen, adlandırılmış ve yeniden kullanılabilir kod bloğudur.
- Fonksiyon, tek bir işi yapan, adlandırılmış ve yeniden kullanılabilir bir kod bloğudur.
- Parametreler fonksiyonun tanımladığı girdilerdir; argümanlar ise gönderdiğiniz değerlerdir.
- return deyimi, sonucu çağıran koda geri gönderir.
- 21Fonksiyonel programlama
- Fonksiyonel programlama, paylaşılan verileri değiştirmeyen saf fonksiyonlarla yazılım kurma stilidir; kodu daha öngörülebilir ve test etmesi kolay yapar.
- Fonksiyonel programlama, yazılımı yan etkisiz saf fonksiyonlarla kurar.
- Veri değişmez kabul edilir: mevcut değerleri değiştirmek yerine yeni değerler oluşturulur.
- map, filter ve reduce gibi yüksek dereceli fonksiyonlar küçük fonksiyonları daha büyüklerde birleştirir.
- 22Framework
- Framework, bir uygulamanın yapısını sağlayan, yeniden kullanılabilir kod, araç ve kural temelidir; geliştiriciler yalnızca kendi mantıklarını doldurur.
- Framework bir uygulamanın yapısını sağlar; ayrıntıları siz doldurursunuz.
- Kontrolün tersine çevrilmesi: kodunuzu framework çağırır, tersi olmaz.
- Yönlendirme, arayüzü oluşturma ve veri erişimi gibi yaygın işleri üstlenir.
- 23GenericsJenerikler
- Generics, tam tür güvenliğini korurken birçok veri türüyle çalışan fonksiyonlar, sınıflar ve türler yazmanıza olanak tanıyan bir dil özelliğidir.
- Generics, tek bir fonksiyonun, sınıfın ya da türün birçok türle güvenle çalışmasını sağlar.
- T gibi bir tür parametresi, çağıran ya da tür çıkarımı tarafından doldurulan bir yer tutucudur.
- Derleyici, denetimi kapatan any'nin aksine türleri yine de denetler.
- 24Hata ayıklama
- Hata ayıklama, bir programın neden yanlış davrandığını bulma, hatalı kodu saptama ve düzeltme sürecidir; çoğu zaman hata ayıklayıcı adlı bir araç kullanılır.
- Hata ayıklama, bir hatanın nedenini bulup düzeltmek demektir.
- Önce sorunu güvenilir biçimde yeniden üretin, sonra nerede oluştuğunu daraltın.
- Hata ayıklayıcılar kesme noktalarında duraklamanıza, kodda ilerlemenize ve değişkenleri incelemenize izin verir.
- 25IDETümleşik Geliştirme Ortamı
- IDE (tümleşik geliştirme ortamı), bir kod editörünü hata ayıklayıcı, derleme komutları ve diğer geliştirici araçlarıyla tek bir yerde birleştiren uygulamadır.
- IDE; editörü, hata ayıklayıcıyı, derleme araçlarını ve kodda gezinmeyi birleştirir.
- Kodu anlar: hatalar, tamamlama, tanıma gitme ve refactoring.
- IntelliJ IDEA, Visual Studio, PyCharm, Xcode ve Android Studio birer IDE'dir.
- 26InterfaceArayüz
- Interface, bir türün sağlamayı vaat ettiği metot ve özellik imzalarından oluşan adlandırılmış bir kümedir; bu üyelerin nasıl gerçekleştirildiğini söylemez.
- Interface, bir türün hangi metotlara ve özelliklere sahip olması gerektiğini tanımlar, nasıl çalıştıklarını değil.
- Bir sınıf birkaç interface uygulayabilir ama genellikle yalnızca bir sınıfı genişletir.
- Java ve C# açık bir implements gerektirir; Go ve TypeScript şekli otomatik denetler.
- 27IteratorYineleyici
- Iterator, verinin nasıl saklandığını açığa çıkarmadan, konumunu hatırlayarak bir koleksiyonun öğeleri arasında teker teker ilerlemeyi sağlayan bir nesnedir.
- Iterator, öğeleri teker teker döndürür ve geçerli konumunu hatırlar.
- Iterable koleksiyondur; iterator ise ondan oluşturulan imleçtir.
- for...of ve Python'ın for döngüsü gibi döngüler arka planda iterator kullanır.
- 28İstisna
- İstisna, bir hata oluştuğunda programın normal akışını kesen bir olaydır; kod bunu programı çökertmek yerine yakalayıp ele alabilir.
- İstisna, çalışma zamanında bir hata oluştuğunda normal yürütmeyi keser.
- Kod bir istisna fırlatır ve bir try/catch bloğu onu yakalayıp ele alabilir.
- Yakalanmayan istisnalar çağrı yığınında yukarı ilerler ve programı çökertebilir.
- 29İşaretçi
- İşaretçi, başka bir değerin kendisi yerine bellek adresini saklayan bir değişkendir; kodun o veriyi dolaylı yoldan okumasına ya da değiştirmesine imkân tanır.
- İşaretçi, verinin kendisi yerine bir bellek adresini saklar.
- İşaretçiyi çözmek (dereferencing), o adresteki değeri okur veya yazar.
- İşaretçiler büyük verinin kopyalanmasını önler ve bağlı veri yapılarını mümkün kılar.
- 30JIT derlemeJust-in-Time Compilation
- JIT derleme, programın en sık çalışan kısımlarını çalışma anında makine koduna çevirerek yorumlayıcının hızlı açılışını derlenmiş kodun hızıyla birleştirir.
- JIT derleyici, sık çalışan kodu program çalışırken makine koduna çevirir.
- Programlar bir yorumlayıcıyla başlar; hot kod buna değdiğini gösterince derlenir.
- Çalışma anında gördükleri, JIT'in kodu özelleştirmesini ve bir tahmin tutmadığında deoptimizasyon yapmasını sağlar.
- 31Kalıtım
- Kalıtım, yeni bir sınıfın mevcut bir sınıfın alanlarını ve metotlarını yeniden kullanmasını, genişletmesini ve geçersiz kılmasını sağlayan OOP özelliğidir.
- Alt sınıf, ebeveyn sınıfının alanlarını ve metotlarını kalıtım yoluyla alır.
- Alt sınıflar yeni üyeler ekleyebilir ve miras alınan metotları geçersiz kılabilir.
- super, ebeveynin kurucusunu ya da bir metodun ebeveyndeki sürümünü çağırır.
- 32Kapsam
- Kapsam, bir programda değişken ya da fonksiyon gibi bir adın görünür olduğu ve kullanılabildiği bölgedir; her kod satırının nelere ulaşabileceğini belirler.
- Kapsam, bir değişkenin ya da fonksiyonun adının kodun neresinde kullanılabileceğine karar verir.
- Çoğu dil, kodun nerede yazıldığına dayanan sözcüksel kapsamı kullanır.
- İç kapsamlar dıştaki değişkenleri görebilir, ancak dıştaki kod içeriyi göremez.
- 33Kapsülleme
- Kapsülleme, verileri onları kullanan metotlarla paketleyip iç ayrıntıları gizlemektir; dışarıdaki kod yalnızca herkese açık bir arayüz üzerinden çalışır.
- Kapsülleme, verileri ve onlar üzerinde çalışan metotları tek bir birimde paketler.
- private ve public gibi erişim belirleyicileri, dışarıdaki kodun neyi görebileceğini denetler.
- Tüm değişiklikler, girdiyi doğrulayıp veriyi tutarlı tutabilen metotlardan geçer.
- 34Karakter kodlaması
- Karakter kodlaması, metni byte'lara ve geri metne çeviren kurallardır; her harfin saklanıp gönderilmesini sağlar. Bugünkü standart UTF-8'dir.
- Karakter kodlaması metni byte'lara, byte'ları metne çevirir.
- Unicode her karaktere bir numara verir; UTF-8 gibi bir kodlama da bu numaraların byte'a nasıl dönüşeceğine karar verir.
- UTF-8 karakter başına 1 ila 4 byte kullanır ve ASCII metni olduğu gibi bırakır.
- 35Kütüphane
- Kütüphane, bir programın sık yapılan işleri o kodu kendisi yazmadan yapmak için çağırdığı, fonksiyon ve sınıf gibi hazır kodlardan oluşan bir koleksiyondur.
- Kütüphane, programınızın sık yapılan işler için çağırdığı yeniden kullanılabilir koddur.
- Her dilin bir standart kütüphanesi vardır; paket yöneticileri üçüncü taraf olanları ekler.
- Kütüphaneyi siz çağırırsınız; framework ise sizin kodunuzu çağırır.
- 36Lambda fonksiyonu
- Lambda fonksiyonu, adı olmadan satır içinde yazılan küçük fonksiyondur; genellikle sıralama ya da filtreleme yapan başka bir fonksiyona doğrudan aktarılır.
- Lambda, adı olmayan ve kullanıldığı yerde satır içinde tanımlanan bir fonksiyondur.
- Sözdizimi değişir: JavaScript ve C#'ta =>, Java'da ->, Python'da lambda.
- Lambda'lar genellikle çevredeki değişkenleri yakalar; bu da onları closure yapar.
- 37Memoization
- Memoization, fonksiyon çağrılarının sonuçlarını saklayıp aynı girdiler tekrar geldiğinde kaydedilen sonucu döndüren bir optimizasyon tekniğidir.
- Memoization, bir fonksiyonun sonuçlarını saklar ve tekrarlanan girdiler için yeniden kullanır.
- Yalnızca yan etkisi olmayan saf fonksiyonlar için güvenlidir.
- Naif Fibonacci gibi üstel özyinelemeli algoritmaları doğrusal hâle getirebilir.
- 38Metot
- Metot, bir nesneye ya da sınıfa ait olup onun üzerinden çağrılan fonksiyondur; user.rename("Ada") örneğindeki gibi nesnenin verisini okuyup değiştirebilir.
- Metot, bir nesneye ya da sınıfa ait bir fonksiyondur.
- Nesnesine this ile (Python ve Ruby'de self ile) ulaşır.
- Örnek metotları tek bir nesne üzerinde çalışır; statik metotlar sınıfa aittir.
- 39Nesne
- Nesne, ilgili veriyi ve davranışı bir arada tutan yapıdır: değerleri özellik denen adlandırılmış alanlarda, onları işleyen fonksiyonları metot olarak taşır.
- Nesne, ilgili veriyi (özellikler) ve davranışı (metotlar) bir arada tutar.
- Sınıf tabanlı dillerde nesne bir sınıfın örneğidir.
- JavaScript'te nesne değişmezleri ve prototip tabanlı kalıtım da vardır.
- 40Null
- Null, “burada değer yok” anlamına gelen özel bir değerdir; bir değişken bilerek hiçbir nesneye ya da veriye başvurmadığında kullanılır.
- Null, bir değerin bilerek yokluğunu temsil eder.
- Null'ı gerçek bir nesneymiş gibi kullanmak en yaygın çalışma zamanı hatalarından bazılarına yol açar.
- Kotlin, Swift, TypeScript ve C# null olabilen türleri derleme zamanında izleyebilir.
- 41OOPNesne Yönelimli Programlama
- OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- OOP, kodu veri ile davranışı birleştiren nesneler etrafında yapılandırır.
- Sınıf bir plandır; nesne ise ondan oluşturulan bir örnektir (instance).
- Dört temel direk kapsülleme, soyutlama, kalıtım ve çok biçimliliktir.
- 42Özyineleme
- Özyineleme, bir fonksiyonun sorunu, basit bir temel duruma ulaşana dek aynı sorunun daha küçük sürümleri için kendisini çağırarak çözdüğü tekniktir.
- Özyinelemeli bir fonksiyon, sorunun daha küçük bir sürümü için kendini çağırır.
- Özyinelemeyi durduran bir temel durum içermelidir.
- Her çağrı çağrı yığınında yer kaplar; çok derin özyineleme yığın taşmasına yol açabilir.
- 43Paket Yöneticisi
- Paket yöneticisi, yazılım paketlerini ve onların bağımlılıklarını kuran, güncelleyen ve kaldıran, sürümleri otomatik olarak çözen bir araçtır.
- Paket yöneticisi paketleri kurar ve bağımlılıklarını çözer.
- Bir manifest okur ve npm ya da PyPI gibi bir registry'den indirir.
- Dil yöneticileri kütüphaneleri, sistem yöneticileri programları kurar.
- 44Paralellik
- Paralellik, birkaç hesaplamayı birden çok CPU çekirdeğinde, GPU'da ya da makinede gerçekten aynı anda çalıştırmaktır; böylece büyük bir iş daha hızlı biter.
- Paralellik, hesaplamaları birden fazla işlemcide aynı anda çalıştırır.
- Veri paralelliği veriyi böler; görev paralelliği farklı görevleri çalıştırır.
- CPU yoğun Python işleri GIL yüzünden genellikle süreçler kullanır.
- 45Parametre
- Parametre, bir fonksiyonun tanımındaki adlandırılmış bir girdidir; argüman ise fonksiyon çağrıldığında o yere verilen gerçek değerdir.
- Parametreler, bir fonksiyon tanımındaki adlandırılmış girdilerdir.
- Argümanlar, fonksiyon çağrıldığında verilen değerlerdir.
- Argümanlar konumsal, adlandırılmış, varsayılanlı ya da değişken sayılı olabilir.
- 46PromiseSöz
- Promise, asenkron bir işlemin nihai sonucunu temsil eden bir nesnedir; iş bittiğinde kodun başarıya ya da hataya tepki vermesini sağlar.
- Promise, gelecekte elde edilecek bir değeri temsil eder.
- Önce pending durumda başlar, sonra bir değerle fulfilled ya da bir hatayla rejected olur.
- Sonucu yönetmek için .then(), .catch() ve .finally() kullanılır.
- 47Saf fonksiyon
- Saf fonksiyon, aynı girdi için her zaman aynı çıktıyı döndüren ve yan etkisi olmayan, yani kendi dışındaki hiçbir şeyi değiştirmeyen fonksiyondur.
- Saf fonksiyon, aynı girdi için her seferinde aynı çıktıyı döndürür.
- Yan etkisi yoktur: dış duruma, argümanlara, dosyalara veya ağa hiçbir değişiklik yapmaz.
- Saf fonksiyonları test etmek, önbelleğe almak ve paralel çalıştırmak kolaydır.
- 48SDKYazılım Geliştirme Kiti
- SDK (yazılım geliştirme kiti), belirli bir platform veya servis için geliştirme yapmaya yarayan araç, kütüphane, dokümantasyon ve örneklerden oluşan pakettir.
- SDK, tek bir platform ya da servis için kütüphaneleri, araçları, dokümanları ve örnekleri paketler.
- Android'inki gibi platform SDK'ları derleme araçları ve emülatörler içerir.
- Servis SDK'ları bir API'yi, kimlik doğrulama ve yeniden denemeler dahil, yerel fonksiyonlara sarar.
- 49Sınıf
- Sınıf, nesne yönelimli programlamada bir grup nesnenin paylaştığı veri ve davranışı tanımlayan, nesnelerin örnek olarak ondan oluşturulduğu bir plandır.
- Sınıf, nesnelerinin paylaştığı özellikleri ve metotları tanımlar.
- Bir sınıftan oluşturulan nesneye örnek (instance) denir.
- Kurucu (constructor), her yeni örneğin başlangıç durumunu ayarlar.
- 50Soyutlama
- Soyutlama, bir şeyin nasıl çalıştığına dair karmaşık ayrıntıları daha basit bir arayüzün arkasına gizlemektir; kod onu yalnızca ne yaptığını bilerek kullanır.
- Soyutlama, bir şeyin nasıl çalıştığını ne yaptığının arkasına gizler.
- Yazılım, donanımdan yukarıya doğru soyutlama katmanlarından kurulur.
- Arayüzler ve soyut sınıflar bunun için OOP'deki ana araçlardır.
- 51Stack trace
- Stack trace, bir hata oluştuğu anda devam eden fonksiyon çağrılarının listesidir; hatanın çıktığı satırdan programın başladığı yere kadar uzanır.
- Stack trace, bir hata oluştuğu anda devam eden fonksiyon çağrılarını listeler.
- Her satır, yani her frame, bir fonksiyonu, bir dosyayı ve bir satır numarasını gösterir.
- Çoğu dil hatalı satırı en üste yazar; Python ise en alta.
- 52Statik Tipleme
- Statik tipleme, değişken ve ifadelerin türünün program çalışmadan önce, genellikle derleyici tarafından denetlenmesidir; birçok tür hatası erken yakalanır.
- Türler program çalışmadan önce, genellikle derleme zamanında kontrol edilir.
- Java, C#, Go, Rust, Kotlin ve TypeScript statik tiplidir.
- Tür çıkarımı sayesinde birçok türün elle yazılması gerekmez.
- 53Tür çıkarımı
- Tür çıkarımı, derleyicinin bir değişkenin ya da ifadenin türünü otomatik olarak belirlediği bir özelliktir; her tür bildirimini yazmanız gerekmez.
- Tür çıkarımı, derleyicinin açık bildirim olmadan türleri belirlemesini sağlar.
- Çıkarımlı kod hâlâ statik türlüdür ve çalışmadan önce denetlenir.
- Türler ilk değerlerden, return deyimlerinden, generic argümanlardan ve bağlamdan çıkarılır.
- 54Veri türü
- Veri türü, bir programa bir verinin sayı ya da metin gibi hangi tür bir değer taşıdığını ve hangi işlemlerin ona uygulanabileceğini söyleyen sınıflandırmadır.
- Veri türü, verinin ne tür bir değer taşıdığını ve üzerinde hangi işlemlere izin verildiğini tanımlar.
- Yaygın ilkel türler tamsayılar, kayan noktalı sayılar, dizeler ve boolean'lardır.
- Dizi ve nesne gibi bileşik türler birkaç değeri bir arada gruplar.
- 55Yorumlayıcı
- Yorumlayıcı, tüm programı önce ayrı bir çalıştırılabilir dosyaya çevirmek yerine kaynak kodu doğrudan, adım adım çalıştıran bir programdır.
- Yorumlayıcı, önce ayrı bir çalıştırılabilir dosya üretmeden kodu doğrudan çalıştırır.
- Çoğu yorumlayıcı kodu çözümler ve ham metin yerine bir sanal makinede bytecode çalıştırır.
- Yorumlayıcı içindeki JIT derlemesi, sık çalışan kodu çalışma zamanında hızlı makine koduna dönüştürür.
- 56Yüksek dereceli fonksiyon
- Yüksek dereceli fonksiyon, başka bir fonksiyonu argüman olarak alan, fonksiyon döndüren ya da ikisini de yapan fonksiyondur; davranış veri gibi taşınabilir.
- Yüksek dereceli fonksiyon, girdi olarak bir fonksiyon alır, bir fonksiyon döndürür ya da her ikisini yapar.
- Birinci sınıf fonksiyonlar gerektirir; çoğu modern dil bunları destekler.
- map, filter ve reduce klasik örneklerdir.