İyi düşünülmüş, fakat eski kitaplar programlama için bir son kullanma tarihi var mı? [kapalı]


51

Her programcının okuması gereken kitaplarla ilgili bir soru okuduktan sonra , aşağıdakilerin eskimiş sayılması gerekip gerekmediğini merak ediyorum:

Bütün bu kitaplar çok eski görünüyor. Modern bilgisayar kullanımı ile bu kitap yazıldığında güncel olanlar arasında bir fark yok mu?

Örneğin, 61 yaşındaki öğretmenim işleri çok iyi açıklıyor ancak 25 yıl önce öğretmeye başladığı zaman arasında olan her şeyi göz önünde bulundurmayı unutuyor.

Aynısı bu kitaplar için de geçerli değil mi? Mevcut uygulamaya daha yakın olan ilke ve teknolojileri öğreten daha modern kitaplar yok mu? Yoksa bugün bile faydalı ve alakalı olduklarını mı düşünüyorsunuz?


9
Listelenen tüm kitapların neden en az 12 yıl önce yayınlandığını, ancak bugün hala değerli olduklarını düşünmek zaman ayırmaya değer . Beş kişiden dördü ilk basımdan bu yana güncellendi, ancak basımlar arasındaki ortalama süre 10.4 yıl.
Caleb

83
Temel programlama ilkeleri sadece yeni bir "haftanın tadı" dili ya da çerçevesi olduğu için değişmez.
Robert Harvey

26
Ham bir bilgisayar bilimi mezununun karmaşık bir yazılım sistemi kurmasını beklemek bir ham inşaat mühendisliği lisansüstü tasarımının bir asma köprü beklemesini beklemek gibidir, sadece gerçekleşmemeliydi. Okul size uzun bir atışla bilmeniz gereken her şeyi öğretmiyor, size nasıl harika bir yazılım mühendisi olunacağını öğrenmeli, ve bu eski kitapların onlarca yıl önce olduğu gibi şimdi de söyleyecekleri çok şey var - bitti Efsanevi İnsan-Ayın 20. yıldönümü basımından bu yana 16 yıl geçti ve bugün 1975’de olduğu kadar orijinaldi.
Mark Booth

10
bu kitaplar zamansız; ama sadece bu kitap ve kime kendini sınırlayacak programcı eski olurdu, yeni şeyler görmezden ediyorum gerçekten
sivrisinek

4
Soruya yalvarıyorsunuz: Kitaplar iyiyse, o zaman eski değiller.
quant_dev

Yanıtlar:


92

Bu kitap, gelişim ilkeleri hakkında. Bu ilkeler, doğası gereği, dil-agnostik ve hatta bazı paradigma-agnostiktir (OOP, fonksiyonel programlama, zorunlu diller).

Gelişimin teorisini ve iyi yollarını açıklarlar çünkü sonuçta yazılım her zaman veri almak, işlemek, sonra geri almakla ilgilidir. Facebook, Twitter, 3D, toplu iş muhasebesi, demiryolu trafiği yönetimi, roket fırlatma vb.

"How to learn XXXXX in YY days"XXXXX'in bir dil olduğu ve YY'nin sonunda (ve bazen çok hızlı bir şekilde) hızla eskimeye girecek bir sayı olduğu bir dille ilgili olan kitaplar , çünkü, doğası gereği, gelişen veya değiştirilen şeyler hakkındadır. modası geçmiş.

Code Complete , müthiş Steve McConnell tarafından belki de bunu fark etmemi sağlayan kitap. Ve Pragmatik Programcı tamamen ben yazılım geliştirme vardı vizyonunu değiştirdi. Bu tür kitapları okuyarak, her gün karşılaştığınız sorunun% 95'inin zaten çözülmüş olduğunu ve% 95'inin hala tekerleği yeniden icat ettiğini fark ediyorsunuz.

Sözde "Bulut", yazılım geliştirmenin geleceği değil, gelişmiş yazılımı kullanmanın bir yoludur.

