• Bağış
  • Derleyiciler

    Tek atama dili (single assignment language)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde kullanılan bir programlama dili tipidir. Bu dilde herhangi bir değişkene yalnızca bir kere atama yapılabilir. Literatürde sasl (single assignment language, tek atamalı diller) olarak geçen dil bu tipe bir örnektir. Ayrıca C dilinden esinlenerek hazırlanmış ve C yazım kuralları ile uyumlu sacl (single assignment C language) dili de [...]

    Şadi Evren ŞEKER tarafından, 03/12/2009 tarihinde yazıldı. | Derleyiciler, Programlama Dilleri | A yorum var

    Hoare Mantığı ( Hoare Logic )

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, program doğrulama ( program corectness) için kullanılan mantığın ismidir. Basitçe bir dizi matematik kuralları ile bir programı modellemeye ve programın doğruluğunu ispatlamaya (veya yanlışlığını göstermeye) yarayan mantıktır. Bu mantığın bilgisayar dünyasında bir dil olarak modellenmesi sonucunda yine bir muntazamn dil (formal language) ortaya çıkar. Yani aslında bir programın [...]

    Şadi Evren ŞEKER tarafından, 10/09/2009 tarihinde yazıldı. | Derleyiciler, Programlama Dilleri | 1 yorum var

    Program doğruluğu ( Program correctness)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir programın istenen özellikleri yerine getirip getirememesine verilen isimdir. Buna göre şayet bir program, beklenen özellikleri tam ve eksiksiz yerine getiriyor, istenmeyen sonuçlar ortaya çıkmıyor ve program başladıktan sonra her durumda başarılı bir şekilde bitiyorsa bu programa tam doğru ( total correctness) ismi verilir. Durma probeleminden (halting problem) [...]

    Özyineli Geçiş Ağları (Reursive Transition Networks)

    Yazan : Şadi Evren ŞEKER Veri modellemede kullanılan bir ağ şeklidir. Esas itibariyle içerikten bağımsız dillerin (context free grammers) görsel gösterimi için kullanılabilirler. Ağların yapısı uzatılmış geçiş ağlarına (augmented transition network) benzemekle birlikte en büyük farkı ve isminin özyineli olmasının da sebebi ağın kendini tekrarlama özelliğidir. Daha basitçe bir içerikten bağımsız dil (CFG) S devamlısı [...]

    Şadi Evren ŞEKER tarafından, 29/06/2009 tarihinde yazıldı. | Automata (otomatlar, özdevinirler), Derleyiciler, Doğal Dil İşleme (NLP), Programlama Dilleri | A yorum var

    Turing Makinesi (Turing Machine)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin önemli bir kısmını oluşturan otomatlar (Automata) ve Algoritma Analizi (Algorithm analysis) çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar. Turing Makinesinin Tanımı Basitçe bir kafadan (head) ve bir de teyp bandından [...]

    Özyineli Sayılabilir Diller (Recursively Enumerable Languages)

    Yazan : Şadi Evren ŞEKER Muntazam dillerden (formal languages) birisi olan ve bu özelliği ile Mantık, Matematik ve Bilgisayar bilimlerinin çalışma alanına giren bir dil çeşididir. Sınıflandırma olarak Chomsky Hiyerarşisinde (Chomsky Hierarchy) 0. seviye olan (Type 0) bu dile uygun bütün diller birer düzenli ifade (regular expression) ile gösterilebilir. Muntazam dil (formal language) olması dolayısıyla [...]

    Chomsky Hiyerarşisi ( Chomsky Hierarchy )

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin özellikle dil alanında yapılan çalışmalarında muntazam dilleri (formal languages) tasnif etmek için kullanılan bir yapıdır. Literatürde Chomsky–Schützenberger hiyerarşisi olarak da geçmektedir. Bilindiği üzere ( muntazam diller (formal langauges) veya CFG yazısından da okunabileceği üzere) muntazam dillerin dört özelliği bulunur. Bunlar özellikle içerikten bağımsız dillerin (context free languages) da [...]

    Muntazam Diller (Formal Languages)

    Yazan : Şadi Evren ŞEKER Kısaca istisnası olmayan dillere muntazam dil diyebiliriz. Muntazam diller bilgisayar bilimlerinde, mantıkta ve dilbilim (linguistic) çalışmalarında kullanılan bir dil ailesidir. Dilde bulunan bütün öğeler ve dilin ulaşabileceği sınırlar belirli kurallar dahilinde tanımlanabiliyorsa bu dillere muntazam dil ismi verilir. Bu anlamda bilgisayar bilimlerinde bulunan bütün programlama dillerini bu ailede düşünmek mümkündür. [...]

    Şadi Evren ŞEKER tarafından, 25/06/2009 tarihinde yazıldı. | Automata (otomatlar, özdevinirler), Derleyiciler, Doğal Dil İşleme (NLP), Programlama Dilleri | 2 yorum var

    Değişken Tip Bağlama (Dynamic Type Binding, Müteharrik Şekil Bağı)

    Yazan : Şadi Evren ŞEKER İçerik: Sabit tip bağlamaları (Static Type Binding) Hareketli Tip Bağlamaları (dynamic type binding) Tip çıkarımı (Type inference, Şekil istidlali) Programlama dillerinde bir değişkenin tipinin belirlenmesi iki türlü olabilir. Birinci tip tanımlamada değişkenin tipi sabit olarak atanır ve bir kere belirlendikten sonra değişmez (static binding). İkinci tip tanımlamada ise değişkenin tipi [...]

    Şadi Evren ŞEKER tarafından, 24/05/2009 tarihinde yazıldı. | Derleyiciler, Programlama Dilleri | A yorum var

    İşlem Önceliği (Operator Precedence)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde önemli konulardan birisi olan programlama dillerinin işlemleri yapma sırasını belirler. Bir programlama dilinde işlem önceliği bir iki farklı unsura göre belirlenir. Öncelikle sonucu etkileyen ve işlemin matemetiksel önceliğine göre bir tercih yapılır. Örneğin çoğu C benzeri dillerde C dilindeki işlem öncelikleri kullanılır. İçerik 1. Soldan sağa öncelik (left [...]

    Şadi Evren ŞEKER tarafından, 20/05/2009 tarihinde yazıldı. | C/C++, Derleyiciler, JAVA, Programlama Dilleri | A yorum var

    Çok boyutlu diziler (MultiDimensional Arrays)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerindeki pek çok programlama dilinde birden fazla boyuttan oluşan dizilerin kullanılması mümkündür. Örneğin bir ders çizelgesini, haftalık yemek listesini yada kişilerin aylık satışlarından oluşan bir tabloyu ele alalım. Günlük hayatta pek çok yerde tablolar kullanılmaktadır. Aynı zamanda matrisler (masfuf, matrix) matematikte küçümsenmeyecek bir öneme sahiptir. İçerik 1. Çok boyutlu [...]

    Şadi Evren ŞEKER tarafından, 30/04/2009 tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri, veri yapıları | 1 yorum var

    Sayma (Enumeration, Tâdâd)

    Yazan: Şadi Evren ŞEKER Bilgisayar bilimlerinde alınabilecek alternatiflerin sayılması ve bu sayılan ihtimaller dışındaki ihtimallerin kabul edilmemesi durumudur ( ihtimallerin tâdât edilmesi) Örneğin programlama dillerinde bir değişkenin alabileceği değerleri tanımlayarak bu değişkene sadece bu değerlerden birisinin konulması sağlanabilir. Örneğin C dilinde yazılmış aşağıdaki kodu ele alalım: enum gunler{ pts,sal,car,per,cum,cts,paz }gun; main(){ gun=sal; printf(“\n%d”,gun); //2. gün [...]

    Şadi Evren ŞEKER tarafından, 14/04/2009 tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri, veri yapıları | A yorum var

    Atomluluk (Atomicity)

    Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek [...]

    Veri yapıları üzerinde fonksiyonlar

    Yazan : Şadi Evren ŞEKER Ardışık veri yapıları (consecutive data structures) üzerinde çalışan fonksiyonlar temel olarka 3 grupta toplanabilir. Bu gruplarda amaç yazılabilecek fonksiyon tiplerini üç çatı altında toplamak ve bir abstraction (soyutlama) yaparak programcıya sadece istediği fonksiyonu parametre verebileceği bir ortam hazırlamaktır. Bu işlem sırasında fonksiyon göstericileri (Function pointers) kullanılarak bir fonksiyon diğer fonksiyonlara [...]

    Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | Derleyiciler, Programlama Dilleri, veri yapıları | A yorum var

    Filitreleme Tipi Fonksiyonlar (Filter Type Functions)

    Yazan : Şadi Evren ŞEKER Bir veri yapısı üzerinde çalışan ve veri yapısında bulunan verileri, verilen bir fonksiyonu kullanarak eleyen (filitreleyen) fonksiyon tipidir. Bu durum aşağıdaki bağlı liste (linked list) örneğinden anlaşılabilir: Örneğin yukarıdaki bağlı liste üzerinden tek sayıları eleyen bir fonksiyon yazmak istersek yapmamız gereken, tek sayıları veren aşağıdaki fonksiyonu bu bağlı liste üzerine [...]

    Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri, veri yapıları | 2 yorum var

    Biriktirme Tipi Fonksiyonlar ( Accumulator Type Functions)

    Yazan : Şadi Evren ŞEKER Bir veri yapısı üzerinde çalışan ve veri yapısında bulunan verileri, verilen bir fonksiyonu kullanarak bir değişkende biriktiren fonksiyon tipidir. Bu durum aşağıdaki bağlı liste (linked list) örneğinden anlaşılabilir: Örneğin yukarıdaki listede toplama fonksiyonu olarak aşağıdaki fonksiyonu uygulayacak olursak: int topla(int a, int b){ return a + b; } sırasıyla yapılması [...]

    Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri, veri yapıları | A yorum var

    Bindirme Tipi Fonksiyonlar (Mapping Style Functions)

    Yazan : Şadi Evren ŞEKER Veri yapıları (data structures) üzerinde uygulanan döngü (loop) tiplerinden birisidir, literatürde haritalama tipi olarak da geçmektedir. Temel olarak bir veri tipi üzerindeki değişimi uygulamak için kullanılırlar. Örneğin aşağıdaki bağlı listeyi (linked list) ele alalım: Yukarıdaki bu bağlı listedeki elemanların üzerine, sayı değerini 1 arttıran bir fonksiyon bindirildiğinde (map) aşağıdaki sonuç [...]

    Şadi Evren ŞEKER tarafından, tarihinde yazıldı. | C/C++, Derleyiciler, Programlama Dilleri, veri yapıları | A yorum var

    İçerik Bağımsız Gramerler için Pompalama Önsavı (Pumping Lemma for Context Free Grammers)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir dilin, içerik bağımsız gramer (context free grammer, CFG) ile gösterilemeyeceğini ispatlamaya yarar. Yani pompalama ön savı sayesinde bir dilin CFG olmadığı ispatlanabilir ancak olduğu ispatlanamaz. Şayet pompalama önsavını geçemyorsa CFG değildir denilebilir ancak geçmesi olmasını gerektirmez. Pomplama önsavı (pumping lemma) kısaca bir dili aşağıdaki gramere uydurmaya çalışır: [...]

    Düzenli İfadelerde Pompalama Önsavı (Pumping Lemma for Regular Expressions)

    Yazan : Şadi Evren ŞEKER Bir dilin Düzenli ifadele (Regular expression) olup olmadığının belirlenmesi için kullanılan pomplama önsavıdı (pumping lemma). Basitçe düzenli ifadede olup olmadığı sınanacak bir w dili için (yani L = w için) w= xyz şeklinde bir açılım sınanır. Buradaki sınama sırasında aşağıdaki koşulların sağlanması beklenir: |y| ≥ 1 |xy| ≤ p bütün [...]

    Pompalama Önsavı (Pumping Lemma)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde dil tasarımı (language design, compiler design) konusunda önemli araçlardan birisidir. Bu önsava (lemma) göre şayet bir dil, bir herhangi bir gruba ( içerik bağımsız dil (context free language) veya düzenli ifadeler (Regular expression) yada farklı bir dil grubu ) dahil olarak kabul ediliyorsa, bu dil ne kadar pompalanırsa [...]

    İçerikten Bağımsız Gramer (context free grammer, CFG)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, dil tasarımı sırasında kullanılan bir gramer tipidir. Basitçe bir dilin kurallarını (dilbilgisini, grammer) tanımlamak için kullanılır. Örneğin: S -> a Yukarıdaki dil tanımında bir büyük harfle gösterilen (S) bir de küçük harfle gösterilen (a) sembolleri bulunmaktadır. Bu satır, S devamlısının(nonterminal) a sonuncusuna(terminal) dönüştüğünü göstermektedir. Kısaca dildeki kuralları ifade [...]

    İçerikten bağımsız dil (Context Free Language, CFL)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde bir dilin tasarımı sırasında, içerik bağımsız bir gramer ile oluşturulması durumudur. Basitçe bir aşağı sürüklemeli otomat (push down automata) tarafından kabul edilen dil çeşididir. Bazı kaynaklarda bağlamdan bağımsız dil olarak da geçmektedir. Örneğin çok meşhur L= {anbn , n>0} dilini ele alalım. Bu dil örneğinin bu kadar meşhur [...]

    EBNF (Uzatılmış BNF, Extended Backus Normal Form)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde dil tasarımı konusunda kullanılan backus normal şeklinin (backus normal form) özel bir halidir. Basitçe standart BNF’te yazılan kuralların birleştirilerek daha sade yazılmasını hedefler. Bu durumu aşağıdaki örnek üzerinden görebiliriz: Örneğin BNF olarak yazılan dilimize göre: <EGER> ::= if( <KOSUL>) | if( <KOSUL>) else şeklinde bir satırımız bulunsun. Bu [...]

    Şadi Evren ŞEKER tarafından, 19/03/2009 tarihinde yazıldı. | Automata (otomatlar, özdevinirler), Bilgisayar Kavramları, Bilgisayar Standartları, Derleyiciler | A yorum var

    SableCC

    Yazan : Şadi Evren ŞEKER SableCC 1998 yılında Étienne Gagnon tarafından bir yüksek lisans tezi olarak hazırlanmış ve dil geliştirmekte kullanılan, JAVA üzerinde çalışan, nesne yönelimli bir geliştirme ortamıdır. Temel olarak SableCC üzerinde bir dil geliştirmek için aşağıdaki adımların takip edilmesi gerekir: Dilde bulunacak olan kelimeler (lexicons) için bir kelime tanımı (lexical definition) yapılmalıdır. Tanım [...]

    Şadi Evren ŞEKER tarafından, 12/01/2009 tarihinde yazıldı. | Derleyiciler, Nesne Yönelimli Programlama, Programlama Dilleri | A yorum var

    Backus Normal Form (BNF)

    Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerilnde genellikle bir dil tanımlamada ve bu dilin gramerini (Dil bilgisini) belirlemekte kullanılan gösterim biçimidir. Basitçe dil bir dil tanımında başlayarak Terminal (sonuncu) ve Non-Terminal (Devamlı) terimler kullanarak tanılmanmaktadır. Örneğin aşağıda basit bir örneği verilmiştir: <dil> ::= <harf>|<imla> <harf> ::= a|b|…|z <imla> ::= .| |,|? Yukarıda bir dil tanımı [...]