Rehber
C ve C++ ile Gömülü ve Masaüstü Yazılım: Sanayide Nerede Karşınıza Çıkar?
Tartıda, kart okuyucuda ve makinede çalışan yazılımın dili çoğu zaman C ya da C++’tır. Cihaz yazılımı ile rapor paneli arasındaki sınırı ve cihaz üreticisine sorulacak soruları anlattık.
· 4 dk okuma · Mood Reklam
Fabrikadaki tartı göstergesinin, kapıdaki kart okuyucunun ya da bir makinenin kontrol kutusundaki küçük bilgisayarın içinde de bir yazılım çalışır. Bu yazılımı kim yazar, hangi dille yazılır ve sizin istediğiniz rapor ekranıyla nasıl buluşur? Bu soruların çoğunun cevabında C ve C++ vardır. İskenderun’da liman ve sanayi çevresinde çalışan firmalar bu dillerle genellikle doğrudan değil, satın aldıkları cihazlar ve programlar üzerinden karşılaşır. Bu yazı, o karşılaşmayı anlamlandırmak için.
C ile C++ arasındaki fark, kısaca
C, donanıma çok yakın çalışan, sade ve köklü bir dildir. Bellek ve işlemci üzerinde neredeyse tam denetim verir; bu yüzden küçük işlemcili cihazlarda, işletim sistemlerinde ve sürücülerde hâlâ temel dildir. C++, C’nin üzerine nesne yönelimli programlama ve çok sayıda ek özellik getiren daha geniş bir dildir; büyük masaüstü programlarda, oyun motorlarında ve performans isteyen kütüphanelerde kullanılır. İkisi de derlenir, çok hızlı çalışır ve belleğin yönetimini büyük ölçüde yazılımcıya bırakır.
Sanayide C ve C++ ile nerede karşılaşırsınız?
| Nerede | Ne yapar | Genellikle kimin işi |
|---|---|---|
| Cihaz içindeki yazılım (firmware) | Tartı, sensör, kart okuyucu ya da ölçüm cihazının çalışmasını yönetir | Cihaz üreticisi |
| Makine ve hat otomasyonu | Üretim hattındaki hareketi ve güvenliği denetler | Otomasyon firması ya da makine üreticisi |
| Cihaz sürücüleri | Bilgisayarın yazıcı, okuyucu gibi donanımla konuşmasını sağlar | Donanım üreticisi |
| Ağır masaüstü programlar | Çizim, görüntü işleme, simülasyon gibi yoğun hesap gerektiren işler | Yazılım üreticisi |
Bir not: Üretim hatları çoğu zaman PLC denen endüstriyel denetleyicilerle ve onların kendi programlama araçlarıyla yönetilir. Bu, kendi başına bir uzmanlık alanıdır; makine ve hat güvenliğine dokunan yazılım işlerinde o alanda yetkin firmalarla çalışın.
Cihaz ile panel arasındaki sınır
İşletme sahibinin asıl derdi çoğu zaman cihazın içi değil, cihazın ürettiği bilgidir: hangi vardiyada ne kadar üretildi, kantar hangi aracı kaç kilo tarttı, hangi kart hangi kapıdan geçti. Cihaz bu bilgiyi dışarı verebiliyorsa (bir dosyaya yazarak, kendi veritabanına kaydederek ya da ağ üzerinden göndererek), bu veriyi okuyup raporlayan ve telefondan da açılan bir web paneli yazmak cihaz yazılımına dokunmadan mümkündür. Bu ikinci kısım C ya da C++ gerektirmez; bir işletme yazılımı işidir ve işletmeye özel yazılım kapsamına girer. Atölye ve fabrikada iş takibinin nasıl kurulabileceğini fabrikada iş takibi yazısında anlattık.
Cihaz üreticisine sorulacaklar
- Cihaz ölçtüğü veriyi hangi yolla dışarı verebiliyor: dosya, veritabanı, ağ bağlantısı?
- Bu veri biçiminin ya da iletişim protokolünün yazılı bir belgesi var mı?
- Cihaza dışarıdan bağlanmak üreticinin destek koşullarını etkiler mi?
- Cihazın yazılımı güncellendiğinde veri biçimi değişebilir mi; değişirse önceden haber verilir mi?
Bu cevaplar yazılı geldiğinde panel tarafının kapsamını belirlemek çok kolaylaşır.
Cihazlar da eskir: güncelleme ve ağ güvenliği
C ya da C++ ile yazılmış cihaz yazılımları da hata ve güvenlik açığı içerebilir. Ağa bağlı bir kart okuyucu, kamera kayıt cihazı ya da ölçüm sistemi, üreticisi güncelleme yayımlamayı bıraktığında sessizce risk hâline gelir. Bu yüzden ağa bağlı cihaz alırken üreticinin ne kadar süre güncelleme sağlayacağını sorun, varsayılan şifreleri mutlaka değiştirin ve mümkünse bu cihazları ofis bilgisayarlarından ayrı bir ağ bölümünde tutun. Web paneli bu cihazlardan veri okuyacaksa, cihazın doğrudan internete açılması yerine verinin içeride toplanıp panele güvenli biçimde aktarılması tercih edilir.
Neden web paneli C++ ile yazılmaz?
Yazılabilir, ama mantıklı değildir. C ve C++ hızlıdır; ancak bellek yönetiminde yapılan küçük bir hata güvenlik açığına dönüşebilir ve internete açık bir sistemde bu risk büyüktür. Ayrıca kullanıcı girişi, form, yetki ve e-posta gibi web işlerinin hazır altyapısı bu dillerde çok daha zayıftır. Bir web paneli için PHP, Python, C#, Java ya da Node.js aynı işi daha güvenli ve daha kısa yoldan görür. Bellek güvenliğinden ödün vermeden C++’a yakın hız isteyen işlerde ise Rust da masadadır.
Masaüstü programlarda C++
Elinizde C++ ile yazılmış eski bir masaüstü programı varsa ve onu yazan firmaya artık ulaşamıyorsanız iki yol vardır: kaynak kod elinizdeyse bakımını üstlenecek bir C++ geliştiricisi bulmak, değilse programın yaptığı işi web tabanlı yeni bir sisteme taşımak. Hangisinin akıllıca olduğunu, programın donanıma ne kadar bağlı olduğu belirler. Kaynak kodu olmayan ve yalnızca eski bir Windows sürümünde çalışan bir program, o bilgisayar arızalandığı gün işi durdurabilir. Taşıma kararını arıza gelmeden, sakin bir dönemde vermek bu yüzden önemlidir; önce programın hangi ekranları ve raporları gerçekten kullanıldığını listelemek iyi bir başlangıçtır. Böyle bir programı İskenderun’da yerinde gösterip konuşmak isterseniz, iş akışını dinleyip neyin web’e taşınabileceğini birlikte çıkarabiliriz.