İçeriğe atla

Biçimsel dil kuramı

Biçimsel dil kuramı, teorik bilişimin temel dallarından biridir. Bir biçimsel dil, abece denilen belli bir küme Σ üzerinde kurulan dizilerden oluşur. Biçimsel dilleri tanımlamak için ifadeler, gramerler ya da tanımlanan dile ait olan dizileri kabul eden otomatlar kullanılır. Bunun yüzünden otomat kuramı ile ilişkisi çok önemlidir.

Biçimsel diller, Chomsky sınıflandırmasına göre 4 sınıfa ayırılır:

  • Tip 3 Düzenli diller
  • Tip 2 Bağlamdan bağımsız diller
  • Tip 1 Bağlama duyarlı diller
  • Tip 0 Özyinelemeli sayılabilir diller

Her sınıf, daha küçük sayılı sınıfların bir alt kümesidir. Tip 0 en genel sınıftır, Turing makine ve bilgisayar programıyla sayılanan her dilli kapsar.

Bu sınıflandırma (hiyerarşi), dillerin dizilerini türeten gramer ya da kabul eden makinaların hesaplama gücüne göre yapılmıştır.

Uygulama

Teorik bilişim bilimi bakımından önemli olan bu madde pratikte programlama dilleri kullanarak bilgisayar programları üretilmesini sağlayan derleyici ve yorumlayıcı yazılımlarının hazırlanmasında önemli bir rol oynar. Biçimsel dil kuramı, sıfırdan bir programlama dili geliştirmek isteyen bir bilgisayar programcısının ilk öğrenmesi gereken konulardan biridir. Mesela alttaki Tip 2 grameri Java, C, C++ dillerinde kullanılan kayan nokta (İngilizce: floating point) sayılarından oluşan biçimsel dili tanımlar; bu dil 3.1415 ya da 1.40239846e-45f gibi sayıların yazılış şekillerini gösterir.

FloatingPointLiteral:
       Digits . [Digits] [ExponentPart] [FloatTypeSuffix]
       . Digits [ExponentPart] [FloatTypeSuffix]
       Digits ExponentPart [FloatTypeSuffix]
       Digits [ExponentPart] FloatTypeSuffix
Digits:
       Digit
       Digits Digit
Digit:
       0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
ExponentPart:
       ExponentIndicator SignedInteger
ExponentIndicator: one of
       e E
Si gnedInteger:
       [Sign] Digits
Sign: one of
       + -
FloatTypeSuffix: one of
       f F d D

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Dil</span> insanlar arasında iletişim kurmayı sağlayan doğal bir iletişim aracı

Dil, insanlar arasında anlaşmayı ve iletişimi sağlayan doğal bir araç, kendisine özgü kuralları olan ve ancak bu kurallar içerisinde gelişen canlı bir varlık, çok boyutlu kavramlar bütünü; temeli tarihin bilinmeyen dönemlerinde atılmış bir gizli anlaşmalar düzeni, seslerden örülmüş toplumsal bir kurum ve yapıdır.

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Bilgisayar bilimi</span> belirli evren kurallarına dayalı, sistematik çalışan ve elementlerin ya da ağların birbirleriyle olan ilişkisi

Bilgisayar bilimi, bilgisayarların tasarımı ve kullanımı için temel oluşturan teori, deney ve mühendislik çalışmasıdır. Hesaplamaya ve uygulamalarına bilimsel ve pratik bir yaklaşımdır. Bilgisayar bilimi; edinim, temsil, işleme, depolama, iletişim ve erişimin altında yatan yönteme dayalı prosedürlerin veya algoritmaların fizibilitesi, yapısı, ifadesi ve mekanizasyonunun sistematik çalışmasıdır. Bilgisayar biliminin alternatif, daha özlü tanımı "büyük, orta veya küçük ölçekli algoritmik işlemleri otomatikleştirme çalışması" olarak nitelendirilebilir. Bir bilgisayar bilimcisi, hesaplama teorisi ve hesaplama sistemlerinin tasarımı konusunda uzmanlaşmıştır.

Bilişim, bilişim bilimi ya da bilgisayar bilimi, bilgi ve hesaplamanın kuramsal temellerini ve bunların bilgisayar sistemlerinde uygulanabilmeleri sağlayan pratik teknikleri araştıran bir yapısal bilim dalıdır. Bilişimciler ya da bilgisayar bilimcileri bilgi oluşturan, tanımlayan ve dönüştüren algoritmik süreçler icat edip, kompleks sistemleri tasarlamak ve modellemek için uygun soyutlamalar formüle ederler. Bilişim Dünya'da hızla gelişmeye devam eden önemli bir teknolojidir.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">Ada (programlama dili)</span> programlama dili

Ada, yapısal, statik tipli, zorunlu, geniş spektrumlu ve nesne yönelimli bir üst düzey bilgisayar programlama dilidir. Pascal ve diğer dillerin genişletilmiş halidir. Gömülü design-by-contract (DbC), güçlü yazımı, açık eşzamanlı, senkronize mesaj geçişi, korunmuş objeli ve belirsiz bir dildir. Ada kod güvenliğini ve sürdürebilirliğini derleyicide hataları bularak geliştirdi.

Anlambilim, anlam bilimi, anlam bilgisi ya da semantik, anlamları inceleyen bilimdir. Anlam bilimi felsefî ya da mantıksal ve dilbilimsel olmak üzere iki farklı açıdan ele alınabilir. Felsefî ya da mantıksal yaklaşım, göstergeler ya da kelimeler ile bunların göndergeleri arasındaki bağlantıya ağırlık verir ve adlandırma, düz anlam, yan anlam, doğruluk gibi özellikleri inceler. Dilbilimsel yaklaşım ise zaman içinde anlam değişiklikleri ile dilin yapısı, düşünce ve anlam arasındaki karşılıklı bağlantı vb. konular üstünde durur.

