Professional Documents
Culture Documents
Tarihçe
Bluetooh'un tarihçesi için Ericsson Crea-World ağ sitesindeki
Bluetooh köşesinden yararlanıyoruz: "1994 yılında Ericsson, cep
telefonları ve cep telefonu aksesuarları arasında kablosuz iletişim
kurabilecek düşük güç tüketimli, düşük maliyetli bir radyo
arabirimi üzerinde araştırma yapmaya karar verdi. Bu karar
Bluetooth teknolojisinin kapılarını açan adımdı. Benzer şekilde bir
cep telefonu ve bir taşınabilir bilgisayar arasında kablosuz
iletişim kurmak için de her iki cihaza küçük bir radyo alıcısı
yerleştirilebilirdi... Bir yıl sonra mühendislik çalışmaları başladı ve
Bluetooth teknolojisinin gerçek potansiyeli daha net bir şekilde
görülebilir oldu. Cihazlar arası iletişimde kabloları kaldırmak
amacıyla start alan bir fikir zamanla yepyeni imkanları da gözler
önüne serdi: Bluetooth uygulamaları; mevcut veri ağlarına
uzanan evrensel bir köprü, çevre birimleri için bir arabirim ve
küçük çaplı cihaz ağları oluşturmak için bir araç olarak da
kullanılabilirdi. ... 1998 Şubat ayında Special Interest Group
(SIG) kuruldu. SIG çatısı altında 3Com, Ericsson, IBM, Intel,
Lucent, Microsoft, Motorola, Nokia ve Toshiba gibi öncü
firmaların yanı sıra binlerce irili ufaklı üye firma da yer
almaktadır. SIG'nin başlangıçtaki görevi, teknolojinin sadece tek
bir şirket tarafından sahiplenilmesini önlemek amacıyla, kısa
menzilli radyo iletişimi sahasında yaşanan teknik gelişmeleri
izlemek ve açık, global bir standardın oluşmasını sağlamaktı.
Yapılan çalışmaların neticesinde 1999 Temmuz ayında ilk
Bluetooth spesifikasyonunu çıkarıldı. SIG'nin önemli çalışmaları
arasında bu spesifikasyonun geliştirilmesi yer alıyor. Kuruluşun
önde gelen diğer görevleri ise birlikte çalışabilirlik gereksinimleri,
frekans bandı harmonizasyonu ve teknolojinin kitlelere
tanıtılması. ... "
Kullanım Alanları
Bir sistemde Bluetooth™ bağlantısı olabilecek araçlar ile ilgili
herhangi bir kısıtlama düşünmeyin. Bir buzdolabı yada bir
vantilatörü de Bluetooth™ arabirimi ile denetleyebilirsiniz.
Elbette ki bu, erişim için ekleyeceğiniz bileşenlerin düşük
maliyetli olmasını gerektirmektedir. Şu anda elimizde bulunan ilk
nesil bileşenler bile oldukça makul bir şekilde fiyatlandırıldığından
kısa dönemde Bluetooh'un genel anlamda yaygınlık kazanacağını
düşünebiliriz. Pazar araştırmaları da koşut biçimde 2005'e kadar
taşınabilir araç sahibi sayısının 1 milyarı bulacağını öngörmekte.
Bluetooth™'un sunduğu 2 Mbit/s veri erişimi sayesinde taşınabilir
araçlarda Internet erişimi, gerçek zamanlı görüntü aktarımı ve
bir çok çoklu ortam uygulaması beklenebilecek. Bu da üçüncü
nesil (3G) olarak adlandırdığımız taşınabilir araçların tanımı
zaten.
Topoloji
Bluetooth araçları Piconet ve Scatternet adını verdiğimiz ağlar
içerisinde yer alırlar ve haberleşirler. Şimdi bu iki önemli tanıma
bakalım.
Karşılıklı olarak yarıçapı içinde olan iki araç birbirleri ile bağlantı
kurabilirler. Bir bağlantı kuran araçlar bir Piconet
oluşturmaktadır. Şekil 1'de gördüğünüz bulut sembolü bir
Piconet'i simgelemektedir. Bir Piconet'te bulunan araçlardan
birisi yönetici (master) rolü üstlenir. Yönetici araç, yarıçapı
içindeki bütün diğer araçların (köleler, slave) listesini tutar. Her
Piconet'de sadece bir yönetici bulunur.
Sistem Çalışması
Buetooth araçları dört ayrı çalışma durumundan birisindedirler.
Aktif, koklama, durağan ve park. Bağlantı sırasında paketler
gidip gelirken bu durumlardan geçilir. Aktif durumdaki bir araç,
yönetici-köle kanalını, kendi zaman aralığında dinleyerek, kendi
AM_ADDR'sini içeren paketleri bekler. Araç sadece kendi zaman
aralığında dinleme işleminde bulunduğu için aktif mod enerji
anlamında en verimli durumdur. Koklama durumundaki bir köle,
kanalı yönetici tarafından kendisine bildirilen bir zaman
aralığında periyodik olarak dinler. Bu özellikle birden fazla
Piconetde yer alan köleler için enerji tasarrufu yapmaya yönelik
bir uygulamadır. Yönetici köleye paketleri sadece önceden
belirttiği koklama zaman aralıklarında yollar. Durağan durumdaki
bir köle belli işlemleri yapamaz ancak yönetici ile frekans eş
zamanlılığını korur. Bu durumdaki bir köle hala AM_ADDR'sini
korur. Yani aktif duruma geçtiği zaman eski adresi ile
çalışacaktır. Park durumdaki bir köle ise park üye adresi
(PM_ADDR) ve erişim isteme adresi (AR_ADDR) olarak iki adres
alır. park durumu bir yöneticiye 7'den daha fazla köle bağlandığı
zaman ortaya çıkar. Park durumundaki bir köle, aktif duruma
geçmek için yöneticiye AR_ADDR'si ile başvurur. AR_ADDR'lerin
her köle için farklı olmak zorunda olmadığını ancak
PM_ADDR'lerin her köle için farklı olduğunu bilmeniz yararlı
olacaktır. Bu sayede bir Piconetde yer alan köle sayısı 7'den
255'e çıkartılırken iletişimin verimliliği de korunmuş olur.
Sonuç
Sonuç olarak Bluetooth™ yeni ve ilginç bir teknoloji olarak bir
çok uygulamaya açık.
Bora Güngören.
b.gungoren@ieee.org
BJARNE STROUSTRUP ile SÖYLEŞİ
Mart ayı içinde düzenlediğimiz Serbest Yazılım Yarışması
Etkinlikleri çerçevesinde ülkemize gelen, C++ programlama
dilinin yaratıcısı Bjarne Stroustrup ile sizler için C++ üzerine bir
söyleşi yaptık. Şimdi sizi Bjarne Stroustrup ile başbaşa
bırakıyoruz.
Biltek: C++'ın ilk tasarımı ve uygulamasının ardındaki fikirler
nelerdi? Bu fikirler hala güncel ve geçerli mi?
Bjarne Stroustrup: İlk düşünce, programlamayı aynı anda şık
ve verimli hale getirebilecek bir dil yaratmaktı. Bu elbette ki her
zaman geçerlidir. Son zamanlarda sunulan diller büyük boyutlu
sistem oluşturulması için uygun gözükmemekte.
Benim seçtiğim yaklaşım olan C'ye Simula sınıf kavramını
eklemek ve durağan tip denetimini iyileştirecek araçlar özellikler
eklemek sadece başlangıçtı. Şablonlar ve hata durumları gibi
daha yeni iyileştirmeler C++ programlamasını ideallerime ilk
özellikler kümesi ile olabileceğinden çok daha fazla yaklaştırdı.
ISO standart C++ daha önceki sürümlere göre ideallerime çok
daha yaklaşıyor. Standart kitaplık, C++'ın gücü için bir çok örnek
sunmakta. Yakın zamanda standart ve özelleşmiş C++
kitaplıklarında önemli ilerlemeler bekliyorum. Bu konuda C++
sayfamdaki bağlantılara bakabilirsiniz.
Önemli olarak, C++ kullanarak sistem oluşturulmasında
kullanılan tekniklerde de şablonlar ile genelleşmiş programlama
ve yapıcı ve yıkıcılarla hata durumu güvenli kaynak yönetimi gibi
önemli ilerlemeler gördük.
Biltek: C toplumunun C++'a tepkisi ne oldu? C++ genel olarak
kabul gördü mü yoksa, C++ programcılarının büyük çoğunluğu
önce C öğrenenler mi?
B.S: Tepkiler değişiyor. Bazıları C++'a balıklama atlarken
bazıları herhangibir ipucuna sahip olmadıkları için ilk öğrendikleri
stile devam ediyorlar ve bazıları da "karmaşık" C++ özelliklerine
şiddetli tepki verirken, bu özelliklerin destekledikleri
programlama stilleri ve tekniklerini kaçırıyorlar.
C++ programcılarının hala önce C öğrendiklerinden
kuşkulanıyorum, ancak bu sadece yanlış eğitim politikasından
kaynaklanmakta. C++ C'den çok daha kolay bir ilk dildir. Çünkü
daha iyi tip denetimi ve daha iyi bir standart kitaplığı var Daha
ayrıntılı bir tartışma için ev sayfamdan indirebileceğiniz,
"Standart C++'ı Yeni Bir Dil Olarak Öğrenmek" (Learning
Standard C++ as a New Language) adlı yazıma bakabilirsiniz.
Biltek: Sizce C++ Web'i kaçırdı mı?
B.S: Ya da belki Web C++'ı kaçırdı? Pazara yeni ticari
uygulamalar çıkarma koşturmacasında, iyi ölçeklenebilir sistem
tasarımı sıklıkla gözardı edilmiştir. Bence C++, herhangi başka
bir büyük boyutlu sistem gibi Web'in altyapısında da genişleyen
bir role sahip.
Ayrıca tarayıcınız hangi dilde yazıldı? Hemen her durumda, C++
elbette.
Biltek: C++ için 80'ler ve 90'lardaki kilometre taşları nelerdir?
Bu on yıl içinde dikkate değer bir olay öngörebiliyor musunuz?
B.S: 80'lerdeki en önemli olaylar orijinal C++ derleyicimin ilk
ticari sürümünün çıkması ve TC++PL (The C++ Programming
Language) kitabımın birinci baskısının çıkması. İkisi de aynı
günde oldu, 14 Ekim 1985.
90'lardaki en önemli kilometre taşı olarak da ISO standartı
(1997'de oybirliği ile kabul edildi ve 1998'de çıktı) ve TC++PL
kitabımın üçüncü baskısını görüyorum.
Bu olay çiftlerini, dil özelliklerini desteklemek için var oldukları
programlama tekniklerine bağlamanın önemini vurgulamak için
seçtim.
Tahmince, 00'lardaki anahtar olay, ISO Standart C++’ın C++
0x'inci güncellemesi olacaktır. Benim öngürüme (ve umuduma)
göre bu yeni standart kitaplıklar içerecek ama ana dil
değişiklikleri olmayacak. Eş zamanlılık, kaynak yönetimi, yapı
eşleme ve daha bir çok konuda standartlaşmış kitaplıklar
umuyorum. TC++PL'ın 4. baskısını yazmam gerekecektir ancak
C++0x yıllar ötede. C++ toplumunun 1998 standartını hem
sunulan araçları hem de Standart C++’ı iyi kullanmak için
gereken teknikleri anlamak anlamında yakalaması gerekli.
Biltek: Java ve C#, C++'ın alternatifleri olarak sunuldu. Java ve
C# için birer "alternatif" olarak neler düşünüyorsunuz?
B.S: C++ baskın genel amaçlı programlama dili oldu. Bu da her
yeni dilin C++'a alternatif olarak pazarlanacağı demek oluyor.
Birilerine ait olan programlama dillerinin hayranı değilim. Ayrıca
bir programlama dilini belli bir işletim sistemi yada mimari ile
sıkıca bağlama fikrini de sevmiyorum. Ayrıca bu dillerin
vurgulanan "basitliklerini" de olgunlaşmamışlık, deneyimli
programcıları kaybetmek pahasına acemi programcılara yönelik
bir odaklanma ve büyük boyutlu sistemleri kaybetme pahasına
küçük programlara odaklanmanın sonucu olarak görüyorum.
Bunu söyledikten sonra, benim bir sağlayıcıya bağlanma
korkularımı paylaşmayan ve benim büyük boyutluluk ve başarım
gereksinimlerime sahip olmayan birisi, belli sık görülen
uygulamalar için doğrudan desteği olan daha kısıtlı bir dilden
bazı avantajlar edinebilir.
Biltek: Yeni standart gerçek dünyaya ne kadar girdi?
(derleyiciler, programcılar tarafından kullanım, vs.)
B.S: Yakın zamandaki C++ uygulamaları, (hata durumları ve
şablonlar) üzerine dayanan yeni C++ programlama tekniklerini
kullanmak için standarta yeterince yakın. Ayrıca değişik
derleyiciler ve sistemlerde iyi taşınabilirlik elde edebilmekteyim.
Bir çok C++ programcısının standart kitaplık ve diğer şablon
tabanlı kitaplıklara dayanan ileri ve üretken C++ stiline
geçtiklerini görmekteyim. Doğal olarak herkes C++'ın ve
desteklediği tekniklerin standartla birlikte değiştiğini anlayamadı.
Bir çok programcı hala antik (ve verimsiz) C++'a "daha iyi bir C"
yada "sınıf hiyerarşileri ile nesne tabanlı programlama yapılan bir
dil" olarak baktılar. Zaman geçtikçe daha çok programcı
genelleşmiş programlama tekniklerinde, hata durumlarını
kullanmakta ve çok paradigmalı programlamada (yani nesne
tabanlı programlama, genelleşmiş programlama, vb. değişik
paradigmalardaki tekniklerin bir karışımı ile program yazmakta)
ustalaşacak.
Bu tekniklerin Değişik kullanıcı gruplarında yaygınlaşma
seviyelerinde ciddi farklar var. TC++PL3 ve Koenig ve Moo'nun
"Accelerated C++"'ı gibi yeni kitaplar bu konuda yardımcı oluyor.
Biltek: Grafik Kullanıcı Arabirimleri (GKA) ve "şirin"
yöntembilimlerin programlayı gerçekten değiştireceğine inanıyor
musunuz?
B.S: Kesinlikle. Bir programın arabirimini, örneğin C++ Builder
ile hazırlamakla, doğrudan kitaplığı kullanan bir program yazmak
arasında dağlar kadar fark var. Ancak her programlama işi GKA
araçlarına uygun olmayabilir ve C++'ın en büyük gücü olduğunu
düşündüğüm ciddi sistem oluşturulması alanının genelde GKA
araçlarından fazla etkilenmediğini düşünüyorum.
Değişik insanlar "şirin yöntembilimler" ile farklı şeyler
kastediyorlar. Ben tasarım yöntemleri ve destekleyen araçların
büyük bir destekçisi değilim. Ancak veri soyutlama, nesne
tabanlı programlama ve genelleşmiş programlamanın güçlü bir
destekçisiyim. Genel tasarım destekleyen sınıflar ve şablonlar
olmadan oturup bir kaç sayfa kod yazan herkes sadece zaman
harcamakta ve gereksiz bakım sorunları yaratmaktadır.
İyi programların anahtarı, sınıflar, sınıf hiyerarşileri ve tasarım
seçimlerini doğrudan temsil eden ve farklı konuları kodda
ayırabilen şablonlardır. Sıklıkla zorlu bir uygulamaya en iyi
yaklaşım, destekleyen kitaplıklarla olur. Kitaplık desteği olmadan
C++'da hemen her şey zor olur. Uygun dil desteği ile de çoğu
şey kolaydır. Bu C++'ın kitaplık hazırlama ile ilgili özelliklerini
iyileştirmek için harcanan çabanın büyük çoğunluğunun bir
nedeni.
Biltek: Bilgisayarlara/programlamaya yeni başlayan
programcılara ve öğrencilere ne önermek istersiniz?
B.S: Sadece bilgisayar/programlama çalışmayın. Bir yada daha
fazla alanda deneyim kazanın ki uzmanlığınız size
bilgisayar/programlama alanında işe yarabilecek fikirler versin.
Ayrıca düşüncelerinizi hem yazılı hem de sözlü olarak iyi
sunabilmeyi öğrenin. Açıklanmayan fikirler sterildir.
Programlara ve sistemlere bakarken, kavramları mümkün
olduğunca herhangi bir dilde kod olarak ifade etmeye çalışın. Çok
sayıda programlama dili öğrenin. Sadece bir dil bilmeniz hayal
gücünüzü kısıtlayabilir ve sığlık için iyi bir reçetedir. Genel olarak
bir çok sistem, fikir ve teknikle tanışın. Öğrenci olarak geçirdiğiz
zamanınız geniş araştırmalar yapabileceğiniz birzamandır. Daha
sonra, "gerçek dünya"da özel bir sorun üzerinde konsantre
olmanız gerekecek ve araştırmak ve deney yapmak için çok daha
az zamanınız olacak.
C++ ile ilgli daha fazla bilgi için ev sayfama bakın:
http://www.research.att.com/~bs
PHP ve Dinamik Sayfa Tasarımı Üzerine
"Değişmeyen tek şey var, değişmenin kendisi" demiş şair yıllar
önce. Ancak çağımız için hafif kalan bir söz artık.
Her geçen gün bizleri şaşırtan gelişmelerle karşımıza çıkan bilim
dünyasının, bu değişimi en abartılı şekliyle yaşatan dalıdır
"Bilgisayar Bilimleri". Birkaç yıl öncesine kadar hayal bile
edemediğimiz şeyler artık oldukça sıradan geliyor. Tüm bunları
sağlayan insanoğlunun imkansızı yapma hırsının tükenmemesi
dileğiyle asıl ilgi noktamız, ağ sayfalarının dinamizmine bakalım.
HTML
İnternet ilk oluştuğu dönemlerde ağ üzerinde bilginin sunumu
için HTML(Hypertext Markup Language) dili de oluşturuldu. HTML
saf metin dosyasıdır. Bu metin dosyasında dilin tanımladığı özel
etiketler(tag) kullanılır. Sunucu da duran bu dosya istemci
tarafından çağrıldığında olduğu gibi istemci bilgisayara gönderilir.
HTML burada kullanıcının tarayıcısı(browser) tarafından
yorumlanarak görüntülenir. Daha iyi anlayabilmek için aşağıdaki
basit HTML dosyasını ve yorumlanmış halini inceleyelim.
Html dosyamız:
<html>
<body>
<p>Hoşçakal <b>Dünya</b> </p>
</body>
</html>
Tarayıcımızda görülen:
Hoşçakal Dünya
PHP
PHP, Rasmus Lerdorf'un ilk başta sadece kendi sitesinde
kullanmak üzere yaptığı, sayaç, ziyaretçi defteri gibi bir kaç
araçtan oluşuyordu. Zamanla başkaları tarafından da
kullanılmaya başlanınca PHP'yi geliştirip bir form yorumlayıcısı
ekleyen Lerdorf, PHP/FI Sürüm 2'yi çıkardı. Bundan sonra artık
PHP, kişisel bir proje olmaktan çıkarak, kullanıcıları tarafından
açık kod(open source) olarak geliştirilen başlı başına bir web
programlama dili oldu. PHP3 ise, birçok yeni özellikle ve
tamamıyla yeniden yazılmış olarak karşımıza çıktı. PHP4'e
gelindiğinde ise güçlü ZEND scripting motorunu kullanmaya
başlamıştı. Açık kodlu olması sayesinde çok hızlı bir şekilde
yayıldı. 1997'lerde 50.000 site tarafından kullanılan PHP,
günümüze gelindiğinde 4 milyona yakın sitede kullanılmaktadır.
Dilin Yapısı
Kendisi de C ile yazılan PHP, tamamıyla C'nin yapısının Web için
uyarlanmış halidir. Yani C/C++ bilen biri için PHP öğrenmek en
fazla bir saat sürecektir. En büyük özelliği ise HTML dosyasına
normal bir etiket ekler gibi eklenebilmesidir. Bunun için <? ve ?>
etiketlerini kullanır. Sayfa çağrıldığı anda dosya önce PHP
yorumlayıcısına gider. Burada <?-?> etiketleri arasındaki PHP
kodu işlenir ve oluşturulan HTML dosyası istemciye gönderilir.
Örneğin,
PHP dosyamız:
<html>
<body>
<? echo getenv("HTTP_USER_AGENT"); ?>
<br>
<? echo date("H:i:s"); ?>
</body>
</html>
Tarayıcımızda görülen:
Kaynaklar:
http://www.php.org.tr
http://php.weblogs.com
Bahadır Yağan
bahadir@ieee.metu.edu.tr