Java vs C# C++ C

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
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]
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.
C Assembly ye göre yüksek seviyeli bir dildir. Fortran da öyle.
Java ve C#'a göre düşük seviyeli kalır ama Assemmbly ye göre kıyaslarsan yüksek seviyeli bir dil olur.
Makine koduna gelirsek, tabii ki 1000 makine kodunu örnek olarak verdim ama bazı kısımlarda C++ daha az makine kodu kullanır. Örnek vermek gerekirse, C# da bir değişkene ilk olarak 0 değeri atanır. Ama C++ da değişkene ilk değer atanmaz. Değişkenin ait olduğu hafıza hücresinde daha önceden hangi değer varsa değişken o değeri alır. Bunun sebebide daha fazla makine kodu kullanılmasından kaçınmaktır. Ayrıca C# programcıya kodun hatasını söylemekte daha sıkı davranır. Ama C++ daha gevşektir bu konuda. Programcıya güvenir. Eğer debug etme konusunda c# kadar sıkı davranırsa daha fazla makine kodu kullanılır ve bu da performansı etkiler.
Ayrıca yüksek seviyeli diller ile yapılabilen şeyler C++ ile de yapılır. Ama bazı işlemler daha kısa sürer. O yüzden bazı yerlerde yüksek seviyeli diller kullanmak daha mantıklı olur.
 
Son düzenleme:

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
C Assembly ye göre yüksek seviyeli bir dildir. Fortran da öyle.
Java ve C#'a göre düşük seviyeli kalır ama Assemmbly ye göre kıyaslarsan yüksek seviyeli bir dil olur.
Makine koduna gelirsek, tabii ki 1000 makine kodunu örnek olarak verdim ama bazı kısımlarda C++ daha az makine kodu kullanır. Örnek vermek gerekirse, C# da bir değişkene ilk olarak 0 değeri atanır. Ama C++ da değişkene ilk değer atanmaz. Değişkenin ait olduğu hafıza hücresinde daha önceden hangi değer varsa değişken o değeri alır. Bunun sebebide daha fazla makine kodu kullanılmasından kaçınmaktır. Ayrıca C# programcıya kodun hatasını söylemekte daha sıkı davranır. Ama C++ daha gevşektir bu konuda. Programcıya güvenir. Eğer debug etme konusunda c# kadar sıkı davranırsa daha fazla makine kodu kullanılır ve bu da performansı etkiler.
Ayrıca yüksek seviyeli diller ile yapılabilen şeyler C++ ile de yapılır. Ama bazı işlemler daha kısa sürer. O yüzden bazı yerlerde yüksek seviyeli diller kullanmak daha mantıklı olur.
Siz sanırsam yazılım seviyelerini pek bilmiyorsunuz, düşük seviyeli diller makine diline yakın dillerdir yüksekler ise makine diline uzaktır, yani hangisi hangisine yakın diye bir şey yoktur, hangisi makine diline daha çok yakın vardır. Biz burada hangisinin öğrenilmesi daha kolay diye bir tartışma yapmıyoruz, diyoruz ki en iyi dil hangisidir. En iyi dil en çok detay ve optimize eklenebilen dildir. 1-2 işlem farklar elbet oluşabilir lakin bir programda %0,001'den daha az yavaşlık yapacak şeylerdir bunlar.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Siz sanırsam yazılım seviyelerini pek bilmiyorsunuz, düşük seviyeli diller makine diline yakın dillerdir yüksekler ise makine diline uzaktır. Biz burada hangisinin öğrenilmesi daha kolay diye bir tartışma yapmıyoruz, diyoruz ki en iyi dil hangisidir. En iyi dil en çok detay ve optimize eklenebilen dildir. 1-2 işlem farklar elbet oluşabilir lakin bir programda %0,1'den daha az yavaşlık yapacak şeylerdir bunlar.
Seviye kavramını gayet iyi biliyorum. C ve C++ sistem programlama için vazgeçilmez dillerdir. Ama uygulama türü şeyler yapımında C# ve Java tercih edilir. C/C++ ile de uygulama yapılır tabii ki ama C# ve Java gibi diller uygulama türü şeyler yapımında daha iyi bir ortam sunarlar. Mesela C++ da pointer çok lazım iken C# ta çok nadir kullanılır hatta Java da Pointer yoktur. İhityaçtan kaynaklanan durum bu. C#'ta direk managed kodlar var. .net fw var. Pointerlara çok nadir lazım oluyor. Ama sistem programlama yapacağım zaman C++ tercih ederim çünkü pointer yapısı C++ da çok kullanışlı. İhtiyaca göre şekilleniyor.[DOUBLEPOST=1437317019,1437316394][/DOUBLEPOST]En basidinden
Kod:
int k = 5;
float a = 2.3f;