Hype / bullshit buzzwords tuzağına düşmeyin, yazılım ustası becerilerinizi nasıl geliştireceğinize odaklanın.

Başarılı bir geliştirici olmanın tek yolu bu çünkü diğer parlak ruhların bizden önce icat ettiği ve öğrendiği şeylerden öğrenmeye odaklanın.


6
İyi sanatçılar harika sanatçıların çaldığını kopyalar
hafichuk

16
... gerçek sanatçılar gemi. :-)
21'de

9
Ve yine de, kaç kere söylesek de, insanlar hala 12 gün içinde sadece javascript kullanmaları gerektiğine inanıyorlar.
Spencer Rathbun

2
İyi sanatçılar kopyalar, iyi sanatçılar kopyalar ve kodu temiz tutar! (Okulda o kadar çok başım ağrıyor ki, diğerleriyle birlikte çalışarak projeyi karıştırdılar, çünkü her şeyden ve herkesten kopyaladılar ...)
HTDutchy

@ SpencerRathbun dahası (IMHO), Javascript PHP gibi diğer dillerden çok daha fazla kepek tüketiyor. Ancak orada bir bazilyon "Learn Javascript in 15 seconds"ve sadece yarım bazilyon"Learn PHP on 17 secsonds"
Clement Herreman

80

Bütün bu kitaplar çok çok çok yaşlı görünüyor. "

Psikoloji-Bilgisayar-Programlama (1971) - 1970'teki milyonlarca kez programcıların nasıl tasarlandıkları ve ne gibi hatalar yaptıkları ve onlardan nasıl kaçınacakları psikolojisi ile her zamankinden daha önemlidir.

Yazılım Araçları (1976) - Web, çerçeve çalışmaları, yardımcı programlar, komut dosyaları ve eklentilerden oluşan bir koleksiyonla - Yazılım Araçları'ndaki fikirler hiç bu kadar önemli olmamıştı.

EDIT: Genel soruya değinmek için - eski programlama kitapları alakalı mı?

Yazılım mühendisliğinin genel prensipleri o kadar değişmedi, OO, TDD vb. Yeni teknolojiler var. Fakat genel olarak kullanıcılar ve sorunlar değişmedi - ve bir problemin nasıl bölüneceğini düşünmek aynı her zaman öyleydi.

Bu eski kitaplar genellikle alandaki uzmanlar tarafından yazılmıştır. Pek çok modern programlama kitabı hala güncel iken en son kullanılan kelimeler için 2000 sayfalık bir kapı açmayı hedefliyor.

Artık kullanılmayan diller ve teknolojiler hakkındaki kitaplar muhtemelen alakalı değildir - listede hiçbir Vax assembler manual yoktur. Fakat 'C' hala çok fazla kullanılıyor ve 'C programlama dili' sadece 'C' ile ilgili en iyi kitap değil, özlü bir eğitim ve dilinize referans yazmanın bir modeli.

Yeni algoritmalar var mı? Evet. Ancak tüm eski algoritmalar hala geçerlidir ve yeni olanların çoğu tanışma ihtimaliniz olmayan karanlık alanlardır. Son zamanlarda kimse daha iyi bir sıralama veya FFT bulamadı. Diğer insanların bunları daha iyi açıklamaya çalışmış olmalarına rağmen, bu yılki Algoritma kitaplarının CLRS'den daha iyi olmasının bir nedeni yoktur.

ps. Yeni ve harika iWhatsit 1977'de geliştirilen BSD'yi kullanıyor. Şimdi çocuklar çimden çekiliyor!


28

Bütün bu kitaplar çok çok çok yaşlı görünüyor. Bugünlerde ve bu kitapların yazıldığı zaman arasında bir fark olduğunu düşünmüyor musunuz?

IMHO, çok iyi kitapların on yıllardır popüler kalması şaşırtıcı değil - bu onların ne kadar iyi olduklarını gösteriyor. Ama sanırım listelediğiniz her aday için size bir şey söyleyebilirim:

