Ağu 03

Dünya Düz mü Yuvarlak mı?

Geçenlerde kitapçıları gezerken Thomas Friedman’ın World Is Flat (Dünya düzdür) adlı kitabının Türkçe’ye çevrilmiş olduğunu gördüm.Daha önceden İngilizcesinden okuyup çok beğendiğim bu kitabın yurdum insanıyla buluşması beni son derece mutlu etti.Umarım Amerika,İngiltere gibi ülkelerde çok satanlar listesinde yer alan bu kitap burada da aynı derecede ilgi görür.Google’daki aramam sonucunda kitapla ilgili güzel bir inceleme yazısı buldum.Ayrıca kitabın özetini de www.ozetkitap.com sitesinde bulabilirsiniz.Yaşadığımız çağı anlamaya çalışan herkese bu kitabı okumayı öneriyorum.Kitap Boyner Yayınlarından yayınlandı.

İnceleme yazısı



Ağu 02

Programlama sadece bilgisayarcıların işi mi?

*Bu yazı daha önce www.antrak.org.tr sitesine yayınlanmıştır.

Bu yazımda bir elektrik-elektronik mühendisliği öğrencisi olarak programcılığın bu alandaki önemini tartışacağım.Programcılık denildiğinde ilk olarak akla programcılar ve bilgisayar mühendisleri gelmektedir.Genel olarak program denildiğinde de (yazılım da diyebiliriz) akla gelen ilk şeyler son kullanıcıya hitap eden üst seviye yazılımlar veya işletim sistemleri oluyor.Halbuki günümüzde programcılığın önemi elektronik mühendisliğinde de oldukça artmıştır.Bunun için elektronik biliminin gelişimine bir göz atalım.

Elektronikte yaşanılan müthiş ilerlemenin belki de başlangıcı sayılabilecek olay Bell Laboratuarlarında “transistör” ün geliştirilmesi olmuştur.Bu buluşla birlikte ,hantal olan diyot lambaların yerini çok daha küçük boyutta yarı iletkenler almıştır.Buna elektronik devriminin başlangıcı da diyebiliriz.

Transistörün ardından gelişen “tümdevre” teknolojisi yeni bir devrimi müjdeliyordu.Artık birçok eleman içeren devreler tek bir yonga içine sığdırılabiliyordu. Artık devreler tümleşik olarak üretiliyordu.Seri üretim ile maliyetler de çok düştü.
Elektronik dünyasındaki sonraki büyük gelişme mikroişlemciler olmuştur.Buna mikroişlemci devrimi de diyebiliriz.Mikroişlemci terimi günlük hayatımızda bilgisayarlarla birlikte giriş yaptı.Ancak burada konumuz elektronik mühendisliği olduğu için bu yönden inceleyeceğiz.Mikroişlemci teknolojisindeki gelişmeler onbinlerce transistörü ufacık bir hacme soktu.Bununla beraber imalat teknolojisindeki gelişmeler fiyatları oldukça aşağıya çekti.

Mikroişlemci devrimiyle birlikte bilgisayarlar dünyada hızla yayıldı.Bununla beraber elektronik mühendisliğinin bir dalı olmaktan çıkarak bilgisayar mühendisliği ayrı bir alan haline geldi.

Elektronik mühendisliği açısından mikroişlemcilere baktığımızda önceden belirli fonksiyonları yerine getiren sabit tasarımlı devreler yerine içindeki program ile fonksiyonları değiştirilebilen “gömülü sistemler” ortaya çıktı.Endüstride önceleri röle mantığıyla ,birçok anahtarlama elemanıyla gerçekleştirilen lojik fonksiyonlar sonradan programlanabilen lojik kontrollörler (PLC) denilen cihazlarla yapılmaya başlandı.Bu cihazlar içinde bir mikroişlemci ve giriş çıkış birimlerini barındıran kompakt kontrol cihazlarıydı.Sistemde daha sonradan çıkan yeni ihtiyaçlara göre fiziki sistem üzerinde değişiklik yapılmadan yazılımın değiştirilmesi ile bu gerçekleştirilmeye başlandı.