Paradigma Helenceden gelir) Türk Dil Kurumu sözlüğündeki anlam karşılığı; "Değerler dizisi" olarak tanımlanır.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

Sözdizim, söz dizimi ya da Fransızcadan ödünçleme biçimiyle sentaks, doğal dillerdeki cümle kurma ilke ve kurallarını inceleyen ve bu dildeki cümlelerin esnekliğini inceleyen dilbilim dalıdır.
Eski Yunanca "birlikte düzenleme, dizme" anlamına gelen sentaks terimi dilbilimde, doğal dillerde nasıl cümle oluşturulacağına dair bir kurallar ve prensipler çalışmasıdır. Bir bilim dalına ait olmasına ek olarak “Modern İrlandacanın Sözdizimi"nde olduğu gibi, sözdizim terimi herhangi bireysel bir dilin cümle yapısına hâkim olan kurallara ve prensiplere de doğrudan ilgili olarak da kullanılır. Sözdizim, dilin yatay, yani satır şeklinde dizilen bir sistem olduğunu gösterir. Bu diziliş, sesten, morfemlere, morfemlerden daha büyük öbeklere dilin her seviyesinde mevcuttur. Sözdizimin yalnız cümle seviyesini gösteren bir terim olarak kullanılması doğru ama eksik bir kullanımdır.

<span class="mw-page-title-main">İşaret dili</span> anlamı iletmek için el ile iletişimi ve beden dilini kullanan dil

İşaret dilleri anlamı karşı tarafa iletmek için görsel kanalı kullanan dillere verilen addır. El işaretlerinin (manual) yanında el dışı işaretler (non-manual) ile ifade edilirler. İşaret dilleri kendilerine ait kelime dağarcığı ve dilbilgisel yapısı olan doğal dillerdir. Evrensel olmamakla beraber, işaret dilleri arasında çarpıcı benzerlikler de bulunur.

Mantık devrelerinde taşma, devrenin sağladığı bit alanının işlem sonucunda ortaya çıkan verinin elde bulunan saklama alanına sığmaması durumunda olur.

Bilgisayar biliminde, Genişletilmiş Backus–Naur formu (EBNF) bağlamdan bağımsız dilbilgisini ifade etmek için kullanılan bir notasyondur. Başka bir ifadeyle, bilgisayar programlama dillerini ve biçimsel dilleri tanımlamanın bir yoludur. Backus–Naur formu (BNF) notasyonunu temel alır.

<span class="mw-page-title-main">Düzenli ifade</span> bir arama modeli oluşturan karakter dizisi

Düzenli ifadeler veya kurallı ifadeler, bilgisayar bilimlerinde ele alınan metindeki kimi katarların kısa yoldan ve esnek bir biçimde belirlenmesini sağlar. Bu katarlar belli karakterler, kelimeler veya karakter örüntüleri olabilir. Düzenli ifadeler, bir biçimsel dil kullanarak yazılır ve bir düzenli ifade işleyici tarafından yorumlanır. Bir düzenli ifade işleyicisi ya ayrıştırıcı olarak hizmet eden ya da metni inceleyip verilen tarife uygun kısımlarını belirleyen bir programdır.

<span class="mw-page-title-main">Bulut bilişim</span> internet tabanlı bilişim hizmeti

Bulut bilişim, bilgisayarlar ve diğer cihazlar için, istendiği zaman kullanılabilen ve kullanıcılar arasında paylaşılan bilgisayar kaynakları sağlayan, internet tabanlı bilişim hizmetlerinin genel adıdır. Bulut bilişim bu yönüyle bir ürün değil, hizmettir; temel kaynaktaki yazılım ve bilgilerin paylaşımı sağlanarak, mevcut bilişim hizmetinin; bilgisayarlar ve diğer aygıtlardan elektrik dağıtıcılarına benzer bir biçimde bilişim ağı üzerinden kullanılmasıdır.

<span class="mw-page-title-main">MATLAB</span>

MATLAB, çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Özel mülk bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

<span class="mw-page-title-main">Ayrıştırıcı (yazılım)</span>

Ayrıştırıcı, girdi verilerini alır ve girdinin yapısal bir temsilini vererek, süreçte doğru sözdizimini kontrol eden bir veri yapısı oluşturan bir yazılım bileşenidir. Ayrıştırma öncesinde veya sonrasında başka adımlar izlenebilir veya bunlar tek bir adımda birleştirilebilir. Ayrıştırıcı, genelde girilen karakter dizisinden belirteçler oluşturan ayrı bir sözcük tabanlı analiz motorunu takip eder. Ayrıştırıcılar elle programlanabilir veya bir ayrıştırıcı üreteci tarafından otomatik olarak veya yarı otomatik olarak oluşturulabilir. Ayrıştırma, biçimlendirilmiş çıktı üretimlerini tek bir şablonda tamamlama görevi görür. Bunlar, farklı etki alanlarına uygulanabilir, ancak bir derleyicinin girdi ve çıktı aşamaları gibi genellikle bir arada sunulur.

Programlama bilgisayarda, bir altyordam bir birim olarak paketlenmiş belirli bir görevi yerine getiren bir dizi program talimatıdır. Bu birim daha sonra söz konusu görevin yapılması gereken her yerde programlarda kullanılabilir.

ALGOL 68, çok daha geniş bir uygulama kapsamı ve daha titiz bir şekilde tanımlanmış sözdizimi ve anlambilim hedefiyle tasarlanmış, ALGOL 60 programlama dilinin halefi olarak tasarlanan programlama dilidir.