İnsanlar neden programlama kitapları kullanıyor? [kapalı]


94

Birisi nasıl programlanacağını öğrenmenin en iyi yolunun ne olduğunu sorduğunda, insanların genellikle çeşitli yazarlar tarafından yazılmış bir grup metne referans verdiğini buluyorum.

Ancak pek çok insanın kitaplardan programlamayı öğrendiğine inanmıyorum. Genellikle bir zorlukla karşı karşıya olduklarını ve sonra bunun üstesinden gelmek için bir programlama aracı kullandıklarını görüyorum.

Örneğin, programlamaya başladım çünkü oynadığım bir oyun için bir sunucu başlatmak istedim, bu yüzden belirli bir sunucuyu desteklediğim için googledim ve okudum ve şimdi de sadece geliştirdiğim becerileri kullanarak çalışan bir yazılım mühendisiyim ( ve daha sonra, çok popüler olmayan bir sunucu paketi için C # scriptlerini kodlayarak geliştirildi.

Yani benim sorum şu ki, insanlar bu kitaplardan öğrenmeyi genellikle daha kolay buluyorlar mı? Birkaç tanesine baktığımı ve onları bitirmemi teşvik edemeyecek kadar kuru bulduklarını biliyorum.


3
. kitaplar kitaplar okursanız onlar içinde ilginç bir başka kitaplar burada birincil ama büyük avantaj değil
CND

42
Nasıl baştan programlanacağını veya daha gelişmiş şeyleri öğrenmekten mi bahsediyorsunuz? '24 saat içinde C ++' öğrenmek ile daha ileri teorik konular hakkında iyi bir kitap arasında çok büyük bir fark var - Knuth'un eserini çevrimiçi olarak bulamazsınız.
André Paramés

78
Hiç iyi bir programlama kitabına rastlamamış gibisiniz.
Jaywalker,

46
Bu, "neden okula gitmek?" Sorusuna mecazi.
Jodrell

8
Hiçbir zaman birincil öğrenme aracı olarak kitap bulamadım, ancak bir tonum var ve bunları her zaman tavsiye ederim. Sadece yaparak öğrendiğin çok açık. Ancak, kitaplar fikirlerin kaynağıdır ve hazır bir referans olarak kullanılabilir. Alınacak kitapları okumuyoruz / önermiyoruz. İçerisindeki fikirleri paylaşmak için kitapları okur / tavsiye ederiz.
Joel Etherton

Yanıtlar:


229

Genel olarak konuşursam, şöyle öğrenirim:

  • Bir kitap satın al
  • Kapak kılıfını okumayın ama her şeyin nerede bulunabileceğini bilin
  • Üzerinde çalışılacak bir evcil hayvan projesi bulun
  • Deneyimden öğrenin, ancak kitabı referans olarak kullanın
  • Kitabın başarısız olduğu yerde her zaman google vardır

Not: Üçüncü nokta bazen önce gelir.

Düzenleme : "Neden?" Sorusuna cevap vermek için

Google bir şeyi nasıl yapacağınızı öğrenmek için harika, ancak bilmediğiniz şeyleri bulmak için mükemmel değil. İlk önce C # delegasyon kavramı olduğunu ve üzerinde çalıştığınız bir sorunu çözmek için faydalı olabileceğini bilmeseydiniz, neden "C # delegates" i gozlediniz?

Ayrıca, sinyal-gürültü oranı bazen biraz yüksek olabilir. Kafanızda bir şeyin nasıl yapıldığına dair sert bir fikriniz varsa, okuduğunuz makalenin doğru olup olmadığını kolayca onaylayabilirsiniz. Ama ipucun yoksa ... daha büyük bir karmaşaya kapılabilirsin.


19
Büyük cevap, özellikle "neden" cevabını düzenleme. Yakın zamanda ASP.NET'i öğrenmeye başladım ve google kullanarak yaptım. Yıllarca .NET 2.0 için C # kullanıyordum. Ne zaman bir sorunla karşılaşsam google'ı arayarak cevabını bulmayı başardım, ancak kısa sürede anlaşılabildiğine göre buzdağının sadece ipuçlarını bulabildiğimi ve kütüphanelerin büyük parçalarını tamamen özlediğimi fark ettim. Bir kitap, teknolojiye ve yapabileceği her şeye daha iyi bir genel bakış sunar. "24 saat içinde x öğrenmek" kitaplarından kaçının ve bunun yerine "gelişmiş x" kitaplarına gidin.
Gavin Coates

44
"Bilmediğin şeyi bulmak için + 1"
Covar,

2
5. noktaya kadar uzatma: Kitap başarısız olduğunda, konuyla ilgili yeni başlayanları hedefleyenler de dahil olmak üzere her zaman konuyla ilgili google ve diğer kitaplar vardır .
Richard,

5
Sinyal-gürültü oranı bazen +1, bazen biraz yüksek olabilir. Kafanızda bir şeyin nasıl yapıldığına dair sert bir fikriniz varsa, okuduğunuz makalenin doğru olup olmadığını kolayca onaylayabilirsiniz. ipucu yok ... daha büyük bir karmaşaya kapılabilirsin. "
Tom Squires

9
"Kitabın başarısız olduğu yerlerde her zaman google var." Stack Overflow'u kastediyorsunuz;)
Joren

42

Kitapların hâlâ alakalı olmasının bazı nedenleri:

  1. Kağıt üzerinde çok fazla metin okumayı standart LCD ekrandan daha kolay buluyorum, belki bir e-mürekkep ekranındaki e-kitaplar bunu değiştirebilir.
  2. Kitap, büyük resmi ve bazı iyi uygulamaları tarif etme eğilimindedir; bu, hızlı bir başlangıç ​​veya yeni bir görünüme ihtiyacınız olduğunda gerçekten iyidir.
  3. Google, belirli konulara ilişkin örneklere ihtiyaç duyduğunuzda gerçekten iyidir, ancak büyük resim için değil.

Ama bir kitap seni asla yoluna almayacak, seni doğru yöne itecek.


2
Büyük resim için +1. Bir süredir yeni bir dilde / ortamda programladıktan sonra, büyük resmi ve kendi araştırmamdan kaçırdığım şeyleri doldurmak için kitapların gerçekten yararlı olduğunu düşünüyorum.
Adam Morris,

2
Raymond Chen'in blogu veya Kanal 9'daki Going Deep serisi, nedenini öğrenmede olağanüstü faydalıdır . Bir şeyin " neden " olduğunu bir kez anladığınızda , nasıl yapılacağı googled olabilecek önemsiz bir ayrıntı haline gelir. Genellikle bir kitabın yazarı, çevrimiçi bulduğunuz kod parçacıklarının bir araya getirilmiş bir araya getirilmesinden ziyade neler olup bittiğini mantığını anlamak için arka plana gidebilir.
Ian Boyd

IMO, kitapların sahip olduğu en büyük avantajlardan biri, parmaklarınızı bir kerede birden fazla yere yapıştırma yeteneğidir; böylece bölümler arasında hızlıca dolaşabilirsiniz. İlk önce neyi aradığımı anlamak için sık sık başka bir şey ararken (bazen birkaç şey) araştığım için, bazı kodlardan geçerek yeni bir şeyler öğrenmeye çalıştığımda bunu paha biçilmez buluyorum. Bir ekranda gezinmek aynı değildir.
TMN

Kabul. Örneğin, Asp.Net MVC'ye atlayarak, nasıl yapılacağını çözebilirsiniz. Ama aynı zamanda yanlış olabilecek pek çok şey var. Öyleyse bir şeyin neden işe yaramadığını kafandan çiziyorsun.
Andy,

28

1980'lerin kitaplarında programlamayı öğrendiğimde, bir programlama dilini bir bütün olarak tamamen öğrenmek için mevcut olan tek bilgi kaynağının az ya da çok olması. Ek olarak, bilgisayar dergileri satın alabilirsiniz, ancak içerikleri ilginç ve yararlı olabilecek ya da olmasa da rastgele yazılardı.

Günümüzde ihtiyaç duyduğunuz tüm bilgileri İnternette bulabilirsiniz. Yine de, tam bir öğreticiyi bir kitap için yeterince benzer sayılırdım.

Nasıl öğreneceğiniz kişisel tercihlerinize veya gerçek ihtiyaçlara bağlı olabilir.

Kitap veya çevrimiçi öğretici ise, "tam metin" in avantajı, gerçekte gerekli olmasa da, daha sonra size yardımcı olacak malzemeyi kapsamasıdır. Sadece bir şeyin mümkün olduğunu bilmek ve onu nerede bulacağını bilmek. Özellikle karmaşık bir ortamı veya C ++ gibi çok karmaşık bir dili öğrenirseniz. Ruby on Rails ile ilgili birçok küçük blog'u Ajax veya güvenlikle ilgili konuları duymadan okuyabilirsiniz . Sadece oyun oynadığın sürece, bu sorun olmayabilir. Ancak, bana olduğu gibi, birkaç hafta içinde profesyonel Ruby on Rails gelişimine girmek istiyorsanız, o zaman tüm önemli noktaları kapsayan bir metinle çalışmak çok yardımcı olacaktır.

Diğer kitaplar programlama stili, en iyi uygulamalar, tasarım desenleri veya belirli algoritma grupları hakkındaki ayrıntıları kapsar. Onlarla ve belki de sadece çok küçük bir altküme uygulayacağınız tüm tasarım desenleriyle çalışabilirsiniz. Yine de, onları tanımak ve nerede bulacağınızı bilmek faydalıdır. Ve bu, düşünce süreçlerinizi “bir şekilde yürütmeyi” yapmaktansa “bir çözüm inşa etmek” ile daha çok ilgilendiğiniz bir yöne doğru eğitmenin bir yoludur.

Şahsen okumayı severim, bu yüzden kitapların kuru olduğu hissine sahip değilim. Elbette önemli olmasına rağmen, kitabın gerçek bilgi düzeyinizde veya ötesinde olması. C # ile ilgili tüm temel bilgileri zaten öğrendiyseniz, yeni başlayanlar için bir kitap okumak pek mantıklı gelmiyor.


7
Ne yazacağımı yazdığım için +1: “en iyi uygulama / yöntem” türündeki kitapların “Y kullanarak X'in nasıl yapılacağı” türündeki kitaplardan büyük ölçüde farklı olduğu. Ve birincisi gerçekten değerli şeyler, çünkü zor kazanılmış genel problem çözme deneyimini öğretiyor. Ünite testi, yeniden düzenleme, tahmin vb. Şeyleri öğrendikten sonra, onu bir çok dil / alan / projeye uygulayabilir ve uyarlayabilirsiniz.
Péter Török

1
Stiller, uygulamalar ve desenler konusundaki sözleri kesinlikle takdir edin. Bunlar gerçekten faydalı olanlar. Programlamayı sadece çözmek ve çözmek için bir sorun yaşayarak öğrenebilirsiniz. Stilleri, uygulamaları ve kalıpları öğrenerek iyi programlamayı öğrenirsiniz. Yine de, bu kavramları kapsamlı bir şekilde anlamak için en iyi yer metinlerdir.
Rig,

"Gerçekte gerekli olmasa da size daha sonra yardımcı olacak malzemeyi kapsar" için +1 - iyi programcılar üzerinde çalışacak derin bir bilgi birikimine sahiptir. Tüm detayları hatırlamıyor olsanız bile, ama ihtiyacınız olduğunda çekip öğrenmeniz gereken ipliği biliyor olsanız bile, bu çok değerli olabilir!
Jared Updike

22

Bir kitap (veya bir kitap gibi yapılandırılmış web dokümantasyonu) hala en çok dil öğrenmek için benim tercih ettiğim yoldur.

Sadece bir dile daldığınızda ve kendiniz için bir şeyler öğrenirseniz, iyi bir kitabın size doğru zamanda teslim edeceği önemli hususları kaçırmanız muhtemeldir.

Örneğin, bazı meslektaşlarım Java'yı kitapsız dalarak öğrendiler. Bir süredir Java'da programlama yapıyorlardı. Keşke diziyi bir dizeye dönüştürerek, .substring () kullanarak diziyi bir diziye dönüştürerek, bayt dizilerini [] rutin olarak değiştiriyorlardı. System.ArrayCopy (), Java In A Nutshell sayfasındaki 155. sayfada tanıtıldı

Umarım öğrenmenin bir öğretmenle, yalnız olmaktan daha kolay olduğunu fark edersiniz. İyi bir kitap, iyi bir öğretmenin ucuz yerine geçer. Kavramları dikkatlice planlanmış bir sıraya sokacak, böylece tam anlamıyla bir anlayış oluşturabilirsiniz - sadece geçinecek kadar değil.


2
Bir şeyi yapmayı öğrenmek ile iyi yapmayı öğrenmek arasındaki farkı işaret etmek için +1.
idbrii

İyi bir kitap, bölgeyi hızla kapamak için harika bir yoldur. Birisi zaten araştırmayı sizin için yaptı. İyi bir kitap bulmak zor olabilir. İlgilendiğim bir konuda harika bir kitap alma şansımın 50/50 olduğu bir zaman vardı (gerçekten iyi bir alıcı). Şimdi kitapçıda iyi bir kitap bulma şansını% 10'dan az buluyorum. Ancak, internette kaynaklar gibi pek çok güzel kitap var. Doğru kaynağı seçmek öğrenmenizi hızlandırabilir.
BillThor

1
O zamanın ne olduğundan emin değilim. Son zamanlarda eski CS kitaplarıma baktım. Standart çok gelişti. Örneğin, yıllar önce 'Miranda ile Fonksiyonel Programlama' kullandım. Geçenlerde 'Gerçek Dünya Haskell'i kullandım. Eski kitap, temelde Haskell ile aynı kavramları ve paradigmaları kullanmasına rağmen, bugün gizemli.
İnce

21

Bence sen bir şeylerin üstünde olabilirsin. En azından benim için yeteneklerimin çoğu, "X" olan bir program istemekten / buna ihtiyaç duymaktan geldi.

Belki bu şekilde öğrenen insanlar yardım istemiyordur; Onlar sadece bunu yapmak için çok meşguller (kötü, ama yol boyunca öğrenme). Programcı olmak isteyen kişiler (bu ilk gruba atanan), nasıl programcı olunacağı ya da nasıl programlanacağı hakkında, mutlaka çözülmesi gereken bir problemi olmasa da, birçok soru soruyorlar ve bunlar Direkt cevaplı sorular.

Ve böylece kitaplara kumar oynarız. “Ah evet, 'Python'a dalın' bir kopyasını alın.” ““ Öyle mi öğrendin? ” "Hayır" "Hım ..." "Biraz meşgulüm ama takılırsan yardım edeceğim" "Ah ... Tamam, sanırım"

Öte yandan, öğrenirken okuma materyalinin iyi olduğunu düşünüyorum, böylece çözmeye çalıştığım sorunun daha yetenekli bir yazar tarafından nasıl çözüldüğünü görebiliyorum, ya da belki de biraz öğrenebilmem için "acemi" tekniklerini yol boyunca almayacağım.

TLDR : Kitaplar iyi, yaparak öğrenmek iyi, Kitap yaparak öğrenmek iyi mi ???


1
+1: Sanırım çivilenmiş. Yaparak öğrenin, sahip olduğum en değerli kitapları o zamanlar yazdığım bir uygulamaya özeldi.
Justin Shield

41
Her şeyi bildiklerini düşünen bir “kendi kendini yetiştiren” programcı olmaktan kaçının, çünkü basit bir problemle çalıştılar ve kendilerini kitap okumak için “çok iyi” hissediyorlar.
Joris Timmermans

2
Dikkat etmeliyim ki okumaya karşı değilim, sadece dijital medyanın genellikle daha güncel ve ilgi çekici olduğunu düşünüyorum.
Alex Hope O'Connor

2
@Alex Dijital medya hakkında. Bu gerçekten medya tarafından ele alınan konuya bağlı. Medya, y dilinde x'in nasıl yapılacağı veya z'de kodlamanın en etkili yolu gibi konuları ele alıyorsa, ifadenize katılıyorum. Bununla birlikte, NP, P, algoritma analizi vb. Gibi diğer konular (genellikle daha ileri, teorik konular) IMHO genellikle bir kitap tarafından ele alınmaktadır. Knuth'un Programlama Sanatı'nı alın . Oldukça eski bir metin ama yine de programlama konusundaki en önde gelen kitaplardan biri olarak kabul ediliyor.
cledoux

16
Bunun bir onay önyargısı olabileceğini düşünüyorum. @Alex kesin bir cevap arıyor gibi görünüyor. Bu cevabın kendi başına kötü olduğunu söylemiyorum , ama kesinlikle hayal gücünün herhangi bir tarafından sağlanan en iyi cevap değil.
zzzzBov

15

Teknik kitap okumayı seviyorum. Sharepoint, teknik kitapların tümü değil, sadece ilgilendiğim belirli bir konuyla ilgili kitapların olduğunu söylüyor. Gerçekten okuduğum ilk kitabı (defalarca) hatırlıyorum. Bu ve diğerleri nedeniyle bellekten bir Win32 uygulaması yazabildim. Bir API aramaya pek ihtiyacım olmadı, ben de iş yerine odaklanabildim.

Kitapların belki de benden daha iyi bir şeyler yapmanın doğru yolunu bilen biri tarafından bir şeyler yapmanın "otoriter" bir yolunu sağladığını düşünüyorum. Öğrendiğim şeyin, sorunumu çözmenin en iyi yolu olduğunu söylemeye cüret ediyorum. Tabii ki, eğer yazara güvenirsem (Amazon'daki değerlendirme alanını sevmeliyim).

Kendimi şimdi daha fazla "googling" bulup, bir sorunu çözmeye çalıştığımda kopyalayıp yapıştırırken bulmama rağmen, kopyaladığımın (veya ilham aldığım :) güvendiğim bir şey olduğundan emin olmak için zaman harcıyorum kodumu koyabilirsin. Sırf web üzerinde bir çözüm bulduğum için, mutlaka en iyisi değil.

Diğer pek çok programcı gibi ben de basitçe cevapları googleda bulurken, kendimi hala bilinen yazarlardan kitaplar toplarken buluyorum. İçeriğin bana açıklamayı iyi yapan (onu öğreten) biri tarafından getirildiğini hissediyorum ve tüm önemsizleri Google sonuçlarımdan filtrelemekten kurtarıyor.


14

Sorunuzun "eski teknolojiyi neden HTML sayfaları yerine basılı bir kitap gibi kullandığını" değil, "neden bir veya birkaç yazar tarafından yazılmış programlama hakkında daha uzun metinler okuduğunuzu" kastettiğini farz ediyorum.

Kitapları belirli bir konu hakkında yapılandırılmış bilgi toplama olarak düşünebilirsiniz. Birinin konuyu daha kolay anlamak için her bir bölümü birbirinin üzerine koyma çabası göstermesi avantajına sahiptir. Genellikle, size bilginin sınırlarının ne olduğu da söylenir (kapsanan ve başka bir yere bakmanız gereken başka ne var). Okuduktan ve çalıştıktan sonra, belli bir beceriyi edindiğinizden emin olabilirsiniz. Hızlı ileri sarma düğmesi basılıyken öğrenmek istiyorsanız, bir kitap, en azından kitabın yapısına güveniyorsanız, sıkıcı kısımları atlamaksızın sizi her yönüyle çalışmaya zorlayabilir. "Kitap" adlı koleksiyon da genellikle referans olarak kullanışlıdır.

İnterneti kullanarak, blogları, "etrafta dolaşmak" vb. Genellikle yapılandırılmamış bilgi türüne girer. Bir sürü bit ve bilgelik parçası elde edersiniz, ancak bilginizi geliştirmek için daha fazla arama yapmak zorundasınız çünkü kimse size "ilk önce bunu öğren ya da o şeyin değerini görmeyeceksin" demesinde rehberlik edemez. şimdi googledim ". Bazı parçaları özleyebilirsiniz çünkü çok sıkıcı ya da hiç kimse size önemli olduklarını söylemedi. Bazı şeyleri yanlış öğrenebilirsiniz, çünkü İnternette yazılan her şey birinci kalite değildir. İşe yaramaz arama sonuçlarını filtrelemek için çok zaman harcayabilirsiniz. Belirli bir tasarım desenini veya programlama yapısını bilmediğiniz ve hiç kimsenin size söylemediği için, kendi başınıza bir şeyler başarmaya çalışmakla günlerinizi harcayabilirsiniz. Ne kadar az bilirsin

Biraz kışkırtıcı yapmak gerekirse: Köprü inşa etmek ya da yapısal analiz hakkında bir kitap okumadığını ancak Google'ı dolandırarak ve Google'ı kullanarak öğrendiğini söylese, her gün geçmem gereken bir köprü inşa etmek için bir mimara asla güvenmem. ...


Sorum benim dürüst olabileceğim şeklinde yorumlanabilir, ancak ikincisi benim genel görüş birliğimdi.
Alex Hope O'Connor,

10

Eğer bir C programcısıysanız, Python'u kitap veya öğretmen olmadan nasıl öğrenmeyi umuyorsunuz?

Eğer sadece temel sözdizimini öğrenir ve dalırsanız , Python'da C kodunu yazmanız ve Python'un C kadar ayrıntılı ve acı verici olduğu sonucuna varacaksınız.


Bu bir abartı. Python'u programlamaya başladıysanız, sorunların google yanıtlarını verebilir ve belirli sorunlara Pythonic çözümlerini tanımlayan Python tarifleri gibi şeyler bulabilirsiniz .
idbrii

6
@ pydave: Eğer abartı olsaydı, o zaman çok fazla C-kod-Python-in-Python (örnek)
BlueRaja - Danny Pflughoeft 17:11

4
Örnek sorunuzu okudum, cevabınızı okudum ve ne demek istediğinizi anlıyorum: Temel sözdizimini öğrenmek, dili öğrenmekle aynı değildir. (Dilin yapılarını öğrenmeyi bile düşünmedim bile.) Python'da C kodu yazacak kadar Python öğrenirseniz, Python'da programlamayı henüz öğrenmediniz.
idbrii

Bu, daha fazla dikkat gerektiren ciddi bir sorundur. Tüm programlama dilleri tamamlanmıştır, yani C benzeri Python kodunu veya Java benzeri Ruby kodunu yazarak herhangi bir sorunu çözebileceğiniz anlamına gelir. Orada, programladığınız dilin zeitgeistine uymaya zorlayacak hiçbir engel yoktur. Daha da kötüsü, kodlama veriminizin acısını bile hissetmeyebilirsiniz, çünkü yerel C ya da doğal olduğu kadar acı verici olacaktır. Java, normal olarak kabul ettiğin bir acı seviyesi.
Kama

daha fazla kabul edemez - Ben herhangi bir yazarken PHP C programcısıyım: - |
warren

9

Google genellikle yalnızca küçük kod parçacıkları veya açık kaynaklı kitaplıkları bulmak için iyidir. Bazı kitaplıkların / programların dokümantasyonu en iyi şekilde güvenilmezdir (varsa, yalnızca basit veya ortak örnekleri gösterir.)

Çok fazla programlama kitabım yok, ama şu anda size OpenGL hakkında bir kitabım olduğunu söyleyebilirim ve içinde basitçe kopyalayabileceğiniz bir 3D motor kodunun çoğunluğu var, ancak aynı zamanda teoriyi de oku - sadece birkaç sayfa çevirmelisin ve kodun bir açıklaması orada, okunmayı bekliyor. Bugünlerde net üzerinden bazı açık kaynaklı 3D motorları bulabilirsiniz, ancak kodu büyük ölçüde değiştirmeniz gerekirse, muhtemelen bir miktar başınız beladadır - tipik olarak hiçbir yardım forumu yoktur ve SO'daki insanlar bunu bilmez çok özelse sorunuza cevap verin. Gerçekten özel konulara gelince, Tüm dünyada sadece birkaç düzine insan, cevap bulabilecek pozisyonda olmak için yeterli zaman bulmak için sorunuzu saatlerce harcamaksızın cevaplayabilecektir. Bağlantılı bir listeyi C # 'da nasıl uygulayacağınızı sorarsanız, ilk 10 dakikada SO' ya 5+ cevap alacaksınız, fakat three.js 'de karmaşık bir gölgeleme algoritması uygulamak için en iyi yolun ne olduğunu sorarsanız, Sorunuz ön sayfadan bir kaya gibi düşecek.

Bunun da ötesinde, kitaplar neredeyse yalnızca okuyucunun dahil olduğu teori hakkında bilgi edinmek istediği bakış açısıyla yazılırken, google sadece rastgele önemsiz kod parçacıkları, konuştuğu konu hakkında kimsenin neden bahsetmediğini bilmediği tartışmalar üretmektedir. İnternetteki kaynaklar çok daha iyi bir hale geldi: SO, Moz Dev Network, Microsoft'un web sitesi, bloglar vb. ama tarihsel olarak, kitaplar internet kaynakları ile şimdi daha iyi anlaşılıyor.


1
"Googling ile öğrenme" yöntemi ile rastgele önemsiz şeyleri ayırmanız gereken zamanı belirtmek için +1
Ray

1
'Kimsenin neden bahsettiğini bilmediği konu hakkındaki arşivlenmiş tartışmalar vb.' İçin +1 - ROFL.
5arx

7

En iyi kitaplardaki yazma kalitesi, başlamadan önce açık olmayan konuların birçoğunun ortaya konduğu şekildedir. Çok tecrübeli bir yazar, size şu gibi şeyler hakkında bilgi verecektir: beklenmedik yan etkiler, uzun vadeli tepkiler, belgelenmemiş özellikler, tipik kullanım senaryoları ...

Temel olarak, sizi sorundan geçiren ve gerçekten ilginç parçalara işaret eden çok fazla deneyime sahip bir yazardan faydalanıyorsunuz.

Bazen bunu çevrimiçi referanslarda da bulabilirsiniz, ancak çevrimiçi bilgilerin çoğuna girmenin önündeki düşük engel nedeniyle, çok temel, detaylarda eksik veya tamamen yanlış. Bu aynı zamanda kitaplarda da olabilir, bu yüzden sürekli olarak iyi incelemelere sahip klasik kitapların tam olarak inandığınızdan emin olun. Diğer kitaplar da faydalı olabilir, ancak yalnızca kaynaklardan biri olarak, kendinize çapraz referans vererek ya da deneyerek bilgileri doğrulamanız gerekecektir.


1
+1000 'düpedüz yanlış' Kullanıcı derleyicilerini kullanmayan veya ne hakkında konuştuğunu bilmeyen 'en iyi programcılar' tarafından yazılmış çevrimiçi bir ton kod vardır. Ayrıca, içeriği tutarlı ve okunaklı bir şekilde tanıtan pedagojik bir modelle iyi bir kitap yazılacaktır.
jqa

6

Kitaplar, yapılandırılmış bir biçimde çok fazla bilgi edinme eğilimindedir. Google, yapmanız gerekenler açısından her zaman özellikle yapılandırılmış ve düzenlemesi zor olmayan büyük miktarda bilgi edinme eğilimindedir.

Aslında artık fiziksel kağıt kitapları okumuyorum - yanımda elektronik bir okuyucu var ve dizüstü bilgisayarımda Kindle yazılımı var ve bu da aradığım bilgilere erişmemi sağlıyor.

Google’ın yararlı olduğu nokta, nasıl programlanacağına ilişkin yapısal bir genel bakış arıyorsanız, ancak belirli bir görevin nasıl programlanacağına ilişkin ayrıntılara ihtiyacınız yoksa. Birisi bu görev için neredeyse her zaman kod yazmış veya en azından buna benzer bir şey.

Programlamayı öğrenme ile belirli bir görevi programlamayı öğrenme arasında bir fark olduğunu düşünüyorum. Programlama konusunda gerçekten iyi bir genel bakış elde edemedilerse, yalnızca belirli işleri googling'den öğrenen parçaları ve parçaları öğrenen birinden gelen kodun kalitesini sorgularım. Bu dile özgü değil, daha kavramsal.


4

Bir konuya daha derin girmek istiyorsanız, kitaplar kullanışlıdır. Tabii ki C # 'yı birkaç ders çalışması yapmaktan ve bazı (evcil hayvan) projeler yazmaktan öğrendim. Ancak derinlemesine C # altında neler olup bittiğini görmek ve birkaç yeni şeyler öğrenmek için hala yararlıdır.

Ayrıca bir programlama kitabı alıp banyomda veya güneşte dışarıda okuyabilirim . Masaüstü bilgisayarımla bunu yapamam.


4

Çünkü diğer programcılardan öğrenmenin uygun bir yoludur.

Kitaplar ek niteliğindedir. Kendi başınıza çok hızlı çalışabilirsiniz. Kim daha iyi bir programcıya sahip bir projeye katılmak istemez ki, sadece kitabı okumaktan başka bir şey öğretmek ister?

Onları "programlama hakkında bilmeniz gereken her şey" yerine bir referans olarak kullanmaya meyilliyim.


3

Kitaplar, bir dizi bilgiyi "pasif" bir şekilde emmenize izin verir. Olanakların alt kümesine ne elde edeceğinize bakmak zorunda değilsiniz. C # öğrenirken, kitap gerçekten olasılıkları ortaya koymada yardımcı oldu ve C ++ eşdeğerlerinin ne olduğunu merak ettim. Tabii ki mastering (gerçek boyutta) bir projede kullanıldığında gerçekleşti. Ancak kitap gerçekten farklılıklara ve olasılıklara dikkat çekti.


3

Kısacası, kitapların yüksek düzeyde daha faydalı olma eğiliminde olduğunu düşünüyorum. Size tasarım rehberliği verebilir ve sorunları çözmek yerine sorunları önlemenize yardımcı olabilirler .


Kitapların kesinlikle dezavantajları vardır. Programlama Python kopyasını Python 2.0, ancak kullandığım çalışma zamanı 2.6.

Bununla birlikte, kitapların asıl önemli yanı, kendinize rastlayamayacağınız şeyler bulabilmenizdir. Google, belirli sorunları çözmenize yardımcı olur, ancak kitaplar tasarıma yardımcı olur. Ve sadece tasarım kitapları değil. Bir dilin tasarımını anlamanıza yardımcı olacak iyi bir kitap okursanız, o dili nasıl kullanacağınızı daha iyi anlarsınız.

Diğer kitaplar bilginizi geliştirmek için iyidir. Scott Murphy'nin Etkili C ++ kitabının iyi bir örnek olduğunu düşünüyorum. Bu kitap C ++ öğrenmek için gerçekten çok iyi olmasa da, algoritma / arayüz / miras tasarımında karşılaştığınız (henüz) henüz karşılaşmamış olduğunuz veya üzerinde çalıştığınız sorunları görmenize yardımcı olur. Basit bir çözüm bulmak kolay olabilir (bu benim daha sonra başka sorunlara neden olur), ancak dili daha iyi anlayarak yazılımınızı bu sorunlardan kaçınmak için tasarlayabilirsiniz.

Tabii ki, kitapların onları değerli kılan kağıda basılmış olması gerçek değildir. Onları yaratma çabaları ve sıkı bir eğitim verme arzusu kitaplara değer veren şeydir. Genellikle bir yan etki olarak, C ++ SSS lite veya Python içine Dalış gibi e-kitaplar gibi çevrimiçi kaynaklardan yararlanabilirsiniz . Ayrıca kapsamlı ve kullanışlı öğrenme araçları olan çevrimiçi bazı dersler de vardır (bazı platformlar / diller / kütüphaneler için belgeler gibi).

Web'deki snippet'ler sorunuzu yanıtlamanın iyi bir yoludur, ancak nadiren size ne sormanız gerektiğini söylerler.


3

Programcı olmak istiyorum, bu yüzden programlama kitapları kullanıyorum. Kitaplar programlamada profesyonel olarak yetkin olmamı sağlayacak.


3

Uzun zamandır bir programlama kitabı okumamıştım. Bunları referans kılavuzları olarak kullanmak için kullanıyorum, ancak şimdi İnternet'in çoğu dil ve çerçeve için daha kolay olduğunu düşünüyorum.

Her neyse, bence programlama kitaplarından öğrenmenin en iyi yolu ana dildir. Mesela ilk gerçek dilim C idi. Bir işletim sistemi yazarak öğrendim (bunu tavsiye etmiyorum). Sonuç olarak, C bilgim iki ya da üç yıllık programlamadan sonra bile oldukça sakatlandı. Dil hakkında temel bir bilgim olmadı. Bu 15 satırdaki karışık kod satırını temiz bir iki satırlık kod haline getirebileceğimi bilmiyordum. Böylece problemleri çözebilirdim, ama C'yi tam olarak kullanmıyordum.

Sonra bir noktada C ++ öğrenmeye karar verdim ... (C öğrenmeye başladıktan 2 yıl sonra). Bu yüzden, sahip olduğum tek C ++ kitabını, C ++ For Dummies Book'u okudum. O zamanın yaklaşık 4 / 4'ünü okudum, o sırada çok az "yapıyor" yaptım .. ve sonuç olarak bu 15 satırdaki karışık kodla rahat olmak yerine ilk projeme atladığımda Bunu yapmanın daha kolay bir yolu (bakmak zorunda olmama rağmen).

C # / ASP.NET öğrendiğimde aynı şeyi yaptım. Neredeyse hiçbir şey yapmadım ama kitabın yaklaşık 4 / 4'üyle tamamlanıncaya kadar okudum. Ve öğrenemediklerim için ilginç C # soruları için Stack Overflow'u araştırdım. İlk projeme adım attığımda, kodumun çoğunun göreceli olarak temiz olduğunu ve o zamandan beri yalnızca “derece” olarak yeniden yapılandırılması gerektiğini söyleyebilirim.

Bu yüzden, kitapların bir çerçevenin veya dilin yeteneklerini öğrenmek için çok faydalı olduğunu söyleyebilirim. Bununla birlikte, elbette, güçlü teorik ve özel olarak tasarlanmış, referans olması gereken kitaplar dışında, çoğunlukla İnternet tarafından yararsız hale getirilirler.


2

Ne okuduğun hakkında daha az, ama ne kadar. Bir proje üzerinde çalışırken birkaç tane programlama kitabı hazırlamayı seviyorum. Her zaman ve tekrar (düşündüğünüzden daha sık) mevcut projenize uygulanabilecek bir teknik hakkında bilgi edineceksiniz.

Gerçek bir dünya çözümüne uyguladıktan sonra bilgiler değişecektir.


2
Aslında SE gibi web sitelerinde soruları cevaplarken bu durumda buluyorum. Çoğu zaman yorumların beni üzerinde çalıştığım ya da yakında çalışacağımı bildiğim bir sorunu çözme ile ilgili bilgilere yönlendirdiğini buluyorum.
Lea Hayes,

2

Kitap kullanmayı tercih ediyorum çünkü üzerinde çalıştığınız teknolojinin durumunun bir görüntüsünü sağladıklarını hissediyorum. Yazar, Y dili / kütüphanesinin XX versiyonunda Z problemini nasıl çözdüğünüzü söyleyecektir. Web sitesi eğitmenleri hangi versiyonları kullandıklarını listelemekte başarısız olurlar veya kitapların sıklıkla kullandıkları örnek kodları sağlarlar.

Kitaplar genellikle bu çözümü "neden" i kapsarken çevrimiçi dokümanlar genellikle kopyala yapıştır.

Ayrıca tüm referanslarınızla olan bağlantılarınızı da kaybedebilirsiniz, onlar hareket edebilir veya düşebilir. Kitaplarımı bir yatırım gibi korudum ve ilgileniyorum (oldukları gibi).


2

Sorunları kitap okumadan çözebilirsiniz, ancak o zaman bu sorunu çözmek için programınızın arkasında neler olduğunu gerçekten bileceksiniz mi?

Neler olduğunu ve neyin daha iyi bir alternatif olabileceğini bilmen gerekiyor. Bunun için iyi programlama kitaplarına ihtiyacınız var. Elbette sadece kitap okumak yeterli değil, içeriği anlamanız, başka kitaplardan geçmeniz, farklı problem çözme yaklaşımları hakkında düşünmeniz gerekiyor. Öğrenme, kitaplarla ve kitapsız devam eder.


1

C ++ öğrenirken, kafamdaki bir şey tıklanıncaya kadar edebiyatın çoğunu işe yaramaz buldum. O gün ne olduğundan emin değilim, ama her şey anlam ifade etmeye başladı. Kitaplar ve web siteleri daha sonra çok daha anlamlı hale geldi. C ++ 'da nasıl programlanacağını öğrenmem 2 kitap aldı ve hiçbiri gerçek C ++ kitapları değildi (bunlar öncelikle MFC'ye odaklanan Visual C ++ kitaplarıydı).

Doğru kitabı bulursanız, o zaman gerçekten yararlı olabilir. Bir arkadaşım üniversitede bazı Dietel kitaplarını okuyordu ve ben bunları çok iyi yazılmış buldum. "Aptallar için" kitaplarını hiç bu kadar yararlı bulmadım, çünkü işleri benim için doğru şekilde açıklamıyorlar. En iyi tavsiye bir kitapçıya gidip kitabın tadına bakmaktır, böylelikle son derece pahalı kitaplar olma eğiliminde olanlara çok para harcamazsınız.

Bazı programlama konuları için birkaç kitap okumayı, Google üzerinden araştırma yapmayı ve deney yapmayı faydalı buluyorum. J2ME ile bir dama oyununda çalışırken AI algoritmaları üzerinde çalışırken kendimi çok buldum. Özel sözdizimleri için nasıl derleyici derleyici oluşturulacağını öğrenirken kendimi bunu yaparken de buldum. Çok farklı varyasyonlar ve görüşler var.

Bazen birden fazla bakış açısına sahip olmak, başka türlü daha karanlık olan bağlantıları yapmanızı sağlar.


1

Hem kitaplardan hem de web gibi “tam zamanında” kaynaklardan öğrenme (programlama) eğilimindeyim. Her ikisi de iyi olabilir ama genel olarak kitaplardan öğrenmeyi tercih ediyorum, işte neden:

Sadece bir projenin bir bölümünü bitirmek için hemen bilmeniz gerekenleri öğrendiğinizde bazen büyük resmi kaçırırsınız. En iyi kitaplar yalnızca referans değil, bir anlamda bir teknolojiye dair kapsamlı bir genel bakış ve sık karşılaşılan sorunlara en iyi çözümler hakkında çok sayıda deneyimli tavsiye sağlayarak bir çıraklığa daha yakın bir şey elde etmektir.

Tam zamanında öğrenme, tatmin etme probleminden çok kolay bir şekilde muzdarip olabilir, çözmek istediğiniz bir sorunu tespit ettiğinizde, işe yarayan ilk çözüme atlarsınız, sonra nasıl uygulanacağını öğrenmek için interweb'lere kaçarsınız. . Bununla birlikte, sık sık bu durum sizi sıkıntıya sokabilir, eğer probleminiz hakkında deneyimli bir programcı ile konuşabilseydiniz, size "burada X'in nasıl yapılacağını", "bunun yerine size söyleyeceğini" söylemezlerdi X, yerine Y yap ". Ve bu, en iyi kitaplardan elde etme eğiliminde olduğunuz bilgi türüdür. Gerçekten de, bazı kitaplar tamamen Javascript: The Good Parts .

JIT öğrenmesinin yaşayabileceği diğer bir problem ise çok daha yavaş bir öğrenme eğrisidir. JIT öğreniminde yalnızca bilmeniz gerekenleri öğrenme eğilimindedir. Ancak çoğu zaman sadece temel bir bilgi birikimine sahip olmak yeni bir dil veya çerçeve öğrenmeyi hızlandırabilir. Temellerin üzerine tökezlemek yerine sağlam bir temelle başlarsınız ve sonra oradan inşa edersiniz. Bir kitabı okurken kullanabileceğiniz iyi bir malzeme yığını sizin için hemen yararlı olmayabilir, ancak bu temel bilgilere sahip olmak karar vermenize rehberlik etmek ve özellikle maruz kaldığınız yeni kodu anlamakta faydalı olabilir. Elbette bir takas var ve onları okuduktan sonra hatırlayamayacağınız işe yaramaz gerçekleri temel alan kötü kitaplar var ama aynı zamanda size temelleri ve bunların temellerini iyi bir şekilde temellendiren iyi kitaplar da var.

Ayrıca, geliştirici olarak olgunlaşmanın çok önemli olduğunu düşündüğüm tek bir teknolojik konudan daha yüksek düzeyde kitaplar da var. Gibi kitaplar Komple Kanunu , Refactoring , Legacy Kanunu ile Etkili Çalışma vb sadece JIT öğrenme yoluyla bu kitaplardan bilgi almak için gitmiyoruz.


1

Kitap okumaya başladığımı düşünüyorum. Özellikle e-kitap indirme. Bölümün her bölümünü okudum. Kodlarını kopyala! Programlama editörünüze yapıştırın ve çıktının ne olduğunu görün. Sonra mantığını değiştirmeye çalışın. Daha hızlı çalışması için indirilebilir e-kitaplardan bahsettim.Aşağıda gerçekten mükemmel. Yalan söylemiyorum ama geçen Kasım ayından bugüne kadar. yaklaşık 20 kitap. Hepsi okumak için aşk gerektirir. Yenilerin yaptığı şey internet yardım formunu alarak belirli bir sorunu çözmeleridir. Fakat onlara gerçek bir karmaşık görev verildiğinde pes ederler. Bunun çözümü.Örneğin, denetimleri datatable ile sınırlandırdım ve veri setlerinin ne yaptığını bilmiyorum ve veri tabanı tablolarının bellekte yerleşik kopyaları arasında ilişki (ler) kurma ilişkisini yapma görevi aldım.


0

Yeni programcılar için hangi programlamanın gerçekte ne kadar derin olduğunu anlamak çok zordur.

Herkes bir bilgisayara yapması için bir program yazabilir - çok az öğrenmesi gereken herhangi bir şey hakkında, bu zor değil! Zor olan, takımın diğer üyeleri tarafından çok iyi anlaşılabilen ve hızlı bir şekilde anlaşılabilen ve anlaşılabilen bir program yapmaktır, bu kısım yıllar, onlarca yıl alır.

Buna ek olarak, bir ekibin etkili bir parçası olarak çalışmayı öğrenmek, bir eğrinin bir parçasıdır.

Peki, kitaplar bu "Gerçek" programlama problemlerini web'de referanslara bakarken çözmelerine nasıl yardımcı oluyor?

En sevdiğim kitaplardan ikisi "Tasarım Desenleri" ve "Yeniden Düzenleme".

Yeniden düzenleme, hatalı kodu nasıl tanıyacağınızı anlatan harika bir kitaptır. Kodlama referanslarına bakarak öğrendiyseniz, bu kitap (Refactoring kitaplarından biri) çok önemlidir.

Tasarım kalıpları, gerçekten iyi bir programcının çözemediği bir şey sunmuyor, ancak herkesin kodda kullandığı çok çeşitli kalıplara isimler verdi. Bu, programcıların daha etkili iletişim kurmasını ve bazı programcıların sorunlara saldırmanın yeni yollarını bulmalarına yardımcı oldu. Web üzerinde tasarım kalıpları bulabilmenize rağmen, tasarım deseninin adını google’dan daha kolay bir şekilde google’tan daha kolaydır.

Röportajlarda bu iki kitabı ve ne yapmaya çalıştıklarını anlatmaları istendi, bence bu çok geçerli bir röportaj sorusu ... Bu ikisini bilmeyen bir programcıya dikkat etmek istiyorum Çok genç bir pozisyon için başvuruda bulunmadığı sürece kitaplar.


0

Doğrudan kitaplardan programlamayı öğrendim. Yaklaşık 20 yıl önce google ve net şimdiye kadar popüler hale geldi. Bence onlar harika kaynaklar. Bununla birlikte, modern kitapların çoğu, üreticilerin teknik makalelerini alıntılamaktadır. Bu yüzden şimdi çevrimiçi öğrenmenin daha iyi olduğu konusunda hemfikirim. Aşağıdaki gibi bir uyarı ile:

Çok fazla kitap okudum ve internetten de faydalanabildiğimden hemen hemen finansal olarak uygun oldu. Hiçbir zaman, büyük bir projeyi tamamlayamadım. Tabii ki büyük ilerlemeli kitaplarda birçok projeyi başarabilirim. İçinde size yardımcı olacak 20 bölüm attılar, ancak kendi gerçek dünya projelerime gelince, her zaman infaz olmadan bir duvara çarptım. Sana söylemeliyim, ağır kitaplar okudum.

Hayatım boyunca üniversiteye girmekte zorlandım, ama şimdi üçüncü yıla giriyorum. İlk yılımda 4. sınıfta insanlarla tanıştım ve ustalarla karşılaştım ve AI, HCI, assembler ve derleyici geliştirme vb. Teorileri hakkında verimli konuşmalar yapabildim. Ancak yine de tüm bu bilgilerle makul bir program oluşturamadım. Neyi özlüyordum ... Hiçbir kitaptan veya çevrimiçi olarak alamayacağınız bir şey.

Yapısı. İlk yıl, teknik bir yapıya sahip hiçbir şey öğrenmedim (Hepsi zaten çok şey biliyordu ve bir gün çalışılmadan bunun içinden çıktılar, matematikler ve tasarımlar benim için oldukça yeniydi), ama yapı ve ekip çalışmasını öğrendim. İlk yaz tatillerimde ilk gerçek çalışmamı tamamlamaya hiç olmadığı kadar yaklaştım.

İkinci yılımda, çok sayıda yeni teknik öğeyi öğrendim (hala bildiklerimle kıyaslandığında hala temel olan, ancak gerçek pratik için bildiğim teoriyi koyuyordum). Bu, yapının tekrar tekrar önemini vurguladı. İlk gerçek projemi tamamlamadım. Şimdi kendimi bir programcı olarak görüyorum.

Programlamayı öğrenmek için kitap okumak için gerekli olduğuna inanmıyorum. Ama bu bir yardım. Ancak, hiçbir kitabın veya web sitesinin 2 yıllık kolejden aldıklarınızı bile öğretemediğine ya da öğretemediğine inanıyorum. Projeleri hiç üniversiteye gitmeden tamamlamayı başardıysanız, adil bir oyun, ama yaşına bakmaksızın kesinlikle tavsiye ederim.

Kitaplar iyi, internet daha iyi, google ve sen fab'sın, ama hiçbir şey benim görüşümde iyi olmayan eski üniversiteyi yenemez. Ve asla bir googling ve youtubing'in yapabileceğinden şüpheliyim ve ilk elden hiçbir kitabın geçmeyeceğini biliyorum.


Yukarıda yazdığı "İlk gerçek projemi tamamlamadım. Şimdi kendimi programcı olarak görüyorum". "İlk gerçek projemi şimdi tamamladım. Şimdi kendimi programcı olarak görüyorum" yazmalı. Yazım hatası için üzgünüm.
Jack Spratt

0

Hiçbir fikrim yok. Kitap programlamaya karşıyım. Çoğu durumda, ek bilgileri aramak için yine de İnternet'te araştırma yapmanız gerekir.

Bir programlama dili öğrenmek ister misiniz? Bunun için Google. JQuery'den nefret ettim çünkü zor görünüyordu. Sonra Stack Overflow'a geldim ve bundan çok şey biliyorum. Herhangi bir kitabın yardımı olmadan.

  • Bunun için Google
  • Bazı profesyonel, tam açık kaynaklı uygulamalar için etrafa bakın
  • Olanları elde etmek için bu koda göz atın ve YTL'yi seçin.
  • Varolan bir kodun parçacıklarından hızlı / basit bir uygulama yazmaya çalışın.
  • Kendin için yeniden yazmaya çalış.
  • İnternette daha fazla öğretici bulun
  • Deneyim almak
  • Daha fazla deneyim al
  • Az önce yeni bir dil öğrendin! (Uzman olacağınızı söylemedim, ancak temel bilgiler birkaç saat veya gün içinde öğrenilir)

Bir kitabı referans olarak kullanmak çok faydalıdır - başkalarının deneyimlerinden kazanırsınız. "Kitap" bile django veya jquery gibi kapsamlı çevrimiçi belgeler / öğreticiler olabilir . Ancak yalnızca deneme yanılma + okuma kaynağı bilginizde önemli boşluklar bırakacaktır. Şimdi sadece birkaç satırlık jQuery'ye ihtiyacınız varsa, yönteminiz işe yarar ancak dili öğrenmediniz. Ancak C öğrenmek istiyorsanız, K & R'yi referans olarak almanızı tavsiye ederim. Elbette çoğu bilginin bir yerde çevrimiçi olduğunu, ancak birçok blog gönderisine dağıldığından emin olun.
dr jimbob

0

Programlamanın sadece kitaplardan öğrenilemediği (insanların çoğunun söylediği gibi), çok fazla pratik yapmanız ve internette mevcut birçok kaynak (makale, video, örnek vb.) Olduğunu düşünüyorum.

Ancak iyi bir kitap bilginizdeki boşlukları doldurur. Bir kitap kapağı okuduktan sonra, ele almak için konuyla ilgili bilginiz arasında herhangi bir boşluk bulunmadığından emin olabilirsiniz. Mücadelesi konuyla ilgili iyi kitaplar bulmak olsa da.

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.