Java vs C# C++ C

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
İngilizcesi olmayan neden programlama yapamasın. Ha en iyi kaynaklar ingilizce dersiniz o ayrı ama inglizcesi olmayan mantık kuramaz gibi bir şey söyliyemezsiniz.
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
İngilizcesi olmayan neden programlama yapamasın. Ha en iyi kaynaklar ingilizce dersiniz o ayrı ama inglizcesi olmayan mantık kuramaz gibi bir şey söyliyemezsiniz.
Fakat java için ayrıntılı bir kaynak arıyorsanız inglizce şart.[DOUBLEPOST=1437309628,1437309579][/DOUBLEPOST]C# için ise
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
burası :)
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Fakat java için ayrıntılı bir kaynak arıyorsanız inglizce şart.[DOUBLEPOST=1437309628,1437309579][/DOUBLEPOST]C# için ise
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
burası :)
C# için bakıldığında en iyi kaynaklar gene yabancı kaynaklar. İngilizce kaynakların anlatım şekilleri daha iyi oluyor. Bir kaç ingilizceden çeviri ders okudum ve anlatım şeklini çok beğendim.
 

blade20090999

Kızıltaş Madencisi
En iyi cevaplar
0
şahsen aklıma takılanları burda soruyorum yardım etmeye calışıyorlar.Her şeyde yabancı kaynaklar daha çok ama olsun :)
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
:) adasd @KRHN atarını yaptı. Orda her programlama dilinin iyi veya kötü yönlerinden bahsetmek ile programlama anlamak arasındaki alakayı anlamış değilim.Lakin C# ve javayı zerre kadar bildiğime seni temin ederim.

O yüzden zaten hala televizyon vb aletlerde c++ var :) ama c# bana daha yakın geldi sanırım daha basit olduğundan :hmm:.[DOUBLEPOST=1437289708,1437289340][/DOUBLEPOST]Alıntı :
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

Bence gayet Güzel Açıklamış :)
tolpp;109053 dedi:
Herkese merhaba,

Üniversiteler dahil pek çok okulun tatile girmesiyle genç arkadaşların programlama ve yazılım geliştirmeyle ilgilenmeye başlayacağını düşündüm. Yeni başlayan arkadaşların kafasında da genelde benzer sorular var. "Hangi programlama dilini seçmeliyim?" ve "Programlamaya ilk adımı nasıl atmalıyım?". Bu yazının yeni başlayan arkadaşlar için faydalı olacağını düşünüyorum.

---

Yazılım geliştirme ne büyütülecek kadar zor ne de küçümsenecek kadar basit bir süreçtir. Süreç burada anahtar kelimedir çünkü hem yazılımlar hem de yazılım geliştirme ortamları sürekli bir gelişim içerisindedir. Bu yüzdendir ki, "artık biliyorum" dediğiniz ve ilerlemeyi bıraktığınız anda kendinize en büyük kötülüğü yapmış, yazılım geliştirme kariyerinize de noktayı koymuş olursunuz.

* Gelelim ilk noktaya : Programlamaya nereden başlamalıyım?

1 -İngilizcenizi geliştirin.
"E ama Türkçe de pek çok kaynak var" diyen arkadaşlar olacaktır. Haklılar. Güzel kaynaklar var. Ancak bu durumda teknolojiyi kullanan konumundan ileri gidilmiyor. Tamamen İngilizce yüklenin demiyorum. Ancak başlangıç seviyesinde zamanınızın%60 kadarını İngilizce'ye ayırın. Bu gerçekten çok önemli, ileride hak vereceksiniz. Sıkılmayın, anlamasanız bile İngilizce kaynaklardan okumaya çalışın, kelime ezberleyin. Hem entellektüel anlamda hem de gelişiminiz açısından bu sizi bir üst seviye kişiliğe taşıyacaktır.

