İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# Bilenler Buraya :)

mcht_z13.03.201129 cevap6.771 görüntüleme
2010'den beri239 mesaj
#1
Arkadaşlar C++ ile C# karşılaştırması yapacağım bir arkadaşla konusu geçti de.

Ricam:

C# ile bir pencere oluşturup üzerine iki buton koyun ilk butona basıldığına arka plan rengi kırmızı olan yeni bir pencere, ikinci butona basıldığında ise yeni mavi bir pencere oluşsun. Böyle bir programı compile etmenizi rica ediyorum. Benim exe ile karşılaştıracağım. Teşekkürler...

Benim exe:

http://www.2shared.com/file/YItseNYW/homework1.html
Cevaplar
2007'den beri29 bin mesaj
#2
Ben kendimi pek biliyor saymıyorum ama bakayım, her basışta yeni mi yaratılacak form? 10 kere bassan 10 tane form mu çıkacak?
mcht_z Konuyu açan
2010'den beri239 mesaj
#3
__kadıköyRAP__ dedi: ↑
Ben kendimi pek biliyor saymıyorum ama bakayım, her basışta yeni mi yaratılacak form? 10 kere bassan 10 tane form mu çıkacak?
Evet 1000 kere de olsa yeni pencere çıkacak. Bellek hata verene kadar.
2007'den beri29 bin mesaj
#4
O zaman daha iyi bilenler baksın :D
Ben de öğrenme amaçlı araştırıyorum :)
mcht_z Konuyu açan
2010'den beri239 mesaj
#5
Sen de yap bir şeyler alıştırma olur madem :) birer tane oluştursun ona da bakalım :) benim exeyi de birinci mesaja ekliyorum bakarsınız :)
2007'den beri29 bin mesaj
#6
Benim gördüğüm ve örneklerde olan hep arayüzden yeni form ekleme ve kod kısmında Form2 newform = new Form2 show newform falan diyerek yapılmış, hiç dinamik butona bağlı olarak var edilen örnek yok :)

C++ ve C# 'ı nasıl karşılaştıracaksınız hangisi kaç tane form açacak max. ona mı bakacaksınız?
mcht_z Konuyu açan
2010'den beri239 mesaj
#7
Bellek kullanımı, hangisi ne zaman şişiyor, ilk tıkladığındaki bekleme süresi vs. :)
2007'den beri99 mesaj
#8
sana karşılaştırmadan diyim c# daha önce patlar çünkü framework üzerinde çalışıyo c++ direk makinede ondan c++ daha iyi sonuç verir ama c# daki kod kolaylığı yanında bu snn yaptığın performans testi devede kulak kalır.
mcht_z Konuyu açan
2010'den beri239 mesaj
#9
ozkan370 dedi: ↑
sana karşılaştırmadan diyim c# daha önce patlar çünkü framework üzerinde çalışıyo c++ direk makinede ondan c++ daha iyi sonuç verir ama c# daki kod kolaylığı yanında bu snn yaptığın performans testi devede kulak kalır.
Evet doğru tespit :) bunu gerçeklemek için açtım konuyu zaten. Kod yazma sıkıntısı dediğin gibi çok ciddi şekilde zor c# a göre ama C++'ın artılarını da biliyoruz :) Kod yazmaktan zevk alan benim gibi mazoşist tiplere tavsiyemdir :p
2008'den beri95 mesaj
#11
http://www.2shared.com/file/myItU6sR/WindowsFormsApplication2_relea.html

ram optimizasyonu felan yapmadim ama... toplam 20 saniyede yazilmistir

ama senin karsilastirmak istedigin diller degil, kullanilan library ler, veya programlama katmanlari... yani dotnet vs native winapi.
Yine belirtmek gerekirki, c++ ilede dotnet application lari yazmak mümkün. its all a matter of preference :/

