1.
microsoft tarafından 2000 yılında geliştirilmiş bir programlama dili. .net için geliştirilmekte olup, orta seviye bir dildir. güncel sürümü 9.0'dır.
bu dille bir şeyler kodlayabileceğiniz bazı geliştirme ortamları:
- visual studio (microsoft)
- vs code (microsoft)
- mono (ximian)
- rider (jetbrains)
bu dille bir şeyler kodlayabileceğiniz bazı geliştirme ortamları:
- visual studio (microsoft)
- vs code (microsoft)
- mono (ximian)
- rider (jetbrains)
devamını gör...
2.
türkiye'de renault gibi tutmaktadır. genelde yazılım öğrenmeye heveslenenlerin ilk öğrenmeye başladığı dildir. öğrenmesi nispeten kolaydır.
devamını gör...
3.
object oriented programlama dilidir. unity ve godot kullanarak oyun geliştirebilir. asp .net mvc kullanarak internet projeleri yapabilir wpf ve windows form ile masaüstü programlar geliştirebilir xamarin ile cross platform mobil uygulama geliştirebilir ml.net ile yapay zeka uygulamaları yazabilirsiniz.
devamını gör...
4.
c# ile winform ve console application oluşturabilirsiniz, aynı şekilde unity üzerinden oyun da programlayabilirsiniz, kolay bir dildir.
devamını gör...
5.
microsoft tarafından geliştirilen, java diline rakip olarak çıkartılan, çok ama çok güçlü bir dil.
dilin özellikleri:
1. oop programlama yapabiliyoruz.
2. yüksek seviyeli (insan diline yakın.).
3. c#, daha iyi bir java'ya rakip olmak için microsoft tarafından çıkarılmıştır. değer tipleri olsun, özellikler olsun, reified genericler olsun, gerçekten daha iyi bir java'dır. ancak en başta sadece windows üzerinde desteklenirken, son zamanlarda diğer platformlarda da desteklenmeye başlanmıştır.
4. türkiye'de aç bırakmaz. ;)
5. drl denilen bir sistem var. yazdığınız kodlar direkt olarak makine koduna çevrilmiyor. java gibi ara bir forma dönüştürülüp. clr tarafından algılanabilecek bir forma dönüştürülüyor.
drl özellikleri;
1.herhangi bir tip seçiminin yapılmaması,
2.derleme yapılmaması, yorumlama ile kodların çalıştırılması,
3.tüm işlemlerin (tip atamalarının, tip bağlamalarının) çalışma zamanında yapılması,
4.geliştiriminin kolay olması olarak söyleyebiliriz.
artıları:
1. hızlı geliştirme ortamı.
2. tip güvenli bir dil.
3. c ve c++ dillerin yazım tarzına benzediği için kolayca bu dile geçiş yapabiliyorsunuz.
4. arkasında microsoft gibi dev bir şirketin desteği var.
eksileri:
1. yüksek seviyeli bir dil olduğu için hız konusunda bir tık geri.
2. geliştirilen ıde genellikle visual studio olduğu için bazı buglar ile karşılaşma ihtimaliniz çok yüksek.
herkesin bilmediği küçük detaylar :
1. bounds check elimination;
for (var i = 0; i < arr.length ; i++)
{
arr[i] *=3; //diyelim ki her elemanı üçle çarpıyoruz.
}
burada ilk dikkati çeken şey arr. length in tekrar tekrar hesaplanması, bu her ne kadar gereksiz görünse de aslında döngünün daha hızlı çalışmasına neden oluyor. neden mi?
çünkü arr. length bir cpu belleğine depolanıyor sebebi arraylerin uzunlukları sabittir. ayrıca derleyici burada ne yapacağınızı çok iyi bildiği için bounds check elimination olayı oluyor. yani arr. length tekrar tekrar hesaplama olayını pas geçiyor, çünkü sonuçları belli.
2. çoğu kişinin yanlış bildiği şeyler;
1. ınterfacelerin kendisi default olarak internaldir. ama içinde olan her şey default olarak publictir.
2. classlar default olarak private değil internaldir. ama içinde olan her şey default olarak privatedir.
3. ınterfacelere özellikle çok büyük güncelleme geldi. artık içinde fonksiyonu tanımlayabiliyor ve değişkenlere değer verebiliyoruz. bunu yazma sebebim hâlâ internet ortamında ınterfacelerin sadece imza için kullanıldığı..., aslında ınterfaceleri classların referansını tutmak için kullanırız.
özetle;
genel iş uygulamaları, mobil yazılımlar, genel web siteleri yapacaksanız ve bir şeyleri uzun uzun okuyup öğrenecek kadar zamanınız varsa c# veya java öğrenmekten çekinmeyin.
not: ekleyeceğim aslında çok şey var ama şu an aklıma gelenler bunlar. özellikle "... kullanımında oluşabilecek allocationlar" bilmeniz size çok öne geçirir.
bilmediğim ve merak ettiğim şeyler; clr bizim kodlarımızı ara forma dönüştürdükten sonra işletim sisteminin fonksiyonlarını nasıl çağırıp ona derdini anlatıyor? çok büyük ihtimalle tahminim referans adresini vermesi, öbür türlü işlerin çok sakata girme şansı var.
çok istek gelmesi durumunda, bu yazıyı tematik yapıp tüm bildiklerimi aktarmaya çalışacağım. sizlere verebileceğim su üstü bilgilerden bu kadar. kendinize iyi bakın.
dilin özellikleri:
1. oop programlama yapabiliyoruz.
2. yüksek seviyeli (insan diline yakın.).
3. c#, daha iyi bir java'ya rakip olmak için microsoft tarafından çıkarılmıştır. değer tipleri olsun, özellikler olsun, reified genericler olsun, gerçekten daha iyi bir java'dır. ancak en başta sadece windows üzerinde desteklenirken, son zamanlarda diğer platformlarda da desteklenmeye başlanmıştır.
4. türkiye'de aç bırakmaz. ;)
5. drl denilen bir sistem var. yazdığınız kodlar direkt olarak makine koduna çevrilmiyor. java gibi ara bir forma dönüştürülüp. clr tarafından algılanabilecek bir forma dönüştürülüyor.
drl özellikleri;
1.herhangi bir tip seçiminin yapılmaması,
2.derleme yapılmaması, yorumlama ile kodların çalıştırılması,
3.tüm işlemlerin (tip atamalarının, tip bağlamalarının) çalışma zamanında yapılması,
4.geliştiriminin kolay olması olarak söyleyebiliriz.
artıları:
1. hızlı geliştirme ortamı.
2. tip güvenli bir dil.
3. c ve c++ dillerin yazım tarzına benzediği için kolayca bu dile geçiş yapabiliyorsunuz.
4. arkasında microsoft gibi dev bir şirketin desteği var.
eksileri:
1. yüksek seviyeli bir dil olduğu için hız konusunda bir tık geri.
2. geliştirilen ıde genellikle visual studio olduğu için bazı buglar ile karşılaşma ihtimaliniz çok yüksek.
herkesin bilmediği küçük detaylar :
1. bounds check elimination;
for (var i = 0; i < arr.length ; i++)
{
arr[i] *=3; //diyelim ki her elemanı üçle çarpıyoruz.
}
burada ilk dikkati çeken şey arr. length in tekrar tekrar hesaplanması, bu her ne kadar gereksiz görünse de aslında döngünün daha hızlı çalışmasına neden oluyor. neden mi?
çünkü arr. length bir cpu belleğine depolanıyor sebebi arraylerin uzunlukları sabittir. ayrıca derleyici burada ne yapacağınızı çok iyi bildiği için bounds check elimination olayı oluyor. yani arr. length tekrar tekrar hesaplama olayını pas geçiyor, çünkü sonuçları belli.
2. çoğu kişinin yanlış bildiği şeyler;
1. ınterfacelerin kendisi default olarak internaldir. ama içinde olan her şey default olarak publictir.
2. classlar default olarak private değil internaldir. ama içinde olan her şey default olarak privatedir.
3. ınterfacelere özellikle çok büyük güncelleme geldi. artık içinde fonksiyonu tanımlayabiliyor ve değişkenlere değer verebiliyoruz. bunu yazma sebebim hâlâ internet ortamında ınterfacelerin sadece imza için kullanıldığı..., aslında ınterfaceleri classların referansını tutmak için kullanırız.
özetle;
genel iş uygulamaları, mobil yazılımlar, genel web siteleri yapacaksanız ve bir şeyleri uzun uzun okuyup öğrenecek kadar zamanınız varsa c# veya java öğrenmekten çekinmeyin.
not: ekleyeceğim aslında çok şey var ama şu an aklıma gelenler bunlar. özellikle "... kullanımında oluşabilecek allocationlar" bilmeniz size çok öne geçirir.
bilmediğim ve merak ettiğim şeyler; clr bizim kodlarımızı ara forma dönüştürdükten sonra işletim sisteminin fonksiyonlarını nasıl çağırıp ona derdini anlatıyor? çok büyük ihtimalle tahminim referans adresini vermesi, öbür türlü işlerin çok sakata girme şansı var.
çok istek gelmesi durumunda, bu yazıyı tematik yapıp tüm bildiklerimi aktarmaya çalışacağım. sizlere verebileceğim su üstü bilgilerden bu kadar. kendinize iyi bakın.
devamını gör...
6.
yazarken zevk aldığım programlama dili, diğer dillere göre daha kolaydır.
devamını gör...
7.
2000 yılında microsoft tarafından geliştirilen bir programlama dilidir. dünya'da en çok kullanılan 4. dildir. türkiye'de de bu dili iyi öğrenirseniz yanında birkaç framework ile birlikte rahatça iş bulursunuz. c dilinden geliştirilmiştir ancak onun daha high level'ıdır yani konuşma diline daha yakındır. ben bu yazıda genel c#'tan değil 9.0 ile gelen birkaç özellikten bahsedeceğim.
1- nesne türetirken new keyword'ünden sonra tip adı yazma zorunluluğu kalkmıştır. şahsi fikrim bu yazım biçini amelelikti zaten.
otomobil otomobil= new otomobil(); bunun yerine otomobil otomobil= new(); bu ikinci yazım artık yeterlidir.
2- parametrenin null kontrolü için metot içinde parametre null mü diye if'li tekrar bir kontrol mekanizması yazıyorduk o da tek satıra indi. direkt parametre sonuna ünlem koyunca null check te yapılıyor.
3- ternary yani 3'lü sorgulama'da ? ile koşulu : ile de koşula uyarsa olacak ve olmayacak olanı ayırırız. kek==null? tip1="kek_var": tip1="kek_yok" gibi ancak dönecek değişkenler aynı tipte olma zorunluluğu vardı. şimdi farklı tipte döndürebiliyoruz.
datetime? delivereddate = string.ısnullorempty(input) ? "" : datetime.now;
4- c#'ta normalde class ve metot içerisinde işlemleri gerçekleştiririz. küçük çaplı uygulamalar için bu zorunluluk ta ortadan kalkmış.
public class program
{
public void main()
{
console.writeline("hello world");
}
}
üstteki boilerplate yerine direkt,
using system;
console.writeline("class'sız parametresiz");
şeklinde yazabiliyoruz*.
1- nesne türetirken new keyword'ünden sonra tip adı yazma zorunluluğu kalkmıştır. şahsi fikrim bu yazım biçini amelelikti zaten.
otomobil otomobil= new otomobil(); bunun yerine otomobil otomobil= new(); bu ikinci yazım artık yeterlidir.
2- parametrenin null kontrolü için metot içinde parametre null mü diye if'li tekrar bir kontrol mekanizması yazıyorduk o da tek satıra indi. direkt parametre sonuna ünlem koyunca null check te yapılıyor.
3- ternary yani 3'lü sorgulama'da ? ile koşulu : ile de koşula uyarsa olacak ve olmayacak olanı ayırırız. kek==null? tip1="kek_var": tip1="kek_yok" gibi ancak dönecek değişkenler aynı tipte olma zorunluluğu vardı. şimdi farklı tipte döndürebiliyoruz.
datetime? delivereddate = string.ısnullorempty(input) ? "" : datetime.now;
4- c#'ta normalde class ve metot içerisinde işlemleri gerçekleştiririz. küçük çaplı uygulamalar için bu zorunluluk ta ortadan kalkmış.
public class program
{
public void main()
{
console.writeline("hello world");
}
}
üstteki boilerplate yerine direkt,
using system;
console.writeline("class'sız parametresiz");
şeklinde yazabiliyoruz*.
devamını gör...
8.
vs nin kodlarken kod yazım tarzına göre önermesi çok sevimli lan.
rahat,cool,kapsayıcı bir yazılım dilidir.
rahat,cool,kapsayıcı bir yazılım dilidir.
devamını gör...
9.
nota olanı do diyez adıyla da bilinir.
devamını gör...
10.
c hashtag
devamını gör...
11.
terleten bir yazılım dili.
devamını gör...
12.
evde kendi c#'ınızı yapmak ister misiniz? adımlar çok basit:
1- ctrl - c java
2- ctrl - v
3- rename -> c#
4- ve kimse çakmasın diye boolean'ı bool keyword'ü ile tutun*
1- ctrl - c java
2- ctrl - v
3- rename -> c#
4- ve kimse çakmasın diye boolean'ı bool keyword'ü ile tutun*
devamını gör...
13.
do diyez
devamını gör...
14.
t: microsoft tarafından geliştirilen bir programlama dilidir. web geliştirmede oyun geliştirmeye kadar bir çok alanda kullanılır, farklı ek uygulamalar ve kütüphaneler ile level atlar.
şimdi bu güzel programlama dilini bilen bir yazar arkadaş varsa bana yazabilir mi rica etsem? biraz temel giriş yapmıştım fakat sağlık sorunları, depresyon vs derken kalmıştı. şimdi kafamda ufak projeler oluşturup, bu projelerde yapamadığım ve bilmediğim konularda araştırma yaparak mı gitsem acaba diye düşünüyorum, yani proje bazlı öğrenme, direk balıklama dalış gibi.
yoksa youtube dan örnek proje yapanı izleyip onun kopyasını mı yapayım. yoksa önerdiğiniz bir kurs var mı? şayet sıfır değilim, unity learn ve bir kaç youtube videosu ile belli bir seviyede biliyorum ama temel olarak. bunun dışında geçmişte ortaokulda scratch uygulamasında hocanın bize göstermediği alanları kurcalayıp yaptığım proje ile 100 almıştım*, sonra inanmadı, bende gözünün önünde yapmıştım. en son başka sınıfta yaptırdı aynısını, örnek öğrenci diye hahzhsh. halbuki sen çocuklara öğretmedinki bunları ben kendim öğrendim. şimdi kısaca ne demek istiyorum: yaptığım kodlama değildi, sürükle bırak blok mantığı idi ama demek istediğim; hocanın çerçevesinin dışına çıkıp öğretmediğini deneme-yanılma ve mantığımla öğrenmiştim. hani proje bazlı deneme yanılma ile öğrenemeye açık bir yapım var.
şimdi bu güzel programlama dilini bilen bir yazar arkadaş varsa bana yazabilir mi rica etsem? biraz temel giriş yapmıştım fakat sağlık sorunları, depresyon vs derken kalmıştı. şimdi kafamda ufak projeler oluşturup, bu projelerde yapamadığım ve bilmediğim konularda araştırma yaparak mı gitsem acaba diye düşünüyorum, yani proje bazlı öğrenme, direk balıklama dalış gibi.
yoksa youtube dan örnek proje yapanı izleyip onun kopyasını mı yapayım. yoksa önerdiğiniz bir kurs var mı? şayet sıfır değilim, unity learn ve bir kaç youtube videosu ile belli bir seviyede biliyorum ama temel olarak. bunun dışında geçmişte ortaokulda scratch uygulamasında hocanın bize göstermediği alanları kurcalayıp yaptığım proje ile 100 almıştım*, sonra inanmadı, bende gözünün önünde yapmıştım. en son başka sınıfta yaptırdı aynısını, örnek öğrenci diye hahzhsh. halbuki sen çocuklara öğretmedinki bunları ben kendim öğrendim. şimdi kısaca ne demek istiyorum: yaptığım kodlama değildi, sürükle bırak blok mantığı idi ama demek istediğim; hocanın çerçevesinin dışına çıkıp öğretmediğini deneme-yanılma ve mantığımla öğrenmiştim. hani proje bazlı deneme yanılma ile öğrenemeye açık bir yapım var.
devamını gör...
15.
sevimli program yürüteci. veritabanımı çalıştırsın yeter kafası. bundan hiç anlamayıp bişiiler yapmaya çalışınca kafa fil ta***ı gibi oluyomuş. (bkz: ben bugün bunu gördüm)
devamını gör...
16.
ben bundan azcık öğrendim. ama azcık. hemen gittim hesap makinesi yaptım. youtube'larda basit hesap makinesi diye yapılanlar amelelikmiş onu gördüm. formül hesaplayan bir metot var. direkt onu yapıştır gitsin deyince kolayca oluyor. hesap makinesi deyip geçmeyin çok nalet bir şeymiş bu.
c# falan anlamam çok ama youtube'dan oynatma listeleri ile baya şey öğrendim. değişkenlerden başlıyor, if else, for, foreach, while, array diye diye gidiyor. sonraları genelde sql veritabanı anlatıyorlar.
ben nesne yönelimli proram deyince işte butondur textbox'dır onları kastediyor sanıyordum. meğerse program düzeninden bahsediyormuş. oop dedikleri şey. adamların bütün amacı düzenli, hızlı ve verimli olmak. class'lar, methodlar falanmış bahsettikleri nesne yönelim.
anlamadığım şey ise bu classları falan açıklarken neden bildiğimiz denklem türetmek demiyorlar da uzun uzadıya anlatıyorlar? denklemler ve denklemlerden türeyen formüller bütün yaptıkları aslında.
ama sevdim bu işi fena değil. şu an toolbox'taki araçları çözmeye çalışıyorum. sql'e veri eklemekfalan da şok güzel işlermiş.
bir tek mobile yazılım yapma işini beceremedim. o da olur ilerde.
c# falan anlamam çok ama youtube'dan oynatma listeleri ile baya şey öğrendim. değişkenlerden başlıyor, if else, for, foreach, while, array diye diye gidiyor. sonraları genelde sql veritabanı anlatıyorlar.
ben nesne yönelimli proram deyince işte butondur textbox'dır onları kastediyor sanıyordum. meğerse program düzeninden bahsediyormuş. oop dedikleri şey. adamların bütün amacı düzenli, hızlı ve verimli olmak. class'lar, methodlar falanmış bahsettikleri nesne yönelim.
anlamadığım şey ise bu classları falan açıklarken neden bildiğimiz denklem türetmek demiyorlar da uzun uzadıya anlatıyorlar? denklemler ve denklemlerden türeyen formüller bütün yaptıkları aslında.
ama sevdim bu işi fena değil. şu an toolbox'taki araçları çözmeye çalışıyorum. sql'e veri eklemekfalan da şok güzel işlermiş.
bir tek mobile yazılım yapma işini beceremedim. o da olur ilerde.
devamını gör...
17.
son iki tanımı ben girmişim. üçüncüyü de ben gireyim gelişim açısından. son tanımdan bu yana neler öğrendim?
öncelikle ben murat yücedağ'ın youtube videoları ile ilerliyorum. hatta daha dün yeni bir c# serisine de başladı. ilgilenenlere tavsiye ederim. alanında gerçekten profesyonel birisi.
sonracığma bu yazılım işine ilk başladığınızda genelde dos ekranı gibi görünen siyah ekranda sıkıcı aritmetik işlerle başlıyorsunuz.
sonra arayüz tasarlayabileceğiniz form denilen pencerelerde butonlar ve metin kutuları koyup basit ama zevkli fonksiyonlar işliyorsunuz. bu fonksiyonlar ya da operatörleri öğrenmesi ahım şahım şeyler değil ama her programlama dilinde olan temel ve sık kullanılan şeyler.
burada hesap makinesi yapmak, oyun yapmak gibi veri tabanı kullanmanıza gerek kalmayan, çok da zor olmayan uygulamalar yapıyorsunuz. ben bu noktada parantezlere takılmıştım. internette c# ile hesap makinesi yapmayı öğreten birçok video bulabilirsiniz fakat parantez de kullanılabilen bulamadım. fakat alakasız bir videoda bulduğum fonksiyon çok isime yaradı. işi bir tık daha ilerletip butonlara ses koydum, hesap makinesinin temasını değiştirebilme özellikleri ekledim. şu an pc'de lazım olunca kendi hesap makinemi kullanıyorum. evet basit bir hesap makinesi yaptığım şey fakat onu yaparken if else'den, for döngüsüne, pencere/formun köşelerini yuvarlatmaktan, standart windowsun kapat, simge duruma küçült, ekranı kapla butonlarının olduğu üst kısmı kaldırıp kendi tasarladığın butonları koymaktan formun kendisini mouse ile taşıyabilmeye birçok şey öğrendim.
bunlardan sonra sql denilen veritabanı oluşturma yazılımını öğretiyorlar. nedir bu sql? excel programının gelişmişidir. c# içinde komutları yürütürsünüz fakat hafızası yoktur. programı kapatıp tekrar açtığınızda sıfırlanır. neden excel kullanmıyoruz?
1. excel'den de veri çekebilirsiniz. fakat bir excel dosyayı ağda paylaştırdığınızda sadece 1 kullanıcıya hizmet verebilir. sql'de ise ağdan herkes girebilir aynı anda. zaten sql server olarak geçer. programı açtığınızda da connect diye bağlanma dialog kutuları çıkar.
2. excelde değil zaten sql'in muadili access programıdır fakat access'in büyük uygulamalara yetişemeyeceği söylenir.
3. sql ile ilişkiler kurabilirsiniz tablolar arası. örneğin aynı satırda ben bir sipariş alabilirim fakat 10 kalem varsa 10 tanesine de aynı bilgileri defalarca girmek zorundayım. fakat sql ile 127 nolu siparişin sipariş kalemlerini başka bir tabloda tutabilirim. c# ile ise iki ayrı tabloyu birleşik gösterebilirim, istediğim sütunların görülmesini ya da görülmemesini sağlayabilirim. bunlar daha benim bildiğim işin giriş kısımları.
sql'i de temel seviyede öğrendikten sonra c# içinde tablolardan veri çekmeyi öğretiyorlar. pizza dükkanı satış otomasyonu, yurt otomasyonu, gibi kayıt tutulması gereken çeşitli uygulamalar yapıyorsunuz.
daha sonra ise dev express diye bir uzantı öğretiyorlar. dev express kendi başına bir uygulama değil. c#'ın yazıldığı visual studio içinde bir uzantı aslında. fakat adamlar öyle bir uzantı yapmış ki içinde yok yok. yüzlerce simge arşivinden, kendine ait çok gelişmiş arac kutusuna her şey var içinde. visual studio'nun kendi araç kutusundaki nesneler 90'lardan kalma gibi. fakat dev express içinde modern arayüze uygun bir sürü araç var. örneğin office programlarında falan görülen ribbon menüler kolayca eklenip kullanılabiliyor. içerisinde chart denilen analiz ve istatistik araçları da çok gelişmiş. yaptığınız uygulama bir anda modern bir arayüze çok kolay kavuşuyor. hatta google haritalar gibi harita eklemek, side bar eklemek ve çok daha fazlası mümkün.
bunları da biraz özümsedikten sonra bizim aslında bilmeden kullandığımız class yapıları, method yapıları gibi bunları oluşturup oop felsefesine göre kullanmayı öğretiyorlar. oop nesne yönelimli programlama demek. ama benim de uzun dönem yanlış anladığım buton, listbox gibi nesnelerden bahsetmiyorlar. yazılımın verimli kullanılması diyeyim kısaca. örneğin aynı kodları yüzlerce defa tekrar etmek yerine bir method ya da class yazmak o kodları sürekli tekrarlamayı azaltıyor.
class method, veri tiplerini de iyice özümseyince size bir yazılımcının asıl yazılım yapma şeklini anlatıyorlar. buna da katmanlı mimari deniliyor. aslında bunun da kökü pattern design. bu konu şöyle şöyle yapacaksın şeklinde bir ezberlemekten ziyade bazı problemlerin giderilmesini amaçlamak. bir diğer faydası da projeye sonradan giren birinin hangi kodun nerde olduğunu önceden bilebilmesini sağlamak. çok katmanlı mimari dedikleri ise 2 katmandan başlayıp projenin ihtiyacına göre artarak gidiyor. temel amaçlar:
1. katmanların düzenlilik getirmesi ve verimi arttırması.
2. son kullanıcının, önemli kayıtların olduğu veritabanına direkt erişememesi.
3. güvenlik ve şifreleme yöntemleri.
4. yazılacak classlar ve methodlar katmanları ile programın içinde standardizasyonun yakalanması.
bu çok katmanlı mimari, patern dizayn konusuna ben de daha geçemedim ama ana yapısı böyle kabaca.
yani demem o ki butona basıp hello world yazdırarak sizin ağzınıza bir parmak bal çalıyorlar. kazığın yalnızca ucu sivridir, gittikçe kalınlaşır diye boşuna demiyorlar. (bkz: swh)
ben neden öğreniyorum peki? bizim sektörün ihtiyacına uygun iş takip yazılımı yok çünkü. yazılımı bir kere öğrendiğinizde kendi ihtiyacınıza uygun organizer de yapabilirsiniz, bir işyerinin iş takip otomasyonunu da yazabilirsiniz, elektronik bilginiz varsa bilgisayardan mikroişlemcilere gönderilecek veriler için arayüz de yazabilirsiniz. örneğin ben ilerde evime akıllı otomasyon yapacağım çeşit çeşit mobil yazılımlarla birleştirip ama her şey kademe kademe. eve otomatik perde takmaktan evinize yaklaşırken kombi açtırmaya, insan odaklı aydınlatma tasarımından evde merkezi bir ses siatemi kullanmaya kadar geniş yelpazede kaba ayardan ince ayara birçok şey yapabilirsiniz kablosuz.
bu noktada benim biraz da mekanik bilgisone ihtiyacım var. mekanik bilgisi fazla yok ama onu da ilerde öğreniriz. odam gittikçe daralıyor, tv, dolap gibi şeylerin yukarı yükseltilmesi gerekli tek tuşla. güzel hayaller bunlar tabi. daha da güzeli imkansız değil. örneğin duvara panel yerleştirip bilgisayarı da aradan kaldırabilirsiniz. ısıtma, havalandırma, aydınlatma gibi şeylerin kontrolünü de yapabilirsiniz bunlarla. hayal ettiğiniz kadar mümkün her şey.
öncelikle ben murat yücedağ'ın youtube videoları ile ilerliyorum. hatta daha dün yeni bir c# serisine de başladı. ilgilenenlere tavsiye ederim. alanında gerçekten profesyonel birisi.
sonracığma bu yazılım işine ilk başladığınızda genelde dos ekranı gibi görünen siyah ekranda sıkıcı aritmetik işlerle başlıyorsunuz.
sonra arayüz tasarlayabileceğiniz form denilen pencerelerde butonlar ve metin kutuları koyup basit ama zevkli fonksiyonlar işliyorsunuz. bu fonksiyonlar ya da operatörleri öğrenmesi ahım şahım şeyler değil ama her programlama dilinde olan temel ve sık kullanılan şeyler.
burada hesap makinesi yapmak, oyun yapmak gibi veri tabanı kullanmanıza gerek kalmayan, çok da zor olmayan uygulamalar yapıyorsunuz. ben bu noktada parantezlere takılmıştım. internette c# ile hesap makinesi yapmayı öğreten birçok video bulabilirsiniz fakat parantez de kullanılabilen bulamadım. fakat alakasız bir videoda bulduğum fonksiyon çok isime yaradı. işi bir tık daha ilerletip butonlara ses koydum, hesap makinesinin temasını değiştirebilme özellikleri ekledim. şu an pc'de lazım olunca kendi hesap makinemi kullanıyorum. evet basit bir hesap makinesi yaptığım şey fakat onu yaparken if else'den, for döngüsüne, pencere/formun köşelerini yuvarlatmaktan, standart windowsun kapat, simge duruma küçült, ekranı kapla butonlarının olduğu üst kısmı kaldırıp kendi tasarladığın butonları koymaktan formun kendisini mouse ile taşıyabilmeye birçok şey öğrendim.
bunlardan sonra sql denilen veritabanı oluşturma yazılımını öğretiyorlar. nedir bu sql? excel programının gelişmişidir. c# içinde komutları yürütürsünüz fakat hafızası yoktur. programı kapatıp tekrar açtığınızda sıfırlanır. neden excel kullanmıyoruz?
1. excel'den de veri çekebilirsiniz. fakat bir excel dosyayı ağda paylaştırdığınızda sadece 1 kullanıcıya hizmet verebilir. sql'de ise ağdan herkes girebilir aynı anda. zaten sql server olarak geçer. programı açtığınızda da connect diye bağlanma dialog kutuları çıkar.
2. excelde değil zaten sql'in muadili access programıdır fakat access'in büyük uygulamalara yetişemeyeceği söylenir.
3. sql ile ilişkiler kurabilirsiniz tablolar arası. örneğin aynı satırda ben bir sipariş alabilirim fakat 10 kalem varsa 10 tanesine de aynı bilgileri defalarca girmek zorundayım. fakat sql ile 127 nolu siparişin sipariş kalemlerini başka bir tabloda tutabilirim. c# ile ise iki ayrı tabloyu birleşik gösterebilirim, istediğim sütunların görülmesini ya da görülmemesini sağlayabilirim. bunlar daha benim bildiğim işin giriş kısımları.
sql'i de temel seviyede öğrendikten sonra c# içinde tablolardan veri çekmeyi öğretiyorlar. pizza dükkanı satış otomasyonu, yurt otomasyonu, gibi kayıt tutulması gereken çeşitli uygulamalar yapıyorsunuz.
daha sonra ise dev express diye bir uzantı öğretiyorlar. dev express kendi başına bir uygulama değil. c#'ın yazıldığı visual studio içinde bir uzantı aslında. fakat adamlar öyle bir uzantı yapmış ki içinde yok yok. yüzlerce simge arşivinden, kendine ait çok gelişmiş arac kutusuna her şey var içinde. visual studio'nun kendi araç kutusundaki nesneler 90'lardan kalma gibi. fakat dev express içinde modern arayüze uygun bir sürü araç var. örneğin office programlarında falan görülen ribbon menüler kolayca eklenip kullanılabiliyor. içerisinde chart denilen analiz ve istatistik araçları da çok gelişmiş. yaptığınız uygulama bir anda modern bir arayüze çok kolay kavuşuyor. hatta google haritalar gibi harita eklemek, side bar eklemek ve çok daha fazlası mümkün.
bunları da biraz özümsedikten sonra bizim aslında bilmeden kullandığımız class yapıları, method yapıları gibi bunları oluşturup oop felsefesine göre kullanmayı öğretiyorlar. oop nesne yönelimli programlama demek. ama benim de uzun dönem yanlış anladığım buton, listbox gibi nesnelerden bahsetmiyorlar. yazılımın verimli kullanılması diyeyim kısaca. örneğin aynı kodları yüzlerce defa tekrar etmek yerine bir method ya da class yazmak o kodları sürekli tekrarlamayı azaltıyor.
class method, veri tiplerini de iyice özümseyince size bir yazılımcının asıl yazılım yapma şeklini anlatıyorlar. buna da katmanlı mimari deniliyor. aslında bunun da kökü pattern design. bu konu şöyle şöyle yapacaksın şeklinde bir ezberlemekten ziyade bazı problemlerin giderilmesini amaçlamak. bir diğer faydası da projeye sonradan giren birinin hangi kodun nerde olduğunu önceden bilebilmesini sağlamak. çok katmanlı mimari dedikleri ise 2 katmandan başlayıp projenin ihtiyacına göre artarak gidiyor. temel amaçlar:
1. katmanların düzenlilik getirmesi ve verimi arttırması.
2. son kullanıcının, önemli kayıtların olduğu veritabanına direkt erişememesi.
3. güvenlik ve şifreleme yöntemleri.
4. yazılacak classlar ve methodlar katmanları ile programın içinde standardizasyonun yakalanması.
bu çok katmanlı mimari, patern dizayn konusuna ben de daha geçemedim ama ana yapısı böyle kabaca.
yani demem o ki butona basıp hello world yazdırarak sizin ağzınıza bir parmak bal çalıyorlar. kazığın yalnızca ucu sivridir, gittikçe kalınlaşır diye boşuna demiyorlar. (bkz: swh)
ben neden öğreniyorum peki? bizim sektörün ihtiyacına uygun iş takip yazılımı yok çünkü. yazılımı bir kere öğrendiğinizde kendi ihtiyacınıza uygun organizer de yapabilirsiniz, bir işyerinin iş takip otomasyonunu da yazabilirsiniz, elektronik bilginiz varsa bilgisayardan mikroişlemcilere gönderilecek veriler için arayüz de yazabilirsiniz. örneğin ben ilerde evime akıllı otomasyon yapacağım çeşit çeşit mobil yazılımlarla birleştirip ama her şey kademe kademe. eve otomatik perde takmaktan evinize yaklaşırken kombi açtırmaya, insan odaklı aydınlatma tasarımından evde merkezi bir ses siatemi kullanmaya kadar geniş yelpazede kaba ayardan ince ayara birçok şey yapabilirsiniz kablosuz.
bu noktada benim biraz da mekanik bilgisone ihtiyacım var. mekanik bilgisi fazla yok ama onu da ilerde öğreniriz. odam gittikçe daralıyor, tv, dolap gibi şeylerin yukarı yükseltilmesi gerekli tek tuşla. güzel hayaller bunlar tabi. daha da güzeli imkansız değil. örneğin duvara panel yerleştirip bilgisayarı da aradan kaldırabilirsiniz. ısıtma, havalandırma, aydınlatma gibi şeylerin kontrolünü de yapabilirsiniz bunlarla. hayal ettiğiniz kadar mümkün her şey.
devamını gör...
18.
öğrenmeye devam ettiğim yazılım şeysi.
bu ara youtube'da murat yücedağ yeni seriye başladı. 3 ders falan oldu. bütün dersleri takip edip github'a yüklersek sertifika vereceği vaadi ile beni de kandırdı. tavsiye ederim.
kendi üretim ve iş takip programımı yapıyorum bir yandan da. güzel gidiyor fena değil. şu an ürün reçetesi oluşturmak için gerekli tabloları yapıyorum. bir tane de ana kalem malzemeler için tablo yaptım. onun formunu c#'da uşturdum güzel fena değil.
bu ara youtube'da murat yücedağ yeni seriye başladı. 3 ders falan oldu. bütün dersleri takip edip github'a yüklersek sertifika vereceği vaadi ile beni de kandırdı. tavsiye ederim.
kendi üretim ve iş takip programımı yapıyorum bir yandan da. güzel gidiyor fena değil. şu an ürün reçetesi oluşturmak için gerekli tabloları yapıyorum. bir tane de ana kalem malzemeler için tablo yaptım. onun formunu c#'da uşturdum güzel fena değil.
devamını gör...
19.
microsoftun çıkardığı yazılım dili, sektörde sıklıkla yer alan bir dil aynı zamanda.
murat yücedağ adlı yazılımcı üniversite müfredatına göre sıfırdan ders videolarına başlamış, bende tam bu şekil müfredata uygun çeken birini aramıştım ama bulamamıştım. haftada 2 video gelecekmiş. daha başlamadım ama zaten temel biraz var, ilk 2 videoyu izlerim yarın ya da bugün, hafta sonuda izledin mi yetişirim.
murat yücedağ adlı yazılımcı üniversite müfredatına göre sıfırdan ders videolarına başlamış, bende tam bu şekil müfredata uygun çeken birini aramıştım ama bulamamıştım. haftada 2 video gelecekmiş. daha başlamadım ama zaten temel biraz var, ilk 2 videoyu izlerim yarın ya da bugün, hafta sonuda izledin mi yetişirim.
devamını gör...
20.
yine garip garip şeyler öğrendiğim yazım şeysi.
şimdi hacım metot diye bir şey var. alt program bildiğin. sık tekrarlayacağın satırları bunun içine atıyomuşun. lafın gelişi 100 satırlık bir bloğu 30 yerde kullanacaksanız bunu metot yapıyonuz 130 satıra düşüyor 3000 satırdan. kod karmaşasını da azaltıyor.
iki türü varmış bunun. geriye değer döndüren ve geriye değer döndürmeyen metotlar. değer döndüren metotlar bildiğin formül hesaplatmak gibi bir şey. sen bilgileri veriyorsun o da sana hesaplayıp bir değer veriyor. değer döndürmeyen ise kodlardaki görevi yapıp geçiyor.
kısıtlamalara da kapsülleme diyorlar. örneğin tc no 11 hane. 10 hane girilmemesini istemek bir kapsülleme. ya da bütün harflerin büyük olmasını veya kullanıcının sadece sayı girebilmesi gibi kısıtlamalar.
class diye bir konu var ama anlatması sıkıntılı bir şey. özetle yeni bir şey yapacaksın ama bu yeni şeyin özellikleri sana tanımlanmış olarak geliyor bu class dediğimiz şeyi oluşturunca. örneğin bir satış elemanı olsaydınız müşteriden isteyeceğiniz bilgiler genel olarak aynı olurdu. hangi ürün, kaç adet, 1 ürün kaç para, sevkiyat adresi neresi, fatura adresi ile sevkiyat adresi aynı mı, yurt içi mi, yurtdışı mı, para birimi ney gibi soruları her müşteriye sorman gerekli. class yapısı diyor ki sen bunları sürekli tanımlayıp durma. bir kere tanımla ama hep kullan. ürün için metinsel tip kullanacağın belli olsun, adet için sayısal tip kullanacağın belli olsun. hatta içine metot da yazalım toplam tutarı da yazsın, kdv de koysun. buna class diyorlar. bu yapı her şeye uygulanır.
örneğin silahlı bir oyunda çeşit çeşit silahlar olsun. 12 numaralı silahı oyunda elde ettiğinde aslında sana verilen şey bir class. silahta yaptığınız özelleştirmeler ise property yani kabaca parametreleri oluyor. oyunun yazılımı sürekli sürekli sıfırdan silah kodlamıyor yani doğal olarak. lazım olunca o class dosyasına başvuruyor. hatta yanlış anlamadıysam bu class'ları sonra isteyen kullanabilsin diye dll formatına çeviriyorlar. bilgisayarda illaki dll dosyası bulunamadı hatası almışsınızdır.
bu class'lar ayrı bir dosya. fakat projenizden bağımsız değil. zaten yeni bir proje açtığınızda 1 tane içine buton şu bu koymalık form/pencere görseniz bile aslında projeniz bir solution explorer ya da türkçesiyle çözüm gezgini içindedir. örneğin exceldeki her bir sayfa bir form/pencereye denk geliyor. solution explorer içinde bir sürü form açabilirsiniz. esasen formlar da bir class. veritabanına yaptığınız sorgu/datasetler, uygulamanızda kullandığınız resim ve sesler, uygulamanızı son kullanıcı için yaptığınız paketlemeler, dışardan aldığınız referanslar falan hepsi bu solution explorer'da bulunur.
class'ı bir kere yazdığınızda istediğiniz form/pencerenin içinde kullanabiliyorsunuz demiştik. fakat bunun olabilmesi için herkese açık olsun ya da olmasın diye public/private ayarları var.
bir de inheritance/miras diye bir şey var. bu c#ta bir class'ın içinde başka bir class kullanabiliyorsun. miras dedikleri de bu galiba. çok emin değilim.
class konusu üzerinde çok durmamın sebebi o butonlar veya çeşit çeşit tool'lar hep class aslında. hatta visual studio'nun içindeki tool'lar devexpress'teki seti görünce tırt geliyor.
çizim yaptıracaksanız çizim class'ını ekliyorsunuz ya da yapay zeka sınıfı ekleyip siri gibi kullanabiliyorsunuz. yapay zeka var ama veri seti olmadığı için insanda "gerizekalı bu herhalde " hissiyatı yaşatıyor.
şimdi hacım metot diye bir şey var. alt program bildiğin. sık tekrarlayacağın satırları bunun içine atıyomuşun. lafın gelişi 100 satırlık bir bloğu 30 yerde kullanacaksanız bunu metot yapıyonuz 130 satıra düşüyor 3000 satırdan. kod karmaşasını da azaltıyor.
iki türü varmış bunun. geriye değer döndüren ve geriye değer döndürmeyen metotlar. değer döndüren metotlar bildiğin formül hesaplatmak gibi bir şey. sen bilgileri veriyorsun o da sana hesaplayıp bir değer veriyor. değer döndürmeyen ise kodlardaki görevi yapıp geçiyor.
kısıtlamalara da kapsülleme diyorlar. örneğin tc no 11 hane. 10 hane girilmemesini istemek bir kapsülleme. ya da bütün harflerin büyük olmasını veya kullanıcının sadece sayı girebilmesi gibi kısıtlamalar.
class diye bir konu var ama anlatması sıkıntılı bir şey. özetle yeni bir şey yapacaksın ama bu yeni şeyin özellikleri sana tanımlanmış olarak geliyor bu class dediğimiz şeyi oluşturunca. örneğin bir satış elemanı olsaydınız müşteriden isteyeceğiniz bilgiler genel olarak aynı olurdu. hangi ürün, kaç adet, 1 ürün kaç para, sevkiyat adresi neresi, fatura adresi ile sevkiyat adresi aynı mı, yurt içi mi, yurtdışı mı, para birimi ney gibi soruları her müşteriye sorman gerekli. class yapısı diyor ki sen bunları sürekli tanımlayıp durma. bir kere tanımla ama hep kullan. ürün için metinsel tip kullanacağın belli olsun, adet için sayısal tip kullanacağın belli olsun. hatta içine metot da yazalım toplam tutarı da yazsın, kdv de koysun. buna class diyorlar. bu yapı her şeye uygulanır.
örneğin silahlı bir oyunda çeşit çeşit silahlar olsun. 12 numaralı silahı oyunda elde ettiğinde aslında sana verilen şey bir class. silahta yaptığınız özelleştirmeler ise property yani kabaca parametreleri oluyor. oyunun yazılımı sürekli sürekli sıfırdan silah kodlamıyor yani doğal olarak. lazım olunca o class dosyasına başvuruyor. hatta yanlış anlamadıysam bu class'ları sonra isteyen kullanabilsin diye dll formatına çeviriyorlar. bilgisayarda illaki dll dosyası bulunamadı hatası almışsınızdır.
bu class'lar ayrı bir dosya. fakat projenizden bağımsız değil. zaten yeni bir proje açtığınızda 1 tane içine buton şu bu koymalık form/pencere görseniz bile aslında projeniz bir solution explorer ya da türkçesiyle çözüm gezgini içindedir. örneğin exceldeki her bir sayfa bir form/pencereye denk geliyor. solution explorer içinde bir sürü form açabilirsiniz. esasen formlar da bir class. veritabanına yaptığınız sorgu/datasetler, uygulamanızda kullandığınız resim ve sesler, uygulamanızı son kullanıcı için yaptığınız paketlemeler, dışardan aldığınız referanslar falan hepsi bu solution explorer'da bulunur.
class'ı bir kere yazdığınızda istediğiniz form/pencerenin içinde kullanabiliyorsunuz demiştik. fakat bunun olabilmesi için herkese açık olsun ya da olmasın diye public/private ayarları var.
bir de inheritance/miras diye bir şey var. bu c#ta bir class'ın içinde başka bir class kullanabiliyorsun. miras dedikleri de bu galiba. çok emin değilim.
class konusu üzerinde çok durmamın sebebi o butonlar veya çeşit çeşit tool'lar hep class aslında. hatta visual studio'nun içindeki tool'lar devexpress'teki seti görünce tırt geliyor.
çizim yaptıracaksanız çizim class'ını ekliyorsunuz ya da yapay zeka sınıfı ekleyip siri gibi kullanabiliyorsunuz. yapay zeka var ama veri seti olmadığı için insanda "gerizekalı bu herhalde " hissiyatı yaşatıyor.
devamını gör...