Dinamik Diller veTip Tanımlamaları

Cumartesi, 24 Ocak 2009 20:26 by ikivanc
Programlama dilleri bildiğimiz gibi yapı olarak Dinamik ve Statik olmak üzere 2ye ayrılır.

Dinamik diller bazı durumlarda pek çok artısı olan ve günümüzde yıldızı parlayan yapılardır. Python/IronPython, Ruby dinamik dillere örnek olacabileceği gibi, C#, VB'i de statik dillere örnek olarak gösterebiliriz.

Peki bir dili ne dinamik yapar?
Dinamik dil program kodları tam olarak derlenmeyip, sadece program çalışacağı zaman client tarafından yorumlanarak çalışır. Yani compile edilme olayı olmadan yorumlayıcısı vasıtasıyla direkt olarak çalışırlar. Bu da başta web siteleri olamak üzere pek çok projede artı olarak yorumlanabilir.

En önemli özelliklerinden biri ve bu yazımızda da üzerinde duracağımız özelliği ise "tip tanımlamaları" yani statik dillerdeki gibi verinizin tipini kullanmadan önce tanımlamamıza gerek kalmıyor.

Integer bir değer gireceksek daha önceden int olarak tanımlamamıza gerek kalmıyacak.

Peki bu bize ne gibi kolaylıklar sağlayacak?
Bir program yazarken en büyük sorunlardan birisi de tip tanımlamalarıdır.Fakat python/ironpython ile ilerde değişkenleri değiştirmek istersek veya istisna oluşturacak durumlar varsa işimizi çok kolaylaştırır.


Tip tanımlamaları ile zaten bildiğimiz tipin adını üzerine yazımıyor muyuz?

Yukarıdaki karikatürdeki gibi zaten var olan nesnelerin üzerine isimlerini yazmaya ne gerek var ki? Programlama dilimiz bizim yerimize tipini yazmadığımız halde girdiğimiz değerlerin tipini algılasa daha güzel olmazmıydı?

İşte IronPython bunu bizim yerimize yapıyor :)

integer bir sayı bildiğimiz gibi sınırı +/-2.147.483.647 dir yani bu sayıların üzerinde tutamaz.  Eğer bu sayıyı aşarsak overflow hatası alırız. Bunun gibi pek çok tipin aralıkları ve sabit  halleri bulunmaktadır.

şimdi ise bunu bir örnekte görelim:

bir x sayısını 2 ile çarpalım;

x * 2

x = 2,000,000,000 olsun

Python/IronPython da
x * 2 = 4,000,000,000 dır

Ruby de
x * 2 = 4,000,000,000 dır

8 yaşındaki yeğenim de çarparak
x * 2 = 4,000,000,000 buluyor

fakat int olarak tanımlı C# ta
x * 2 = -294,967,296 // overflow hatası alırız...

bunun gibi pek çok alanda karşımıza çıkabilir. Örneğin faktöriyel hesabı yapan bir uygulamada dinamik dillerin farkı açıkça belli olur

>>>def fact(sayi):
... if sayi == 1:
...... return 1
... return sayi * fact(sayi-1)

>>> fact(150)
571338395644585459047893286526105400318955357860112641825483758
331798291248453983931265744886753111453771078787468542041626662
501986845044663559491959220665749425920957357789293253572904449
624724054167907221184454371222696755200000000000000000000000000
00000000000l

>>> fact(200)
788657867364790503552363213932185062295135977687173263294742533
244359449963403342920304284011984623904177212138919638830257642
790242637105061926624952829931113462857270763317237396988943922
445621451664240254033291864131227428294853277524242407573903240
321257405579568660226031904170324062351700858796178922222789623
703897374720000000000000000000000000000000000000000000000000l

hatta 1000 faktöriyel'i bile overflow hatası olmadan rahatlıkla hesaplayabiliriz.

istersek bunu tek satıra da indirgeyebiliriz:

def fact(x): return (1 if x==0 else x * fact(x-1))

Peki tip tanımlamasındaki esneklikte neler yapabiliriz?

>>> x = "ibrahimkivanc"
>>> print x
ibrahimkivanc

>>> x = 10
>>> print x
10

>>> x = 10.53
>>> print x
10.53