bellek kullanimi veya acilma süresini karsilastirman, ancak asiri büyük projelerde, belki , bi rol oynar. Deginilmesi gereken baska bir nokta ise, dotnet de yapilan gui islemleri tabiki performans olarak daha yavas kalacaktir, ama kazandirdigi zaman paha bicilmez.
mcht_z Konuyu açan
2010'den beri239 mesaj
#12
Çok teşekkür ederim. İlgili incelemelerimi yapar burada paylaşırım. Sonuç belli de bir aktivite yapmış olalım:)

---------- Post added at 03:07 ---------- Previous post was at 02:49 ----------

just-ice dedi: ↑
http://www.2shared.com/file/myItU6sR/WindowsFormsApplication2_relea.html

ram optimizasyonu felan yapmadim ama... toplam 20 saniyede yazilmistir

ama senin karsilastirmak istedigin diller degil, kullanilan library ler, veya programlama katmanlari... yani dotnet vs native winapi.
Yine belirtmek gerekirki, c++ ilede dotnet application lari yazmak mümkün. its all a matter of preference :/

bellek kullanimi veya acilma süresini karsilastirman, ancak asiri büyük projelerde, belki , bi rol oynar. Deginilmesi gereken baska bir nokta ise, dotnet de yapilan gui islemleri tabiki performans olarak daha yavas kalacaktir, ama kazandirdigi zaman paha bicilmez.
Çok sağolun beni kırmadığınız için arkadaşlar. Zaten dediğim gibi bir mucize beklemiyoruz testten. Patlatma testi de yapacağım da ilk etapta gözlem şu şekilde:

C++ Bellek Kullanımı : 1308 kb 20 pencere açıkken 1356 kb
C# (ozkan370) : 3736kb 20 pencere açıkken 4632 kb
C# (just-ice) : 4060 kb 20 pencere açıkken 4984 kb
2008'den beri117 mesaj
#13
Birde .Net'te Garbage Collection diye bir fonksiyon var. Program tarafından üretilmiş fakat artık kullanılmamasına rağmen hafızada yer kaplamaya devam eden nesnelerin hafızadan temizlenerek hafızanın şişmesini önlemede kullanılıyor. Garbage Collection fonksiyonunu program tarafından çağırabilirsin fakat bunun ne zaman kullanılacağına yine .NET karar verir...
http://rapidshare.com/files/452265947/pencere.exe
görev yöneticisindeki işlemlerden pencereler artmaya başlayınca program hafızasının artmaya başladığını göreceksin. Pencereleri kapatıp "call Garbage Collection" butonuna basınca fonksiyon çalışıyor, ama dediğim gibi hafızanın ne zaman temizleneceğine .Net karar veriyor.
mcht_z Konuyu açan
2010'den beri239 mesaj
#14
c++ da .netframework'u pek tutulmuyor anladığım kadarıyla. ben de öğrenci sayılırım programlamada. en iyi programcı olmak en iyi deneyime sahip olmak için hangi dil diye çok araştırdım çok kafa yordum c++'a yöneldim ama aklım c#'ta takılı kalmıyor da değil tabi..

---------- Post added at 03:17 ---------- Previous post was at 03:10 ----------

fatih2012 dedi: ↑
Birde .Net'te Garbage Collection diye bir fonksiyon var. Program tarafından üretilmiş fakat artık kullanılmamasına rağmen hafızada yer kaplamaya devam eden nesnelerin hafızadan temizlenerek hafızanın şişmesini önlemede kullanılıyor. Garbage Collection fonksiyonunu program tarafından çağırabilirsin fakat bunun ne zaman kullanılacağına yine .NET karar verir...
http://rapidshare.com/files/452265947/pencere.exe
görev yöneticisindeki işlemlerden pencereler artmaya başlayınca program hafızasının artmaya başladığını göreceksin. Pencereleri kapatıp "call Garbage Collection" butonuna basınca fonksiyon çalışıyor, ama dediğim gibi hafızanın ne zaman temizleneceğine .Net karar veriyor.
Sağolasın örneğin için. Bizde öyle değil temizleme işini tek tek elle yapıyoruz :)
2008'den beri117 mesaj
#15
Evet o cefayı çekmek istemediğimden .net 'e yöneldim. :) :)
mcht_z Konuyu açan
2010'den beri239 mesaj
#16
Bilenler biliyordur ne kadar kod yazdığımı bu ufak örnek için :( programcılığa birkaç dostum sayesinde c/c++ ile başladım ve öyle devam ediyorum ama hep kafamda c# ya da java vardı. Bu arkadaşlarım öyle güçlü etkilediler ki beni bu kadar cefaya da katlanıyorum. Birileri çıksa da beni c# ve .net platformuna itse :p

İşin şakası tam ikilem her birinin tonlarca avantajı var neyi seçeceğini şaşırıyor insan :(
2008'den beri117 mesaj
#17
evet, Java ve c# bulundukları platformlar dolayısıyla c/c++ dan ayrılıyorlar.
Bir kod .net de compile edildiğinde native bir exe oluşmaz. Sadece MSIL kodları vardır içlerinde. exe'ye tıklandığında CLR, exe'deki MSIL kodlarını okuyarak gerçek makine kodlarına dönüştürür ve çalıştırılar. Java'da da buna benzer bir sistem olsa gerek.
Sonuçta kulladığın dil ve teknolojileri geliştirmek istediğin programa/projeye göre şekillendirmelisin derim.
2007'den beri29 bin mesaj
#18
Ben her yeni çıkacak olan formun farklı bi ad alması gerekir diye düşündüğümden bu yolu denememiştim bile, kodlar için sağolun :)

Bu kadarcıkmış meğer :D
Form frm = new Form();
frm.BackColor = Color.Blue;
frm.StartPosition = FormStartPosition.Manual;
frm.DesktopLocation = new Point(500, 400);
frm.Show();
2009'den beri149 mesaj
#19
Kullanacağın dili yapacağın işe göre seçmen daha iyi olur. Mesela; ticari program geliştireceksen, veritabanına kaydedip ekrana sunacaksan neden C++ da kendine işkence edesin ki? Ama mesela C++'ın QT framework üde var. Baya kolaylık sağlıyor ve işletim sistemi bağımsız. Bir çok İS için framework ü var. Ama yinede sen sadece Windows ve ticari geliştireceksen C# öneririm. Yok ben daha derine ineceğim sistem programlama yapacağım diyorsan C++ bu iş için iyidir. Bu tarz kriterlerle yolunu çizmen daha iyi olur gibime geliyor
mcht_z Konuyu açan
2010'den beri239 mesaj
#20
mjsamet dedi: ↑
Kullanacağın dili yapacağın işe göre seçmen daha iyi olur. Mesela; ticari program geliştireceksen, veritabanına kaydedip ekrana sunacaksan neden C++ da kendine işkence edesin ki? Ama mesela C++'ın QT framework üde var. Baya kolaylık sağlıyor ve işletim sistemi bağımsız. Bir çok İS için framework ü var. Ama yinede sen sadece Windows ve ticari geliştireceksen C# öneririm. Yok ben daha derine ineceğim sistem programlama yapacağım diyorsan C++ bu iş için iyidir. Bu tarz kriterlerle yolunu çizmen daha iyi olur gibime geliyor
Şu an öğrenciyim ileride önüme neler çıkacak programlamayı ne şekilde geliştireceğimi bilmiyorum yani bir şirkette programcı olarak çalışma hedefim var ve bir programcı olarak programlamanın özünü bilmek, programcılığı derinlemesine bilmek istiyorum. Hangi dil bana bunu sağlayacaksa ben o dili kullanırım. Bunu sağlayan en kolay öğrenebilen dili de seçebilirim kendime. Önemli olan burada optimumu yakalamak.

---------- Post added at 19:09 ---------- Previous post was at 19:08 ----------

__kadıköyRAP__ dedi: ↑
Ben her yeni çıkacak olan formun farklı bi ad alması gerekir diye düşündüğümden bu yolu denememiştim bile, kodlar için sağolun :)

