Başkalarını tanıdığım için yeni bir dili nasıl hızlı bir şekilde seçebilirim? [kapalı]


14

Programcılara gelmeye devam eden bir tür soru.SE, başkalarını tanıdığınız (genellikle çok fazla deneyim veya eğitim yoluyla) belirli bir dili nasıl öğreneceğinizdir.

Bununla birlikte, bazı durumlarda, bir iş, kişisel gelişim veya hatta yeni bir platforma göz atmak için hızlı bir şekilde hızlanmak gerekebilir.

Deneyiminize göre, hızlı bir şekilde yeni bir dil seçmek için hangi genel stratejileri kullandınız? Soğuk algınlığına başlarken odaklanmaya çalıştığınız bir dilin belirli yönleri var mı? Bu süreçte ne tür kaynakları yararlı buluyorsunuz?


6
Sadece yap diyebilirim. İhtiyacınız olan tek kaynak resmi belgeler ve Google'dır.
Fosco

@ Yanıt Yanıtlardan bazıları örtüşüyor, ancak bu sorunun amacı, bir dili (herhangi bir dili) mümkün olduğunca hızlı ve verimli bir şekilde öğrenmeye yönelik kanonik bir cevap oluşturmaktır. Diğer soru, kitap önerilerinin, burada verilenlere benzer cevapların ve acele edilmemiş öğrenmeye ilişkin genel tavsiyenin (yatmadan hemen önce okuma, dil spesifikasyonunu okuma, birkaç farklı temel seviyeye aşina olmak için haftalar alma) bir karışımıdır. Diller).

Sorulduğu gibi sorunun ne kadar yararlı olduğundan emin değilim. Birkaç programlama dili biliyorsam, muhtemelen yeni bir dili nasıl alacağımı ve muhtemelen etkili bir şekilde öğrendim. Eğer yapmazsam, bu sorudan nasıl yararlanacağım?
David Thornley

1
@David Yarım düzine dil biliyorum, ama genellikle ya dersleri aldıktan sonra ya da birkaç ay çalıştıktan sonra öğrendim. Fakat diğer yandan yeni bir iş için hızlıca bir dil seçmem gerekirse, bu bana yardımcı olmaz. Birkaç dil öğrenmiş olan kişilerin bunları hızlı bir şekilde öğrenmenin yollarını bulduklarından şüphe duymuyorum: umarım cevaplar budur.

@ Mark Trapp: Teşekkürler, bu benim için işleri açıklığa kavuşturuyor.
David Thornley

Yanıtlar:


18

Yeni bir dil öğrenmenin en iyi yolunu sadece okumakla değil yapmaktır. Ve böylece, yeni bir dil öğrenmek istediğimde (veya ihtiyaç duyduğumda), genellikle sözdizimiyle ilgili bir referans kitabının birkaç bölümünü okurum, ancak daha sonra kitaptan sonra kitap okumak ve okumak yerine doğrudan dalmak ve bir şeyler yaratmak istiyorum.

Sorunlar ve sorular ortaya çıktıkça cevapların bulunduğunu buldum (genellikle internette). Ayrıca iş başında eğitimin bu kadar değerli olduğunu düşünüyorum, çünkü taslak bir sürüm olsa bile çoğu zaman bir iş ürünü üretiyorsunuz - ve böylece yaparak öğreniyorsunuz.

İnsanları sadece ilgilendikleri şeyleri düşünmeye ve doğrudan kod yazmaya veya formlar oluşturmaya vb.

Daha sonra, projeden sonra proje oluşturduktan sonra, iyi bir referans kitabı size bu noktada daha kolay kavrayabileceğiniz ince ayrıntıları öğretecektir.

Ayrıca, projeler genellikle daha küçük başlar ve karmaşıklıkta büyür - basit "Merhaba Dünya" uygulamasından küçük ve çok kullanışlı olmayan bir projeye, daha sonra tam bir uygulamaya. Dilin hangi yönlerine odaklandığım açısından, dilin uygulamalı kullanımına bağlıdır - Başlamak için her API veya çerçeveyi asla öğrenmem (örneğin .NET ile olduğu gibi). Bu çok uzun sürecek. Çekirdek sözdizimini öğreniyorum, sonra oradan ayrılıyorum, her uzantıyı gerektiği gibi araştırıyorum. CSS veya XSLT gibi daha az modüler bir dille ilk önce en popüler yapıları öğrenir ve gerektiğinde başkalarını da eklerim.


