C++ form app nasıl yapılır

Başlatan Neof07, 07 Aralık 2016 - 21:20:42

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Neof07

Merhaba, C++ ile form application çalışmak istiyorum.
Belki burası yeri değil ama C++.net ile ilgili bilgi aramaya çalıştım hep başlangıç var ilerisi yok. C# arasam hemen buluyorum C++ la visual studio üzerinden çalışmak istiyorum C# gibi uygulamalar yapmak istiyorum. QT 'yi pek önermiyorlar veri tabanı işlemlerinde sıkıntı varmış diye. C# la veri tabanı işlemleri çok rahat şekilde yapıyorum lakin ben C++'lada bunu yapmak istiyorum. Her türlü fikre açığım. Farklı ortamlarda varsa onlarıda öğrenebilirim.

karboran

Anladığım kadarıyla C++ ile arayüz uygulaması geliştirmek istiyorsunuz.
Linux üzerinde C++ ile QML , QT, GTK
Windows için ise aşağıdaki bağlantılar yardımcı olabilir.
https://www.quora.com/Which-is-the-best-library-to-implement-GUI-in-C++
http://www.cplusplus.com/forum/lounge/140601/
http://stackoverflow.com/questions/115045/good-c-gui-library-for-windows
Biraz okudum lakin bahsettiğiniz gibi windows üzerinde biraz sıkıntı. Bana en iyi yine QT gibi geldi tabi kara sizin.
Son olarak, amaç ürün ise C# yaz geç, C++ öğrenmek ise gel linux tarafına :), boşver visual stdio felan.
Kabin basıncı düştü motorlarda arıza !
Vakit süratle aksın hakimiyet kur nabıza !
İçinden nasıl geldiyse yaz anlat herşeyi ,
Bu mektup varmıcak hayalini kurduğun kıza !

Neof07

#2
@karboran, İlginiz için öncelikle teşekkürler. Linklere daha bakamadım onlara bakıcam ayrıca. Dediğinize gelirsek QT banada hoş geliyor ama son sınıf öğrencisiyim meslek lisesinde okuyorum. Malum son sene çalışmaya başlayınca üniversite sınavları için başımızı ders başından kaldıramıyoruz. Ancak ben yinede bana artı olsun diye hocamın isteğiyle bir staj takip programı yazmayı düşünüyorum. C# bilgim vardı ancak uçtu. Tekrardan baksam hemen hatırlarım tabii ama yinede o da zaman alıcak. Temel seviyede bilgim var C++ ile de onu kullanmak istemiştim. Hem böyle şeyleri hep C# ya da javayla yapıyorlar. Farklılık olsun demiştim.

Zaten normal olarak windows da fazla program yazmak istemiyorum ama bi girişim olsun diye bunu düşündüm. Çapraz platform *olacak şekilde çalışan bir program bence hiç de fena olmazdı. İngilizcem pek iyi değil o yüzden yukardakinlerden pek fikir alabildiğimi söyleyemem. Yinede verdiğiniz bilgilerden yola çıkarak bir şeyler bulmaya çalışcam.

Temel bilgimi kullanarak yapmayı düşündüm ancak bu tür programlarda grafik önemli o yüzden grafik ara yüzlü olması gerekiyor. Yani Form Application kullanmam gerekiyor bu durumda. Hal böyle olunca temel bilgi pek işe yaramıyor. Platformları öğrenmek gerek app ler önemli bu kısımda.

Erdem

#3
Belki D de kullanabilirsiniz.

Eğer denemek isterseniz:

D derleyicisi eğer kurulu değilse buradan indirebilirsiniz:

http://dlang.org/download.html

sonra :

$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install git
$ git clone https://github.com/erdemoncel/gtkd
$ cd gtkd/

Derlemek için de make yazmanız yeterli. Ancak ben bu kütüphaneyi 32 bitlik sistemler için derlemiştim. Eğer 64 bit kullanıyorsanız yazın lütfen.

Gtkd ile Merhaba Dünya programı  ;)

import gtk.MainWindow;
import gtk.Label;
import gtk.Main;

