LINUX.ORG.RU

Давайте уже раз и навсегда решим за SICP

 , , , ,


1

1

Учитывая легендарный статус этой книги, меня немного удивила её оценка на амазоне (3,5 балла). Давайте уже раз и навсегда решим за SICP:

1) не читал - вон из профессии;

2) обычная книжка для студентоты, содержащая прописные истины, которые к тому же доходят через практику. А что не доходит, то уже давно нинужно.



Последнее исправление: ymn (всего исправлений: 1)
Ответ на: комментарий от anonymous

гидродинамика

уравнение Навье-Стокса

Много лет занимался CFD, ни разу за это время уравнения Навье-Стокса не понадобились.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

которая потом в профессию и не пойдет, а пойдет гранты пилить, типа «наукой» заниматься

А твоё какое собачье дело кто куда пойдёт и какое отношение это имеет к теме дискуссии и тому что я сказал?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Такое, что SICP-задротам в профессии не место. Грантопилы должны держаться от профессии подальше.

anonymous
()
Ответ на: комментарий от anonymous

Такое, что SICP-задротам в профессии не место

Абаснуй.

no-such-file ★★★★★
()

Сам я про ЫШСЗ ничего не слышал, зато самый крутой тут программист, это факт

b-stern
()
Ответ на: комментарий от b-stern

Да, не спорю, можно жить без рекурсии, мемоизации и ленивых вычислений... ну, если гостевые странички на пхп лепишь.

Freyr69 ★★★
()

Это учебник программирования для первокурсников же. Я считаю, эту роль он выполняет вполне приемлемо. Как и всякий учебник, он наполнен систематизированными прописными истинами; и подразумевается, что для целевой аудитории эти истины ещё не являются прописными. Восторженные отзывы, я думаю, слышны больше со стороны C++98/Java-мира и компании, где замыкания, динамическая типизация и eval — это что-то совершенно новое и ранее невообразимое.

ilammy ★★★
()
Ответ на: комментарий от anonymous

За всю мою жизнь мне никакой рекурсии и никаких ленивых вычислений не понадобилось. Зато я неоднократно наблюдал идиотов, ловивших stack overflow из-за любви к ненужной рекурсии.

без рекурсии у тебя не получится иммутабельности, а значит у тебя будет всего один процесс, как в 80х годах прошлого века.

emulek
()
Ответ на: комментарий от emulek

А ничего, что у меня распределенные системы на MPI на тысячи узлов? И никакой рекурсии, ее в моем Фортране и нет вовсе. И в моем OpenCL ее тоже нет.

anonymous
()

классика как и K&R, содержит ценную информацию.

timuaz_one
()
Ответ на: комментарий от anonymous

Ну, если и связанные, то примерно как сантехника и гидродинамика. Что-то я не встречал сантехников, которым было бы хоть раз в жизни нужно уравнение Навье-Стокса.

однако что такое «сообщающиеся сосуды» мои соседи, жители квартиры на первом этаже в моем 9 этажном доме, познали вместе с сантехниками смонтировавшими систему канализации :) теперь у них гальюн как на подводной лодке :)))

то что в sicp это не «навьестокс», а именно «сообщающиеся сосуды»

psv1967 ★★★★★
()
Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Можно погладить твоё большое волосатое ЧСВ? :)

Любитель гладить чужие большие и волосатые?

anonymous
()

2, но прочитать все равно полезно.

cattail
()
Ответ на: комментарий от anonymous

Грантопилы должны держаться от профессии подальше.

Эльф 80го уровьня :) Вся профессия основана на получении бабок, а не каких то мифических ортогональным деньгам «профессиональных качествах».

Запомни кто больше бабок накосил (причем безотносительно успеха работы по факту, главный, единственный и достаточный «критерий качества» «что бы клиенты не кончалсиь», и не важно чем это достигнуто) тот и лучший «профессионал"ТМ.

psv1967 ★★★★★
()
Ответ на: комментарий от Freyr69

Ага, за многие годы практики, а с sicp - за семестр. Лучшая книга бля

Mahmood
()
Ответ на: комментарий от anonymous

