Yazan : Şadi Evren ŞEKER
Bu yazının amacı genel olarak bilgisayar mühendisliğini ve terimsel bazı problemleri açıklamaktır. Bu yazı, içinde bulunulan bilgisayarkavramlari.com sitesinin amacı olan akademik ve bilimsel açıklamaların dışına çıkmaktadır. Ancak bu yazı ile tartışılmakta olan bazı konulara açıklık getirilmek amaçlanmış ve sitenin genel okuyucu kitlesinin bilgilendirilmesi amaçlanmıştır. Her zaman olduğu gibi buradaki konularda yanlış veya eksik olduğunu düşündüğünüz konular için iletişime geçebilirsiniz.
Bilgisayar Mühendisliği mi / Bilimleri mi?
Bilgisayar mühendisliği yabancı bir dilden giren hemen her kelime (ya da kelime grubu) gibi sancılı bir terimdir. Kavram olarak gerek bilgisayarları gerekse bilgisayar mühendisiliğini ithal etmiş ülkemizde, ingilizcedeki “computer science” ve “computer engineering” kavramlarını karşılayan ne yazık ki tek terim bulunmaktadır. Her ne kadar Bilgisayar Bilimleri gibi sonradan bazı terimler denenmiş olsa da içerik karmaşası sayesinde bu yazının yazıldığı tarih itibariyle Türkiyedeki “bilgisayar mühendislikleri” hala iki terimi de karşılayan eğitimler vermeye çalışmaktadır.
Bu iki bölüm (computer science / Engineering) arasındaki temel fark mühendisliğin özellikle Amerika’daki üniversitelerde Elektronik fakültesine bağlı olması ve daha çok donanım, işlemci programlama, elektronik ağırlıklı çalışmasıdır. Bilgisayar bilimleri ise daha çok algoritma analizi, dil tasarımı, yapay zeka gibi nispeten soyut (mücerret) konular üzerinde çalışmaktadır. Her ne kadar iki disiplinin de ortak noktaları olarak kabul edilebilecek bilgisayar ağları, işletim sistemleri gibi konular olsa da aslında iki disiplin birbirinden ayrılmaktadır.
Türkiyede ise bu durum tek bir isimle (Bilgisayar Mühendisliği) karşılanmakta olup bu bölümlerin içeriği ağırlıklı olarak bilgisayar bilimleri olarak şekillenmektedir. Her ne kadar çeşitli üniversitelerde Bilgisayar Bilimleri, Yazılım Mühendisliği, Bilişim Teknolojileri gibi bilgisayar mühendisliğine yakın bölümler açılmış olsa da genelde aynı üniversitelerin bilgisayar mühendisliği bölümü de bulunmakta ve genelde içeriği yukarıda da anlatıldığı üzere şekillenmektedir.
Bir disiplin olarak bilgisayar mühendisliği
Her disiplinin var olabilmesi için bilimsel bazı dayanaklarının olması gerekir. Özellikle de sayısal çalışmalarda bir disiplinin varlığı, matematiksel bir dayanağa bağlıdır.
Aslında bilimlerin sınıflandırılması uzun ve tartışmalı bir konudur ancak bilgisayar mühendisliğinin bir uygulamalı bilim (applied science) olduğu konusunda uzlaşma vardır. Yani daha çok matematiksel kavram ve kuramların uygulandığı bir alan olarak görülebilir.
Bilimleri şayet doğal bilimleri (fennî ilimler) ve beşerî ilimler (insana dayalı bilimler) olarka sınıflandırırsanız, bilgisayar mühendisliğinin insana bağlı biri bilim olduğu kesindir. Bu sınıflandırmada temel rol, doğadan öğrenilen veya insan tarafından üretilen bilim olmasına göre yapıldığına göre, bilgisayar bilimlerinin büyük çoğunluğu fizik, biyoloji, kimya gibi doğadan öğrenilen bilimlerden oluşmamakta bunun yerine felsefe, matematik gibi insan tarafından koyulan kurallar ve uygulamalardan oluşmaktadır.
Bilgisayar mühendisliğinin(bilimlerinin) en çekirdeğinde algoritma kavramının ve algoritma analizinin olduğunu söylemek doğru olur. Her ne kadar bu disiplinin temeline ayrık matematiği (Discrete mathmetics) oturtan yorumlar olsa da günün birinde sürekli çalışan (continous) bir bilgisayar hakim olabilir ve bu olduğunda bu bilgisayarlar ve üzerlerindeki çalışmalar da bilgisayar mühendisliğinin konusu olacağı ve bu durumda sürekli matematikten bahsedileceği için bu ayrım çok doğru değildir.
Ancak algoritma analizi, yani bir işin nasıl yapılacağının adım adım akışının çıkarılması ve bu adımların ve akışın iyileştirilmesi (optimize) her zaman ve her problem için geçerli olacak bir durumdur.
Aslında bu açıdan bakıldığında bilgisayarların olmadığı zamanlarda da bilgisayar mühendisliğinin var olması gerektiği ortaya çıkabilir. Bunun sebebi biraz daha ingilizce terimin içerisindeki anlamdan kaynaklanmaktadır. Computer terimini Türkçeye çevirirsek yönetici, idare edici, hükmedici anlamlarının yanında hesaplayıcı, işleyici, işlem yapıcı gibi terimlerle karşılayabiliriz. Buradaki anlam, örneğin bir robotun bir üretim bandını kontrol etmesindeki anlamı da taşımaktadır. Elbette bilgisayarlardan önce de üretim veya yönetim yapılmaktaydı, bu yönetimin düşük veya üst seviye olmasına bakılmadan insanlar tarafında yapılıyordu. Ancak günümüzde bu bilgisayarlar ile yer değiştirmiş ve hızla da değiştirmeye devam etmektedir. Yine bir örnek üzerinden bakılacak olursa, trafiği günümüzde bilgisayarlar kontrol ediyor ve teknolojimiz tamamen trafiği izleyip öğrenerek en verimli şekilde örneğin bir kavşağı yönetecek bilgisayar yapmaya yeterli (ve örnekleri var) ancak bilgisayarlardan önceki dönemlerde bu iş kavşağa yerleştirilen bir polis memuru ile yapılıyor veya kavşaktakiler kaderlerine bırakılarak sürücülerin problemi çözmesi bekleniyordu.
Bu durumda bilgisayarlardan önceki zamanlarda da aslında insanlar tarafından yapılan işin bir algoritma üretilmesi ve bu algoritmanın daha iyi hale getirilmesi olarak yorumlanması yanlış olmaz.
Bilgisayarlar ve İnsanlar
Bilgisayarlar insanların yerine geçebilir mi veya bilgisayarlar insanların işlerinin sonu olur mu gibi tartışmalara bir iki farklı açıdan bakmam mümkün.
Birincisi bilgisayarlar daha çok anamalcı (kapitalist, capitaist) bir yaklaşımın ürünüdür. Burada amaç insandan bağımsız olarak para ile kontrol edilmesi, üretilmesi ve yönetilmesi kolay bir sistem kurmaktır. Burada teknolojiyi anamal yoğun (capital intensive) ve emek yoğun (labour intensive) olarak ikiye ayırmak mümkün. Seçilen teknoloji insan gücüne daha çok ihtiyaç duyuyorsa emek yoğun, para ve sermaye birikimine daha çok ihtiyaç duyuyorsa anamal yoğun olarak isimlendirilebilir.
Bilgisayarların ağırlığının artması ise hiç şüphesiz emek yoğun sistemlerden anamal yoğun sistemlere geçişin bir göstergesidir. Örneğin bin kişilik bir fabrikayı artık on kişi ile işletebiliyorsanız daha çok paraya daha az insana ihtiyacınız vardır.
Bu durum hemen bilgisayarların, insanların işlerine ve gelirlerine son verdiği olarak yorumlanmamalıdır. Bu görüşü savunan pekçokkişiye karşılık bu görüşün tersini savunan kişiler yeni açılan iş sahalarını ve gelişen teknoloji ile insanların daha az çalışmalarına (ve dolayısıyla geçinmek için daha az gelire ) artık ihtiyaç duymalarını göstermektedir.
İnsan ve makine çizgisi
Yukarıda bilgisayarların giderek daha hakim olduğu bir dünya çizilirken buradaki insan ve makineler arasındaki sınırdan bahsetmek gerekir.
Bu noktada sıkça sorulan ve kurgu bilim filimlerine de sıkça konu olan “birgün insan gibi düşünen bilgisayarlar olabilecek mi?” ve tabi bunun bir adım sonrasındaki soru “bilgisayarlar birgün dünyayı ele geçirecek mi” gibi sorular bilgisayarların güncel hayata girmesinden çok önce çeşitli tartışmalara konu olmuş ve değişik kriterler ortaya konulmuştur.
bu kriterlerin en meşhurlarından birisi de Turing Testi olarak geçen testtir. Basitçe bir odadaki iki monitörün birisinin arkasında bir bilgisayar, diğerinin arkasında da bir insan oturmaktadır. Sorulan sorular ile hangi monitörün arkasında insan oturduğu anlaşılamıyorsa, söz konusu bilgisayar Turing Testini geçmiş sayılır. Şayet soruların hepsine insan gibi cevap verebilen bir bilgisayar yapılabilirse (ki bu soruların büyük kısmı insan gibi düşünmeyi gerektirir) bu durumda evet bir gün insanları tamamen ikame edebilecek (insanların yerine geçebilecek) bilgisayarlar yapmak mümkündür.
Ancak her konuda olduğu gibi bu konuda da Turing testine inananlar ve inanmayanlar olarak bilim dünyası ikiye ayrılmıştır. Kişisel olarak bu testin geçilebileceğine inanmamamla birlikte yapılan çalışmaların, bu testteki sorulara her geçen gün daha başarılı yanıtlar vermek yolunda ilerlediğini kabul etmek gerekir.
İşte bu noktada insa ve makine çizgisi devreye girmekte ve bir sistemde makinelerin yapacağı işler ile insanların yapacağı işler arasında bir sınır çizmektedir. En azından şimdilik bilgisayarlar herşeyi yapamadığına göre her sistemde insana ihtiyaç vardır. İnsanın devreye girdiği noktada ise arada bir sınır oluşmaktadır.
Bu sınırda ise bilgisayarlar ile iletişim kurulan bir arayüze ihtiyaç duyulur. Pekçok kere görsel sanatlarında konusu olan bu sınırda çeşitli ekranlar veya donanımlar vasıtasıyla insanın bilgisayarlar ile iletişim kurması üzerinde çalışılmıştır.
Bilgisayar mühendisliğinin bir kısım çalışmaları da bu noktada yoğunlaşmaktadır. Örneğin tasarım ve göresel öğelerin üretilmesi konuları, veya bilgisayarlar tarafından üretilen verilerin görüntülenmesi gibi konularda çalışma alanları hızla artmaktadır.
Bilgisayar Mühendisliği Eğitim İçeriği
Üniversitedeki bir bilgisayar mühendisliği bölümünde olabilecek anabilim dallarını sıralamak istersek aşağıda yapılan listeye benzer bir liste elde edilebilir:
- Algoritma analizi (Algoritmalar teorileri olarak da isimlendiriliyor (Algorithm Analysis, Theory of Algorithms))
- Yazılım Mühendisliği (Software Engineering)
- Dosya yönetimi ve Veri tabanları (File organisation and Database management systems)
- İşletim sistemleri (Operating Systems)
- Otomata ve Programlama dilleri (Derleyici (Compiler) tasarımı olarak da geçiyor ve Automata Theory)
- Veri iletişimi ve ağ yönetimi (networking, data communication and networks)
- Yapay zeka (Artificial Intelligence)
- Veri Güvenliği ve Şifreleme (Cryptology)
- Bilgisayar Grafikleri ve Resim işleme (Computer Graphics and image processing)
- Mikro işlemciler (Micro processors veya Micro controllers)
- Bilgisayar Mimarisi (Computer Organisation)
şekliden saymak mümkündür. Bu listeye ekleme ve çıkarmalar yapılabilir. Ayrıca bu listede bulunmayan ancak bu listedeki gruplardan birkaçına birden giren pekçok çalışma alanı vardır. Örneğin Internet programlama konusunu hem veri iletişimine hemde algoritmalara koymak hatta bu konuyu bir proje yönetimi olarak ele alırsak yazılım mühendisliğine de dahil etmek mümkündür. Veya uzman sistemler, yapay sinir ağları veya doğal dil işleme gibi konuları yapay zekanın bir alt dalı olarak incelemek veya tamamen ayırmak da mümkündür.
Aslında bilgisayar mühendisliği eğitimi de bu anabilim dallarının hepsinden en az birer giriş ders alarak hepsi hakkında bir fikir sahibi olmaktır. Bu konuların tam olarak ne oldukları ve işe yarar seviyede bilgi alınması ancak yüksek lisans ve sonrasında mümkün olmaktadır.
Ne yazık ki bilgisayar mühendisliği bölümleri, piyasadaki eleman ihtiyacı ve buna bağlı istihdam olanaklarından dolayı akademide yeterli öğretim görevlisinin bulunmadığı ve pekçok üniversitede yukarıdaki konuların hepsinde çalışan hocanın bulunmasının istisna olduğu bölümlerdir. Dolayısıyla pek çok bilgisayar mühendisi yukarıdaki bu ana konuların çoğunu görme şansı olmadan mezun olmaktadır.
Türkiyede Bilgisayar Mühendislerinin Çalışma Alanları
Bir ülkenin teknoloji üretim ve kullanım seviyesi olmak üzere iki farklı seviyesinden bahsetmek mümkündür. Türkiyedeki teknoloji üretim seviyesi ne yazık ki kullanılan seviyeye oranla düşüktür. Yani kullandığımız teknolojik gelişmelerin bir kısmını üretmek yeirne hazır almaktayız. Bu durumda teknolojik üretimin gerektirdiği ve bir önceki başlıkda sayılan bazı anabilim dallarında insan istihdam edilememesi anlamına gelmektedir.
Genel bir bakışla Türkiyedeki bilgisayar mühendisleri şu alanlarda çalışmaktadır:
- Akademik çalışmalar (üniversite ve şirketlerin ar-ge bölümleri)
- Yazılım geliştirme
- Veritabanı yönetimi
- Sistem yönetimi (ağ yönetimi ve sunucu yönetimini kapsar şekilde)
- pazarlama ve satış sonrası veya öncesi teknik destek
Yukarıdaki liste ağırlıklı olarak bilgisayar mühendisliği veya benzeri bölümlerden mezun olan kişilerin Türkiyede çalıştığı alanlardır. Ağırlıklı olarak pazarlama ve yazılım geliştirme konularında istihdam edilmelerine karşılık göreceli olarak çok az da olsa yukarıdaki listeye girmeyen bilgisayar mühendisliği alanlarında da çalışan kişiler vardır.
ben su anda azerbaycanda bilgisayar sistemleri ve aglari bolumunun hazirlik sinifinda okuyorum ve su anda bilgisayarda sifirim ve bizim okulda da egitim pek olmadigindan kurslarla ve kendi kendime isimi halletmeye calisacagim sizce bilgisayarda hangi alanda uzmanlasmaliyim(yazilim,sistem,donanim,webtasarim,veri tabani,server vs.)eger cevabiniz bunlardan biriyse aciklayarak on da da hangisini secmemi tavsiye edeceginizi yazarsaniz daha iyi olur yani mesala yazilim sa (delphi,c,c#,pascal,java,c+ vb.)gibi sebeblerini yazarak anlatirsaniz iyi olurtesekurler
Cevap olarak, daha önce benzer sorular soran bir arkadaş ile yazışma kayıtlarımızı buradan yayınlıyorum. Kendisinden izin almadan yayınladığım için kişisel bilgilerini gizliyorum. Umarım yardımcı olur. Bunun dışında başka sorularınız olursa her zaman yardım etmeye çalışırım. (Bu arada burada yazanlar tamamen kişisel görüş ve yorumlardan ibaret olup bu site kapsamındaki akademik yazılardan ayrı değerlendirilmelidir)
:
slm ben bilgisayar muhendılıgı ikincisınıftayım biraz c,birazda c++ biliyorum buların dışında,bilgisayarın temelini bilmek istiyorum yani format çekerken bile ezbere gidiyoruz bundan kurtulmak istiyorum,ögrenmem gereken software’midir hangi kaynaklardan yararlanabilirim okul yeterli değil teşekür ederim.
Şu soruya cevaben: ismail | 03 May 2009, 16:25
—————————————–
Hangi okulda öğrenci olduğunuzu yazmamışsınız ancak Bilgisayar Mühendisliği bölümünde özellikle 3. ve 4. sınıfta ihtiyacınız olan pek çok teorik bilgiyi alacaksınız. Müfredata bağlı olarak değişim gösterebilir ama bunların epeyce uygulamasını da yapacak olmalısınız. Yine de yeterli gelmediğini düşünüyorsanız bu yazıda anlatılan ana başlıklarla ilgili çeşitli yayınlar bulabilirsiniz. Yararlı olacaktır.