Katılım
27 Mayıs 2019
Mesajlar
173

Altta yazdım ancak bu yazıyı okumayacaklar için söylemiş olayım, bilgisayar biliminin kurucusu kadındır, Ada Lovelace.
Antikythera mechanism (İlk hesap makinesi)
Analytical Engine (Algoritma oluşturulan ilk bilgisayar olarak kabul ediliyor ve bu yüzden Ada lovelace bilgisayar biliminin kurucusu)

Donanımsal bir sorundan dolayı yardım almak için girdim. Programlama alanı dikkatimi çekti. Sürekli tekrarlayan biçimde

• Hangi dili öğrenmeliyim?
• X alanı için hangi dil?
• Şu dili öğrendim, hangi dile geçmeliyim?
• O dille birşey yapamazsın bunu öğren.
• Yazılıma ya da Programlamaya nasıl başlanır sorusuna "Abi sana kobra verelim".

Gibi konu başlıkları ya da cevaplar vardı. Bende o yollardan geçtiğim için biliyorum amacım yermek falan değil. Ancak bu şekilde düşünmek vakit kaybıdır, ara süreçtir. ODTÜ, Bilkent, Koç, Sabancı haricinde bilgisayar bilimi (Bilgisayar mühendisliği demeyi tercih etmiyorum.) okurken bilinçlendirmezler adamı. Hepsinin detaylı dersleri vardır alasını görürsün ama özel ilgi duymayan öğrenciler mezun olduklarında kafalarında oturtur. Bu saydığım üniversiteler öğrencilerini aldıkları gibi o alanda Bilinçlendirir. Okurken herkes belli bir düzeye gelir, 4. sınıfta gerçekten iyi bir seviyededir. Diğer üniversitelerde de bazı kişiler gerçekten üst seviyelerdedir ancak o kişilerin kendi ilgileri vardır. Adaptasyon sürecini lisede yaşarsa üniversiteye bilinçli bir şekilde gelir. Benim bu yazıdaki amacım buradaki liseli kardeşlerim ve üniversiteye yeni başlayanlar için belli bir bilinç seviyesi oluşturmak.

Yazıların tanımsal bölümünü http://www.megep.meb.gov.tr/mte_program_modul/moduller_pdf/Kodlamaya Hazırlık.pdf buradan kopyaladım. Gayet anlaşılabilir tanımlanmış. Kendim gözlemlediğim sorun ve yanlış soru/cevaplara göre soru oluşturup doğru şeklini anlatmaya çalıştım. Amacım bu tanımları anlatmak değil. Üstte bahsettiğim yanlış bakış açısını değiştirmek gerektiği için yazıyorum. Bunu anlatabilmek içinde okuyanların bu tanımları bilmesi gerekiyor. Eğer çaylaksanız okumadan atlamayın.


1-) Bilgisayarın Çalışma Mantığı

Bilgisayar, kullanıcıdan aldığı verilerle mantıksal ve aritmetiksel işlemleri yapan yaptığı işlemlerin sonucunu saklayabilen, sakladığı bilgilere istenildiğinde ulaşılabilen elektronik bir makinedir. Bu işlemleri yaparken veriler girilir ve işlenir. Ayrıca, istenildiğinde yapılan işlemler depolanabilir ve çıkısı alınabilir.

Giriş: Kişi tarafından veya bilgisayar tarafından sağlanan verilerdir. Bu veriler, sayılar, harfler, sözcükler, ses sinyalleri ve komutlardır. Veriler giriş birimleri tarafından toplanır.

İşlem: Veriler insanların amaçları doğrultusunda, programın yetenekleri ölçüsünde işlem basamaklarından geçer.

Bellek: Verilerin depolandığı yerdir. Giriş yapılan ve işlenen veriler bellekte depolanır.

Çıkış: Bilgisayar tarafından işlem basamaklarından geçirilerek üretilen yazı, resim, tablo, müzik, grafik, görüntü, vb ekrandan ya da yazıcı, hoparlör gibi değişik çıkış birimlerinden alınmasıdır.

Bilgisayarın nasıl çalıştığını öğrenmek için onun bilgileri nasıl kullandığını anlamak gerekir. Harfler ve rakamlar bilgisayarda kodlar şeklinde ifade edildikten sonra kullanılır. Bilgisayarlarda kodlar elektrik olarak voltajın olup olmaması ile ifade edilir. Voltaj var, lamba yanıyorsa 1; voltaj yok, lamba yanmıyorsa 0 kodlarını alır. İki durumlu olan bu kodlamaya "ikilik sistem" denir. Bilgisayara tuşlardan verilen her bilgi 1 ve 0 kodlarına çevrilir. Her 0 ve 1, bit olarak; sekiz bitlik grup ise byte olarak tarif edilir. Bilgisayar, işlemlerini ikilik sayı sistemi ile yapar. İşlemler çok sade ve basit olmakla beraber çok
hızlıdır.


Bilgisayarlar sadece sayıları saymakla kalmayıp karar da verebilir. Bu kararlar, Boolean matematiği denilen mantık kaidelerine göredir. Çeşitli şartlara göre bilgisayar EVET, HAYIR, VE, VEYA, DEĞİL gibi kararlar alabilir. Mesela; evi taşımak için bir kamyon VE bir şoföre ihtiyaç vardır. Bu kamyon bir dar köprüden geçmek zorundaysa kamyon geniş VEYA yüksekse köprüye çarpar. Taşınacak ev boş DEĞİL ise taşıma işlemi gecikecektir. Burada VE, VEYA, DEĞİL kararları verilmiştir.


2-) Makine Dili

Makine dili mikroişlemci ya da mikrodenetleyici gibi komut işleme yeteneğine sahip entegrelerin işleyebilecekleri komutlardan ve buna uygun söz diziminden oluşan dile verilen addır. Makine dili, işlemcinin verilen komutlar doğrultusunda çalıştırılmasını sağlayan ve işlemci mimarisine göre değişen en alt seviyedeki programlama dilidir. Bu dil sadece 0 ve 1 ikililerinin anlamlı kombinasyonlarından meydana gelmektedir. Bu nedenle, makine dilinin anlaşılması çok güçtür. Sonuç olarak bilgisayar programı hangi dilde olursa olsun formatı makine diline çevrilmesi gereklidir. Her emrin yerine getirilmesine "Instruction Cycle" denir ve 4 ana kısımdan oluşur;

Fetch: Bir sonraki emri hafızadan getir.
Decode: Emrin ne demek istediğini çöz.
Execute: Emir yerine getirilir, işlem yapılır.
Store: Sonucu sakla.

Kısaca özetleyecek olursak;

• Bilgisayarın doğal dilidir.
• Bilgisayarın donanımsal tasarımına bağlıdır.
• Makine dili “010101001”lerden oluşan komutlardır ve bunlar doğrudan makineye hitap eder.
• Makine dili işlemci türüne özel olarak yazılmaktadır. Dolayısıyla, bir işlemci türü için makine diliyle yazılmış program, diğer işlemciler için uygun olmamaktadır

3-) Sayı Sistemi

Bilgisayar ortamında dört çeşit sayı sistemi kullanılmaktadır. Bunlar;

• İkilik sayı sistemi (Binary)
• Sekizlik sayı sistemi (Oktal)
• Onluk sayı sistemi (Desimal)
• Onaltılık sayı sistemi (Heksadesimal)

(Binary, Oktal, Desimal, Heksadesimal ile ilgili video izlerseniz daha iyi olur. Eğer sayı tabanlarını bilmiyorsanız "
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
" )


4-) Derleyici

Bir programlama dilinde yazılmış olan kaynak kodunu başka bir dilen (genellikle makine koduna) çeviren yazılımlara derleyici denir.
Örneğin, şu satırı bir programın kaynak kodunda (programın okunabilir hali) düşünelim:
X= 2+Y
Alttaki assembly'de yazılmış satırlar, aynı programın derlenmiş halidir:

