48.Hafta: Bir Yazılımcının Yolu
Bu konu altında aslında kendi hikayemi sizinle paylaşacağım. Hikaye benimle birlikte büyüyüp dallanıp budaklanacak. Bilimsel veya formel bir yazıdan ziyade günlük konuşma dilinde yeri geldiğinde matematik sosuyla süslü ve bayağı uzun bir hikaye olacağını şu an söyleyebilirim. Aslında, bir nevi günlük tutmak gibi olacak. Peki neden böyle bir yazı yazma fikri doğdu? Birinci neden, çocukluğumdan beri süregelen herhangi bir konuyu öğrenirken daima yazmaya başvurmam. İkinci nedense, bilgisayar biliminde özellikle yazılım alanında Türkçe dilinde yazılan kaynakların veya yol haritalarının çok az hatta hiç olmayışıdır. Şu anki planım yazıyı hafta hafta yazıp yayınlamak, o zaman günlük değilde ‘haftalık’ demek daha doğru olacak bu yazı dizisine :). Başlamadan önce bir not daha eklemek istiyorum. O hafta yazdığım konuda eğer bir yerlerden esinlenme veya alıntı varsa daima yazının altında dipnot olarak kaynak belirteceğim. Dileyen okuyucu bu kaynakları kullanarak daha fazla bilgi veya benim düşüncemden daha farklı şeyler öğrenebileceklerdir. Yazının giriş cümlesinin sonu olarak, burada yazılan her şey tamamen benim kişisel görüşüm olup, ilerleyen süre zarfında belki video veya podcast olarak yayın hayatına devam edebilecektir. Şimdiden bu yolculuğu okuyacak olan tüm insanlara(yapay zekalara) keyifli okumalar.
Her zaman herşeye en temelden başlama konusunu kendime düstur edinmişimdir. Yazılımı da öyle başladım. Peki en temel ne demekti? Bir programlama dili öğrenmek; şu an için bu dilimiz python olacaktır. Sonra bu hafta kendim yapmış olduğum 2 araştırmayı yazıya dökme niyetim var. 1) Nedir bu İnternet? 2) ‘Back-end’ programcının yol haritası nasıl olmalıdır? Bu sorulara cevabı tabiki de google amcada ve youtube babada buldum. Lisansta matematik okumuş bir birey olarak(ne alaka bilmiyorum!)bu soruları cevaplamaya tersten başlayayım.
Soru 2'ye yanıtlar: Tanımlar her zaman hayatımın önemli bir parçasını oluşturdu paramı da yeri geldi bu tanımları kullanarak kazandım o yüzden önce ‘Back-end’ yazılımcının tanımı yapalım. ‘‘ ‘Back-end’ yazılımcı: bana kızabilirler ama temelde API’leri(ileride ne olduğunu anlayacağız inşallah) fonksiyonlara dönüştüren kişidir diyebiliriz. Günümüzde, bazı aracılarla veri tabanı bağlantıları ve şemalarını oluşturup, kodların bakımlarını yapmak ve bunu ‘front-end’ için hazır hale getirmek bir ‘back end’ yazılımcının görevleridir diyebiliriz. Tabi ki pozisyonunuza göre bunlara değişebilir diye biliyorum.’’ Tabi bu tanım kesindir diyemem ben de sizler gibi yeniyim. Kısmen kişisel ve basit bir tanım yaptıktan sonra yolumuzu da görselleştirelim. Matematikte de böyledir, eğer bir şeyi cebirsel olarak anlamakta zorlanıyorsan onu görselleştir. Ben de bu sebeple aşağıda sizlere sağdan soldan topladığım bilgilerle en temelde bir yol haritası görseli paylaşmak istiyorum. Görsel olarak ve medium da paylaştığım için linkler aktif olmayacaktır. Linkler için iletişime geçebilirsiniz.
Şimdi de soru 1'e yanıtlar ararken karşımıza çıkanlara bir gözgezdirelim. Bu iki soruya aradığım yanıtlardan sonra bu hafta aslında daha eğlenceli şeyler yaptım.(Kod yazmak). Ondan da bahsedeceğim. Soru 1 neydi? Nedir bu internet? Yukarıda da bahsettiğim gibi ben tanımları seviyorum o zaman interneti de basit bir şekilde tanımlayalım; ‘Standartlaştırılmış bir protokol seti aracılığıyla iletişim kuran, birbirine bağlı küresel bir bilgisayar ağıdır.’ Söylentiler doğruysa yeni kuşak pek okuma taraftarı değil, bunun yerine dinleme ve izleme taraftarıymış. Bu yüzden, internetin ne olduğunu görselleştirip, tarihini ‘internetin babasından’ Vint Cerf’ten dinleyelim.
Çok genel bir sorumuz var, internet nedir? O yüzden de uzun uzun yazacağız. Peki, az biraz internetin tanımını öğrendik. Bu milyon, trilyon veya sayılabilir sonsuzluktaki(matematik okuyanların aklına G.Cantor gelecektir. :) ) bilgi evlerimize, iş yerlerimize nasıl geliyor? Aşina olduğumuz şeylerlerle. Örneğin, kablolar veya kablosuz sinyaller vb. Yine bu konuyu daha iyi anlamak adına güzel hazırlanmış bir video çok iyi olacaktır.
İnternetin tanımına baktık, bilgilerin nasıl fiziksel olarak aktarıldığına baktık. Pek tabi, bu kadar şeyin olabilmesi için bazı protokollerin olması lazım. O zaman bu geniş kapsamlı sorumuza cevap ararken karşımıza çıkan iki kavram IP adresi ve DNS. Hadi bunlarla ilgili de bir video izleyelim.
Sorumuza yeterince cevaplar bulabildik mi ? Henüz değil ! Bilgiyi bir protokol aracılığınla aktadırdık. Peki bunu yaparken hangi yolları inceleyeceğiz ? Sadece bir yolumuz mu var? yoksa farklı yollar mevcut mudur? Cevap için video serimize devam edelim.
Sorduğumuz ilk soruya temel düzeyde yanıtlar ararken iş dallanıp budaklanmaya başladığını hissediyor gibiyiz. Ama aslında şu ana kadar gördüğümüz bütün kavramları öyle ya da böyle duymuş olmalıyız diye düşünüyorum. Cevaplarımızda sona gelirken bilmemiz gereken 2 kavramı daha görelim. HTTP ve HTML. Kısaca bu 2 kavrama tanım yapıp, tekrardan en hızlı öğrenme yolu olan video ile sizi başbaşa bırakacağım. HTML’i web sayfalarını yazmak için kullanılan dil olarak tanımlayabiliriz. HTTP ise( ikisi bazen karışabiliyor.) web tarayıcılarının ve web sunucularının internet üzerinden birbirleriyle iletişim kurmak için kullandıkları protokol olarak tanımlayabiliriz.
Videoda SSL ve TLS’ten bahsedildiğini duydunuz. Bu iki kavram aslında internette bizi güvenli tutmakta ve hırsızlığa karşı bizi korumaktadır. Bir nevi, kolluk kuvvetleri diyebiliriz. O zaman yeni bir video daha bakalım.
Basit anlamda son bir kavramımız kaldı. En başta dediğim gibi, böyle çok genel soruların basit cevapları olmaz. Ya da ben şu ana kadar görmedim. SSL ve TLS’i anladıysak son kavramımız olan ‘siber güvenlik ve suç’ kavramını da kolaylıkla anlayıp. İlk sorumuza verdiğimiz yanıtı temel olarak sonlandırabiliriz. Bu konuyla ilgili son videomuzda siber güvenliğin temellerini ve yaygın suçlar hakkında bilgileri göreceksiniz.
2022 yılının 48.haftasında(yeni yıl yaklaşmakta, bir noel ağacı almayı unutmayın !) ilk soruya aradığım ve bulduğum basit cevapları yukarıda sizinle paylaştım. Galiba hafta boyu vaktimi en çok alan kısım cevapları yazıya dökmek oldu. Bence değdi. Çünkü bu konuları sadece yazılım veya bilgisayarla uğraşanlar değil, internet kullanan herkesin ucundan bilmesi gerektiğini düşündüğüm önemli kavramlardır. Tekrardan bence, bu hikayemi okuyan sıradan ölümlerin yukarıda videoları bir kez daha izlemelerini istiyorum. İnanın o zaman daha anlamlı olacaktır. Bu kısmı bitirmeden şunu da ekleyeyim. Yazının en sonunda kaynaklar kısmını bulabileceksiniz.
Uzunca bir girişten sonra aslında artık yolumuz daha belli olacatır. Her zaman hatırlatmak isterim bu hikayem temelinde ‘Back-end’ bir yazılımcının pişme sürecini anlatacaktır.Lütfen uzunca bir süre bunu unutmayın. O zaman yavaş yavaş harcımızı yapmaya başlayalım. Homo Sapiens’ler(yani biz) çetin koşullarda nasıl hayatta kaldık? Tabi ki topluluklar halinde yaşabilmemiz sayesinde. Ortada bir topluluk varsa, burada bir iletişim olmak zorundadır. Bu iletişimin temeliyse dildir. Nasıl ki evreni anlayabilmek için onun dili olan matematiği kullanıyorsak, bir şeyler programlayabilmek ve bunu sunabilmek içinde bir dile ihtiyacımız var. Burada karşımıza bir kaç farklı seçenek çıkıyor. Hepsinin avantajı, dezavantajı elbet vardır. Ben de hakim değilim çoğuna. O yüzden bilmiyorum deme hakkımı kullanıyorum burada.
Hikaye kişisel olduğu ve bilimsel bir güdüyle yazılmadığı için doğrudan kendi kullanımım olan Python ile ilerleyeceğiz. Yine ve yeniden ileride de olacağı gibi tanımlarla ilerleyelim. Python nedir? Piton yılanından mı ismini almış gibi esprili cümleler kurulabilir ama gelin işin aslını öğrenelim; Python, Hollandalı bir Programcı olan Guido van Rossum tarafından tasarlanmış olup ilk olarak 20 Şubat 1991'de piyasaya sürülmüş bir prgramlama dilidir. İsmini piton yılanından değil ama BBC’de yer alan bir komedi dizisi ‘Monty Python’s Flying Circus’ almıştır. Büyük miktarda veriyle çalışırken popüler olması sebebiyle genellikle makine öğrenimi ve veri biliminin yanı sıra veri analizi ve veri işleme için kullanılır. Aynı zamanda web kazıma(scraping) için tercih edilen dildir. Web kazıma, web’den büyük miktarda ham veriyi ayıklayan, toplayan ve işleyen otomatik bir tekniktir. Django(okuyucular ve benim çalışacağımız platform olacak…) ve Flask gibi frameworkler yardımıyla güçlü web uygulamaları oluşturmak için Python’u web geliştirme için de kullanabilirsiniz. Ayrıca Python, test otomasyonu için popüler bir dildir. Programlarınız için tüm testleri manuel olarak yazmak yerine, işi yapmak için otomasyon araçlarına, Python kitaplıklarına ve Python komut dosyalarına güvenebilirsiniz.
2022 yılının 48.haftasında bu yazıyı hazırlama ve yazma fikrinin eyleme dönüşmesinin haricinde tabiki de bolca kod yazmaya devam ettim. Aslında, bu haftalıkta okuyuculara bir kaç alıştırma bırakmayı düşünüp vazgeçtim. Sonuçta ders kitabı yazmıyorum.
Bence 48.haftayı sonlandırma zamanı geldi. Çok kısaca 49.hafta notlarımın içeriğinden bahsedeyim.(Tabiki değişiklik hakkımı saklı tutuyorum.) Python diline daha çok dalıp bu sefer daha kitabi bilgilerle ilerleyeceğiz. Basit düzeyde de olsa ‘Front-end’ yazılımcının bilgisine bakacağız. Eğer vaktim yeterse, işletim sistemleri hakkında sohbet edeceğiz. Mutlaka kaynak kısmını kontrol edin!!!!
KAYNAKLAR;
İnternet Hakkında:
- https://www.vox.com/2014/6/16/18076282/the-internet
- https://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm
- https://roadmap.sh/guides/what-is-internet
Python Hakkında:
- https://www.amazon.it/dp/0321884914?tag=hackr069-21&geniuslink=true
- https://developers.google.com/edu/python/
- https://www.edx.org/course/introduction-to-computer-science-and-programming-7?utm_source=aw&utm_medium=affiliate_partner&utm_content=text-link&utm_term=428263_Hackr.io&awc=6798_1670015318_411b16096f3042dde54399c950a47e32