Haz 08

Gömülü Yazılımcıları kim yetiştirecek?

Gömülü sistemler konusunda sürekli takip ettiğim sitelerden biri de embedded.com’dur.Bu sitede devamlı olarak gömülü sistemlerle ilgili çok güzel makaleler yayınlanmakta.Ayrıca devamlı olarak yazılar yazan köşe yazarları da her hafta başka bir konuyu ele almaktadır.Bu yazarlar arasında benim favorilerimden biri de Jack Ganssle.Gömülü sistemler alanında yirmi küsür yıllık tecrübeye sahip olan Ganssle bu alanda birkaç kitaba ve birçok makaleye imza atmıştır.

Ganssle’ın geçtiğimiz haftalarda yazdığı yazılarından birinin konusu Bilgisayar bilimleri ( computer science ) eğitimi veren üniversitelerin gömülü yazılım sektörünün talep ettiği mühendislik altyapısına sahip mühendisler yetiştirip yetiştiremediği idi.Ganssle birkaç üniversitenin müfredatının da analizini yaptı.

Ganssle yazısında , bilgisayar mühendisliği/bilimleri gibi bölümlerde genellikle Java/C#/C++ gibi yüksek seviyeli dilllerin öğretildiğini, assembly dilleri, alt seviye programlama gibi konuların es geçildiğinden bahsediyor.Bu durum gömülü sistemler alanında büyük bir insan gücü açığı oluşturuyor.

Ülkemiz henüz yazılım alanında yeni yeni birşeyler yapmaya başlamış durumda.Yazılım ihracatımız günden güne artıyor.Eğer Hindistan gibi yazılım ihracatı alanında büyük başarılara imza atmak istiyorsak , bu alandaki insan gücü planlamamızı da en iyi şekilde yapmamız gerekiyor.Yazılım dendiğinde çoğunlukla PC tabanlı yazılımlar akla gelse de gömülü yazılım alanında dünyada giderek artan bir ihtiyaç söz konusu.Her gün bir yenisi çıkan elektronik cihazların hemen hepsinde gerekli fonksiyonları gerçekleştirmelerini sağlayan yazılımlar çalışıyor.Önümüzdeki yıllarda gömülü yazılımcılara olan talebin oldukça artacağını göreceğiz.

Bu konuda başta üniversiteler olmak üzere herkesin yapabileceği şeyler var.Bilgisayar ve elektronik mühendisliği bölümlerinde artık “gömülü sistemlerin” bir dal olarak yer alması gerekmektedir.Bireysel olarak bilgisayar / elektronik mühendisliğinde okuyup gömülü sistemler konusunda çalışmak isteyenlerin de yapabilecekleri var elbette.Bilgisayar mühendisliğindeki öğrenci arkadaşların işin donanım kısmına daha yakın olan alt seviye konulara (örn. Bilgisayar mimarisi,sistem programlama,dijital sistemler) , elektronik mühendisliğinde okuyan arkadaşların da yazılım konularına ( algoritmalar, temel programlama, mikrodenetleyiciler) önem vermeleri faydalı olacaktır.

Gömülü sistemler alanında yapılacak her yatırımın ülkemizin geleceğine büyük katkı yapacağına inanıyorum.Günümüzün bilgi çağında öne çıkan ülkeler en iyi bilgi işçilerini yetiştirerek onları üretken hale getirenler olacaktır.

Notlar:

Jack Ganssle’ın konuyla ilgili makalesi :

http://www.embedded.com/columns/technicalinsights/207500788

Nis 30

İnsan öldüren yazılımlar

Bugün etrafımızda birçok sistem insan kontrolü olmadan çalışıyor. Asansörümüze binip gitmek istediğimiz katın butonuna basıyoruz ve o bizi istediğimiz kata götürüyor. Arabalarımızın motoru kendini en optimum seviyede çalışacak şekilde ayarlıyor. Otomatik kahve makinesi bizim için kahvemizi otomatik olarak hazırlıyor, hem de istediğimiz şeker seviyesiyle.

Artık uçakları, füze savunma sistemlerini de büyük oranda içlerindeki yazılımlar kontrol ediyor. Kısacası gömülü yazılımlar hayatın her alanında çalışıyorlar. Hal böyle olunca yazılımlar çok kritik roller oynuyor. Oluşabilecek hatalar can kayıplarına ve büyük hasarlara yol açıyor. Geçmişte olmuş büyük yazılım hatalarına bir göz atalım isterseniz:

Arienne 5 füzesi faciası:
4 Temmuz 1996 günü Arienne 5 füzesi fırlatıldıktan 40 saniye sonra havada infilak etti. Olayın sonrasında yapılan soruşturma sonucunda kazanın bir yazılım hatasından olduğu ortaya çıktı. Arienne 4 füzesindeki yazılım Arienne 5’e uyarlanmıştı. Modül bazında testler yapılmıştı ancak genel sistem testleri zaman sıkışıklığından dolayı tam olarak gerçekleştirilmemişti. Arienne 5 füzesinin uçuş profili Arienne 4’ten farklı olduğundan kalkıştan kısa bir süre sonra bir değişkendeki taşma sonucu kontrol sistemi devre dışı kaldı. 500 milyon dolarlık kayıba malolan bu hata tarihteki en pahalı yazılım hataları arasında yerini aldı.

Hedefi Iskalayan Patriot Füzeleri:
25 Şubat 1991 tarihinde Körfez Savaşı sürerken Amerika’nın İsrail’e yerleştirdiği Patriot füzelerinden biri Irak’tan gelen Scud füzesini ıskaladı ve bir Amerikan askeri barakasına isabet eden füze 29 Amerikan askerinin ölümüne yol açtı. Daha sonra yapılan incelemede Patriot füzelerinde zaman hesaplamasında kullanılan 24 bitlik sabit noktalı değişkende oluşan hatanın buna neden olduğu anlaşıldı. 100 saat açık kalan füze sistemindeki zaman hatası 0.34 saniyeyi bulmuştu ve bu da füzenin 500 metrelik bir sapma yapmasına neden olmuştu.

Therac-25 tedavi cihazındaki hata:
Therac-25 hastalara belirli dozlarda radyasyon uygulayarak tümörlerin yok edilmesinde kullanılan medikal bir cihazdı. Cihazın kullanımında iki farklı mod bulunuyordu: Düşük güç modu ve yüksek güç modu.Düşük güç modunda düşük seviyedeki elektron ışını hastaya direk olarak uygulanıyordu. Yüksek güç modunda ise otomatik olarak hastayla cihaz arasına metal bir plaka koyuluyordu.

Operatörün cihaza önce yanlışlıkla yüksek güç moduna geç komutu vermesi ve ardından bunu iptal edip düşük güç moduna alması sonucu cihaz bir hata mesajı verir. Aslında hata mesajı verdiği durumda sinyalin hastaya uygulanmamış olması gerekirken yüksek güçlü radyasyon hastaya uygulanmıştır. Operatörün işlemi birkaç kere tekrar etmesiyle hastaçok büyük oranda radyasyona maruz kalır. Cihazdaki hata sonucu 1985-1987 yılları arasında 6 kişi hayatını kaybetti.

Bütün bu tarihi trajedilerden gömülü yazılımların ne kadar kritik roller oynayabileceğini görmüş oluyoruz. Tabi aynı zamanda ne kadar ciddi sonuçlara yol açabileceklerini de. Günümüzde hala “hatasız yazılımlar”ın arayışı devam etmektedir.

Linkler:

http://en.wikipedia.org/wiki/Ariane_5_Flight_501

http://en.wikipedia.org/wiki/Therac-25

http://en.wikipedia.org/wiki/MIM-104_Patriot#Failure_at_Dhahran


Haz 10

Onlar Her Yerde :Gömülü Sistemler II


Önceki yazımda gömülü sistemlere kullanıcı gözüyle bakmıştık . Bu sefer işin teknik boyutuna biraz daha eğileceğiz. Gömülü sistemlerin tanımını yapmakla işe başlayalım.Genel olarak gömülü sistemler:

“belirli bir fonksiyonu yerine getirmek için tasarlanmış yazılım ve donanım kombinasyonudur” şeklinde tanımlanabilir.

Gömülü sistemleri diğer genel amaçlı bilgisayar sistemlerinden ayıran özelliklerin başında, bu sistemlerin belirli bir amaç için tasarlanmış olmaları gelir. Bir video cihazını kontrol eden gömülü sistem bütün kullanım ömrü boyunca bu işi gerçekleştirecektir. Ancak ev ve işyerlerimizde kullandığımız PC’lerde birçok farklı işlemi gerçekleştirmekteyiz. PC’lerde bu değişik işleri değişik yazılımlarla yapmaktayız. Ancak gömülü sistemlerin içinde çalışan yazılım genellikle “tektir”.

