CoffeeScript Language | TR

# **CoffeeScript Language | TR** #### [](https://github.com/erdemoflaz/CoffeeScript#-coffeescript-tarih├žesi)**CoffeeScript Tarih├žesi** 13 Aral─▒k 2009'da **Jeremy Ashkenas** taraf─▒ndan ├ž─▒kar─▒lm─▒┼č bir dildir. Coffeescript dili 24 Aral─▒kta, ilk etiketli ve belgelenmi┼č **0.1.0** s├╝r├╝m├╝ ile kullan─▒ma sunulmu┼čtur. CoffeeScript, gitHub ├╝zerinde **a├ž─▒k kaynak kodlu** olarak geli┼čtirilen bu dile g├╝nde 300'den fazla destek geliyordu. Ashkenas, **24 Aral─▒k 2010**'da, projenin ilk kez ilan edildi─či Hacker Haber'e 1.0.0 kararl─▒ s├╝r├╝m├╝n├╝ a├ž─▒klad─▒. G├╝n├╝m├╝zde son versiyon olarak **1.12.5**'i kullan─▒r. #### [](https://github.com/erdemoflaz/CoffeeScript#-coffeescript-nedir)**CoffeeScript Nedir?** **CoffeeScript** , JavaScript'e derlenen bir dildir. CoffeeScript'e en basit anlam─▒yla sadece Javascript'tir diyebiliriz. CoffeeScript'te yazd─▒─č─▒n─▒z her kodu Javascript'te yazm─▒┼č gibi olursunuz. Aralar─▒ndaki fark neredeyse yok denecek kadar azd─▒r. Javascript'in parantezlerini girintileri ├ž─▒k─▒nt─▒lar─▒n─▒ yok ederek yaz─▒lan bu dile coffeescript deniyor. Genellikle syntax ─▒ sade, kullan─▒┼čl─▒ ve ├žabuk ├Â─črenilebilmesinden ├Ât├╝r├╝ s─▒kl─▒kla kullan─▒lmaktad─▒r. ├ľzetle ├žok sade bir yaz─▒m ┼čekli oldu─ču s├Âylenir; ├Ârne─čin javascriptte yazm─▒┼č oldunuz bu kod: var kare = function(x) { return x * x; } CoffeeScript'te b├Âyledir kare = (x) -> x * x #### [](https://github.com/erdemoflaz/CoffeeScript#-tasar─▒m-ama├žlar─▒)**Tasar─▒m Ama├žlar─▒** CoffeeScript'in g├╝zel yanlar─▒ndan birisi, yazabilece─činiz kod yo─čunlu─čudur. Bu sebeple insanlar taraf─▒ndan s─▒kl─▒kla tercih edilir. Bu dil ile yazaca─č─▒n─▒z projeyi coffeescript ile salt bir halde/dille olu┼čturmak ├žok kolayd─▒r. Programlama dillerinin ├žo─čalmas─▒n─▒n nedenlerinden biri, dil tasar─▒m─▒nda ├želi┼čen b├╝y├╝k d├╝┼č├╝nce farkl─▒l─▒klar─▒d─▒r. Genel durumda, diller ileti┼čim ama├žl─▒d─▒r. Bir programlama dilini yayacak olan insan toplulu─ču dili net bir dille ├žok iyi bir ┼čekilde anlatmal─▒d─▒rlar ve ayn─▒ zamanda semanti─či net bir ┼čekilde yorumlamaya ├žal─▒┼čan derleyicilerin kullanmas─▒ gerekti─čini bilmelidirler. Derleyici, ne yapt─▒─č─▒n─▒ daha do─čru bir ┼čekilde belirleyebilir, daha iyi kod ├╝retebilir. Sen yanl─▒┼č yazsan da o sana do─črusunu g├Âsterebilir. Kod ne kadar a├ž─▒k olursa, okumas─▒ da o kadar kolay olur. Coffeescipt'in en b├╝y├╝k ama├žlar─▒ndan birisi ise olabildi─čince sade ve ak─▒c─▒ bir dil olmakt─▒r. Geli┼čtiricinin okumakta g├╝├žl├╝k ├žekti─či kod bu geli┼čtiriceye zevk vermez. Coffeescript dili, JavaScript listeleri i├žermez, ancak diziler ve nesneler gibi temeller bulunmaktad─▒r. CoffeeScript'te k─▒saca daha iyi bir ├Ârnek, nesne ve i┼člevin k─▒saltmas─▒d─▒r. JavaScript nesnelerini olu┼čturmak i├žin olduk├ža basit bir s├Âzdizimi i├žeriyor olmas─▒ ├žok fazla g├╝zellik sa─čl─▒yor. CofffeeScript k├Â┼čeli ayra├žlar─▒ atl─▒yor olmas─▒ ├žok sade bir dille kod yazman─▒za olanak sa─čl─▒yor. #### [](https://github.com/erdemoflaz/CoffeeScript#-hedef-kitlesi)**Hedef Kitlesi** Bu dilin hedef kitlesi, aktif olarak javascript yazan veya javascript benzeri bir dil kullanmak isteyip, bu dil tercihini yaz─▒m─▒ sade, ├Â─črenmesi kolay olandan yana kullanan ki┼čiler taraf─▒ndan kullan─▒lan bir dil oldu─ču i├žin hedef kitlesi bu tarafa biraz daha kaymaktad─▒r. #### [](https://github.com/erdemoflaz/CoffeeScript#-kullan─▒m-alanlar─▒)**Kullan─▒m Alanlar─▒** ├ľncelikle kendimden ├Ârnek verecek olursam. Ben nodejs ve Ruby on Rails projelerimde hem uyumlu ├žal─▒┼čmas─▒ ve hemde bahsetti─čim ├╝zere basit ve sade syntax'─▒n─▒ sevdi─čim i├žin kullan─▒yorum. Bunun yan─▒nda bir rails projesi olu┼čturdu─čunuzda defaull olarak i├žinde assets klas├Âr├╝ i├žinde javascript klas├Âr├╝nde sonu .js.coffee bitecek ┼čekilde olu┼čturuyor. Genel olarak coffeescript'in kullan─▒m alanlar─▒ bu ┼čekildedir > **Nas─▒l Kurabilirim** > * npm install --global coffee-script #### [](https://github.com/erdemoflaz/CoffeeScript#-destekledi─či-paradigmalar)**Destekledi─či Paradigmalar** > * Multi-paradigm > * prototype-based > * functional > * imperative > * scripting #### [](https://github.com/erdemoflaz/CoffeeScript#-aritmetik-─░┼člem-notasyonu)**Aritmetik ─░┼člem Notasyonu** > * postfix #### [](https://github.com/erdemoflaz/CoffeeScript#-bellek-y├Ânetimi)**Bellek Y├Ânetimi** **Chaplin** mimarisinin ├žekirde─či, en uygun bellek y├Ânetimidir. JavaScript uygulamalar─▒nda gereksiz veri toplama hakk─▒nda geni┼č bir tart─▒┼čma olmamas─▒na ra─čmen, ├Ânemli bir konudur. Ana bellek y├Ânetimine yard─▒mc─▒ olmak i├žin, Chaplin, her denetleyicinin, modelin, koleksiyonun ve g├Âr├╝n├╝m├╝n kendi ba┼č─▒na temizlenmesini sa─člayan g├╝├žl├╝ bir silme s├╝reci boyunca BackboneÔÇÖs Modeli uygun g├Âr├╝lm├╝┼čt├╝r, Olay i┼čleme ve nesneler aras─▒nda referanslar olu┼čturur. Bir g├Âr├╝n├╝m, model de─či┼čikliklerini dinlerse, o modelin dahili _callbacks listesindeki bir g├Âr├╝n├╝m y├Ântemine bir referans─▒ vard─▒r. G├Âr├╝n├╝m y├Ântemleri, genellikle, View.aspx.bind, _.bind (), CoffeeScript'in benzeri kullanarak g├Âr├╝n├╝m ├Ârne─čine ba─čl─▒d─▒r. Bir de─či┼čiklik i┼čleyicisi g├Âr├╝n├╝me ba─čl─▒ oldu─čunda, DOM zaten ayr─▒lm─▒┼č olsa bile g├Âr├╝n├╝m bellekte kal─▒r. ├ç├Âp toplay─▒c─▒ bu referans nedeniyle haf─▒zas─▒n─▒ bo┼čaltamaz. Chaplin'de, yeni bir denetleyici devral─▒n─▒r ve kullan─▒c─▒ arabirimi de─či┼čtikten sonra ge├žerli denetleyicinin kullan─▒mdan kald─▒rma y├Ântemi ├ža─čr─▒l─▒r: Denetleyici, model / koleksiyonlar─▒nda atma y├Ântemini ├ža─č─▒r─▒r ve onlara olan referanslar─▒n─▒ kald─▒r─▒r. ─░mha edildi─činde, her model t├╝m ├Âzelliklerini temizler ve ili┼čkili t├╝m g├Âr├╝n├╝mleri ortadan kald─▒r─▒r. Bir g├Âr├╝n├╝m├╝n elden ├ž─▒karma y├Ântemi t├╝m DOM ├Â─čelerini ortadan kald─▒r─▒r, Bu elden ├ž─▒karma i┼člemi olduk├ža karma┼č─▒kt─▒r ve bir├žok nesne ├Âzel bir atma y├Ântemine ihtiya├ž duymaktad─▒r. Ancak Chaplin'in yapabilece─či en az ┼čey budur. #### [](https://github.com/erdemoflaz/CoffeeScript#-de─či┼čken-kapsamlar─▒)**De─či┼čken kapsamlar─▒** > * lexically scope De─či┼čkenleri d─▒┼č kapsamda tan─▒mlaman─▒z gerekir. ├Ârne─čin counter = null init = -> counter = 0 inc = -> counter += 1 #### [](https://github.com/erdemoflaz/CoffeeScript#-tip-sistemi-ve-tip-kontrol├╝)**Tip Sistemi ve Tip Kontrol├╝** Elle bellek y├Ânetimi ile C benzeri bir sistem sunan CoffeeScript bir diyalektidir. Tip sistemi (g├╝├žl├╝) ve tip kontrol├╝ (static type checking) 'dir #### [](https://github.com/erdemoflaz/CoffeeScript#-hello-world)**Hello World** $ -> console.log("HELLO COFFEESCR─░PT") ya da $ -> alert("HELLO COFFEESCR─░PT") **ASAL SAYI HESAPLAMA** text = '' sayi = 0 asalHesapla = -> sayac = 0 sayi = document.getElementById('sayi1').value i = 2 while i < sayi if sayi % i == 0 sayac++ i++ if sayac == 0 text = 'Asal' else text = 'Asal de─čil.
1 ve Kendisi hari├ž ' + sayac + ' adet b├Âleni var' document.getElementById('demo').innerHTML = text return **F─░BONACC─░ HESAPLAMA** i = undefined fib = [] fib[0] = 0 fib[1] = 1 i = 2 while i <= 10 # Next fibonacci number = previous + one before previous # Translated to JavaScript: fib[i] = fib[i - 2] + fib[i - 1] console.log fib[i] i++ **─░K─░L─░ ARAMA (B─░NARY SEARCH)** binary_search = (val, L) -> return false if L.length == 0 mid = Math.floor(L.length / 2) if L[mid] == val return mid else if val > L[mid] binary_search(val, L[(mid + 1)..(L.length)]) else binary_search(val, L[0..(mid - 1)]) list = [1,2,3,4,5,6,7,8] alert binary_search(18, list) # false alert binary_search(3, list) # 2 alert binary_search(6, list) # 5 **SEZAR ┼×─░FRELEME** caesarShift = (str, amount) -> # Wrap the amount if amount < 0 return caesarShift(str, amount + 26) # Make an output variable output = ''; # Go through each character for c, i in str # Get the character we'll be appending c = str[i] # If it's a letter... if c.match(/[a-z]/i) # Get its code code = str.charCodeAt(i) # Uppercase letters if (65 <= code <= 90) c = String.fromCharCode(((code - 65 + amount) % 26) + 65) # Lowercase letters else if (97 <= code <= 122) c = String.fromCharCode(((code - 97 + amount) % 26) + 97) # Append output += c # All done! output

Yap─▒lan Yorumlar
Erdem OFLAZ

Bir mum, di─čer mumu tutu┼čturmakla ─▒┼č─▒─č─▒ndan bir ┼čey kaybetmez.
 Kategoriler
 Pop├╝ler yaz─▒lar