Bu kadarcıkmış meğer :D
Form frm = new Form();
frm.BackColor = Color.Blue;
frm.StartPosition = FormStartPosition.Manual;
frm.DesktopLocation = new Point(500, 400);
frm.Show();
Sana benim kodu gösterirsem dudakların uçuklar :D
2007'den beri29 bin mesaj
#21
C++ gereği o napalım :D
2009'den beri149 mesaj
#22
mcht_z arkadaşım. Programlama nedir? Mesela bir insan gününü programlar, bir etkinliği programlar, gelir bir gün bir bilgisayarı programlar. Yapılan iş aynıdır programlamak. Yani programlama tam olarak bir bilg. prog. diliyle yapılan bir şey değildir. Bir aracıdır programlama dili. Yani "ben programlama öğreneceğim bunun içinde bu dili öğrenmem gerekiyor" yaklaşımı bence yanlıştır. Sen programlamayı herhangi bir dil ile öğrenebilirsin. Öğrendikten sonra yapacağın işlere göre de dil seçimini yaparsın. Programlamayı iyi yapmak istiyorum diyorsan, çok sayıda probleme sürekli çözümler geliştirmen lazımdır. İlk başladığın probleme 100 satırlık çözüm getirirken gün geçtikçe daha da azaltacaksındır. Programlamayı öğrenmek istiyorsan C# senin için iyi olacaktır. Nede olsa %100 nesne yönelimli. Ve nesne yönelimli programlama zamanımızın yöntemi ayrıca güzel bir sistemdir. Bunla başlarsan bakış açın daha da geniş olur bence.
2008'den beri3.195 mesaj
#23
@mcht_z : kardeş... C/C++ iyidir diyoruz. Çünkü hakimiyet sendedir. Frameworklerin hız/bandwith/collector kapasitelerine takılmazsın. Platformla fazla uğraşmazsın.
#ifdef
#ifndef
#endif
ile istediğin platform için uygulama yazarsın.

C/C++ bilsen, üzerinde 2 sene harcasan ve oldu ki C# a geçmek istesen ne olur. Veya Java ya.. Veya Python ' a... Hatta PHP ye :)
Sana olacak olanı yazayım. Abartısız 20-25 dakika da istediğin dili çözersin. :)

Edit: Bu arada Hiçbir dile takılmamak gerektiği görüşüne katılıyorum. Akıllı adam, işini en kolay çözen aleti kullanır.

Çekiç ile toprağı gerçek anlamda kazamazsın değil mi bu da öyle bir durum arz ediyor. Eldeki iş için, doğru aracı kullanmak gerek.

Bir de işin şu yönü var. Elimin altında C gibi bir Shelby Cobra varken, benim Tofaş' la ne işim olur :D (Abarttım mı ) :D

İkinci edit: Neden C/C++: Ben alt düzey programlar yazan bir insanım. Bu yüzden bir lisanslama, ya da son kullanıcı hizmeti olmadıkça diğer yapılara bulaşmıyorum. Bulaşamıyorum desem daha doğru olur, çünkü işimi görmüyor. Ancak arada iş olmazsa, hobi olarak Java' ya bakmıyor değilem :D
mcht_z Konuyu açan
2010'den beri239 mesaj
#24
Abi ben bir karar aldım :) Doğru mu yanlış mı bilemiyorum fakat şöyle:

Her öğrendiğim şeyi ilk önce C/C++ ile hemen ardından da C# ile uygulama yapacağım. Bunu şöyle bir itici güç olması nedeniyle düşündüm; mesela bana şu şu şu işlemleri yapan ufak bir program yaz dedin. Ben bunu C++ ile yazmaya çalışacağım yazıp mükemmeli gördüysem ne ala ama yapamayıp tıkanıp kalırsam C#'ta yapıp genel mantığı oturttuktan sonra C++ ile o mantıktan hareketle çalışacağım.