LOAD A [0] ;; Belleğin 0 adresindeki veriyi A siciline yükle
ADD A BX ;; sicilindeki adreste bulunan veriyi ekle
STOR A [100] ;; sonucu 100 adresine yaz

Bu örnekte çevirinin hedefi, programcının anladığı kaynak kodundan işlemcinin anladığı 0 ile 1’den oluşan makine dili kodunu üretmektir (LOAD, ADD ve STOR komutları 0001, 0011 ve 0010 olarak yorumlanır.).



5-) Yazılım

Yazılım, elektronik aygıtların belirli bir işi yapmasını sağlayan programların tümüne verilen isimdir. Bir başka deyişle var olan bir problemi çözmek amacıyla bilgisayar dili kullanılarak oluşturulmuş anlamlı anlatımlar bütünüdür. Kelime işlemci programları, bilgisayarınız açıldığında CD sürücünüzü, sabit sürücüleri, RAM'i tanıyan BIOS; işletim sistemi, web tarayıcınız, virüslerin kendileri, antivirüs programları hep birer yazılımdır.




6-) Bir Yazılımda Olması Gereken Temel Özellikler (Bunlar çok değişken, ders olarak işlenen bir konu, ne amaçla ne yapıldığı ve neyin öncelikli olduğuna göre öncelikler değişiyor ve yeni altbaşlıklar ekleniyor, böyle şeylerinde var olduğunu görmeniz için bunuda kopyaladım)

Doğruluk: Yazılımın belirtilmiş ihtiyaçlarını karşılamasıdır.
Güvenilirlik: Gerekli işlevi ne hassaslıkla yerine getireceği beklentisidir.

Verimlilik: İşlevin gerçekleştirilmesi için kullanılması gereken bilgisayar kaynakları
ve kod miktarıdır.

Güvenlik(Bütünlük): Yazılım ve bilgilerine, istenmeyen insanlarca ulaşımın ne
derece engellenebildiğidir.

Kullanılabilirlik: Programın öğrenilmesi, çalıştırılması, girdi hazırlama ve çıktı
yorumlama işlemlerinin kolaylık derecesidir.

Hata bulma kolaylığı: Hatanın yerini bulma ve düzeltme kolaylığıdır.
Esneklik: Yazılımda değişiklik yapma kolaylığıdır.

Taşınabilirlilik: Programın farklı donanımlarda ve yazılım sistemi ortamlarında
kullanılmasıdır.

Tekrar kullanılabilirlik: Yazılım tamamının ya da bir bölümünün farklı bir uygulamada kullanılabilmesidir.

Birlikte çalışabilirlik: Bir yazılım sisteminin diğerleri ile bağlantı sağlaması kolaylığıdır.


7-) Yazılım Çeşitleri

Bilgisayar yazılımları genel olarak 2 ana grupta incelenebilir.

Sistem yazılımları (system software) : Bilgisayarı yöneten, denetleyen, kontrol eden yazılımlardır.
Bütün sistem programları içinde en temel yazılım işletim sistemidir ki, bilgisayarın
bütün donanım ve yazılım kaynaklarını kontrol ettiği gibi kullanıcılara ait uygulama
yazılımlarının da çalıştırılmalarını ve denetlenmelerini sağlar.
Örneğin: Linux, Pardus, Windows vb.

Uygulama yazılımları (application software) : Belli bir alana veuygulamaya ilişkin olarak kullanıcılar için geliştirilmiş yazılımlardır.
Örneğin: IDE'ler, Veritabanı programları, Photoshop, Paint, Spotify vb.


:cool: Programlama Dili

İster genel ister özel amaçlı olsun tüm uygulama ve sistem yazılımları programlama dilleriyle yazılır. Bir programlama dili, insanların bilgisayara çeşitli işlemler yaptırmasına imkân veren her türlü sembol, karakter ve kurallar grubudur. Programlama dilleri insanlarla bilgisayarlar arasında tercümanlık görevi yapar. Programlama dilleri, bilgisayara neyi, ne zaman, nasıl yapacağını belirten deyim ve komutlar içerir


9-) Programlama Dilleri Seviyesi

Bir programlama dili ya insan ya da makine anlayışına yakındır. İnsan anlayışına daha yakın programlara dillerine yüksek seviyeli programlama dilleri, makineye yakın olanlara ise düşük seviyeli programla dilleri denir. Yüksek seviye programlama ile yazılan projelerin kaynak kodları kısa, derlenmiş hâlleri ise uzun olur. Çalışma hızları ise yavaştır. Alçak seviye programlama ile yazılan projelerin kaynak kodları uzun, derlenmiş hâlleri ise kısadır olur. Çalışma hızları ise en yüksek seviyededir.


10-) Algoritma

Verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiçbir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir. Algoritmanın tanımı yeni başlayanlar için bir anlam ifade etmeyebilir. Bu alanda ilerlerseniz bununla ilgili matematik ve kitaplarla ilgileneceksiniz. Tek başına bir yazılım alanı.

Algoritma örnekleri

Örnek: Örneğimiz bir öğrencinin evden çıkıp okula giderken izleyeceği yolu ve okula
girişinde ilk yapacaklarını tanımlamaktadır.
Çözüm:
• Evden dışarıya çık.
• Otobüs durağına yürü.
• Durakta gideceğin yöndeki otobüsü bekle.
• Otobüsün geldiğinde otobüse bin.
• Biletini bilet kumbarasına at.
• İneceğin yere yakınlaştığında arkaya yürü.
• İneceğini belirten ikaz lambasına bas.
• Otobüs durunca in.
• Okula doğru yürü.
• Okul giriş kapısından içeriye gir.
• Sınıf arkadaşlarınla selamlaş.
• Sırana otur.
• Öğretmenin gelmesini bekle.

Örnek: İki sayıyı toplamak için gerekli programa ait algoritmanın oluşturulması
Çözüm:
A1 : Birinci sayıyı gir.
A2 : İkinci sayıyı gir.
A3 : İki sayının toplamını yap .
A4 : Toplamın değerini yaz.
A5 : Bitir.


11-) Akış Diyagramı

Herhangi bir problem için oluşturulan algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline “akış diyagramı” denir. Akış diyagramları, yazılımı
oluşturacak program parçalarını ve bu parçaların birbirleri ile olan ilişkilerini belirler. Akış diyagramlarının algoritmadan farkı, adımların simgeler şeklinde kutular içinde yazılmış olması ve adımlar arasındaki ilişkilerin oklar ile gösterilmesidir


12-) PROGRAMLAMA DİLİ

Bilgisayar programlama konusunda şu ya da bu programlama dili daha iyidir demek yanlıştır. Önemli olan yazılımın içeriğidir. Seçilecek programlama dili ile yazılımın en efektif şekilde üretilmesi amaçlanır. Programlama yazılımlarının görevi yazmış olduğumuz kodları belirle kurallar çerçevesinde bilgisayarın anlayacağı dile çevirmektir. Her programlama yazılımı bütün dilleri derleyemeyeceğinden yazacağımız kodlara uygun bir yazılım seçmemiz gerekmektedir. Günümüzde kullanılan çok çeşitli programlama dilleri mevcuttur.

13-) IDE

Tümleşik geliştirme ortamı (Integrated development environment), bilgisayar programcılarının hızlı ve rahat bir şekilde yazılım geliştirebilmesini amaçlayan, geliştirme sürecini organize edebilen birçok araç ile birlikte geliştirme sürecinin verimli kullanılmasına katkıda bulunan araçların tamamını içinde barındıran bir yazılım türüdür. Jetbrains ürünleri, Visual Studio gibi.

14-) İşlemci

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
Transistörü araştırın

Bunları biliyorsanız veya okuduysanız bunları doğru şekilde anlarsınız.