k=a;
Bu işlemi C# ta yapsak hata verir. C++ ta uyarı veriyor ama C# ta hata veriyor. C# programcıya daha yardımcı oluyor. Onun hata yapmasını daha fazla engelleyici bir programlama dili. C++ programcıyı daha özgür bırakır. C++ bu tarz güvenlik önlemleri almaz çünkü güvenlik önlemi demek daha fazla makine kodu demek. Bu işlemde olduğu gibi debug açısından bir sürü fark var. eğer C++ C# gibi güvenilk önlemlerini fazla alsaydı dikkate alınacak bir perfrormans yavaşlaması oluşurdu.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Seviye kavramını gayet iyi biliyorum. C ve C++ sistem programlama için vazgeçilmez dillerdir. Ama uygulama türü şeyler yapımında C# ve Java tercih edilir. C/C++ ile de uygulama yapılır tabii ki ama C# ve Java gibi diller uygulama türü şeyler yapımında daha iyi bir ortam sunarlar. Mesela C++ da pointer çok lazım iken C# ta çok nadir kullanılır hatta Java da Pointer yoktur. İhityaçtan kaynaklanan durum bu. C#'ta direk managed kodlar var. .net fw var. Pointerlara çok nadir lazım oluyor. Ama sistem programlama yapacağım zaman C++ tercih ederim çünkü pointer yapısı C++ da çok kullanışlı. İhtiyaca göre şekilleniyor.[DOUBLEPOST=1437317019,1437316394][/DOUBLEPOST]En basidinden
Kod:
int k = 5;
float a = 2.3f;

k=a;
Bu işlemi C# ta yapsak hata verir. C++ ta uyarı veriyor ama C# ta hata veriyor. C# programcıya daha yardımcı oluyor. Onun hata yapmasını daha fazla engelleyici bir programlama dili. C++ programcıyı daha özgür bırakır. C++ bu tarz güvenlik önlemleri almaz çünkü güvenlik önlemi demek daha fazla makine kodu demek. Bu işlemde olduğu gibi debug açısından bir sürü fark var. eğer C++ C# gibi güvenilk önlemlerini fazla alsaydı dikkate alınacak bir perfrormans yavaşlaması oluşurdu.
Tekrar dediğim gibi, biz burada en iyi yazılım dilini konuşuyoruz programcıya hangisi kolaylık sağlar demiyoruz. Kullandığınız IDE'ye göre verilen hata değişecektir bunun dil ile bir alakası yoktur. Siz Not Defteriyle C# kodlayın, bir de C++ ile, diller hata yapılmasını engellemez bunu yapan IDE'dir. Gene de sizin dediğiniz gibi olsa bile ki değil, C++ C# gibi güvenlik önlemi alsaydı dikkate alınacak bir performans yavaşlaması C# kadar olurdu. Tüm dillere hakim, uzman birisi C'de yapılan bir şeyi belki Java veya C#'da gerekli özellikler mevcut olmadığı için yapamaz. Ama C kullanarak Java'da yaptığı her şeyi yapabilir. Bir şey iyi dil yapanda budur, birinde yapılanın öbüründe yapılamaması. Yapılsa da gerekli optimizenin ve detayın kullanılmaması. Bu yüzden düşük seviyeli diller her zaman yüksek seviyeli dillerden iyidir. Bir yazılım dili kolay olmak zorunda değildir, iyi bir ortam sunmak zorunda da değildir, kullanmasını bilen zor ortamda da yapar, kolay ortamda da.
 

