Framework ile Libraries Arasındaki Farklar

Ramazan Küçükkoç
5 min readJun 16, 2023

--

Framework Nedir ?

Herkese Merhabalar ilk yazım oldugu için biraz hecanlıyım :)Burada bir bootcampde soru olarak gelen framework ,libraries nedir ve arasındaki farklar nelerdir? Sorularına cevap olarak yazımı yazıyorum …

Öncelikle framework nedir ? Framework nedir sorusuna kısa bir cevap verelim : Framework yazılım geliştiriciler için önceden hazırlanmış kütüphaneleri içerisinde bulunduran, bu kütüphanelerin değiştirilmesine ve geliştirilmesine müsade eden yapının adıdır.

Dilimize çerçeve olarak çevirebileceğimiz framework; yazılım ya da uygulama geliştirmek için deneyimli mühendisler ve yazılımcılar tarafından geliştirilen, optimize edilen ve test edilerek kullanıma sunulan bir yazılımdır. Geliştiricilere ufak detaylarla uğraşmadan alanlarında ustalıklarını konuşturacakları bir çerçeve çizdiği için çok yönlüdür, güvenilirdir ve verimlidir.

Geliştiriciler, hangi alanda bir uygulama ya da yazılım geliştirdiklerine bağlı olarak farklı framework çerçevelerinden birini tercih edebilirler. Herhangi bir framework, geliştiricilere bazı temel düzenlemelerin olduğu bir alan sunar. Geliştirici, bu alan üzerinde çalışmaya başladığı için işin en büyük yükünden daha başlamadan kurtulmuş olur.

Framework kullanmanın avantajları:

Yaygın olarak kullanılan tüm framework yazılımları, alanında deneyimi mühendis ve yazılımcılar tarafından geliştirilmiştir. Yayınlanan tüm framework sistemleri farklı platform ve cihazlar için optimize edilmiş, özel testlerden geçirilmiş ve tasarım süreci en verimli hale getirilmiştir. Framework kullanmanın avantajlarından bazıları şu şekilde;

  • Daha iyi bir tasarım geliştirmeye yardımcı olur.
  • Programlama hızını arttırır.
  • Çok daha güvenli kod yazımı sağlar.
  • Yinelenen ve gereksiz kod yazımını önler.
  • Hata payını minimuma indirir.
  • Farklı teknolojiler üzerinde çalışma şansı yaratır.
  • Geliştiriciler, kullandıkları framework yazılımlarına katkı sağlayabilir.
  • İşlevi önceden oluşturulmuş kod segmentleri sayesinde geliştirilen uygulama ve yazılımlar çok daha güvenli hale gelir.
  • Kod test etmek ve kod hatalarını ayıklamak gibi işlemler çok daha kolay gerçekleştirilir.
  • Geliştirme süreci bazen yarı yarıya azalır.

Framework türleri:

  • Angular framework
  • Laravel framework
  • Apache Spark framework
  • PyTorch framework
  • TensorFlow framework
  • Ionic framework
  • Xamarin framework
  • Flutter framework
  • ASP NET MVC

Library Nedir ?

Yazılım kütüphanesi (Software Library), yazılım geliştiricilerinin program geliştirirken kullandıkları bir tür program kodları ve veriler takımıdır. Yazılım kütüphaneleri, yazılımcılar ve programlama dilinin derleyicilerine çalıştırılabilir programlar geliştirme konusunda yardımcı olurlar. Yazılım kütüphaneleri içinde genellikle önceden hazırlanmış kodlar, sınıflar, prosedürler, betikler, konfigürasyon verilerini içerir.

Bir geliştirici yazılım geliştirirken yazılımını daha işlevsel hale getirmek veya çeşitli fonksiyonlar kazandırmak için yazılım kütüphanelerinden faydalanır. Yazılım kütüphaneleri yazılımcıların iş yükünü hafifletir ve aynı kodu tekrar yazmalarına gerek kalmadan onlara hazır bir kalıp sunar. Basit bir örnekle açıklamamız gerekirse; bir geliştirici matematikle ilgili bir yazılım geliştirdiğinde bu yazılıma karmaşık matematik işlemlerini yaptırması için ayrı ayrı modüller yazmak zorunda kalacaktır. Bu kodları yazmaya uğraşmak yerine yazılım kütüphanesindeki bir matematik modülünü alıp bu modülü doğrudan kendi yazılımına ilave edebilir.

Geliştirici modülü ilave ederken, istemediği veya ihtiyaç duymadığı bölümleri koddan çıkarabilir ya da ihtiyacına göre düzenleyebilir. Verdiğimiz basit örnekten anlayabileceğiniz üzere yazılım kütüphaneleri geliştiricilerin iş yükünü ciddi oranda hafifletebilir ve geliştirme sürecine hız kazandırabilir. Her programlama dilinde popüler hale gelen yazılım kütüphaneleri vardır. Geliştiricilerin daha hızlı ve sorunsuz yazılımlar ortaya çıkarabilmesi için bildiği programlama diline dair ilgili yazılım kütüphanelerinin neler olduğunu ve bunlardan nasıl faydalanması gerektiğini öğrenmesi gerekir.

Library Örnekleri :

Python

Yapay zekâ uygulamaları için en popüler programlama dili Python’dur. Python, açık kaynaklı bir dildir ve kolayca öğrenilebilir ve anlaşılabilir bir sözdizimine sahiptir. Ayrıca, geniş bir kütüphane ekosistemi sunar. Bu kütüphaneler sayesinde yapay zekâ uygulamaları için gerekli olan işlemler kolayca gerçekleştirilebilir.