S1-) Bilgisayarı neden kullanıyoruz, neden kullanmak zorundayız, düşük - yüksek seviyeli programlama dili neden var ve ne anlama geliyor ? (Bu sadece sizin kullandığınız bilgisayar değil, işlemcisi olup veriyi işleyen tüm sistemler)

• Bir insanın yapması mümkün olmayan boyutta işlemler. (İnsan kapasitesi yetmeyen işlemler)
• Bir insanın yapması mümkün olan ama çok uzun zaman alan işlemler. (İnsan ömrü yetmeyecek işlemlere kadar gidiyor)
• Bir insanın yapması mümkün olan ama karmaşıklıktan dolayı yapılması güç işlemler. (Süper bilgisayarlarda doğruluğu test edilen matematiksel herşey, kriptoloji)

İlk bilgisayarlar yukarıda saydığım 3 nedenden dolayı çıkmıştır. Bilgisayar aslında hesap makinesidir olayıda yukarıdaki 3 nedendendir. Bilgisayar kavramının değişmesi ile bu nedenler arttı ve zorunluluk haline geldi. Enigmayı çözmek için geliştirilen makine iyi bir örnektir yukarıdaki ihtiyaçlara. Belirli bir zaman aralığında değişen şifreler var, bu şifreleri o sürede çözmek insan için imkansız ancak makineler ile çözülebiliyor. (Alan Turing'in filmini izlemediyseniz izleyin)

• İnsan kaynaklı hatayı kaldırmak.
• Belli bir standartı yakalamak.
• Yapılması mümkün, kolay, kısa olan işlemler için dahi bilgisayar kullanmanın avantajlı veya zorunluluk haline gelmesi. (Tek madde olabilir ama manası çok derin)
• Yapay bilinç oluşturmanın avantajları.
• Veriyi küçük bir kutuda tutma kolaylığı, anında veriyi bulma, aktarma, işleme, kontrol etme, karşılaştırma; ofis malzemeleri yükünden kurtulmak, ağaçların kesilmesini önlemek ve doğayı korumak.
• Bilgisayarın hayatın tüm alanlarına yerleşmesi ve yarattığı ivmenin herşeyi hızlandırması. İletişimden, simülasyona, üretimden, deneylere bütün alanlarda.
1900'lerde bilimadamları birbirleriyle mektuplarla haberleşiyorlardı. Şimdi internet üzerinden birbirlerine anında ulaşabiliyorlar. Bu bile bilimin gelişimini hızlandırıyor Kral elçi yolluyordu, şimdi anında diplomatik işlemler yapılıyor. Yapılmak istenilen iş için gerekli diğer basamaklar için harcanan süre sıfırlandı. Dünya daha hızlı akıyor bizler için.
• Maliyet düşürmek.
• Şuanda aklımıza gelmeyen ancak ileride düşünebileceğimiz tüm teknolojiler için bilgisayar zorunluluktur.

İlk 3 nedenin olduğu eski dönemlerde makine dili ile programlama yapılırken, yapılan işin seviyesi(statü olarak değil) arttıkça programlama dilinin seviyeside arttı.
Kullanıcı arayüzü "GUI" (Mouse ile tıklayarak herşeyi hallediyoruz, herşeyin grafik olarak bir karşılığı var ya işte o) çıkana kadar insanlar bilgisayarda yapacağı herşey için kod yazıyordu, şuan linux işletim sisteminin "GUI" olmayanı. Siz mouse ile bir yere tıkladığınızda o tıkladığınız yer ile ilgili olan kod çalışıyor ve işleme alınıyor. Siz bilgisayarda kod yazıyorsunuz ancak bunun farkında değilsiniz. Günlük konuşma diline yakın programlama dilleri yüksek seviye, makine diline yakın programlama dilleri düşük seviye olarak geçiyor. Bu yüksek ve alçak kavramı dünyanın katmanları gibi. Yüksek seviye daha iyi demek değildir, katmanları belirtiyor, hangi katmana daha yakın olduğunu, dünyanın katmanları gibi. Projenin ne projesi olduğu, ömrü, niçin kullanılacağı, lisans ücreti, platformu, nerede kullanılacağı, bütçesi, bakım masrafları, performansının ne kadar önemli olduğu, bunun gibi birçok kriter gözden geçirilir ve ona göre dilin seviyesi belirlenir. Eskiden aynı seviye diller arasında çok fark olmasına rağmen günümüzde böyle bir fark yok gibidir. Sürekli güncelleniyor, birinde olan diğerine geliyor. X seviyesindeki dillerin kendi içinde barındırdıkları özellikler farklıdır, başka bir seviye olması gereken özellik onda olmayabilir hatta olmaması gerekebilir çünkü o iş için kullanılmaz, dezavantajları vardır. Aynı seviye diller genellikle söz dizimi olarak birbirine çok yakındır (Ruby hariç). Özellikleri ve kütüphaneleri standarttır, çoğu yine aynıdır, metodlarının isimleri dahi aynı olabilir. Bilgisayar biliminin temel konularını bilen biri iseniz ve x seviyesinde bir dili biliyorsanız, yine x seviyesindeki başka bir dili öğrenmeniz 1 haftadan uzun olmaz. C# biliyorsanız, Javayı 1 haftada öğrenebilirsiniz. Bir dili bilmek, herşeyini bilmek değildir, istenilen projeyi yapabiliyor, o projeleri yaparken karşına çıkan şeylerden dolayı yeni özelliklerini öğreniyorsan biliyorsundur. Programlama dilini bilmek ve bilgisayar bilimi konusunu henüz açıklamadığım için bunu aşağıdaki yazıdan sonra tekrar gözden geçirin, farklı anlamlar çıkarabilirsiniz. Projeler yaptıkça dilin özelliklerini inceler ve öğrenirsin, yeni kütüphaneler eklersin. Donanım için yazılım yapıyorsan hızlı olması, düşük kaynak tüketmesi, yapım süreci için vakit var, güncelleme neredeyse yoktur. Bunun için alt seviye programlama dili tercih edilir. Hızlıdır, geliştirmesi daha uzun sürer, daha maliyetli olabilir (Basit cihazların kodu elbette ucuzdur). Sürekli güncellenen herhangi bir uygulama ya da hızlı yapılması gereken bir uygulama ya da düşük bütçeli bir uygulama ya da yazılım alt seviyede çalışmadığı için kullanılan programlama dilinin hızının önemli olmadığı bir projede yüksek seviyeli (örn java, c#) programlama dili kullanılır. İki işte birbirinden farklıdır, düşük seviye programlama dili kullanman gereken yerde yüksek seviye, yüksek seviye programlama dili kullanılan yerde düşük seviye programlama dili kullanmanın hiçbir yararı yoktur, zararı vardır. Hız, para, zaman ve duruma göre başka şeyler.


S2-) Programlama dilini bilmek, proje yapmak, yazılım yapmak, bilgisayar bilimi, X alanında yazılım yapmak için hangi dil?

Bilgisayar makine dilinden anlıyor. 0 ve 1'lerle komut vermek zor olacağından programlama dillerini geliştirdik (Şimdi programlama dilleri nesilleri ve farklarını internetten bakın). Uzun bir süre kullanıcılar bilgisayarlarda komut vermek için kod yazdı. O dönemde bilgisayarlar muhasebe, banka, veri depolama, hesaplama alanlarında ticari olarak kullanılıyordu. Kişisel olarak nasıl kullanıldığına şu anda internetten bakın, benim yaşım yetmiyor, birebir o dönemde o şekilde kullanmış insanların yorumları var, onlar daha iyi anlatır. Kişisel tecrübeler, kullanıcı deneyimi bu alanda inanılmaz önemlidir.


