“Bilgisayar Programlarının Yapısı ve Yorumlanması” kitabı Java programcıları için iyi bir okuma mı? [kapalı]


14

Bu öznel ve kapalı olması muhtemel olabilir ama yine de Bilgisayar programlarının Yapısı ve Yorumunu okumak gerçekten yararlı olup olmadığını bilmek istedim.

Bilgisayar Programlarının Yapısı ve Yorumlanması

Kitap Java kullanmıyor. Java öğrenmek istediğimden değil. Daha iyi bir programcı olmanın yararlı olup olmayacağını ve kitaptan kazanabileceğim şeylerin neler olduğunu veya bu kitabın diğer alternatiflerinin Java programcılarına daha uygun olup olmadığını bilmek isterim.


32
Yeni başlayanlar için, kendinizi bir "java programcısı" olarak konumlandırmamaya çalışın. Veya "ne olursa olsun dil programcısı" olarak. Çıkmaz sokak. Bunun yerine sadece bir programcı olun. Ve sonra, SICP son derece faydalı olacak. Muhtemelen, orada en yararlı okuma.
SK-logic

3
Çok zor, bu yüzden okudunuz.
Jonathan Henson

4
Birinci bölümde başlayın, sayfa sayfa gidin, tüm örnekleri çalışın, her sayfayı ve her örneği anlayana kadar ilerlemeyin. Yanıt anahtarı çevrimiçi.
Jonathan Henson

2
@JonathanHenson ve sonuna gelince, dur
jk.

3
Evet, Şema öğrenmeniz gerekiyor. Ancak, kitabın Scheme kullanmasının nedenlerinden biri, daha önce hiç programlamadıysanız yaklaşık bir gün içinde veya varsa 10 dakika içinde Scheme'nin tamamını öğrenebilmenizdir. Sonuçta, SICP yeni başlayanlar için bir kitaptır, kesinlikle hiçbir programlama bilgisi varsaymaz.
Jörg W Mittag

Yanıtlar:


23

Bu kitabın size yardım edip etmeyeceğini bilmiyorum, ancak yaklaşık 20 yıl önce kendimi bu kitapta çalışırken, programlama becerilerimi (herhangi bir programlama dilinden bağımsız olarak) kesinlikle geliştirdi. Sanırım özellikle bir Java programcısı yalnızca Java'ya yapışarak elde edemeyeceği bazı yeni bilgiler edinecek.

Joel Spolsky 2005, Java ve SICP hakkında ilginizi çekebilecek güzel bir makale yazdı:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


+1 Bir kitap önerisi sorusuna ne kadar yaklaştığına en iyi cevap.
Joshua Drake

13

Bilgisayar Programlarının Yapısı ve Yorumunun okunması harika bir kitap olduğunu düşünüyorum . Ancak, bununla ilgili birkaç sorun var.

Deneyimlerime göre en büyük sorun, kitap kesinlikle hiçbir programlama bilgisi gerektirmez ve yeni başlayanları tamamlamaya yönelik olsa da , MIT'de okuyan yeni başlayanları tamamlamaya yönelik olmasıdır . Herhangi bir programlama bilgisine üstlenmez ise Ve böylece, bu mu biraz varsayalım alanı elektrik mühendisliği, fizik ve matematik alanlarında örneğin bilgi,. Not: Bunların öğretilen kavramlarla hiçbir ilgisi yoktur , sadece alıştırmaları ve örnekleri anlamaları gerekir .

Benden daha fazla insan bunu akıllıca başlıklı bir makalede , Bilgisayar Bilimi Müfredatının Yapısı ve Yorumu konusunda çok daha iyi açıkladı . Neyse ki, onlar sadece sızlanmak değil , kendi kitaplarını yazdılar : Programları Nasıl Tasarlayacaklar ? SICP okumayı düşünüyorsanız, önce HtDP'yi okumak isteyebilirsiniz: SICP ile aynı zemini kapsar, ancak yalnızca ortalama lise düzeyinde alan bilgisi varsayar. (Aslında, lise çocuklarına öğretilmek için yazılmıştır.)

