Üniversitedeyken mikrodenetleyici dersinde 8051 tabanlı bir modelin kullanıldığını ve assembly dilinde programlamanın öğretildiğini duyduğumda biraz bozulmuştum. O zaman biraz da öğrenci ukelalığı ile “C dili varken ve PIC’ler çok popülerken neden bunlar öğretiliyor” diye düşünmüştüm. Sonradan aslında doğru yöntemin bu olduğunu anladım. 8051 uzun bir süredir endüstri standardı olarak kabul edilen ve oldukça iyi bir 8 bitlik mimari idi. Ayrıca assembly dili ile bir mikrodenetleyiciyi programlamayı öğrenmek o mimarinin çalışma yapısını iyice anlamakta oldukça faydalıydı. Meslek hayatımda hemen hemen hiç assembly dili kullanmamış olsam da alt seviye bilgilere hakim olmanın faydasını çok gördüm.
Şimdi aradan 10-11 yıl geçti. Son 10 yılda o kadar çok gelişme oldu ki ben bile kendimi yaşlı hissetmeye başladım. Konuşma yaptığım veya eğitim verdiğim yerlerde “bizim zamanımızda” kalıbını sıkça kullanıyorum 🙂
Ben öğrenci iken piyasada Microchip firmasının PIC serisi mikrodenetleyicileri yaygındı. Hakkında en çok kaynak bulunabilen bir aile olduğundan herkes bu mikrodenetleyicilerle çalışmaya başlıyordu. Öyle ki aynen Selpak örneğindeki gibi mikrodenetleyiciler “PIC” ismi ile anılıyordu. Tabi rakibi olan AVR, MSP ve diğer firmaların ürünleri de vardı. Bugün Microchip firması rakibi Atmel firmasını satın almış durumda. Tabi tek değişen bu değil.
Meslek hayatıma başladığımda PIC’leri de kullanmış olsam da daha önce hiç karşılaşmadığım modelleri programlamam gerekti. Ancak temel anlamda mikrodenetleyici progralamaya hakim olunduğunda ve C dili ile programlandığında hangi modelle çalıştığınızın pek önemi kalmıyor. Çalıştığınız platforma hakim olmak, datasheet ve kullanıcı dökümanlarından gerekli bilgileri edinebilmek yeterli oluyor.
Bugün mikrodenetleyici programlamaya başlayan öğrenci arkadaşlar çok büyük ihtimalle “Arduino” ile buna başlıyor. Hatta bazı okullarda mikrodenetleyici derslerinin Arduino üzerinden yapıldığını duyuyorum. Blogumu takip edenler daha önce yazdığım “Mühendislik öğrencileri neden sadece Arduino kullanmamalısınız” yazımı okumuşlardır. Hatta son dönemde Google aramaları ile en çok okunan yazım da bu oldu diyebilirim. Dün PIC ismiyle anılan mikrodenetleyiciler bugün Arduino adıyla anılıyor.
O yazımın ana fikri mühendislik öğrencilerinin ileride yapacaklar işler dolayısıyla işlerin altyapısına iyice hakim olmaları gerektiği ve Arduino’nun sağladığı kolaylığın bir bedeli olduğu idi. Bu bedel de “arkada dönen şeylerden habersiz kalma”, “daha verimsiz çalışan yazılımlar” ve “mikrodenetleyici programlamayı bilmeden hazır kütüphanelerle iş yapma alışkanlığı edindirmesi” idi.
Bu yazıma hem olumlu hem de olumsuz birçok yorum geldi. Bütün yorumlara saygı duyuyorum. Hatta artık kimseye şunu kullanmayın bunu kullanın demenin bile anlamsız olduğunu düşünmeye başladım.
Son dönemlerde gömülü sistem programlama konuları üzerine eğitimler veriyorum. Şimdi de yeni eğitimler için içerikler hazırlamakla meşgulüm. Ancak eğitimleri hazırlarken en çok zorlandığım noktalardan birisi içerikleri belirlemek. Alt seviye konulara ayrıntılı bir şekilde girmeli miyim yoksa “Arduino” stili hazır kütüphaneler üzerinden mi gitmeliyim? Sürücü yazma konusuna yer vermeli miyim yoksa hazır sürücülerin nasıl kullanılacağını mı anlatmalıyım? Tabi ki her eğitimi hedef kitleye göre hazırlıyorum. Ancak artık birçok işte gerçekten her şeyi kendimizin sıfırdan yazması hem verimlilik açısından hem de maliyet açısından anlamsız hale gelmeye başladı. Hatta artık öyle bir duruma gelindi ki ” gömülü yazılım” diye bir ayrıma gitmemiz bile anlamsızlaşıyor. Artık hepimiz genel olarak kendimizi “yazılımcı” olarak görebiliriz. Platformların gelişmesi ve işlemci kapasitelerinin artması gömülü sistemler ile genel amaçlı bilgisayar sistemlerine giderek birbirine yaklaştırıyor. Örneğin artık Python dilinde Rasperry Pi üzerinde I2C kütüphanesi üzerinden bir sensörün değerlerine ulaşmak mümkün.
Bu konuda sizlerin de görüşlerini merak ediyorum. Lütfen yorumlarınızı paylaşın.
Ben elektronikçi değilim profesyonel bir yazılımcıyım. arduino da program yazarken kendimi evimde hissediyorum. çok az olan elektronik bilgim ile iyi işler çıkarabiliyorum. assembly konusunda ki örneğiniz benim içinde geçerli. asm kullanmasam bile okulda gördüğüm asm dersleri gerçekten yararlı oluyor. asm dersi görmeden interupt gibi konuları anlamak imkansız gibi bence
kütüphaneler üzerinden gidildiğinde arduino yerine diğer platformları kullanmak da mikrodenetleyicinin mimarisine hakim olmayı önleyecektir, Python dilinde Rasperry Pi üzerinde I2C kütüphanesi üzerinden bir sensörün değerlerine ulaşmak mümkün demişsiniz bu durum da mikro denetleyicinin mimarisine hakim olmamıza engel olacaktır. Bütün yollar arduino ya kayıyor gibi.
Ben elektronikçi değilim profesyonel bir yazılımcıyım. arduino da program yazarken kendimi evimde hissediyorum. çok az olan elektronik bilgim ile iyi işler çıkarabiliyorum. assembly konusunda ki örneğiniz benim içinde geçerli. asm kullanmasam bile okulda gördüğüm asm dersleri gerçekten yararlı oluyor. asm dersi görmeden interupt gibi konuları anlamak imkansız gibi bence
kütüphaneler üzerinden gidildiğinde arduino yerine diğer platformları kullanmak da mikrodenetleyicinin mimarisine hakim olmayı önleyecektir, Python dilinde Rasperry Pi üzerinde I2C kütüphanesi üzerinden bir sensörün değerlerine ulaşmak mümkün demişsiniz bu durum da mikro denetleyicinin mimarisine hakim olmamıza engel olacaktır. Bütün yollar arduino ya kayıyor gibi.
Hazır kütüphane kullanmayı önceden hazırlanmış “yemeğe” benzetiyorum,eğer ben yemek yapıyorum diyorsam, tümünü kendim yapmalıyım, Böylece konuya çok daha iyi hakim olunacağı kanısındayım. Bir program hangi dille yazılırsa yazılsın Algoritma geliştirme anlamında,
kütüphaneleri’de kendimiz yapmalıyız, buna zaman kaybı demek yanlış olur,zira yazılıma olan hakimiyetimiz ne kadar iyi olursa yazılım’da o kadar iyi olacaktır.Benimde ilk çalışmam
assembly’dir şimdi farklı yazılım dilleri kullansam’da hassas zamanlama gerektiğin’de yine assembly kullanmak zorundayım. bazı durumlarda aradığınız kütüphane’yi bulamazsınız,kendiniz oluşturmak zorundasınız. Sonuc kolayın’da bir bedeli var.