Daha sonra normal insanlar rahat kullanabilsin, bilgisayar yaygınlaşsın diye GUI oluşturuldu. Steve Jobs bunu yapım aşamasındayken şuanda var olan başka büyük bir firmadan alıyor. Bill'de steve'den araklıyor. Herşeyi Apple'dan çaldı söyleminin temeli budur, daha çok şey çalmıştır ama bunun önemi diğerleriyle kıyaslanamaz. GUI çalınan bir şey midir oda tartışılır tabi ama vizyon olarak çaldığı tartışılmaz (Apple'danda gelen çalıyor, Çinliler tüm geçmişini kopyaladı). Kullanıcı arayüzü üzerinde yapılan tüm işlemler arka planda bir ya da birçok kodu harekete geçiriyor, kod yazmak yerine işletim sisteminin kullanıcı arayüzü bunu sizin için kolaylaştırıyor. Bir dosyaya tıkladınız, kopyala seçeneğine bastınız, başka bir diske, klasöre gidip yapıştırdınız. İşletim sistemi adım adım bu yaptıklarınızı kodluyor, o komutları harekete geçiriyor, aynı linux'tan bildiğiniz basit işlem komutları işliyor. Komut satırıda aynı şey, kullanıcı arayüzü ile yaptığınız şeyleri oradanda yapabiliyorsunuz.


GUI'den sonra sesli komutlar (dil işleme), el-göz hareketleri ile verilen komutlar var. Yapay kullanıcı arabirimi (mouse) yerine doğal şekilde kod yazabiliyorsunuz. Benim el, göz hareketlerime göre ya da sesli komutuma göre işletim sistemi ilgili kodları işleme alıyor, çalıştırıyor, yazıyor. Hareketlerimi kendi tanımlamalarına göre sınıflandırıyor, ilgili kodları çalıştırıyor.


Yapay zeka ve uzman sistemler bunların bir seviye daha ötesinde. Önceden belirlenmiş şekilde durumlara göre kendi ne yapılacağını belirleyip buna göre gerekli kodları çalıştırıyor, yazıyor, değerlendiriyor. Yüksek seviye programlamaya çıktıkca müdahale edilebilecek kod azalıyor. Yapay zeka tam anlamıyla bilinç sahibi olduğunda insanın ötesinde alt seviyedeki işlemleri dizayn edebilir, bu istisnadır.


Buradan çıkarılacak sonuç:
A-) Bunların hepsi bir çeşit programlamadır. Arkaplanda derine inildiğinde her işlem 0 ve 1'dir.
B-) Bir istisna hariç yüksek seviye programlama diline çıktıkca müdahale olanağımız azalıyor. Bu kötü bir şey değil. Ona göre Programlama dili seviyesi belirliyorsunuz zaten. Fotoğrafınızı çekmek için gidip komut satırını kullanmıyorsunuz, butona basıyorsunuz, o sizin için kod yazıyor. Hatta 5 saniye gibi çekim şeyleri var, zaman sayaçlı, bunlarda fotoğrafı çek ama 5 saniye sonra, şu saniye sonra çek diye kodu düzenliyor o buton. Ama 32 saniye ayarlayamıyorsunuz. Bunu kod ile yapmak çok kolay ancak kimse gidip kod yazmaz bunun için. çok kullanılan şeyler eklenebilir. 7 saniye bekleyip sonra çekmesini istiyorsunuz diyelim. 5 ve 5'in katları şeklinde bekleme süresi olsun. 5 seçerseniz işinizi görmez, 10 saniye seçmek zorundasınız, bu seferde 3 saniye fazla beklemeniz gerekiyor. Bu bizim için önemli olmayabilir bunun gibi milyonlarca işlem, kullanıcı olduğu zaman işte bu önemli olur. Sesli komut ile uygulama sizin için kodda düzenleme yapabilir ve belirttiğiniz süre bekleyebilir. Bu anlaşılır olsun diye bir örnekti. 3 Saniye için gidip kod yazmak mı mantıklıdır yoksa butona basıp fazladan 3 saniye beklemek mi? Ama milyonlarca işlem basamağı olan bir uygulamadaki gereksiz işlem basamaklarını değiştirmek gerekli olabilir, donanım için yazılım yapıyorsanız 1 işlemin bile önemi büyüktür. (Buna kafayı takmayın, birden fazla ders ve konularla işleniyor, kafanızda bir imge oluşması için bu şekilde anlatmak zorundayım.)
C-) Programlama dili, işlemcinin anlaması için gerekli iletişim aracından başka bir şey değildir. Onunla neyi, nasıl yapacağınızı anlatırsınız. O yüzden programlama dilini bilmeniz, çoğu kişinin bahsettiği anlamda program yapabileceğiniz anlama gelmiyor. Mouse ile bilgisayar ne ise, Programlama dili ve işlemci odur. Elbette farkları vardır ama aşağıda başka birşeyi anlatabilmek için bu şekilde kabul edebiliriz.

Biz programlama dilini araç olarak kullanıyoruz. Amacımız komutlarımızı işlemciye anlatabilmek ve istediğimiz sonucu elde edebilmek. Bunu yaparken şartlar, öncelikler falan var, bunlar için gösterilen dersler var, birimler var. Bir programlama dilinin temelini, metodlarını, nesne yönelimli programlamayı öğrenmenin hiçbir karşılığı yoktur. Peki kardeşim öğrendin bu dili, ne yapacaksın? Sayılarla istediğin gibi oynuyorsun, final notu hesaplıyorsun, dandik bir otomasyon programı yaptın, ne işe yarıyor? Gerçek hayatta kullanılabilir bir şey olma olasılığı var mıdır? İşte o yüzden liseli arkadaşlarımız ve yeni üniversiteliler şu dili öğrendim hangi dili öğreneyim diyor.Zannediyorlar ki programlama demek programlama dili demek ve o dildeki temel şeyleri öğrendiğinde "programlamayı" öğrendim.

Programlamaya başlamak, yazılım yapmak istiyorsanız öncelikle İngilizce öğreneceksiniz. C1 seviye olmadan bırakın birşey yapmayın. Türkçe kaynak yok. Çeviri varsa da iş görmez (Aşağıda belirttiğim başlıklar). Türkçe anlamını kaybediyor. Anlam olarak karşılamaz. Hiçbir anlama gelmeyen kelimeler bütünüdür.

Ben ağır ceza hakimi olmak istiyorum diyelim. Türk ağır ceza kanunu okudum, sonra gittim başka ülkelerinin ağır ceza kanunu okudum. Ne işe yarıyor bu? Önce hukuk eğitimi almam gerekiyor. Hukuk eğitiminde hukuk felsefesinden, hukuk tarihine, sosyolojiden, psikolojiye kadar birçok ders alınıyor. Hukukçu olmak demek anayasayı, kanunu ezberlemek anlamına gelmiyor.
Programlama dili sadece bir araçtır. Tıpkı hukukta kanunların öğrenilmesi gibi sizde programlama dillerini öğreneceksiniz ama bir insanı hukukçu yapan şey o insanın kanunları bilmesi değil; olayları anlayabilmesi, yorumlayabilmesi, argüman üretebilmesi ve benim bilmediğim birçok şey için aldığı derslere bağlı olarak kazanımlarıdır. Sosyoloji ve psikoloji ile ilgili aldığı dersler sayesinde olayları anlar, kavrar, düşünür. Tarihten aldığı kazanımlarla kıyas yapabilir, düşüncesini geliştirebilir. Felsefe düşünce bilimidir, hukuk felsefesi ile düşünce boyutu değişir. Bunlar temel özellikleridir. Türk anayasasını ezberleyip, diğer ülkelerin anayasalarını ezberleyerek hukukçu olunmadığı gibi programlama dili öğrenerek, programcı ya da yazılımcı olmazsınız. Kılıç kullanmayan biri şövalye ilan edilirse iyi kılıç kullanmaz. Değişen bir şey yoktur. Mühendis diploması almanında bir anlamı yoktur eğer işinizi bilmiyorsanız. 1980'lerde şuan ki basit kodları yazıyor olsaydınız yazılımcı olabilirdiniz. O dönem şuan ki standartlar, teknolojiler yoktu. Elle sayı deneyerek telefon şirketlerinin hacklenebildiği bir dönem. Bilgisayar güvenliği kavramı yok, performans yok, kod düzeni yok, var olan şeyler bugünün temel seviyesinde, şuanda must olan şeyler yok. Tek işi framework kullanıp kopyala yapıştır yapanlar benim için kod amelesidir, kalitesiz yazılımcı çoktur maalesef.
Aşağıda ODTÜ cmpe'nin derslerinden kopyalayıp yapıştırdım. Hangi ders ne işe yarıyor anlatılmış bir blog var. buradan incelersiniz dersleri.