HtDP'yi bitirdikten sonra, geri dönüp SICP'yi okuyabilirsiniz, çünkü artık eksik alan adı bilgisi biraz daha zararlı olmayacaktır çünkü konsepti daha önce görmüştünüz.

Not: HtDP'nin ikinci sürümü için , ilk sürüm yerine okumak isteyebileceğiniz bir taslak vardır . Zorunlu programlama hakkındaki materyal kaldırıldı ve henüz yazılmamış ikinci cilt Nasıl Yapılır Bileşenleri Tasarımında ele alınacak , ancak bunları ilk baskıdan veya SICP'den veya her ikisinden de alabilirsiniz.


SICP'ye bir alternatif önerebilir miyim: Bilgisayar Programlamanın Kavramları, Teknikleri ve Modelleri
Eden

@Eden: CTM çok iyi, katılıyorum. Yine de SICP, HtDP ve Somut Soyutlamalar gibi programlama öğretmek için bir kitap olarak düşünmüyorum. Ama kesinlikle "sizi daha iyi bir programcı yapan kitaplar" listesinde!
Jörg W Mittag

5

Anladığım kadarıyla, SICP'den daha çok , tekrarlayan programlama ve yeni bir programcıyı kavramak biraz zor olan CS'ye güçlü bir giriş de dahil olmak üzere fonksiyonel programlama alanlarına daha fazla odaklanıyor . Başka bir nokta, MIT için hazırlanır ve öğretilir ve bu kitabı yararlı bulmak için mühendislik alanında, matematikte, fizikte bazı iyi temellere de ihtiyaç vardır.

Her birinin yazılım mühendisliğinin farklı yönlerine odaklandığı iyi bir kitap seti öneririm:

  • Kod Tamamlama 2 - yazılım mühendisliği süreçlerine odaklanır.
  • Temiz Kod - küçük kodlamaya odaklanır. Sınıflar ve fonksiyonlar nasıl yazılır.
  • Pragmatik Programcı - yazılım üreten bir ekip içinde çalışmaya odaklanır.

Yukarıda ve daha sonra bahsedilen kitapların daha ayrıntılı açıklaması aşağıdaki referanslardan bulunabilir:

  1. 10 Basit Kitaplı Programcı Nasıl Olunur?
  2. Programcılara başlamak için en iyi kitaplar

Lütfen, ideal olmayan listeye eklemekten çekinmeyin :)

Düzenleme: Yukarıda adı geçen kitapları seçerken ve bunların nasıl okunacağının önceliğini belirlerken, gerçekten birincil olarak ne yapmaya veya öğrenmeye çalıştığınıza dair amaç gelir .


7
(Zımni) bağlamdaki önerilere katılıyorum - ancak SICP hakkında sevmediğiniz (veya sevmediğiniz) gerçekten bahsettiğinizde cevabınız daha da iyi olurdu.
Joris Timmermans

4
Elma ve portakal karşılaştırması - bahsettiğiniz tüm kitaplar yazılım mühendisliği hakkında mükemmel kitaplar. SICP daha çok bilgisayar bilimi ile ilgilidir - bilgisayar programlamanın kavramsal olarak ne olduğu.
Nate

1
Bu cevap, önerilen bir okuma listesi sorusuna bir cevap gibi geliyor. Hangi yığın Exchange siteleri amacı ile iyi uymuyor inanmıyorum: meta.stackexchange.com/questions/113678/…
Joshua Drake

@Doğa, karşılaştırmak için elma ve portakal değil, hepsi CS ile ilgili. Yine de, kitapların her biri bazı ortak konuları paylaşıyor.
Yusubov

2
@MadKeithV, yorumlarınıza katılıyorum. İlk satırda SICP üzerine düşüncelerimi koydum.
Yusubov

4

Burada bir uzuv çıkacağım ve diyorum - muhtemelen çoğu insan için iyi bir okuma değil - hangi dilde olursa olsun.

