Programlama paradigması - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Genel bakış
  • 2 Paradigmalar
  • 3 Kaynakça

Programlama paradigması

  • العربية
  • Asturianu
  • Azərbaycanca
  • Беларуская (тарашкевіца)
  • Български
  • বাংলা
  • Bosanski
  • Català
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • English
  • Esperanto
  • Español
  • Eesti
  • Euskara
  • فارسی
  • Suomi
  • Français
  • Galego
  • עברית
  • Magyar
  • Bahasa Indonesia
  • İtaliano
  • 日本語
  • Qaraqalpaqsha
  • 한국어
  • Latina
  • Latviešu
  • Македонски
  • മലയാളം
  • Bahasa Melayu
  • Mirandés
  • Nederlands
  • Norsk bokmål
  • Polski
  • Piemontèis
  • Português
  • Română
  • Русский
  • Srpskohrvatski / српскохрватски
  • Simple English
  • Shqip
  • Српски / srpski
  • Svenska
  • Kiswahili
  • ไทย
  • Українська
  • اردو
  • Tiếng Việt
  • 中文
  • 粵語
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Wikimedia Commons
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
(Programlama paradigmaları sayfasından yönlendirildi)

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

Bazı paradigmalar, temel olarak, yan etkilere izin verilmesi veya işlem sırasının yürütme modeli tarafından tanımlanıp tanımlanmadığı gibi dilin yürütme modeli için çıkarımlarla ilgilidir. Diğer paradigmalar, bir kodu, kod tarafından değiştirilen durumla birlikte birimler halinde gruplamak gibi, esas olarak kodun düzenlenme şekliyle ilgilidir. Yine de diğerleri esas olarak sözdizimi ve dilbilgisi stiliyle ilgilenir.

Yaygın programlama paradigmaları şunları içerir:[1][2][3]

  • Programcının, makineye durumunu nasıl değiştireceğini bildirdiği (emirlendirdiği), emirli;
    • Emirleri prosedürler halinde gruplandıran, yordamsal.
    • Komutları, üzerinde çalıştıkları durumun bir parçası ile gruplandıran nesne yönelimli.
  • Programcının, istenen sonucun özelliklerini nadiren bildirdiği, ancak nasıl hesaplanacağını açıklamadığı, bildirimsel;
    • İstenen hesaplama sonucunun, bir dizi fonksiyon çağırımının sonucu olarak görüldüğü, fonksiyonel programlama.
    • Bir gerçekler ve kurallar sistemi hakkındaki bir sorunun cevabı olarak tanımlanan sonucun bildirildiği, mantıksal programlama.
    • Sonucun, bir optimizasyon probleminin çözümü olarak bildirildiği matematiksel programlama.
    • İstenen sonucun veri akışları ve değişikliğin yayılması ile bildirildiği reaktif.

Programın kendisine atıfta bulunmasını sağlayan yansıma gibi, sembolik teknikler de bir programlama paradigması olarak düşünülebilir. Ancak bu, ana paradigmalarla uyumludur ve bu nedenle kendi başına gerçek bir paradigma değildir.

Örneğin, emirli paradigmaya giren dillerin iki ana özelliği vardır: işlemlerin gerçekleştiği sırayı, bu sırayı açıkça kontrol eden yapılarla belirtirler ve herhangi bir zamanda bir durumun değiştirilebileceği yan etkilere izin verirler. Bir kod birimi içinde, zamanın farklı bir noktasında farklı bir kod birimi okunabilir. Kod birimleri arasındaki iletişim açık değildir. Bu arada, nesne yönelimli programlamada kod, yalnızca nesnenin parçası olan kod tarafından değiştirilen bir durumu içeren nesneler halinde düzenlenir. Nesne yönelimli dillerin çoğu aynı zamanda emirli dillerdir. Buna karşılık, bildirimsel paradigmaya uyan diller, işlemlerin yürütüleceği sırayı belirtmez. Bunun yerine, sistemde her birinin yürütülmesine izin verilen koşullarla birlikte bir dizi kullanılabilir işlem sağlarlar. Dilin yürütme modelinin uygulanması, hangi işlemlerin yürütülmekte serbest olduğunu izler ve sırayı bağımsız olarak seçer. Daha fazlası için, çok paradigmalı programlama dillerinin karşılaştırılması.