azimliyazar -> Bilgisayar Mühendisliği Rehberi
Bu siteden o ders ya da onunla eş olan dersi incelersiniz.

Computer Engineereing orientation
Introduction to computer engineering concepts
Introduction to information tech and applications
Data Structures
Discrete computational Structures
Statistical methods for computer engineering
Logic design
Programming language concepts
Formal language and abstract machines
Algorithms
Computer organization
Data management and file structures
Operating Systems
Embedded system development
Software engineering
Signals and systems for computer engineers
Data communications and networking
Computer Graphics
Computer engineering design

(bunların sonuna books yazıp aratın, örn: best Algorithms books, o kitaplardan okuyun)

Bunlar temel derslerdir. Bunları öğrendiğinizde istediğiniz alanda uzmanlaşabilir ve çalışabilirsiniz. Programlama dilini kullanarak işlemciye istediklerinizi
yaptırmak; bunu yaptırırken güvenlik, performans, düşünülmesi gereken diğer şeyleri kriter olarak almak için yukarıda verilen dersleri bilmeniz gerekiyor. Aksi halde doğru dürüst bir ürün ortaya çıkmaz, para kazanamazsınız. Türkiye, hindistan istisnadır. Ama bu dersleri bilmeden X lisesindeki öğrenciler robot/yazılım projesi yapmış, ödül almışlar diyenler olacaktır. Robotların parçası hazır, robotların yazılımıda hazır, çoğunlukla arduino kullanıyorlar. Birde mentör var, çoğu şeyide bu adam yapıyor. Tıklayarak hazır kod oluşturuyorlar. Bu kötü birşey değildir, teşvik amaçlı organizasyonlardır ama haber yapılan gibi bir geçerliliği yoktur. O yüzden bunlar lise + üniversite okuyup, max 5000 lira maaşla çalışıyorlar. Ürettikleri bir şey olmuyor. Kopyala yapıştır mühendisliği. Türkiye için 900 dolar iyi bir maaş olabilir ancak yazılım uluslarasıdır ve para birimi dolardır. Amerika'daki ücretle zaten kıyaslanmaz, Almanya gibi avrupa ülkeleri ile kıyaslayanlar oluyor hani 2000 3000 az değil mi gibi. Almanya'da 2500 euro'nun 1000 eurosunu ev kirasına (Faturalar kiraya dahil. Münih hariç güzel yerlerde güzel evler, Münih'te 1500 olur ama oradada maaş daha yüksektir, immobilenscout muydu neydi oradan bakarsınız), 400 eurosunu mutfak için (Türkiye'de almayı düşünmeyeceğiniz pahalı şeyleri rahat rahat sığdırırsınız) harcarsanız 1100 euro artar. Maaşınızdan bekarsanız %41 vergi kesiliyor. O vergilerin sizin için harcandığını görüyorsunuz. Sokağa çıktığınızda Parklar, bahçeler, ormanlar, yollar, düzen, okullar, o kültüre özgü yapılar, müzeler, burada para vermeniz gereken şeyler orada ücretsiz. 1100 Euro'nun cebinizden çıkabileceği bir şey yok. 300 euro'ya taksitle mercedes, bmw alınabiliyor. 1100 euro öyle bir paradır yani :D Büyük firmaların Türkiye'ye gelme ve ofis açma sebebi, maaşların düşük olması. İyi bir yerde kira 2500 liradır, elektrik + su + doğalgaz + internet 400 lira. 1000 lira mutfak diyelim. 1100 Lira kalır. 1100 lira ile 1100 euro arasındaki fark çok büyüktür. 300 400 euro'ya lüks araba taksidi ödeyebilirsiniz, 1100 liranın tamamıyla lüks araba taksidi ödeyemezsiniz. Bunun yanında Almanya'da para ödemeyeceğiniz şeyler için para ödemeniz gerekir. Almanya'da kirayı yüksek tuttum, 500 euro'ya da oturabilirsiniz, alman emlak sitesinden bakın, o fiyatlarada güzel evler var. 1500 liraya ben otururum falan derseniz o 500 euro'yla kıyaslamanız gerekir. Aradan 10 yıl geçse evlenip çocuk yapsanız, çocuk okul çağına gelse Almanya'da vergi oranı düşüyor, diğer avrupa ülkelerindede bu veya kendi sistemlerine göre şeyler var. Türkiye'de devlet okuluna vermeniz söz konusu olmaz. İyi bir eğitim almasını istiyorsanız özel okula vermek zorundasınız, oda her özel okul değil, belli okullar. Bunların anaokulundan itibaren lise'ye kadar yıllık fiyatı 70-80 bin Türk lirası ve dolar/euro kurundan direk etkileniyor. 12 Yıl eğitim + 1 yıl anaokulu 80.000 x 12 = 960.000 Türk lirasıdır. 1 çocuk için sadece okul masrafı budur. Aylık 10 bin lira maaş alsanız, parayı kenara koysanız 9 yılın tüm maaşına denk gelir. Almanya'da maaşınızdan alınan %33 vergi ile en iyi mühendislik okulları, liselere gidebilirsiniz, eğer o vergiyi sizden almasalar ve bu hizmetler ücretli olsa, kendi maaşınızla bunu karşılayabilirsiniz. Türkiye'de yaşam çok pahalıdır. O yüzden orta gelir grubu çöktü ve orta üst gelir grubu kaçmaya çabalıyor. O Yüzden "Yetenekli Türkler göçüyor" diye yabancı gazetelerde manşet oluyor. İş yapan insan için burada yaşamak olanaksızlaştı. Bu arada ülke asla batmaz, Türkiye ekonomisi savaş ekonomisine dönebilecek şekilde tasarlanmıştır ve ülke her an savaşa hazır konumdadır. Ancak iş yapamayacak seviyelerede gelip piyasa ve üretim sistemi çökebilir, bunun için imf falan gelir, maaşları kırpar, ithal ürünler bizim için hayal olur ama şuankinden farklı birşey olmaz. Kimse aç kalmaz ya da ülke batmaz. Vergilerin gerekli hizmetlere aktarılmaması ve yanlış işlere aktarılması, suriyeliler, gereksiz yapılan projeler, normalin 10 katı fiyata dostuna yaptırılan projeler bunun sebebidir. Milyarlarca dolar :) İyi adamları yıllardır yurtdışına getiriyorlar zaten buda aklınızda bulunsun, kendisinin gitmesine bile gerek yok. Yani mühendis diye gördükleriniz çoğu mühendis değil, teknikerdir.

Üniversite destekli öğrenci projelerinin belli bir kısmı yazılım şirketlerine yaptırılıyor. Vakıf okulları kendi öğrencilerine sponsor oluyor. Projeyi öğrenciler kendileri yapsalarda, profosyonel bir işe dönüşürse özellikle parayı verip yaptırıyorlar. Birçok insan "ben şimdi ne yapacağım" diyerek yüksek lisansa başlıyor. Hiç kod yazma tecrübesi yok. Böyle şeyler yaygındı, şuanda nasıl bilmiyorum.

Eğer yazılımcı olacağım diyorsanız o dersleri öğrenmeniz şart. Herhangi bir dille yazdığınız o şeyler ki genelde örnekler ya da örnek projedir bunlar, dili öğrenmek için oluşturulmuştur. Bunun bir anlamı yoktur.