TheMuhammed2188

Java <3
En iyi cevaplar
0
Tekrar dediğim gibi, biz burada en iyi yazılım dilini konuşuyoruz programcıya hangisi kolaylık sağlar demiyoruz. Kullandığınız IDE'ye göre verilen hata değişecektir bunun dil ile bir alakası yoktur. Siz Not Defteriyle C# kodlayın, bir de C++ ile, diller hata yapılmasını engellemez bunu yapan IDE'dir. Gene de sizin dediğiniz gibi olsa bile ki değil, C++ C# gibi güvenlik önlemi alsaydı dikkate alınacak bir performans yavaşlaması C# kadar olurdu. Tüm dillere hakim, uzman birisi C'de yapılan bir şeyi belki Java veya C#'da gerekli özellikler mevcut olmadığı için yapamaz. Ama C kullanarak Java'da yaptığı her şeyi yapabilir. Bir şey iyi dil yapanda budur, birinde yapılanın öbüründe yapılamaması. Yapılsa da gerekli optimizenin ve detayın kullanılmaması. Bu yüzden düşük seviyeli diller her zaman yüksek seviyeli dillerden iyidir. Bir yazılım dili kolay olmak zorunda değildir, iyi bir ortam sunmak zorunda da değildir, kullanmasını bilen zor ortamda da yapar, kolay ortamda da.
2 + 2 = 5 :(
 

Epistomoloji

Lapis Toplayıcısı
En iyi cevaplar
0
Diller arasında makine kodu farkı tabii ki de vardır, assembly'de 8 byte boyutu olan bir program C ile 500-1000 byte arası boyuta çıkıyor. Bu da arka planda daha çok makine kodunun çalışması demek.
 

EminGny

İşsiz
En iyi cevaplar
1
Tamam o zaman, bir programlama cahili olarak şu soruyu soruyorum:
sa yazdığım zaman as diyen bi programı farklı dillerde yazın
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Diller arasında makine kodu farkı tabii ki de vardır, assembly'de 8 byte boyutu olan bir program C ile 500-1000 byte arası boyuta çıkıyor. Bu da arka planda daha çok makine kodunun çalışması demek.
Şimdi siz diyorsunuz, Assembly ile yazılmış bir Hello World örneği ile C ile yazılmış Hello World arasında 100 500 byte var. Dediğiniz cidden komik, bunu yabancılara söyleyin size ciddi ciddi gülerler.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Tekrar dediğim gibi, biz burada en iyi yazılım dilini konuşuyoruz programcıya hangisi kolaylık sağlar demiyoruz. Kullandığınız IDE'ye göre verilen hata değişecektir bunun dil ile bir alakası yoktur. Siz Not Defteriyle C# kodlayın, bir de C++ ile, diller hata yapılmasını engellemez bunu yapan IDE'dir. Gene de sizin dediğiniz gibi olsa bile ki değil, C++ C# gibi güvenlik önlemi alsaydı dikkate alınacak bir performans yavaşlaması C# kadar olurdu. Tüm dillere hakim, uzman birisi C'de yapılan bir şeyi belki Java veya C#'da gerekli özellikler mevcut olmadığı için yapamaz. Ama C kullanarak Java'da yaptığı her şeyi yapabilir. Bir şey iyi dil yapanda budur, birinde yapılanın öbüründe yapılamaması. Yapılsa da gerekli optimizenin ve detayın kullanılmaması. Bu yüzden düşük seviyeli diller her zaman yüksek seviyeli dillerden iyidir. Bir yazılım dili kolay olmak zorunda değildir, iyi bir ortam sunmak zorunda da değildir, kullanmasını bilen zor ortamda da yapar, kolay ortamda da.
Şimdi, diyorsunki IDE ye göre değişir. IDE lerin syntax vb. farkı olabilir ama dillerin kullanacağı derleyiciler aynıdır. Şöyle bir durum olabilir. Visual Studio Visual C++ derleyicisini kullanır,Code Blocks ise Mingw. İkisi farklı C++ derleyicileridir ama derleme prensipleri aynıdır. Farkları derleme hızında vb. ortaya çıkar. Ama C++ tüm derleyicilerinin derleme prensipi aynıdır. Ve o prensiplerin içinde nerede uyarı verip vermeyiciğide vardır. IDE ler derleme işlemini yapmazlar.
Eğer C++ C# kadar güvenlik önlemi alsaydı yavaşlama C# gibi olur evet ama C++'ın C# gibi yavaş olması o dilin performansını büyük ölçüde etkiler. C++ performansla övünen bir dildir ve performansı C# gibi olursa performans konusunda bir özelliği kalmaz. Eğer C++ en iyi dil olsaydı, Diğer dillerin çıkarılma ihtiyacı duyulmazdı. Mesela C++ ta byte code özelliği yok. Java da uygulamayı her ortamda çalıştırabilirsin ama C++ buna el vermez. C++ buna el verseydi Java da çıkmazdı zaten. Java nın çıkmasının en büyük nedenlerinden biri odur. O yüzden en düşük seviye dil en iyisidir diye bir şey olamaz. O zaman gidelim 0 ve 1 ler ile ve ya Assembly ile programlarımızı yazalım. Sonuçta senin dediğine göre en düşük seviyeli dil en iyi dil ise.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Şimdi, diyorsunki IDE ye göre değişir. IDE lerin syntax vb. farkı olabilir ama dillerin kullanacağı derleyiciler aynıdır. Şöyle bir durum olabilir. Visual Studio Visual C++ derleyicisini kullanır,Code Blocks ise Mingw. İkisi farklı C++ derleyicileridir ama derleme prensipleri aynıdır. Farkları derleme hızında vb. ortaya çıkar. Ama C++ tüm derleyicilerinin derleme prensipi aynıdır. Ve o prensiplerin içinde nerede uyarı verip vermeyiciğide vardır. IDE ler derleme işlemini yapmazlar.
Eğer C++ C# kadar güvenlik önlemi alsaydı yavaşlama C# gibi olur evet ama C++'ın C# gibi yavaş olması o dilin performansını büyük ölçüde etkiler. C++ performansla övünen bir dildir ve performansı C# gibi olursa performans konusunda bir özelliği kalmaz. Eğer C++ en iyi dil olsaydı, Diğer dillerin çıkarılma ihtiyacı duyulmazdı. Mesela C++ ta byte code özelliği yok. Java da uygulamayı her ortamda çalıştırabilirsin ama C++ buna el vermez. C++ buna el verseydi Java da çıkmazdı zaten. Java nın çıkmasının en büyük nedenlerinden biri odur. O yüzden en düşük seviye dil en iyisidir diye bir şey olamaz. O zaman gidelim 0 ve 1 ler ile ve ya Assembly ile programlarımızı yazalım. Sonuçta senin dediğine göre en düşük seviyeli dil en iyi dil ise.
IDE'lerde Syntax farkı olmaz, çünkü IDE'ler Syntax hatalarını düzeltir ve her dil için farklı IDE'ler veya IDE sürümleri geliştirilmiştir. Uyarıdan kastın verdiğin IDE'de kod yazarken ise bu IDE ile ilgilidir, derleme hatası ise; derleme sonucu IDE tarafından okunur ve ona göre bir cevap verilir. Ben istersem bir IDE yazarım ve hiçbir hatayı göstermez, ama yazılımı çalıştırırken hata verebilir. Dediğin gibi en iyi dil en performanslı, en detaylı, en optimize edilen dildir. Eğer yapabiliyorsanız Assembly hatta makine dili ile program yapmanızda fayda var. Tabi o kadar düşük seviyeli dillerde bilgiliyseniz neden sıradan programlar yapasınız ki, 1'ler 0'lar veya Assembly ile bir işletim sistemi bile yazabilirsiniz. Belki de bir oyun, sizin seçiminiz. Assembly'de kodladığınız şekle bağlı olarak uygulamalarınız her işletim sisteminde çalışır, C'de de. C++'dan emin olmamakla beraber siz isterseniz yaptığınız bir yazılımın uyarlamasını Linux'a da, Mac'e de yapabilirsiniz.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
IDE'lerde Syntax farkı olmaz, çünkü IDE'ler Syntax hatalarını düzeltir ve her dil için farklı IDE'ler veya IDE sürümleri geliştirilmiştir. Uyarıdan kastın verdiğin IDE'de kod yazarken ise bu IDE ile ilgilidir, derleme hatası ise; derleme sonucu IDE tarafından okunur ve ona göre bir cevap verilir. Ben istersem bir IDE yazarım ve hiçbir hatayı göstermez, ama yazılımı çalıştırırken hata verebilir. Dediğin gibi en iyi dil en performanslı, en detaylı, en optimize edilen dildir. Eğer yapabiliyorsanız Assembly hatta makine dili ile program yapmanızda fayda var. Tabi o kadar düşük seviyeli dillerde bilgiliyseniz neden sıradan programlar yapasınız ki, 1'ler 0'lar veya Assembly ile bir işletim sistemi bile yazabilirsiniz. Belki de bir oyun, sizin seçiminiz. Assembly'de kodladığınız şekle bağlı olarak uygulamalarınız her işletim sisteminde çalışır, C'de de. C++'dan emin olmamakla beraber siz isterseniz yaptığınız bir yazılımın uyarlamasını Linux'a da, Mac'e de yapabilirsiniz.
Söylediğiniz şeyler çok yanlış.

Teknoloji üstüne koyarak, sürekli birleştirip 3-5 şeyi tek seferde yapmaya başlayarak ilerler. En iyi dil yapmak istediğin şeyi en kısa ve en basit yönden yapmanı sağlayan dildir. En iyi dilin tanımı budur.
 

KRHN

Yazılımcı Beyefendi
En iyi cevaplar
0
Söylediğiniz şeyler çok yanlış.

Teknoloji üstüne koyarak, sürekli birleştirip 3-5 şeyi tek seferde yapmaya başlayarak ilerler. En iyi dil yapmak istediğin şeyi en kısa ve en basit yönden yapmanı sağlayan dildir. En iyi dilin tanımı budur.
3-5 şeyi tek seferde yapmak demek o 3-5 şeyin tamamını kullanmadan yapmaktır, söyleyin bana. Java da bir yazı Print ederken neyini değiştirebiliyorsunuz, durun ben söyleyeyim ne yazacağını. Lakin Assembly'de değiştirdiğiniz şeylere bakarsanız kendiniz göreceksiniz.[DOUBLEPOST=1437320686,1437320593][/DOUBLEPOST]
Orada mevcut Assembly kodu herhangi bir yazı yazdırmıyor, dikkatinizi çekerim. Zaten performans için Assembly'i öneriyorum fakat o kadar bayt farkı olması pek mümkün değil.
 

Epistomoloji

Lapis Toplayıcısı
En iyi cevaplar
0
3-5 şeyi tek seferde yapmak demek o 3-5 şeyin tamamını kullanmadan yapmaktır, söyleyin bana. Java da bir yazı Print ederken neyini değiştirebiliyorsunuz, durun ben söyleyeyim ne yazacağını. Lakin Assembly'de değiştirdiğiniz şeylere bakarsanız kendiniz göreceksiniz.[DOUBLEPOST=1437320686,1437320593][/DOUBLEPOST]
Orada mevcut Assembly kodu herhangi bir yazı yazdırmıyor, dikkatinizi çekerim. Zaten performans için Assembly'i öneriyorum fakat o kadar bayt farkı olması pek mümkün değil.
Sonuçta byte farkı var. Assembly'de yazı yazdırsak bile C kadar büyük bir boyuta ulaşmaz.
 
Üst