Code complete: 2nd edition = may, 2004

Aslında "Kod tamamlandı" nın ilk baskısı 1993’tendi, bu yüzden bu gerçekten "klasik". Günümüzde en popüler dilleri içeren C ailesinin hemen hemen her programlama dili için geçerli olan örnekleri kullanan temel kodlama stili ile ilgilidir (C / C ++ / Java / C # / Objective-C / D / ...). Yani evet, bu kitap güncel.

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

Aslında, o kitabı okumamıştım (algoritmalar ders kitabım "Sedgewick" dendi), ancak öğrenme algoritmaları ve algoritma yapıları gerçekten dille agnostiktir. Tabii ki, bu zanaat bugünlerde standart kütüphanelerde birçok temel algoritma bulduğunuzdan bu yana biraz önem kazanıyor, ancak IMHO her profesyonel programcının bu alanda bazı temel bilgilere sahip olması gerekiyor.

The Pragmatic Programmer

Bu bir işçilik olarak programlama hakkında çok iyi bir kitap. Programlama dilbilgisi programları tarafından manuel olarak yapılan bir işlem olarak, metin editörleri, IDE'ler, sürüm kontrolü vb.

Structure and Interpretation of Computer Programs: = September 1, 1996

Bu benim kişisel favorim, kitap olsa da (ya da belki de), kitap size farklı programlama paradigmaları arasındaki farkları öğretmek için Scheme kullanıyor. Soyutlamalar inşa etmeye bu kadar kuvvetli odaklanan başka bir kitap bilmiyorum. Ve soyutlamalar inşa etmek, vasat bir programcı ile üst düzey bir programcı arasındaki farkı yaratan anahtar bir yetenek - son on yılda hiç değişmemiş, yani gerçekten, bu kitap zamansız. Ayrıca, fonksiyonel diller ve dil unsurları son zamanlarda daha popüler hale geldi, bu yüzden IMHO bu kitapta sunulan fikirler bir rönesansa kavuştu.

The C Programming Language

Peki, bu kitap diğer dördü kadar zamansız olmayabilir. Fakat C yukarıda listelediğim popüler dillerin "anası" gibi bir şey olduğundan, bu kitabı okumak da iyi bir fikir olabilir - gerçekten daha iyi bazı modern "C" kitapların olduğunu sanmıyorum. C ++ 'u daha iyi tanıyan biri tarafından yazılmış olan C ++ kodunun bakım programlamasını yapmanız gerekiyorsa, o zaman bu kitap bir zorunluluktur.

Sonunda, teknolojiye özel olmadan, "mevcut gerçekliğin" daha fazlasını hesaba katan kitaplar istediniz. Öyleyse, "mevcut gerçeklik" nedir ve "teknoloji dışı" tarafta ne değişti? İşte bu listenin tamamlandığını veya doğru önceliklere sahip olduğunu söylemeden son on yılın bazı noktaları.

  1. Daha fazla eski kod var (özellikle sadece Fortran ve Cobol’da değil, aynı zamanda C ++ ve Java’da da daha fazla eski kod var).
  2. Birim testi ve TDD daha da popüler hale geldi.
  3. Mevcut çok daha fazla açık kaynak kodu var.
  4. OO gittikçe daha fazla eleştirmen oldu

(Bu teknolojiye özgü olduğunu düşündüğüm için, burada Web veya Uygulama geliştirme hakkında hiçbir şey listelemiyorum).

1. ve 2. konular için iyi kitaplar, özellikle 2008’den itibaren “Temiz Kod” ve 2004’ten “Eski Kod ile Etkili Çalışmak” var. Belki de aradığınız “yeni” kitaplardan bazıları?


5
C Programlama dili olan zamansız. Böyle bir damıtılmış kitap nadirdir. Bunun için tekrar okudum ... Bilmiyorum, sayımı kaybettim (13 yaşındayken ilk kez okudum) ve yine de minnettarım. Aksine, şimdi çok daha fazla takdir ediyorum.
Francesco

3
Listenize # 5 ekleyeceğim: paralel hesaplama. Tam olarak yeni bir fikir değil, ancak bugünlerde benzeri görülmemiş bir ölçekte yapılıyor ve bu da bazı yeni problemler ortaya çıkarıyor. Ancak tüm bunlar hala eski malzemelerle aynı temellere dayanıyor ve OP'nin hala bu temelleri gerçekten anlamadığını hissediyorum.
Mike Baranczak

2
@Mike: Paralel hesaplama son on yılda giderek daha fazla dikkat çekiyor, katılıyorum, cevabımı yazdığımda bunu kaçırdım.
Doktor Brown,

2
@Doc Brown 1885, 1955, 1985 ve 2015 tarihlerini birkaç gün içinde kendi bakış açınızdan ziyaret ettiğiniz için edebiyatın zamansızlığı hakkındaki görüşleriniz var mı?
Kalamane

13

"Kod tamamlandı" demiştir, "pragmatik programcı" ve "SICP", şirketimde başlayan ve daha yüksek bir seviyeye ulaşmak isteyen tüm yeni geliştiriciler için önerilen okuma listemde bulunuyor.

Bilgisayar Bilimi'ndeki temel bilim değişmedi, çünkü uzun bir atış tarafından eskimiş değiller.


10

Bütün bu kitapları okumamıştım, fakat kendi Code Complete ve Pragmatik Programcısı'na sahibim. Bu kitaplar eski olmaktan uzak. Biraz paslanmış birkaç paragrafa sahip olabilirler, ancak içeriğin çoğu bugün hala geçerli.

Bilgisayar Bilimleri ve Programlamadaki ilerleme, evrimsel bir süreçtir. Eskilerin üzerine yeni soyutlamalar getiriliyor, ancak bu yeni şeylerin eskimiş olması gerekmiyor.

Bir benzetme ... İster kalp travması konusunda uzmanlaşmış bir travma cerrahı, gerekse cerrah olarak uzmanlaşmak istersiniz, hala insan vücudunun nasıl çalıştığını, hücre kimyasını, organ sistemlerini, göğsün nasıl açılacağını ve nasıl çabuk açılacağını bilmeniz gerekir. Varsa kanamayı durdurun, vb ... Endoskopik teçhizatı ve daha az invaziv teknikleri icat ettikleri için, temelleri öğrenmek için uğraştığınız anlamına gelmez. Bu sadece daha fazla şey öğrenmek zorunda olduğunuz anlamına gelir.


evet Gray'in anatomisi (tv şovu değil gerçek kitap) 1918'de yazıldı ve tıp öğrencileri hala kullanıyor.
HLGEM

7

"Bulut" bir faktör değildir. "Bulut" aslında listelediğiniz kitapların çoğundan çok daha eski. Bu kitapların çoğu temel ilkelerle ilgili, çoğu zaman gerçekten değişmiyorlar. Çerçeveler ve kütüphaneler her zaman değişir, ancak kodunuzu nasıl yapılandırmanız gerektiği çok fazla değişmez. Benzer şekilde bir işaretçi hala bir işaretçidir, çünkü farklı şeyler yapmaya başlamaz. Listede dilediğiniz tek dile özgü kitap C ile ilgilidir, bu durumda eski kitap yeni bir şeyden çok daha faydalıdır, çünkü üzerinde çalışacağınız herhangi bir C kodunun geliştirildiği süreye daha yakın yazılmış olabilir.


6

Aldığın liste, hayır eski değiller. Bir kitap ancak konu yararlı olmadıkça yeterince değiştiğinde eskidir. Programlamanın doğası ve C dili yayınlanmasından bu yana çok az değişti


6

Gerçekleştirmeniz gereken şeylerden biri, esasen zamansız olan temel ilkelerin ve gelip gitme eğilimindeki uygulamaların mevcut olmasıdır.

Temelde, Bilgisayar Biliminin çok fazla zaman harcama eğiliminde olduğu ve dünya etrafında değişse bile geçerli olmaya devam eden tüm sıkıcı teoridir. Bu gibi şeyler aksine "Windows 3.11 altında Win32 nasıl kullanılır" olduğunu çok eski ve modası geçmiş.

Her şeyi perspektife koymak - geometri üzerindeki kanonik metin iki bin yıllıktır. Üniversiteye kadar öğretilen çoğu matematik en az 300 yaşında. CS kitaplarının daha eski olmamasının tek nedeni, alanın hala yeni olmasıdır.


Öklid'in 1. kitap önerisi, verilen tanımlardan, aksiyomlardan ve postülatlardan kanıtlanamaz. Günümüzde öğrenmek iyi bir seçim değildir ve millenia'dan sonra eski sayılabilir.
David Thornley

1
@DavidThornley Euclids Elements geometri üzerinde kanonik metin değilse, nedir?

6

Bazı kitaplar zamansızdır çünkü yazılım geliştirme pratiği için çok temel olan fikirleri tartışırlar, daima uygulanırlar.

Mesela, Efsanevi Adam Ayını , bu kitabı okurken, 1975'te yazıldığını unutmaya devam ettim. IBM System 360 ile ilgili zaman zaman atıfta bulunduğumda, beni her zaman mahkum etti, kitap. Her şey burada ve şimdi geçerlidir. Martin Fowler'ın Kurumsal Uygulama Mimarisi Kalıplarını şimdi 9 yaşında ama yine de zamansız ve bugün yaptığım işler için geçerli hâlâ saklıyorum.

Şu an en sevdiğim kitap Peter Coad'ın CML geliştiricisi ve eskort UML'si olmasına rağmen UML ile Renkli Modelleme (1999), çünkü teknikler ve kavramlar beni daha iyi bir kodlayıcı yapıyor.

İlk nesil geliştiriciden öğrenmeyi çok iyi yapardık çünkü şu an yürüdüğümüz yere ayak basıyorlar ve kazandıkları bilgelikler bugün yaptığımız / öğrendiklerimize atlamamıza yardımcı olabilir.


MMM - Sürekli hataların giderildiği takımla ilgili bölümü sevdim ama hataların sayısı sabit kaldı :)
JoelFan

