Programlama Dilleri

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/148

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

149 Terms

1
New cards

Programlama dilleri kavramlarını öğrenmenin temel nedenleri nelerdir?

Fikirleri ifade etme yeteneğini artırmak, uygun dilleri seçebilme bilincini geliştirmek, yeni diller öğrenebilme yeteneğini geliştirmek, implementasyonun (gerçekleştirim) önemini daha iyi anlamak ve bilinen programlama dillerini daha iyi kullanmaktır.

2
New cards

Programlama dilleri, programcının "fikirleri ifade etme yeteneğini" nasıl sınırlar?

Düşüncelerimizin, onları ilettiğimiz dilin ifade gücü tarafından etkilendiğine inanılmaktadır. Programcılar, yazılım geliştirdikleri dilin kontrol yapıları, veri yapıları ve soyutlamaları gibi limitleriyle kısıtlanırlar. Değişik yapıdaki birçok programlama dili özelliğinin bilinmesi bu limitlerin azaltılmasını sağlar ve programcıların yazılım geliştirme ufuklarını artırır.

3
New cards

Bir dilde olmayan bir özellik gerektiğinde (simülasyon) nasıl bir yol izlenir?

Gerekli yapılar veya kavramlar, mecburi tutulan dilde simüle edilebilir (benzetim veya taklit). Örneğin, Pascal dilinde FORTRAN 90'daki 'INDEX' (substring arama) fonksiyonu yoktur, ancak programcı bu işlevi yapan bir altprogram yazarak çözüme ulaşabilir. Ancak, o özelliği simüle eden dil, direk barındıran dile göre daha hantal ve karmaşıktır.

4
New cards

Dil kavramlarını bilmek, yeni dilleri öğrenmeyi nasıl kolaylaştırır?

Programlama dillerinin genel kavramlarını iyi bilen bir programcı, yeni öğreneceği dilde bu kavramların nasıl birleştirildiğini ve kullanıldığını daha rahat anlar. Örneğin, "veri soyutlama" (data abstraction) kavramını bilen bir programcı, Java'da soyutlanmış veri tiplerinin nasıl oluşturulduğunu daha çabuk kavrayacaktır veya nesne tabanlı programlama kavramını bilen biri C++ veya Java'yı daha çabuk anlayacaktır.

5
New cards

İmplementasyon (Gerçekleştirim) detaylarını bilmek programcıya ne gibi avantajlar sağlar?

İmplementasyon detaylarını bilmek program bug (hatalarını) bulup düzeltmeye yardımcı olur. Ayrıca, bilgisayarın değişik dil yapılarını nasıl çalıştırdığını kafada canlandırmaya yardımcı olur ve aynı işi yapan farklı yapılar varsa hangisinin daha verimli olduğunu anlamayı sağlar.

6
New cards

Programlama dilleri seviyelerine göre nasıl sınıflandırılır?

