Sadece Projelerimi Değil, Yazılım Yolculuğumu Paylaşıyorum

Bu blog; projelerimin arkasındaki hikayeleri, yazılım yolculuğumda karşılaştığım hataları ve kendi gelişimim için tasarladığım öğrenme yol haritalarını içerir.

Hakkımda

Kısa hikayem ve odaklandığım alanlar.

Merhaba! Ben Sümeyye. Yazılım mühendisliği 1. sınıf öğrencisiyim. Kariyerimin başındayım ve kendimi tek bir alana hapsetmek yerine yazılımın her yönünü keşfetmeye çalışıyorum. Bu blog; öğrendiğim teknolojileri, denediğim projeleri ve gelişim sürecimi şeffaf bir şekilde paylaştığım kişisel alanım.

Projelerim

Neyi, neden ve nasıl geliştirdim? Arka planda yaşananlar.

Konsol Tabanlı Hesap Makinesi

Java

Kullanıcıdan dinamik girdi alarak temel aritmetik işlemleri gerçekleştiren ve terminal üzerinden çalışan interaktif bir hesaplama uygulaması.

Detayları Gör

Nasıl Yaptım?

Uygulamayı geliştirirken Scanner sınıfını kullanarak kullanıcıdan terminal üzerinden dinamik girdi almayı sağladım. İşlem mantığını kurarken switch-case yapısından faydalanarak matematiksel operatörleri birbirinden ayırdım. Uygulamanın tek bir işlemden sonra kapanmaması ve kullanıcı çıkış yapana kadar çalışmaya devam etmesi için while döngüsü yapısını kurguladım.

Nerelerde Zorlandım?

Uygulamayı geliştirirken en büyük zorluğum, C dilindeki düşük seviyeli ve prosedürel mantıkla düşünme alışkanlığımın Java'ya yansımasıydı. Özellikle hesaplama sonucunu tek bir noktada yazdırma ve tanımsız işlemleri yönetme konusunda, C'deki alışkanlıklarımın ötesine geçip Java'nın sunduğu Double.NaN gibi standart yapıları keşfetmem gerekti.Bu süreç, sadece yeni bir dil öğrenmenin ötesine geçerek, Java'nın sunduğu modern araçlara ve çözüm yöntemlerine uyum sağlama konusunda kendimi geliştirmemi sağladı.

Öğrenme Yol Haritaları

Yeni bir teknoloji öğrenirken izlediğim adımlar ve tavsiyelerim.

C Öğrenme Sürecim
1. Nereden Başlamalı?

Programlamanın temel yapı taşlarını anlamak için en iyi başlangıç noktasıdır. Algoritma mantığını, veri tiplerini ve bellek adresleme (pointer) konularını öğrenerek güçlü bir temel atılmalı.

2. Hangi Sırayla İlerlenmeli?
  1. Temeller (Değişkenler, Operatörler, Girdi/Çıktı)
  2. Akış Kontrolü (Karar Yapıları, Döngüler)
  3. Bellek ve İşaretçiler (Pointers, Dinamik Bellek Yönetimi)
  4. Yapılar & Fonksiyonlar (Struct, Enum, Header Dosyaları)
  5. İleri Konular (Dosya İşlemleri, Hata Ayıklama)
Ben Nerede Zorlandım?

Diziler ve pointer'lar konusunda mantığı kavrasam da, bunları koda dökerken sözdizimi (syntax) aşamasında başlangıçta çok zorlandım. Bu süreç bana teorik bilginin, pratik kod yazma tecrübesiyle birleştiğinde anlam kazandığını ve bol pratik yapmanın, teoriyi pratiğe dökmek için en iyi yol olduğunu öğretti.

C++ Öğrenme Sürecim
1. Nereden Başlamalı?

C++'ı sadece bir programlama dili olarak değil, bilgisayarın kalbine giden bir yol olarak görüyorum. Başlangıçta bellek yönetimi gibi konular karmaşık gelse de, aslında bu bize kodumuz üzerinde tam bir hakimiyet kurma şansı veriyor. C'den gelen temelimi, C++'ın nesne yönelimli gücüyle birleştirerek daha esnek ve büyük projeler geliştirmeyi hedefliyorum. Karmaşıklığın içinde kaybolmak yerine, her satırda mantığı kavrayarak ilerlemek en sağlam temel.