>>> x = True
>>> print x
True

>>> x=["dizi","ilk","ikinci"]
>>> print x
['dizi', 'ilk', 'ikinci']



x sayısını ilk başta tanımlamadık programımızda x değişkenini 5 farklı tipte, string, integer, float, bool ve bir dizi olarak kullandık.  Bunun gibi pek çok farklı örnekler vermemiz mümkün.

Bu tip tanımlaması olmadığı için özellikle XNA oyun programlamada çok büyük kolaylıklar sağlıyacağı ve önümüzdeki günlerde IronPython ile Visual Studioda XNA projeler geliştilecek entegrasyonu geliştirileceği duyumlar arasında.

Bu yazımızda dinamik dillerin tip tanımlama özelliğine yakından baktık. Takıldığınız, sormak istediğiniz veya düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresime iletebilirsiniz.

Hepinize kolay gelsin...
Tags:   ,
Categories:   IronPython | Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

Nerde O eski All-Star Oylamaları...

Perşembe, 15 Ocak 2009 16:50 by ikivanc
Her sene adettendir NBA All-Star Haftasonu için konferans ilk 5lerinin seçimini yaparım... Bu sene de oyumu son 3 gün kala kullandım fakat artık eskisi gibi tadı yok :(

Önceden 90larda mektupla oy kullanılır ve her kişinin 1 oy hakkı varmış. İlk kez oy verdiğim zamanlarda her kullanıcının 1 oy hakkı vardı sadece + hangi oyuncunun ne kadar oyu var onu bilmiyorduk son güne kadar. Şimdi ise yeni uygulamalarda birisi her kullanıcı her gün yeniden oy kullanma hakkına sahip ve hangi oyuncunun kaç oyu var onu da görebiliyoruz. Bilmiyorum işin tadını kaçırıyorlar...

Ama ne olursa olsun sonuçta All-Star maçı ve bu sene şölen 15 Şubatta... iple çekiyorum o günü :)) Oylamada İlk 5lerim aşağıdaki gibi; Hedo ve Memo da nasibini aldı oyumdan :))

Tags:  
Categories:   NBA
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

Imagine Cup Fotoğrafçılık Kategorisi

Çarşamba, 14 Ocak 2009 18:01 by ikivanc


Microsoft Imagine Cup fotoğrafçılık kategorisi Yazılım Geliştirme kategorisi kadar duyulmamakla birlikte pek çok kimse tarafından çokça bilinen bir kategori değildir. Bu blog postumda Fotoğrafçılık kategorisinden ve katılım şartlarından bahsedeceğim.

Imagine Cup yarışması Microsoft’un öğrenciler arası düzenlediği ve çeşitli kategorilerde fikirleri, yetenekleri olan ve kendisini göstermek isteyen gençlere fikirlerini  sunmalarına bir şans tanıdığı bir yarışmadır. Her sene finali başka bir ülkede olan yarışmanın bu seneki durağı ise Mısır Kahire. Burada her ülkeden her kategorinin birincileri bir araya gelecek ve dünya birinciliği için kıyasıya yarışacak. Tam bir karnaval/festival havasında geçen bu etkinlik sayesinde hem kendi becelerinizi sergileyecek hem de hayatızda unutulmaz bir tecrübeye yer edineceksiniz.

“Imagine Cup Fotoğraf Yarışması” kategorisinin sorumlusu olarak bu sene ben ilgileniyorum ve tüm sorularınızı ve danışmak istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresim ile bana ulaştırabilirsiniz.

Microsoft Imagine Cup’ın resmi sitesi olan www.imaginecup.com adresinde sitenin Türkçe seçeneği de bulunmakta ve sağ üstteki menüden Türkçeyi seçerek yarışma hakkında bilgiyi buradan da alabilirsiniz.


 
Yarışmanın bu seneki konusu:
“Zorlu problemlerini teknoloji ile çözüldüğü bir dünya düşle” Günümüzde teknoloji kullanılarak çözümlerin üretildiğini fotoğraflarınızla anlatmak.  Fakat yarışmacıları çok zorlayacak bir konu çünkü konu çok geniş ve yoğunlaşmada fikir üretmede zorluklar çekilebilir bunun için de Microsoft; Birleşmiş Milletlerin Milenyum Hedeflerini bizlere fikir sunması için konu başlıkları arasında verdi. 8 Ana başlık aşağıdaki gibi:
   1- Açlığı ve yoksulluğu yok etme
   2- Evrensel temel eğitimi sağlama
   3- Cinsiyet eşitliğini sağlama ve toplumda kadın haklarını artırma
   4- Çocuk ölümlerini azaltma
   5- Anne sağlığını artırma
   6- AIDS, malaria ve diğer bulaşıcı hastalıklar mücadele
   7- Sürdürülebilir bir çevre sağlama
   8- Gelişimi sağlamak için küresel bir birliktelik sağlama