concepts that are not that useful in the real world (recursion, lazy evaluation).
the rest of the world has moved onto better languages

Пыхер Веб-девелопер выразил свое важное мнение, заместо Авроры. Сравнение качества выпускников МИТа наглядно демонстрирует, что в преподавании там шарят, так что книга вряд ли так уж плоха.

Mahmood
()
Ответ на: комментарий от anonymous

За всю мою жизнь мне никакой рекурсии и никаких ленивых вычислений не понадобилось.

То есть, ты никогда не имел дела с деревьями, графами, рекурсивными структурами данных и алгоритмами? Твое мнение очень важно для нас, пожалуйста, продолжай его высказывать.

anonymous
()
Ответ на: комментарий от anonymous

эээ... приведенные тобой книги вообще не о том. Как их можно сравнивать с SICP?

Waterlaz ★★★★★
()
Ответ на: комментарий от anonymous

Обход дерева в цикле и со самодельным стеком на куче реализовать не можешь? Слабак! Вон из профессии!

anonymous
()
Ответ на: комментарий от grimwaken

Работают, посему курс перевели на питон, по поводу чего один из авторов написал гневный пост, обличающий homepage-клепателей, мол, зачем идете в один из лучших технических вузов, если желаете странички на питоне клепать.

Freyr69 ★★★
()
Ответ на: комментарий от Waterlaz

Затем, что упоротые любители убогой рекурсии потом ловят stack overflow и у них от этого пердаки рвутся. А у четких пацанов хипа до сраки и им плевать на проблемы убогой школоты.

anonymous
()
Ответ на: комментарий от MyTrooName

сантехники вообще редко в дерьме копаются. для этого существуют разного рода промывки и илососы. но в общем и целом аналогия верная - рядовой сантехник это практик.

saibogo ★★★★
()
Ответ на: комментарий от anonymous

Ты ее и на какашкеле словишь.

Потому он и какашкель? Впрочем там вроде это настраивается, хз.

#lang racket

(define (rec a)
  (if (> a 0)
      (* -1 (rec (- a 1)))
      1))

(define (print-mb t mem)
  (printf "Memory ~a: ~a MB~n" t (quotient mem (expt 2 20))))

