Programlamaya hangi dilden başlanmalı?

  • Konuyu başlatan Konuyu başlatan 7019
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 38
  • Görüntüleme Görüntüleme 1B
Konuya ikinci intikalim ancak Python öğren diyen arkadaşlara bir sorum var. Ciddi anlamda Python gibi iğrenç bir syntaxe sahip, en ağababasının bile en fazla terminalde yaptığı ufak tefek hesap makinelerinden başka bir şey veremeyen bu dil size ne sunuyor? Backend demeyin, Java başı başına o sektörün standartıdır. Oyun geliştirme hiç diyemezsiniz, yapay zeka muhabbetleri vardı Tensorflow aldı yürüdü. Python'u şu anda ciddi ciddi başlangıç için öğrenilmesi gerekli yapan ne?

Ama şunu unutmayın, JavaScript ile yazılabilecek bir uygulama bir gün mutlaka JavaScript ile yazılacaktır.
 

Yani cidden diğer yazılarımda da görmüşsündür uzun cevaplar ve argümanlar sunmayı severim. Ancak Python yerip JavaScript gibi yol geçen hanına dönmüş bir dili hiç alakası yokken ortaya koymanız bana şu video ve yorumlarını hatırlattı.



Geçenlerde çok iyi bir webdeveloper'ın Twitch yayınını izliyordum ve adam cidden şiir gibi kod yazıyor. JS'te konsolda bir çıktı istiyor ancak neye göre alacağını bir türlü tutturamıyor. Gelen verinin Type'ını alıyor object dönüyor (Hadi ya ciddi misin?). En son şimdi hatırlamıyorum buldu veri tipini herif diyor ki "Ne ya bu XXX tipi? Ne zaman eklendi? Ne işe yarıyor? Acaba neyi çözüp neyi bozdular?"

Yani Python'u gömmeye syntax ile başlayıp syntax cehennemi bir dilin finalde sahne alması. Komedi unsuru.

"Virgül de koyabilirsin ama koymasan da olur. Kızabilirim de ama kızmayabilirim de. Gerçi sen her ihtimale karşı koy bazen koydun diye de kızabilirim ama kızarsam bakarsın orasına." -Sir JavaScript
 
Artık o "typings desteği yok js kullanılmaz aga" dönemi kapandı, TypeScript diye bir şey var. Neyin ne olduğunu rahatlıkla anlayabiliyorsun. Anlatmak istediğim Python yerine yavaş yavaş standartlaşan, artık herkesin bir ucundan tuttuğu ve neredeyse her şeyin yapılabildiği JavaScript'i örnek sunmaktı. Tabii yine de ne yapacağını konuyu açan arkadaş bilir. İstiyorsa gidip FORTRAN öğrensin, size gelecek olursak. Bunu kafama silah dayasalar bile söylerim ama Python berbat bir syntax'a sahip, yıllardır tüm kodlama dillerinde köşeli parantezi oraya açman gerekirken adamlar "boşluk atlıyon oluyo knk" dediler. Zoom out editör ortamında kod yazan adam sırf istemeden boşluk tuşuna bastı diye gidip 300 satırlık kodu satır satır kontrol mu etsin? Python öğrenmek bu devirde ölü yatırımdır. C'nin gereksiz ve yavaş bir supersetini öğrenip kendilerine yazılımcı diyen bir yığın yarattılar.
 

Haklısın. Tek bir boşluk yüzünden 1M satırlık kodum puf oldu. VS Code şurada bir mevuz var diyor ama bana ne be abi 1M satırı tek tek okuyup bulacağım kodu.

Artık TS var ama artık IDE'ler, editör eklentileri yok. Artıklar zaten sadece sizin için geçerli bizim argümanlar hâlâ Python 2 üzerinden çürüyor.

Sana sağlıklı kodlar be abi.
 
TLDR için en alta bakabilirsin.

Artık katmaya gerek yok 2024'de yaşıyoruz. Oyun motoru hesaba katıyor zaten. Demezler mi Indie stüdyolar ne yapsın? veya yeni öğrenenleri bu kadar yoğun bir şeye maruz bırakmak doğru mu?
Indie oyun stüdyolara eğer korkunç kötü değilse, optimizasyon açısından çok bir şey denmiyor. Sebebi engine built etmekle mi uğraşsınlar, yoksa oyunu mu inşa etsinler? Ancak koca koca firmalar devasa oyunları high level dillerle, saçma saçma layerlar üstüne birikmiş yapılarla inşa ediyor. Sonra da 4090 2k'da ağlamaya başlıyor oyunda.

Yeni öğrenenleri de maruz bırakmak açısından; eğer amaçları oyun geliştirmekse bence evet. Bunları bilmek daha sonrasında bir şeyleri daha çabuk kavramana yardımcı oluyor.

Firmalar oyun geliştirmeye para basma kapısı olarak baktığından, genelde high level dillerle yola devam ediyorlar. Fakat inhouse engine kullanan firmaların oyunları çoğu zaman daha optimizedir eğer low level language kullandılarsa ve ellerinde bu işi bilen mühendisler varsa.

Ek olarak her oyun motoru high level değil. Olmak zorunda da değil. Core engine mesela low level dil ile yazılıyor, game mech script dilleri yada high level dillerle yazılıyor. Motor yeterince optimizeyse bile, optimizasyon yapmayı bilmeyen insanlar high level dil kullanıp mech yazdığında, korkunç ötesi sonuçlara sebep oluyorlar.
Android Studio ve aynı zamanda Xcode/Swift ortamında derlenen cross-platform oyun motoru mu geliştirecek herkes oyun yapmak için?
Gerekirse evet. Large scale bir şey düşlüyorsan, elindeki motorla oyun abominasyon gibi performans veriyorsa, evet.
High-level dliler motor optimizeyse gayet de mantıklı oluyor. Günümüzde Desktop'da bile oyun geliştirsen Unreal Engine'den daha verimli bir motoru (oyunun çekirdeği olan motor) kaç kişilik ekiple yapacaksınız?
Unreal Engine high level değil ki. Unreal Engine'in arka planı sabah akşam pointer. Kasti olarak runtime memory management olan yapılardan kaçıyor adamlar. Runtime memory management her zaman ekstra yük demek işlemciye. 2D içinse Unreal Engine aşırı bloatware, dolayısıyla adam gibi bir performans vermiyor. Küçük bir ekip 2D yada küçük 3D oyunlar yapıyorsanız, graphics api olarak OpenGL kullanan bir motor yazmak çok zor değil. OpenCL, Vulkan yada DirectX kullanarak sıfırdan grafik api yap demiyorum. Onun oldukça optimize yapılmışı var.

Fakat sorun Unity vb high level motorlar. Korkunçlar. Kendi yapacağın bir OpenGL yada SDL üstüne kurduğun motor garanti bir şekilde Unity'de yazacağın herhangi bir 2D oyundan daha fazla performans verecektir tartışmasız. Bunun getirdiği ekstra bir yük var mı? Tabii ki. Ancak sanıldığı kadar zor değil. Zor olan fizik motor. Eğer fizik motor olarak sofistike bir şey lazım değilse, ona da basic bir şey yapıp yola devam ediyorsun. Collision detection basit yeterince.

3D işine gireceğin zamanda, C++ ile Unreal kullanırsan ve yeterince biliyorsan low level programlama, Unreal Engine'den muazzam performans alabiliyorsun.
Durumu olduğundan daha dramatik hale getirmeye gerek yok. Yeni başlayan kişiler eğer profesyonel olarak bu sektörde çalışmayı planlıyorlarsa, evet, low level öğrenmesi lazım fikrimce. Otursun, vaktini harcasın. Ne yaptığını, neyin ne işe yaradığını anlamadan, pratik yapanların hepsinin yazdığı kodları okuyorum. Gerçekten gözlerin kanar. Adamların bir kere daha bir şeyin time ve space complexity'yi nasıl etkileyeceğini düşünmek gibi bir özellikleri yok. Allah ne verdiyse kod yazıyorlar direkt high level dillerle, lak diye oyun geliştirmeye girenler.

Mobil oyun sektörünü Unity domine ederken ve bu kadar oturmuş bir oyun motoru olmasına rağmen, çıkan basit hypercasual oyunlarda kaç tane memory leak veya bug vardır sizce?
Bugdan geçinmiyorlar . Hypercasual oyunların çoğunun da etkileşimi sınırlı. Optimizasyonu dert edecek kadar büyük oyunlar değiller. Genelde de iyi performans vermiyorlar. Donanımların gücünden yararlanmaktan fazlasını yapmıyorlar basit grafikleri, basit oynanış döngülerine rağmen. Yinede bahsettiğim çıkan abonimationlar da onlar değiller zaten. Küçük çapta oyunlar bu konuşmanın dışında.

TLDR; Low level yazılmışı yeniden yazmak değildir. High level ile yazılmıştan uzak durup, yeterince optimize low leveli kullanmaktır. Gerekiyorsa yazılmışı yeniden yazarsın. Gerekmedikçe uğraşmaya değmez.
 

Java'da bunun için araçlar var, LWGJL gibi bir şeydi. Arayüzü için de kütüphaneler var. Java yazılımda tek adres, tek numara, ehe. Haşa yazılımda her şeye gücü yeter Java'nın .

Değil OpenGL'e, Vulkan için Ray Tracing bile yazarsın.
 
Son düzenleyen: Moderatör:
Merhaba, ben bir mobil uygulama geliştirmek istiyorum. Şu an için Python ile başlamayı düşünüyorum. Başka hangi dilleri önerebilirsiniz?

Uzun vadede size, programlama hayatınızda genel olarak fayda sağlaması amacıyla C/C++ önerilmiş konu altında. Bunu yapmak, amacınıza direkt olarak hizmet edemeyecek. Her ne kadar benim de ilk göz ağrım olsa da C/C++, öneresim gelmedi. "Çıktı" göremeyecek olmanızdan dolayı böyle dedim. Yani kod yazacaksınız da konsolda beyaz karakterler okumaktan öteye gitmeyeceksiniz büyük ihtimalle. Dilin temellerini öğrenme aşaması için dedim bunu. Grafiksel arayüzle ilgilenilen alanlar hakkında bilgim yok.