5

Yazılımın temel ilkeleri son 20 yılda değişmedi. Bir yığın, bir ağaç ve bağlantılı bir liste, o zamankilerle aynı şekilde çalışır. "XOR" hala aynı anlama geliyor. Bir bayt hala 8 bit vardır.

Cidden "çoklu platform geliştirme" nin yeni bir fikir olduğunu mu düşünüyorsunuz? Sence neden C icat edildi?

"Bulut" bir pazarlama kelimesidir. Özel bir şey ifade ediyordu, ama aşırı kullanımı yüzünden mahvoldu. Günümüzde, bir ağ üzerinden uzak bir sunucuya konuşan herhangi bir şey olduğunda, pazarlamacılar "bulut" etiketini üzerine yapıştırırlar. Yani bunun hakkında konuşmanın gerçekten bir anlamı yok, çünkü bu anlamsız bir kelime.

61 yaşındaki profesörünüzü tanımıyorum, bu yüzden ona kefil olamam. Öte yandan, açıkça, düşündüğün kadar zeki değilsin. Profesörü dinle, bir şeyler öğrenebilirsin.


"Aptal olmadan yaşlanamazsın. Bir sürü genç bilge adam, orospu çocuğu olarak öldüler." - Richard Pryor


2
“Öte yandan, sen açıkça senin düşündüğün kadar zeki değilsin”. O kadar akıllı olduğumu düşünürsem , böyle bir soru sormazdım.
Olivier Pons

4

İşte bazı çok eski ve güncel kitaplar:

  • Bilgisayar Programlama Sanatı, vol. 1-3, D. Knuth. Bunlar 1968 ve 1981 arasında yayınlandı! Artık vakum tüpleri kullanmıyoruz millet! Bu kitaplardaki her şey topal. Python ve Ruby hakkındaki tartışma nerede?

  • Bilgisayarlar ve Etkileşim: 1979 MR Garey ve DS Johnson, NP-Tamamlanma Teorisi Kılavuzu. Süper topal! Muhtemelen bütün bu problemler çözüldü.

Son üç yılda Python'a odaklanarak bir kitap yazılmadıysa, okumaya değmez.


Adil olmak gerekirse, en azından TAoCP'nin sözde kodu için bir birleştirici kullanmasının, daha modern dillere daha yakın olan sözde kodu kullanan kitapların, daha gömülü olarak yazmayan% 90 + için daha faydalı olduğu anlamına gelmesidir. sistemleri.
Peter Taylor

-1: Her iki haftada bir veya Knuth'un inanılmaz bir şekilde tarif ettiği bir şeyi ya da diğerini ele almak için bir algoritma isteyen birini görüyorum. Sadece eğlence için: 1981'den daha yeni olan bir sıralama algoritması adı verin . Paralel bir sıralamaya cevap vermek ister misiniz? Knuth, verileri paralel olarak sıralama hakkında sayfalar içerir . Python kitaplarında haklı olabilirsin ama "Haftanın Lezzeti" kitapları ile mühendislik zanaat kitapları arasında büyük bir fark var.
sarnold

