Skip to content

Latest commit

 

History

History
216 lines (141 loc) · 17.6 KB

modern-web-gelistirme-1.md

File metadata and controls

216 lines (141 loc) · 17.6 KB

Modern Web Geliştirme 1

Yazılımın Tanımı

Yazılım, bilgisayarlar ve diğer dijital cihazlar için özel olarak tasarlanmış programlar veya uygulamaların toplamını ifade eder. Bu programlar, işlevselliği, kullanıcı deneyimini ve veri işleme yeteneklerini geliştirmek, sorunları çözmek veya belirli görevleri gerçekleştirmek için kullanılır. Modern web geliştirmeleri, özellikle internet üzerinde çalışan yazılımların tasarımı, geliştirilmesi ve bakımıyla ilgilenir. Bu ders, öğrencilere bu alandaki en son teknolojileri ve yaklaşımları öğretmeyi amaçlar.

Bonus: Kitap Önerisi: Hannah Fry Merhaba Dünya

Tarihte ilk bilgisayar programcısı: Ada Lovelace!

Ada Lovelace, 19. yüzyılın başlarında yaşamış olan İngiliz bir matematikçi ve yazılım geliştiricisidir. Ada Lovelace, Charles Babbage'in tasarladığı "fark motoru" adlı mekanik bilgisayarın programlamasını yapmış ve bu nedenle tarihteki ilk bilgisayar programcısı olarak kabul edilir. Onun çalışmaları, bilgisayar programlamasının temellerini atmış ve bilgisayarların sadece sayıları işlemekle kalmayıp genel amaçlı işlemler yapabileceğini öngörmüştür. Ada Lovelace'in yazdığı notlar, modern programlama dillerinin ve bilgisayarlarının gelişiminde önemli bir kilometre taşıdır.

Bonus: Kitap Önerisi : Julia Gray Ben Ada Lovelace

Programlama Mantığı

Programlama mantığı, bir programı veya yazılımı tasarlama ve geliştirme sürecinde kullanılan temel düşünme ve problem çözme yaklaşımını ifade eder. Bu yaklaşım, bilgisayar programlarının oluşturulması için izlenen akıl yürütme ve lojik düşünme sürecini içerir. Programlama mantığı, aşağıdaki temel bileşenleri içerir:

Algoritma Oluşturma

İlk adım, bir görevi veya sorunu çözmek için bir algoritma oluşturmaktır. Algoritma, görevin adım adım nasıl yerine getirileceğini belirleyen bir mantık sıralamasıdır.

Mantıksal Düşünme

Programlama mantığı, mantıksal düşünmeyi gerektirir. Bu, bir problemi analiz etme, belirli koşullara ve durumlara mantıklı çözümler üretme yeteneği anlamına gelir.

Değişkenler ve Veri Türleri

Programlama mantığı, değişkenlerin ve veri türlerinin nasıl kullanılacağını içerir. Değişkenler, verileri saklamak ve işlemek için kullanılırken, veri türleri, bu verilerin hangi biçimde depolanacağını tanımlar.

Koşullu İfadeler

Programlarda belirli koşullara bağlı olarak farklı işlemlerin yapılması gerekebilir. Bu nedenle, koşullu ifadeler programlama mantığının önemli bir parçasıdır. Örneğin, "eğer-ise" koşullu ifadesi sıkça kullanılır.

Döngüler

Döngüler, belirli bir işlemi tekrarlayarak programın daha verimli ve etkili çalışmasını sağlar. Programlama mantığı içinde "for" ve "while" gibi döngü yapıları vardır.

Fonksiyonlar

Fonksiyonlar, belirli bir işlemi gerçekleştiren ve daha sonra tekrar kullanılabilen kod parçacıklarını temsil eder. Fonksiyonlar, kodun yeniden kullanılabilirliğini artırır ve karmaşıklığı azaltır.

Hata Ayıklama ve Sorun Giderme

Programlama mantığı, hata ayıklama ve sorun giderme yeteneklerini içerir. Kodun hatalarını tanımlamak ve düzeltmek, programlama sürecinin önemli bir parçasıdır.

Veri Yapıları

Programlama mantığı, veri yapılarını kullanmayı içerir. Veri yapıları, verileri düzenlemek ve işlemek için kullanılır. Örnek veri yapıları arasında diziler, listeler, sıralı listeler, ağaçlar ve grafikler bulunur.

Programlama mantığı, bir programın doğru çalışmasını sağlamak için bu temel kavramları ve lojik düşünmeyi içerir. İyi bir programlama mantığına sahip olmak, karmaşık problemleri çözmek ve verimli yazılım geliştirmek için önemlidir.

İnternetin Kısa Tarihi

Günümüzün vazgeçilmez bir parçası olan internet, bilgisayarlar arası iletişimin devrimini başlattı ve dünyayı baştan sona değiştirdi.

1960'lar: İnternetin Doğuşu

İnternetin temelleri, 1960'lı yıllarda Soğuk Savaş döneminde atıldı. Amerika Birleşik Devletleri Savunma Bakanlığı'nın ARPA (Advanced Research Projects Agency) tarafından başlatılan ARPANET projesi, bilgisayarlar arasında veri iletimini sağlayan ilk büyük ölçekli bilgisayar ağıydı. ARPANET, 1969 yılında ilk bağlantısını kurarak bilgisayarlar arası iletişimin ilk adımını attı.

image

1970'ler: TCP/IP Protokolü

ARPANET üzerindeki iletişim için kullanılan ilk protokollerin yerini, TCP/IP (Transmission Control Protocol/Internet Protocol) aldı. TCP/IP, farklı bilgisayarların birbirleriyle iletişim kurabilmesini sağlamak için temel bir iletişim protokolü haline geldi. Bu, internetin temel taşıyıcılarından biri haline geldi.

1990'lar: World Wide Web'in Ortaya Çıkışı

1990'ların başında, Tim Berners-Lee tarafından geliştirilen World Wide Web (WWW) protokolü ve tarayıcıları, internetin halka açık ve kullanıcı dostu hale gelmesini sağladı. 1991 yılında ilk web sitesi oluşturuldu ve bu dönemde web tarayıcıları (örneğin, Mosaic ve Netscape Navigator) ortaya çıktı. Bu, internetin kitlesel kullanımının başlangıcını işaret etti.

2000'ler: Dot-Com Patlaması

2000'lerin başında, internet üzerinde iş yapma ve ticaret büyük bir ivme kazandı. Birçok internet şirketi (dot-com şirketleri) büyük yatırımlar aldı ve hızla büyüdü. Ancak, bu dönemde birçok şirket iflas etti. Bu dönemde ayrıca dijital içerik, e-ticaret ve online eğitim gibi alanlarda büyük gelişmeler yaşandı.

2000'lerin Sonları: Sosyal Medya ve Web 2.0

2000'lerin sonlarına doğru, sosyal medya platformları (örneğin, Facebook, Twitter ve YouTube) internet kullanımını büyük ölçüde etkiledi. Web 2.0 kavramı, kullanıcıların içerik oluşturmasına ve paylaşmasına dayalı daha etkileşimli bir web deneyimini tanımlar. Bu, internetin daha katılımcı bir platform haline gelmesini sağladı.

2010'lar: Mobil İnternet ve Akıllı Cihazlar

2010'ların başında, akıllı telefonların ve tablet bilgisayarların yaygınlaşması, internetin mobil cihazlara taşınmasını sağladı. Bu dönemde mobil uygulamaların ve mobil internetin önemi büyüdü. İnternet, neredeyse herkesin cebinde taşıdığı bir araç haline geldi.

Gelecek: Nesnelerin İnterneti (IoT)

Gelecekte, Nesnelerin İnterneti (IoT) teknolojisi, cihazların ve nesnelerin internet aracılığıyla birbirleriyle iletişim kurmasını sağlayacak. Bu teknoloji, ev otomasyonundan akıllı şehirlerin yönetimine kadar birçok alanda büyük potansiyele sahiptir.

