C++ Nedir / Visual C++ Nedir

Başlatan yldzelektronik, 21 Ağustos 2014, 11:50:06

yldzelektronik

Selamlar,

C++ programlama dili ve Visual C++ programlama dili.

İkisi arasında nasıl farklılıklar var?

Sanıyorum visual olanı .net platformuyla alakalı.Ancak .net platform bağımlılığı getiriyor.

C++ deyince işler biraz farklılaşıyor mu?

Benim bu noktada kafam çok karıştı.Aslında belki de işler çok basittir.

Yani neticede c++ ansi diyebilmek için dilin tanımlanan standartlara uyması gerekir.vc++ ile diğerleri arasında farklılıklar olduğunu söyleyenler olmuş forum içinde.Acaba bu durum birlikte gelen kütüphaneler ile mi alakalı?

Eğer öyle ise ekstra kütüphaneler barındırması dili ansi olmaktan çıkartır mı?Yanında fazla kütüphanesi olması neden ansi kılmaz ki?

Vc++ ile yazılmış programların platform bağımlılıkları .netten geliyor diye biliyorum.Eğer öyle ise c++ ile arasında kütüphanelerden öte farklılıklar olmalı gibi geliyor.Neticede işletim sistemi üzerinde çalışan bir yapı değil mi .net?

"c++ öğrenicem nereden başlayım" cümlelerine girmek istemiyorum ama bu kafa karışıklığını da gidermek istiyorum.

Aslında mesele gui hazırlama kısmında.VS ile çok hoş şeyler yapılıyo tamam.Ama .net istemiyorum ve gui yapmak istiyorum desek ne yapıcaz?

Mesela bir de qt var.Bu nasıldır?Bu da .net gibi bir ara platform üzerinde mi çalışıyor?

Bir de şunu merak ediyorum; .net vs gibi şeyler olmadan çalışıyorsa bir program ne oluyor, .net gibi bir platform üzerinde çalışıyorsa ne oluyor?

Java gibi mi .net yoksa farklı mı?

Mesela javada bildiğim kadarıyla sanal makine var.Yazdığın java program önce o makine tarafından çevriliyo sonra çalıştırılıyo. .net benzer bişey diye okuduğumu hatırlıyorum.Ama nasıldır, nedir ne değildir tam olarak bilmiyorum.

Bu konuların detayları nedir?

Herkez bildiğinden bir cümle de olsa paylaşabilir mi?

Teşekkürler.

Not: Karışık ve hiç anlaşılmayan bir yazı olmuş olabilir.Konular hakkında bilgim olmadığından durum böyle.Sizden beklediğim de bu tip konuları nasıl, ne diye aramak gerek sorusuna cevap.Konu başlıklarını söyleseniz bile benim için büyük bir şey.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tesla.25

#1
C++ bir tanedir: ANSI C++. Dilin herşeyi belirlenmiştir. Kütüphaneler belirlenmiştir. Eğer C++ 'da yazdığınız bir program tüm paltformlarda sorunsuzca derlenip çalıştırılmasını istiyorsanız, ANSI standartlarına uymalısınız. Bu şekilde portatiflik sağlanır.

VC++ ise, aslında, .NET kütüphanelerini kullanan Microsoft tarafından biraz değiştirilmiş bir C++ türevidir. Bakın mesela, bildiğimiz C# dili de aslında çoğu kaynakta Visual C# diye geçer. Nedeni ise, herhangi bir dilin "visual" olup olmaması diye bir kavram yoktur. Dile bu özelliği katan kütüphanelerdir. İşte Visual C++ anlatan çoğu kaynağa bakın, System::Windows::Forms namespace 'ini anlatırlar. Yani butonları, menüleri falan... Tabi C++, ın .Net platformuna uyması için de Microsoft tarafından biraz değiştirilmiştir. Pointerler falan...

İşte Visual(!) olmayan bir C#:http://zetcode.com/lang/csharp/

.NET 'te Java gibi bir "Virtual Machine" üzerinde çalışır.  Herhangi bir Sanal Makine üzerinde çalışmayan programlar "native" oluyor. Yani direkt makine diline çeviriliyor.Yani önce bir ara kod, daha sonra bu ara kod makine diline çevrilme işlemi yok.  Hoş .NET Windows dışı bir yerde çalışmıyor ya, hadi neyse. ...