5
Görünüşe göre bazı alaycı dedektörler bozuldu ...
DaveE

1
<Sarcasm> "Yorum" </Sarcasm>
NWS

1
Bence bu cevap , 2011'de yayımlanan Bilgisayar Programcılığı Sanatı 4A ve 2020 için planlanan 5. Ciltten bahsetse bile daha iyi olacağına dikkat çekiyor!
Mark Booth

3

Bu kitaplar eski değil, bu kitaplar klasik.

Kaplansky'den alıntı yapmak için: " her gün biraz zaman çalışmakta olduğunuz problemden ayrı olan yeni bir şeyler öğrenerek zaman geçirin (ayrıcalığın geçici olabileceğini unutmayın) ve ustaları okuyun . "


3

Ne demek istediğinizi biliyorum, kod okunabilirliğini ve kullanımını değiştiren ilerlemeler (LINQ akla geldiğinde), ancak bu kitapların eski olması nedeniyle okuyucu için harika dersler sunmadıkları anlamına gelmez.

Kullandıkları programlama dilleri modası geçmiş olsa da, programlama dillerinin arkasındaki teori bugün hala doğrular. Bu kitapların çoğu, temelini çok iyi örtmek için bir noktaya işaret ediyor ve temeller o kadar da değişmedi.


2
Kullandıkları programlama dilleri çoğunlukla 'C' dır;
Martin Beckett

3
SICP'yi okumalısınız, LINQ'un nereden geldiğine dair gözlerinizi açabilir :)
Joris Timmermans

1

Bilgisayar bilimi endüstrisi hala çok genç. 30 yıl önce yazılmış kitaplar, tam bir anlayış için hala değerli ve gerekli olduğunu düşünüyorum. Soyut kavramlar bazen sindirmek için biraz zaman alabilir.


1

Bazı küçük parçalar tüm bu kitaplarda kullanılmamaktadır, ancak% 99'u hala mükemmeldir.

Algoritmalar kitapları yavaş yaşlanır. Algoritmalar matematiktir ve matematik hızla değişmez. Elbette, bazı durumlarda üstün olan yeni algoritmalar konusunda hala araştırmalar var (örneğin, Furer'ın algoritması (2007) Schonhage-Strassen , 40000'den fazla rakamı bir araya getirmek için), fakat temelleri öğrenmeniz için gereken giriş (böl ve ele geçir) / Dinamik Programlama / Doğrusal programlama / vb) böylece algoritmalar hakkında mantıklı düşünmeyi öğrenebilirsiniz.

K & R'den standart C'yi öğrenmek hala en iyi kaynaktır; ancak ortamınızı nasıl kuracağınıza dair kendi bölümlerine güvenip güvenmeyeceğimden emin değilim.