"Sadece yap" dediğinizde, mümkün olduğunca verimli bir şekilde aldığınızdan emin olmak için dalış yaparken odaklandığınız dilin belirli yönleri var mı? Yoksa "tık" olana kadar rastgele örnek projeler yapmaya devam ediyor musunuz?

Peki, projeler genellikle daha küçük başlar ve karmaşıklıkta büyür - basit "Merhaba Dünya" uygulamasından küçük ve çok kullanışlı olmayan bir projeye, daha sonra tam bir uygulamaya. Dilin hangi yönlerine odaklandığım açısından, dilin uygulamalı kullanımına bağlıdır - Başlamak için her API veya çerçeveyi asla öğrenmem (örneğin .NET ile olduğu gibi). Bu çok uzun sürecek. Çekirdek sözdizimini öğreniyorum, sonra oradan ayrılıyorum, her uzantıyı gerektiği gibi araştırıyorum. CSS veya XSLT gibi daha az modüler bir dille ilk önce en popüler yapıları öğrenir ve gerektiğinde başkalarını da eklerim.
jqueryrocks

2
bunu cevabınıza ekleyebilir misiniz? Bu harika bir bilgi.

5

Bu benim için çalışıyor:

  1. Bunun hakkında oku.
  2. Kullanın.
  3. GOTO 1.

Bu konuda okuma adımı için dil için "" referansını seçmeye çalışıyorum. Örneğin "C Programlama Dili". Bu noktaya kadar yoğunlaştırılmalı ve bilginizi aşamalı olarak inşa etmelidir. Sonra örtmek için kapağı okudum. Ben hızlı bir okuyucuyum ve bu ilk okumada yaşamıyorum. Sonra geri dönüp dili kullanmaya çalışırken belirli noktalara değineceğim. Muhtemelen daha fazla zaman geçireceğim kitabın içindeki kod örnekleri.