Bu ana başlıklar ışığında fikir türetimi size kalmış.

Yarışmanın Amacı:
Fotoğraf kategorisinin amacı, kelimeleri kullanmadan sadece fotoğraflarla bir hikaye anlatmaktır. Her ekip çektiği fotoğraf serisi ile 2009 Imagine Cup temasını izleyenlere; vermek istedikleri duyguyu fotoğraflarıyla; bir fikir oluşturarak, üzerinde düşünmelerini sağlayarak iletmektir.

Yarışmaya katılım tarihleri:
Yarışma 3 Aşamada tamamlanacak olup ilk kayıt için son gün 1 MART, eğer ilk aşamayı geçerseniz 2. Aşama için son gönderme tarihi 20 Mayısta ve eğer dünya finaline yani 3. Aşamaya kalırsanız Temmuz Ayında gerçekleştirilecek. Elemeler online ve tek merkezli yapılacak olup Türkiyede elemeleri olmayacak. Mayıs Ayında açıklanacak sonuçlar dahilinde finalde Kahire’de Türkiye’yi  temsil edecek ekip belirlenecek.

Kayıtları imaginecup.com adresinden register olarak yapabilir ve yarışmaya fotoğraf göndermeye hak kazanabilirsiniz.

Yarışmaya Katılım ve Kuralları:
Başvuru Imagine Cup 2009 temasına “Dünyanın en zorlu problemlerini teknoloji sayesinde çözdüğünüz bir dünya düşleyin!” uygun sosyal bir mesaj içermelidir.

Bu yarışmaya 1 veya 2 kişilik proje ekibi  ile katılabilirsiniz ve başınızda bir akademik danışman olmalı. Ekip olarak imaginecup sitesinde de ekip oluşturup o ekibe üye olmalısınız ve ilk aşama için fotoğraflarınızı yüklemelisiniz.

Bu yarışmaya tüm üniversite öğrencileri ve yüksek lisans öğrencileri katılabilirler.

Fotoğraf projeniz ilk tur için 12 fotoğraftan oluşmalıdır. Bu fotoğrafları slayt şeklinde hazırlayarak yarışma kurallarına uygun içerik ve nitelikte olması gerekmektedir.

Tüm Fotoğraflar dijital formatta olup; renkli ve siyah beyaz olmalıdırlar.

Tüm proje materyalleri ingilizce olarak teslim edilmeli ve sunulmalıdır.

Yarışma Aşamaları:
Genel olarak her aşamanın kendine has kuralları vardır ve eğer tur atlarsanız 2. ve 3. Aşamadan da verilen tarihlerde sorumlu olacaksınızdır. Yarışmaya ilk katılım için sadece 1. Aşamadaki kuralları gözlemlemeniz size faydalı olacaktır.

1. Aşama
Birleşmiş Milletlerin 8 ana milenyum hedefleri ışığında 12 fotoğraftan oluşan fotoğraf projeniz, toplamda 25 MB’ı geçmeyecek büyüklükte olup aşağıdaki niteliklere de sahip olmalıdır.
Maksimum boyut : 1024 piksel
Fotoğraf formatı : JPEG
Renk Uzayı : sRBG

2.Aşama