2 - Ne yapacağınıza karar verin
Unutmayın ki programlama dili bir amaç değil, araçtır. Önce öğreneyim, sonra yaparım düşüncesi sizi zaman kaybına uğratabilir. En iyi şeklinde adlandırılabilecek bir programlama dilinin olmadığını unutmayın. Her dilin iyi olduğu, kötü olduğu konular vardır. Peki, hangi amaç için hangi diller kullanılabilir? Birkaç güncel kullanım alanı :

  • Ben mobil uygulama geliştireceğim diyorsanız :
    • iOS --> Objective-C
    • Android --> Java
    • Windows Mobile --> .NET ile kullanılabilen bir dil (Visual C++, Visual C#, VB,F#...)
  • Masaüstü uygulama geliştireceğim diyorsanız :
    • Uygulamanız Windows üzerinde çalışacaksa
      • .NET kullanan dil (Visual C#, Visual F#, Visual C++, Visual Basic)[C# önerilir]
    • Uygulamanızın tüm ortamlarda çalışmasını istiyorsanız (Mac, Windows, Linux...)
      • Java (Önerilir)
      • Python
      • C++
  • Oyun geliştireceğim diyorsanız :
    • Lua (Önerilir)[Hem mesaüstü hem de mobil pek çok ortamda kullanılabiliyor.]
    • C# (Windows altında XNA Game Studio ile iyi işler çıkartılabiliyor.)
    • C (OpenGL gibi temel grafik kütüphaneleri ile uğraşacaksanız gerekli)
  • Elektronik cihazlara hükmedeceğim, donanımın derinliklerine ineceğim diyorsanız :
    • C
    • Assembly (Başlangıç için hiç gerek yok.)
  • Yapay zeka ile uğraşacağım, zeki sistemler yapacağım diyorsanız :
    • Haskell
    • Prolog
    • Scala
  • Benim işim web ve sunucular diyorsanız :
    • Front-end için : (Kullanıcı ile etkileşime giren kısım, görsel kısım da denilebilir)
      • HTML (Mutlaka!)(Programlama dili değil, işaretleme dilidir)
      • CSS (Mutlaka!)
      • JavaScript (İstemci taraflı programlamanın can alıcı noktasıdır.)
        • JS üzerinde ilerlendikten sonra CoffeeScript'e de bakılabilir.
    • Back-end için : (Sunucu tarafı)(Kırılma noktası)
      • Kolay öğrenip bir an önce başlamak mı istiyorsunuz?
        • PHP
        • ASP.NET + C#
      • Kolayca geliştirilebilir, kolay dağıtılabilir uygulamalar geliştirmek mi istiyorsunuz?
        • Ruby (Ruby on Rails isminde şahane bir framework var)
        • Python (Django framework'ü ile birlikte)
        • JavaScript (Günümüzün yükselen gözdesi : Node.js isimli web framework'ü var.)
        • Scala (Play! Framework ve Lift)
      • Taş gibi, sapasağlam uygulamalar istiyorsanız :
        • Java (JavaEE isimli kavram bu yüzden var.)
        • ASP.NET (Burada bulunması tartışılabilir.)
  • Hacker'lık benim geleceğim diyorsanız
    • Hepsini öğrenin.

Unuttuğum kısımlar olabilir. "Şunun için ne yapmalıyım" derseniz, güncellerim yeniden. Yukarıdakiler güncel kullanım alanlarına göre dillerin bir toplaması. Elbette tüm diller bu kadar değil. Kronolojik olarak listeye şuradan ulaşılabilir :
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


----

Dillerin (+) ve (-) özellikleri nelerdir?

Java
+ Tüm ortamlarda çalışabilir.
+ C'ye benzer söz dizimi vardır.
+ Stabil çalışır.
+ Çok geniş bilgi birikimi, çok geniş kütüphanesi vardır.
- Bytecode'a derleme, makina koduna yorumlama yapılır. (JVM burada devreye giriyor). Bu yüzden C'ye göre yavaş çalışır.
- Çalıştırılacak bilgisayarda JRE kurulu olmalıdır.

PHP
+ Günümüzde halen en çok kullanılan web programlama dillerinden biridir.
+ Öğrenmesi diğer dillere göre kolaydır
+ Türkçe pek çok kaynak vardır.
+/- Veri tipleri dinamik olarak belirlenir. (Programlamayı kolaylaştırır ancak hata denetimini zorlaştırır ve performansı düşürür)
- Dilin kendi içerisinde tutarsızlıkları vardır. (metod isimleri, kurallar kesin değildir, pek standart yoktur. Bu da giriş seviyesi öğrenmeyi kolay, uzmanlaşmayı zor kılar.)

C#.Net
+ Windows masaüstü uygulama denince akla ilk gelendir.
+ Visual Studio gibi işleri çok kolaylaştıran bir IDE'ye sahiptir.
+ Oldukça tutarlı, oturmuş bir dildir. C'ye benzer söz dizimine sahip diller arasında yapısal olarak en gelişmişidir denebilir.(Evet, yapısal olarak Java'dan daha iyidir :) )
+ Türkçe kaynak bulmak kolaydır.
- Microsoft'un tekelinde olan bir dildir.(Aslında tam değil de, .NET olmadan bir işe yaramaz :) Ayrıca, Microsoft'un sahip oladığı ürünler ile beraber kullanımı sıkıntılar doğurabilir. )
- Windows olmadan bir işe yaramaz.

JavaScript
*JavaScript(JS), Java ile aynı şey değildir!
+ Pek çok alanda doğrudan kullanılır. Kullanım alanı sınırsızdır denilebilir.
+ Hem iteratif hem de fonksiyonel programlama dili özelliği gösterir.
+ Yavaştır denemez. Google V8 Engine ile çalışma hızı bambaşka bir boyuta taşınmıştır.
+/- Tüm olaylar dinamik olarak gerçekleşir. Derlenmez.
- Debug yapmak zordur (kısmen).

C/C++
+ Pek çok dilin atasıdır.
+ 70'li yıllarda ortaya çıkmasına rağmen halen güncellenmektedir (C++ için bahsedersek, ANSI-C aynı :) )
+ Hızlı işlemler ve temel düzey görevler için biçilmiş kaftandır.
+ Donanıma en yakın dillerdendir. Doğrudan assembly olarak derlenir.
- Hata alınabilecek çok nokta vardır. Dil sizin için pek kontrol yapmaz. Küçücük hata çılgın sonuçlar doğurabilir.
- Debug yapmak oldukça zordur.
- Kullanımı zordur.

Python
+ Kullanımı kolay bir dildir.
+ Google tarafından çok sevilir.
- Türkçe kaynak bulmak çok kolay değildir.

Scala
+ Yükselişte olan yeni gözde dildir.
+ Hem nesne yönelimli hem de fonksiyonel dil özelliği gösterir.
+ JVM üzerinde çalışır, Java'ya ait tüm kütüphaneler kullanılabilir.
- Türkçe kaynak bulmak çok zordur.

Lua
+ Hızlı çalışan, kullanımı kolay olan scripting dilidir.
+ Oyun dünyasında pek çok noktada kullanılır
- Türkçe kaynak az sayıdadır.

------
- Nereden öğrenebilirim?
Her dilin kendine ait kullanım kılavuzu sayfası vardır. Temel referans noktalarınız bunlar olabilir. Ancak bir şekilde kitap edinmeniz daha hızlı öğrenmenizi sağlayacaktır. Eğer İngilizce de olur diyorsanız O'Reilly'nin kitaplarını tavsiye ederim. Çoğu kitap malum ortamlarda bulunabiliyor.

Bunun yanında
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
yeni başlayanlar için mükemmel bir kaynak. JS, Python, Ruby derslerine buradan bakabilirsiniz.

HTML/CSS için
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
'u öneririm.

Ve elbette, yegane kaynağımız internet:)