İhtiyacınız olan ilk şey sözdizimidir. BEGIN mi yoksa {veya girintiyi mi engellediğini veya değişkenleri nasıl bildirdiğinizi bilmeden hiçbir şey yazamazsınız. Yazar genellikle önce daha önemli bölümleri tanıtacak veya dilin temel kullanımını kapsayan bir eğiticiye sahip olacaktır. Bazı genel diller diğerlerinden çok farklı olduğu için daha genel yönergeler vermek zordur. Bir sonraki şey dil hakkında genel bir fikir edinmektir, genel felsefe nedir, sorun bağlamında dil bağlamında nasıl yaklaştığınız.

Akılda tutulması gereken bir diğer şey de "kullan ya da kaybet" kavramı. Eğer bir dili bir süredir kullanmadıysanız, hıza geri dönmeniz biraz zaman alacaktır (ancak o zaman deneyim ile kısalır). Dilin sözdizimini aldıktan sonra kütüphaneler vb. Hakkında bilgi edinmeniz gerekir.

Yani bu yinelemeli bir süreç. Her yinelemede daha derine inmek. Hiç bitmeyen. Bir dili 20 yıl kullandıktan sonra bile öğrenilecek bir şey var.


Ne demek istediğiniz hakkında "hakkında okuyun" hakkında daha fazla ayrıntı verebilir misiniz? Özellikle, almak istediğiniz yeni bir dil hakkında okumaya başladığınızda neye odaklanıyorsunuz?

@ Mark - düzenlemelerimi gör ... Aradığın şey bu mu?
Guy Sirton

5

Gerçek bir dünya projesi al

Gördüğüm şekilde, gerçekten öğrenmeniz gerektiğinde bir şey öğrenmek daha kolaydır . Benim için javascript ile oldu, burada iki aylık bir zaman dilimi ile büyük bir projeyi kabul ederek risk aldım. Bu freelance proje için her gün ve her gece oradaydım ve 1 buçuk ay içinde proje yapıldı.

Ayrıca yanlışlıkla orada bazı SQL öğrendim, sonra üniversitede öğrenmeyi bitirdim ve ne olduğunu tahmin et, daha kolay zaman geçirdim.

Risk almak istemiyorsanız ...

Önceki noktanın asıl anahtarı, gerçek dünya sorunlarını çözmek ... ... ama stres altında daha iyi çalışıyorum (stresden hoşlanıyorum, eğlenceli olduğunu düşünüyorum ve zarar görebilirim, bu yüzden ...). Bunu yapmazsanız, ilginizi çeken ve öğrenmek istediğiniz dili kullanan ve katkıda bulunmaya çalışan açık kaynaklı bir projenin peşinden gidin. Kodunuz kötüyse, topluluğa bağlı olarak bazı geri bildirimler alabilirsiniz.

Muhtemelen sadece kodu inceleyerek ilerleme kaydetmenizdir.

Yapabileceğiniz tüm referansları alın

Bu, birkaç kitap, resmi belgeler ve alabileceğiniz tüm referansları içerir. İzler, bu şekilde, aynı şeyi farklı şekillerde nasıl yapacağınızı bileceksiniz.

Forumlar, posta listeleri ve buradaki gibi diğer topluluklar da referans olarak sayılır.


" Zor bir gerçek dünya sorununu yakala" yı eklerdim . İlk gün boynunuzu derinlemesine almanızı gerektiren bir şey seçin. C # i ile ilk günüm dinamik olarak dlls nasıl yüklendiğini bulmak, sınıfları almak için yansıma kullanmak ve ondan mehods bir listeydi. Daha önce hiç .net teknolojisi kullanmamış bir ton öğrendim.
Bryan Oakley

2

Yeni bir dil öğrenmenin birçok yolu vardır, ancak hepsi eşit derecede verimli değildir. Bu üç kılavuzun benim için en uygun olduğunu gördüm:

Bilmediklerinizin haritasını çıkarın

Önceden, öğrenmeniz gerekeni anlayın. Dili soyut terimlerle açıklayan bir genel bakış veya genel belge kaynağı bulun. Bundan dolayı, genellikle dilin ne hakkında olduğu hakkında oldukça kapsamlı bir genel bakış elde edebilirsiniz. Bilmediğiniz ancak dilin çekirdeği olarak kabul edilen alanları vurgulamak için bu genel bakışı kullanın. Kuyruk özyineleme dili gerçekten bilmeyi öğrenmeniz gereken bir kavram mıdır? Belki dize dize manipülasyonu konusunda uzmanlaştığından, normal ifadenizi daha iyi bilmeniz gerekir. Veya, belki de Cebirinizi gerçekten almanız gerekir, çünkü dil haritasındaki kavramların çoğu doğrudan cebirsel kavramlardan.

Bilmediklerinizi öğrenmenize yardımcı olacak iyi kaynaklar edinin

Cebirsel formüller hakkında iyi bir referans almak isteyebilirsiniz, ya da sadece " Javascript, iyi parçalar " satın almak isteyebilirsiniz . Bazı öğrenme eğrileri için bu çalışma zaten kısmen yapılmıştır. C # 'ı bir Java arkaplanından öğrenmeye çalışıyorsanız (ve tersi), farklılıkları haritalayan ve öğrenmenize yardımcı olacak referanslar / kaynaklar içeren bir blog yayınları ve web siteleri listesi vardır.

Kaynakların sadece referanslar olmadığından emin olun; bir kavramı doğru bir şekilde öğrenip öğrenmediğinizi değerlendirmenize yardımcı olacak testler veya alıştırmalar içerdiğinden emin olun. Kuyruk özyineleme hakkında okumak bir şeydir, seçtiğiniz dilin nasıl uygulandığını değerlendirmek başka bir şeydir.

Gerçek bir şey oluşturun

Akılda tutulur bir amaç olmadan her türlü gerçek öğrenmeyi yapmak neredeyse imkansızdır. Bu özellikle uygulamalı sanatlar için geçerlidir - programlama dili kullanımı budur. Hedefleyeceğiniz gerçek bir hedefiniz olduğundan emin olun - bir şey oluşturmak genellikle en iyi seçimdir.


1

Programlama Paradigmalarını Belirleme

Genellikle dil için birincil paradigmaların ne olduğunu belirlerim. Sorunları paradigmaya bağlı olarak farklı düşünüyorum.

Deyimleri Belirle

Tüm dillerin deyimleri vardır. Deyimler boyut ve kapsam bakımından kodu nasıl yapılandırdığınızdan belirli kod parçalarına kadar değişir. Her zaman bir dil deyimi kullanmaya çalışmalısınız.

Kod yazma

Genellikle bazı fonksiyonel kodlar yazarım. Asal Elek'ten oyuncak web uygulamalarına kadar her şey. Seçtiğim sorunlar genellikle dili ne için kullanmayı planladığımla ilgilidir.


1

Sadece dalış !!

Zaten birkaç dili nasıl programlayacağınızı ve bildiğinizi göz önünde bulundurarak, bu dil çok derin bir paradigma kayması getiriyorsa, (aynı anda) şunu söyleyebilirim:

  • sizi yönlendirecek bir evcil hayvan projesi bulun,
  • ve yan programda bazı şaşkınlar

Öğren, Pratik Yap, Uygula (tatmin olana kadar)

Klasik 99 Prolog Puzzles (burada, Scala'daki 99 Puzzles ) veya Project Euler genellikle yeniden uygulanacak küçük şaşkınlık arayanlar için iyi yerlerdir. Veya StackOverflow'un etrafında dolaşın ve satır satır yeniden yazma yapmaya değil, yeni dilinizin özünü yakalayan bir şey yapmaya çalışarak hedef dilinizde bazı güzel cevapları yeniden yazın.

Dil hakkında daha derin bir anlayışa sahip olmak ve yeni topluluğunuzun araçlarını ve kutsal savaşlarını anlamak için bilinmezlerle öğrenin, yan taraftaki blogları ve makaleleri okuyun ve yeni bulunan bilgi ve becerilerinizi uygulamak için test projenizi yazın ve hangi yol darbelerine maruz kaldığınızı görün.

Topluluktan Konuşmak ...

Kendinizi paylaşın ve gösterin. (Yine de çok fazla değil.)

Belki de yerel bir kullanıcı grubunu ziyaret etmek, kodlanacak arkadaşlar bulmak (bazı yapıcı eleştiriler almak ve kendinizi belirli bir zihniyete kilitlemek için değil) ve AST hakkında garip kelimeler bıraktıkları bu korkunç IRC kanalına veya posta listesine abone olmak istersiniz. ağaçlar ve monadların nasıl monad olmadığı hakkında ve garip bir kızla tanıştıktan sonra geri dönemeyeceğiniz konusunda felsefi tiradlar yazın .


0

Bunun kulağa sakat geldiğini biliyorum, ama aptal olsa bile bir şey kodlamaya başlayın ve bu kalıbı takip eden şeyler için çok sayıda Google kullanın:

[başka bir dilde] [bir dilden bir şey] nasıl yaparım

Kelimeler ortak ise alıntı gerçekleri kullanın.

Artık bir cevap bulamadığım tek neden, bunun neden yapılamadığını açıklayan bir sayfa bulduğumda yeterince yaygın bir soru var.


0

Yalnızca dili kullanmak için özel bir öneri olarak:

Hataları Düzelt

  1. Hedef dilde, tercihen genel bir hata izleyiciye, orta derecede aktif bir gelişmeye ve iyi bir test paketine sahip ilginç bir açık kaynaklı proje bulun.
  2. Düzeltmek için bir hata seçin, tercihen programı gerçekten kullandığınızda sizi rahatsız eden bir hata seçin.
  3. Programın neden buggy davranışı sergilediğini anlayın.
  4. Sorunu çözmek için testler ve kod yazın.
  5. Yukarı doğru bir yama gönderin.
  6. Memba geliştiricileri mutlu olana kadar yamanızı gözden geçirin.
  7. Adım 1 veya 2'ye geri dönün.

Bu süreç, başka bir oyuncak programı yazmaktan daha tatmin edici olma eğilimindedir, ancak kendi projenizi sıfırdan başlatmaktan çok daha kolaydır. Bazı dil deyimlerine kendi doğal bağlamlarında ve (herhangi bir şansla) birinin iyi kodun neye benzediğine dair fikrine maruz kalırsınız.

Öte yandan, özellikle kötü bir hata seçerseniz veya geliştiriciler yamanızı nedenini doğru bir şekilde açıklamadan reddederse, son derece sinir bozucu olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.