İnternetin tarihi, teknolojinin nasıl geliştiğini ve dünyayı nasıl değiştirdiğini gösteriyor. Başlangıçta sınırlı bir akademik ağdan, bugünkü dünya çapında bir iletişim ve bilgi kaynağına dönüşen internet, sürekli olarak evrilen bir fenomendir. İnternet, teknoloji, ticaret, kültür ve toplum üzerindeki etkileriyle dünyayı daha yakından bir araya getiriyor.

Web siteler nasıl çalışıyor?

Bir web sitesi, karmaşık bir yapıya sahip bir yazılım ve sunucu altyapısı kullanarak çalışır.

Tarayıcı İsteği (Browser Request)

Bir kullanıcı bir web sitesini ziyaret etmek istediğinde, web tarayıcısı (örneğin, Chrome, Firefox, Safari) kullanıcının isteğini sunucuya ileten HTTP isteği (HTTP request) gönderir. Bu istek, kullanıcının tarayıcıda belirlediği web sitesinin URL'sini (Uniform Resource Locator) içerir.

DNS Çözümleme (DNS Resolution)

Tarayıcı, kullanıcının girdiği URL'yi sunucunun IP adresine dönüştüren bir DNS (Domain Name System) sorgusu gönderir. DNS, URL'yi IP adresiyle eşleştirir ve isteği yönlendirmek için bu IP adresini kullanır.

Sunucu İstemi (Server Request)

Tarayıcı, DNS tarafından elde edilen IP adresine HTTP isteğini gönderir. Bu istek, kullanıcının tarayıcısının istediği sayfanın (HTML, CSS, JavaScript, resimler vb.) sunucuya gitmesini sağlar.

Sunucu İşleme (Server Processing)

Sunucu, gelen isteği işler ve istenen sayfayı hazırlar. Bu işlem, web sunucusunun (örneğin, Apache, Nginx) web sayfasının kaynak dosyalarını sunmaktan başlayarak, dinamik içerik üretme (örneğin, veritabanından veri çekme) gibi işlemleri içerebilir.

Veritabanı Erişimi (Database Access)

Eğer web sitesi dinamik içerik kullanıyorsa (örneğin, bir e-ticaret sitesi), sunucu veritabanına erişebilir. Bu, kullanıcıların hesap bilgilerini, ürünleri veya içeriği çekmek için veritabanı sorguları gönderilmesini içerebilir.

Sayfa Oluşturma (Page Rendering)

Sunucu, istenen sayfanın HTML, CSS ve JavaScript gibi kaynaklarını bir araya getirir. HTML, sayfanın yapısını tanımlar; CSS, görsel stil ve düzeni kontrol eder; JavaScript, etkileşimli işlevselliği sağlar.

Tarayıcı Yanıtı (Browser Response)

Sunucu, hazırlanan sayfanın yanıtını HTTP yanıtı (HTTP response) olarak tarayıcıya gönderir. Yanıt, tarayıcı tarafından alındığında, sayfa tarayıcıda görüntülenmeye başlar.

Tarayıcı Görüntüleme (Browser Rendering)

Tarayıcı, aldığı HTML, CSS ve JavaScript kaynaklarını kullanarak web sayfasını görüntüler. Sayfa, kullanıcının cihazında düzgün bir şekilde oluşturulur ve kullanıcı tarafından etkileşime girebileceği bir arayüz sunar.