Ama C++ ile bir program yazdığımızda, bu program Java 'nın bile sağlayamadığı taşınabilirliği sağlar. Tek sorun, her işlemci/işletim sistemi ile derlenmesidir programın. "Bir kere yaz, heryerde derle."

Java/C#, programın çalışma hızından kaybettirip, programı yazma hızından kazandırırken;
C/C++ programın çalışma hızından kazandırır ama programın yazma hızından kaybettirir.

Qt mükemmel bir framework. En az .NET kütüphanesi kadar başarılı. Ki kendisi sadece bir GUI araç takımı değil. İçinde her türlü amaca hizmet eden sınıflar bulabilirsiniz. Şöyle diyim siz anlayın;
C#/.NET ile Visual Studio neyse, C++/Qt ile QtCreator aynı şey. :D :D

Herhangi bir dile, biz kendi ihtiyaçlarımıza göre birşeyler ekleyip çıkardığımızı düşünelim. Bu durumda dil, "standart" olmaktan çıkacaktır. O dilin bir "implementasyonu" olacaktır. Bu Java için de C++, C için de geçerli.

Hatam varsa, yüzüme vurmaktan çekinmeyin. :D


düzenleme:
Qt çatısı, "native" dir. Yani bir sanal makine üzerinde çalışmaz. Doğrudan makine diline çevrilir.

MC_Skywalker

Tesla.25 'in yazdıklarına ek olarak.
Visual C++;

Microsoft amcanın kendi pencereler işletim sitemine daha hızlı kod yazılması amacıyla geşlitirdiği bir IDE dir. içinde microsoft amcanın api, libary lerini barındırır.  bu sayede Pencere işletim siteminde pecere oluşturmak için veya onu yıkmak için kod yazmakla uğraşmazsın. Pencereler işletim sitemi senin donanımdan uzak tutuğu için onlar ancak bu apiler vb. ile eişirsin.

Yanlış hatırlamıyorsam Intel'in c++ derleyicinde sinden türetilimiştir.

.net öncesi .com dur. Java'nın işlemciden bağımsızlığına özenen ve kendi java sanal makina ile kaybettiği davalar nediniyle.  .net i çıkarmıştır.

unutmadan şunu hatırlatayım iki java vardır; bir java diğeri ise java scriptir.

normal C++ yazdığında yazdığın kod direkt derlenir ve işlemci tarafından doğrudan koşturulur.  işin içine .net girdiğinde yazdığın program sanal makinada çalıyoprmuş gibi yorumlanarak işlemciye .net tarafında koşturtulur.

mufitsozen

#3
Alıntı yapılan: Tesla.25 - 21 Ağustos 2014, 14:02:26
........Yani önce bir ara kod, daha sonra bu ara kod makine diline çevrilme işlemi yok.  Hoş .NET Windows dışı bir yerde çalışmıyor ya, hadi neyse. ...
............
Hatam varsa, yüzüme vurmaktan çekinmeyin. :D
..............


mono ile .net'in buyuk bir bolumu linux, android, solaris, bsd, ios ve hatta bazi oyun konsollarinda calisir :P

vb ve c# compilerlarida var.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Tesla.25

Mono 'yu biliyorum fakat bir hobi projesinden daha büyük birşey değil. O yüzden söylemedim.

Bu Xamarin 'in Android 'de falan çalışması ise, yine Java koduna dönüşüyor diye biliyorum. CLR yok.

yldzelektronik

Yanıtlar için teşekkürler.

Olay biraz daha netleşti gibi.

Aramızda qt kullanan var mı?Qt nasıldır,-, kolaylıkları var mıdır, dökümantasyonu falan iyi midir?

Qt de socket signal kavramları var.Bunlar nedir?Qtde işler nasıl yürüyor?

Bu arada qt türkçe çeviri kitabını okuyorum
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tesla.25

Hocam birkaç tane link vereyim:

https://eksisozluk.com/entry/39777219
https://qt-project.org/forums/viewthread/23536

Herhangi bir olay olduğu zaman bir "signal" yayınlanır.  SLOT lar ile de bu sinyal yakalanır.
Valla hocam ben Qt 'yi anlata anlata bitiremem (zaten çok derin bilgilerim yok ama). Eğer öğrenecekseniz, kesinlikle pişman etmez.

yldzelektronik

Teşekkürler.Peki qt için en mantıklı adres qt-project.org adresi midir?

Kullananlardan bildikleri başvurdukları adresleri isteyebilir miyim?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Tesla.25