(define (test a) 
  (collect-garbage)
  (let ((before (current-memory-use)))
    (print-mb 'before before)
    (printf "~a -> ~a~n" a (time (rec a))) 
    (let ((after (current-memory-use)))
      (print-mb 'after after)
      (print-mb 'used (- after before)))))
Язык: racket [выбранный]; memory limit: 512 MB.
> (test 1000000)
Memory before: 159 MB
cpu time: 47 real time: 46 gc time: 0
1000000 -> 1
Memory after: 177 MB
Memory used: 17 MB
> (test 10000001)
Memory before: 154 MB
cpu time: 1703 real time: 1719 gc time: 1156
10000001 -> -1
Memory after: 363 MB
Memory used: 209 MB
korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Ты не на говне всяком проверяй, а честно обойди большое дерево по глубине. Твой же код даже тупая ракетка к хвосту преобразовать сможет.

anonymous
()
Ответ на: комментарий от anonymous

А кто сможет преобразовать к TR это?

(define (rec a)
  (if (> a 0)
      (* -1 (rec (- a 1)))
      1))

anonymous
()
Ответ на: комментарий от tailgunner

Ммм... хвостовая рекурсия?

Разве? Ну т.е. внутри-то получается да, с передачей продолжений, которые «накапливаются» в куче, но разговор-то про исходный код, в нем обычная рекурсия.

Ты не на говне всяком проверяй, а честно обойди большое дерево по глубине.

А разница? Дерево само по себе будет больше памяти занимать, поэтому глубину меньше придется делать, чем в примере.

Твой же код даже тупая ракетка к хвосту преобразовать сможет.

Не преобразовала.

korvin_ ★★★★★
()
Последнее исправление: korvin_ (всего исправлений: 1)
Ответ на: комментарий от korvin_

Ммм... хвостовая рекурсия?

Разве? Ну т.е. внутри-то получается да

Тогда читинг же.

P.S. против рекурсии ничего не имею.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

и со самодельным стеком на куче реализовать не можешь

и ещё намотай ячейки памяти для этого алгоритма на ферритовых колечках, точно «слабаком» не будешь :)

psv1967 ★★★★★
()
Ответ на: комментарий от tailgunner

Тогда читинг же.

Так я о том и говорю, что это от языка зависит. Понятно, что в какой-нибудь Сишечке стоит избегать рекурсии, только что-то я сомневаюсь, что в каком-нибудь УЗ, на курсе по Си не рассказывают про стек и все такое.

Дерево само по себе будет больше памяти занимать, поэтому глубину меньше придется делать, чем в примере.

Собственно, например:

(struct tree (value left right))

(define (build-tree left right depth)
  (if (> depth 0)
      (tree left
            (build-tree left right (- depth 1))
            (build-tree right left (- depth 1)))
      left))

(define (fold-tree x func)
  (match x
    ((tree value left right)
     (func value
           (fold-tree left  func)
           (fold-tree right func)))
    (else
     x)))

(define (walk-tree x proc)
  (match x
    ((tree value left right)
     (proc value)
     (walk-tree left  proc) ; нехвостовой вызов
     (walk-tree right proc))
    (else
     (proc x))))

(define ((fold-count tree))
  (fold-tree tree +))

(define ((walk-count tree))
  (define nodes-count 0)
  (define (count! _)
    (set! nodes-count (+ nodes-count 1)))
  (walk-tree tree count!)
  nodes-count)

(define (print-mb t mem)
  (printf "memory ~a: ~a MB~n" t (quotient mem (expt 2 20))))

(define (do-test title proc)
  (printf "~n~a:~n" title)
  (collect-garbage)
  (let* ((before (current-memory-use))
         (result (time (proc)))
         (after  (current-memory-use)))
    (print-mb 'before before)
    (print-mb 'after  after)
    (print-mb 'used (- after before))
    (printf "result: ~a~n" result)))

(define (test depth)
  (collect-garbage)
  (let* ((before (current-memory-use))
         (tree   (build-tree 1 1 depth))
         (after  (current-memory-use)))
    (print-mb 'for\ tree (- after before))
    (do-test 'Fold (fold-count tree))
    (do-test 'Walk (walk-count tree))))
Язык: racket [выбранный]; memory limit: 512 MB.

> (test 20)
memory for tree: 24 MB

Fold:
cpu time: 78 real time: 78 gc time: 0
memory before: 206 MB
memory after: 207 MB
memory used: 0 MB
result: 2097151

Walk:
cpu time: 47 real time: 47 gc time: 0
memory before: 206 MB
memory after: 207 MB
memory used: 0 MB
result: 2097151

> (test 23)
memory for tree: 192 MB

Fold:
cpu time: 703 real time: 703 gc time: 0
memory before: 375 MB
memory after: 375 MB
memory used: 0 MB
result: 16777215

Walk:
cpu time: 375 real time: 375 gc time: 0
memory before: 375 MB
memory after: 375 MB
memory used: 0 MB
result: 16777215

> (test 24)
memory for tree: 384 MB

Fold:
cpu time: 1250 real time: 1250 gc time: 0
memory before: 567 MB
memory after: 568 MB
memory used: 1 MB
result: 33554431

Walk:
cpu time: 734 real time: 734 gc time: 0
memory before: 567 MB
memory after: 567 MB
memory used: 0 MB
result: 33554431
korvin_ ★★★★★
()
Ответ на: комментарий от tailgunner

Чего ты мычишь? Что хвостовая рекурсия?

anonymous
()

Нормальная книжка о программировании для не программистов(а cs и иже с ним), со всеми вытекающими.

anonymous
()
Ответ на: комментарий от anonymous

для не программистов

Почему? И для программистов не посоветуешь?

grimwaken
() автор топика

А вот я бы не сказал бы, sicp в какой то степени может .быть понятен гуманитарию. Пока вроде норм

P.s. Нужно, чтобы выучить R.

bookman900 ★★★★★
()

Какая профессия имеется в виду? Книга по специальности CS, а не SI.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.