Knuth gibi okumak için iyi bir kitap. Ancak, bir sıcak çekim MIT ugrad olduğunuzu varsayarsak, düzgün bir şekilde okumak için bir yılın en iyi kısmını alacaktır ve öğretim görevlileri ve TA'lar yardımcı oluyor.

O zamanlar okuyabileceğiniz yazılım mühendisliği ile ilgili daha değerli kitaplar var mı? Zamanda öğrenebileceğiniz başka diller var mı?

düzenlemek Sadece biraz genişletmek için:
Yazılım mühendisliği mühendislik, bu tamamen optimizasyon ile ilgili. Göreviniz belirli bir süre + maliyet bütçesi için bilgilerinizi en üst düzeye çıkarmaktır.
SICP işlevsel bir dilde programlamaya üst düzey bir giriş niteliğindedir. İşlevsel bir dil kullanmasının nedeni, işlevsel dillerde çok sayıda matematiksel programlama kavramını yordamsal olanlara göre tanımlamanın daha kolay ve biçimsel mantığa göre okunması çok daha kolay olmasıdır.

Ayrıca belli miktarda postür vardır. "SICP'yi okumadığınız sürece gerçekten bir programcı değilsiniz" veya Knuth veya Lisp, C veya x86 derleyicisinde programlayabilirsiniz. Bunu reddetmek normalde kolaydır; yani. Cantor'un set teorisi ve Maxwell denklemleri üzerindeki çalışmasını bilmedikçe ve yarı iletkenlerdeki delik hareketliliğine aşina değilseniz, gerçek bir programcı olamazsınız.


İstek listemde Code Complete 2, Clean code, Pragamatic programcılar, Refactoring vb. Gibi başka kitaplar da vardı. Ancak bunlar SICP'den farklı olarak daha çok java veya en azından OOP merkezli idi.
ashishjmeshram

5
Bu yüzden önce onları okurdum
Martin Beckett

7
Bu cevabı küçümsemek için tartıştım, ancak sadece bir yorumun daha iyi olduğuna karar verdim: SICP'nin çoğu insan için, özellikle erken bir zamanda iyi bir okuma olmadığını kabul ediyorum, ancak harika bir geliştiricinin bu kitabı ele alabilmesi ve öğrenmesi gerektiğine inanıyorum. ondan çok şey. Büyük geliştiriciler "çoğu insan" değildir. İyi bir filtre kitabı.
Joris Timmermans

4
Kabul etmiyorum (bir noktaya kadar) - kemerinin altında SICP olan çok yönlü bir geliştirici her zaman Unix ortamı vb. Hakkında bilgi edinebilir. SICP'den başka platform deneyimi olmayan bir geliştirici kiralamayı ve onları yeniden eğitmeyi tercih ederim. SICP alamadım.
Joris Timmermans

1
@MadKeithV - Evet ve aynı nedenden ötürü kodlama deneyimi olmayan Matematik / fizik Doktoraları kiralıyorum. Ancak tam zamanlı olarak bir programcı ve özellikle de yeni başlayan biri olarak çalışıyorsanız, Knuth veya SICP'den veya Turing'in kağıtlarını okumaktan belki de daha iyi (değer / zaman) daha basit kitaplar vardır.
Martin Beckett

1

Hayatınızın geri kalanı için bir "JAVA programcısı" olmayı planlıyor musunuz? Sonra muhtemelen okunacak daha iyi kitaplar var. Genel olarak iyi bir programcı olmak istiyorsanız, o zaman mükemmel bir okuma. İşte nedeni. Her iyi programcının araç kutusunda ihtiyaç duyduğu belirli araçlar vardır. Birincisi, veri yapıları ve algoritmalar hakkında kapsamlı bir bilgidir (bana inanmıyorsanız, Microsoft, Google, Amazon vb.'de röportaj yapın ...), eşlik eden algoritmalar karmaşıklık analizi, özyineleme ve işaretçileri iyi anlamaktır. canını yakmak. Algoritma analizi, özyinelemeli süreçler ve genel olarak fonksiyonel paradigma söz konusu olduğunda, SICP'den daha iyi veya daha zor bir kitap düşünemiyorum.

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.