Gömülü sistemler adlarından da anlaşılabileceği gibi genellikle daha büyük bir sistemin içinde “gömülü” olarak çalışırlar. Örneğin bir çamaşır makinesinde birçok mekanik kısım bulunmakla birlikte, bütün bunları kontrol eden bir veya birden fazla mikrodenetleyici tabanlı sistem bulunur. Bu sistemler kullandığımız cihazların “akıllı olmasını” sağlayan, beyin vazifesi gören birimlerdir

Her gömülü sistemin başlangıçta tanımlanan tasarım kriterleri farklı olduğundan, tasarımı da kendine özgüdür. Bir oyun konsolunun içerdiği birimlerle, bir mikrodalga fırının içerdiği gömülü sistemler birimleri birbirinden farklıdır. Ancak genel olarak her gömülü sistem şekildeki birimlere sahiptir:

Gömülü sistemlerin tasarım gereksinimleri şunlardır:

  • İşlem Gücü
  • Bellek
  • Geliştirme Maliyeti
  • Birim Üretim hacmi
  • Beklenilen yaşam süresi
  • Güvenilirlik

Bunlar dışında her sistemin kendine has başka gereksinimleri de olabilir. Örneğin pille çalışacak bir sistemde güç tüketimi de önemli bir kriterdir.

Tasarımlardaki kriterlere göre bu gereksinimlerinden bazıları arasında tercih yapmak gerekebilir. Örneğin karmaşık hesaplamaların gerekli olabileceği sistemlerde yüksek işlem gücü ihtiyacı ön planda olurken, çok büyük miktarlarda üretilecek sistemlerde düşük maliyet daha önemli olabilir.

Gömülü sistemler kullanım alanlarına göre zaman zaman oldukça kritik görevleri yerine getirebilirler. Burada oluşabilecek hatalar büyük mal ve can kayıplarıyla sonuçlanabilir. Bu açıdan bakıldığında bu sistemlerin “güvenilir” ve “hataları tolere edebilir” özellikte olmaları çok önemlidir. Bir mikrodalga fırının ya da bir oyuncağın içindeki sistemin zaman zaman hatalı çalışması çok büyük sorun oluşturmaz; ancak bir uçağın otomatik pilot sistemindeki hata birçok insanın hayatını tehlikeye atabilir.

Bugün dünyada üretilen mikroişlemcilerin / mikrodenetleyicilerin büyük çoğunluğu gömülü sistemlerde kullanılmaktadır. Genellikle 8 bit mikrodenetleyiciler yoğun olmakla beraber, 32 bitlik mikrodenetleyiciler de düşen maliyetleri sonucu artık geniş kullanım alanı bulmaktadır.
Gömülü sistemlerde tasarımcıların kullandığı temel araçlar:

  • Programlayıcılar
  • Hata Ayıklayıcılar (Debuggers)
  • Derleyiciler
  • Emülatörler
  • Tümleşik Geliştirme Ortamları

Gömülü sistemlerin donanım ve yazılım olarak iki ana bölümden oluştuğunu söylemiştik. Burada donanım ve yazılım bileşenleri birbirleriyle sıkı sıkıya bağlı olduğundan tasarım ekibinde bulunan yazılımcı ve donanımcıların bir arada çalışmaları gerekmektedir. Bu anlamda gömülü sistemler için “multi-disipliner” bir alan diyebiliriz. Bu alandaki mühendislerin donanım, yazılım, kontrol sistemleri vs.. gibi birçok alanda bilgi sahibi olmaları gerekmektedir.

Gömülü yazılımların karmaşıklığı artıkça ve aynı anda yapılacak işlemlerin sayısı arttığında değişik yapılara ihtiyaç duyulur. Aslında bir mikrodenetleyici aynı anda sadece bir tek işi yapabilir. Ancak işlemleri mili, mikro hatta nanosaniyeler mertebesinde gerçekleştirdiğinden, birçok işi aynı anda yapıyormuş gibi görünebilir. Genel olarak mikrodenetleyicili sistemlerde bu tür işlemler kesmeler ve zamanlayıcılar sayesinde periyodik olarak gerçekleştirilir. Bu anlamda kesmeler yazılımlarda önemli bir rol oynar.

Gömülü sistemler de ayrıca gerçek zamanlı işletim sistemleri de kullanılır (RTOS – Real Time Operating Systems). Böylelikle tasarımcı donanım ayrıntılarıyla çok uğraşmadan ana işlemleri gerçekleştirmeye odaklanabilir. Arka plandaki görevlerin senkronizasyonu işletim sistemi tarafından gerçekleştirilir.

Çok geniş bir alanı kapsayan gömülü sistemlerin bütün özelliklerini ele almak çok zor olsa da bu yazıda genel özellikleri tanımış olduk. Bundan sonra değişik özellikleriyle gömülü sistemleri tanımaya devam edeceğiz.

Ağu 21

PROGRAMLAMA SADECE BİLGİSAYARCILARIN İŞİ Mİ? – 2

HAYIR, ELEKTRONİKÇİLERİN DE İŞİ 🙂

Birkaç ay önceki “programlama sadece bilgisayarcıların işi mi?” adlı yazımda programcılığın elektronik mühendisliği alanındaki önemini tartışmıştım. Şimdi de aynı konuda yazmaya devam edeceğim.

Programlama elektronikçilerin de işidir diyoruz. Ancak bilgisayarcıların programlaması ile elektronikçilerin programlaması aynı mıdır? Önce buradan başlayalım. Bu konudaki kafa karışıklıklarımıza ilk örneği üniversitelerimizdeki “mikroişlemciler” dersinden verebiliriz. Bu ders aynı isimle birçok elektronik ve bilgisayar mühendisliği bölümlerinde okutulmaktadır. İki bölümün ortak dersi gibi görünmesine rağmen ayrım yapılması gereken noktalar var.

Çoğu zaman bilgisayar bölümündeki öğrencilere 8051 gibi “mikrodenetleyicilerin programlanması gösterilirken,elektronik bölümündeki öğrencilere 8088,80286 vs.. gibi Intel’in x86 tabanlı mikroişlemcilerinin öğretildiği görülebilmektedir.Bu “mikroişlemci ve mikrodenetleyici “ arasındaki farkın tam olarak anlaşılamamış olmasından kaynaklanmaktadır.

Mikroişlemciler başlangıçta büyük çaptaki hesaplamaların hızlıca yapılabilmesi için üretilmişlerdi. Daha sonra geliştikçe ve PC denilen kişisel bilgisayarlar ortaya çıktıkça, hesaplama dışında teknik tasarımlardan, eğlenceye birçok alanda kullanılmaya başlandılar. Böylelikle de mikroişlemciler elektronik alanından koparak bilgisayar mühendisliği adı altında ayrı bir dalın konusu içine girdiler.

Yarıiletken teknolojisindeki gelişmeler birim hacme sığdırılabilen transistör sayısında müthiş artışlara yol açtı. Böylelikle çok daha büyük performansa sahip mikroişlemciler üretildi.

Elektronik dünyası da kendi içinden çıkan bu teknolojiden faydalanmasını bildi. Daha önceki tasarım yöntemleriyle oluşturulan “sabit” fonksiyonlu devrelerin yerini, programlanarak değişik fonksiyonlar gerçekleştirebilen “mikrodenetleyiciler “ aldı. Mikrodenetleyici tabanlı sistemler bugün “gömülü sistemler “ adı altında ayrı bir mühendislik dalı da olmuştur. Bunu başka bir yazının konusu olmak üzere burada bırakıyorum.

Mikrodenetleyiciler bugün çok yüksek hızlara ve birçok değişik fonksiyona sahiptirler. Söylenenlere göre bugün ortalama bir aile otomobilinde 20’den fazla mikrodenetleyici bulunmaktadır. Evimizde kullandığımız birçok cihazda da bu minik bilgisayarlar görev yapmaktadır.

Bugün mikrodenetleyiciler elektroniğin içine bu kadar girmişken, programlama bilgisinin elektronikçiler açısından da ne kadar önemli olduğu açıktır. Burada kastedilen programlama mikrodenetleyici programlamasıdır. Peki, mikroişlemciler nasıl programlanmaktadır?

“Ben acayip assembly bilirim!”

MİKRODENETLEYİCİLERİN PROGRAMLANMASI:

“Ben acaip assembly bilirim” diyen birini gördüğünüzde ona ,”hadi be sende “ diyebilirsiniz..Evrensel bir assembly dili olmadığı gibi assembly bilmek diye bir şey de yoktur.Ancak şöyle cümleler anlamlı olabilir:”x86 assembly bilirim,8051 assembly’si biliyorum,PIC assembly öğrenmek istiyorum”

Assembly dili bir mikroişlemcinin anadilidir diyebiliriz. Assembly komutlarının her biri işlemci için bir anda gerçekleştirebileceği bir işlemi belirtir. Bilgisayar yazılımcılığı açısından bakarsak assembly dillerinin kullanımı çok kısıtlı kalmıştır. Artan karmaşıklığın altından bu şekilde kalkılması da imkansız zaten. Yazılımlar yüksek seviyeli dillerle yazılmaktadır.

Elektronik alanında assembly hala önemini korumaktadır. Çünkü bu alanda performans önemli bir kriterdir. Örneğin en çok kullanılan 8 bitlik mikrodenetleyicilerde assembly’nin sağladığı performans göz ardı edilemez kuşkusuz. Ancak günümüzde oldukça gelişen derleyiciler sayesinde C gibi orta seviyeli dillerde de yüksek performans alınmaktadır. Zaten yapılan araştırmalar dünyada bu alanda en çok kullanılan dilin C olduğunu göstermektedir. C kullananların büyük bölümü aynı zaman da assembly de kullanmaktadır.

PROGRAMLAMANIN ab C’Si

C programlama dillerinden belki de en ünlüsüdür.70’li yıllarda Brian W. Kernighan

Dennis M. Ritchie tarafından geliştirilmiştir. İlerleyen yıllarda C dilinin popüleritesi oldukça arttı. Dilin standartlaştırılması için 1983 yılında ANSI (Amerikan Ulusal Standartlar Enstitüsü ) tarafından bir komite oluşturuldu. Komite çalışmasını 1989 yılında tamamladı ve bugün geniş kabul gören ANSI C ortaya çıktı.ANSI C ile anlatılmak isteneden ANSI komitesinin 1989 yılında kabul ettiği standart C’dir.Bir kere ANSI C öğrenildiğinde bu dille uyumlu bütün derleyicilerin kullanımı kolaylaşmaktadır. ANSI C için en temel kaynaklardan biri dilin yaratıcıları Brian W. Kernighan ve Dennis M. Ritchie tarafından yazılan ANSI C kitabıdır.Bunun dışında C dilini anlatan birçok kitap bulunmaktadır.

Yapılan araştırmala gösteriyor ki mikrodenetleyi tabanlı tasarımlarda büyük oranda C dili kullanılmaktadır* C dilini kullananların büyük çoğunluğu da kullandıkları mikrodenetleyicinin assembly dilini bilmekte ve kullanmaktadırlar.

Buradan mikrodenetleyici tabanlı tasarımda yol almak için bir yol haritası çizecek olursak:

– Kullandığımız mikrodenetleyiciyi iyi tanımalıyız.Mümkünse az da olsa assembly ile programlama yapmalıyız

– ANSI C ‘yi öğrenmeliyiz.ANSI C öğrenirken ilk başta PC programlama yaparak aşinalık kazanabiliriz.

– Mikrodenetleyici ile ufak projeler yaparak deneyim kazanmalıyız.

İnternetteki bazı arkadaşların “C öğrenmek için kursa gitmeli miyim, bana faydası olur mu?” türünden sorular sorduklarını görmekteyim. Tabiki herkesin kendine has bir öğrenme stili vardır. Ancak şunu belirtmek gerekir ki bu tür kurslarda PC tabanlı programlama anlatılmaktadır. Dolayısıyla mikrodenetleyici programlama ile ilgili kavramlara yer verilmemektedir. Ancak ANSI C dilini öğrenmek için bu tür kurslardan faydalanılabilir. Gerisi de sizin kişisel çabalarınıza bağlı.

Umarım bu yazı bir ölçüde de olsa sizlere faydalı olur. Başka bir yazıda görüşmek üzere…

*C dilinin kullanımına dair örnek bir araştırma:

http://www.ertl.jp/ITRON/survey99/graph-e/lang1.gif

C programlama dili ile ilgili wikipedia sayfası:

http://tr.wikipedia.org/wiki/C_programlama_dili

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.