Benim amacım bu programlama dili bilmek - yazılımcı olmak - nereden nasıl başlanır - ne öğrenmem gerekir gibi soruları olan arkadaşların ne yapması gerektiğini anlayabilecek bir bakış açısı vermekti. Bu kısıma kadar olan yazıda bunu başardığımı düşünüyorum. Şimdi doğru şeylere çalışabilir, doğru bir yol belirleyebilirsiniz.
Kafanızda bazı soru işaretleri kalkmıştır. Aşağıya biraz link bırakacağım, onlar bundan sonraki aşamalarda yardımcı olacaktır.



Kişisel tavsiyelerim


Microsoft teknolojilerinden uzak durun:
Microsoft müşteri odaklı politikaya bağlıdır. Belli bir standartı, diğer firmalara göre uygun bir ücreti vardır ticari firmalar için. Kendi politikaları yazılımcıları düşünmez ve yazılımcı ücretleri düşüktür. Teknolojileri sorunsuz, kolay düzeltilebilir, herkese hitap eden, yazılımcı bulması kolay ve maaşları düşük olması firmalar için onu bazı ülkelerde 1 numara yapar. Yazılımcı için bunlar iyi bir şey değildir. Teknolojinin geleceği açık kaynağı zorunlu kılıyor. Kendileri o yüzden bu yönde adımlar atıyorlar. Yurt dışında banka sektörü hariç tercih edilmez. İş diğerlerine göre azdır. Türkler ve Hintliler arasında popülerdir. Ha dersiniz ki ben küçük ya da orta ölçekli bir iş yapıyorum hangi teknolojiyi tercih edeyim, o zaman kesinlikle Microsoft teknolojilerini tercih edin derim. Hem en ucuz seçenek, hem en sorunsuz seçenek, hem de en konforlu seçenektir müşteri için. Yurt dışında .net developerlara diğer yazılımcılar iyi gözle bakmazlar İzmir'de yaşayan siyasal islamcı muamelesi görürsünüz :D Asıl işi teknoloji olmayan interneti araç olarak kullanan firmalar için microsoft daha iyidir.


Hangi dil olursa olsun, console app üzerinden öğrenmeye başlayın. Grafikli şeyleri kullanmayın. Ona daha sonra geçeceksiniz. C ile başlayın, çizgi-tagem c derslerini izleyin.


Java:
Java her ortamda çalışır. mikroişlemciden, telefona, araba yazılımından, yapay zekaya, masaüstünden, web'e ve diğer tüm alanlarda hakkıyla çalışır.
Her alana özel kütüphaneleri vardır. En geniş kütüphanelere sahiptir.
En çok iş java teknolojilerindedir. İşsiz kalmazsınız.
En yüksek maaş java teknolojilerindedir.
Bir dil için gerekli tüm avantajlara sahiptir. Şuanda ve önümüzdeki 5 yılda javadan daha avantajlı bir dil yok. Kaynaklar, eğitimler, Yetişmiş insan kaynağı, daha önce yapılmış projeler ve daha sonra yapılacak projeler javayı önemli bir tercih haline getiriyor. Özel bir alanda çalışan javacıyı bulmak kolaydır bu proje için önemlidir. Uzmanı az olan dillerde hem o uzmanı bulmak zordur hemde bu bilindiğinden o alanda projeler o dil için yaygın değildir. Buda böyle bir döngüdür :D
Gelecek java teknolojilerindedir.
Kotlin mobilde javayı üzüyor :(

Python:
Diğer bir yıldız python'dır. Yapay zeka, web, bilimsel konular, hack işleri, linux, normal uygulamalar için popüler bir dildir. Java'nın yanında genelde "javayı ve şu dili" bilen iş ilanlarındaki şu dil python'dır. Yurtdışında Startup'ların çoğunluğu Python kullanır. Sahibini zengin yapan startuplarda da python kullanılır.

C++:
C ile birşeyler yaptıktan sonra bu dile geçin derim. Yukarıda belirttiğim dersleri bu dille işlemeniz yararınıza olur. Eğitiminizde bu dili kullanın. Performansı Hepsinden yüksektir. Yazılım geliştirmek daha zordur diğerlerine göre. Diğer dillerde olan bazı özellikler programı yavaşlatır. C++'da o özellikler olmadığı için Kodunuzu ona göre yazarsınız. Java veya Python'a geçtiğinizde kodunuzu ona göre yazarsınız ve daha hızlı, daha temiz, daha düzenli kod yazmış olursunuz, kod yazmak Kolay gelir. Gerektiği zamanda C++ kullanırsınız. IOT alanında, donanıma yakın alanlarda yükselişe geçti. Uzun zamandır sınırlı bir alan içindeydi. Şuanda akıllı Sistemler, akıllı araba, iot gibi alanlar olduğu için, büyük firmaların ilgili departmanları deli gibi C++ ile çalışmış, iyi matematik bilen adam arıyor. (azimliyazar bunu anlatıyordu bir yazısında detayını okursunuz) Maaşları duruma göre değişir. Çalıştığınız firmanın işine göre uçuk ücretler alabilirsiniz.
C++ ile öğrendiniz diyelim, javaya geçmeniz 1 aydan uzun sürmez. çünkü dil basittir. üstte anlattığım şeyi unutmayın. Kotlin çıktığı gibi mobil geliştiriciler Kotlinle uygulama geliştirdiler. Bunu nasıl yaptılar? Çünkü dil neredeyse aynıdır, yaptığın iş aynıdır, sadece syntax ve bazı kuralları öğrenirsin. Herşey dil gibi
Geliyor bu işe başlanıldığında ama aslında dil hiçbirşeydir. Dilin olduğu ekosistem önemlidir, dilin bulunduğu seviye önemlidir.

PHP:
Öğrenmeyin, aç kalırsınız :D hiç hoşlanmam, düzensiz saçma sapan birşeydir. Eskiden durumu başkaydı.

HTML - CSS:
HTML programlama dili değildir. Kendi adındaki gibi "markup language" işaretleme dilidir. Gerçekten "tasarım" gerektiren işlerde bu front-end kısmını mimar, designer Falan yapar. Yurtdışında ya da bu alanda ünlü insanlar yazılımcı değildir. MATLAB'ı genelde bilimadamları matematik ve fiziksel işlemler için kullanır. Buda onun gibi Birşeydir. Yazılımcılar için değil tasarımcılar içindir. Web tasarımcıları içindir. Ancak özel tasarımlar yapmıyorsanız, şuanki kütüphanelerle çok güzel, profesyonel Siteler yapabilirsiniz. Ben web alanında çalışmama rağmen (lisedeyken çalıştım) front-end teknolojilerine hakimim lise zamanından, şuan sadece yeni ne var ona Bakıyorum, js frameworkleri değişiyor her sene o kadar. Front-end'i öğrenin ama bunun programlama olmadığınıda bilin. Programlamaya nasıl başlamalıyım sorusuna önce HTML yap demek mantıklı değildir. Ancak web tasarımla başlayıp, Back-end kodlarına geçmek, hiç bilmeyen insan için onu motive eden bir etken olabilir. 2 hafta gibi Kısa bir sürede görsel olarak sizi tatmin eden şeyler yapar seviyeye gelebilirsiniz. Bu motivasyonla programlama alanında ilerleyebilirsiniz. Kendim front-end Alanında profesyonel tasarımlar yapabildiğim için mutluyum.
CSS'de tasarım için kullandığımız dildir. Buda programlama dili değildir, stillendirme dili falan gibi birşey.

Yazılım şöyle zevkli, böyle zevkli falan:
Yazılım çoğu kişi için zevkli falan değildir. Robot yapmak zevkli bir şey değildir. Mühendis bunların fiziğiyle, matematiğiyle, gayet zor olan "yazılımıyla" ilgilenir.
Bu insana zevk veren birşey değildir. İnsan karakterine göre bundan zevk alabilir. Ben sanal dünyanın sınırları olmamasından, yaratma zevkinden dolayı büyük haz duyuyorum. Bu işin zorlukları benim çok hoşuma gidiyor. Başka insanların onunla uğraşılmaz dediği şeyler benim için zevktir. Bu bölümü okuyan ve çalışıp pişman sayısı yüksektir. Elektronik mühendisliği içinde aynısı geçerlidir. Bu alanda lisans yapıp başka alanda yüksek lisans yapanlar, bu alanda çalışmayan çok insan vardır. Ekonomist Prof dr. Özgür Demirtaş Boğaziçi EE mühendisliği mezunu, bu adam gayet zeki ve başarılı ama kendisi çok söylediği robotları, yüksek teknolojiyi yapmak yerine ekonomist olmuş. Çünkü adam ondan zevk alıyor. Robotun, teknolojinin kendisi, oyunu oynamanın zevkli olması onu yapmanın zevkli olduğu anlamına gelmez. Fizikçilerin, matematikçileri hesaplamalar yaptığı oyun fizik motorlarından bir insan nasıl zevk alabilir :D Bunun neresi zevklidir. Popüler kültür ve sektör ihtiyacı dolayısıyla sürekli bu kavramlar ve meslekler pompalanıyor, yabancı teşvik yarışmaları sadece kendi ülkelerinde değil, diğer ülkelerde de yarışma düzenliyor. Bunun sebebi mühendis ihtiyacı. Yeteri kadar mühendisten belli bir yüzde fazlası olması lazım ki maaşları ve ekonomiyi istedikleri seviyede tutabilsinler. Bu gibi şeyler G20, CFR gibi şeylerde tartışılıyor. Milyarlarca lira bu alana kaynak aktarılıyor. Eğer programlama dili öğrenip, örnekleri falan yapıyorsanız, yazılımın zevkli olup olmadığını bilemezsiniz. Bu alanda çalışmış adamlar işini bırakıp köye yerleşiyor. Doğa ile yaşamak istiyorlar. Büyük şirketler ofislerini özel dizayn ediyor. Bu alanda çalışanların çoğunluğu Hintli ve Çinli. Bu kadar zevkli bir alan olsa bu durum böyle olmazdı.

Üniversitede Almanca öğrenin (İngilizceyi akademik olarak öğrendikten sonra tabiki)
Almanya'da üniversiteler bir eyalet haricinde ücretsiz, o eyalettede düşük fiyatlı ki bunun bir önemi yok, ücretsiz olarak varsayabilirsiniz. Ciddi yazılımcı açığı var ve önümüzdeki dönemde katlanarak artacak. İngilizce anadil olan ülkelerin okulları ücretli ve bu ücretler çok yüksek, üstüne başka masraflar var. İngilizce anadil olan okullar Türklere burs vermiyor. Türk üniversitelerini adam yerine koymuyorlar, en iyi okulların en iyi (ortalaması yüksek, kağıt üstünde birşeyler yapmış) öğrencilerine burs veriyor. Talepte çok olduğu için, çinliler ve hintliler hücum ediyor, üstüne Avrupa'dan gelenler var, bize sıra gelmiyor. Ama Alman eğitim sistemi
farklı çalışıyor; Talep daha az ingiliz anadil okullara göre, alabileceği en iyi öğrencileri alıp eleme yöntemine gidiyor. Bu bizim için iyi bir şey. Türkiye'deki üniversiteler düşük not verir, dersleri zordur. İngilizce anadilli okullar size burs vermezken, Almanca anadilli okullara girip mezun olabilirsiniz, okuldan devam edebilirsiniz. Mezun olduktan sonra rahatça iş bulup çalışırsınız ve bence diğer tüm ülkelerden daha iyi hayat standartları vardır. Amerika'da yüksek maaş alırsınız ama o maaş üzerinden çok kalem vardır, sözde yüksektir. Irkçılık falan nasıldır onu bilemiyorum ama siz master veya doktora düşünüyorsanız Almanca öğrenin alternatifiniz olsun. Mezun olduktan sonra Amerika, Kanada gibi göçmenlerden oluşan yerlere gidersiniz. Çoğu okulda ingilizce seçeneği vardır, burada kontenjanlar dolabilir, öncelikli olarak ingilizceyi seçersiniz, ikincil olarak almancayı seçersiniz kabul alma olasılığınız yükselir. DAAD bursu ile belki yaşam masraflarınızda karşılanır, eğer DAAD bursu almazsanız aylık 1000 euro x 12 x 2'den master için 24 bin euro gerekir. Yazın çalışarak belli bir kısmını indirebilirsiniz bu 24 bin euro'nun ancak okurken çalışırım gibi şeyler düşünmeyin, ikisini aynı anda yürütemezseniz ki okul zordur, atılabilirsiniz. Galiba 2 yıl masterı 3 yılda bitirme zorunluluğu var. 2.5 yıla çıkması normal olarak kabul ediliyor. Risk almayın :) Masterı yurtdışına çıkıp, yerleşmek için basamak olarak kullanabilirsiniz. Yurtdışındaki işler için master gerekli denilebilir. Lisansı bitirip bırakmayın.


