folder Tahribat.com Forumları
linefolder Programlamaya Giriş
linefolder Hangi Programlama Dili Daha İyi? [Makale]



Hangi Programlama Dili Daha İyi? [Makale]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick6
    0x656e
    0x656e's avatar
    Kayıt Tarihi: 19/Mayıs/2012
    Homo

    Sürüp giden bir tartışmadır bu. Hangi programlama dili daha iyi?
    İnsanlara tek tek sorarsanız, genel olarak alacağınız cevap, tek bir dil olacaktır. Her biri de bu seçimini hiddet ve şiddetle şu andan sonsuza kadar savunacaktır. Neden mi? Çünkü her biri kendi problemi için doğru olan programlama dilini seçmiştir. Bunu seçerken bir-iki başka dil de denemiştir, onların işe yaramadığını da görmüştür. Yani, söylediği doğrudur. Kendi problemi için.
    Şöyle bir laf var: Eğer elinizdeki tek alet çekiç ise, her şey gözünüze çivi gibi görünmeye başlar…
    Ama her şey çivi değildir… Vida vardır, cıvata vardır, perçin vardır…
    Peki, hangi dili öğrenmeli, hangisini kullanmalı? C var, C++ var, Java var, C# var, Perl var, Python var, Javascript var…
    Şöyle bir üzerinden geçelim durumların, bakalım bir yere varabiliyor muyuz…
    C:
    Hey baba torikler… C, yaşça benden büyüktür, 1970 doğumlu olarak kırk yaşına yakındır. Seviye olarak, assembly seviyesine çok yakındır. Programcıya maksimum esnekliği sağlar — inanılmaz yanlış şeyler yapmak dahil, her şeye izin verir; genel olarak “programcının ne yaptığını bildiğini” varsayar. Bir CPU’dan olabilecek en yüksek performansı çıkartmak için ideal dildir — ancak çok kısıtlı durumlarda (gerçekten çok kısıtlı) C yerine assembly diline dönme gereği duyulur. Mesela, device driver veya “number crunching” (yani sırf matematiksel hesaplama) işi yapacaksanız, ideal programala dilir, pek eline su dökecek dil de bulamazsınız. Ancak öte yandan, hafıza yönetimi tamamen programcıya bırakılmıştır. Thread desteği kütüphane aracılığıyla vardır. Network desteği de keza. Bol miktarda “boilerplate” kod gerektirir. (Boilerplate kod dediğimiz şey, yani aslında iş yapmayan, ancak o dilin yazım kurallarına uymak için yazılması gereken kod kısımları…) Dolayısyla, web programcılığı, database işleme veya daha genel olarak bilgi sistemleri işleri için pek uygun bir seçim olmayacaktır. Yazmaya yazılır da, uzun zaman alır ve zor olur. Özetle, “RAD” denilen, “rapid development” işi için çok iyi bir seçim değildir. C’yi severiz, saygımız vardır.
    C++:
    İşte size çıfıt çarşısı misali bir dil. İçinde o kadar çok şeyi barındırır ki, ne idüğü belirsizdir aslında. Yani içinde o kadar çok çeşit programlama şekli içerir ve o kadar hiç birini zorlamaz ki, neredeyse “amorf” bir programlama dilidir. Dili icad eden Stroustroup (adını doğru yazmışızdır umarım) dilin popüler olması için, herkesin her istediğini dile koymuştur. Object-oriented programlamayı destekler, yani “class” meselesi. Template programlama vardır. İsteyen düz C gibi de kullanabilir. Function ve operator overloading’e müsaade eder ki, bunlar beter şeylere dönüşebilir. Çok iyi kod yazmak (iyi = anlaşılır) mümkün olduğu gibi, iğrenç kod yazmak da mümkündür. C’de eksik olan şeyler bunda da eksiktir öte yandan. Hafıza yönetimi yine programcının eline kalır. Rapid development veya web development için çok güzel bir seçim değildir. Performans olarak C’ye yakın performans verse de, bir takım overhead’ler dolayısıyla, performansta C kudretine erişemez. (Vırtual tables vs. gibi. Limit olarak C’ye yaklaşır, ancak prensipte geçemez diyelim. Aman kör nokta bulup gelmeyin bana.) Öte yandan, object-oriented yazılacak, performans gerektiren büyük çaplı uygulama projelerinde, güzel bir seçenektir. Yalnız, dilin afedersiniz her bokunu bir arada kullanmaya kalkışmamak gerekir. Anlaşılır kod yazmak için kaçınılması gereken yerler vardır. (Operator overload etmeyin, exception kullanmayın, dayak istemeyin falan gibi.) Ha, bu arada, söylemeden geçmeyelim, Google’daki üç “resmi” dilden biridir; ortamın ağır topudur.
    Java:
    Nispeten genç bir dil. 1995′de icad edildi. Sun tarafından. (Sene 1999′da “on yıl tecrübeli Java programcısı” arayan adamlar vardı, onu da söylemeden geçmeyelim.) İlk önce browser’ın içine applet yazmak için bir dil olarak çıktı ortaya. Zaman içinde applet’ler gözden düştü, bunlar doğru dürüst çalışmadı çünkü. Server-side Java başta pek hesapta yokken, sonradan işin “esas” tarafı haline geldi. İcad eden onlar değildir muhtemelen ama, yarı-derlenme olayını ilk popüler yapan dil Java’dır. Yani, derleme, Java’yı “bytecode” denen şeye çevirir. Bu daha sonra çalışma esnasında JVM denen “Java Virtual Machine” tarafından interpret edilerek çalışır. İlk zamanlarda, Java’nın yavaşlığı meşhurdu, pek çok derdi vardı. Ama zaman geçtikçe pişti Java. Başlarda 1:10 olan hız oranı (Java C’ye karşı mesela) tamamen nümerik olan uygulamalar hariç, 1:2 falan civarına geldi. Arada JIT compilation denen şey icad edildi ki, “Just In Time Compilation” demek, çalışma anında Java bytecode’dan makina koduna derlenir oldu. Java’nın avantajları, C++’daki problemli şeylerin çoğunu atması, “garbage collected” hafıza modeliyle birinci seviye hafıza yönetmini programcının elinden alması, “pointer aritmetiği” kullandırmaması, “multiple inheritance”a izin vermemesi, “operator overloading” yaptırmaması oldu. Bunlara ek olarak, Java network ve database programlama için gerekli şeyleri, programlama için gerekli veri yapılarını standart kütüphanelerinde barındıran bir dil olarak, bunlarda daha hızlı development’a imkan tanıdı. Dil, yapısı itibariyle, alabildiğine büyük projeler gelişirmeye uygun bir dildir. Information systems şeklindeki sistemler için de idealdir. Bu şekliyle, server-side web programlamanın kuvvetli silahıdır. Ama, “number crunching” işinde nihai olarak C veya C++ ile yarışamaz. Ha, yine kaçırmayalım, Java Google’daki üç resmi dilden ikincisidir.
    Python:
    Python. Java’dan yaşlı, ama popüler olması Java’dan sonra bir dil. Script dili. Performans olarak yukarıdakilerin hiç biriyle cirit atamaz. Object oriented programlama destekler. En büyük kuvveti şu: Acayip hızlı kod yazılır. Neredeyse sıfır “boilerplate” kod içerir. Direkt konuya girersiniz. Development time, Python ile yukarıdakilerin hepsinden hızlı olur. Bu da önce bytecode’a derlenir, ama ondan öte geçmez. Perfomansın dert olmadığı durumlarda, ya da hızlı prototip üretmek gerektiğinde, çok şahanedir. Tüm kütüphaneleri Java kadar olgun olmasa da, oldukça geniştir. Standart kütüphanelerini kullanmak çok kolaydır. Pek çok durumda, diğer programları çalıştırmak ve aralarında köprü görevi görmek için de idealdir. Hafif bir silahtır, bıçak gibidir, çok fazla hasar vermek gerekince işe yaramaz, ama kullanması çok hızlıdır. Diğer dillerde daha “çı” diyemeden Python’da kod yazılmış bitmiş olur. Bu da Google’daki resmi dillerin üçüncüsü.
    Javascript:
    Yine bir script dili. Java’yla isim dışında ve biraz format dışında zerre kadar alakası yoktur. Biraz object-oriented’a benzetilmeye çalışılmışsa da, aslında bir “prototype” dilidir. Browserlar üzerindeki mecburi, de facto programlama dilidir. AJAX onsuz olmaz. Genel olarak büyük projelere soyunmaya kalkışılacak bir dil değildir. Server side Javascript kısa bir müddetten sonra tedavülden kalkmıştır zaten. Gerçekten anlayanı pek azdır, genelde oradan buradan afırma program parçalarıyla kullanır onu herkes. Aslında bir grup “kötü” yönü çıkartılırsa, fena bir dil değildir.
    Şimdi diyeceksiniz ki hoca, gerisi ne oldu? Annem bana, bilmediğin konularda fazla atıp tutma dedi, o oldu. C# Java sülalesinden, Perl ve PHP Python sülalesinden (PHP daha garip bir arkadaş ya neyse). Bunların arasında hangisi daha iyi derdi beni aşar.
    Şimdi esas mesele şu: Hangisini kullanalım? Hangisini öğrenelim?
    Cevap basit değil. Hepsini öğrenin, doğru sırayla. İlgili iş için doğru olanı kullanın. Doğru sıra, size en çok lazım olanı ilk öğrenmektir. Yani alet çantanıza ilk neye ihtiyacınız varsa onu koyun. Ama bir tek çekiçle kalmayın. Tornavida, pense, alyen anahatarı (bunun da İngilizcesi Allen key imiş, Allen icad eden adamın adı iyi mi) hepsi olsun. Yani, performans çıkartacak, bilgi sistemini büyük çaplı programlayacak ve hızlı programlama yapılabilecek dillerden birer tane bilmek, programcının şanındandır. Duruma göre aleti çıkartır kullanırsınız.
    Proje yaparken de, maliyetleri iyi hesaplamak gerekir. Mesela, Python başlangıçta düşük performansıyla saçmalık gibi durabilir. Ama kod geliştirme süresini hesaba katarsanız, öyle olmadığı ortaya çıkar, Bir server’ın aylık kirası, bir programcının aylık giderinin üçte veya dörtte biri kadardır. Kodun her yerinin aynı dilde olması da gerekmez. Performans gerektiren yerleri C++ ile, bilgi işleyen yerleri Java ile yazarsınız, araları da Python ile doldurursunuz, şahane hayatınız olur. Örnek mi? Bkz: Google… Keza Facebook’da da ön taraf PHP, ancak arkada Java ve C++ da koşuyor gereken yerde rivayete göre.
    Vidalara çekiçle vurmayın yani… Tornavidada çekiç kuvveti yoktur ama, vidanın o incecik oluğuna tam oturur, gerekli olan yerde gerekli olan kuvveti uygular. Programlamada tek bir problem olmadığı gibi, tek bir çözüm de yoktur, aramayın, bulamazsınız. 
    Source: safkan.org/blog/

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RDxMaster
    RDxMaster's avatar
    Kayıt Tarihi: 15/Eylül/2007
    Erkek

    Güzel makale :) yazılımla uğraşan kişinin bu dillerin tamamını bilmesi gerekir 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Maresca
    Maresca's avatar
    Kayıt Tarihi: 24/Mayıs/2012
    Erkek

    güzelmiş ka1n kardeş


    Gel bili bili gates
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek
    RDxMaster bunu yazdı

    Güzel makale :) yazılımla uğraşan kişinin bu dillerin tamamını bilmesi gerekir 

    bana bir tane ilan göstersene c, c++, java, phyton ve javascript bilgisini aynı anda arayan?

    saçma sapan bir yazı ve saçma sapan bir yorum...

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick6
    0x656e
    0x656e's avatar
    Kayıt Tarihi: 19/Mayıs/2012
    Homo
    attackatak bunu yazdı
    RDxMaster bunu yazdı

    Güzel makale :) yazılımla uğraşan kişinin bu dillerin tamamını bilmesi gerekir 

    bana bir tane ilan göstersene c, c++, java, phyton ve javascript bilgisini aynı anda arayan?

    saçma sapan bir yazı ve saçma sapan bir yorum...

    Türkiyede yok hocam haklısın 

    İlla Türkiye'de çalışıcan diye de bir kural yok 

    (Aynı anda arayan olmasa bile farklı farklı arayan  var )

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek
    Ka1nsha bunu yazdı
    attackatak bunu yazdı
    RDxMaster bunu yazdı

    Güzel makale :) yazılımla uğraşan kişinin bu dillerin tamamını bilmesi gerekir 

    bana bir tane ilan göstersene c, c++, java, phyton ve javascript bilgisini aynı anda arayan?

    saçma sapan bir yazı ve saçma sapan bir yorum...

    Türkiyede yok hocam haklısın 

    İlla Türkiye'de çalışıcan diye de bir kural yok 

    (Aynı anda arayan olmasa bile farklı farklı arayan  var )

    Türkiye'yi geçtim dünyanın hiçbir yerinde yok hocam. Bi adam tek bir programlama dili ve o dilin alanına yoğunlaşmadığı sürece hiçbir şeyi tam anlamıyla öğrenemez. Her halt hakkında az da olsa bilgin olsun ama tek bir şeye yoğunlaş.

    Farklı farklı arayan olmalı tabi ki. Hepsini öğrenmek ne işine yaracak? Yeni başlayanların kafasını karıştırmaktan başka bir işe yaramıyor o yorum.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick6
    0x656e
    0x656e's avatar
    Kayıt Tarihi: 19/Mayıs/2012
    Homo

    Evet bunda haklısın işte tek birşeye yoğunlaşmalı ama diğer dillerden de haberdar olmalı 

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sokoban
    sokoban's avatar
    Kayıt Tarihi: 23/Ocak/2010
    Erkek

    Aslında "en iyi" diye bir şey yok programlama dillerini vücuttaki el kol gibi bir uzuv olarak düşünmek lazım.Yeri gelir elinle yersin yeri gelir bacaklarınla koşarsın koşmak için ellerini kullanamazsın buna benzer bir şekilde her projede bazı yerde php bazı yerde actionscript bazı yerde c++ kullanarak hibrit bir şekilde birkaç dil kullanılabilir duruma göre değişir hangi dilin kullanılacağı.

    sokoban tarafından 09/Nis/13 13:42 tarihinde düzenlenmiştir

    .
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek
    Ka1nsha bunu yazdı

    Evet bunda haklısın işte tek birşeye yoğunlaşmalı ama diğer dillerden de haberdar olmalı 

    Ne olduğunu bil, hangi konu da üstün olduğunu bil yeterli. kaç tane c#'cı bir kere bile c'ye, javaya ya da phyton'a ihtiyaç duydu? çoğu kişi c++'a bile ihtiyaç duymamamıştır.(o ihtiyaçta ancak c#'a dll aktarımıdır)

    Seninle aynı dili konuşuyoruz hocam. Benim derdim mesleğe yeni başlamış ve kıt bilgisiyle böyle yorumlar yapanlarla...

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    BASKAN1
    BASKAN1's avatar
    Kayıt Tarihi: 08/Nisan/2013
    Erkek

    Eksikleri olmasıyla birlikte kapa taslak kendini okutan güzel bir makale


    SENELERCE TIP EĞİTİMİ ALMIŞ DENEYİMLİ BİR HEMŞİRE DAHİ; SON DERECE UYGUN VE AYDINLIK KOŞULLARDA HASTADAN KAN ALIRKEN ZAMAN ZAMAN DAMARI BULAMAZKEN; GECENİN ZİFİRİ KARANLIĞINDA, ATARDAMARLA TOPLARDAMARI BİRBİRİNDEN AYIRAN, İĞNESİNİ BATIRMADAN ÖNCE LOKAL ANESTEZİ YAPAN, KANIN HAVAYLA TEMAS ETTİĞİNDE KURUYACAĞINI BİLDİĞİ İÇİN ÇEKMEDEN ÖNCE KANIN PIHTILAŞMAŞINI ÖNLEYECEK SERUMU DAMAR İÇİNE ZERKEDEN SİVRİSİNEK BUNU KENDİ İLMİ İLE Mİ YAPMAKTADIR?EĞER KENDİ İLMİ İLE İSE, BU İLMİ NEREDE TAHSİL ETMİŞTİR?
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Austen
    Austen's avatar
    Kayıt Tarihi: 13/Ağustos/2012
    Erkek

    Bir dili adam akıllı öğrenin. Sonrasında muhtemelen başka bir dile ihtiyaç duymazsınız. Tabiki yan sistemlerden söz etmiyorum. Başlı başına bir dilden söz ediyorum. Yüzeysel bakıp, birkaç teorik bilgi edindikten sonra dili bırakanlar aynı şeyi başka dillerde de yapıp "ben 10 tane dil biliyorum, hepsinde iyiyim, istediğimi yaparım" kafasıyla ilerlemeye başlıyorlar. E tabi bunu gören iş veren, daha mesleği öğrenirken ormana kurduğu kapanın içerisine kekliğin girdiğini görünce ellerini ovuşturmaya başlıyor.

    Bence esas soru "ben ne yapmak istiyorum" olmalı. Beklentiniz düşük olabilir. Bazı dillere kıyasla çok daha basit öğrenilen ve kavramca konuşma diline daha yakın olan bir dil işinizi fazlasıyla görebilecekken asm, c, c++ gibi bir dille vaktinizi öldürebilirsiniz. Bu yüzden hedefinizin farkında olun, ona en uygun olanı araştırıp o yoldan ilerleyin.

    Son olarak bir dili tam anlamıyla öğrenmenin belkide bir meslek hayatı boyunca süreceğini hatırlatmamda fayda var. Dillerle ilgili kitaplar yazılıyor, bilgiler paylaşılıyor. Fakat bu dillere hergün yeni bir şeyler ekleniyor. Her güncellemede de bazı şeyler siliniyor. Farklı yöntemler geliştiriliyor. Önceki yöntem, yaptığınız önceki işlev yenisinde iş göremez hale gelebiliyor. Yani tek bir kitabı hatmetmekle, birkaç makale okuyup, birkaç yöntem öğrenmekle bir dili tam anlamıyla öğrenmiş sayılmıyorsunuz. Belki o anda, güncel bir anlatımsa kısa süreli işinizi görebilir. Fakat sonrası için garanti vermez.

    Belki çok iyi bir yazılımcı, çok tecrübeli birisi olabilirsiniz. Fakat yarın kullandığınız algoritmalardan daha iyisini keşfetmeyeceğiniz ne malum? İş arkadaşınız, arama motorları, yeni okuduğunuz bir makale, dile yeni eklenen bir özellik size önceki bilgilerinizle yaptığınız bir sistemi daha iyi hale getirmenizde yardımcı olabilir. Kısacası öğrenme bitmeyen bir süreç. Bu bahsettiğimi bir dil üzerinden düşünün. Birde bunu birkaç tane kapsamlı dil üzerinde yaptığınızı düşünün. En parlak, en çözümlemeci beyne sahip olan insan bile bunu tam anlamıyla başaramaz. Bu kadar karmaşaya girmenin bence lüzumu yok.

Toplam Hit: 3645 Toplam Mesaj: 26