void main(string[] args)
{
Main.init(args);
MainWindow pencere = new MainWindow("Merhaba Dünya");
pencere.setDefaultSize(200, 100);
pencere.add(new Label("Merhaba Dünya"));
pencere.showAll();

Main.run();
}

Neof07

@Erdem, Bu dilin gelecekte ki yerini merak ediyorum aslında. Şimdiden öğrenmeye başlasak ileride tutulursa baya işe yarar. Ama C daha çok hoşuma gidiyor ve türevleri yani.

Erdem

Fikir vermesi açısından şu kütüphaneyi inceleyebilirsiniz:

https://github.com/libmir

Bu kütüphanenin görsel tanıma örneklerinden bir tanesi:

http://dcv.dlang.io/?loc=example_features

C++'nin kod yazım şekli özellikle yeni başlayanlar için biraz karmaşık gelebilir. Uzmanlaşması da oldukça zaman alabilir.

Örnek kod

C'nin yazım şekline de bir örnek verirsek:

void goster(void (*fp)(char *), char * dizge)
{
    (*fp)(dizge);  /* seçilen işlevi dizgeye uygula */
    puts(dizge);   /* sonucu göster                 */
}


Size de karışık gelmiyor mu  ;)

D'nin yazım şekline bir örnek:

D örneği

D örneği ne kadar sade ve temiz bir kod yazımı kullanıyor değil mi.

Benim yeni başlayan arkadaşlara önerim D öğrenin, bunun yanında veri yapıları ve algoritmaları iyi öğrenin. Sonra vakit kalırsa C'de öğrenirsiniz.

ShangriLa

D'nin geleceği yok, hiç olmadı. Yıllardır var olan bir dil ve gerekse endustride gerekse hobi olarak kullananların sayısı bir elin parmaklarını geçmez. GC olması D kullanmamak için yeterli bir sebep. Kabul görmemesinin en büyük nedenlerinden biri de bu.

Rust'a bakın çok kısa sürede inanılmaz bir topluluğa hitap etmeye başlandı ve bir çok büyük şirkette artık rust kullanıyor. Ben şahsen C/C++'a tek rakip olarak Rust'u görüyorum. Güvenli yapısı ve harika paket sistemi ile de yazarken en çok zevk aldığım programlama dili oldu.
Ubuntu Mate Trusty

Amenofis

[mention=612715]@ShangriLa[/mention]
Rust'ın geleceği gerçekten parlak görünüyor. İyi dizayn edilmiş, yenilikçi bir dil. Ancak dünyadaki hiçbir dilin c/c++'a rakip olması mümkün değil. Bu dillerin arkasında 50 yıllık geliştirici desteği var ve son sürat geliştirilmeye devam ediliyor.

Diğer dillere bakın, arka planda c/c++ kodu çalıştırmayan dil yoktur neredeyse. Adam yeni bir dil yaptım diye ortaya çıkıyor ama kütüphanesini C ile yazmış. Eee senin yaptığın dil kendi kütüphanesini yazmaktan acizken ben niye kullanayım?

Erdem

#8
Ben Rust programlama dilini sadece duydum  ;)

Bir programlama dili ile ilgili yorum yapabilmem için de en azından bir kaç bin satır kod yazmam gerekir diye düşünüyorum. Eğer bilmediğim, bir kaç bin satır kod yazmadığım bir dille ilgili yorum yaparsam bir düşünün bakalım o zaman haybeye konuşmuş olmaz mıyım   :D

D dilinin C ile uyumlu olması da gayet güzel bir özellik olduğunu düşünüyorum. C kütüphaneleri için ilinti yazıp kullanabiliyorsunuz.

Neden C  'yi C ile uyumlu yaptınız? gibi bir soruyu da Bjarne Stroustroup'a da sormuşlar.

http://www.stroustrup.com/bs_faq.html#whyC

Kullanımı da gittikçe yaygınlaşıyor.

http://forum.dlang.org/thread/vmjgxzuypcyigtkuyrsz@forum.dlang.org

Rust ve Go dilleri kadar hızlı yaygınlaşmıyor olabilir ama arkasında da büyük firmalar yok.

Zaten Ubuntu kurulum metninde de :