Tavsiye kitaplar

Usability engineering
How Computers Work
java coding interview by mr kotiyana
Computer Science Principles kevin hare
Algorithms Kevin wayne
Computer: A History of the Information Machine
Donald knuth - The art of computer programming
Computer Algorithms/C++ freeman
Code complete
Clean code

Ben anlatmak istediğimi anlattığımı düşünüyorum. Aşağıda birkaç link var bunları inceleyin, bu üsteki bilgiler ile sizin için anlaşılır olacaktır.

Bilgisayar Mühendisliği Rehberi -> Beton yetmez.
BilgisayarKavramlari -> Kendi siteside vardır.
Yalin Kod -> Süper biridir, bu konu ile ilgili videosuda var.

Bunlar Türkçe olarak şuanda yeterli, zamanla ingilizce kaynaklardan ihtiyaçlarınızı karşılayacaksınız.

Yazım yanlışlarını kontrol edemiyorum, gözüm ağrıdı yazmaktan kusura bakmasın admin. (Burada bir admin vardı, virgül eksikliğinden adam banlıyordu yıl 2012-2013'tü galiba :D )

@Recep Baltaş @Ali Güngör Her yıl onbinlerce kişi bilgisayar mühendisliğine yerleşiyor, dolaylı olarak elektronik mühendisliği gibi yazılıma kayabilen bölümlerde var. Onlar için video serisi yaparsanız izlenme sayısı milyonları geçer, Technopat'ın bilinirliği artar ve her yıl artmaya devam eder. Ada lovelace'dan başlayıp, ilk bilgisayar bilimcilerine, programlama dilinin ne olup ne olmadığına falan ciddi bir bilgi açığı var Türkçe olarak. İnsanlar yanlış şeylerle vakit kaybediyor.

How Computers Work: Processor and Main Memory
Computer: A History of the Information Machine
A History of Modern Computing, 2nd Edition
The Computer Book: From the Abacus to Artificial Intelligence
Hayatımızdaki Algoritmalar
Structure and Interpretation of Computer Programs
History of Programming Languages II
Hello world a history of programming
Concepts of programming languages sebasta

Bu kitapların PDF'i internette bulunabilir, bir bakarsanız iyi olur.
Introductory Programming Courses | MIT OpenCourseWare | Free Online Course Materials

 
Bilgisayar mühendisliği ya da bilgisayar biliminin ilgilendiği konular:

Matematiksel mantık · Kümeler kuramı · Sayı teorisi · Çizge teorisi · Tip teorisi ·Kategori teorisi · Sayısal çözümleme · Bilgi teorisi · Kombinatorik · Boole cebiriInternet map 1024.jpg
Hesaplama teorisiOtomat teorisi · Hesaplanabilirlik teorisi · Hesaplamalı karmaşıklık teorisi ·Kuantum hesaplama teorisi
Algoritmalar ve veri yapılarıAlgoritma çözümlemesi · Algoritma tasarımı · Hesaplamalı geometri
Programlama dilleri ve derleyicilerAyrıştırıcılar · Yorumlayıcılar · Yordamsal programlama · Nesne yönelimli programlama · Fonksiyonel programlama · Mantık programlama · Programlama paradigmaları
Eşzamanlı, paralel ve dağıtık sistemlerÇoklu işleme · Dağıtımlı hesaplama · Eşzamanlılık denetimi
Yazılım mühendisliğiGereksinim çözümleme · Yazılım tasarımı · Bilgisayar programlama · Biçimsel yöntemler · Yazılım testi · Yazılım geliştirme süreci
Sistem mimarisiBilgisayar mimarisi · Bilgisayar organizasyonu · İşletim sistemi
Telekomünikasyon ve ağ oluşturmaBilgisayar müziği · Yönlendirme · Örgü topolojisi · Kriptografi
VeritabanlarıVeritabanı yönetim sistemleri · İlişkisel veritabanı · SQL · İşlem yürütme ·Veritabanı indeksleme · Veri madenciliği · Metadata (Üst veri) · Master Data (Baş veri)
Yapay zekâOtomatikleştirilmiş muhakeme · Hesaplamalı dilbilim · Bilgisayar vizyonu ·Evrimsel hesaplama · Uzman sistemler · Makine öğrenimi · Doğal dil işleme ·Robotik
Bilgisayar grafikleriGörselleştirme · Bilgisayar animasyonu · Görüntü işleme
İnsan-bilgisayar etkileşimiBilgisayar erişilebilirliği · Kullanıcı arayüzleri · Giyilebilir hesaplama · Yaygın bilişim ·Sanal gerçeklik
Bilimsel hesaplamaYapay yaşam · Biyoenformatik · Bilişsel bilim · Hesaplamalı kimya · Hesaplamalı nörobilim · Hesaplamalı fizik · Sayısal algoritmalar · Sembolik matematik


Türkçeye bilgisayar mühendisliği olarak geçen asıl uluslararası adı bilgisayar bilimi olan disiplin'in ilgilendiği konular bu tablodadır. Bu konularla ilgili araştırma ve geliştirme yapmak için yüksek düzeyde matematik gerekir. Ek olarak bu alanlardan biyoloji ile ilgili olan biriyle ilgileniyorsanız biyoloji bilimi ile ilgili ciddi seviyede bilgi sahibi olmalısınız ya da gömülü sistemler ile ilgileniyorsanız elektronik ile ilgili bilmeniz gereken şeyler vardır.


Programcılık bilgisayar bilimcilerinin geliştirdiği şeyleri kullanarak kod yazmak olarak nitelendirilebilir. Türkiye'deki işlerin tamamına yakını için programcı olmak yeterlidir ve TSKGV haricinde bu işi yapan yerlerde matematik bilmeyen, diplomasız programcılar yönetici pozisyonuna hakkıyla gelebiliyorlar. Aynı şey Silikon vadisi şirketleri içinde geçerli. Programcı olmak kötü bir şey değildir. Türkiye'de mühendis 3000-4000 lira alırken sanayide kaynak ustaları 10.000 lira alır.
Piyasada çalışan mühendis yada bilgisayar bilimcileri için sınırlı matematik bilgisi gayet yeterlidir ve çoğunlukla bilgisayar bilimcilerinin oluşturdukları şeyler üzerine çalışırlar. Matematik sadece anlaması için gereklidir.
Yani bilgisayar güvenliği alanında çalışıyorsanız kriptoloji ile ilgili matematik öğrenirseniz o size yeter. Ayrıca bu matematik dediğimiz lise sınavında sorulan garip şey değildir. Lise matematik soruları eleme amaçlıdır, ezberdir. Matematik bölümü mezunu bazı konularda bazı soruları 10 dakikadan az sürede çözemez. Sınav birincileri yada yüksek puan alanlar, çok sevdikleri ya da çok zeki oldukları için değil, çok soru çözüp, soru kalıplarını ezberlediği için o notları alırlar. 1 dakikadan kısa sürede çözmenin imkansız olduğu sorular var. Amaç zaten elemek ve bu matematik değil.
Gerçek matematik için "pisagor matematik evi"ni izlemeniz, Ali Nesin'i izlemeniz gerekir.
Türkiye'deki matematik zannettiğiniz şey matematik değildir.
Üslü sayılarda soruları çözmeniz gerekmez, sadece üslü sayılarda gösterimi ve hesaplamayı bilmelisiniz. Hesaplamayı da hesap makinesine yaptırmak için. Matematik zorlaştırıcı değil kolaylaştırıcıdır. Öyle bir matematik yok dünyada.
Bilimsel alanda çalışan orta düzey biri olursanız sıkıntı yaşarsınız ama orta düzey sektörde çalışan programcı olursanız çok iyi paralar kazanabilirsiniz.
Programcı olmak amele olmak değildir ve esas zevkli olan budur bence.
Programcılık bölümünü okuyarak programcı olmanız Türkiye'de imkansıza yakındır ancak kendisi çalışan azimli kişiler bunu başarır ki bunu başarmak için okula gitmesine gerek yoktur.
Türkiye'de programcılık eğitimi veren yer olmadığını söyleyebilirim. İlla iyisi vardır ama gayet iyi üniversitelerin programcılık bölümlerinden tanıdığım iyi programcı arkadaşlarım okullarının ne kadar kötü, hocalarının ne kadar kötü olduğunu öyle anlattılar ki bunu söylüyorum. Genelde meslek liselerinden gelen ve mühendisliği kazanamayan kişiler iyi oluyor :D Sonra DGS falan yapabiliyorlar.
Yönetici pozisyonuna gelirlerse MBA yapıyorlar hatta eğer sektöre girerseniz
Teknik Lise+2 yıllık+ MBA şeklinde eğitim geçmişi olan iyi yöneticiler görebilirsiniz.
Programcı olarak çalışmak istiyorsanız ve bu alanla ilgili bilginiz yoksa programcılık bölümü okuyarak programcı olamazsınız (bütün genellemeler yanlıştır). Bilgisayar mühendisliği okuyup, kendinize bir alan seçip, o alanda ilgilenmeniz gereken matematiği iyi şekilde öğrenip, kurslar alıp, o alanda kod yazarsanız programcı olursunuz. Yurtdışında title'lar üniversiteye göre değildir.
Google'ın ünvanlarına bakarsanız görebilirsiniz. Mühendis diploması alınca kimse mühendis olmuyor. Mühendis olursa mühendis oluyor.
Şuanda açık bilgisayar biliminde değil, programcılıkta. Üniversitelerde ya da araştırma lablarında
ciddi rekabet ve talep var. Gelişmiş ülkeler elbette para çok olduğundan herkesi topluyor ve açık var ama 1000 kişilik bilgisayar bilimcisi alıyorsa, sektörde 10.000 kişilik programcı açığı oluyor.
O yüzden rahat, zevkli, paralı bir şekilde olmak için programlama alanında çalışabilirsiniz. Programcı olmak için diploma almanız gibi bir şey söz konusu değildir. Türkiye'de gerçekten bazı şeyler çok garip isimlendirilmiş ve çok yanlış şeylere sebep oluyor.



Google Salaries



Kaynaklar: WikiZero - Şablon:Bilgisayar bilimi
 
Anlaşılan benim gibi matematiği olmayan birisine bilgisayar ve yazılım mühendisliği yok. :( :(
Onunu detaylı bir şekilde açıklamayı düşünüyorum. Matematik senin lisede veya okulda gördüğün sorular değildir. Matematik basitliktir ve çok zevklidir. O konuyu açtığımda seni etiketleyeceğim.
 

Yeni konular

Geri
Yukarı