İkinci aşamaya toplamda 200 ekip kalacaktır. İkinci aşamada, takımın (eğer ikinci aşamada yarışmaya hak kazanmışsanız) Imagine Cup 2009 Temasını “Dünyanın en zorlu problemlerini teknoloji sayesinde çözdüğünüz bir dünya düşleyin!” içeren 12 fotoğraftan oluşan bir fotoğraf hikayesi oluşturmalı ve teslim etmelidir, ve teslim edilecek bu hikaye Microsoft Powerpoint ya da başka bir Standard fotoğraf hikayesi görüntüleme formatında 25 mb’ı geçmeyecek büyüklükte tek bir elektronik dosya şeklinde olmalıdır. Fotoğraf hikayesindeki her bir fotoğraf aşağıdaki gereksinimlere uygun olmalıdır:
Maksimum boyut : 1024 piksel
Fotoğraf formatı : JPEG
Renk Uzayı : sRBG

3. Aşama – Dünya Finalleri
Dünya Finallerine 6 ekip kalacaktır. Üçüncü aşamada, takımınız (eğer üçüncü aşamada yarışmaya hak kazanmışsanız) Dünya Finallerinde yarışacaktır. 3.aşama detayları Dünya Finallerinde  belirlenecektir. Yarışma konusu ve yarışma koşullarınız Dünya Finallerinde size sunulacak yarışma detaylarına bağlı olacaktır.

Değerlendirme kriterleri:
1. ve 2. Aşamada aşağıdaki kriterler göz önünde olacak olup; 3. Aşamada fotoğraflarınızın hikayesini yazı ile değil sunum esnasında juriye siz anlatacaksınız.

     •    %20 Orijinallik: Fotoğraf hikayen yeni bir fikir mi sunuyor, ya da var olan bir fikre yeni teknikler mi katıyor?
     •    %20 Teknik Çalışma: Sadece pozlama ve odaklama değil, ayrıca ilerleyen teknolojinin de kullanımı
     •    %20 Görsel Etki: Kompozisyon, etki, ışık
     •    %20 Imagine Cup 2009 Temasına Bağlılık
     •    %20 Hikaye Anlatma: Fotoğraflarla oluşturduğun hikayen, bir bütünlük içinde hikayeni ne kadar iyi anlatıyor?

Ve fotoğrafçılık kategorisi ödülleri:
Birincilik Ödülü: 8,000$
İkincilik Ödülü: 4,000$
Üçüncülük Ödülü: 3,000$

Tüm yukarıdaki açıklamalar ışığında aklınızda örneğin oluşması için 2008 yılının 1si olan Provisio ekibinin fotoğraf slayt’ına da aşağıdan erişebilirsiniz.



Örnek proje:


Bu alandaki tüm sorularınızı ibrahim.kivanc@msakademik.net mail adresim ile bana ulaştırabilir, Fotoğrafçılık kategorisindeki güncel gelişmeler ve daha detaylı bilgi için www.ibrahimkivanc.com adresimden takip edebilirsiniz.

Kapat Gitsin...

Pazar, 11 Ocak 2009 06:36 by ikivanc


Bazen o kadar çok istiyorum ki; içinden çıkamadığım; çözüm üretemediğim anlarda o durumdan kurtulmayı... uzaklaşmayı... başka diyarlara gitmeyi...

Belki de Aç/kapat butonuna sahip olmayı...

İstemediğim zaman o durumu kapatabilmeli... Ya da yeni bir başlangıç için o tuşu kullanabilmeyim...

Şimdi öyle anlar oluyor ki yeni bir başlangıç için izin vereyim... Bırakayım açsın... söylemekten, denemekten korkmayayım. Kaybedeceğim ne varki zaten diyeyim...

Ama gördükçe, hep ilk adımı attıkça, fedakarlıklarımı zamanla sindirdikçe düşünüyorum da... olmayacak sanırım; cesaretim kalmamış... kapat gitsin!...

Ağlatmadan...

Çarşamba, 7 Ocak 2009 05:04 by ikivanc


Gözlerine bir bak... Nasıl da parlak...
Beni uğurlarken yine yüzüme böyle bak...

Gözlerime bir bak... Nasıl da ıslak...
Bana hoşçakal derken onlara iyi bak...

Ağlamadan...
Ağlatmadan...
Gitmelisin...
Şimdi buradan...
Yağmurlardan...
Rüzgârlardan...
Hesap sor bu...
Sokaklardan...

Cem Adrian - Anladım
Tags:  
Categories:   FotoRoman
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed