50 yaşında okuma yazma bilmeyen bir bilgisayarı programlamaya nasıl tanıtırsınız [kapalı]


10

Geçen gün babam bana ondan hiç beklemeyeceğim bir soru sordu.

"C ++ 'ı nasıl öğrenebilirim?"

Babam bu yıl 56 yaşına giriyor ve bilgisayarlar onun için uzak bir kavram. Numaraları aramanın yanı sıra çok hızlı bir telefon kullanmayı bilmiyor (hızlı arama veya kişi yok); bilgisayarları biraz daha iyi öğrenmeye başlamış olsa da - interneti nasıl açacağını (Windows'da) ve etrafta gezinmeyi bildiği noktaya kadar (ve birkaç iş başvurusunu tamamen kendi çevrimiçi olarak başarıyla tamamladı. ). Ama yine de, bunlar gerçekten çok dar anlamlı deneyimler.

Arka planı olmasa da, babam okumayı biliyor. Ve demek istediğim sadece yetenek değil, beceri olarak okumak. Üniversite eğitimi almamış ya da çok az eğitimi var (mali sorunlar, aile, vb.) Ve liseyi bitirecek kadar şanslıydı, ama yine de usta bir elektrikçi olmayı öğretti ve neredeyse 30 yıldır biriydi. Aynı şeyi gitarla yaptı, çok profesyonel bir seviyede çalmayı öğrendi ve yeteneği için övüldü. Lisede, bir ağırlık kaldırma kitabı aldı - ve o zamanlar lisesinde resmi olarak ulusal standartlara göre bir "atlet" olarak nitelendirilen tek kişiydi.

Her durumda, sadece okumak için bir şeye ihtiyacı vardı. Ona öğretecek bir şey. Sünger gibi bir bilgiyi emer.

Babamın motivasyonundan veya bunu yapma yeteneğinden hiç şüphem yok, bu yüzden genel hedefim basitçe:

Babamı bilgisayarların dünyasına sok ve onu programlama yoluna koy.

Onu temel bilgilerden geçirdiğimde, sürüşünün ve okuma becerisinin onu kendi başına sürdüreceğine kesinlikle inanıyorum.

Hepinize soruyorum: tüm bunlarla nereden başlamalıyım? Ve en iyi kaynaklar neler? Windows yerine Linux'u başlatmasını sağlamalı mıyım? C ++ kötü bir fikir mi?

Unutmayın, önce (IMO) bilgisayarları öğrenmesi ve ardından o ilk programlama ("Merhaba dünya" deneyimi) alması gerekir.

Para uğruna ve en iyi tercih için, okuyabileceği ücretsiz çevrimiçi kaynaklar istiyorum, ancak basılı veya çevrimiçi için ödenen herhangi bir iyi öneri kabul edilir (muhtemelen daha sonra satın almak için bakabilirim).

Ve ayrıca, C ++ (Python, Java vb.) (Şu anda diğer dillerde çok az bilgim var).

Düzenleme: Python kullanmak için kalıcı öneriler bir sürü alıyorum. C ++ yapmak istediğim tek nedeni, BİLMEM ve babam yardıma ihtiyacı olduğunda orada olabilir olmasıdır. Programlamaya ÇOK İLK maruz kalma hiç Java oldu. Java'yı öğrendim ve iyi anladım. Diğer önerilere açığım, ancak önerilerinizin etkili bir şekilde uygulanmasını sağlayın.

EDIT # 2: Yaklaşımımın / düşüncem / bilgimin burada eksik olabileceğini anlıyorum. Ben bir ikinci sınıf lisans CS büyük. Eğer yayınımdaki hiçbir şeye katılmıyorsanız bana neden olduğunu söyleyin - bana fikir, bilgi verin - bu yüzden en başta soruyorum. Genel hedefimi belirli ulaşılabilir hedeflere daraltmak.


1
Bu soru profesyonel yazılım geliştirme ile ilgili değildir. Her ne kadar günümüzde teknik ve teknik olmayan diğer insanlarla etkileşime girmeli ve bazen onlara öğretmeliyiz, ancak profesyonel öğretmen veya eğitmen değiliz ve birisine en iyi nasıl öğretileceği konusunda iyi tavsiyeler veremiyoruz. Bunu daha ayrıntılı olarak tartışmak isterseniz, Meta sitemizde bir soru sorabilirsiniz .
Thomas Owens

@ThomasOwens Toplulukta profesyonel öğretmen veya eğitmen olmadığını biliyor musunuz? Daha az görüntülenen Meta gerçekten gitmem gereken yerde mi? Sanırım buna verebilirim (burada kalmasını gerçekten istiyorum), lütfen benim için taşıyın. Bu soruyu SO / Programcılar topluluğu tarafından daha iyi görüntülenmesi için uygun kriterler haline getirmek için yapabileceğim bir şey varsa, lütfen bana yardımcı ol.
skippr

1
Bildiğim kadarıyla, bu soruyu kabul edecek bir site yok. Sadece listeye baktım ve bir tane görmedim. Bunu daha ayrıntılı olarak tartışmak isterseniz, lütfen Meta hakkında bir soru sorun .
Thomas Owens

@ThomasOwens Peki, sızlanmak veya trol etmek için burada değilim, bu yüzden elimden gelenin en iyisini yapacağım. Teşekkürler
skippr

Yorumlarda cevabımı gizlice ... Aşağıdaki cevapların aksine C ++ aslında harika bir ilk dil. Özellikle yeni başlayanlar için. Önemsiz konsol IO ile başlıyorsunuz ve C ++ bu konuda Java veya C # 'dan çok daha başlangıç ​​dostu. Onu karıştırmak için daha az kazan plakası kodu. Elbette karışıklığa neden olacak gelişmiş özellikler vardır, ancak kendinizi birkaç temel özellikle sınırlandırabilirsiniz.
Lord Tydus

Yanıtlar:


13

Öncelikle, kişisel olarak C ++ biliyor olsanız bile, yeni başlayanlar için korkunç, korkunç bir ilk dil ve başarılı bir şekilde kod yazmayı öğrenmek istiyorsa onu mümkün olduğunca uzak tutacak kadar güçlü bir şekilde tavsiye edemem. Programlamayı öğrenmek bir dil ile değil , resmi mantıkta soyut gereksinimleri ifade etmeyi öğrenmekle ilgilidir. C ++, bu konuya odaklanmayı zorlaştırır çünkü dile özgü sorunlara sürekli olarak önem veriyorsunuz.

Fikirleri biçimsel mantıkla ifade etmeyi öğrenmek istiyorsa, bunu basitleştiren bir şey arayın. Seçimlerim Pascal (uygulama düzeyinde geliştirme için) veya Python (komut dosyası düzeyinde çalışma için) olacaktır çünkü ikisi de sezgisel ve temel öncelikler olarak öğrenmesi kolay olacak şekilde tasarlanmıştır. Bir kez kod yazmanın prensiplerini öğrendikten sonra, C ++ 'ı gerçekten önemsiyorsa, onu alabilir.

Aynı nedenle, onu Windows yerine Linux'ta başlatmayın, çünkü o zaman odaklanmak için iki problemi vardır: aynı anda Linux öğrenmek ve kodlamayı öğrenmek! Dikkat dağıtıcı unsurları minimumda tutun.

Gerçek programlama kaynaklarına gelince, çevrimiçi öğreticiler bulmak yeterince kolaydır, ancak programlamayı öğrenmenin en iyi yolunun programlama olduğunu gördüm. Yapmak istediğiniz bir şey bulun ve nasıl yapılacağını anlamaya başlayın.

Birkaç yıl önce bir oyun gördüm ve "Bunu yapabilirdim ve daha iyisini yapabilirim" diye düşündüm. Bu yüzden Delphi'yi kovdum ve ilgili ilkeleri anlamaya başladım. Hala bu kişisel projeden yeni şeyler öğreniyorum ve bu arada gerçekten iyi bir kodlayıcı oldum! Bu yüzden deneyin; babanıza programlayabiliyorsa ne yapmak istediğini sorun - ve henüz deneyimi olmadığından mümkün ve makul ölçüde küçük olduğundan emin olun - ve onunla oturun ve onunla nasıl yapılacağını anlamaya başlayın o.

Ve herhangi bir sorusu varsa, ona bir StackOverflow hesabı alın. :)


4

Bence babanızın C ++ 'a olan ilgisi kesinlikle düzgün ama ilk programlama dili için benim seçimim olmayacak - toplantıyla ilgilenmesi için çok özel bir gereksinimi olmadıkça . (O zaman bile, başka bir basit, dil öğrendikten sonra C ++ öğrenmek hala çok daha kolay olabilir.)

Programlama için önemli olan birkaç şey var:

  • Soyut problemleri çözebilme
  • Problem çözme için problemleri yeterince küçük parçalara ayırabilme
  • Yinelemeli ve ilerlemeyi ilerletebilecek kadar küçük parçalar halinde çözüm üretme yeteneği mümkündür
  • Belirli dillerin sözdizimi ve semantiği.

Birçok yönden, belirli dillerin sözdizimi ve semantiği programlama için gerekli becerilerin sonuna yaklaşmıştır. Sonuçta, sağa yakınsanız, çoğu derleyici size hangi hatayı yaptığınızı söyleyecektir - özellikle derleyicilerin söylediklerini çözmek için deneyim gerekir.

Bu nedenle, babanızın ilk adımda çok daha basit bir programlama diliyle uğraşmasını öneriyorum: Ruby, Python, C, C #, Haskell, vb. (Haskell, sadece zorunlu dilleri programlayan insanlar için kesinlikle zor, ama ben d tam acemilerin aynı "sudan çıkmış balık" hissi çekip çekmediğini bilmek ister.)

Önde daha basit bir dile bağlı kalmak, babanızın daha önce daha fazla başarıya sahip olacağı ve "oynamayı" kolaylaştıracağı anlamına gelir. Birçok dilin etkileşimli REPL döngüsü öğrenmek için mükemmel bir yerdir.

Babanız işlevlere, sınıflara, nesnelere, yöntemlere aşina olduğunda, C ++ minutiae ve nüansları çok ezici hissetmez. Heck, C ile başlamak daha kolay olurdu: affedici değil , ancak endişelenecek daha az kafa karıştırıcı özellik var.

Linux ve Windows'u merak ediyorsunuz; Ayrımın çok önemli olduğundan emin değilim. Birine veya başka bir ortama zaten aşina ise, geçiş sadece başka bir engeldir. Her ikisini de bilmiyorsa, Linux'u öneririm, ancak esas olarak iyi araçların yüklenmesi gülünç derecede kolaydır: apt-get install <foo>çoğu dağıtımda çalışır ve desteklemeyen dağıtımlar aptgenellikle benzer bir şey sağlar. Bir dakika sonra, düzenli yeni paketiniz yüklendi, genellikle Truva atlarını reek olmayan önceden derlenmiş Windows ikili dosyaları için güvenilir bir indirme kaynağı bulmam daha hızlı.


Babam kesinlikle programcılar için çok önemli olan "düşünme yeteneğine" sahip. Sağduyu ve zekasını şimdi yaptığı şeylerde görüyorum ve bunun programlamada uygulanabileceğini biliyorum. Diyelim ki öğrenme için en uygun adayımız var. Sorum şu: Onları oraya nasıl ulaştırabiliriz?
skippr

Hrm, sözdiziminde ve anlambilimde bataklığın diğer becerilerin gelişimini bulanıklaştırabileceği noktasını yapmak için becerileri farklı kategorilere ayırdım - daha az gizemli duygu kurallarına sahip bir dil, soyutlamanın daha kolay akmasına izin verecek - ama ben bu noktayı iyi ifade etmediği görülüyor.
sarnold

1
Önerilen dillerden, kesinlikle Python'u tercih ederim. Ancak, Babanız görsel olarak eğimli ise, İşleme (bkz. Www.processing.org) ilginç bir giriş olabilir (ancak uygun olmadığı birçok sorun vardır).
James Youngman

@James: heh, daha önce hiç PDF çıktısını kullanan interaktif programlar ifadesini gördüğümü sanmıyorum . :)
sarnold
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.