Alıntı Yap"Bir firmanın hedefleri, çıkarları, gündemi ya da çok önemli bir programlama kuramı gelişimini şekillendirmez. D programlama topluluğunun ihtiyaçları ve katkıları gideceği yönü belirler"

yazıyor.

Çöp toplayıcı olmadan da bildiğim kadarıyla D programları yazılabiliyor. Bence bu programcı tarafında bir esneklik sağlıyor.

https://www.auburnsounds.com/blog/2016-11-10_Running-D-without-its-runtime.html

Bir zaman önce robotik üzerine çalışan bir firmanın mülakatına girmiştim. Orada C++ ile ve başka bir kütüphane kullanan basit bir yap boz mülakat konularından bir tanesiydi.

Aynı programı D ve SDL ile çok daha basitçe kodladım.

Denemek isteyen arkadaşlar  eğer D derleyicisi kurulu değilse Digital Mars derleyicisinin son sürümünü http://dlang.org/download.html
adresinden kurabilirler.

SDL geliştirme kütüphanelerini de :

$ sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev

Oyunun kaynak kodunu bilgisayarınıza kopyalamak için

$ git clone https://github.com/erdemoncel/oyun.git

demeniz yeterli. Daha sonra yapboz dizinine geliyoruz.

$ cd oyun/yapboz

Oyunu derlemek için make yapboz demeniz yeterli. Çalıştırılabilir dosya bin dizininde oluşuyor.

$ cd ../bin/
$ ./yapboz


diyerek oyunu çalıştırabilirsiniz.

Taşları karıştırmak için k tuşuna basmanız yeterli.

C++'nin D'ye göre daha uğraştırıcı olduğuna dair bir diğer örnek de Arduino'nun firmata protokolünü C++ ile kodlamaya çalışıyordum.

Sadece çıkış akımına işaretsiz tamsayı türleri yükletmek bile oldukça uğraştırıcı bir işlem.

http://ddili.org/forum/post/12279

D'de bildiğim kadarıyla formattedWrite olanağı var.

https://dlang.org/phobos/std_format.html#.formattedWrite

Benim tanıdığım eski C++ ustalarından bazıları artık D topluluğundalar. Bunlardan Andrei Alexandrescu, Ali Çehreli ve Bartosz Milewski benim ilk aklıma gelenler  ;)

Sonra işin ilginç tarafı C++11, C++14, vs. neredeyse tamamen C++'ı D'ye yaklaştırmış oluyor. D aralıklarının C++'ye ekleneceği söyleniyor.

http://ddili.org/forum/thread/1487


Neof07

@Erdem, Temel algoritma mantığını geliştirmekten başka programlar yazmadım hiç(C# hariç onda birkaç küçük projem olmuştu okulda). Ama okuduklarımdan anladığım kadarıyla devir hız ve kolaylık devri. Bu yüzden hızlı ve kolay şekilde yazılacak ortamlar daha makul ve reva. Ancak dediğiniz gibi ben uğraşmayı seviyorum azıcık mazoşistlik var gibi bende  :D

Tabii bu piyasada tutunmak için modern dillerden birine el atmamız gerekiyor. Ancak kafamın köşesinde hep c kalıcak gibi. Şahsen onuda kullanıcağım yerler olucaktır. Ben burada sadece gui uygulaması yapmak istemiştim C++ ile. Çapraz platform *olacak birde. D dili ile bu mümkün mü peki ? Ayrıca ağ ve veri tabanı konusunda yeterli mi acaba ?

D dilinin yavaş gelişmesi bir dezavantaj gibi geldi bana ama dil hiç de kötü değil bence. Şahsen java kullanıcağıma D kullanırım. Tabii D ile yazıcaklarım javadan hızlı mıdır onu bilemem.

Erdem

Alıntı yapılan: Neof07 - 12 Aralık 2016 - 20:36:50
Ben burada sadece gui uygulaması yapmak istemiştim C++ ile. Çapraz platform *olacak birde. D dili ile bu mümkün mü peki ? Ayrıca ağ ve veri tabanı konusunda yeterli mi acaba ?

Evet mümkün. Ben oldukça uzun zamandır sadece Linux sistemler kullanıyorum ama şu uygulamayı zamanında windows ile de çalışacak şekilde programlamıştım.

https://github.com/erdemoncel/oyun

Gtkd'nin de çoklu platform desteklediğini biliyorum. Gene veritabanı kullanmadım ama kullanılabildiğini biliyorum.

Ağ konusunda da nasıl uygulamalar mesela. Örneğin bu kod Stroustroup'un C++ sayfasını indiriyor ve içindeki bağlantıları alıyor.

import std.net.curl, std.stdio;
import std.algorithm, std.regex;

void main() {
foreach(_;byLine("http://www.stroustrup.com/C++.html")
    .map!((a)=>a.matchAll(regex(`<a.*?href="(.*)"`)))
    .filter!("a")){ writeln(_.front[1]); }
}


D ile Java'nın yazım şekli birbirine çok benziyor. Ben bazı Java programlarını çok ufak değişikliklerle D'ye aktarabildiğimi biliyorum  ;)