2. Hangi Sırayla İlerlenmeli?
  1. Temeller (İsim Alanları, Girdi/Çıktı)
  2. Bellek Yönetimi (Referanslar, Dinamik Bellek)
  3. Nesne Yönelimli Programlama (Sınıflar, Kalıtım, Çok Biçimlilik)
  4. STL ve Modern C++ (Vektörler, Akıllı İşaretçiler)
Ben Nerede Zorlandım?

C++ öğrenme sürecimde diziler ve işaretçiler (pointers) ile çalışmak, belleği manuel yönetmenin getirdiği karmaşıklık nedeniyle en çok zorlandığım konu oldu. Bu düşük seviyeli yapıların, güvenlik açıklarına ve hatalara en çok açık alanlar olduğunu fark etmem, modern standartların değerini anlamamı sağladı. Bu süreç, vector, span veya unique_ptr gibi modern ve güvenli kapsayıcıların, sadece kod yazmayı kolaylaştırmadığını, aynı zamanda bellek yönetimi hatalarını sistemli bir şekilde önlediğini kavramamı sağladı.

Java Öğrenme Sürecim
1. Nereden Başlamalı?

Şu an Java’nın temellerine ve dile özgü sözdizimi (syntax) yapısına odaklanıyorum. C/C++ geçmişimden gelen alışkanlıklarla, Java'nın daha korumalı ve katı kurallı yapısını anlamaya çalışıyorum.

2. Hangi Sırayla İlerlenmeli?
  1. Temeller (JVM Mantığı, Veri Tipleri)
  2. Nesne Yönelimli Programlama (Kapsülleme, Arayüzler)
  3. Veri Yapıları (Collections - Listeler, Haritalar)
  4. İleri Konular (Hata Yönetimi, Çoklu İş Parçacığı)

İnteraktif Yol Haritaları

Adım adım işaretleyerek ilerlediğim detaylı öğrenme rotaları.

C İnteraktif Rota
Tamamlanma Oranı 0%

C Programlama

Sıfırdan ileri seviyeye öğrenme yolu

1. Temeller
Değişkenler & Veri Tipleri
Girdi/Çıktı (printf/scanf)
Operatörler (Aritmetik/Mantıksal)
2. Akış Kontrolü
Karar Yapıları (if, else if, switch-case)
Döngüler (for, while, do-while)
Döngü Kontrolü (break, continue)
3. Bellek ve İşaretçiler
İşaretçiler (Pointers)
Bellek Adresleri (& ve *)
Diziler & İşaretçi Aritmetiği
Dinamik Bellek Yönetimi (malloc, calloc, realloc, free)
4. Yapılar & Fonksiyonlar
Fonksiyonlar & Kapsam
Struct (Yapılar) & Union
Enum
Header Dosyaları (.h/.c)
5. İleri Konular
Dosya İşlemleri
Önişlemci Direktifleri (#define, #include, #ifdef)
Hata Ayıklama (GDB)
C++ İnteraktif Rota
Tamamlanma Oranı 0%

C++ Programlama

Sıfırdan ileri seviyeye öğrenme yolu

1. Temeller
Girdi/Çıktı (cin/cout)
Namespaces (İsim Alanları)
2. Bellek Yönetimi
Referanslar (&)
Dinamik Bellek (new/delete)
3. Nesne Yönelimli Programlama (OOP)
Sınıflar ve Nesneler
Kalıtım (Inheritance)
Çok Biçimlilik (Polymorphism)
4. STL ve Modern C++
Vektörler (std::vector)
Akıllı İşaretçiler (Smart Pointers)
Java İnteraktif Rota
Tamamlanma Oranı 0%

Java Programlama

Sıfırdan ileri seviyeye öğrenme yolu

1. Temeller
JVM, JRE ve JDK Mantığı
Veri Tipleri ve Değişkenler
2. Nesne Yönelimli Programlama
Kapsülleme (Encapsulation)
Arayüzler (Interfaces)
3. Veri Yapıları (Collections)
Listeler (ArrayList, LinkedList)
Haritalar (HashMap, TreeMap)
4. İleri Konular
Hata Yönetimi (Exceptions)
Çoklu İş Parçacığı (Multithreading)

İletişim

Benimle iletişime geçmek veya projelerimi incelemek isterseniz aşağıdaki bağlantıları kullanabilirsiniz.