SICP harika bir kitaptır ve modern CS'nin temellerini harika bir dil olan lisp öğreterek öğretir. Bununla birlikte, lisp tartışmasız bugünlerde en faydalı dil değildir; diğerleri lisp'in gizli silahları olduğunu ve java ya da python gibi dilleri öğrenmenin ilk önce sıralama veya bağlantılı listeler ya da diziler ya da büyük O notalarını nasıl uygulayacaklarını öğrenmek zorunda kalmayan ve çok verimsiz şeyler yaptıklarını öğrenen çok kötü programcılar yaptığını iddia edeceklerdir.

Code Complete veya Pragmatic Programmer’ın bir kısmı daha az anlamlıdır, özellikle de C’de bir şeyi nasıl yapacağınıza odaklandığınız veya en iyisini kullanarak önerilen çözümler sunduğundan, daha yeni dillerde programlama yapıyorsanız (örneğin, python / ruby ​​/ C ++ 11) o zaman mevcut olan araçlar (git / bzr / hg / svn gibi modern bir araç yerine sürüm kontrolü için CVS / RCS gibi). Ancak, sürüm kontrolünün nasıl bir zorunluluk olduğunu ve kesintisiz ve kendi kendini belgelemeli olması gerektiğini ve neden mutlak bir zorunluluk olduğunun mantığını gözden geçirmeyi düşünmek hala iyidir.

Veya PP'nin temel unix editörü + unix araçları için IDE'lere yönelik önerileri - find / awk / locate / grep / sed komutunu nasıl kullanacağınızı öğrenmemelisiniz, ancak iyi bir IDE çoğu zaman zaman kazandırabilir. Örneğin, emacs sözdizimi vurgulama veya basit kod tamamlama yapabilir; Ancak, iyi bir IDE yazdığınızda veya kodları analiz ederken ve kullanılmayan değişkenleri işaretlerken, kod bölümlerini daraltmayı kolaylaştırarak fonksiyon bildirimlerini içeren araç ipuçlarını vereceğini söyleyin.


1

Modern bilgisayar kullanımı ile bu kitap yazıldığında güncel olanlar arasında bir fark yok mu? Öğrenmemiz gerekenleri değiştirdiğini düşünüyor musunuz? Son 20 yılın gelişmelerini dikkate almalı mıyız?

Evet, evet ve evet.

Bu, kitapları eskimiş kılmaz. "Modern hesaplama" inanılmaz derecede geniş bir terimdir. Ancak, C programlamayı içerir , bu nedenle "C Programlama Dili" hala ilgili bir kitaptır. O içeren algoritmaları, bu yüzden "Algoritmalarına Giriş" hala alakalı bir kitap. Öyle ve böyle.

Çok platformlu geliştirme çok platformlu geliştirme (telefon rehberine bakınız) konusundaki mevcut vurgu bugün öğrendiklerimizi değiştirmeli mi?

App Store'daki çoğu uygulama (örnek olarak en popüler mobil platformu kullanmak için) 80'lerin başlarından itibaren C'nin yerini alan bir dil olan Objective C'de yazılmıştır.

Sence "bulut" bir tuhaflık mı yoksa gelecek mi?

Bu bizim hediyemiz.

Öğrenciler üniversiteden çıktığında, gerçek geliştiriciler olmaları ve hemen çalışabilmeleri gerekiyordu.

Ama bu ne anlama geliyor?

Sizi belirli bir işe hazırlamak için okul için çok fazla dil, API, çerçeve, platform, araç, işbirliği stratejisi vb. Vardır . Okul, makinenin nasıl çalıştığı, algoritmalar, veri yapıları, kod oluşturma, ayrıştırma stratejileri, bazı araçlar vb. Gibi temel bir çalışma modeli vererek temeli kurabilir.