Genel bakış

[değiştir | kaynağı değiştir]
[4] göre çeşitli programlama paradigmalarına genel bakış :5[5]

Yazılım mühendisliğinin (bir süreç olarak) farklı metodolojilerle tanımlanması gibi, programlama dilleri de (hesaplama modelleri olarak) farklı paradigmalarla tanımlanır. Bazı diller tek bir paradigmayı desteklemek üzere tasarlanmıştır (Smalltalk nesne yönelimli programlamayı destekler, Haskell işlevsel programlamayı destekler), diğer programlama dilleri ise birden çok paradigmayı destekler (Object Pascal, C++, Java, JavaScript, C#, Scala, Visual Basic, Common Lisp gibi), Şema, Perl, PHP, Python, Ruby, Oz ve F#). Örneğin, C++, Object Pascal veya PHP ile yazılmış programlar tamamen prosedürel ya da tamamen nesne yönelimli olabilir. Ya da her ikisinin veya diğer paradigmaların öğelerini içerebilir. Yazılım tasarımcıları ve programcılar bu paradigma öğelerinin nasıl kullanılacağına karar verirler.

Nesne yönelimli programlamada, programlar bir dizi etkileşimli nesne olarak ele alınır. İşlevsel programlamada, programlar durumsuz işlev değerlendirmeleri dizisi olarak ele alınır. Çok işlemcili bilgisayarları veya sistemleri programlarken, süreç yönelimli programlamada, programlar mantıksal olarak paylaşılan veri yapıları üzerinde hareket eden eşzamanlı işlemler kümesi olarak ele alınır.

Pek çok programlama paradigması, teşvik ettikleri teknikler kadar yasakladıkları tekniklerle de bilinir. Örneğin, saf işlevsel programlama yan etkilerin kullanımına izin vermezken, yapılandırılmış programlama, goto (git) ifadesinin kullanımına izin vermez. Kısmen, bu nedenle, yeni paradigmalar genellikle daha önceki tarzlara alışkın olanlar tarafından doktriner veya aşırı katı olarak kabul edilir.[6] Yine de, belirli tekniklerden kaçınmak, program davranışını anlamayı ve program doğruluğu ile ilgili teoremleri kanıtlamayı kolaylaştırabilir.

Programlama paradigmaları, yalnızca bir UPA kullanarak bir yürütme modelinin çağrılmasına izin veren programlama modelleriyle de karşılaştırılabilir. Programlama modelleri, yürütme modelinin özelliklerine göre paradigmalar olarak da sınıflandırılabilir.

Paralel hesaplama için, bir dil yerine bir programlama modeli kullanmak yaygındır. Bunun nedeni, paralel donanımın ayrıntılarının donanımı programlamak için kullanılan soyutlamalara sızmasıdır. Bu, programcının algoritmadaki kalıpları, yürütme modelindeki kalıplarla eşleştirmek zorunda kalmasına neden olur (donanımın soyutlamaya sızması nedeniyle). Sonuç olarak, hiçbir paralel programlama dili tüm hesaplama problemlerine iyi eşleme yapamaz. Bu nedenle, bir temel sıralı dil kullanmak ve bir programlama modeli aracılığıyla paralel yürütme modellerine UPA çağrıları eklemek daha uygundur. Bu tür paralel programlama modelleri, paylaşılan bellek, mesaj geçişli dağıtılmış bellek, kodda görünen yer kavramları vb. gibi donanımı yansıtan soyutlamalara göre sınıflandırılabilir. Bunlar, yalnızca paralel diller ve programlama modelleri için geçerli olan programlama paradigmasının lezzetleri olarak kabul edilebilir.

Paradigmalar

[değiştir | kaynağı değiştir]
  • Ajan tabanlı (agent-oriented)
  • Bağlayıcı (concatenative)
  • Belirlenimci olmayan (nondeterministic)
  • Bildirimsel (declarative) (kontrast: Zorunlu (imperative))
  • Kısıtlı (constraint)
  • Fonksiyonel (functional)
  • Veri akışı (dataflow)
  • Hücre yönelimli (cell-oriented)
  • Reaktif (reactive)
  • Bileşen tabanlı
  • Akış tabanlı (flow-based)
  • Boru hattı (pipeline)
  • Dil yönelimli (language-oriented)
  • Etki alanı özgü (domain-specific)
  • Gramer yönelimli (grammar-oriented)
  • Lehçeleme (dialecting)
  • Kasıtlı (intentional)
  • Değer düzeyi (value-level) (kontrast: Fonksiyon düzeyi (function-level))
  • Eşzamanlı (concurrent)
  • Fonksiyon düzeyi (function-level) (kontrast: Değer düzeyi (value-level))
  • İfade yönelimli (expression-oriented)
  • Mantık (logic)
  • Kısıtlı mantık (constraint logic)
  • Tutsakedici mantık (abductive logic)
  • Tümevareabilir mantık (inductive logic)
  • Meta programlama (metaprogramming)
  • Otomatik (automatic)
  • Genel (generic)
  • Şablon (template)
  • Kural tabanlı (policy-based)
  • Yansıtıcı (reflective)
  • Öznitelik yönelimli (attribute oriented)
  • Olaya dayalı (event-driven)
  • Servis odaklı
  • Zamana dayalı (time-driven)
  • Özellik yönelimli (feature-oriented)
  • Paralel hesaplama (parallel computing)
  • İşlem yönelimli (process-oriented)
  • Semantik yönelimli (semantic-oriented)
  • veritabanılı (data-driven)
  • Yapısal (structured) (kontrast: Yapısal olmayan (non-structured))
  • Modüler (modular)
  • Nesne yönelimli (object-oriented)
  • Otomata tabanlı (automata-based)
  • Kaygıların ayrımına (separation of concerns) göre:
  • Cephe yönelimli (aspect-oriented)
  • Konu yönelimli (subject-oriented)
  • Rol yönelimli (role-oriented)
  • Sınıf tabanlı (class-based)
  • Prototip tabanlı (prototype-based)
  • Özyinelemeli (recursive)
  • Yapısal olmayan (non-structured) (kontrast: Yapısal (structured))
  • Dizi (array) (kontrast: Sayıl (scalar))
  • Tekrarlamalı (iterative)
  • Zorunlu (imperative)
  • Yordamsal (procedural)
  • g
  • t
  • d
Yazılım mühendisliği
Alanlar
Gereksinim çözümlemesi • Yazılım tasarımı • Programlama • Biçimsel yöntemler • Yazılım testi • Yazılım sistemleri • Yazılım dağıtımı • Yazılım bakımı
Kavramlar
Veri modelleme • Kurumsal mimari • Functional specification • Modelleme dili • Programlama paradigması • Yazılım • Yazılım mimarisi • Yazılım geliştirme yöntembilimi • Yazılım geliştirme süreci • Yazılımın niteliği • Yazılım kalite güvencesi • Yapısal analiz
Yönelimler
Atik • Aspect-oriented • Nesne yönelimli • Ontoloji • Servis odaklı • SDLC
Modeller
Geliştirme modelleri: Atik • Yinelemeli model • RUP • Scrum • Spiral model • Waterfall model • XP • V-Model
Diğer modeller: CMMI • Veri modeli • İşlev modeli • IDEF • Bilgi modeli • Metamodeling • Nesne modeli • Görünüm modeli • UML
Yazılım
mühendisleri
Victor Basili • Dennis Ritchie • Kent Beck • Peter Chen • Grady Booch • Fred Brooks • Barry Boehm • Bjarne Stroustrup • Ward Cunningham • Ole-Johan Dahl • Tom DeMarco • Edsger Dijkstra • Martin Fowler • C. A. R. Hoare • Watts Humphrey • Michael A. Jackson • Ivar Jacobson • Craig Larman • James Martin • Bertrand Meyer • David Parnas • Winston W. Royce • James Rumbaugh • Danese Cooper • Niklaus Wirth • Edward Yourdon
İlgili alanlar
Bilgisayar bilimi • Bilgisayar mühendisliği • İşletme mühendisliği • Geçmiş • Matematik • Proje yönetimi • Risk yönetimi • Sistem mühendisliği
  • g
  • t
  • d
Bilgisayar biliminin alt dalları
Matematiksel temeller
Matematiksel mantık · Kümeler kuramı · Sayı teorisi · Çizge teorisi · Tip teorisi · Kategori teorisi · Sayısal çözümleme · Bilgi teorisi · Kombinatorik · Boole cebiri
Hesaplama teorisi
Otomat teorisi · Hesaplanabilirlik teorisi · Hesaplamalı karmaşıklık teorisi · Kuantum hesaplama teorisi
Algoritmalar ve veri yapıları
Algoritma çözümlemesi · Algoritma tasarımı · Hesaplamalı geometri
Programlama dilleri ve derleyiciler
Ayrıştırıcılar · Yorumlayıcılar · Yordamsal programlama · Nesne yönelimli programlama · Fonksiyonel programlama · Mantık programlama · Programlama paradigmaları
Eşzamanlı, paralel ve dağıtık sistemler
Çoklu işleme · Dağıtımlı hesaplama · Eşzamanlılık denetimi
Yazılım mühendisliği
Gereksinim çözümleme · Yazılım tasarımı · Bilgisayar programlama · Biçimsel yöntemler · Yazılım testi · Yazılım geliştirme süreci
Sistem mimarisi
Bilgisayar mimarisi · Bilgisayar organizasyonu · İşletim sistemi
Telekomünikasyon ve ağ oluşturma
Bilgisayar müziği · Yönlendirme · Örgü topolojisi · Kriptografi
Veritabanları
Veritabanı yönetim sistemleri · İlişkisel veritabanı · SQL · İşlem yürütme · Veritabanı indeksleme · Veri madenciliği · Metadata (Üst veri) · Ana veri (Master data)
Yapay zekâ
Otomatikleştirilmiş muhakeme · Bilgisayarlı dilbilim · Bilgisayarlı görü · Evrimsel hesaplama · Uzman sistemler · Makine öğrenimi · Doğal dil işleme · Robotik
Bilgisayar grafikleri
Görselleştirme · Bilgisayar animasyonu · Görüntü işleme
İnsan-bilgisayar etkileşimi
Bilgisayar erişilebilirliği · Kullanıcı arayüzleri · Giyilebilir hesaplama · Yaygın bilişim · Sanal gerçeklik
Bilimsel hesaplama
Yapay yaşam · Biyoenformatik · Bilişsel bilim · Bilgisayarlı kimya · Hesaplamalı nörobilim · Hesaplamalı fizik · Sayısal algoritmalar · Sembolik matematik
Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir.
Otorite kontrolü Bunu Vikiveri'de düzenleyin
  • GND: 4308224-5

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Nørmark, Kurt. Overview of the four main programming paradigms 24 Ocak 2018 tarihinde Wayback Machine sitesinde arşivlendi.. Aalborg University, 9 May 2011. Retrieved 22 September 2012.
  2. ^ "Characteristics of declarative programming languages". cgi.csc.liv.ac.uk. 11 Ekim 1999. 28 Ocak 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Şubat 2014. 
  3. ^ "CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP" (PDF). University of Georgia. 23 Ağustos 2010. 7 Mart 2012 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 20 Kasım 2013. 
  4. ^ "Programming Paradigms: What Every Programmer Should Know" (PDF). info.ucl.ac.be. 12 Mayıs 2009. 10 Temmuz 2009 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 27 Ocak 2014. 
  5. ^ Concepts, Techniques, and Models of Computer Programming. MIT Press. 2004. ISBN 978-0-262-22069-9. 14 Nisan 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Ekim 2021. 
  6. ^ Frank Rubin (March 1987). "'GOTO Considered Harmful' Considered Harmful" (PDF). Communications of the ACM. 30 (3): 195-196. doi:10.1145/214748.315722. 20 Mart 2009 tarihinde kaynağından (PDF) arşivlendi. 
"https://tr.wikipedia.org/w/index.php?title=Programlama_paradigması&oldid=34530707" sayfasından alınmıştır
Kategori:
  • Programlama paradigmaları
Gizli kategoriler:
  • Webarşiv şablonu wayback bağlantıları
  • GND tanımlayıcısı olan Vikipedi maddeleri
  • Sayfa en son 18.51, 23 Aralık 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Programlama paradigması
Konu ekle