Programlama Dillerinin Sınıflandırılması

Tam şunu demelik olmuş.
Nesneye yönelik kısmında C+ yazmışsınız o C++ olacak herhalde.
Oraya Python da girer.
Matlab mühendisliğe giriyordur.
Javascript de bir yerlere giriyordur.
C++ ile de sistem programlama yapılabilir.
C ile C++ aynı seviyeli olmamalı bence.
Bu böyle gider. En iyisinin gerekmedikçe hiçbir şey söylememek olduğunu düşünüyorum.


Öyle. En azından teoride yapılabilir. Ama yapılan işe göre kansere kadar yolu var. Burada güzelce anlatılıyor. Özet olarak hata yapmasının kolay olması ve o hatayı düzeltmenin kolay olmaması sıkıntı çıkartıyor. Bunun dışında gayet hızlı ve güçlü bir dil. Aygıt sürücüsü hatta işletim sistemi bile yazılabilecek bir dil.
Hayır ben genel amaçlı biliyorum. Aha da link:https://www.google.com/url?sa=t&sou...FjAAegQIBRAC&usg=AOvVaw2B-X1cmCs1TKGKPMN3b0l0
 
Hayır ben genel amaçlı biliyorum.
Evet, genel amaçlı olarak kullanılabilsin diya tasarlandı. Attığım linki okusaydınız orada da onu söylüyor. Ama kimsenin C++ ile Web işi yaptığını görmedim ben.
Kurşun kalemle de tüm yazma işlemleri yapılabilir ama resmi işlerde tükenmez kalem kullanılıyor. Çünkü daha etkili.
 
Evet, genel amaçlı olarak kullanılabilsin diya tasarlandı. Attığım linki okusaydınız orada da onu söylüyor. Ama kimsenin C++ ile Web işi yaptığını görmedim ben.
Kurşun kalemle de tüm yazma işlemleri yapılabilir ama resmi işlerde tükenmez kalem kullanılıyor. Çünkü daha etkili.
Aslında Cpp ile Web işi yapsak daha hızlı olabilir mi? Çünkü performanslı ya.
 
Aslında Cpp ile Web işi yapsak daha hızlı olabilir mi? Çünkü performanslı ya.

Web isinde sistemi yavaslatan senaryolarin %99 inda IO bekleme sureleri. O yuzden gorece dusuk performansli scripting dillerinde de yazsan sorun olmaz ( PHP, Python, JS gibi ). 10 satirda web servis acabilecegin node.js varken kimse C++ ile ugrasmaz.
 
Web isinde sistemi yavaslatan senaryolarin %99 inda IO bekleme sureleri. O yuzden gorece dusuk performansli scripting dillerinde de yazsan sorun olmaz ( PHP, Python, JS gibi ). 10 satirda web servis acabilecegin node.js varken kimse C++ ile ugrasmaz.
Yani Cpp performanslı olsa bile IO bekleme sürelerinden dolayı kimse Cpp ile uğraşmaz lakin IO bekleme süresi olmasa uğraşan olur muydu?
 
Yani Cpp performanslı olsa bile IO bekleme sürelerinden dolayı kimse Cpp ile uğraşmaz lakin IO bekleme süresi olmasa uğraşan olur muydu?

Tabi ki, eger programlama dilinin hizi direkt olarak sistemin performansini etkileyen faktorse ve aradaki fark onemliyse onu low level dillerle yazmak gerekir.
Web siteleri icin durum boyle degil, 260ms de cevap veren bir web sitesi Cpp ile yazilsaydi 255ms de cevap verecekti. Kimse %2 lik kazanc icin ugrasmaz. ( Her web sitesi icin bu ornek gecerli degil )
 
Tabi ki, eger programlama dilinin hizi direkt olarak sistemin performansini etkileyen faktorse ve aradaki fark onemliyse onu low level dillerle yazmak gerekir.
Web siteleri icin durum boyle degil, 260ms de cevap veren bir web sitesi Cpp ile yazilsaydi 255ms de cevap verecekti. Kimse %2 lik kazanc icin ugrasmaz. ( Her web sitesi icin bu ornek gecerli degil )
E oyunlarda ping seviyesi nasıl daha düşük oluyor? Sonuçta ikisinde de sunucuyla bağlantı oluyor.
 
E oyunlarda ping seviyesi nasıl daha düşük oluyor? Sonuçta ikisinde de sunucuyla bağlantı oluyor.

Bunu aciklamak icin biraz daha teknik konusmak gerek ama kabaca soyle.

Multiplayer oyun client ve serverdan olusuyor. Senin bilgisayarina kurdugun baya oyun motorunda yazilmis client. Grafik vs burada render ediliyor serverdan gelen dataya bagli olarak.