Bir "gerçek geliştirici" her şeyi bilen biri değildir, bu tür bir iş için yeterli kapasiteye sahip, teori ve pratikte bir temeli olan ve nasıl öğrenileceğini bilen birisidir , çünkü eğitiminiz asla bitmez.


1
'Nasıl öğrenilir' yorumu için + 1 - meslek eğitimi değil, kolej bunun içindir.
DaveE

1

Tamam, bu yüzden çok daha teorik bir cevap sunacağım. Sizlere açık bir şekilde cevap verenlerin hepsine katılıyorum, bence bu kitaplar programcıların yaptıklarının temeli ve bu yeni çerçevelerin hepsi aynı eski sütunlar çizgisine dayanıyor.

İşte iki kuruşum - benim değil, ondan önce St. Aquinas ve Aristoteles'ten öğrendim.

An abstraction is useless to someone who doesn't understand the particulars.

Bir bilgisayarın mekaniği von-neumann'dan beri değişmedi. Benzer şekilde, harika bir programcı olmak için öğrenmeniz gereken detaylar von-neumann modeli eski olana kadar aynı olacaktır. Meclis, bilgisayarların dilidir ... öğren, mazeret yok.

C, hem Windows hem de Unix'in ana dilidir. Öğren ya da yeni bir ticaret bul. Eğer doğrudan JAVA ya da C # 'ya giden adamlardan birisiyseniz, iyi bir programcı olabilirsiniz, fakat eğer C - dönemini öğrenirseniz çok daha iyi bir programcı olacaksınız.

Algoritmalar ve Veri Yapıları bilgisayar programlarının temelidir, öğrenir.

Geriye kalan her şey bu çok temel disiplinlerin bir soyutlamasıdır. Soyutlamalar doğru kullanıldığında harikadır - cidden, tüm projelerimin% 75'i için C # kullanıyorum. Ancak, nasıl çalıştıklarını ve onlarsız nasıl çalışacaklarını anlamak için zaman ayırmazsanız sizi aptallaştırırlar. Çok daha iyi yaklaşımlar olduğunda ve kaçınılması muhtemel hataların olması durumunda, yazılımın meşhur kare delikten sığması için sonsuz zaman harcayacaksınız. Yazılım Geliştirme, ustalaşması gereken bir zanaattır ve günün sonunda araçlar nadiren değişir. Bu yüzden bu kitaplar çok önemlidir.

Tüm bu JAVA ve C # programcıları, tsk, çoğuları Star Trek'in bir bölümünü bile görmemiş olmalarına bahse girerim!


1

Bir mentordan bir söz duydum:

“İyi tavsiye, neden artık iyi bir öneri olmadığını anlayabilmeniz için bir neden ile geliyor .” Bu nedenle, kitap terimlerinde, Y üzerinden X'in neden yapıldığını açıklayan bir kitap, bu tavsiyenin artık geçerli olmadığı durumlarda size haber verecektir. "Her zaman bunu yap, sadece yap" kitabını X dilinde çarpışma kursu gibi bir kitap o kadar iyi değil.

"24 saat içinde unix öğrenmek" adlı bir kitap gördüm, kitap yaklaşık 8 cm kalınlığındaydı, birçok insanın 24 saat içinde her sayfayı okuyabileceğinden şüpheliyim :)

Bugün moda olanın yarın atıldığını hatırlayın. Aşağıdakilerin tümü bir zamanlar ana akım sayıldı (dün en moda), ancak şimdi değil:

  • Goto
  • Tek giriş tek çıkış
  • Macarca notasyonu
  • Şelale yaklaşımı

Ve bir zamanlar tamamen anatema olan fakat şimdi kabul edilen birkaç şey var:

  • Problem çözme aracı olarak özyineleme (BASIC günlerinin başında radikal)
  • Çalışma zamanında belleği malloc / new ile ayırma
  • C ++ STL Kullanımı
  • Gerçek zamanlı sistemler için çöp toplanan diller

Nedenini ve eski varsayımların ne zaman yeni bir gerçeklikle değiştirildiğini bilirsiniz.

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.