2025'te keşfedilecek 12 egzotik programlama dili: onları olağandışı yapan nedir, nerede güçlüdürler ve kaybolmadan denemek için basit yollar.

“Egzotik” demek “daha iyi” ya da “daha zor” demek değildir. Genellikle bir dilin alışılmadık bir şeyi denediği anlamına gelir—ya kod yazma biçimi, dilin optimize ettiği amaç ya da öğretmek istediği fikir açısından farklıdır.
Bu yazıda bir programlama dili egzotik sayılırsa en az birine uymalıdır:
Egzotik ya da eserik bir dili öğrenmek genellikle eğlenceli ve şaşırtıcı derecede öğreticidir, çünkü “program”ın ne olduğu, verinin nasıl aktığı ve gerçekten ne kadar sözdizimine ihtiyaç duyulduğu gibi varsayımları yeniden düşünmenizi sağlar.
Bu dillerin çoğu günlük iş araçları değildir. Bazıları bulmaca, bazıları araştırma amaçlı araç ve bazıları dar bir görevde mükemmelken her şey için kullanışsız olabilir. Getirisi içgörüdür—her zaman verimlilik değil.
2025, keşfetmek için iyi bir dönem: birkaç niş dilin aktif toplulukları, daha iyi dokümantasyonu ve daha kullanıcı dostu araçları (REPL'ler, paketler, çevrimiçi çalışma alanları) var. Alternatif paradigmalar—veri işleri için dizi programlama, kurallar için mantık programlama ve özel donanım gerektirmeyen kuantum “oyuncak” ortamları—yeniden merak uyandırıyor.
“Tuhaflık”ı sıralamak yerine liste ailelere göre gruplandırıldı (minimalist, görünmez, 2B, dizi, mantık, yığıt-tabanlı, güvenliğe odaklı, kuantum). Her bölümde derinleşmeden önce hızlı bir galibiyet almanız için basit bir “denenecek şey” fikri yer alıyor.
“Egzotik” pek çok şeyi ifade edebilir; bu yüzden liste sadece tuhaf sözdizimi geçidi değil. 2025’te gerçekten farklı hissettiren ve öğrenmesi pratik olan dilleri seçtik.
Önce özgünlüğe baktık: yeni bir zihinsel modeli zorlayan diller (2B kod, yığıt-temelli düşünme, kural/sorgu, dizilerin varsayılan olması, kuantum devreleri).
İkinci olarak öğrenilebilirliği önceliklendirdik. Bir dil ne kadar alışılmadık olursa olsun, açık bir “hello world”, bir öğretici ve küçük programlar yazmaya götüren bir yol bulunmalı.
Üçüncü olarak, gerçek kullanılabilir araç kontrol ettik: herkese açık dokümantasyon, çalışan bir yorumlayıcı/derleyici veya aktif bir depo. Harika bir dil olabilir ama modern bir makinede çalıştırılamıyorsa önermesi zor.
Son olarak, dengeye dikkat ettik—klasik esolang’ler (eğlenceli, zihni bükücü) ile ana akıma fikirleri taşıyabilecek ciddi niş veya araştırma dillerinin karışımı.
Bilinmeyen kodu rastgele bir indirme gibi ele alın. Yorumlayıcıları ve örnek programları bir konteyner veya sandbox içinde (ya da en azından geçici bir klasörde) çalıştırmayı tercih edin; kişisel dosyalarınıza, SSH anahtarlarınıza veya bulut kimlik bilgilerinize erişimi olan ortamlara bilinmeyen kod yapıştırmayın.
Sık deniyorsanız, “güvenli oyun alanı” kurulumunu standartlaştırmak yardımcı olur. Örneğin, yorumlayıcıları bir API arkasında çalıştıran küçük, atılabilir bir web uygulaması başlatabilir ve çalıştırmalar arasında durumu sıfırlayabilirsiniz. Koder.ai gibi platformlar burada kullanışlıdır; sohbetle istediğiniz çalışma alanını tarif edebilir (frontend + backend + veritabanı gerekiyorsa), hızlı yineleme yapabilir ve memnun kaldığınızda kaynak kodunu dışa aktarabilirsiniz.
Brainfuck, neredeyse gülünç derecede küçük bir komut setiyle her şeyi yapmaya çalıştığı için “egzotik”. Dilin sadece sekiz komutu var (+ - \u003c \u003e [ ] . ,), anahtar kelime yok, değişken yok (alışılmış anlamda) ve triki bilmiyorsanız okunabilir yapı yok.
Adlandırılmış değişkenler yerine Brainfuck size bir bellek bandı ve sola/sağa hareket eden bir işaretçi verir. Geçerli hücreyi artır/azalt eder, işaretçiyi hareket ettirir ve döngüler için köşeli parantezler kullanırsınız. Hepsi bu. Sonuç, bir uygulama yazmaktan çok mantık bulmacası çözmek gibi gelir.
Brainfuck, bir bilgisayarın hesaplama yapması için ne kadar az şeye ihtiyaç duyduğunu uygulamalı olarak gösterir. Sizi şu konular hakkında düşünmeye zorlar:
[ ve ] ile döngüler)Eğer bir yorumlayıcı veya derleyicinin gerçekten ne yaptığını merak ettiyseniz, Brainfuck iyi bir alıştırma hedefidir.
Çoğunlukla programlama bulmacalarında, teori tartışmalarında, kod golf’te ve yorumlayıcı yazma alıştırmalarında.
“Klasik” Hello World:
++++++++++[\\u003e+++++++\\u003e++++++++++\\u003e+++\\u003e+\\u003c\\u003c\\u003c\\u003c-]\\u003e++.\\u003e+.+++++++..+++.\\u003e++.\\u003c\\u003c+++++++++++++++.\\u003e.+++.------.--------.\\u003e+.\\u003e.
Küçük bir döngü örneği: bir değer ayarlayıp karakter olarak yazdırır:
+++++[\\u003e++++++++\\u003c-]\\u003e.
İpucu: bantın her adımda nasıl değiştiğini izlemek için adım adım çalıştırma sunan çevrimiçi bir Brainfuck yorumlayıcısı kullanın.
Whitespace, sadece boşluklar, sekmeler ve satır sonlarının anlamlı olduğu bir eserik dildir. Diğer her şey yorum kabul edilir. Bu, geçerli bir programın editörünüzde tamamen boş görünebileceği anlamına gelir—ve yine de çalışır.
Çoğu dil görünür anahtar kelimeler ve noktalama kullanır. Whitespace beklentiyi tersine çevirir: tüm kaynak kodu, özel ayarlarla ortaya çıkarılmadıkça “görünmezdir”. Bu, programlamanın ne kadarının konvansiyonlara, araçlara ve insan gözüne bağlı olduğunu gösterir.
Whitespace sizi en düşük seviyede ayrıştırma ve tokenizasyon üzerine düşünmeye zorlar:
Küçük bir ayrıştırıcı yazdıysanız, lexer yazdıysanız veya gerçek kodda “görünmez” karakterlerle (karışık sekmeler/boşluklar, tuhaf satır sonları) hata ayıkladıysanız, Whitespace o acıyı öğrenme alıştırmasına çevirir.
Hata ayıklama ana zorluktur. Tek bir yanlış sekme veya satır sonu anlamı tamamen değiştirebilir.
Görünmezleri işaretleyen görselleştiriciler ve “invisibles göster” yeteneği olan editörler kullanın. Aksi takdirde kendi programınızı daha sonra okumak bile sinir bozucu olur.
Bir karakter veya sayı yazdıran en küçük Whitespace programını yazın, sonra aynı davranışı normal bir dilde (Python/JavaScript) uygulayın. Karşılaştırın:
Befunge egzotiktir çünkü program düzgün satırlarda yukarıdan aşağıya okunmaz. Bunun yerine program 2B bir ızgarada yaşar ve talimat işaretçisi sizin yerleştirdiğiniz oklar doğrultusunda sağa, sola, yukarı ve aşağı hareket eder. Bir betik yazmaktan çok küçük bir devre diyagramında veya pinball masasını gezmek gibi hissettirir.
Çoğu dilde kod sabit metindir. Befunge'de program çalışırken kendi kendini düzenleyebilir: talimatlar ızgaraya yeni karakterler yazabilir ve bir sonraki çalıştırılacak şeyi değiştirebilir. Bu kendi kendini değiştirme yeteneği dilin kimliğinin bir parçasıdır ve şaşırtıcı, bulmaca-benzeri programlar yaratabilir.
Befunge sizi veri akışı ve durum makinesi düşüncesine iter: yollar planlarsınız, döngüler literal rotalardır ve dallanma yönlendirmedir. Birden fazla yön doğal olduğu için (interpreter yine tek seferde bir talimat çalıştırsa da) paralel görünen akışları düşünmek daha kolaydır.
Befunge oyun odaklı bağlamlarda parlıyor: programlama bulmacaları, kod golf, tuhaf üretken davranış gerektiren interaktif enstalasyonlar veya kodun kendisinin sanatın parçası olduğu kısa demolar.
Aşağıda tek bir rakamı okuyup çiftini yazdıran basit bir Befunge-93 programı var:
\u00262*.
Herhangi bir Befunge yorumlayıcısında çalıştırın: bir sayı (0–9) girin, sonuç çıktılanır. Oradan, yön okları (\u003e \u003c ^ v) ve ekstra hücreler ekleyerek işaretçinin düz bir hat yerine bir “rota” izlemesini sağlayın.
Hexagony egzotiktir çünkü program bir metin satırı değil—hücrelerden oluşan altıgen bir “petek” üzerinde düzenlenir. Bir talimat işaretçisi ızgara boyunca hareket eder, kenarlarda döner veya sarılır ve bu kurallar bir masa oyunu parçası üzerinde gezinmekten çok farklı değildir.
Hexagony sizi mekânsal düşünmeye zorluyor: bir talimatın nerede olduğu, ne yaptığı kadar önemlidir. Bu, şu konuları pratik etmek için harika:
Burası keşif içindir. İş yerinde Python veya JavaScript yerini Hexagony ile değiştirmeyeceksiniz, ama yorumlayıcılar, talimat işaretçileri ve kontrol akışının nasıl çalıştığı konusunda daha keskin bir hisle ayrılırsınız.
Küçük bir ızgara hayal ederek başlayın; her hücre bir karakter talimatı tutar. Talimat işaretçisini başlangıç hücresine bir yönde (altı olası yönden biri) yerleştirin. Sonra:
İlk alıştırma olarak sadece yön değiştiren ve tek bir karakter yazdıran bir programı adım adım çalıştırın—yönlendirmenin kontrol akışı olduğu hissini edinmek için yeterli olacaktır. Güvenli bir oyun alanı istiyorsanız çevrimiçi bir yorumlayıcı ve tek adım çalıştırma kullanın (ilgili blog yazısına bakın).
Çoğu dil size adımları tarif etmenizi söyler: bunu yap, sonra şunu yap, bitene kadar döngü. Wolfram Language egzotik hissettirir çünkü çoğu zaman kurallar tanımlayabilirsiniz—ilişkiler ve dönüşümler—ve sistemi bunları uygulamaya bırakırsınız.
Wolfram Language sembolik ve kural tabanlıdır. Parçaların bir ifade içinde eşleştiği desenleri yazarsınız, sonra nasıl yeniden yazılacağını belirtirsiniz. Akışı manuel kontrol etmek yerine, desen eşleştirme ve dönüşüm kurallarına yaslanırsınız.
Bu stil, terim yeniden yazımına (term rewriting) pratik bir giriş sunar: hesaplama tekrar eden yerine koymalar gibidir. Birçok “algoritmanın” aslında küçük bir yeniden yazma kuralı seti artı bunları uygulama stratejisi olduğunu fark edersiniz. Ayrıca desen eşleştirme konusunda sezgi kazanırsınız—sadece metinlerde değil, yapılandırılmış ifadelerde de.
Dönüşümlerin modellenmesi gerektiğinde kural tabanlı programlama parlıyor: cebiri basitleştirme, formülleri yeniden yazma, ağaçları işleme, format dönüşümleri veya kuralların prosedürden daha önemli olduğu sistemleri ifade etme.
Aşağıyı Wolfram Language’e yapıştırın ve birkaç kuralın nasıl şaşırtıcı davranış ürettiğini izleyin:
rules = {
x_ + 0 -> x,
0 + x_ -> x,
x_ * 1 -> x,
1 * x_ -> x,
x_ + x_ -> 2 x
};
expr = (a + 0) + (a + a) * 1;
FixedPoint[# //. rules & , expr]
Sonra bir kural ekleyin (örneğin dağıtıcılık için bir yeniden yazma) ve sistemin “kişiliğinin” nasıl değiştiğini görün.
APL ve modern kuzeni BQN, programlamanın varsayılan zihinsel modelini tersine çevirdikleri için “egzotik” hissi verir. Tek değerler ve döngüler yerine her şey dizi (liste, tablo veya daha yüksek boyutlu veri) olarak düşünülür ve çoğu işlem otomatik olarak tüm koleksiyonlara uygulanır.
Tipik dillerde bir listeye sayı eklemek döngü veya yardımcı fonksiyon gerektirir. APL/BQN’de “10 ekle” genelde “her elemana 10 ekle” anlamına gelir ve dil bunu doğal hale getirir. Bu yayınlama davranışı güçlüdür—ama gerçek şok, notasyondur: yoğun semboller ("glyph"lar) yaygın işlemleri temsil eder, bu yüzden programlar yoğun matematik gibi görünebilir.
APL/BQN ile çalışmak sizi "verinin şekli nedir?" ve "bunu tüm dizilerin dönüşümü olarak ifade edebilir miyim?" sorularını sormaya alıştırır. Yeniden şekillendirme, sıralama, gruplayama, indirgeme (toplam), tarama (kümülatif toplamlar) ve dış çarpımlar gibi küçük sayıda veri operasyonuyla adım adım prosedürleri değiştirmeyi öğrenirsiniz.
Sütunlar, matrisler ve zaman serileri üzerinde çalışıyorsanız, dizi dilleri son derece ifade edici olabilir. Bu yüzden finans ve bilimsel hesaplamada uzun süredir yerleri var ve BQN, dizi süper güçlerini daha modern bir hisle isteyen geliştiricileri çekti.
Aşina olduğunuz bir görevi seçin—liste normalleştirme veya hareketli ortalama hesaplama gibi—ve bunu iki kere yazın: bir kez döngü ile, bir kez “tüm-dizi” dönüşümleriyle. Semboller yabancı gelse bile, alıştırma hesabi kontrol akışı yerine veri akışı olarak görmeyi öğretir.
J ve K “egzotik”tir çünkü sizi tüm diziler (listeler, tablolar) ve bileşimler düşünmeye teşvik ederler; adım adım talimatlardan ziyade küçük fonksiyonların boru hattı halinde birleştirilmesine dayanırlar. Döngüler ve geçici değişkenler yazmak yerine, sık sık noktalama işaretleri gibi görünen kısa ifadelerle boru hattı kurarsınız.
Her iki dil de işlemlerin zincirlenmesine teşvik eder: bir veriyi al, dönüştür, indir, yeniden şekillendir. J, girdiyi adlandırmadan davranışı tanımlayan “tacit” (noktasız) programlamaya eğilimlidir. K (ve ona yakın q/kdb+) aynı şekilde kısa ve hızlı, birleştirilebilir veri dönüşümleri için tasarlanmıştır.
J/K ile bir saat geçirmek bile diğer dillerde neye dikkat ettiğinizi değiştirir: artık “döngü nedir?” değil “dönüşüm nedir?” diye sorarsınız. Programları bileşimler olarak okumayı öğrenirsiniz—altyapı boru hattının yapısı açılamadır.
Bu diller, bir koleksiyonu alıp belirli bir özet hesaplama gibi görevlerde mükemmeldir: sıralama, gruplama, normalleştirme, filtreleme ve hızlı keşifsel analiz. Çoğu kodun kalıp oluşturacağı görevler için tatmin edici sonuçlar verir.
J’de giriş adlandırmadan min-max ölçekleme tanımlamayı deneyin:
norm =: (] - \u003c./) % (\u003e./ - \u003c./)
norm 3 10 5 7
Ya da küçük bir metin boru hattı—bir dizgedeki kelimeleri sayın:
#@;: 'J makes pipelines feel like algebra'
Başta semboller yoğunsa endişelenmeyin—ilk sürtünme amaçtır: veri operasyonlarını bileşen bloklar olarak görmeye zorlar.
Forth ve Factor “egzotik”tir çünkü Python veya JavaScript’te yazdığınız ifadeler gibi yazmazsınız. Bunun yerine çoğunlukla yığıt işlemleri yazarsınız: değerleri it, bir kelime (fonksiyon) uygula ve sonuçları sonraki kelime için yığıtta bırak.
Yığıt dilinde sıra sözdizimdir. Sıralamadaki küçük bir değişiklik anlamı değiştirir ve sayfada daha az görünür “isim” (değişken) olur. Forth, çok küçük bir çekirdekle sıkça uygulanır. Factor yığıt modelini korur ama modern bir standart kütüphane, araçlar ve daha yapılandırılmış bir his ekler.
Yığıt makinelerinin nasıl çalıştığını ve neden yorumlayıcılar ile sanal makineler için cazip olduklarını öğrenirsiniz. Ayrıca bileşim konusunda pratik bir ders alırsınız: küçük kelimeler oluşturmak ve bunları dengeli yığıt gereksinimleriyle birleştirmek disiplin gerektirir.
Çekirdek küçük olabildiğinden, Forth-benzeri sistemler gömülü aygıtlarda, oyunlarda ve kompakt komut diline ihtiyaç duyduğunuz betiklerde kolayca gömülebilir. Factor ise hızlıca bileştirilebilir programlar oluşturmak için bir oyun alanı olabilir.
Aritmetik ve yığıt manipülasyonuyla başlayın (ör. değerleri kopyalama ve takas etme). Sonra küçük bir hesap makinesi REPL’i oluşturun: bir token oku, sayıları it, + ve * gibi kelimeleri çalıştır ve yığıtı yazdır. Bu tutarsa, kullanıcı tanımlı kelimeler sözlüğü ile mini bir yorumlayıcıya genişletin.
Çoğu programlama dili size nasıl yapılacağını yazdırır: burada döngü, orada dallanma, bunu güncelle. Prolog ve Datalog bunu tersine çevirir. Gerçekleri ve kuralları tanımlarsınız, sonra sorular sorarsınız—sistem cevapları arar.
Kontrol akışı yerine mantık kuralları yazarsınız. Prolog programı genellikle dünyayla ilgili kanunlar kümesi gibi okunur, artı sorgular. Prolog altında unifikasyon (eşleştirme) ve backtracking (alternatifleri deneme) ile çözümler bulunur.
Datalog yakın bir akrabadır: genellikle daha sınırlıdır (aynı şekilde karmaşık terimler yoktur), ama ölçeklenebilir kural değerlendirme ve veritabanı tarzı çıkarım için mükemmeldir.
Deklaratif stil, farklı bir zihinsel model zorlar:
Bu fikirler eserik dillerin çok ötesinde çıkar—kural motorları, politika sistemleri, sorgu planlayıcıları ve deneysel dil araştırmalarında görünür.
Zamanlama, konfigürasyon kuralları, bilgi tabanları ve bulmaca çözme gibi “bu koşulları sağlayan bir çözüm bul” amacının olduğu her yerde mantık programlama dilleri iyidir.
parent(alex, sam).
parent(sam, riley).
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
Şimdi sorgulayın:
?- grandparent(alex, Who).
Bir döngü yazmadınız; bir soru sordunuz. Bu kayma asıl ders ve neden bu niş programlama dilleri 2025’te hâlâ taze hissediyor.
Rust egzotik hissettirebilir, çünkü nadir olduğu için değil, yeni bir zihinsel model—sahiplik—öğretmesi gerektiği için. Bir değer üzerine kimlerin “sahip” olduğu ve bunun nasıl paylaşıldığı hakkında kurallar koyar. Garbage collector’a güvenmez (JavaScript veya Python gibi) ya da belleği elle serbest bırakmaya güvenmez (C gibi).
Borrow checker derleme zamanı hakemi gibidir. Birçok yaygın hatayı—kullandıktan sonra bellek, çift serbest bırakma ve veri yarışmaları—engeller; potansiyel olarak güvensiz olabilecek kodu reddeder. Başta şaşırtıcı gelebilir: ne demek istediğinizi biliyor olabilirsiniz, ama Rust kanıt ister.
Rust’ın büyük dersi, performans ve güvenliğin birbirinin alternatifi olmak zorunda olmadığıdır. Yaşam süreleri, açık veri akışı ve “tek sahip” ile “paylaşılan erişim” arasındaki net sınırlar üzerinde düşünmeye başlarsınız. Rust öğrenmeseniz bile bu alışkanlıklar başka dillere geçer.
Rust sistem araçları, komut satırı yardımcıları, oyun motorları, gömülü projeler ve performans hassas hizmetler için pratik bir seçimdir—hızın önemli olduğu ve çökmelerin maliyetli olduğu yerler.
İyi bildiğiniz küçük bir betiği (kelime sayacı, CSV temizleyici veya dosya yeniden adlandırıcı) Rust ile uygulayın, sonra kasıtlı bir hata ekleyin:
Rust genellikle derlemenize izin vermez. Hata mesajlarını kuralı hangi şekilde çiğnediğinizi ve genellikle daha güvenli bir yapıyı nasıl önerdiğini anlatan rehberli okumalar olarak değerlendirin.
Kuantum programlama egzotik hissi verir çünkü adımları tarif etmekten ziyade bir kuantum devresi tanımlarsınız: qubitler, kapılar ve ölçümler. Bir fonksiyonun X döndüreceğini beklemek yerine genellikle olasılıklar elde edersiniz—aynı programı birçok kez çalıştırmanız farklı sonuçlar verebilir.
Q# (Microsoft) ve Qiskit (IBM) devre işlemleri ve ölçümler etrafında kurulu. Süperpozisyon ve dolaşıklık kurarsınız, sonra ölçümle çöküş sağlarsınız. Bu zihniyet tipik uygulamalardan çok farklıdır.
Gerçek kuantum donanımına hiç dokunmasanız bile bu araçlar temel kavramları somutlaştırır:
Çoğu kişi kuantum programlarını simülatörlerde çalıştırır. Gerçek cihazlar gürültü, kuyruklar ve kısıtlar içerir. Simülatörler hâlâ değerlidir: zihinsel modeli öğrenirsiniz, donanım tuhaflıklarıyla uğraşmadan.
Aşağıda iki qubiti dolaşıklığa sokan (Bell çifti) ve ölçümleyen örnek bir Qiskit kodu var:
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
sim = AerSimulator()
result = sim.run(qc, shots=1000).result()
print(result.get_counts())
Genellikle ağırlıklı olarak 00 ve 11 görürsünüz—anlayış anı: qubitler iki bağımsız bit gibi değil, bir çift gibi davranır.
Egzotik bir dili seçmek, hedefinizle başladığınızda daha kolaydır. Bazı diller fikirleri öğretir (mantık, diziler, kuantum düşüncesi), bazıları disiplin öğretir (güvenlik kuralları), bazıları ise problem çözmeyi keskinleştiren eğlenceli kısıtlar sunar.
Emin değilseniz, biraz rahatsız edici ama yine de yapılabilir olanı seçin—sürtünme olmalı, yıldırma değil.
1 saatlik giriş:
Kısa bir öğreticiyi okuyun ve 3–5 küçük örnek çalıştırın. Amaç kodun nasıl göründüğünü ve nasıl çalıştırıldığını anlamaktır.
1 günlük proje:
Tamamlaması kolay bir şey inşa edin. İyi seçenekler:
1 haftalık derin dalış:
Aynı projeyi daha iyi yapı ile yeniden kurun: testler, hata mesajları, dokümantasyon ve performans iyileştirmeleri. Dilin gerçek güçlü ve zayıf yönleri burada netleşir.
Eğer 1 günlük projeyi hızlandırmak isterseniz, küçük bir web çalıştırıcı (React UI + Go backend + PostgreSQL gerekiyorsa) oluşturmak için Koder.ai’yi kullanarak bir iskelet alabilir, plan modunda yineleyip işiniz bittiğinde kaynak kodunu dışa aktarabilirsiniz. Bu, merakı paylaşılabilir bir çalıştırma alanına dönüştürmenin kolay bir yoludur.
Daha fazla pratik deney ve yazıya ulaşmak için blog yazılarını inceleyin.
Araçlar—editörler, çalıştırıcılar, sandbox’lar veya ekip iş akışları hakkında daha fazla bilgi için fiyatlandırma sayfasına bakın ve hangisinin sizi daha düzenli pratik yapmaya teşvik edeceğine karar verin.