Yine çok sorulan sorulardan biri olan “Elektrik, Elektronik Mühendisleri hangi programlama dillerini bilmeliler, hangi programlama dillerini en çok kullanırlar?” sorusuna cevap vermeye çalışacağım.
Öncelikle, işini Arge‘ci olarak yapan Elektrik ve Elektronik Mühendislerinin programlamaya ihtiyaç duyduklarını ve kullandıklarını belirtmem gerekir. Kamuda çalışan mühendislerin bir çoğunun, hatta neredeyse hiç birinin programlama yapmadıklarını biliyoruz. Özel sektörde çalışan bir çok mühendisin de yine Argeci olmadığını, işlerinin programlamayla alakası olmadığını belirtmem gerekir.
Arge yapan, arge departmanlarında, arge şirketlerinde çalışan mühendislerin de bir çoğunun test, donanım tasarımı, benchmarking yaptığını biliyoruz. Dolayısıyla çok az sayıda mühendis programlama yapıyor.
Tabii ki bu sizi programlama öğrenmekten alıkoymamalı. En azından okul projelerinizde, bitirme projelerinizde kullanırsınız ve bir Arge şirketine başvurduğunuzda yapmadım deme riskini almazsınız. Yazdığınız bir kaç sayfa kodun size ne büyük avantajlar sağlayacağını bilemezsiniz.
Şimdi gelelim programlama dillerine.
2 tip yazılımcı Elektrik-Elektronik Mühendisi vardır;
- Donanım üzerine yazılım yapan Elektrik-Elektronik Mühendisleri
- Arayüz, web yazılımı yapan Elektrik-Elektronik Mühendisleri
1. Donanım Üzerine Yazılım Yapan Elektronik Mühendisleri
Bu tip mühendisler gömülü sistemler üzerine çalışan Elektrik-Elektronik Mühendisleridir. Gömülü sistemlerin ne olduğunu uzunca açıkladım aslında ama baktım ki ayrı bir makale çıktı, onu farklı bir yazıya çevirdim. Bir kaç gün sonra yayınlarım.
Bu şekilde çalışan Elektronik Mühendisleri, genelde mikrodenetleyiciler ve gömülü cihazlar üzerine yazılım yaparlar. Yazılım dili çoğunlukla C ‘dir. Bazen C ‘nin çözünürlüğünün, performansının düşük kaldığı yerlerde (programlama dilinin çözünürlüğü diye bir şey yoktur aslında, aşağıda örneklerle açıkladım) Assembly dili kullanırlar.
Assembly ve C Karşılaştırması; Hangi Durumlarda Tercih Edilirler?
Bu soruyu bir örnekle cevaplamaya çalışayım: bir apartman yapmak istediğinizi düşünelim.
C diliyle;
Temelleri kepçeyle kazdıktan sonra kalıpları yerleştirip o kalıpların içine duvarları, kiriş ve kolonları oluşturacak betonu dökersiniz. Bu kalıp şeklinde ve hızla duvar, kiriş ve kolonları ortaya çıkarmanızı sağlar. Avantajı yapım hızıdır. Dezavantajı gereğinden fazla malzeme kullanırsınız.
Assembly diliyle;
Temelleri kürekle kazarsınız. Kalıp yerleştirip de bütünsel bir duvar çıkarmak yerine tuğla boyutunda kalıpları yerleştirip betonu döküp, sonra tekrar aynı şeyi yapmanız gerekir. Avantajı kaliteli, esnek işçilik(duvarı istediğiniz her şekle sokabilirsiniz) ve malzeme tasarrufudur. Malzeme israf etmezsiniz(sistem kaynakları-işlemci, bellek vs.) . Dezavantajı geliştirmenin yavaş olmasıdır.
C ‘de 2 satırla yaptırdığınız işi Assembly’de 10-15 satırla yaptırdığınız yerler olur. Ayrıca C içine Assembly de gömebilirsiniz. Yani odaları C ile yaptıktan sonra kartonpiyerleri Assembly ile yapabilirsiniz.
Daha detaylı bir Assembly C karşılaştırması için DSP(Digital Signal Process) açısından Assembly-C karşılaştırması yapan bu yazıyı ve genel bir Assembly-C karşılaştırması yapan bu yazıyı okuyabilirsiniz.
2. Web, Arayüz, Veritabanı vs. Yazılımları Yapan Elektronik Mühendisleri
Bu şekilde çalışan mühendislerin çoğunlukla elektronikle alakası yoktur. Bir şekilde yazılımcı olmuşlardır. Genelde high-level dil olarak tabir edilen C++, .Net, PHP, SQL, Java, Python çalışırlar.
Her mühendisin çalışma verimliliğini artırmak için en azından bir script dili bilmeleri gerekir diye düşünüyorum. Python tam olarak script dili olmamasına rağmen script dili olarak da kullanılır. C ve Assembly dillerinin aksine high-level bir dildir.
Script Dili Nedir?
Script dili Wikipedia ‘da detaylı olarak açıklanmış. Tanımda, bizim işimize yarayacak kısım görevlerin otomatize edilmesi kısmıdır. Bir mühendis olarak bir işi teker teker yapmanız gerekebilir. Örneğin bir siteden 1000 tane görseli sırayla indirip belirli bir paternde yeniden adlandırıp belirli klasörlere kaydetmeniz gerekebilir ya da onbinlerce data arasından 100 tanesini ayıklayıp farklı bir şekilde görüntülemeniz gerekebilir. Bu durumlarda script dilleri kullanılır.
Benim bu konudaki tavsiyem Python öğrenmenizdir. İnternette çok detaylı tutoriallar bulmak mümkün. Hatta Udacity’de kendi arama motorunuzu nasıl yapabileceğinize dair bir ders bile açıldı. Google’nin de çoğunlukla Pythonla yazılmış bir servis olduğunu belirteyim, nasıl bir dil olduğuna siz karar verin.
Elektrik-Elektronik Mühendisleri Hangi Programlama Dillerini Öğrenmeli?
Elektrik Elektronik Mühendisi’nin en az 2 tane programlama dili bilmesi gerektiğini düşünüyorum. Bir tanesi low-level (C gibi), bir tanesi de high-level(Python gibi)
Bunları öğrenmek için bolca Türkçe kaynak ve kitap var. İngilizce kaynaklar tabii ki daha zengin. İngilizce demişken “Yabancı Dil Öğrenimi Üzerine” ve “İngilizce Konuşmanızı Akıcılaştıracak 11 Tavsiye” yazılarını da öneririm.
Bu yazıdan sonra “Gömülü Sistem Nedir?” başlıklı bir yazı yayınlayacağım. Ardından “Alternatif Mühendislik Eğitimi Önerisi” başlıklı bir yazım var. Belki arada, yarım bıraktığım “MIT’nin Mühendislik Eğitimi Kötü” ve “Mühendise Üçüncü Dil: Arapça” yazılarının 2. bölümlerini yayınlarım. Sonra da “Kendi kendine C nasıl öğrenilir”, “Kendi Kendine Python Öğrenme Kaynakları” başlıklı yazılarla programlama üçlemesini tamamlarım.
Yazının başındaki sosyal paylaşım butonlarını kullanarak bu yazının daha fazla kişiye ulaşmasını sağlayabilirsiniz. Böylece benim içeriği geliştirmeme yardım etmiş olursunuz. Aşağıdaki Facebook takip et butonunu tıklayarak da Facebooktaki kişisel paylaşımlarımı takip edebilirsiniz. Bunlar haricinde Twitter hesabımı ve blogun Facebook sayfasını da sağ üstten takibe alabilirsiniz.
Umarım verimli bir yazı olmuştur. Yorum yazmayı ihmal etmeyin.
Not: Aşağıdaki benzer yazılara da bir göz atın.
Reklam ve spam atmadığım mail listeme üye olmak için 10 saniyede aşağıdaki formu doldurabilirsiniz:
Bu güzel yazı için teşekkürler.bir de sorum alacaktı.Elektrik-elektrik mühendisliğinde java ve delphi dillerinin kullanılabilirliği hakkında düşüncelerinizi merak ediyorum.Bir süre önce otomobil
Elektronik Control Unite ‘lerinin yazılımlarının delphi ile yazıldığını duymuştum.Bu konuda fazla bilgim yok, aydınlatırsanız sevinirim.Ayrıca diğer yazılarınızı merakla bekliyorum.Sevgilerle
Merhaba Salih,
Java yazıda da belirttiğim gibi web ve arayüz programlamada kullanılıyor. Delphi eski bir dil, hala kullanan var mı bilmiyorum ama bazı okullarda hala öğretiliyor.
Elektronik Kontrol Ünitesi’nden kastını anlamadım? Mikrodenetleyici, PLC filan mı?
Hayırlı günler,
Otomobillerde ecu (ustalar aracın beyni diye tanıtıyorlar) sistemleri ortam sıcaklığı,hava basıncı,hava akışı gibi bilgileri sensörlerden okuyarak yakıt ateşleme zamanlaması gibi bazı bilgilerin hesaplanmasına yarıyor ve bu sayede maksimum performans sağlanıyormuş.Bende
bir süre önce bir ecu sistemi üzerinde delphi ismini görmüştüm.Sanırım bu üretici firmanın ismi.
Ben bu sistemlerde kullanılan programlama dilinin ismini merak etmiştim.Sizin bilginiz varsa yardımcı olursanız sevinirim. Elektrik-elektronik müh. 2. sınıftayım ve biraz fazla meraklı gibiyim.Bu merakımı maruz görün.
ECU’lar üzerine çalışan bir arkadaşım var. ECU’ları hackleyip kontrolünü, datalarını filan alıyorlar. Bu yorumu kendisine göstereyim, sorularını cevaplar.
selam;
günümüzde ecu lar sadece motor yönetimi değil, motor, abs, airbag, bsi, eps gibi arabanın her noktasında kritik görevler yapan gerçek zamanlı işletim sistemleri olarak çalışan çok gelişmiş sistemlerdir eski dönem ecu lar standart işemcilerle üretilselerde artık fpga lar üzerinde çalışan çok özel tasarımlardır. ecu programlama dillerinin c, c++, assembler, vhdl, cpld dışındakilerle başarılı bir yönetim göstermesi çok zor olur. ecu işlemcileri tamamen üreticilerin özel üretimleri olduğundan bunların komut setlerine ulaşmak hatta compiler bile bulmak imkansız gibidir. ecuların içindeki romlardan programları alıp incelense dahi binary formattaki bu kodun disasemble edilmesi de çok kolay olmaz. piyasadaki ecu tamircilerinin tek yaptığı eski bir işlemcideki rom a daha yeni bir versiyon rom u yüklemekten başka bir şey değildir. ecu tuneing için yapılan ise araç performans tablolarında ufak tefek değişikliklerle araç çalışma eğrilerini düzenleme şeklinde olabilir. hiç bir şey yapılamazsa aracın eksoz gaz sönsörleri, oksijen sensorleri, sıcaklık sensorleri, basınç sensor değerlerini değiştirerek ecu yu yanıltarak farklı hesaplar yapmasına çalışılır. normal şartlarda aracın motor gücünün rezerv olarak %5-%7 gibi kısmı atmosferik ve goegrafik şartların değişimine adaptasyon için saklanır. yapılacak performans değişimi bu sınırları geçmez. bazı açık kaynak hobi işler için üretilmiş ecu lar var ancak bir kaç araba modeli desteklediğinden çalışma alanı sınırlı olur. delphi ecu üretici markalarından biridir, piyasa lideri, belirleyicisi, standartları koyan kabul ettiren alman bosch tur. kolay gelsin.
Selamlar.
Arayüz geliştirmek için C# kesinlikle tavsiye olunur. Seri port veya USB üzerinden çalışan bir cihazı bilgisayar üzerinden kontrol etmek için, değerlerini okumak için vs. C# ile çok hızlıca güzel arayüzler yazılabiliyor. C# Express diye de aratırsanız ücretsiz tam sürüm versiyonunu Microsoft’un sitesinden indirebilirsiniz.
Ayrıca iyi bir elektronik mühendisi GCC araçlarını kullanarak windows/linux ortamında, Visual Studio veya herhangi başka bir arayüze gerek duymadan C/C++ geliştirebilmeli, veya en azından hazır kütüphaneleri/kodları derleyebilmelidir.
ihsan.
Teşekkürler İhsan.
Tatmin edici cevaplar için çok teşekkürler.
Öncelikle teşekkürler yazılar için. C ve C++ arasındaki fark nedir? C++, C den sonra yapılmış ve onun gelişmişi onu içeren bir program mıdır? yani C ile yapılabilecek herşey C++ ile yapılabilir mi?
C++ C’den sonra çıkan ve C’nin üzerine geliştirilmiş diyebileceğimiz bir dildir. C++ object oriented(nesneye yönelik) bir dildir, C değildir. Tam olarak farkı anlamak için object orientedın ne olduğunu araştırmanı tavsiye ederim.
hocam gömülü sistemler için kullanmamız gereken c++ mıdır ? tesekkurler
Sistemine göre değişir. İşlemci ne kullanılmış ve compiler hangi dilinse ona göre değişir. Hiç bilmiyorum ben olayı diyorsanız C’yi tavsiye ederim.
peki elektrik mühendisleri içinde geçerli mi bu yazi
Geçerli.
Elektrik mühendisliği yapacak bi insan neden yazılım öğrenmeli?mesela elektronikle alakalı bi iş yapcaksa mantıken gerekir ama diğer şekilde neden gerekebilir meslela?
C nin genelde zor bir dil olduğu söyleniyo peki neden low-level ?
buradaki low level zorluk kolaylık bakımından ziyade fiziksel katmana yakınlıkla ilişkili bir kavramdır. Gömülü sistemler yerine bilgisayarlardan örnek vermek gerekirse native C kullanırken bilgisayarda fiziksel olarak gerçekleşen işlemlerle (bellek adreslerine erişim vesaire) aranda sadece 1 mantıksal katman bulunmaktadır. Bu da assembly dediğimiz makine dilinin okunabilir halidir. Dolayısıyla bizim yazdığımız kod ile gerçekte çalışan program birbirine yakındır. Öte yandan java kullanırken ise bizim yazdığımız kod öncelikle JVM’in (java virtual machine) anlayacağı hale dönüştürülür, burada jvm bilgisayarı kötü yazılmış koddan korumak için çok sayıda kontrol gerçekleştirir, daha sonra ise kodumuz assembly’ye translate edilir. Bu işlem kodumuzu physical layer’dan uzaklaştırır ve dilin high level olarak adlandırılmasına sebep olur.
teşekkürler cevap için peki elektrik mühendisleri c veya assembly yi nerde kullanır veya kullanabilir ,onu nasıl daha vasıflı yapar ?
merhaba ahmet bey ben elektrik elektronik müh okuyorum daha hazırlık sınıfındayım ama ilerideki derslere baktığımda yazdıgınız seylerin ne kadar gerekli ve yararlı olacagını kestirebiliyorum benim sorum şu mesala herhanhi bi devre yazılımında onun çalışma prensibini biz hangi dilde kodlayacagız mesala herhangi basit bi makina veya ne bilim devre diyim pek anlamıyorum ama umarım anlatabilmişimdir
C
Çok güzel bir yazı olmuş fakat programları biraz daha işlevlerine göre sınırlamak daha doğru olmaz mıydı ? Yani biliyorsunuz ki elektrik elektronik mühendisliği Otomasyon , yazılım , haberleşme , biyomühendis ( tıbbi aletler ) vb… gibi dallara ayrılıyor , Hangi dal için hangi programlar bilinmeli ? Mesela ben biyomühendislik (tıbbi aletler) dalında ilerlemek istiyorum hangi programları bilmeliyim ?
merhaba ahmet bey yazılarınızı zevkle takip ediyorum bilgilerinizle bizi aydınlattığınız için çok teşekkür ediyorum ve sormak istediğim bir soru var..Ben elektrik elektronik mühendisliği bölümünü okuyorum ve okulu bitirdikten sonra telekominikasyonda çalışmak istiyorum acaba bu bahsettiğiniz programlama dilleri işime yarıyacakmı veya hangi diller işime yarar.bu konuyla ilgili beni bilgilendirirseniz çok sevinirim.teşekkürler eder saygılarımı sunuyorum ..
Merhaba Eem 1. sınıf öğrencisiyim okulda bize 1. dönem c öğretilmeye çalışıldı 2. dönemde c++ öğretilmeye çalışılıyor daha önce hiç programlama alanıyla uğraşmadığım için şuan bu programlama dillerini öğrenirken biraz zorlanıyorum ama bu alandada çalışmak istiyorum..Bu konuda bana ne önerebilirsiniz bu zorluğun üstesinden ne yaparak gelebilirim 🙂 Şimdiden teşekkürler…
Hayırlı akşamlar ben suan bilişim bölümü okuyorum ve bu ecu elektronik kontrol sistemini öğrenmek istiyorum geliştirmek istiyorum bilişimden devam etsem bu mesleği ecuyu ogrenebilirmiyim yoksa elektrik elektronik bolumunemi gecmeliyim ama bilismdede program yazma var temel elektronik ölçme var c++ öğreniyoruz ve daha çok program var ogrenecegimiz suan eğer tEmel elektronik ölçme program yazma yetiyorsa Bilişimi okuyup ogrenebilirsem devam edicem eğer olmazsın diyorsan bu elektrik elektronik bölümüne ait sadece diyorsanız o bölüme gecicem bana yardımcı olursanız çok sevinirim kafam çok karışık suan.Teşekkürler.
Abi kolay gelsin ben esogu elektrik elektronik muhendisligini kazandim hazirlik okuyorum sence hangi dil uzerinden baslamam benim icin uygun olur programlama ile ilgili bir bilgim yok