Bunun server kismini low level'da yazmak zorunda degilsin ama oyun serverlari bildigimiz web sitelerinden farkli olarak TCP ile degil agirlikli olarak UDP ile calisirlar. Yani serverin planlanan tick-rate ine gore oyun server icinde simule edilir ve ona gore karar verir sunucu. 40 kisilik bir battleground haritasinda server her client'a ( tick-rate 30 olsun, BF sunuculari 30 TR ile calisir) saniyede 30 defa "update" gonderir. Yakindaki oyuncularin konumu degisen olaylar vs. Server kendi icinde oyunu simule etmekle ve saniyede 30 defa her baglanan oyuncuya degisen durumu soylemekle yukumludur. Bu da kullanicilardan bilgi almak -> alinan bilginin process edilmesi -> kullanicilari bilgilendirmek icin gecen surenin saniyenin 30'da birinden kisa surede halledilmesi anlamina gelir. 33ms icinde tum processing isini yapmak zorundasin. Burada IO beklemesi minimal duzeyde ( network read/write IO dur aslinda cunku ana UDP oldugu icin ve paralelize yapildigi icin processing suresine etkisi minimaldir ) , o sebeple oyun serverlarini C++ ile yazmak iyi fikir. Bunu Java ya da C# ile de yaparsin. Ama node.js ile zor yaparsin. Competitive CS-GO ornegin 128 tickrate ile calisiyor. Bu performansta server yazmak icin dogru dili secmen gerekiyor.

Ayrica tum bunlarin ping seviyesiyle bir alakasi yok, ping kullaniciya ait bir parametre, server in performansinin senin ping degerin uzerinde hic bir etkisi yok. Ama ben sormaya calistigin seyi anladim diye dusunuyorum.

Web sitesinde durum cok farkli, teknopat'a giriyorsun, konuya tikliyorsun; 1 sn bekleyebilirsin konunun acilmasi icin. Sorun degil. Bunu 0.5 sn yapsalar senin icin daha iyi ama 5 saniye beklemedigin surece sorun etmeyeceksin. Daha genis bir hareket alanin var o yuzden high level dillerin avantajlarindan faydalanabilirsin. Ayrica serverin 1 sn de cevap vermesi de dedigim gibi sunucu performansindan degil, veritabani performansindan ya da resim , font vb gibi statik objelerin yuklenme performansindan kaynaklaniyor.
 
Son düzenleme:
@bitwise Oyun sunucularında neden TCP kullanılmıyor? Tamam hızlı da kayıpların oluşmasını nasıl engelliyorlar?

Engellemiyorlar. UDP o kadar hizli ki arada kayip olmasini goze aliyorlar. Streaming sistemleri de (youtube, twitch vs ) UDP kullaniyor ve siz izlediginiz videoda bazi frame lerde olusan network kaynakli bozukluklari fark etmiyorsunuz bile.

Buna ek olarak oyun client'lari da prediction denilen bir sey yapiyor, server'dan cevap gelinceye kadar gelecek cevabin ne olacagini "tahmin" edip ona gore harekete devam ediyorlar ki kullaniciya kesintisiz bir oyun oynuyormus gibi bir algi verebilsin. Bazi oyunlarda lag yasadiginiz zaman A noktasinda B noktasina isinlandiginizi fark edersiniz, bu prediction ile serverdan gelen cevap arasinda uyumsuzluk oldugunda yapilan bir sey.
Client-side prediction - Wikipedia

O kadar fazla data trafigi var ki UDP paket kayiplari ya da bozukluklar client tarafinda normalize edilip son kullaniciya hissedilmemeye calisiyor.
Ayrica server kullanicilara gonderdigi bilgileri genelde tamamen aklinda tutuyor. ( Dota gibi oyunlarin replay ini bunun uzerinden gonderiyor )

Ornegin sen 466. state sirasinda sana gelen bilgide problem yasadigini dusunuyorsun, server'a "Haci bana 466 i bir daha gondersene" diyebiliyorsun. Server'da hepsi var.

Bunun gibi farkli baska mekanizmalar da kullaniliyor, hack kontrolu, data bozulmasi, state kaybi vs gibi.
UDP gonderilen paketlerin gonderilme sirasini garanti etmiyor. Yani serverin gonderdigi 30. paket 40. paketten sonra ulasabilir client'a. Bunlari duzenleyip anlamlandirmak client'in sorumlulugunda.

Server-client birlikte calisip kullanicinin hissettigi seyin gercekci olmasi icin elinden geleni yapiyor anlayacagin : )
 

Yeni konular

Geri
Yukarı