Böylelikle hem bir örneği iki dille tatbik edecek hem de ah si şarp mah si şarp demeden iş üstünde olacağım :) Nasıl işe yarar mı?

Edit: Tofaştan kastın C# ise onu şuan ben bilemiyorum ama C# çılar görmesin :mrgreen:
2008'den beri4.234 mesaj
#25
ozkan370 dedi: ↑
sana karşılaştırmadan diyim c# daha önce patlar çünkü framework üzerinde çalışıyo c++ direk makinede ondan c++ daha iyi sonuç verir ama c# daki kod kolaylığı yanında bu snn yaptığın performans testi devede kulak kalır.
Aynen katılıyorum.

C# ve WPF ile hazırlanan uygularımızın yanında senin uygulaman Super Mario gibi kalır :D Bellek yönetimine bende taktım bi ara neden bu kadar ram tüketiyor c# diye... düzgün temizleme işlemi de yapmıyor dispose ile. Ram konusunda .net gerçekten kötü.
mcht_z Konuyu açan
2010'den beri239 mesaj
#26
Ayrıca burda bir karşılaştırma yaptığımız için Qt konusun altına değil de buraya yazıyorum. Benim Qt ile tasarladığım aynı işlemi yapan exe 14mb ram kullanıyor evet yanlış duymadınız :D muhtemelen ben yanlış bir şeyler yaptığımdandır kosasker abim buna bir cevap ver lütfen Qt .netten daha beter bu ram işinde deme :(
2008'den beri3.195 mesaj
#27
İyi de bir işi iki kere neden yapıyorsun ki ?
C#da herşey nesnel. Çevir çevir kullan... Çevir çevir kullan... Uygulama alanları faklı aga? Sen önce hangi işi yapacaksın?
Atıyorum ben yarın çalıştığım yerden ayrılıp, başka bir yere gitsem ve gittiğim bu yer .Net teknolojileri kullanıyor olsa, bu sefer ben de C# a başlayacağım.

Ben sadece bu işin temelini öğrenmeyi seçtim. Halen daha yeni şeyler öğreniyorum. Artık yazılım kodlamanın yanı sıra, elektronik sinyal analizine sarmaya başladım. Bazı hedeflerim var. O doğrultuda gidiyorum. Herkes öyle yapmalı. Hedef belirlemeli ve hedefi tutturmak için gereğini yapmalı.

---------- Post added at 21:56 ---------- Previous post was at 21:55 ----------

Yok büyük ihtimalle debug modda derlemişsindir :)
mcht_z Konuyu açan
2010'den beri239 mesaj
#28
Tamam problemi buldum sanırım onu hallettim şimdi 2mb falan kullanıyor şu haliyle. İlgili kütüphaneleri upx ile sıkıştırmıştım da o yüzden böyle oldu sanırım. Aynı klasörde sıkıştırılmış dll ler ile çalıştırdığımda 14mb aynı exeyi klasörden çıkarıp masaüstünde çalıştırınca 2mb. Demek ki dll ler sıkıştırmaya gelmiyormuş :)
2010'den beri128 mesaj
#29
Çok basit :) 3 form aç 1. forma at 2 buton Formların rengini biri kırmızı biri mavi yap

1. buton click

Form2 frm=new Form2();
frm.show();

2. buton click

Form3 frm=new Form3();
frm.show();

Bas button 1 e istediğin kadar kırmızı renkli form açarsın
Bas button 2 te istediğin kadar mavi renkli form açarsın :)
mcht_z Konuyu açan
2010'den beri239 mesaj
#30
psygnosis dedi: ↑
Çok basit :) 3 form aç 1. forma at 2 buton Formların rengini biri kırmızı biri mavi yap

1. buton click

Form2 frm=new Form2();
frm.show();

2. buton click

Form3 frm=new Form3();
frm.show();

Bas button 1 e istediğin kadar kırmızı renkli form açarsın
Bas button 2 te istediğin kadar mavi renkli form açarsın :)
Teşekkürler blgilendirme için :) C#'da işler böyle :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.