Elektronik dünyasında mikroişlemciler giderek mikrokontrollör çatısı altına girmeye başladılar.Mikrokontrollörü içinde mikroişlemci,bellek,giriş/çıkış birimleri barındıran bütünleşik bir sistem olarak tarif edebiliriz.Ya da başka bir deyişle tek çiplik bir bilgisayar.Bilgisayarımızın ufak bir modelidir aslında.

Mikrokontrollörler büyük bir hızla elektronik sektöründe yerlerini aldılar.Bugün dünyada yılda milyarlarca mikrokontrollör üretilmektedir.Ortalama bir aile arabasında 20 kadar mikrokontrollör bulunmaktadır.Örneğin abs fren sistemi kontrolünde,elektronik ateşleme sisteminde,cd çalarda,alarm sisteminde…

Artık evimizde bizim görmediğimiz birçok minik bilgisayar haberimiz olmadan kendi işlerini yapıyorlar.Müzik dinlediğiniz cd çalarınız,evinizdeki mikrodalga fırınınızda,televizyonunuzda hatta otomatik zaman ayarlı oda parfümünüzde ufak bilgisayarlar gizli.

ELEKTRONİK MÜHENDİSLİĞİ VE PROGRAMCILIK
Elektronikten ortaya çıkmış programlanabilen cihazlar yine elektroniğin içine böylesine girmişken ,programcılık mantığından uzak bir elektronik mühendisliğinden de artık söz edilemez olmuştur.Ancak ne yazık ki elektrik-elektronik mühendisliği müfredatlarına baktığımızda bu konuda büyük eksikliklerin olduğu görülmektedir.Temel bilgisayar bilimleri dersleri adı altında bir programlama diline (büyük oranda C’ye) üstün körü değiniliyor,yapılan uygulamalar da adres defteri yazmayı geçmiyor.Temel programlama mantığı öğretilmediği için işin içine ezber giriyor.Programcılık da tamamen matematiksel bir mantığa dayandığından ezberle halledilebilecek bir şey değil.
Eğer elektronik konusunda ciddi olarak çalışma yapmak istiyorsak, programcılıktan uzak kalmamız mümkün değil.Programlama konusunda kendimizi mümkün olduğunca geliştirmeliyiz.

PEKİ NEREDEN BAŞLAYACAĞIZ?

4 Senelik mühendislik müfredatında programcılık ile ilk tanıştığımız ders “temel bilgisayar bilimleri” ya da değişik adlarla olabiliyor.Burada ilk olarak öğrenmemiz gereken şey bilgisayarın temel yapısı ve birimleri.Ardından bütün programlama dillerinde bulunan belirli yapıları öğrenmeliyiz.Tabiki hepsinden önemlisi “algoritma” öğrenmek.Algoritmayı kısaca “bir işi yapmak için izlenecek yol” diye tanımlayabiliriz.Bir problemi dijital bir bilgisayara(mikrokontrollör,PC vs…) çözdürebilmek için öncelikle onu bilgisayarın anlayabileceği şekilde ona anlatmalıyız.Bunun için problem belirli adımlarla tanımlanmalı ve bir programlama diliyle bilgisayara aktarılmalıdır.
Algoritmadan sonraki aşama bir programlama diliyle bu algoritmaların çalıştırılmasıdır.Başlangıç olarak PASCAL,BASIC gibi diller programcılığa ısınmak için ideal olabilirler.Ardından adını çokça duyduğumuz meşhur C’ye geçiş yapılabilir.C günümüzde hala popülerliğini koruyan bir dildir.Elektronikte de mikrokontrollörlerin programlanmasında büyük oranda bu dil kullanılmaktadır.

Burada kendi görüşlerim etrafında programcılığın elektronik alanındaki önemini tartışmaya çalıştım.Umarım bu konuda kendini geliştirmeye çalışan arkadaşlar için ufak da olsa bir yol gösterici olabilir.

Şub 11

21 Günde Uzman olunur mu?

Önceki yazımda öğrenmekten bahsetmiştim ve şimdi de bu konuya devam edelim.
Piyasada “21 günde ….. öğrenin” şeklinde birçok kitap bulunuyor. Bahsettikleri konular da öyle basit şeyler değil. Fakat vaatleri çok büyük. Uzmanlaşmak için belki yıllar gerek gereken bir konuyu öğrenmek bu kadar kolay mı? Peter Norvig de bu konu üzerine yazdığı bir makalesinde bu konudan bahsetmiş. (Makalenin orjinali ve Türkçe çevirisinin linklerini yazımın sonunda bulabilirsiniz). Bakın ne diyor:

“Araştırmacıların da (Hayes, Bloom) ortaya koyduğu üzere, satranç oynamaktan beste yapmaya, resimden piyanoya, yüzmeden tenise ya da nöropiskoloji ve topoloji alanlarında araştırma yapmaya kadar bir çok alanda uzman olmak, on yıl civarında bir zaman alıyor ve bunun bir kısayolu var gibi de gözükmüyor. Daha 4 yaşında müzik dahisi olduğu anlaşılan Mozart bile, ancak 13 sene sonra dünya çapında ses getirecek bestelerini yapmaya başlamış.”


Peter Norvig’in makalesi programcılığa yönelik olsa da birçok alan için geçerli. Hiçbir konuda uzmanlaşmak 21 günde ya da 3 ayda sağlanacak kadar kolay birşey değil. Tamam bu işlerin zaman alacağını kabul ettik. Peki şimdi ne yapmalıyız? İlgilendiğimiz alanla ilgili bütün kitapları okusak bu yeterli olur mu? Yine Peter’a kulak verelim:

“Sadece kitaplardan öğrendiklerinizle ne kadar ilerleyebileceğiniz tartışılır. İlk çocuğum doğmadan önce, bütün How To (Nasıl) … kitaplarını okumuştum ve buna rağmen kendimi hala bilgisiz bir çömez gibi hissediyordum. 30 ay sonra, ikinci çocuğum doğacakken, bir tekrar için kitaplara geri mi döndüm dersiniz? Hayır, bunun yerine kişisel tecrübelerime güvendim ve daha sonra gördüm ki bu, uzmanlar tarafından yazılmış binlerce sayfadan çok daha yararlı ve güven verici. “

Bisiklet sürmek için istediğimiz kadar kitap okuyalım, onu gerçekten yapmadan bunun nasıl birşey olduğunu anlayamayız. Demek ki uzmanlaşmak istediğimiz şey her ne ise bu konuda tecrübe sahibi olmak demek bilfiil o işle uğraşıyor olmak demek.
Gömülü sistemler konusunda makaleler yazan Jack Ganssle Nasıl Gömülü Sistemler uzmanı olunur? (how to become a embedded geek?) adlı makalesinde bu konuda benzer şeylerden bahsetmektedir:

“Birşeyler yapın:
Kitap bilgisi elbette gereklidir ancak pratikle de desteklenmelidir. Projeler yapın. Birşeyler ortaya çıkarın. Onları çalışır hale getirin. Problemlerin ortaya çıkmasına şaşırmayın ama onlara çözüm üretin. Bir projeyi sadece zor diye veya kafanız karıştı diye bırakmayın. Gerçek gelişimler, başlangıçta çözümsüz görünen patron isteklerinin ürünleridir”

Buradan görüyoruz ki ilgilendiğimiz konudaki bilgi kaynaklarından elbette faydalanacağız. Ancak bize gerçek anlamda katkı yapacak şey yine kendi çabalarımız ve bu çabalar sonucunda elde edeceklerimiz olacak.
Ben de son günlerde C dili ve bu dille mikrodenetleyicilerin programlanması çalışmaları yapıyorum. Her gerçekleştirdiğim küçük adım bana yeni bir bilgi, yeni bir tecrübe katıyor. Yaptığınız şey ne kadar ufak da olsa sonuçtaki başarının verdiği keyif inanılmaz. O zaman ne duruyorsunuz!  Biryerden başlayın. Sadece bir LED’i yakmak bile, ilerideki büyük bir projenin ilk ışığı olabilir.

Ek:
Peter Norvig’in yazısının Türkçe çevirisi:
http://ileriseviye.org/arasayfa.php?inode=programmingtenyears.html
Orjinali:
http://www.norvig.com/21-days.html

*Jack Ganssle www.embedded.com sitesinde gömülü sistemler üzerine makaleler yazmaktadır.
Ayrıca www.ganssle.com adresinde başka yazıları da bulunmaktadır.Gömülü sistemlerle ilgilenenlere “how to become a embedded geek?” yazısını indirmelerini tavsiye ederim.