Seviye, bir programlama dilinin insan algısına olan yakınlığıdır. Sınıflandırma şu şekildedir: 1. Makine Dili (1 ve 0'lar), 2. Düşük Seviyeli (Assembly), 3. Orta Seviye (C, C++), 4. Yüksek Seviye (Pascal, Fortran, Cobol), 5. Çok Yüksek Seviye (Java, SQL, C#).

7
New cards

Başlıca programlama alanları ve bu alanlardaki dil örnekleri nelerdir?

Bilimsel ve mühendislik (Fortran, C, Pascal), Mesleki uygulamalar (COBOL), Yapay zeka (LISP, Prolog, Python), Sistem programlama (C, Assembler) ve Web Yazılımı (HTML, Javascript, PHP, Java, C#).

8
New cards

Programlama dili değerlendirme kriterleri nelerdir?

Dört ana kriter vardır: Okunabilirlik (Readability), Yazılabilirlik (Writability), Güvenilirlik (Reliability) ve Maliyet (Cost).

9
New cards

Okunabilirlik (Readability) kriterini etkileyen temel faktörler nelerdir?

Dört temel faktör vardır: 1. Genel basitlik (Simplicity), 2. Ortogonalite (Orthogonality), 3. Veri tipleri (Data Types), 4. Sözdizimi tasarımı (Syntax Design).

10
New cards

Okunabilirlik bağlamında "Özellik Çokluğu" (Feature Multiplicity) nedir?

Aynı işlemi yapabilen birden fazla özelliğin dilde bulunmasıdır. Örneğin, Java'da bir değişkeni artırmak için count = count + 1, count += 1, count++ ve ++count gibi dört farklı yolun olmasıdır.

11
New cards

Okunabilirlik bağlamında "Ortogonalite" (Orthogonality) nedir?

Ortogonalite, "A'yı değiştirmek B'yi değiştirmez" anlamına gelen bir özelliktir. Programlama dilinde, nispeten küçük bir ilkel yapı kümesinin, dilin kontrol ve veri yapılarını oluşturmak için az sayıda yolla birleştirilebilmesi anlamına gelir.

12
New cards

Veri tipleri (Data Types) okunabilirliği nasıl etkiler?

Yeterli önceden tanımlanmış veri türlerinin olmaması okunabilirliği düşürür. Örneğin, C dilinde Boolean veri tipi yoktur, bu nedenle timeout = 0 gibi bir kullanım gerekir. Java gibi dillerde ise Boolean tipi bulunduğundan timeout = false kullanımı daha okunabilirdir.

13
New cards

Sözdizimi (Syntax) tasarımı okunabilirliği nasıl etkiler?

Sözdizimi tasarımı okunabilirlik için en önemli etkenlerden biridir. Örneğin, değişken isimlerinin kısa tutulması (örn. Fortran 77'de 6 karakter sınırı) okunabilirliği azaltır. Ayrıca for, end gibi özel kelimeler (keywords) değişken ismi olarak tanımlanırsa (örn. Fortran 95) okunabilirlik etkilenir.

14
New cards

C dilindeki 'static' kelimesi, okunabilirlik açısından neden bir sorundur?

Çünkü 'static' kelimesi, kullanıldığı bağlama göre farklı anlamlara gelir (anlam ve biçim problemi). Bir fonksiyon içinde kullanılırsa, değişkenin derleme zamanında (compile time) oluşturulacağını belirtir. Fonksiyonların dışında kullanılırsa, değişkenin sadece tanımlandığı dosyada görünür (erişilebilir) olacağını belirtir.

15
New cards

Yazılabilirlik (Writability) kriterini etkileyen faktörler nelerdir?

Üç temel faktör vardır: 1. Basitlik ve Ortogonalite (Az sayıda yapı ve kural), 2. Soyutlama Desteği (Support for Abstraction - ayrıntıların göz ardı edilmesi), 3. İfade (Expressivity - Operatör gücü ve önceden tanımlanmış işlevler).

16
New cards

Programlama dillerinde kaç tür soyutlama (abstraction) sınıfı vardır?

İki çeşit soyutlama sınıfı vardır: Proses (işlem) soyutlama ve Veri soyutlama. Proses soyutlamaya en iyi örnek altprogramlardır (örneğin bir sıralama fonksiyonu). Veri soyutlama ise (örneğin Java'da bir binary tree sınıfı oluşturmak) veriyi ve üzerindeki işlemleri kapsüller. Bu iki süreç, nesneye dayalı programlamada (OOP) "sınıf" yapısında birleşir.

17
New cards

Yazılabilirlik kriterlerinden "İfade" (Expressivity) ne demektir?

İşlemleri belirtmenin nispeten elverişli yollarının kullanılmasıdır; bu, yazılabilirliği artırır. Örneğin, modern dillerin for ifadesini içermesi veya C dilindeki count++ ifadesinin count = count + 1 ifadesinden daha açıklayıcı ve kısa olması.

18
New cards

Güvenilirlik (Reliability) kriteri için "Tip Kontrolü" (Type Checking) neden önemlidir?

Tip kontrolü, programın tip hatalarını test etmesidir. Güvenilirlik için önemlidir. Derleme zamanında (compile time) yapılan tip kontrolü, çalışma zamanı (run time) kontrolüne göre çok daha az maliyetlidir ve hataların erken fark edilip düzeltilmesini sağlayarak güvenilirliği artırır.

19
New cards

Güvenilirlik kriterlerinden "İstisna İşleme" (Exception Handling) nedir?

Programın yürütme zamanı (run-time) hatalarını yakalama ve bu hatalara karşı düzeltici önlemler alma yeteneğidir. Ada, C++, Java ve C# gibi diller bu özelliği içerir.

20
New cards

Güvenilirlik kriterlerinden "Takma Ad" (Aliasing) nedir?

Aynı bellek konumu (hafıza hücresi) için iki veya daha fazla farklı referans alma yönteminin veya ismin varlığıdır. Programlama dilleri için tehlikeli bir özellik olarak kabul edilir.

21
New cards

Bir programlama dilinin toplam "Maliyet" (Cost) kriterini neler oluşturur?

Programcıları eğitme maliyeti, program yazma maliyeti, programları derleme maliyeti, programları çalıştırma maliyeti, dil implementasyon sistemi (örn. ücretsiz derleyici olup olmaması), güvenilirlik (zayıf güvenilirlik yüksek maliyete yol açar) ve programların bakım maliyetidir.

22
New cards

Maliyetler içinde en yüksek orana sahip olan ve en önemli parametre nedir?

Programların bakım (maintaining) maliyeti. Tüm maliyet içinde en yüksek oranda olan maliyettir ve günümüzde bir yazılım projesinde maliyeti etkileyen en önemli parametre haline gelmiştir.

23
New cards

Diğer değerlendirme kriterlerinden "Taşınabilirlik" (Portability) nedir?

Programların bir uygulamadan veya bir implementasyondan diğerine taşınabilme kolaylığıdır. Bu, dilin standartlaşma derecesi ile alakalıdır.

24
New cards

Von Neumann mimarisinin temel özellikleri nelerdir?

Veriler ve programlar aynı bellekte (Memory) saklanır. Bellek CPU'dan ayrıdır. Komutlar (Instruction) ve veriler bellekten CPU'ya aktarılır.

25
New cards

Von Neumann mimarisi, programlama dillerini nasıl etkilemiştir?

Değişkenler (variables) bellekteki hücreler olarak düşünülür. Atama ifadeleri, bellekten CPU'ya ve geri aktarımı temel alır. İterasyon (Iteration), bu mimaride verimli bir kontrol yapısıdır.

26
New cards

Von Neumann mimarisindeki "Fetch-Execute-Cycle" (Getir-Yürüt Döngüsü) nasıl çalışır?

Program sayacı (Program Counter) başlatılır. Döngü içinde: Sayacın işaret ettiği komut bellekten getirilir (fetch), sayaç bir sonraki komut için artırılır (increment), komut çözülür (decode) ve komut çalıştırılır (execute).

27
New cards

Programlama metodolojileri zamanla nasıl bir evrim geçirmiştir?

1950'ler/60'lar başında odak makine verimliliğiydi. 1960'ların sonunda insan verimliliği önemli hale geldi, bu da yapısal programlama ve yukarıdan aşağıya (top-down) tasarım gibi metodolojilere yol açtı. 1970'lerin sonunda veri soyutlama (data abstraction), 1980'lerin ortasında ise nesne yönelimli programlama (Veri soyutlama + kalıtım + polimorfizm) öne çıktı.

28
New cards

Başlıca programlama dili kategorileri (paradigmaları) nelerdir?

  1. Imperative (Emir Esaslı) Programlama (C, Java, C#), 2. Fonksiyonel (Functional) Programlama (LISP, Haskell, ML), 3. Mantık (Logic) Programlama (Prolog), 4. Biçimlendirme / programlama hibrit (JSTL, XSLT).

29
New cards

Imperative (Emir Esaslı) Programlama paradigması nedir?

Merkezi özellikleri değişkenler, atama ifadeleri ve iterasyon (döngü) olan programlama yaklaşımıdır. C, FORTRAN, Pascal, COBOL gibi birçok dil tarafından desteklenen, yaygın olarak kullanılan ilk dil grubudur.

30
New cards

Nesneye Yönelik Paradigma nedir?

Nesnelerin sınıflandırılması esasına dayanan ve birbirini etkileyen nesnelerden oluşan bir yaklaşımdır. Nesne; verileri, fonksiyonları ve prosedürleri tek bir yapıda tutar. İşlemler, nesnelerin gönderip aldığı mesajlarla gerçekleşir. Örnekler: Simula, Smalltalk, C++, Java ve C#.

31
New cards

Fonksiyonel (Functional) Paradigma nedir?

Bilgisayara bir işlemi nasıl yapacağının bildirildiği, temelini veriler ve sonucu elde etmek için veriye uygulanacak fonksiyonel dönüşümlerin oluşturduğu bir paradigmadır. Sadece fonksiyonlar üzerine kuruludur; fonksiyonlar başka fonksiyonları çağırır ya da başka fonksiyonların parametresi olur. İlk fonksiyonel dil Lisp'dir. Haskell saf fonksiyonel bir dildir; değişken ve atama işlemlerini desteklemez.

32
New cards

Mantık (Logic) Programlama paradigması nedir?

Programlamanın, bir işin nasıl yapılacağının değil, ne yapılması istendiğinin belirtilmesi olarak görüldüğü bir yaklaşımdır. Bu diller kural tabanlıdır ve belirli bir koşulun varlığını kontrol ederek çalışırlar. Imperative dillerin aksine, ayrıntılı algoritma tanımı ve komut sırası yoktur. En tanınmış örnek Prolog'dur.

33
New cards

Dil tasarımında "Güvenilirlik vs. Yürütme Maliyeti" (Reliability vs. Cost) arasındaki ödünleşme (trade-off) nedir?

Güvenilirliği artırmak genellikle yürütme maliyetini artırır. Örneğin, Java'nın dizi öğelerine yapılan tüm referansları indeksleme için kontrol etmesi (güvenilirlik), yürütme maliyetlerinin artmasına neden olur.

34
New cards

Dil tasarımında "Okunabilirlik vs. Yazılabilirlik" (Readability vs. Writability) arasındaki ödünleşme nedir?

Bazen yazılabilirliği artıran özellikler okunabilirliği düşürür. Örneğin, APL'nin güçlü operatörleri, karmaşık hesaplamaların kompakt (yazılabilirlik) ancak okunması zor (düşük okunabilirlik) programlar oluşturmasına olanak tanır.

35
New cards

Dil tasarımında "Yazılabilirlik (Esneklik) vs. Güvenilirlik" (Writability vs. Reliability) arasındaki ödünleşme nedir?

Esnekliği (yazılabilirliği) artıran özellikler güvenilirliği azaltabilir. Örneğin, C++ işaretçileri (pointers) güçlü ve çok esnektir (yazılabilirlik) ancak güvenilmezdir (reliability).

36
New cards

Programlama dilleri için temel uygulama metotları nelerdir?

Üç ana metot vardır: 1. Derleme (Compilation), 2. Yorumlama (Interpretation), 3. Hibrit Uygulama Sistemleri (Hybrid).

37
New cards

Derleme (Compilation) süreci nedir?

Üst düzey programı (kaynak dil) doğrudan makine koduna (makine dili) çevirme işlemidir. Çeviri yavaştır ancak uygulama (yürütme) hızlıdır. Temel aşamaları: Sözcük analizi (lexical analysis), Sözdizimi analizi (syntax analysis), Anlambilim analizi (semantics analysis) ve Kod üretimidir (code generation).

38
New cards

Yorumlama (Interpretation) süreci nedir?

Kaynak kodun, yorumlayıcı (interpreter) olarak bilinen başka bir program tarafından yorumlanmasıdır. Yürütme hızı derlenmiş programlardan 10 ila 100 kat daha yavaştır ve genellikle daha fazla alan gerektirir.

39
New cards

Hibrit Uygulama Sistemleri nedir?

Derleyiciler ve yorumlayıcılar arasında bir uzlaşmadır. Üst düzey dil programı, kolay yorumlanabilen bir ara dile (intermediate language) çevrilir. Yorumlamadan daha hızlıdır. Java'nın ilk uygulamaları (ara kod/bayt kodu ve JVM) bu yaklaşıma örnektir.

40
New cards

Von Neumann Darboğazı (Bottleneck) nedir?

Bir bilgisayarın belleği ile işlemcisi arasındaki bağlantı hızı, bilgisayarın toplam hızını belirlemesidir. Program komutları genellikle bu bağlantı hızından (veri aktarım hızı) daha hızlı yürütülebilir, bu da bağlantının bir darboğaz olmasına yol açar. Bu durum bilgisayarların hızındaki birincil sınırlayıcı faktördür.

41
New cards

JIT (Just-in-Time) Uygulama Sistemleri nasıl çalışır?

Başlangıçta programları bir ara dile çevirirler. Daha sonra, alt programların ara dilini, o alt program çağrıldığında makine koduna derler. Bu makine kodu sürümü sonraki çağrılar için saklanır. .NET dilleri ve modern Java programları JIT sistemleri ile uygulanır. Özünde gecikmeli derleyicilerdir.

42
New cards

Ön işlemciler (Preprocessors) nedir ve ne işe yarar?

Bir önişlemci, program derlenmeden hemen önce programı işleyerek gömülü makroları (komutları) genişleten bir araçtır. Bu makrolar genellikle başka bir dosyadaki kodun ekleneceğini belirtmek için kullanılır. C ön işlemcisindeki #include ve #define buna örnektir.

43
New cards

IDE (Tümleşik Geliştirme Ortamı) nedir?

Programcıların hızlı ve rahat yazılım geliştirmesini amaçlayan, geliştirme sürecini organize edebilen birçok aracı içinde barındıran bir yazılım türüdür. Genellikle sözdizimi renklendirmesi yapabilen bir kod editörü, tümleşik bir derleyici, yorumlayıcı ve hata ayıklayıcı ve otomasyon için "inşa araçları" (build tools) içer

44
New cards
Alan Turing ve Alonzo Church'ün hesaplama teorisine temel katkıları nelerdir?
Alan Turing, Turing makinesi denilen algoritma tanımı ile modern bilgisayarların kavramsal temelini atmıştır. Alonzo Church ise Lambda kalkülüs (λ-calculus) adı verilen ve soyutlama ile işlev çağırmaya dayanan evrensel bir hesaplama modeli ortaya koymuştur.
45
New cards
Church-Turing Hipotezi nedir?
Bir algoritmayla tarif edilebilecek tüm hesaplamaların; dört işlem, projeksiyon, eklemleme ve tarama operasyonları ile tarif edilebilecek hesaplamalardan ibaret olduğunu ifade eden tezdir.
46
New cards
Turing Bütünlüğü (Turing Completeness) ne anlama gelir?
Bir sistem basit Turing makinası emirleri ile tanımlanabiliyorsa, bu işlemin “Turing Bütünlüğü” içerdiği anlamına gelir.
47
New cards
Lambda kalkülüs (λ-calculus) nedir?
Alonzo Church tarafından 1930'larda geliştirilen, herhangi bir tek bantlı Turing makinesini simüle edebilen evrensel bir hesaplama modelidir. Soyutlama ve işlev çağırmaya dayanmaktadır.
48
New cards
Zuse’s Plankalkül nedir ve ne zaman tasarlanmıştır?
Bir bilgisayar için tasarlanmış ilk yüksek seviye programlama dilidir. 1945'te (Konrad Zuse tarafından) tasarlanmıştır.
49
New cards
Plankalkül dilinin temel özellikleri nelerdir?
En basit veri türü tek bittir (S0). C'deki 'struct'lara benzer 'arrays' (diziler) ve 'records' (kayıtlar) tipleri vardı. Yalnızca yerel değişkenleri, değere göre çağırmayı (call by value) ve koşullu ifadeleri destekler. Özyinelemeyi (recursion) ve 'goto' komutunu desteklemez.
50
New cards
Makine kodunun zorlukları (dezavantajları) nelerdir?
Yorumlamalı olması, zayıf okunabilirlik, zayıf değiştirilebilirlik, sıkıcı ve zor ifade kodlaması, indeksleme veya kayan nokta desteğinin olmaması.
51
New cards
Pseudocodes - Short Code nedir?
1949'da Mauchly tarafından BINAC bilgisayarlar için geliştirilen bir pseudocode sistemidir. Yorumlama işlemi nedeniyle makine koduna göre 50 kat yavaş çalışırdı ve ifadeler soldan sağa kodlanırdı.
52
New cards
Pseudocodes - Speedcoding nedir?
1954'te IBM 701 için Backus tarafından geliştirilen bir pseudocode sistemidir. Doğal dil ifadeleri, aritmetik ve matematik fonksiyonlar için pseudo kodlar, koşullu/koşulsuz dallanma ve dizi erişimi için otomatik artış kayıtları içerirdi. Yorumlayıcı kullandığı için yavaştı.
53
New cards
FORTRAN nedir ve kim tarafından geliştirilmiştir?
FORmula TRANslating System (Formül Çevirme Sistemi) anlamına gelir. 1954'te (Fortran 0) John Backus ve ekibi tarafından geliştirilmeye başlanmıştır. İlk uygulanan sürümü (Fortran I) 1957'de yayınlanmıştır.
54
New cards
Fortran I geliştirilmesinin temel amacı neydi?
Dizin kayıtları ve kayan nokta donanımı olan yeni IBM 704 için tasarlanmıştır. Yorumlama işlemi maliyetli olduğu için derlenmiş programlama dilleri fikrine yol açmış ve makine kodu gibi hızlı çalışan bir yapı hedeflenmiştir.
55
New cards
Fortran I'in temel özellikleri nelerdir?
İsimler altı karaktere kadar olabilirdi. `Do` ifadesi (iterative loop), biçimlendirilmiş G/Ç (FORMAT, READ, PRINT vb.), kullanıcı tanımlı alt programlar ve üç dala sahip aritmetik `IF` ifadesi içerirdi. Çalışma sırasında veri tipleme ifadeleri ve bellek tahsisi yoktu.
56
New cards
Fortran II'nin (1958) getirdiği en önemli yenilik nedir?
Bağımsız derleme (independent compilation). Bu özellik sayesinde, alt programların ayrı ayrı derlenebilmesi sağlandı. Küçük bir değişiklik için tüm programı yeniden derlemek yerine sadece ilgili alt programın derlenmesi yeterli hale geldi.
57
New cards
Fortran IV'ün (1960-62) getirdiği en önemli değişiklikler nelerdir?
Mantıksal `if` ifadesi ve fonksiyonlara başka fonksiyonların parametre olarak aktarılabilmesiydi. Ayrıca 'explicit type' bildirimleri eklendi.
58
New cards
Fortran 77'nin (1978) getirdiği başlıca yenilikler nelerdir?
Karakter dizisi işleme (string), mantıksal döngü kontrol ifadesi ve `IF-THEN-ELSE` ifadesi.
59
New cards
Fortran 90'ın (1991) getirdiği başlıca yenilikler nelerdir?
Modüller, dinamik diziler, işaretçiler (pointer), özyineleme (recursion), `CASE` ifadesi ve parametre tipi kontrolü.
60
New cards
Fortran hangi alanlarda kullanılmıştır?
Yıllarca bilimsel hesaplamanın ana dili olmuştur. Astronomi, iklim modelleme, hesaplamalı kimya, hesaplamalı akışkanlar dinamiği, hesaplamalı fizik, veri analizi, sayısal kütüphaneler (LAPACK vb.), optimizasyon ve hava tahmini gibi alanlarda kullanılmıştır.
61
New cards
Lisp nedir ve kim tarafından ne amaçla geliştirilmiştir?
LISt Processing language (Liste İşleme Dili) anlamına gelir. 1958 yılında MIT’de John McCarthy tarafından Yapay Zeka (AI) araştırmaları için geliştirilmiştir.
62
New cards
Lisp'in temel özellikleri nelerdir?
Diziler yerine listelerdeki verileri işler. Sayısal yerine sembolik hesaplamaya odaklanır. Yalnızca iki veri türü vardır: atomlar ve listeler. Sözdizimi lambda hesabına (parantez kullanımına) dayanır. Öncü fonksiyonel programlama dilidir; özyineleme ve koşullu ifadelerle kontrol sağlar.
63
New cards
Lisp'in yapay zeka uygulamalarında başarılı olmasının nedeni nedir?
Olağanüstü esneklik, ifade gücü ve kodun aynı zamanda veri olarak da kullanılabilmesi özelliği LISP’i yapay zeka uygulamalarında rakipsiz hale getirmiştir.
64
New cards
Scheme (1970 ortaları) nedir?
Lisp programlama dilleri ailesinin minimalist bir lehçesidir. Guy L. Steele ve Gerald Jay Sussman tarafından MIT’de geliştirilmiştir. Basit sözdizimi ve küçük boyutu nedeniyle eğitim uygulamaları için idealdir. Sheme dilinde `(+ 3 5)` gibi prefix ifadeler kullanılır.
65
New cards
Common Lisp nedir?
Lisp'in çeşitli lehçelerinin özelliklerini tek bir dilde birleştirme çabasıdır. Prosedürel, fonksiyonel ve nesneye yönelik programlama paradigmalarının bir kombinasyonunu destekler.
66
New cards
ML (MetaLanguage) nedir?
1980'lerde Edinburgh Üniversitesi'nde Robin Milner tarafından bir program doğrulama sistemi için bir metal dil olarak tasarlanmıştır. Emir esaslı programlamayı da destekler.
67
New cards
Haskell (1987) nedir?
Genel amaçlı ve *tamamen fonksiyonel* bir programlama dilidir. Adını mantıkçı Haskell Curry'den almıştır. Tip sınıfları gibi gelişmiş özelliklere öncülük etmiştir ve "lazy evaluation" (tembel değerlendirme) kullanır.
68
New cards
Lazy Evaluation (Tembel Değerlendirme) nedir?
Değeri gerekmedikçe hiçbir ifadenin değerlendirilmediği anlamına gelen bir tekniktir. Haskell bu tekniği kullanır.
69
New cards
ALGOL 60 nedir ve temel amacı neydi?
ALGOrithmic Language (Algoritmik Dil) anlamına gelir. 1958'de (ALGOL 58 olarak) Avrupalı ve Amerikalı bir komisyon tarafından, makineden bağımsız, taşınabilir ve algoritmaları açıklamak için evrensel bir dil oluşturma amacıyla tasarlanmıştır.
70
New cards
ALGOL 60'ın (1960) getirdiği yeni özellikler nelerdir?
Blok yapısı (Block structure - local scope), iki parametreli taşıma metodu (in, out), alt program özyinelemesi (recursion) ve yığın tabanlı dinamik diziler (Stack-Dynamic Arrays).
71
New cards
ALGOL 60'ın başarıları nelerdir?
20 yılı aşkın süre algoritmaları yayınlamanın standart yolu olmuştur, sonraki tüm emir esaslı dillere temel oluşturmuştur, ilk makineden bağımsız dildir ve sözdizimi resmi olarak (BNF) tanımlanan ilk dildir.
72
New cards
ALGOL 60 neden yaygın olarak kullanılmadı?
G/Ç (I/O) ve karakter seti eksikliği programları taşınabilir yapmadı, çok esnek olması uygulamasını zorlaştırdı, BNF kullanımı karmaşık göründü ve en önemlisi IBM'den (Fortran'ı destekleyen) destek alamadı.
73
New cards
COBOL nedir ve hangi amaçla geliştirilmiştir?
COmmon Business Oriented Language (İşletmeye Yönelik Ortak Dil). İngilizce cümle yapılarını kullanan ve özellikle büyük miktarda bilgi G-Ç (Giriş/Çıkış) yapılan işletme (iş) uygulamaları için geliştirilmiştir.
74
New cards
COBOL tasarımının temel hedefleri nelerdir?
Basit bir İngilizce gibi görünmesi, kullanımı kolay olması (daha az güçlü olsa bile), bilgisayar kullanıcı tabanını genişletmesi ve mevcut derleyici sorunlarından etkilenmemesi hedeflenmiştir.
75
New cards
COBOL'un (1959) getirdiği teknik katkılar nelerdir?
Üst düzey bir dilde ilk makro kullanımı (DEFINE), hiyerarşik veri yapıları (kayıtlar - records), iç içe geçmiş seçim ifadeleri, uzun adlar (30 karaktere kadar) ve ayrı bir veri bölümü (data division).
76
New cards
Basic (1964) nedir ve tasarım hedefleri nelerdir?
Beginner’s All-purpose Symbolic Instruction Code. Dartmouth'ta Kemeny & Kurtz tarafından fen bilgisi olmayan öğrenciler için öğrenmesi ve kullanması kolay, "hoş ve arkadaş canlısı" olması amacıyla tasarlanmıştır. Zaman paylaşımı (time-sharing) ile yaygın olarak kullanılan ilk dildir.
77
New cards
PL/I (1965) nedir ve temel amacı neydi?
IBM ve SHARE tarafından hem bilimsel (Fortran'ın alanı) hem de işletme (COBOL'un alanı) problemlerine çözüm sağlamak için tasarlanmış bir dildir. ALGOL 60, Fortran IV ve COBOL 60'ın özelliklerini birleştirmeyi amaçlamıştır.
78
New cards
PL/I'nin programlama dillerine katkıları nelerdir?
Eşzamanlı olarak yürütülen alt programlar (concurrency), 23 farklı türde istisna işleme (exception handling), alt programların isteğe bağlı özyinelemeli kullanımı ve işaretçilerin (pointer) bir veri türü olarak dahil edilmesi.
79
New cards
APL ve SNOBOL (1960'lar) dillerinin ortak özelliği nedir?
Dinamik yazım (dynamic typing) ve dinamik depolama tahsisi (dynamic storage allocation) ile karakterize edilen iki erken dinamik dildir. Değişkenler türsüzdür; bir değer atandığında tür edinirler.
80
New cards
SNOBOL (1964) hangi amaçla üretilmiştir ve hangi dilleri etkilemiştir?
Bell Labs'da özel olarak metin işleme (text processing) amacıyla üretilmiştir. String pattern eşleştirmede güçlü operatörlere sahiptir. awk, icon ve perl gibi dilleri etkilemiştir.
81
New cards
SIMULA 67 (1964) nedir ve en önemli katkıları nelerdir?
Norveç'te simülasyon için tasarlanmış, ALGOL 60 tabanlı bir dildir. Yaygın kullanılmasa da iki ana katkısı vardır: 1. Coroutines (daha önce durdurulduğu yerden yeniden başlayan alt programlar) ve 2. Sınıflar, nesneler ve miras (OOP için temel olan veri soyutlaması).
82
New cards
ALGOL 68 (1968) nedir ve neden yaygınlaşmamıştır?
ALGOL 60'ın devamı niteliğinde, ortogonalite kavramına dayanan bir dildir. Kullanıcı tanımlı veri tiplerini ve 'flex' adı verilen dinamik dizileri destekler. Ancak öğrenilmesi çok zor bir gramer (van Wijngaarden grameri) yapısına sahip olduğu ve sadece bilimsel uygulamaları hedeflediği için az kullanılmıştır.
83
New cards
Pascal (1971) kim tarafından, ne amaçla geliştirilmiştir?
Niklaus Wirth (eski bir ALGOL 68 komitesi üyesi) tarafından, yapısal programlamayı öğretmek amacıyla tasarlanmıştır. Basit, okunabilir ve güvenli (safety) bir dildir. Uzun yıllar programlama öğretiminde en yaygın kullanılan dil olmuştur.
84
New cards
C (1972) kim tarafından, ne amaçla geliştirilmiştir?
Bell Labs'de Dennis Ritchie ve Ken Thompson tarafından sistem programlama (özellikle UNIX işletim sistemi) için tasarlanmıştır. BCLP, B ve ALGOL 68 dillerinden etkilenmiştir.
85
New cards
C dilinin temel özellikleri nelerdir?
Sistem programlama için tasarlanmıştır, güçlü bir operatör setine sahiptir ancak tip kontrolü yetersizdir. Başlangıçta UNIX ile yayılmış ve birçok uygulama alanında kullanılmıştır. 1989'da ANSI standardı (C89) oluşturulmuştur.
86
New cards
Prolog (1972) nedir ve nasıl çalışır?
PROgramming LOGic (Programlama Mantığı). Biçimsel mantığa (formal logic) dayalı, prosedürel olmayan bir dildir. Bir nesneler kümesi ve bu nesnelerle ilişkili kurallar kümesinden oluşur. Verilen sorguların doğruluğunu anlamak için bir çıkarım (resolution) süreci kullanır. VTYS ve Yapay Zeka alanlarında kullanılır.
87
New cards
Ada (1983) hangi amaçla ve kimin adına geliştirilmiştir?
ABD Savunma Bakanlığı (DoD) tarafından, özellikle gömülü sistemlerin (embedded systems) programlanması için geliştirilmiştir. Adını, dünyanın ilk programcısı olarak kabul edilen matematikçi Augusta Ada Byron'dan almıştır.
88
New cards
Ada dilinin temel katkıları nelerdir?
Paketler (veri soyutlama desteği), ayrıntılı istisna işleme (exception handling), program birimlerinin 'generic' olabilmesi (tekrar kullanabilirlik) ve görevlendirme (tasking) modeli aracılığıyla eşzamanlılık (concurrency).
89
New cards
Ada 95'in getirdiği yenilikler nelerdir?
Type türetme yoluyla OOP desteği (polymorphism, inheritance, dinamik bağlama), paylaşılan veriler için daha iyi kontrol mekanizmaları ve yeni eşzamanlılık özellikleri.
90
New cards
Smalltalk (1970'ler) nedir ve önemi nedir?
Xerox PARC'ta Alan Kay ve Adele Goldberg tarafından geliştirilen, Nesneye Yönelik Programlamanın (OOP) ilk tam uygulaması olan dildir. Veri soyutlama, kalıtım ve dinamik bağlama özelliklerini tam olarak destekler. Aynı zamanda grafik kullanıcı arayüzü (GUI) tasarımına öncülük etmiştir.
91
New cards
C++ (1980) nedir ve kim tarafından geliştirilmiştir?
Bjarne Stroustrup tarafından Bell Laboratuvarları'nda, C ve SIMULA 67 dillerinden geliştirilmiştir. Hem prosedürel hem de nesneye yönelik (OOP) programlamayı destekler.
92
New cards
C++ dilinin temel özellikleri (ve dezavantajları) nelerdir?
Çoklu miras (multiple inheritance), kuvvetli tip ayrımı, dinamik bellek yönetimi, hazır şablonlar (templates) ve çok biçimlilik (polymorphism) özellikleri vardır. Dezavantajları ise büyük ve kompleks bir dil olması ve Ada/Java'dan daha az güvenli olmasıdır.
93
New cards
Objective-C nedir?
Brad Cox ve Tom Love tarafından 1980'lerde geliştirilen, C programlama diline Smalltalk tarzı mesajlaşma ekleyen nesne yönelimli bir dildir. Swift'in 2014'te çıkışına kadar Apple (macOS, iOS) platformlarının ana programlama diliydi.
94
New cards
Delphi (1995) nedir ve kim tarafından tasarlanmıştır?
Anders Hejlsberg (Turbo Pascal'ı da geliştiren) tarafından tasarlanmıştır. Pascal sözdizimini kullanan, emir esaslı ve OOP özelliklerini birleştiren hibrit bir dildir. Özellikle hızlı uygulama geliştirme (RAD) ve gelişmiş GUI özellikleri ile öne çıkmıştır.
95
New cards
Java (1990'lar) kim tarafından, ne amaçla geliştirilmiştir?
Sun Microsystems'de James Gosling öncülüğündeki bir ekip tarafından, gömülü elektronik cihazlar için geliştirilmiştir. C++'ın kompleks ve karışık yapısına alternatif olarak basit, taşınabilir ve nesneye yönelik bir dil amaçlanmıştır.
96
New cards
Java'nın C++'dan temel farkları nelerdir?
Java önemli ölçüde basitleştirilmiştir (struct, union, enum, işaretçi aritmetiği içermez). Yalnızca OOP'yi destekler. Referansları vardır ama işaretçileri (pointer) yoktur (bu güvenlik sağlar). Çoklu miras alma, operatör aşırı yüklemesi ve makro önişlemcisi özellikleri Java’da yoktur.
97
New cards
Java'nın temel teknik özellikleri nelerdir?
Temel yapısal bileşeni sınıftır (global veri/fonksiyon yoktur). Thread'ler ile eşzamanlılığı yönetmek kolaydır. Çöp toplama (Garbage collection) vardır. Hem derleme (ara koda) hem de yorumlama (JIT ile JVM üzerinde) işlemi vardır, bu da onu taşınabilir yapar.
98
New cards
Perl (1987) nedir ve kim tarafından geliştirilmiştir?
Practical Extraction and Report Language. Larry Wall tarafından, rapor işlemeyi kolaylaştırmak için genel amaçlı bir Unix betik dili olarak geliştirilmiştir. C, sed, AWK ve ksh gibi dillerden etkilenmiştir.
99
New cards
JavaScript (1995) nedir ve kim tarafından geliştirilmiştir?
Orijinal adı "LiveScript"tir. Netscape ve Sun Microsystems işbirliğiyle Brendan Eich tarafından yaratılmıştır. HTML ve CSS ile birlikte çekirdek web teknolojilerinden biridir. Tarayıcı içinde yorumlanır.
100
New cards
Node.js (2010) ve TypeScript (2012) nedir?
Node.js, JavaScript'in sunucu tarafında da kullanılmasını sağlayan bir platformdur. TypeScript, Microsoft tarafından geliştirilen ve yazılan kodu JavaScript koduna çeviren (derleyen) bir dildir.