SORU
17 NİSAN 2010, CUMARTESİ


Veri yapıları ve algoritmalar öğrenmek için programlama dili seçimi

Hangi programlama dilitavsiye ederimöğrenmek içinhakkındaveri yapıları ve algoritmalar?

Aşağıdakileri dikkate:

  • Kişisel deneyim
  • Dil özellikleri (işaretçiler, OO, vb)
  • Öğrenme DS & BİR kavram için uygunluğu

Dil-agnostik programlama ve orada bazı kitaplar (bakış açısı, ve kullanmak Matematiksel bir kesinliği yazılı) olduğundan soruyorum. Eğer bunlardan birinden öğrenirsem, ve algoritmalar kodu çalıştırmak için bir programlama dilini seçmek istiyorum.

Sonra, başka kitaplar takdim DS & kavramlarla örnekler yazılı olarak belirli bir programlama Dil - ve ben istiyorum kod bu algoritmalar da - böylece, belli bir ölçüde, dilini seçer kitabı da.

Her iki şekilde de, bir dil seçmek zorunda olduğumu, ve boyunca bir sopa tercih ederim. Kişisel dil tercihlerini bir kenara bırakarak, hangisi daha iyi, bu amaç için mi?

CEVAP
17 NİSAN 2010, CUMARTESİ


Bu sorunun cevabını öğrenmek istediğiniz tam olarak ne bağlıdır.

Python ve Ruby

Python ve Ruby gibi yüksek seviye diller genellikle yüksek seviyede olduklarını ve sözdizimi oldukça okunabilir olduğundan tavsiye edilir. Ancak bu dillerin hepsi ortak veri yapıları için soyutlamalar var. Hiçbir şey öğrenme bir egzersiz olarak kendi sürümleri, uygulama durdurma var ama mutlaka yararlı değil, diğer yüksek seviye veri yapıları, üstüne yüksek seviye veri yapıları inşa ediyorsun bulabilirsiniz.

Ayrıca, Ruby ve Python dinamik olarak yazılan dillerdir. Bu iyi olabilir ama o da yeni başlayanlar için kafa karıştırıcı ve zor olabilir (başlangıçta) genellikle çalışma zamanı kadar belli olmaz çünkü hataları yakalamak için.

C

C diğer uçta. Güzel eğer öğrenmek istiyor musun gerçekten düşük seviyeli ayrıntı gibi nasıl bellek başardı ama bellek yönetimi aniden önemli bir husus, doğru kullanım malloc()/ücretsiz(). Bu rahatsız edici olabilir. Ayrıca, C nesne yönelimli değil. Ama sadece kayda değer kötü bir şey değil.

C

C bahsedilmiştir. Açıklamada dediğim gibi, bu bir olduğunu düşünüyorumkorkunçseçim. C bile basit kullanımı korkunç derecede karmaşık ve saçma bir miktar var"". frikiklerinden Ayrıca, C ortak bir temel sınıf vardır. Bu karma tablo gibi veri yapıları orada ortak bir temel sınıf olmak güveniyor, çünkü bu önemlidir. Nominal bir temel sınıf için bir sürüm uygulamak olabilir ama daha az yararlı.

Java

Java da telaffuz edildi. Birçok kişi Java nefret gibi ve dili daha modern bir dil bazı özellikleri (örneğin kilitler) son derece ayrıntılı ve eksik olduğu doğrudur ama bunun hiçbir önemi yok. Java statik olarak yazılan ve çöp toplama. Bunun anlamı Java derleyici olacak yakalamak çok hatalı dinamik yazdığınız dilde olmaz (kadar zamanı ve orada hiçbir işlem ile bölümleme hatası (hangi değil diyemezsin bellek sızıntısı Java; belli ki). Java iyi bir seçim olduğunu düşünüyorum.

C#

C#dilJava. daha modern bir versiyonu gibi. Java gibi bir sanal makine üzerinde çalışan çöp toplama) yönetilen ara derlenmiş bir dildir. Diğer her dil burada listelenen dışında C/C da sanal makine ama bir Python, Ruby, vb doğrudan yorumlanması yerine bayt kodu için derlenmiş şeklidir.

C# aynı artılarını ve eksilerini, temelde Java.

Haskell (vb)

Fonksiyonel diller var Son olarak: Haskell, Bunun, Scheme/Lisp, Clojure, F#, vb. Bu çok farklı bir şekilde tüm sorunları düşün ve bir noktada ama yine aşağı öğrenmek istediğiniz konusunda öğrenmeye değer: fonksiyonel bir programlama ve veri yapıları? Bir seferde bir şey öğrenme yerine, bu konuda kafa karıştırıcı kullanmaya devam ederdim. Eğer bir noktada işlevsel bir dil tavsiye ederim) öğrenmek eğer Haskell güvenli ve iyi bir seçimdir.

Benim Tavsiyem

Java veya C seç#. Hem ücretsiz, mükemmel bir IDE (Eclipse, C, Java, Visual Studio Express ve Eclipse için SDE Community Edition#, Visual studio community edition) yazılı ve çalışan kod çok kolay hale getirir. Eğer yerel veri yapısı bir dizi ve herhangi bir nesne daha karmaşık kullanıyorsanız C/olarak temelde aynı şeyi C ama aslında hafıza yönetmek zorunda kalmadan öğreneceksiniz kendiniz yazın.

Açıklayayım: genişletilebilir karma bir tablo yeterli elemanları eklenirse boyutlandırılmış olması gerekir. Herhangi bir uygulama bu destek veri yapısı (Genellikle bir dizi) boyutu iki katına ve mevcut elemanları kopyalama gibi bir şey yapmak anlamına gelecektir. Uygulama temelde tüm zorunlu dilde aynıdır ama C/C falan düzgün ayırması bilmiyorsan bölümleme fauls ile uğraşmak zorunda.

Python ya da Ruby (çok farketmez) dinamik yazarak ilk başta sorunlu olabilir diye bir sonraki tercihim (ve diğer ikisi çok yakın) olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • huyked

    huyked

    28 Mart 2008
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010