Etkileşim ve Dinamizm (Interaction and Dynamism

Kullanıcı web sitesiyle etkileşimde bulunabilir. JavaScript kullanılarak, sayfa üzerinde dinamik işlemler gerçekleştirilebilir (örneğin, bir form gönderme, bir resim galerisini kaydırma, veri filtreleme vb.).

Bu süreç, kullanıcının bir web sitesini ziyaret ettiğinde gerçekleşen temel adımları açıklar. Web sitesi tasarımı, içerik yönetimi, güvenlik ve performans gibi birçok önemli faktörü içerir, ancak temel olarak web sunucusunun istemcilere (kullanıcıların tarayıcılarına) web sayfasını sunmasıyla başlar.

image

IT’de Neler Oluyor?

Bir IT (Bilgi Teknolojileri) organizasyonunda çok çeşitli görev tanımları bulunabilir, çünkü IT alanı büyük ve karmaşıktır.

IT Yöneticisi

IT bölümünün başında yer alır ve bölümün stratejik yönetiminden sorumludur. Bütçe oluşturma, proje planlama ve personel yönetimi gibi görevleri vardır.

Proje Yöneticisi

IT projelerini planlar, takip eder ve uygular. Projelerin süreçlerini ve kaynaklarını yönetir.

Sistem Yöneticisi

Sistemlerin ve sunucuların günlük işleyişini yönetir ve sorunları çözer. Sistemlerin performansını ve güvenliğini sağlar.

Yazılım Geliştirme Ekibi

Yazılım uygulamalarını tasarlar, geliştirir ve bakımını yapar. Frontend ve backend geliştiricileri, web ve mobil uygulamaların geliştirilmesi konusunda uzmanlaşır.

Veri Tabanı Yönetimi Ekibi

Veri tabanlarının yönetimini, yedeklemesini ve güvenliğini sağlar. Veri analitiği ve raporlama görevlerini üstlenir.

Ağ Yönetimi Ekibi

Şirketin ağ altyapısını yönetir, ağın performansını izler ve güvenliğini sağlar.

Güvenlik Uzmanları

Bilgi güvenliği konusunda uzmanlaşmış kişilerdir. Veri güvenliğini ve ağ güvenliğini sağlamak için çalışırlar.

Destek Masası

Kullanıcıların bilgisayar ve yazılım sorunlarını çözen, teknik destek sağlayan birimdir.

Frontend, Backend, Full Stack Developer kavramları

Frontend Developer (Ön Yüz Geliştirici):

Frontend Developer, kullanıcıların bir web sitesi veya uygulamanın kullanıcı arayüzüyle etkileşimde bulunduğu kısmı tasarlayan ve geliştiren kişidir. Ön yüz geliştiricileri, web sayfalarının veya uygulamanın görsel tasarımını ve kullanılabilirliğini oluşturur. Bu kişiler, HTML, CSS ve JavaScript gibi teknolojileri kullanarak web sayfalarını oluşturur ve kullanıcı deneyimini geliştirmek için animasyonlar, kullanıcı etkileşimi ve diğer ön yüz özelliklerini entegre ederler.

Frontend Developer'ların temel görevleri şunlar içerebilir:

  • Web sayfalarının tasarımını ve düzenini oluşturmak.
  • Kullanıcı arayüzünü ve kullanıcı deneyimini geliştirmek.
  • Web sayfalarını farklı cihazlara uyumlu hale getirmek (duyarlı tasarım).
  • Görsel ve kullanıcı etkileşimleri eklemek.

Backend Developer (Arka Yüz Geliştirici):

Backend Developer, web uygulamalarının arkasındaki mantığı oluşturan ve yöneten kişidir. Bu kişiler, sunucu tarafındaki kodları yazarak veri tabanlarına erişim sağlarlar, iş mantığı ve veri işleme işlemlerini yönetirler. Genellikle sunucu tarafı kodlama dilleri ve çerçeveler kullanırlar.

Backend Developer'ların temel görevleri şunlar içerebilir:

  • Sunucu tarafı uygulama geliştirmek.
  • Veri tabanlarıyla iletişim kurmak ve veri işlemek.
  • Web uygulamasının güvenliğini ve performansını sağlamak
  • API'ler (Application Programming Interface) oluşturmak ve yönetmek.

image

Full Stack Developer (Tam Yığın Geliştirici):

Full Stack Developer, hem ön yüz (frontend) hem de arka yüz (backend) geliştirme alanlarında deneyime sahip olan ve her iki tarafı da yönetebilen bir geliştiricidir. Yani, bir web uygulamasının hem kullanıcı arayüzünü tasarlayabilir hem de sunucu tarafındaki iş mantığını ve veri tabanı işlemlerini yönetebilirler.

Full Stack Developer'lar genellikle aşağıdaki görevleri üstlenir:

  • Kullanıcı arayüzünü tasarlamak ve frontend geliştirmek.
  • Sunucu tarafındaki kodları yazmak ve backend geliştirmek.
  • Veri tabanlarına erişim sağlamak ve veri işlemek.
  • Tüm web uygulamasının genel yapısını ve performansını yönetmek.
  • Full Stack Developerlar, projelerde daha fazla bağımsızlık ve çok yönlülük sağlayabilirler, ancak hem frontend hem de backend teknolojilerinde derin bir bilgi gerektirirler.
  • Her bir geliştirici türü, web uygulamalarının farklı yönlerini ele alır ve bir projede işbirliği yaparak tamamlanmasını sağlar. Projenizin gereksinimlerine bağlı olarak, bu geliştirici türlerinden biri veya birkaçı bir arada çalışabilir.

image

Programlama dilleri ve dil seçimi

Programlama dilleri, bilgisayarlarla iletişim kurmak ve yazılım geliştirmek için kullanılan özel dillerdir. Her bir programlama dilinin kendi söz dizimi (syntax) ve semantiği (meaning) vardır ve farklı görevler için daha uygun olan diller bulunabilir. İşte bazı popüler programlama dilleri ve kullanım alanları:

Python

Kolay okunabilir ve öğrenmesi kolay olan Python, veri analizi, yapay zeka, web geliştirme, otomasyon ve bilimsel hesaplamalar gibi birçok alanda kullanılır.

JavaScript

Web geliştirmenin temel taşı olan JavaScript, web tarayıcılarında çalışır ve interaktif web sayfaları ve uygulamaları oluşturmak için kullanılır.

Java

Genel amaçlı bir programlama dili olan Java, özellikle büyük ölçekli uygulamalar, mobil uygulamalar ve büyük veri projeleri için tercih edilir.

C++

Hızlı ve performans odaklı C++ genellikle oyun geliştirme, sistem programlama ve gömülü sistemlerde kullanılır.

C#

Microsoft tarafından geliştirilen C#, özellikle Windows platformunda uygulama geliştirme için kullanılır.

Ruby

Basit ve esnek Ruby, web geliştirme (Ruby on Rails çerçevesi ile), otomasyon ve prototip oluşturma için popülerdir.

Programlama Dili Seçiminde Nelere Dikkat Edilmelidir:

Proje Gereksinimleri

Hangi tür bir projede çalıştığınıza bağlı olarak, belirli bir programlama dilinin avantajları ve dezavantajları olabilir. Proje gereksinimlerini iyi anlayarak doğru dili seçmek önemlidir.

Öğrenme Kolaylığı

Programlama dilini öğrenmek için zamanınız ve kaynaklarınız sınırlı olabilir. Bu nedenle, seçtiğiniz dilin öğrenme eğrisine ve mevcut becerilerinize uygunluğuna dikkat edin.

Topluluk ve Kaynaklar

İyi bir programlama dili, büyük ve aktif bir topluluğa sahip olacaktır. Bu topluluklar, sorularınızı sormak ve sorunlarınıza çözüm bulmak için önemlidir.

İş Fırsatları

Eğer bir programlama dilini profesyonel bir kariyer yapmak için seçiyorsanız, o dilin sektördeki talebini değerlendirmek önemlidir. İş piyasasındaki fırsatları göz önünde bulundurun.

Performans ve Verimlilik

Bazı diller, hız ve verimlilik açısından diğerlerinden daha iyidir. Projenizin performans gereksinimlerini değerlendirin.

Ölçeklenebilirlik

Daha büyük projelerde çalışacaksanız, dilin ölçeklenebilirlik yeteneklerini göz önünde bulundurun.

Tercih ve Kişisel İlgi

Son olarak, programlama dili seçiminiz kişisel tercihlerinize ve ilgilerinize dayanmalıdır. Bir dili sevmek ve onunla çalışmaktan keyif almak, başarılı bir geliştirici olmanıza yardımcı olabilir.

Programlama dili seçimi, projenizin gereksinimlerine, becerilerinize ve kariyer hedeflerinize bağlı olarak değişebilir. Bu nedenle dikkatli bir analiz ve araştırma yaparak doğru dili seçmek önemlidir.

Önemli Not : Programlama dili seçiminde genellikle daha büyük projeler için önemli faktör:"Performans ve Verimlilik"'tir.