Yapay zekâ uygulamaları için örnek olarak, TensorFlow, Keras, PyTorch, OpenCV, Scikit-learn, Pandas ve NumPy kütüphaneleri sayılabilir. Bu kütüphaneler, makine öğrenmesi, derin öğrenme, görüntü işleme, doğal dil işleme ve veri analizi gibi çeşitli yapay zekâ uygulamaları için kullanılabilir.

Java

Java, geniş bir kitle tarafından kullanılan bir programlama dili ve yapay zeka uygulamaları için de sıklıkla kullanılmaktadır. Java, platform bağımsız bir dil olduğu için, uygulamalarınızın farklı işletim sistemlerinde çalışmasını sağlar.

Java, yapay zeka uygulamaları için kullanılabilecek çeşitli kütüphanelere sahiptir. Weka, Java’nın makine öğrenmesi kütüphanesi olarak kabul edilir. Ayrıca, StanfordNLP ve Apache OpenNLP, doğal dil işleme uygulamaları için Java kütüphaneleridir.

C++

C++, yapay zeka uygulamaları için performans ve hız gerektiren durumlarda kullanılan bir programlama dilidir. Özellikle, yapay zekâ algoritmaları için geliştirilmiş olan TensorFlow ve PyTorch gibi kütüphaneler C++ dili ile yazılmıştır.

C++, performans ve hız gerektiren yapay zekâ uygulamaları için tercih edilebilir. Örneğin, TensorFlow ve PyTorch kütüphaneleri, derin öğrenme uygulamaları için C++ ile yazılmıştır. Ayrıca, OpenCV, görüntü işleme uygulamaları için C++ ile yazılmış bir kütüphanedir.

Framework ve Library Arasındaki Farklar?

  • Yazılım geliştirme süreçlerinde standart algoritmalar, kod optimizasyonu , devamlı gelişime açık olma , değişebilmek gibi durumlar çok önemli kavramlardır. Çünkü bir yazılımın temellerinden biri onu oluştururken seçtiğimiz dillerdir ve diller aynı Türkçe , İngilizce gibi yıllar geçtikçe ve kullanıldıkça kendine değer katar, gelişir ve gelişimi asla bitmez.
  • Bu dillerinde kendilerine has kuralları ve kelimeleri bulunmaktadır. Programlama dillerinde bu kelimeler bir araya gelerek komutları oluşturabilirler. Tek bir kelime de bir komuta denk olabilir. Bu komutlar bir araya gelerek ya da tek başına fonksiyonları oluşturabilmektedir. Bu fonksiyonları sizin oluşturabildiğiniz gibi sizden önce birileri de oluşturmuş olabilir.
  • İşte bu fonksiyonları oluşturup bir araya topladığımız dosyalara “Software Library” diyoruz. Dolu dolu bir tanımlama yaparsak “Yazılım geliştiricilerinin program geliştirirken kullandıkları binary program kodları ve veriler takımıdır.”
  • Libraryler, yazılımcılar ve yazılım mimarlarına (Facebook, Google, Oracle, VMWare gibi şirketler) çalıştırılabilir programlar oluşturma aşamasında yardımcı olur. Libraryler içinde çoğunlukla önceden hazırlanmış kodlar, fonksiyon demetleri, prosedürler, yazılar, konfigürasyon (yapılandırma) verilerini içerir.
  • Framework ve libraryler dile bağımlı kavramlardır. Bu yapılar içinde birden çok fazla tasarım deseni(design pattern) barındırır. Bu yapılar genelde dll formatında paylaşılır. Bu sayede amacımız kodların gözükmemesidir.

Kodunuzda bu kütüphaneleri ve içerisinde bulunan fonksiyonları kullanabilirsiniz.

Framework içinse özelleştirilmiş bir kütüphane diyebiliriz.

Framework ve Libraryler aslında çok karıştırılan iki terimdir.

Her bir framework bir kütüphanedir ancak her bir kütüphane framework değildir.

  • Frameworklerde bir yazılım mimarisi bulunmaktadır ve içerisinden bir fonksiyonu ya da bir metodu kullanırken uymanız gereken standartlar vardır.
  • Frameworklerde kodu çağıran kendisi olur.
  • Libraryler nasıl ki bizi kod yazmaktan kurtarıyorsa yapısal anlamda tasarımsal işlerle uğraşmaktan da bizi frameworkler kurtarıyor diyebiliriz. Bir framework içerisinde çok fazla library bulunabilir.
  • Framework bir programlama dili, program vs değildir. Framework’ü bir felsefe gibi düşünebiliriz, bir yaklaşım. Bize bir işi yapmamız için user manuel çıkarır ve biz o manuel’i takip ederek istediğimiz sonuca ulaşırız. Bunu yaparken de kendi librarylerini kullanır tabi ki. Herkese takip etmesi gereken ortak bir yaklaşım şekli sunar.

Kaynaklar

https://startupvadisi.com/yazilim-gelistirirken-en-buyuk-kaynagimiz-onlar-framework-ve-library/

https://www.akademi40.org/yapay-zeka-uygulamalarinda-yaygin-olarak-kullanilan-yazilim-dilleri#:~:text=Yapay%20zek%C3%A2%20uygulamalar%C4%B1%20i%C3%A7in%20%C3%B6rnek,yapay%20zek%C3%A2%20uygulamalar%C4%B1%20i%C3%A7in%20kullan%C4%B1labilir.

https://www.webtekno.com/framework-nedir-ne-ise-yarar-h117776.htm

https://platonakademisi.com/framework-ve-library-nedir-faydalari-nelerdir/

--

--