Ben web geliştirmeye yönelmeden önce üniversitedeki dersler gereği C/C++'ın temellerini öğrenmiştim ve sabah akşam C++ ile algoritmik problemler çözüyordum. Temelim iyice oturmuştu ama farkında olmadığım eksiklik, "çıktı" görmekti.
Web tarafına yöneldiğim an kodladığım ilk buton beni büyülemişti. : D Butona basıyorsun, sayaç ilerliyor... İnanılmaz. Demek ki böyle şeyler de kodlanabiliyormuş. O ana dek ön yargılarımdan ötürü (CSS korkum vs.) bu işlere girişememiştim de hayatımdaki bir dönüm noktası beni itelemişti, "zamanın geldiğini" hissetmiştim.

Bugünkü kafam olsa web tarafına çok daha önceden yönelirdim. Yazdığın kodun dinamik bir web sayfasına bürünmesi acayip motive edici bir durum. Ne var ki programlama hayatımda C-gillerin önemini yadsıyamam. Temelimi sağladılar sonuçta.



Neyse, kendi hikâyemden de bir parça aktarayım istedim size. Fazla uzatmayayım. Gerçekten kararlı ve istekliyseniz C-gillere öneriler doğrultusunda göz atabilirsiniz ama direkt amacınıza yönelik dillere yönelmeniz kulağa daha güzel geliyor. Motivasyon çok önemli bir faktör. Zaman bol, her şeyi öğrenmenin zamanı gelecektir.

Ben mobil uygulama konusunda söz sahibi olamam çünkü bilgim yok, yalnızca teknolojilerin isimlerini bilmekle yetiniyorum. Birtakım öneriler yapılmış zaten, ne güzel. Yalnızca şunu söyleyebilirim ki olur da web uygulaması geliştirmeye yönelmek isterseniz tavsiye ederim. İki alan arasındaki avantajlar ve dezavantajlar hakkında pek bilgim yok fakat web uygulaması geliştirdiğiniz takdirde bu uygulamayı mobil cihazınızdaki tarayıcınız üzerinden de açabileceksiniz. "Standalone" olmayacak mesela, o var. "İnternette yaşatmanız" gerekecek uygulamayı ama onun için de çeşitli ücretsiz servisler mevcut.



Ciddi anlamda Python gibi iğrenç bir syntaxe sahip, en ağababasının bile en fazla terminalde yaptığı ufak tefek hesap makinelerinden başka bir şey veremeyen bu dil size ne sunuyor?

Python'un syntaxini beğeniyorum, kendine has ve başlangıç dostu. Renkler ve zevkler tabii, bir şey diyemem düşüncenize.

Diğer konuya değinecek olursak Python'un kütüphane desteğini küçümsememek gerek. Resmen ne yapmak isteseniz o amaca yönelik bir kütüphane mevcut çünkü dil buna çok elverişli. İsviçre çakısı. Mesela benim bu sıralar en haşır neşir olduğum kütüphane pandas, veriyle uğraşmak için birebir. Bu örnek, sahilde bir kum tanesinden ibaret.

Hem dil hem de kütüphaneleri çok şey sunuyor, saymakla bitmez. Ha, asıl konumuz olan mobil uygulama geliştirmek için ne kadar tercih edilesi, onu bilmiyorum. İkisine aynı cümlede pek rastlamadım.
 
Size katılıyorum hocam. Java cidden dipsiz çukur. LWGJL kütüphanesi bir tür oyun motoru bu arada. (Minecraft içinde kullanılıyor) Java'nın gücü cidden her şeye yetiyor.

"Biz öleceğiz ama C dili yaşamaya devam edecek" gibi bir lafı insanlar kaç sene önceden ortaya atmış ve sende benim için bunun kesin bir kanıtı oldun. Programlamaya nasıl başlarsan başla bir şekilde mutlaka C/C++ ile uğraşasın geliyor veya uğraşmış oluyorsun.
 

Kanıt olarak ele alacağınız biri değilim pek ama sağ olun. : )) Hobi düzeyinde kullanıyorum çünkü. Profesyonel düzeyde de kullandığım oluyor ama daha çok hobim için kullandığımdan dili tam kapasitede kullan(a)mıyorum. İş, dili hakkıyla kullanmaya gelince C/C++ zor. Ha, uğraşması keyifli ama. : D

Şöyle diyeyim: Algoritmik problemler çözerken hız ve performans en kritik nitelikler: Kodlanmış algoritma tutarlı ve olabildiğince hızlı çalışmalı. Hâl böyle olunca C++ biçilmiş kaftan. (C kullanan bazı "hasta" profesyoneller de var.) Python'la falan da belli bir noktaya gelebilirsiniz ama türlü durumlarda C++'a muhtaç kalıyorsunuz. Özellikle veri yapıları bakımından oldukça kullanışlı. Bundan dolayı da yaşamaya devam etmesi için çok geçerli sebepleri var ki söylendiği üzere mesela oyun geliştirmede de kendine yer buluyor, yine sağladığı performans gereği.
 
İfadeler: 341
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…