-----
Sorularınız :
Eğer yeniyseniz, ya da henüz başlamamışsanız soru sormaktan çekinmeyin. Konu altında ya da özel mesaj ile sorularınızı iletebilirsiniz. Çok daha acilse çekinmeden tolpp(at)hotmail.com adresine mail atın. Java konusunda iyiyim, diğerleri hakkında da bilgi birikimim var.
----

En en özet : En iyi diye bir programlama dili yoktur. Ancak JavaScript pek çok şey için güzel bir başlangıç olabilir.
C++'nın Java ve C#'a kıyasla 2 dezavantajı varsa 100 avantajı vardır, her dili kendi kategorisinde yarıştırın. Düşük seviyeli bir dil ile yüksek seviyeli bir dili karşılaştırmak dediğim gibi uçak ile arabayı karşılaştırmaktan farksızdır. Belki uçak da bir araçtır araba da, lakin biri havada gider öbürü yerde. En iyi yazılım dili diye bir şey elbet vardır, bunlara Assembly, C örnek verilebilir.
 

TheRedstoneEngineer

Obsidyen Madencisi
En iyi cevaplar
0
C# ile kimse işletim sistemi yazmayı tercih etmez. C# daki bir işlem 1000 tane makine kodu gerekiyorsa C++ o işlemi tek makine koduyla yapabiliyor. Ve işletim sistemleri hızın en üst olduğu safhadadır. C ve C++ bile bazen yetmez işletim sistemi yazmada. Assembly kullanılır bazı yerlerde. Soruyorum sana C ve C++ bile işletim sistemi yazmada bazı kısımlarda çok yüksek seviye diye kullanılmazken neden C# kullanılsın? Malmı bu adamlar?[DOUBLEPOST=1437300164,1437299966][/DOUBLEPOST]
C++ ın hatalarını sana söylememesi bir eksi değildir. Dil sana güvendiğinden dolayı hatalarını göstermede C# ve ya Java kadar iyi değil. Eğer debug sistemi o kadar iyi olursa daha fazla makine kodu gerekecek işlemleri yapmak için ve bu da programların yavaş çalışmasına sebeb olacak.
Tamam ben performanslı olur demedim yapılabileceğini söyledim. İstersen hepsini assembly ile yaz ki o bayaa sıkar :D, istersen de C++ ve Assembly veya işte ful C++ ile yaz. Kim kullanacak, toplumun 0,001%'si. Zaten o kadar kullanan olduktan sonra performans da anlamlı olmayacaktır. BÜyük bir şey istiyorsan COSMOS yeterli değil, bootable kısmını kendin yazmalısın.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Tamam ben performanslı olur demedim yapılabileceğini söyledim. İstersen hepsini assembly ile yaz ki o bayaa sıkar :D, istersen de C++ ve Assembly veya işte ful C++ ile yaz. Kim kullanacak, toplumun 0,001%'si. Zaten o kadar kullanan olduktan sonra performans da anlamlı olmayacaktır. BÜyük bir şey istiyorsan COSMOS yeterli değil, bootable kısmını kendin yazmalısın.
İşletim sistemleri Assembly ve C ile yazılmaktadır, bunun sebebi en düşük seviyeli dillerden olmasıdır ve çok daha fazla detay eklenebilir üstüne üstlük bu detaylarla da optimize edilmiş yani performansı yüksek işletim sistemleri yapılabilir. Eğer işletim sisteminin performansı yüksek, kalitesi iyi olursa ve yayımcı iyi olursa toplumun %40'ı kesinlikle bunu tercih eder lakin daha öyle bir işletim sistemi yapıl(a)madı.
 
Son düzenleme:

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
C++'nın Java ve C#'a kıyasla 2 dezavantajı varsa 100 avantajı vardır, her dili kendi kategorisinde yarıştırın. Düşük seviyeli bir dil ile yüksek seviyeli bir dili karşılaştırmak dediğim gibi uçak ile arabayı karşılaştırmaktan farksızdır. Belki uçak da bir araçtır araba da, lakin biri havada gider öbürü yerde. En iyi yazılım dili diye bir şey elbet vardır, bunlara Assembly, C örnek verilebilir.
En iyi yazılım dili diye bir şey var demek yanlış olmuş. Hepsinin kullanım alaları farklı. Bir diğerinin eksikliğini kapatmak için çıkmıştır diller. Örneğin C dili resmen bir devrimdi yüksek seviyeli olmasına rağmen işlemciye çok iyi hükmedebilen bir dildi. Ama takım çalışmasına uygun değildi. Her ne kadar struct ve pointer kullanılsa da bir class yapısı oluşturulamıyordu dilde. Bu yüzden C++ çıktı. Diğer dillerde bir öncekinin eksikliği kapatmak üzere çıktı böyle gider. Yani en iyi yazılım dili diye bir şey yok hepsinin kullanım alanları farklı nerede kullanacağını bilmek önemli.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
C# ile kimse işletim sistemi yazmayı tercih etmez. C# daki bir işlem 1000 tane makine kodu gerekiyorsa C++ o işlemi tek makine koduyla yapabiliyor. Ve işletim sistemleri hızın en üst olduğu safhadadır. C ve C++ bile bazen yetmez işletim sistemi yazmada. Assembly kullanılır bazı yerlerde. Soruyorum sana C ve C++ bile işletim sistemi yazmada bazı kısımlarda çok yüksek seviye diye kullanılmazken neden C# kullanılsın? Malmı bu adamlar?[DOUBLEPOST=1437300164,1437299966][/DOUBLEPOST]
C++ ın hatalarını sana söylememesi bir eksi değildir. Dil sana güvendiğinden dolayı hatalarını göstermede C# ve ya Java kadar iyi değil. Eğer debug sistemi o kadar iyi olursa daha fazla makine kodu gerekecek işlemleri yapmak için ve bu da programların yavaş çalışmasına sebeb olacak.
Yanlış öğrenmişsiniz, C# da bir işlem 1000 tane makine kodu gerektiriyorsa C++'da aynı şekilde 1000 tane makine kodu gerektiriyor. Lakin siz C#'da bir işlem yaparken 1000 makine kodunun örnek vermek gerekirse sadece %20'ini değiştirebiliyorsanız C++'da ise %40'ını değiştirebiliyorsunuz. İşlem sayısı gene aynı, sadece işlem şekline müdahale edebiliyorsunuz. Kısacası size daha çok optimize ve detay, düzenleme yapma olağanı tanıyor. Tabi ne kadar olanak o kadar da o dili zorlaştırıyor.

