+ Cevap Yaz
Toplam 7 sayfadan 5. sayfa
İlkİlk 1 2 3 4 5 6 7 En SonEn Son
62 sonuçtan 41 ile 50 arası gösteriliyor

Konu: C dilinden sonra hangi dil?

  1. #41
    Üye
    Üyelik Tarihi
    01/2008
    Mesaj
    131

    bu görüşünüze katılmam maalesef mümkün değil.
    çünkü, bir şeyi öğrenmenin en iyi yolu onu seçerek yapmaktır. eğer c# veya java ile başlanırsa, oop mantığını dahi bilmeden oop yapmış olunur. ancak c++ ile oop yapmak opsiyoneldir ve prosedürel programlama da yapabilecekken salt oop yapmak, mantığını gerçekten kavramakla mümkündür.

    daha sonra c# veya java ile bu mantığı iyi oturtmuş biçimde çok daha ustaca kodlamalar yapılabilir.

  2. #42
    encore une fois sinforlove Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    09/2008
    Yer
    antalya
    Mesaj
    135

    sanırım "oop" u bardak ve bardak fabrikası şeklinde öğrenmek akılda kalıcı olmuştu... c++ kodlarına bakarak konuşuyorum (anlayıpta değil) -> parametre dışında c# tan sonra itici gelmediği içinde kitap işine girdim.
    not: üstatlar yanlış anlamasın parantez içinde belirttim.c++ gördüğüm yerler ,elimde ki örnek programlar
    bulanık sulara gömülmüş hayallerimle kutsuyorum sizleri,sizin gibileri

  3. #43
    ftpyt
    misafir

    Benim dikkatimi çeken nokta,pointer c dilinde çok etkin bir rol oynuyor.Her alanda.Ben pointer mekanizmasını anlamama rağmen,örnek uygulamalar beni sürekli afallatıyor.Mesela bir örnek;fonksiyonlarda Referans ile aktarımda önce pointer değişken tanımlanıyor,sonra aktarım yapılacak arguman değişkenin adresi vasıtasıyla aktarım yapıyor.(Umarım yanlış bir tanımlama yapmamışımdır) Şimdi Javaya geçsek bildiğim kadarıyla pointer olayı yok,üstüne bir de oop yapısı,yani gördüğüm kadarıyla farklı dünyalar.Bu yüzden c'yi ayrıntılı olarak öğrenmiyorum.

    Alıntı okanakyuz, mesajından alıntı: Mesajı Gör
    Eclipse ile yapılan her işlem birer plugindir. http://www.eclipseplugincentral.com/ adresinde ararsanız swing ile ilgili 28 plug in oluğunı görürsünüz.

    Biraz inceledim ve belirttiğin plug in lerden 1-2 tanesi gözüme çarptı ancak ücretli.Bu şekildeki plug in lerin varlığından haberdardım ancak ücretsiz olanını hiç görmedim.Bildiğin kaliteli ve ücretsiz bir tane varsa,direk olarak linkini verirsen faydalanmak isteyen kişiler için katkı sağlamış olursun.

  4. #44
    Ali Çehreli
    Üyelik Tarihi
    10/2002
    Mesaj
    2,901

    Alıntı ftpyt, mesajından alıntı: Mesajı Gör
    Benim dikkatimi çeken nokta,pointer c dilinde çok etkin bir rol oynuyor.Her alanda.
    Onun nedeni, "referans" kavramının çoğu dilde çok etkin bir rol oynamasıdır. Örneğin C gibi dillerde verilen sayının kendisini yarıya bölen bir işlev şöyle yazılabilir:

    Kod:
    void ikiye_bol(int * sayi)
    {
        *sayi /= 2;
    }
    
    int main()
    {
        int sayi = 42;
        ikiye_bol(&sayi);
    }
    
    Ben pointer mekanizmasını anlamama rağmen,örnek uygulamalar beni sürekli afallatıyor.Mesela bir örnek;fonksiyonlarda Referans ile aktarımda önce pointer değişken tanımlanıyor,sonra aktarım yapılacak arguman değişkenin adresi vasıtasıyla aktarım yapıyor.(Umarım yanlış bir tanımlama yapmamışımdır)
    Yukarıdaki kullanımda da görüldüğü gibi aslında ayrıca işaretçi tanımlamaya gerek yok. Ama dediğin genelde tabii ki doğru.

    Şimdi Javaya geçsek bildiğim kadarıyla pointer olayı yok
    Ama "referans" kavramı bütünüyle olayın içinde. Hatta o kadar içinde ki, sanırım zaten herşey referans. Özellikle * gibi özel bir karakter kullanılmadığı için Java'da referans olmadığını sanıyoruz ve ama herşey zaten referans.

    Ara not: D dili de Java gibi dillerin yolundan gitmiş ve * karakterini gereksiz hale getirmiş. (Yine de kullanılabiliyor ama çoğu durumda gerek olmuyor.) Örneğin yukarıdaki kod D'de şöyle yazılırdı:

    Kod:
    void ikiye_bol(ref int sayi)
    {
        sayi /= 2;
    }
    
    void main()
    {
        int sayi = 42;
        ikiye_bol(sayi);
    }
    
    Yani aynı Java gibi... Hatta, yine aynen Java'da olduğu gibi, bütün sınıf türleri de referans türü oluyorlar. Orada da ne * gerekiyor, ne de üyelere -> karakterleriyle özel erişim:

    Kod:
    auto dosya = new File("deneme", FileMode.Out);
    dosya.writeln(42);
    
    Orada 'File' bir sınıf, ve 'dosya' bir sınıf nesnesi. new bir nesne adresi döndürse de, ve 'dosya' perde arkasında bir işaretçi olsa da, Java'da olduğu gibi normal bir nesne gibi kullanıyoruz.

    Bunları "her alanda olan şey"in aslında referans kavramı olduğunu belirtmek için söyledim. Çoğu dilde var... C'ninki tarihsel nedenlerle *, &, ve -> yazımlarıyla açık açık yazılacak şekilde tasarlanmış.

    "İşlevsel programlama" (functional programming) gibi, içinde hiç referans kavramı olmayan diller de var. Öyle bazı dillerde verilerin doğrudan değiştirilmesine izin verilmez. Verilen ancak atama yoluyla değiştirilebilirler. Öyle bir dilde, yukarıdaki kodu aşağıdaki gibi yazmak gerekirdi.

    Yine C dilini kullanarak ama işlevsel programlama mantığı ile yazarak:

    Kod:
    int ikiye_bol(int sayi)
    {
        return sayi / 2;
    }
    
    int main()
    {
        int sayi = 42;
        sayi = ikiye_bol(sayi);
    }
    
    İşte öyle dillerde referans kavramı yoktur. Ama Java'da var...

    Ali

  5. #45
    Software Developer Zangetsu Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    04/2006
    Yer
    Antalya
    Mesaj
    724

    Alıntı acehreli, mesajından alıntı: Mesajı Gör


    Ama "referans" kavramı bütünüyle olayın içinde. Hatta o kadar içinde ki, sanırım zaten herşey referans. Özellikle * gibi özel bir karakter kullanılmadığı için Java'da referans olmadığını sanıyoruz ve ama herşey zaten referans.

    Ali
    Java'da c/c++ daki gibi pointer kavramı yoktur ama zaten dediğinzi gibi (istisna bir iki kullanım haricinda ) herşey referanstır. Genellikle öğrenciler c/c++ dan java geçtiklerinde bu kanıya sıklıkla varıyorlar.

    Bütün kitaplarda java da nerşey nesnedir deniliyor. Evet bu da hemen hemen doğrudur. Buda dolayısı ile Javadaki herşey referanstır diyebilmemizi sağlıyor.



    Kod:
    void ikiye_bol(Integer sayi) {
           sayi/=2;
    }
    
    Integer say = new Integer(10);
    ikiye_bol(say);
    
    Bu örnek, Ali hocanın yaptığı örneğin javadaki karşılığıdır. Burada sayi bir referanstır. Bu fonksiyonu kullanırken parametre olarak Integer sınıfından türetilmiş bir nesne gönderilir.


    C++ da nesnelerde pointer kullanılacak ise nese new komutu ile oluşturulur(Örneklenir).

    Kod:
    //Normal :
    Foo foo;
    foo.sayi_bol(4);
    //------------------------------------
    
    
    // Pointer:
    Foo * foo = new Foo();
    foo->sayi_bol(4);
    

    Şimdi bütün bunları yazdıktan sonra (not: kafanız karışabilir) Java 'da da Ali hocamın son satırlarda dediği gibi referans olmayan türler bulunur. Zaten bunlar nesnede değildir.

    int, double , float gibi türler java'da da var. Ve bu türlerlerden türetilen değişkenler referans ile gösterilmez aynı zamanda new ile de örneklenmezler.

    örneğin şu kodun bize geriye normal şartlarda java da 2 sonucunu yazmasını bekleriz.

    Kod:
    void sayi_bol(int sayi) {
       sayi/=2;
    }
    
    int say = 4;
    
    sayi_bol(say);
    
    System.out.println(say);
    
    burada biz 2 beklerken java ekrana 4 yazar ama bir yukarıdaki örneği tekrardan ele alırsak.

    örn-ABC:
    Kod:
    void ikiye_bol(Integer sayi) {
           sayi/=2;
    }
    
    Integer say = new Integer(4);
    ikiye_bol(say);
    
    System.out.println(say);
    
    işte burada java ekrana 2 yazar.


    Kendimi Düzeltme: Javada Integer, Double vs. gibi olan sayısal veri tutan nesneler de her ne kadar referans kullansada fonksiyon içine girdiklerinde üzerinde her ne kadar değişiklik yapsakda int, float vs. davranmaktadır. Yani örn-ABC de ekrana yazması beklenen 2 iken, java ekrana 4 yazar.
    Enson 15/12/2009 22:24 tarihinde Zangetsu tarafından düzenlenmiştir. Sebep: bir kaç ekleme daha yaptım..

  6. #46
    Software Developer Zangetsu Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    04/2006
    Yer
    Antalya
    Mesaj
    724

    Yukarıdaki karışıklık için özür dilerim. Javada sayısal olan türlerin tamamı istisna içindeymiş ben sadece kücük harf ile yazılan basit türlerin bu istisnaya dahil sanıyordum. Bu zamana kadar Sayısal sınıfları bu şekilde kullanmadığım için onları istisna dışında bırakmıştım (bkz. java autoboxing)

    Şİmdi örnek vermem gerekirse

    [kod=java]

    void a_ekle(List bcd) {
    bcd.add("a");
    }

    List foo = new ArrayList<String>();

    a_ekle(foo);

    [/kod]

    bu örnek daha doğru oldu. foo 'nun referans ettiği nesneye a eklemiş olduk.

    Asıl konu için C++ dan Java'ya geçen biri olarak şunları söyleyebililrim. Java'da c++ da yapmak zorunda olduğumuz bir çok şeyi jvm ( java sanal makinesi) bizim yerimize yapmakta. Örneğin c++ da new ile oluşturduğumuz nesneleri delete ile silmek gerekirken, java da delete oparatörü yoktur. referansız kalmış nesneleri Çöp Toplayıcısı dediğimiz sistem otomatik olarak yakalar ve o nesneleri bizim için siler.

    Javada Referanssız kalmış nesne nedir örnek vereyim.

    [kod=java]

    String abc = new String("merhaba") // burada adreste atıyorum RTX nesnesi tutulsun, bu nesnin referesansı ise doğol olarak şimdilik abc.


    abc = new String("ceviz"); // bu satırda ise abc'ye artık hafızada yeni bir nesne oluşturarak (RTX1) onu referans etmesini söylüyoruz.

    String dfg = new String("Kamil"); // RTX2 nesnesi diyelim
    abc = dfg; // burada da abc 'ye artık dfg nin referans Ettiği nesneyi referans etmesini söylüyoruz.

    [/kod]

    Yukarıdaki kodda RTX ve RTX1 nesneleri referanssız kalmış durumda. Çöp Toplayıcısı JVM tarafından çalıştırıldığında bu iki nesne hafızadan silinecektir.

    Java öğrenmek için c++ öğrenmeye gerek yoktur. Alt düzeyde ne tür işlemler yapılıyor öğrenmek için C++ dan java geçmek daha mantıklı. Ama olurda bir gün Java'dan C++ geçerseniz bir çok hatalı kodlama yapma olasılığınız var. En azından Programınız bir süre sonra Bellek Yetersiz hatası verebilir

  7. #47
    ftpyt
    misafir

    Zangetsu sana bir sorum olacak, “c de mantığı yerleştir sonra java veya c# a geç” fikri hakkında ne düşünüyorsun sence doğru mu?
    Bir de, syntax olarak c dili, programlama mantığını yerleştirme bakımından daha uygun bir dil şeklinde düşünce oluşmuştu bende,hatta önceki bir mesajımda şunu yazmıştım:


    --Java--
    public class Merhaba
    {
    public static void main(String[] args)
    {
    System.out.println("Merhaba");
    }
    }

    --c--
    #include<stdio.h>
    int main( )
    {
    printf("Merhaba");
    return 0;
    }

    Bu konu hakkındaki düşüncelerini öğrenmek isterim.

  8. #48
    Okan Akyüz okanakyuz Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    03/2009
    Mesaj
    499

    bana sorulan soru için yazıyorum: jigloo/ virtual swing ilk aklıma gelen pluginler.

  9. #49
    Software Developer Zangetsu Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    04/2006
    Yer
    Antalya
    Mesaj
    724

    Alıntı ftpyt, mesajından alıntı: Mesajı Gör
    Zangetsu sana bir sorum olacak, “c de mantığı yerleştir sonra java veya c# a geç” fikri hakkında ne düşünüyorsun sence doğru mu?
    Bir de, syntax olarak c dili, programlama mantığını yerleştirme bakımından daha uygun bir dil şeklinde düşünce oluşmuştu bende,hatta önceki bir mesajımda şunu yazmıştım:


    --Java--
    public class Merhaba
    {
    public static void main(String[] args)
    {
    System.out.println("Merhaba");
    }
    }

    --c--
    #include<stdio.h>
    int main( )
    {
    printf("Merhaba");
    return 0;
    }

    Bu konu hakkındaki düşüncelerini öğrenmek isterim.
    Bu konuda benim görüşüm şu şekilde. İlk defa programlama öğrenen bir insan Algoritma ve Veriyapıları konusunu geçtikten sonra Doğrudan nesneye yönelik programlama yapma zorunluluğu olan bir dil yerine (örn. Java , c#.net) prosedürel programlama yapabilceği bir dilden başlaması çok daha doğru olur. Çünkü OOP (object oriented programing)kolay olduğu gibi aynı zamanda karmaşık olan bir konudur.

    Bilgisayar dili ile ilk karşılaşmanızda OOP ile uğraşmaktansa prosedürel (fonksiyon) bir yapı ile bilgisayarca hareket etme mantığını oturtmak daha kolaydır.

    Bu yüzdendirki c/c++ ile başlayıp daha sonrasında java veya farklı bir üst seviye dile geçebilirsiniz.

  10. #50
    Okan Akyüz okanakyuz Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    03/2009
    Mesaj
    499

    Alıntı Zangetsu, mesajından alıntı: Mesajı Gör
    Bu yüzdendirki c/c++ ile başlayıp daha sonrasında java veya farklı bir üst seviye dile geçebilirsiniz.
    C++ javaya göre alt seviye mi? ikisşde Lagoona obje yapısında ve aynı seviyede sınıflandırılır litertürde.

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz