Backtrack Benim “Eğitim ”im [kapalı]


13

Bir süre önce, programlamaya başlamaya karar verdim. Gerçekten, sadece bir dile (Perl) atladım ve oradan gittim. Ne yazık ki ben sadece atladı:

Temelleri öğrenmedim (eğer onlara temeller derseniz).

Bilgisayar Bilimi hakkında bir şey öğrenmedim.

İnanıyorum ki bu konu beni gerçek potansiyelimden uzak tutuyor. Nereden "yeniden başlatmalıyım"? Okumam gereken herhangi bir kitap, makale vb. Var mı? Deneyimli bir programcının bilmesi gereken konular var mı? Tavsiyen nedir?


Sorunuz konusunda net değilim. Programlamaya başlamaya karar verdiğinizde, yeni bir iş bulmak mı, yoksa sadece işinizde bazı yönetici görevlerini yerine getirmek mi yoksa sadece eğlence için mi? Neden bu şekilde başladığınıza pişman olduğunuza ve bu sorunun sizi geri çekmeyle ilgili ne olduğuna yardımcı olmak için nereden geldiğinizi anlamam gerekiyor? Varsayım yapmaktan hoşlanmıyorum.

@ JamesDrinkard: Sadece öğrenme uğruna! Bunu yaşamak için yapmıyorum.
Dinamik

Geçmişiniz nedir? Bilim hakkında bir şey biliyor musun? Matematik? Mühendislik? Ahşap işçiliği? :-) Ne tür programlama ile ilgileniyorsunuz? Bu ayrıntılar olmadan faydalı bir cevap vermek zor. Ayrıca, atlama pişman olma - bu harika!
Guy Sirton

@GuySirton: Ben ortaokul öğrencisiyim. Gerçekten programlamak için bir nedenim yok, sadece yapıyorum!
Dinamik

Yanıtlar:


21

Bunu yapardım:

Yol A: Yarı Tipik Yöntem

  1. Java, C # veya Python gibi daha düzenli bir sözdizimine sahip bir dil öğrenin. Perl son derece yararlı bir araçtır, ancak aynı zamanda bir şeyler yapmanıza nasıl izin verdiği konusunda çok çok serbest bir formdur. Listelediğim diğer diller çok, çok daha az.

  2. Söz konusu dilde Veri Yapıları hakkında bir kitap edinin.

  3. Söz konusu dilde Algoritmalar hakkında bir kitap edinin.

  4. Kodu Tamamlayın ve Etkili Alın Java / C # / Python'un sürümü ne olursa olsun.

Yol B: Joel Spolsky'nin Aydınlanma Yolu (veya Ölüm, seçiminizi yapın)

  1. Kitabı "Kod" alın

  2. K & R'nin "C Programlama Dili" ni edinin

  3. Bilgisayar Programlamanın Yapısını ve Yorumunu Edinin

Yönteme göre, yöntem 1 size programlamayı daha düzenli bir şekilde öğretecektir. Bilgisayar Bilimi kavramları bir dereceye kadar (henüz karmaşıklık teorisi yok, bana güven) ve diğer insanlarla projelerde çalışmak ve daha büyük uygulamalar yapmak için daha iyi bir dil sağlar.

Yöntem 2 daha sert, daha çok temelleri açıklayan "Kod" ile temelleri, makine seviyesindeki şeyleri tanıtan K&R'yi ve daha üst düzey kavramları tanıtan SICP'yi anlatıyor. Çok daha zor ama odaklanmış bir yol.

Her iki durumda da, kendinize zaman tanıyın. Roma bir günde inşa edilmedi ve bir dahi olsanız bile programlama becerileri de yok. Peter Norvig'in 10 yıldaki Programlaması, insanları işaret ettiğim olağan makale.

Zeyilname:

Mevcut ücretsiz şeyler kadar: Aşağıda listelenen Hard Way Python oradan iyi bir başlangıçtır, Bir Bilgisayar Bilimcisi gibi düşünmek için makul bir devamıdır.

Orada Algoritmalar üzerinde bir dizi kaynak var ve dürüst olmak gerekirse muhtemelen 3. ve 4. adımları sorunsuz bir şekilde değiştirebilirsiniz. Unutmayın, burada matematik gerçekten ortaya çıkmaya başlar, bu yüzden bu aşamaya geldiğinizde yardım istemekten asla korkmayın. Bu makul bir ücretsiz rehber gibi görünüyor .

Gerçekten Pythonista gibi Kod oldukça sağlam görünüyor olsa da, tam başına Code Complete ile uyumlu bir eşdeğer yoktur . En önemli şey, temel bilgileri aldıktan sonra kodunuzu okunabilir hale getirmeye odaklanmaktır. Tüm kod sözdiziminizin doğru olması gibi "gerekli" değildir, ancak küçük programların ötesine geçtiğinizde veya uzun bir süre boyunca bir şey üzerinde çalıştığınızda canlılığı çok daha kolay hale getirir.

Çoğunlukla Python'a odaklandığımı görebilirsiniz, çünkü iyi yazılmış ücretsiz şeyler bulmak üçün en kolayıdır. Bence Java'nın Oracle eğitimleri iyi ama biraz kuru ve yeni başlayanlar için harika değil. C # benzer bir durumda olsa da hiçbiri belge eksikliğinden muzdarip değildir.

Ayrıca, ilk CS şaka / kelime oyunu: Backtrack değil, eğitiminizi "Refactor" yapmak istiyorsunuz.


Teşekkür ederim! Okumak için ücretsiz çevrimiçi kitaplarınız olur mu? Bunun dışında bu inanılmaz bir cevap!
Dinamik

5
Bilgisayar Programlamanın Yapısı ve Yorumlanması için + 1 (SICP) burada bulunabilir: mitpress.mit.edu/sicp
NWS

Perl'i bilmek, Python bana alışmak için çok fazla sorun verecek mi?
Dinamik

1
Perl'den sonra, çoğu dil biraz kayalık bir geçiş olacak. Python oldukça kolaydır, çünkü Perl'de olduğu gibi 1 şey yapmanın 50 yolu yerine 1 şey yapmanın 1 yolu vardır. Python'un en büyük hilesi, dilin hangi sürümünü kullanacağını belirlemektir: 2.7 veya 3.x. Seçtiğiniz öğretici ne kullanırsa kullanın ve oradan gidin. Daha iyi olduğunuzda, projeler geldikçe diğerine uyum sağlayabilirsiniz.
Dünya Mühendisi

1
@kevincline: Aslında, bazı Python alıştırmalarını yaptıktan sonra bana tonlarca sorun çıkarıyor. IMHO, Perl'de son derece basit olan şeylerden bazıları, Python'da zordur.
Dinamik


1

Donanım tarafında biraz bilgim vardı ve programlama ile ilgilendim. Yeni şeyler öğrenmeyi seviyorum.

DOS Batch dosyaları ile başladım, sonra QuickBasic, sonra Visual Basic, VBA, MASM, önce veritabanı iş için Access ile ilk iş indi. Benim için, basit başlayan ve sonra oradan inşa edilen en iyi yol buydu.

Programlama hakkında en çok neyi sevdiğinize karar vermeyi söyleyebilirim ve bu rota, komut dosyası oluşturma, web geliştirme, windows programlama vb. İle devam edin. Yine de zamana ihtiyacınız olacak. Java veya C ++, IMHO gibi bir dilde gerçekten iyi olmak yaklaşık 5 yıl sürer.

Web geliştirme, JavaScript kesinlikle öğrenmek için bir dil olarak, PHP popüler ve Python, ama bu IMHO. HTML / CSS'yi bileceğiniz veya öğreneceğiniz varsayılmaktadır. 2001'den beri kullandığım halde javascript'i gerçekten küçümsedim. Aynı şeyi CSS ile yaptım ve önemli olduğunu düşünmedim. Bununla ilgili fikrimi de değiştirdim.

Bir trend belirlemeye çalıştığımda, http://www.indeed.com adresine gidip sayfanın sol üst kısmındaki trendler bağlantısını tıklıyorum. Sonra PHP ve Python gibi anahtar kelimeler koymak ve hangi internette gerçek iş pozisyonları için bırakıldığını görmek.

Bu bir kariyer perspektifinden ve müşteriler (işverenler) için bana en fazla değeri neyin getirdiğini temel alıyor. Sadece öğrenme açısından değil.


Web Geliştirme konusunda bana yardımcı olacak ancak daha fazlasını yapabilen bir dil öğrenmek istediğimi söylersem ne önerirsiniz?
Dinamik

-1

Algoritmalar hakkında en temel şekliyle bilgi edinin, bir süre dilleri unutun. Vektörleri, kelimeleri, vb. Sıralamak. Freepascal, bu şeylerle başlamak için güzel bir dildir, Perl'i seviyorum, ancak tüm kısayolları ve havalı şeyleriyle, genellikle programın doğal algoritmasını ihmal edersiniz.

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.