Assembly'de Hello World Örneği (IBM-PC);
PHP:
dosseg
  .model small
  .stack 100h

  .data
  hello_message db 'Hello, World!',0dh,0ah,'$'

  .code
  main  proc
mov ax,@data
mov ds,ax

mov ah,9
mov dx,offset hello_message
int 21h

mov ax,4C00h
int 21h
  main  endp
  end main
C#'da;
PHP:
using System;
class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, world!");
    }
}
Siz şimdi diyorsunuz ki C# daha çok işlem yapıyor, hayır. İşlem sayısı aynı, sadece Assembly'de o yapılan işlemleri detaylı bir şekilde değiştirebiliyorsunuz farkları budur.[DOUBLEPOST=1437313192][/DOUBLEPOST]
En iyi yazılım dili diye bir şey var demek yanlış olmuş. Hepsinin kullanım alaları farklı. Bir diğerinin eksikliğini kapatmak için çıkmıştır diller. Örneğin C dili resmen bir devrimdi yüksek seviyeli olmasına rağmen işlemciye çok iyi hükmedebilen bir dildi. Ama takım çalışmasına uygun değildi. Her ne kadar struct ve pointer kullanılsa da bir class yapısı oluşturulamıyordu dilde. Bu yüzden C++ çıktı. Diğer dillerde bir öncekinin eksikliği kapatmak üzere çıktı böyle gider. Yani en iyi yazılım dili diye bir şey yok hepsinin kullanım alanları farklı nerede kullanacağını bilmek önemli.
C yüksek seviyeli bir değildir, düşük seviyeli bir dildir. Sen C ile Java'da yaptığın her şeyi yaparsın, C++'da yaptığın her şeyi de, Lua'dakileri de. Düşük seviyeli diller daha fazla optimize edilebilen dillerdir ve yüksek seviyeli dillerin yapabildiği her şeyi yapabilirler. Dilleri kendi kategorisinde şu iyidir bu iyidir diye belki kıyaslayabilirsin lakin C ile C#'ı kıyaslamak, C++ ile Java'yı kıyaslamak, Assembly ile C++'yı kıyaslamak saçmalıktan ibarettir.
 
Üst