Evet D derlemeli dil olduğu için Java'dan hızlı çalışıyor gözlemlediğim kadarıyla.

Neof07

@Erdem, Staj takip programı yapmayı düşünüyorum. Okulda kullanıcaklar. Bunu D dili ile yapmak isterim. Tabii bu windowsda çalışıcak. Malum üniv hazırlık yapıyorum pek vaktim olur mu bilmem. Zaten windowsda yükleyemiyorum diske. Artık disk bile kabul etmiyor bu laneti :D Öğrenmesi sanırım fazla uzun sürmez.

ekremsenturk

#12
Günümüzde çoğu dil ve çoğu grafik kütüphanesi çoklu platform destekliyor. (Microsoft ve Adobe yazılımları hariç) İstediğiniz tercihi yapabilirsiniz. D dili Java ve C++ arası bir C++ alternatifi olarak düşünülerek geliştirilmiş. Rust ise yüksek seviyeli ve derlenebilir bir dil olarak tasarlanmış. Falcon daha yüksek seviyeli perl veya python alternatifi olarak düşünülüyor. Bu diller günümüzde yaygın olarak biliniyorlar ve kullanılıyorlarsa, gelecekleri de vardır. Gelecek, dil veya araçta değil, kendinizde. İşinizi hangisi görüyorsa, kullanmada bir sakıncası yok. Hiç bir programın üzerinde "Bu bir C++ programıdır" yazmaz. Kullanıcı kullandığı program kendi işini görüyormu? orasına bakar. Siz de kullandığınız dil veya kütüphanesi sizin işinizi görüyormu? ona göre değerlendirin. Kod yazımı güzelmiş veya çok manâlı görünüyormuş, bunlar hep hikâye. Birer pazarlama argumanı. Bütün C grubu dillerin yazım şekilleri az veya çok birbirlerine benzerler. Meselâ benim gözümde aynı görünüyorlar. Bana da burada sözü edilen dillerin hepsi, bir  veya bir kaç boy fazla geliyorlar. Ben de bu nedenle Yabasic tercih ediyorum ve benim işimi görüyor. Üstelik Windows sürümünün exe dosyasında da, script'lerinde de cicili bicili ve renkli "basic" yazısı görünüyor. Bu beni rahatsız etmiyor. Bir programın nasıl çalışacağını ve ne kadar işlevsel olacağını siz kendiniz belirlersiniz. Derleyici sadece derler. Projenin yapımı için bir süre varsa, yeni bir dil öğrenmek, her ne kadar aynı diller ailesinden olsada, ek zaman gerektirir. Bunu da hesaba katmakta yarar var.

Neof07

Zaten dogru duzgun aklimda kalan pek bi dil yok. Calisiyorumda bunlara pek zamanim kalmiyor ancak aksamlari bir saat iste. Yenden baslamam gerekicek hangisiyle ugrassamda

ekremsenturk

#14
C++ için grafiksel arayüzü geliştirebileceğin ve çok platformlu olan bir kaç İde : ( ve bazı editörler ) http://www.tecmint.com/best-linux-ide-editors-source-code-editors/

Neof07

QT ücretsiz sanırım tam olarak onu anlayamadım ama. En iyisi şu an QT gördüğüm kadarıyla.