Это копия, сохраненная 14 сентября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
На русском: http://newstar.rinet.ru/~goga/sicp/sicp.pdf
ориджинал: http://web.mit.edu/alexmv/6.037/sicp.pdf
Где я могу писать свой код, для выполнения заданий?
Онлайн редактор, с поддержкой Scheme: https://repl.it/languages/scheme
IDE для racket подобных языков(но есть и поддержка Scheme, но её нужно включить) - https://racket-lang.org/
Где посмотреть ответы на задачи?
http://community.schemewiki.org/?SICP-Solutions
https://www.reddit.com/r/compsci/
https://www.reddit.com/r/learnprogramming
Полезные ресурсы:
https://teachyourselfcs.com/
https://github.com/ossu/computer-science
Книжки по ФП
https://www.dropbox.com/sh/ugtfwgfilgr0ebu/AABVDeYpTvcqcg22XZnYT8Eca?dl=0
>ориджинал: http://web.mit.edu/alexmv/6.037/sicp.pdf
Эта ссылка - говно. Вот правильная ссылка с хорошим оформлением и няшными шрифтами:
https://github.com/sarabander/sicp-pdf/raw/master/sicp.pdf
Заодно еще пара ссылок (на онлайн-версию, видосы и сикп на кложе):
clj: http://www.sicpdistilled.com/
1986: https://www.youtube.com/playlist?list=PL8FE88AA54363BC46
2004: https://www.youtube.com/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0kXIDX9rR5FF
harvey: https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter
html: http://sarabander.github.io/sicp/
Благодарю.
Недоделано.
>https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter
Косноязычный мужеложец.
Иди в /b бампай.
>лучшей книги всех времен и народов
Меня The Little Books в свое время гораздо больше впечатлили. Рекомендую прочесть их перед SICP'ом.
>Меня The Little Books в свое время гораздо больше впечатлили
Матёрый Senior Architect in Google в треде?
Спасибо, посмотрю.
ананасы, что читать после SICP? ахо-ульман "структуры данных", "искусство программирования" кнута?
https://teachyourselfcs.com/#algorithms
у седжвика есть курс на coursera
кормен - бест справочник
Ее нужно читать до, после будет скучно.
> 10
10
Самое первое упражнение. Это блядь по какому правилу любое число остается самим собой?
Ниже приведена последовательность выражений. Какой резул
ьтат напечатает интерпретатор в от-
вет на каждое из них? Предполагается, что выражения вводятс
я в том же порядке, в каком они
написаны.
10
(+ 5 3 4)
(- 9 1)
(/ 6 2)
Вот 4 упражнения, которые нужно решить. Первое из них просто 10, ответ тоже 10.
>>191107
По моему вообще не понятно, каким он должен быть, Т.к. такой хуйни в книге не было. Остальные примеры понятны и логичны, а вот то, что цифра остается цифрой, что-то я в книге не видел.
Во-первых, не цифра, а число. Во-вторых, было. У тебя в выражениях последовательно читается и вычисляется каждое подвыражение, пока не получится результат, который дальше вычислять уже некуда - тогда он и возвращается. Например, (/ (+ 3 3) 2) - ты сперва вычисляешь первый элемент ("/" возвращает функцию деления), потом второй (подвыражение, вычисляется по тем же правилам и в итоге возвращает 6), потом третий ("2" возвращает число два). То есть (/ (+ 3 3) 2) -> (/ 6 2) -> 3. В "3" больше вычислять нечего, поэтому оно возвращается.
Соответственно, если ты с самого начала написал 3 (или 10), то вычислять больше нечего и оно сразу возвращается.
>По моему вообще не понятно, каким он должен быть
Ну если ты аутист, тогда да.
Алсо, можешь читнуть https://en.wikipedia.org/wiki/Statement_(computer_science)#Expressions
тлдр: в древних языках типа си делалось различие между statement (что-то делает, но ничего не возвращает) и expression (всегда возвращает какой-то результат). В современных языках все является expression'ами. И в лиспах как раз так все и было испокон веков.
Спасибо, я все понял. Просто видишь, я полный ноль и хуй его знает, что с этим всем делать. Но я стараюсь. Вот ты говоришь, что в лиспах всегда так было, а я пока книгу не открыл, о существовании такого языка даже не знал.
(if (and (> b a) (< b (* a b)))
b
a)
and - по очереди вычисляются предикаты, истина или нет, если оба истинные, то результатом вычисления будет значение последнего предиката. И какое там блядь значение, если там знак неравенства?
(if (and (истина) (истина)))
Интерпретатор дает ответ, как и на сайте ответов. Я пытаюсь логику решения понять.
>И какое там блядь значение, если там знак неравенства?
Тебе аллах запрещает проверить в интерпретаторе, какое там значение, или что?
Интерпретатор не объясняет, откуда оно там взялось. Какое там значение, я уже смотрел и в интерпретаторе и в ответах на задачи.
>and - по очереди вычисляются предикаты, истина или нет, если оба истинные, то результатом вычисления будет значение последнего предиката.
Это правило вычисления cond.
If - специальная форма вида (if <predicate> <consequent> <alternative>).
>To evaluate an if expression, the interpreter starts by evaluating the <predicate> part of the expression. If the <predicate> evaluates to a true value, the interpreter then evaluates the <consequent> and returns its value. Otherwise it evaluates the <alternative> and returns its value.
Блядь, еб твою мать. Короче получается у нас (and (> b a) (< b (* a b) это истина, т.к. обе скобки истинные. потом у нас получается
(if истина)
b
a.
т.к. у нас у if истина, тогда берем b, а если бы была ложь, было бы а ?
Тут блядь не то, что стакан нужен, я вообще хуй знает, как смогу со всем этим разбираться.
Интерпретатор вычисляет выражения〈e〉по одному, слева направо. Если какое-нибудь из〈e〉дает ложное значение, значение всего выражения and — ложь, и остальные〈e〉не вычисляются. Если все〈e〉дают истинные значения, значением выражения and является значение последнего из них.
стр 37. там cond вычисляет по строкам, а and внутри одной строки. но может я не прав
>Короче получается у нас (and (> b a) (< b ( a b) это истина, т.к. обе скобки истинные.
Правильнее сказать, "получается у нас (and (> b a) (< b ( a b) это результат вычисления последней скобки, что есть истина". Такие "дурацкие" на первый взгляд правила вывода обусловлены рекурсивной природой интерпретатора.
>т.к. у нас у if истина, тогда берем b, а если бы была ложь, было бы а ?
Да, все так.
>Тут блядь не то, что стакан нужен, я вообще хуй знает, как смогу со всем этим разбираться.
Чувак, отложи пока SICP в сторонку и прочти The Little Schemer, я уже писал выше. Там всего 200 страниц, тебя берут за ручку и вместе с тобой пишут интерпретатор примитивного подмножества Scheme на ней самой. После этого никакой "магии" в SICP не останется, ты интуитивно будешь понимать, почему оно так работает.
Я не встречал, скорее всего нет. Но там очень простой язык и в целом она стилизована под детскую книжку, так что можно и со словарем читать, если хоть чуточку можешь в английский. Заодно названия продуктов выучишь, в буржуйском гастрономе будешь как дома.
Хорошо, попробую. Там их несколько частей, 4, что-ли. Я скачал пикрилейтед, 211 страниц, она нормальная?
Да, ее было несколько редакций, и сама она в свою очередь является переработанной версией пикрелейтед. Ты скачал последнюю, все норм. Только не удивляйся особо способу подачи материала, так надо. Это работает как в фильме The Karate Kid, если ты понимаешь, о чем я.
Не понимаю, о чем, ну да ладно. Буду читать такую и приму за чистую монету, Что так надо.
>(if истина)
>b
>a.
Щито? (if cond b a) вообще-то.
>Тут блядь не то, что стакан нужен, я вообще хуй знает, как смогу со всем этим разбираться.
С чем "со всем этим"? С условным оператором? Я надеюсь, что ты троллишь.
а=3, б=4
(if (and (> b a) (< b (* a b)))
b
a)
Где ты там (if cond b a) нашел?
Под "этим всем" имел в виду программирование, как таково, в т.ч. и условного оператора.
Эм... Ты написал (if cond b a), где cond = (and (> b a) (< b (* a b))), и строчкой ниже спрашиваешь, где я (if cond b a) нашел...
Я тебе член отсосу, если назовешь номер страницы в sicp, где учат переделывать
>Подставь в (if cond b a) вместо cond свое (and (> b a) (< b ( a b)))
Да, имею в виду первые 40 страниц, после которых идут эти ебаные примеры
http://sarabander.github.io/sicp/html/1_002e1.xhtml#g_t1_002e1
>1.1.2 Naming and the Environment
Страницу сам ищи.
Извини за прямоту, но ты не очень умный. Мне кажется, что тебе следует поискать себе другое занятие, если честно.
A critical aspect of a programming language is the means it provides for using names to refer to computational objects. We say that the name identifies a variable whose value is the object.
In the Scheme dialect of Lisp, we name things with define. Typing
(define size 2)
causes the interpreter to associate the value 2 with the name size.8 Once the name size has been associated with the number 2, we can refer to the value 2 by name:
size
2
( 5 size)
10
Here are further examples of the use of define:
(define pi 3.14159)
(define radius 10)
( pi ( radius radius))
314.159
(define circumference ( 2 pi radius))
circumference
62.8318
Define is our language’s simplest means of abstraction, for it allows us to use simple names to refer to the results of compound operations, such as the circumference computed above. In general, computational objects may have very complex structures, and it would be extremely inconvenient to have to remember and repeat their details each time we want to use them. Indeed, complex programs are constructed by building, step by step, computational objects of increasing complexity. The interpreter makes this step-by-step program construction particularly convenient because name-object associations can be created incrementally in successive interactions. This feature encourages the incremental development and testing of programs and is largely responsible for the fact that a Lisp program usually consists of a large number of relatively simple procedures.
It should be clear that the possibility of associating values with symbols and later retrieving them means that the interpreter must maintain some sort of memory that keeps track of the name-object pairs. This memory is called the environment (more precisely the global environment, since we will see later that a computation may involve a number of different environments).9
За прямоту извиняю. Вот 1.1.2. Где блядь эта хуйня?
A critical aspect of a programming language is the means it provides for using names to refer to computational objects. We say that the name identifies a variable whose value is the object.
In the Scheme dialect of Lisp, we name things with define. Typing
(define size 2)
causes the interpreter to associate the value 2 with the name size.8 Once the name size has been associated with the number 2, we can refer to the value 2 by name:
size
2
( 5 size)
10
Here are further examples of the use of define:
(define pi 3.14159)
(define radius 10)
( pi ( radius radius))
314.159
(define circumference ( 2 pi radius))
circumference
62.8318
Define is our language’s simplest means of abstraction, for it allows us to use simple names to refer to the results of compound operations, such as the circumference computed above. In general, computational objects may have very complex structures, and it would be extremely inconvenient to have to remember and repeat their details each time we want to use them. Indeed, complex programs are constructed by building, step by step, computational objects of increasing complexity. The interpreter makes this step-by-step program construction particularly convenient because name-object associations can be created incrementally in successive interactions. This feature encourages the incremental development and testing of programs and is largely responsible for the fact that a Lisp program usually consists of a large number of relatively simple procedures.
It should be clear that the possibility of associating values with symbols and later retrieving them means that the interpreter must maintain some sort of memory that keeps track of the name-object pairs. This memory is called the environment (more precisely the global environment, since we will see later that a computation may involve a number of different environments).9
За прямоту извиняю. Вот 1.1.2. Где блядь эта хуйня?
>Извини за прямоту, но ты не очень умный.
Лол, я ждал этой фразы. У него на самом деле просто склад ума такой - мозг упирается и не хочет переваривать и запоминать новую информацию, если она ни на чем не основана и подается как есть. Я когда-то от K&R так же подгорал: это так, потому что мыскозали, а это мамбо-джамбо зависит от типа машины, а это частью языка не является, а является функцией волшебной и непостижимой "стандартной библиотеки", которая все сделает заебись, надо лишь взмахнуть волшебной палочкой три раза влево и один - вверх. Зато после краткого знакомства с асмом все сразу встало на свои места и книжка зашла без малейших проблем.
>если она ни на чем не основана
Ты о чем вообще? Чувак уже неделю не может понять, как работает define и условный оператор. Ему уже конкретный абзац дали - читает и не понимает. Налицо отсутствие абстрактного мышления. Тут продуктивнее будет заняться чем-то другим или начать, не знаю, с html, если так хочется вайти в айти.
Не, такое говно мне точно ни к чему. The Little Schemer надеюсь заменит никчемный ассемблер.
Няш, у меня 2дня в неделю свободно. На той неделе были первые два дня моего вкатывания, сегодня третий. Я не целую неделю за этим всем сидел. Литл шемер скачал и открыл, сейчас буду потихоньку его в переводчик копипастить.
Да мне-то похуй, я просто излагаю мысли вслух.
Согласен, хотя тут еще языковой барьер может сыграть роль.
тот самый ньюфаг
Ну тут ничего не поделаешь, незнание английского в этой сфере практически эквивалентно безграмотности. 95% всей годной информации на нем, даже если она полувековой давности. Переводи и набирай критическую массу, пока не сформируется понимание языка. Только не читай тупо выхлоп переводчика, а переводи каждое слово отдельно, а предложения составляй сам. Если будут какие-то вопросы по значению терминов - пиши сюда, подскажем. По самому содержанию книги, думаю, вопросов не должно возникнуть, там все в форме вопрос/ответ.
Можешь еще все слова, что переводишь, сразу с переводом копипастить в отдельный файл. Потом набросаешь програмку для интервальных повторений, чтобы все это надежно заколотить в башку.
Ну вот как раз словарь для себя и делаю в данный момент. Но инглиш у меня совсем пиздец. В школе было с 2 на 3 еле-еле, в технаре вообще за деньги мне оценки ставили и не учил ничего, а в институте был перезачет, т.к. в технаре слишком много часов его было, лол. Короче с матом и руганью прочитал 3 строчки учебника, пикилейтед мой словарик на данный момент. Да, я только сейчас вспомнил, что инту - в, а лайк - любить, но хуле делать.
А шо за программа для интервальных повторений?
Все так начинали. Я сидел с бумажным словарем и переводил простыни текста в JRPG с PS1. В школе был немецкий.
>Да, я только сейчас вспомнил, что инту - в, а лайк - любить, но хуле делать.
Очень скоро ты начнешь вспоминать гораздо больше, если не забросишь. Можешь пропустить пока вступление, кроме секции Guidelines for the Reader, там ничего важного нет.
>А шо за программа для интервальных повторений?
Не программа, а методика. https://ru.wikipedia.org/wiki/Интервальные_повторения
Книжка, кстати, ее тоже активно использует.
Если твой мозг не может в многозадачность - лучше не стоит, лол. Иначе, тебя любой собеседник за аутиста считать будет.
Ну понятно, что если будет тупня какая, то я не буду это практиковать.
>А шо за программа для интервальных повторений?
Anki.
>за деньги мне оценки ставили
Так ты еще и быдло. ССЗБ. Зла тебе.
>ССЗБ
Это что за хуйня?
>Так ты еще и быдло. Зла тебе.
Никакое не быдло, технарь закончил без троек и покупался только английский, все остальное своими умом и стараниями. Ну не любил я этот язык и смысла в нем никогда не видел, потому и не учил.
https://myefe.ru/anglijskaya-transkriptsiya.html
f(n)=n, если n<3 и f(n)=f(n-1)+f(n-2)+f(n-3), ежели n>=3
и сука рекурсивно и итеративно расписать эту парашу. Как??? Я посмотрел решение, записал. Ок работает, но я не понимаю как он считает. Поясните чтобы и тупомы стало ясно, если вас не затруднит
1. Смотрим на значение переданного аргумента n. Если он меньше трёх, возвращаем его.
2. Иначе, возвращаем f(n-1)+f(n-2)+f(n-3)
Блядь, не бывает таких тупых людей, ты, сука, просто меня троллишь
Зато переводит, как говно ебаное
Не, он не тролит, я тоже тупой.
тот самый ньюфаг, который начал читать книжку со слоником на обложке
да это я понял, хоть и тупой. Просто как саму формулу то составить? Там получается идёт ....else(+ f(- n 1)) ( 2 (f(- n 2))) (3 (f(- n 3)))))
Почему там идёт умножение на два и на три? Как до такого додумать? Я понимаю само условие если/то, но как его записать не понимаю просто и в главе не объяснялось. Мне что, йоба математиком нужно стать для начала?
(2(f(...))))
да посмотрел на хекслете, но он там вообще сокращенно рассказывает и для него написать формулу это как само собой разумеющееся. пздц
Может посоветуете какие нибуль другие видеокурсы? У меня особо времени просто искать нет т.к сижу с компа только из библиотеки
по какой-то таинственной причине в русском переводе умножение на 2 и на 3 отсутствует. Так что смотри это задание в оригинале
спасибо
ну и как тебе книга со слоником? Тоже думаю ее начать иб туп...
На собеседованиях не обосрешься, в первую очередь. Научишься думать как программист. Сможешь писать свои решения задач, если их нету в гугле.
Да, возможно даже сразу, на позицию миддла.
Только ты его не осилишь(не так быстро, по крайней мере, как ты хочешь)
Миддла только со знанием сисп?Ты траль?Я все стажерские что вижу везде требования c++ html фрамворки mysql sql.Мы про один и тот же сисп сейчас?
Спасибо анончик пойду грызть сисп
Мне нужно именно на английском, после русских переводов технической литературы всегда больно вправлять терминологию на место.
Если же кажется слишком легким, то тогда читай Concepts, Techniques, and Models of Computer Programming.
вроде хтдп вообще с сикп не пересекается
> Мне что, йоба математиком нужно стать для начала?
Тебе для начала нужно научиться постить код на пастбины.
Это просто трап, повествующий о видеомонтаже на Racket.
Смысл одно и то же по 10 раз повторять?
Няшную от дейтелов
Clojure for the brave and true
Is it true that this is a list? (atom turkey or)
Правда ли, что это list ? (список)
Yes, because it is a collection of atoms enclosed by parentheses
Да, потому что это союз элементов, заключенный в скобки.
Ок, блядь, идем дальше.
Is it true that this is an S-expression? (x y z)
Это блядь s-элементы?
Yes, because it is a list
Да, потому что это список.
Идем блядь еще дальше.
Is it true that this is a list? (how are you doing so far)
Правда, что это список?
yes, because it is a collection of S-expressions enclosed by parentheses
Да, потому что это несколько с-элементов, заключенные в скобки
ТАК БЛЯДЬ В ЧЕМ ПРИНЦИПИАЛЬНОЕ ОТЛИЧИЕ list от s-expression???
а list это не текстовое представление списка? и как их блядь отличить, в каком случае используем list, а в каком s-expression ?
list - это по-английски список. Список - это список, байтики в памяти. '(1 2 3) - это S-выражение, представлюящее список с элементами 1, 2 и 3.
Пикча отклеилась
>союз элементов
Лол.
>ТАК БЛЯДЬ В ЧЕМ ПРИНЦИПИАЛЬНОЕ ОТЛИЧИЕ list от s-expression???
В том, что s-expression - это либо атом, либо список. Третий пример как раз это и показывает. Пиздец ты аутист.
Алсо, в следующий раз попробуй читать определения в книжке и пользоваться гуглом (https://en.wikipedia.org/wiki/S-expression).
это не я аутист, просто там хуй написано, что одно может быть другим. если по очереди перечисляются команды, то по логике они разные и чем-то друг от друга отличаются. там даже слова нет про то, что одно может быть другим.
>просто там хуй написано, что одно может быть другим
Скинь книжку. Ставлю анус, что ты пиздишь.
>если по очереди перечисляются команды, то по логике они разные и чем-то друг от друга отличаются
Чего блядь? Третий пример свой посмотри. Там черным по белому написано:
>(how are you doing so far)
>it is a collection of S-expressions enclosed by parentheses
>Is it true that this is an S-expression? (x y z)
>Это блядь s-элементы?
Правда, что это S-выражение (единственное число)?
Да, правда. Это список (S-выражение), состоящий из трех атомов (S-выражений). S-выражение - это либо список, либо атом.
>ТАК БЛЯДЬ В ЧЕМ ПРИНЦИПИАЛЬНОЕ ОТЛИЧИЕ list от s-expression???
Термин "S-expression" описывает большое множество, в которое входят все списки и все атомы. Т.е. каждый список - это S-expression, но не каждое S-expression - это список ведь это может быть атом. Так понятнее?
>>196165
>не уверен, что понял, ну да ладно, может по ходу книги более разжевано будет
Да, будет. Буквально в нескольких последующих примерах.
не нужна математика
Конкретные абстракции
БЛЯДЬ, ЕБАНЫЙ В РОТ, ВЗРЫВ МОЗГА!
Да это же ебаные коаны! Так вот откуда вся эта движуха пошла, блин! А я и не в курсе был и думал, что code koans придумали тддшники - а вот хуй там, как всегда это еще дцать лет назад было у лисперов, лол. Охуенно.
>>196232
Ок, анончик, тогда я беру свои слова обратно - ты все правильно делаешь, так и надо, она на это и рассчитана - чтобы ты сам пытался разобраться в вопросах\примерах и походу спрашивал, обсуждал и гуглил. Это охуенная и модная у хипсторов, лол штука:
http://rubykoans.com
http://clojurekoans.com/
http://clojurescriptkoans.com/
https://github.com/gregmalcolm/python_koans
https://github.com/mrdavidlaing/javascript-koans
половина сайтов у меня забанены роскомпозором, пиздец просто
Ну и да, на твоем втором скрине прямо написано:
>all atoms are S-expressions
>all lists are S-expressions
Слушай, а в чем проблема? Если ты необучаемый - зачем вообще читаешь SICP?
Если перед тобой стоит задачу, которую ты раньше не решал, это не значит, что её невозможно решить. Берешь и изучаешь необходимую математику по мере прохождения книги. Интегралы с нуля можно освоить за пару часов.
>Да это же ебаные коаны!
Не совсем, но подход похож, да. В конце такое же ощущение "просветления", ты "узреваешь", как устроен интерпретатор с точки зрения рекурсивного перемалывания списков, но не машинной реализации. Взаимодействие с машиной там нарочно сведено к абсолютному минимуму, чтобы читатель не отвлекался ни на что лишнее. Например,вся арифметика выводится всего из трех примитивов: прибавить единицу, отнять единицу и предиката =0?
Тоже решил прочитать эту книжку(The little Schemer), вроде как всё понял, пока не наткнулся на скринпик.
Question: What is the car of l where l is the argument (a b c)
Answer: a, because a is the first atom of this list
Мои вопросы:
Что понимается под car? абстрактная машина, где вместо car мог быть и house?
Что такое "l"? как я понял в Preface части, L - Лисп; S - Scheme, это так?
> Что понимается под car?
Странно, что ты дочитал до этого момента и до сих пор не привык к стилю изложения читай дальше блядь
>Что такое "l"? как я понял в Preface части, L - Лисп; S - Scheme, это так?
Да
car - название встроенной функции, которая делает сампонимаешьчто. Соответственно, "car of l" - результат применения этой функции к l, иными словами - самулавливаешьчто.
>Что такое "l"? как я понял в Preface части, L - Лисп; S - Scheme, это так?
Это замечания по поводу отличий в разных реализациях (L - относящиеся к common lisp, R - про scheme), смело можешь игнорировать.
>car - название встроенной функции, которая делает сампонимаешьчто.
Нет, не понимал, пока не загуглил, что car - одна из встроенных функций в лиспе, которая разделяет список. И как я должен был это понять? Или это такой способ изложения информации, что я сам должен догадаться, что это такое? Алсо - данные примеры можно как-то писать в L или R диалекте? Или на все устно нужно отвечать?
> И как я должен был это понять?
Может быть СТОИЛ БЛЯДЬ ПОЧИТАТЬ ДАЛЬШЕ ГДЕ НАПИСАНО ЧТО КАР ОТ
(ТВОЯ МАТЬ ШЛЮХА)
будет
ТВОЯ
и немножко подрубить мозг, чтобы из ответов вывести шо таки делает блядский кар?
>И как я должен был это понять?
Ну наверное дочитать до конца раздела, там полностью примерами объясняется, как она работает.
>Или это такой способ изложения информации, что я сам должен догадаться, что это такое?
Ну в этом весь смысл, в префейсе же написано. Паттерн рекогнишн, мозг конкретно нагружается.
>Алсо - данные примеры можно как-то писать
https://repl.it/languages/scheme
https://racket-lang.org/
смотри начало треда
Проиграл с поста. Но так-то с первого раза сразу действительно сложно врубиться, потому что непривычно - все же привыкли, что разжуют и в голову положат, а тут такая необычная хуйня, тупо теряешься, так что желательно чтобы кто-то за ручку ввел в процесс или все эти вступления прочитать, да.
>так что желательно чтобы кто-то за ручку ввел в процесс
Тебя сами авторы за ручку и ведут. Кажется, что ты что-то не до конца понял? Дочитай до того места, где книга в очередной раз предложит тебе пойти заварить чайку (она это с завидной регулярностью делает). К этому моменту все успеют разжевать до состояния жидкой кашицы. Только не перескакивай, потупи немного над неясными моментами, так изначально и задумывалось.
>или все эти вступления прочитать, да.
Не мешало бы. Там как раз это все и описано.
>pfpl же
Интересно, не слышал о такой. Спасибо.
>>196418
>Нет, не понимал, пока не загуглил, что car - одна из встроенных функций в лиспе, которая разделяет список. И как я должен был это понять?
Обратить внимание, что слово "car" написано курсивом? Значит это никакая не "машина", а "a variable or the name of primitive operation". Где об этом написано (и о прочих notational conventions)? Правильно, в предисловии, которое ты скипнул.
>Алсо - данные примеры можно как-то писать в L или R диалекте? Или на все устно нужно отвечать?
Бери любой интерпретатор CL или Схемы (по идее даже Emacs Lisp хватит) и вперед. Только не забудь сперва определить пару примитивов. Догадываешься, где про них написано?
>Скинь книжку. Ставлю анус, что ты пиздишь
>Ок, анончик, тогда я беру свои слова обратно
>Ставлю анус
>СТАВЛЮ АНУС
Пости фото жопной дырки с супом, чо как нипацан?
Я видимо, скачал эту книгу в урезанной форме на gen.lib.rus.ec и там даже не было такой главы, как "The Ten Commandments". Как раз в этой главе и описывается про эти функции.
http://7chan.org/pr/src/The_Little_Schemer_4th_2.pdf -яя
Если ты читаешь эту http://7chan.org/pr/src/The_Little_Schemer_4th_2.pdf
Значит 211, она полная
А в той, которую я скачал было 203
>>Алсо - данные примеры можно как-то писать
А я бы предложил пойти по более хардкорному пути и взять Emacs + paredit + geiser/SLIME. Заодно и интсрумент крайне полезный можно освоить. Да и с кейбиндингами евоными в той же современной *NIX-консоли становится весьма удобно жить и во всем остальном софте, использующем libreadline. Ну или DrRacket, он тоже поддерживает Emacs-keybindings.
>просто там хуй написано, что одно может быть другим
>Скинь книжку. Ставлю анус, что ты пиздишь.
>all atoms are S-expressions
>all lists are S-expressions
хуй тебе, а не анус, противный
Нахуй не нужно ньюфагу, отвлечется, заебется и бросит.
Плюсую этого, все чоткие посаны юзают evil-mode/Spacemacs ну или ребиндят Ctrl на Caps Lock по хардкору
А я давно привык и мне очень даже норм :3 Теперь если приходится работать в Vi - переключение режимов откровенно морозит. Ctrl, само собой, на Caps'е и циклическое переключение раскладок на ScrLk.
А я люблю обмазываться не свежим говном и дрочить. Каждый день я хожу по земле с черным мешком для мусора и собераю в него все говно которое вижу. На два полных мешка целый день уходит. Зато, когда после тяжёлого дня я прихожу домой, иду в ванну, включаю горячую воду...ммм и сваливаю в нее свое сокровище. И дрочу, представляя, что меня поглотил единый организм говно. Мне вообще кажется, что какашки, умеют думать, у них есть свои семьи, города, чувства, не смывайте их в унитаз, лучше приютите у себя, говорите с ними, ласкайте их.... А вчера в ванной, мне преснился чудный сон, как будто я нырнул в море, и оно прератилось в говно, рыбы, водоросли, медузы, все из говна, даже небо, даже Аллах
Полная программа по софтваре инжинирингу, основанная на htdp: https://www.edx.org/micromasters/software-development
Добавьте в шапку.
Он и так уже давным-давно не сикпотред. Его стоит переименовать в "Teach yourself CS using Scheme".
Почему не сделали курс на основе SICP для дошкольников?
Вообще-то сделали - ну, правда не на основе SICP (слабо представляю, что бы это могло быть), но с использованием схемки (Racket).
Алсо, https://news.ycombinator.com/item?id=10111479
Скачал. Читаю.
На либгене есть все 3. Только смотри, чтобы непорезанные были.
тогда я выкачусь, если тред будет не только по сикпу и будете вдвоем тута сидеть
> Фрэшмен того самого CS
Откуда капчуешь?
>Introduction to Alghorithms
Из двух скорее это (более общая), хотя по идее это справочник.
На CS и SICP в частности дрочат всякие бесполезные хуесосы. Посмотрите: весь самый мощный софт написан на системных языках. Криптолокеры, трояны, вирусы, бэкэнд анонимных сетей и прочие золотые проекты написаны на C, C++, Rust. Как функциональщина поможет петушкам обмениваться ключами через тор для реалиазции выкупа за зашифрованные файлы?
На сикп не надо дрочить, его надо прорешать и забыть.
"Дрочат" только бесполезные хуесосы, на что угодно, в т.ч. и на тобой описанное.
Разработчики как раз не сильно это палят, чтобы не распугивать C и Ruby программистов.
Эта функция возвращает Т, если <элемент> вычисляется в nil, иначе nil.
Например, дано:
(setq a 123)
(setq b "string")
(setq c nil)
тогда:
(null a) возвращает nil
(null b) возвращает nil
(null c) возвращает T
(null '()) возвращает T
Поясните про эту хуйню.
Если элемент вычисляется в нуль, возвращает Т. каким хуем нил не вычисляется в нил. а потом 123 и стринг вычисляются в нил?
По ходу я и есть клинический дурачок, что делать. Т.е. грубо говоря, функция "null" - определяет, ноль у него в аргументе или нет? Если ноль, то возвращает Т, если не в ноль, то nil?
>Т.е. грубо говоря, функция "null" - определяет, ноль у него в аргументе или нет? Если ноль, то возвращает Т, если не в ноль, то nil?
Да, только не ноль, а nil.
В том, что в Scheme это разные вещи: https://ideone.com/0H4VxY
> Может я правда дебил
Да нет, ты просто меня троллишь, а я ведусь, потому что мне на работе делать нечего.
Cпасибо за разъяснение. Но я правда с трудом вникаю в эту хуйню. Хотя выше писали, что книжка с зеленым слоником специально так сделана, чтобы читатель голову ломал, может поэтому так и выходит.
https://ideone.com/lPSTlu
Я попробую еще воспользоваться твоей добротой, ну а ты представь, как кормишь тролля. книжка по психологии "игры, в которые играют люди" или "люди, которые играют в игры" - одну из них я прочитал, там бывает такая хуйня, что оба прикидываются, (играют в игру), но обоих это устраивает
Так вот, попробовал сделать, как по твоей ссылке, ну чтобы ввел команду, а она ниже расписала, что эта функция обозначает - нихуя блядь не получилось. У меня есть сайт с расшифровкой функций, но там все как-то через жопу, а ты скинул и коротко написано и понятно.
Ниже "расписала" не "команда" проигрываю с твоей терминологии, а лично я - это называется комментарий: https://ru.wikipedia.org/wiki/Комментарии_(программирование)
И да, в stalin 'nil : https://ideone.com/Eu9Dmk , внимательно смотри, какой диалект схемы выбираешь в ideone (ты ведь заметил, что их там три штуки?). stalin не рекомендую миллиард расстрелянных лично, выбирай guile или курочку
Спасибо, добра тебе.
MIT не закон, я закон.
Программирование.
А ты под какой-то другой диалект что ли пишешь, почему ракетские батарейки исключаешь?
>Почему в MIT больше не изучают SICP
Ложь в самом названии. Легко нагуглить, что прямо сейчас в mit преподаётся sicp
http://web.mit.edu/alexmv/6.037/
Ну точнее не прямо сейчас, а в январе сего года. Там и календарь висит.
Но хабралюди и не такую наживку проглотить способны.
Самое смешное, что там вроде в самой статье и идет опровержение ее названия. И тем не менее каждые эн недель возникает очередной неосилятор, который завалился на задачке про монетки и таким образом доказывает всем (на анонимной борде), что он на самом деле ого-го, это все остальные дураки, хуйней всякой занимаются.
Заёбнее задач про монеты только дрочьба с восемью ферзями во второй главе имхо.
Ну тогда хуй знает, вряд ли тут кто-то пишет что-то такое, чтобы были нужны юнит-тесты, и при этом на на ракетке. Вот если бы ты про кложу спросил - тогда другое дело.
Из коробки - clojure.test для обычных тестов и интегрирующийся с ним clojure.test.check для генеративных. В clojure.test есть годная штука под названием "are", которая позволяет удобно писать тесты для одной функции: http://clojuredocs.org/clojure.test/are
Про генеративные тесты рассказывать долго, можешь сам почитать. Алсо, от себя рекомендую вот такую штуку чисто для удобства: https://pastebin.com/raw/KYW8X0nR
Для не таких как все есть midje - хитровыебанный dsl на макросах, позволяющий писать тесты в таком стиле:
(map inc [0 1 2]) => [1 2 3]
(f x y z) => pred?
- со стороны это выглядит как примеры в документации.
Есть еще пачка фреймворков в руби-стиле, со всеми этими it, should и т.п., но они ненужны.
Я на Racket почти до конца дорешал, могу помочь с твоим разделом "Racket way".
Половина ссылок 404, уноси свое говно. В треде все актуальные материалы есть есличо.
Пожалуйста.
Да без разницы, как тебе удобно.
тому що москаль
Потому что схемка специально создана для объяснения концепций программирования, а в пайтоне ты по ходу дела будешь помимо предметной области еще и ебаться с языком. Впрочем, если ты пайтон уже знаешь, тогда никаких проблем нет (а если не знаешь, то быстрее сперва взять схемку, а потом выучить пайтон).
Ты буквы там читать не пробовал, лол?
Эту функцию тебе надо написать.
Вообще, это книжка такая.
Там так объясняют.
Тебе лучше сразу это понять, или дропнуть и пойти почитать про пхп на русском.
Чувак просто троллит тупостью. Там буквально следующим пунктом, который по странному стечению обстоятельств не попал в выделение, предлагают написать (lat?)
На обложке лямбда нарисована. Как она связана с программированием?
(define (expmod base exp m)
(cond ((= exp 0) 1)
((even? exp)
(remainder (square (expmod base (/ exp 2) m))
m))
(else
(remainder (* base (expmod base (- exp 1) m))
m))))
ну если ехр равно нулю, тогда 1.
Вообще-то меня интересует не "что", а "как"; сам алгоритм выглядит неочевидным (для меня). Хотя по ссылке есть методы нахождения, сейчас читаю, может дойдет наконец.
Так, ну x^0 = 1, это понятно.
Дальше, если x^n, где n - четное, то мы
1) считаем x^(n/2)
2) возводим его в квадрат
(x^(n/2))^2 = x^((n/2)×2) = x^n. Так ведь? То есть мы n уменьшили и рекурсивно считаем функцию для меньшего n. А базовый кейс - это n=0, до него мы рано или поздно дойдем и тогда возвратим 1.
Так, а если n - нечетное, то
1) считаем x^(n-1)
2) домножаем на x
x × x^(n-1) = x^n. И тут n тоже уменьшается с каждым шагом, так что рано или поздно мы дойдем до базового случая n = 0 и возвратим единицу.
Ну и в обоих случаях мы еще вызываем remainder от результата, потому что нам все нужно по модулю m.
Вроде прояснилось. Спасибо.
(or <выражение>...)
Эта функция возвращает логическое ИЛИ списка выражений. OR оценивает выражения слева направо до тех пор, пока не встретится выражение, вычисляемое не в nil. Если такое найдено, OR прекращает дальнейшую оценку и возвращает T. Если все выражения nil, OR возвращает nil.
Что это за Т ? то же, что и это #t, т.е. true истина?
Да.
Читай английскую версию, в ней нет той массы типографских ошибок, которая есть в рюзском переводе.
Спасибо, понял.
> Это упражнение не имеет однозначного решения. Хороший ответ, скорее всего, мог бы служить темой диссертации.
Чёт у меня пригорело немношк
>> читать книжки на уёбищном человечьем языке вместо непосредственного восприятия информации через нейроинтерфейс
Алсо, or часто возвращает первое не-nil и не-false значение - их еще иногда называют "falsey" (false и nil) и "truthy" (все остальное). Типа "ложненькое" и "истинненькое", если по-русски, лол.
Например, в guile:
>> (or #nil #f 10)
> 10
В кложе:
>> (or nil false 42)
> 42
То есть ты его можешь использовать не только как чисто логическое "ИЛИ" из булевой логики, но и как оператор выбора первого не-nil значения:
> (or (get m "foo") (get m "bar") 42) на кложе
Достаем из словаря значение с ключом "foo". Если его нет, то пробуем достать значение с ключом "bar". Если и его нет, то возвращаем значение по умолчанию, 42.
Алсо, важно понять, что как только or встретит первое подходящее ("truthy") значение, все выражения справа от него от не вычисляет, а просто отбрасывает. То есть
>(or 1 (print "nope"))
ничего не напечатает. Но вообще, у тебя там про это задания как раз будут.
Алсо, попробуй реализовать if через and и or, чтобы точно понять, как оно все работает.
Господа, а не существует ли в природе курса по sicp с возможность получить сертификат на выходе?
Ты не про дипломы использующих его универов говоришь, так ведь?
На основе htdp есть mooc: https://www.edx.org/micromasters/software-development
На основе сикпа - не знаю, не слышал. Да и все материалы и так есть в открытом доступе, ну и это же вводный курс, так что не думаю, что прям есть какой-то сильный смысл в отдельном сертификате, хотя хз.
Там разве дают сертификат?
Поясните про член. ну любите вы его трогать, гладить там, родственникам показывать
(member <выражение> <список>)
Эта функция просматривает <список> - встречается ли <выражение> и возвращает часть <списка>, начинающуюся с первого найденного <выражения>. Если в <списке> нет <выражения>, MEMBER возвращает nil.
Например:
(member 'c '(a b c d e))возвращает (C D E)
(member 'q '(a b c d e))возвращает nil
Вот читаю слоника.
What is the value of the
application (member? a lat) where a is meat and lat is (meat gravy)
вот по вышеописанной логике он должен возвратить meat gravy, т.к. он нашел meat и возвращает его и весь остальной список. А вот в слонике ответ такой
#t , because we have fo und that meat is a member of (meat gravy).
Изначальную расшифровку функции взял отсюда. http://aco.ifmo.ru/~nadinet/html/other/lsp_book/lisp.html# Или это опять ебаные сложности перевода на наш язык и пр.? Просто про возвращение #t там в принципе ничего не написано. Вроде логично, т.к. совпадение было, но блядь ни слова про это нет.
>(member 'c '(a b c d e)) возвращает (C D E)
>(member 'q '(a b c d e)) возвращает nil
как-то через жопу скопировалось, там \t не было
Аа, т.е. если просто member, то возвращает список, а если member?, то #t\#f ?
Всё, что с ? на конце - это предикат, функция, принимающая на вход, как правило, один параметр - объект, и возвращающая булевскую характеристику этого объекта. Например, odd? и even? для чётности/нечётности чисел. В сикпе про это пишут в самом начале, в главе 1.1.6.
>функция, принимающая на вход, как правило, один параметр
Ну необязательно один, есть еще eq? и прочие. На всякий случай уточнил.
Двачую, братишка!
Ну нахуя же так изъёбываться?
Поставь Dr Racket (https://racket-lang.org).
Надо только функцию atom определять в начале файла, и всё.
Об этом в книжке написано.
Вот тебе несколько примеров из второй главы, даже с тестами:
https://pastebin.com/mygEwyDi
Просто скопипасти в новый файл racket (в верхнее окно редактора), и запусти.
Для SICP он тоже подходит, надо только поставить расширение.
Если интересно - гугли Dr Racket SICP.
Так а смысл все это делать? Ладно, если тебе дают какое-то задание что-то там придумать. Но если вопрос, мол какое значение этой функции, наверно смысл-то самому все просчитать, чем скопипастить, прога дает тебе ответ и ты сравниваешь его с правильным? Или я чего-то может не понимаю?
Ну хоть в чем-то я не осел и за тролля не приняли :)
Я тебе и предлагаю делать самому.
Просто не на бумажке.
Это же просто мини-ide и интерпретатор для scheme.
Но, код писать придётся самому, лол.
А в пастебине - мой старый файл, просто для примера, чтобы сразу посмотреть, как оно работает.
Там, кстати, можно знак лямбды использовать вместо слова lambda (см. функцию atom в файле). Вставляется через меню Insert или комбинацией Ctrl+\
Ну я, видать, еще до каких-то больших примеров не дошел, поэтому пока так. Но за инфу спасибо, буду иметь в виду.
О какой книге разговор и кто такой толкин?
Заодно и английский подтянешь (ты же про это?). Ну и вступление, типа, литературное, в самой-то книжке все уже по делу будет, так что разберешься.
>>216846
Если ты совсем нуфаг (да и не только), то тащем-та имеет смысл и простые примеры набирать@запускать, просто чтобы поиграться и поэкспериментировать. Так знания гораздо лучше в голове откладываются, а то иногда такое бывает, что прочитал, вроде все понял, а потом открыл редактор - и сразу пустота в голове, лол. другой анон
Все правильно делаешь, упражнения из TLS лучше всего решать в голове! Но, помимо собственно ответа, в голове или первое время на бумажке также неплохо представлять себе порядок вычислений. А тут drracket может помочь, там есть такая полезная штука, как Stepper. После того, как посчитаешь ответ, можешь вбить программу в drracket и проверить по шагам, правильно ли ты представлял себе порядок вычислений.
просто так больше опыта писать на юзабельном языке, но мейби будут какие-то задачи в книге которые на плюсах не сделать, а поскольку ноль практики писания кода на схеме то буду просто пропускать эти темы, анон, ответь!!
Ты троллишь, что-ли, так бездарно?
Книжку читать не пробовал?
Там не нужна практика писания кода на схеме.
нет, я просто до этого все упражнения на плюсах делал, дочитал до процедур в качестве аргументов, а на плюсах чтоб упражнения там поделать какие-то костыли надо юзать, вот и спрашиваю. Или ты считаешь что упражнения не надо из книги решать
я хочу сказать что просто если я буду задачи делать на плюсах то потом задачи на схеме будет оверсложно делать из-за его синтаксиса, но я наверное не прав
Плюсы для этого - весьма неподходящий язык.
Надо было сразу на схеме начинать.
Там постепенно всё усложняется, и практика достигается в процессе.
Три года прогаю на работе и учебе только на плюсах. Проблем со слоником на схеме не возникло
там ноль должен быть в 11 строке вместо единицы, но это не важно
У тебя какая-то не имеющая никакого смысла шизофазия на пике. Разберись с синтаксисом для начала, это несложно и займет 0.5-2 часа.
Что ты там в лиспе учить собрался?
И вообще, тяжело учатся лишь первые языки из каждой ниши. Далее любой очередной, если не осваивается, то понимается с полпинка за вечер.
Лол, я забыл в параметрах процедур указать а
Тебе полдюжины языков в любом случае придется выучить, если ты собираешься деньги этим делом зарабатывать. В книжке используется минималистичный язык, специально сделанный для обучения, так что "учить" там хуй да нихуя. Сложность не в языке, а в алгоритмах.
А что, есть какие-то сомнения по поводу человека, пишущего с маленькой буквы?
То что вы там проходили в своей шараге не имеет никакой связи с тем, что находится в этой книге.
это я себя исправил
Когда читаю книгу или решения то довольно легко, но когда хочу решить задачу сам то всегда какие-то траблы
Тупых людей подавляющее большинство, поэтому это норма. Дохуя умным эта книга особой пользы не принесет.
Чтобы иметь "какие-то траблы" при решении тех задачек совсем необязательно быть тупым, у любого average person обязательно будут траблы. И это норма.пнг, значит моск качается.
Ну он же тебе написал: несвязанный ни с чем символ "remainder". Не знает он никакого remainder'а, определить видать надо.
Да, это из-за того, что там используется кастрированная жс-версия схемки. Список доступных функций можешь посмотреть тут: https://www.biwascheme.org/doc/reference.html#numeric
tl;dr: (define remainder mod)
Траблами я называю вот это: когда моё решение занимает в два раза больше чем нужно и когда это можно сделать намного проще. Просто я то понимаю как эти задачи делать, но делаю их совсем по-другому чем нужно и делаю много лишней работы, будь-то от книги мне никакой пользы.
Но возможно так у всех (я не хочу быть тупым! ;( )
Два чаю этому >>219824
Используй chicken или guile с ideone
Или поставь себе наконец на пекарню https://www.gnu.org/software/mit-scheme и не еби мозги
Это и не трабл даже, это нормально, через это проходят все. Это называется "обучение". Проанализируй своё и референсное решение, осознай причины, по которым твоё решение хуже референсного, двигайся к следующей задаче, неся с собой новый опыт.
Анимехуй выше прав, это наоборот самый продуктивный вариант кстати. Если ты сразу пишешь тот же код, что в ответах - то ты уже все знаешь, нет смысла читать. Если вообще не знаешь как решить - мотивация падает, ну и в целом хуевенько. А когда ты нахуячил код, вроде работает, а потом смотришь и оказывается можно было гораздо проще и красивее сделать - это вот самое то, к тому же обычно приятно и интересно разбирать идиоматичное решение той же задачи.
Серьёзно! Почему нельзя просто выучить html css и javascript с php да верстать себе сайты за 50 - 100k .
Конечно можно сказать что без математики и фундаментальных основ ты НЕ ИЛИТА И ВАБЩЕ МАКАКА кококо, но это тоже вопрос спорный. Моему другу матан понадобился только с 1-го курса универа про матрицу для графики и всё ! Если начинать с SICP новичку который не одного хелоу ворлда не написал он отобьёт себе всю мотивацию программировать и учится еще пока дойдёт до команд input/output.
Чисто моё имхо что учится надо с html и/или python потом css + js + php(по желанию), а уже после узнав азы развивать свои знания с помощью SICP`a и других подобных книжек.>>187852 (OP)
Формошлепство не имеет никакого отношения к программированию, которому учит SICP и другая схожая литература.
В верстку я действительно не умею, например. Я ведь не дизайнер. Тут доска не для дизайнеров, дизайнеры в /web (или где-то еще). Так что в верстку я, например, не могу. Могу только хуяк-хуяк на реакте сделать.
Лиспобоярам не место рядом с немытыми жабаскриптерами.
Вот пишут:
The general form of a procedure definition is
(define (<name> <formal parameters>) <body>)
Всё понятно, когда показывают на простом примере:
(define (square x) ( x x))
Т.е. square - название, Х - аргумент, которым может быть число, а х х - что нужно сделать. В итоге получается, что вызываем команду через её название и какое-то число, которое будет аргументом, и его возводят в квадрат. Ясно, идем дальше.
Задание 1.6:
Alyssa P. Hacker doesn’t see why if needs to be provided as a special form. ‘‘Why
can’t I just define it as an ordinary procedure in terms of cond?’’ she asks. Alyssa’s friend Eva Lu
Ator claims this can indeed be done, and she defines a new version of if:
(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause)))
А тут что - чем является?
new-if - имя вроде как. А predicate then-clause else-clause что такое?
На этом месте застрял. Не могу понять, что эта штука вообще должна делать?
Дополнение:
Eva demonstrates the program for Alyssa:
(new-if (= 2 3) 0 5)
5
(new-if (= 1 1) 0 5)
0
Держи в курсе.
Да, имена-то могут быть любые (с дефисами, например), необязательно однобуквенные.
Походу до конца книгу осиливают дочитать только 5% людей.
Лично я только посмотрев решение и комментарий как это работает разобрался. Я думал что там должны просто числа складываться и не мог врубиться, а в комментариях объяснили что эти замены числам нужны только чтобы вызывать функцию какое-то количество раз, а не складывать сами числа.
Ну я до этого уже слышал про нумералы черча, так что считай считерил.
Зачем писать 1 вместо else, если else будет намного понятнее? Просто, чтобы выебнуться?
Так и есть
В скобки вторую строку
Скобки вокруг второй строки.
мимо ниначинающий
Правильно ли я трактую выражение? "Если Б меньше чем 0, то к нему добавляем -, т.е. Б - это модуль. И складываем А+Б."
Если правильно, откуда берется, то что мы суммируем А+Б, если перед ними не стоит "+" ?
В любом случаи спасибо, что не равнодушен
Да немного. Полистал первую главу, посмотрел оглавление. Понравилось: грамотное разделение на разные виды абстракции, Schema как основной язык. Много нормальных примеров, вроде: проверки на простоту, численные методы решения уравнения, а не напишите функцию печатающию "Хуй" И далее, далее.
ИМХО, этот евангелие + курс по сям + алгоритмы + ООП == неплохой минимальный двухгодичный курс для старшей школы.
Эту книгу мало кто осилит, из моих бывших одноклассников мб ток 2 человека (класс 30 человек), и то навряд-ли. Даже в моей группе в шараге где ребята которые очень круто сдали экзамены по матану, мб человека 3 осилят.
>Полистал первую главу, посмотрел оглавление.
Не надо торопиться с выводами, юноша.
Хотя, это с давних пор в России такое - каждый, кто видел голую женщину, считает себя гинекологом.
А сейчас так вообще достаточно в интернете посмотреть, и готово.
>старшей школы
Ну, хоть не для младшей, и то хорошо.
Потому, что в racket нет nil.
Как ты вообще sicp решаешь без (require sicp)?
Можешь ещё вместо nil написать '()
Или сделай (define nil '())
Спасибо, сделал процедуры в 2 раза меньше (2 раза вызывал процедуру check-chet/check-nechet, исправил), вместо nil добавил '() и получилась такая няша :3
>chet
>nechet
>para
Не делай так больше, пожалуйста.
Алсо, -3, например - четное или нечетное?
Алсо, заметь, что твои "chet" & "nechet" практически идентичны. Сможешь заменить их обе одной функцией?
Я не стал особо запариваться просто и вышло некрасиво из-за этого.
Не надо сравнивать остатки по отдельности с нулём и единицей.
Надо сравнивать один остаток с другим.
Нахуя, спрашивается, ты определяешь чёт или нечет? Это же совершенно лишняя информация, и лишнее действие. И "пара" никакая при этом не нужна, просто 2 параметра.
У тебя есть первый параметр и остальные.
Берёшь первый и сравниваешь с ним каждый последующий из остальных. Чтобы чётность была такой же, и похуй, чётной или нечётной.
Короче, пробуй дальше.
Оптимальное решение раза в три короче, чем у тебя понаписано.
Знаешь анекдот про математика?
Как физик кипятит чайник воды? 1) Поставить чайник под кран 2) набрать полный чайник воды 3) вскипятить
А если чайник уже наполовину наполнен?
1) Поставить чайник под кран 2) долить недостающие полчайника воды 3) вскипятит
Как математик кипятит чайник воды?
1) Поставить чайник под кран 2) набрать полный чайник воды 3) вскипятить
А если чайник уже наполовину наполнен?
1) Вылить воду 2) задача сведена к предыдущей.
>раза в три короче,
Я не в тот скриншот посмотрел, это же старый.
Всё равно, можно короче раза в полтора.
Как анон, который сделал говнокод (я) кипятит чайник воды?
1) Поставить чайник под кран 2) набрать полный чайник воды 3) Вскипятить
А если чайник уже наполовину наполнен?
1) http://community.schemewiki.org/?SICP-Solutions
Неплохо.
Но с проверкой чётности всё равно фигня.
Просто сравнивай остаток от деления a на 2 и b на 2. Т.е. abs не нужен вообще. Потому, что это будет либо 0, либо не 0.
И tepernormalno? можно назвать loop и определить внутри основной функции. И вопрос там ни к чему, это же не предикат.
Вместо 2-х вложенных if можно сделать cond.
Чётко. Я просто в rem добавил abs, а в tepernormalno забыл убрать.
Орнул когда посмотрел на свой изначальный код.
Вот так - хорошо.
Единственное замечание - во внутренней функции параметр g лучше назвать иначе, чтобы не вводило в заблуждение, и не приводило к потенциальным багам.
Тебе там анон выше написал. Если ты в школе не осилил сикп + курс по сям + алгоритмы + ООП, то звать тебя никак и в профессии делать тебе нечего.
Анон выше такого не писал, а тебе походу нужно кое-что потушить, анон.
Если ты не хочешь становиться макакой, то тебе надо научиться иметь своё мнение, а не полагаться на рандомных сосачеров, лол.
А какое у вкатывальщика должно быть мнение? Я прочитал эту тему на луркморе и мне стало интересно что опытные аноны думают на счёт этого.
Насколько мне нужна эта книга?
Про else в cond?
Это не функция, это просто псевдоним для true.
Т.е. нужно определить условие, которое выполняется всегда. Это - true, естественно.
И ты пишешь: (define else #t)
Или как там true в слонике обозначают, не помню, смотреть лень.
Или можешь написать (define else (= 1 1)), если хочешь.
В Racket, кстати, можно так не делать, там просто последнее выражение в cond (без условия) выполняется, если ничего не подошло.
Тебе будет несколько легче начинать читать эту книгу.
А нужна ли она тебе - посмотри и сам реши.
Ну да, наверно про него. Ну вот смотри пикрилейтед. Выходит, что три последних строчки это, по сути, #t при любом раскладе? И, если я все правильно понял, увидел else, значит там буде истина, чтобы после него не было написано? А вообще, где бы это почитать, чтобы более подробно. Книжка со слоником, конечно, заставляет мозги работать, но блядь когда на протяжении 20 страниц эта else периодически попадается, а до сих пор расшифровки нет, то уже дебилизмом попахивает.
>Выходит, что три последних строчки это, по сути, #t при любом раскладе?
Нет.
Не при любом.
Условия рассматриваются последовательно.
Если никакое другое не подошло, то рассматривается последнее, и оно всегда истинно.
>где бы это почитать, чтобы более подробно
Я не помню, где я об этом читал.
Гуглить лень.
Но, ты же можешь рассуждать логически?
условия:
если a=1, то 111
если a=2, то 222
иначе 888
Если ты заменишь иначе на "если истина", то и получишь желаемое поведение.
И ещё раз - условия разбираются последовательно.
При совпадении условия разбор прекращается.
Спасибо. У меня вордовский документ под функции лиспа, сейчас попробую своими словами описать то, что ты рассказал и прийти к какой-то общей картине.
Специально посмотрел сейчас в слонике.
Там нет определения else.
Т.е. они дают это как ключевое слово, типа if или cond.
Но, в некоторых диалектах Scheme оно не определено, и можно его определить так, как я написал. А можно и не делать этого, и просто писать #t.
В Racket else есть, в SICP - тоже.
Вот что пишут в SICP про это (стр. 45):
Else is a special symbol that can be used in place of the p in the final clause of a cond. This causes the cond to return as its value the value of the corresponding e whenever all previous clauses have been bypassed. In fact, any expression that always evaluates to a true value could be used as the p here.
>Я исправил
Нет, cond у тебя там тоже неправильно индентирован. Редактор разве за тебя этого не делает? Скобки же для того и нужны, что отступы по ним расставляются строго автоматически.
Многабукафнисасилил, но поперек пробежал глазами - вроде все правильно, читай сикп, учи джаву и пайтон, потом по вкусу можешь добавлять остальное.
Могу ещё тебе посоветовать не зацикливаться на таких вещах.
Т.е. просто принимай это как данность.
Else - значит else.
Понимаешь, как работает? Вот и хорошо. Как оно устроено - поймёшь потом, если будет нужно.
Иначе можно сразу же упереться в тупик, и там и остаться.
Как сказал один умный человек - математику невозможно понять, но к ней можно привыкнуть.
И это не только с математикой так.
Так вот я и не понимал, Как она работает, в слоняре ебаном ни слова не было. Сейчас окультурю все это дело, да дальше пойду.
Я понял о чём ты, исправил.
>там действительно должна получиться точно такая последовательность
Ну, с точностью до перестановки.
>ведь rest в итоге станет nil
Ну, вот чему равно множество подмножеств пустого множества? У тебя на картинке есть ответ. rest - это именно множество подмножеств. Иными словами, у тебя rest - это результат (subsets ...). subsets при каких-нибудь аргументах возвращает nil? Или нет?
Сори, я помечу-то забыл про предикат null? в процедуре map. Просто вот что происходит (картинка), когда я в качестве аргумента даю (list 1 2 3) и делаю процедуру, которая просто возвращает свой аргумент. Просто в map в качестве аргумента всегда дается пустое множество, потому что все элементы листа просто "проcdrиваются" до nil и какая процедура должна быть, которая из пустого множества делает множество с числом, я не имею ни малейшего понятия. Единственная зацепка у меня только то, что число возвращаемых процедурой пустых множеств равно 2 в степени количества элементов листа, и от этого надо плясать.
Фак, в качестве элементов используемых в функции в map можно использовать s. Теперь что-то придумаю.
> Просто в map в качестве аргумента всегда дается пустое множество,
Ну так потому что subsets рекурсивная, а ты просто возвращаешь аргумент в своей лямбде. В итоге рекурсия доходит до базового кейса, где возвращается (list '()). Ну ты их аппендишь все и возвращаешь - вот и получается '(() () () ...).
Тебе надо рассуждать, как в доказательствах по индукции. Вот допустим, что у тебя уже есть множество всех подмножеств для (1 2 3 ...). Теперь тебе надо найти множество всех подмножеств для (0 1 2 3 ...). То есть один элемент новый всего добавился. Как ты это сделаешь? Попробуй сперва просто словами описать конкретно для этого случая. Можешь даже на ... пока забить и просто руками выписать сперва все подмножества (1 2 3), а потом - все подмножества (0 1 2 3). И сравнить.
Я не стал читать что ты написал во втором абзаце, потому что хочу сам сделать. Я просто не могу понять как оно работает. Когда я расписываю весь процесс, то в итоге возвращается просто пустое множество (картинка 1), и это логично, потому что в map items всегда nil. Я что-то упускаю, ведь сама процедура действительно возвращает множество подмножеств, значит в map items не всегда nil, но я не пойму почему. И я кстати заметил, что то что возвращает моя процедура весьма похоже на то что я должен получить, но я энивей ничего не смогу сделать не поняв как работает метод.
Я не хочу смотреть ответ, потому что я почти все задачи сделал сам, а когда я смотрел ответ и оказывалось что я просто забыл поставить скобки и из-за этого программа неправильно работала, то я все-равно чувствовал что я не справился с упражнением.
Лол, можешь прочитать второй абзац, там нет ответа.
> Каким образом l стало уменьшаться?
(cdr l) на каждом шаге, пока не станет пусто.
Чувак, эта книжка - про рекурсию.
И, такое ощущение, что именно этого ты (пока) и не понимаешь.
Алсо - ещё раз советую тебе не дрочить это в уме, а либо писать на бумажке по шагам, либо поставить Racket и начать программировать.
Я вообще ничего не понял. А с чего ты взял, что (cdr l) будет уменьшаться и схуяле оно стремится к тому, чтобы стало пусто? Вот мы по порядку шли, дошли до строки, отмеченной красным. Проверили, нулевой ли список l, оказалось, что нет. Переходим к следующей строчке, вычиляем там все, что можно, сначала самую правую скобку, потом среднюю, значение прибавляем к результату последней строки в будущем. Дальше вычисляем последнюю строку, ее значение прибавляем ко значению предпоследней. То-ли я долбоеб, то ли умственно отсталый, но я вижу, что делать нужно так. Откуда ты взял, что нужно так делать, вообще вдуплить не могу. Значение всех функций знаю, что какая делает, а толку блядь нет.
Функция firsts принимает на вход список.
И у этого списка на каждом шаге обрезается голова: (firsts (cdr l))
Вернись назад, и разбери самый простейший пример из этой книги. Ты же не понял ничего.
На самом деле разбери, а не сделай вид.
Распиши на бумажке каждый шаг выполнения, как будто ты интерпретатор.
> Распиши на бумажке каждый шаг выполнения, как будто ты интерпретатор.
Всегда проигрывал с того факта, что для того, чтобы стать успешным погроммистом, нужно балансировать в опасной близости от шизы
Алсо, ты не видишь чтоли, он опять тупостью троллит, делает вид, что не знает, как работает cond.
>А почему нет?
>(null? l), where l is ((a b) (c d) (e f))
(null? l) проверяет, пуст ли список l. В твоем случае l - это ((a b) (c d) (e f)).
((a b) (c d) (e f)) - это пустой список или непустой?
>Каким образом l стало уменьшаться?
(cdr l) возвращает хвост списка l. То есть список без первого элемента. Угадай, что получится, если из списка (1 2 3 4 5) убрать его первый элемент. А из списка ((a b) (c d) (e f))?
>А с чего ты взял, что (cdr l) будет уменьшаться и схуяле оно стремится к тому, чтобы стало пусто?
Хвост списка меньше самого списка. Если из списка выкинуть один элемент, то его длина уменьшится (на единицу). Как думаешь, что произойдет, если из списка (1 2 3) выкинуть первый элемент? А из списка (2 3)? А из списка (3)?
>Значение всех функций знаю, что какая делает, а толку блядь нет.
Потому что ты не пробуешь это все в repl и даже не выписываешь на бумажке значения каждой функции. Вот попробуй расписать, как выполняется выражение (+ (/ 6 3) 2).
(+ (/ 6 3) 2)
(+ 2 2)
4
А теперь попробуй точно так же расписать (cons (car (car l)) (frists (cdr l)))... Ну, вот то, что на картинке.
>>234940
Да вроде вообще не в cond у чувака затык.
Вот да, двачую этого.
Перестань ебаться в глаза и увидь, что функция firsts вызывает функцию firsts с аргументом (cdr l) САМУ СЕБЯ РЕКУРСИВНО БЛЯДЬ ПОНИМАЕШЬ ТЫ СУКИН СЫН? РЕ-КУР-СИВ-НО
Хочу. Можно будет там всем двачем объяснять тупотроллю примеры из зелёного слоника в риалтайме.
Я понимаю твой сарказм да?, но писать примеры кода (да и вообще простыни) и вправду гораздо удобнее в вашем любимом текстовом редакторе все мы знаем, в каком, так что... мне кажется, идея не лишена практического смысла. Да и кросс-постинг в тред (и уведомления из треда) настроить не проблема.
не хочу
> да?
На самом деле нет. Почему, когда я говорю всерьёз, у меня вечно детектят сарказм? Я чо, слишком много на двачах сижу?
Я правда все время думал, что возвращает уже конечный результат. А, судя по тому, как меня хуесосят, это совсем не так. Ну начал листать слоняру с самого начала, лол, сам уже как интерпретатор. Чтобы понять, как работает интерпретатор, нужно самому стать интерпретатором, лол.
Ты вообще раньше программировал на чём-то?
Эта книга именно о рекурсии, а не о программировании вообще.
Это сложная тема для полного ньюфага, и ты именно это и демонстрируешь тут.
Может быть, начать с чего-то попроще?
Попробуй, вот это посмотри:
http://www.realmofracket.com
Скачать книгу:
https://the-eye.eu/public/Books/IT Various/Realm of Racket.pdf
Это от автора Land Of Lisp, если что.
https://www.youtube.com/watch?v=HM1Zb3xmvMc
Я нихуя раньше не делал. Попытался вкатиться в сикп - хуй на рыло, не пошло, дразнили тут троллем. Сказали, что нужно книжку зеленого слоника осилить, который вообще для полнейших даунов, тогда сикп нормально пойдет, вот зеленого слоника и пытаюсь дрючить. В принципе действие команд я понимаю, все их записал в вордовском документе - пикрилейтед, чтобы не быть голословным. Но сейчас по ходу заминка по самой этой рекурсии, когда скачем вверх-вниз, выполняя команды. Я че-то этот момент как-то проебал и пытался решить всю задачу целиком. Дошел до 60стр слоняры и вот тут-то оказалось, что обосрался. Сейчас начал сначала листать, долистал до 30 страницы, пока разборов разбора рекурсии нет, так что не сильно много мне придется по второму кругу проходить. Ну сейчас попробую разобраться, если ничего не выйдет, тогда буду по твоим ссылкам смотреть.
Ну так можно бесконечно по книжкам прыгать, и так ни одной не закончить, лол. Чувак уже больше четверти книжки так-то прошел, как-то стремно было бы сейчас бросать. Алсо, книжка именно про основы алгоритмов, не только про рекурсию тащем-то (просто с ней все примеры). Правда если чувак и вправду не расписывал ничего, не писал и не игрался с кодом, как ему говорили, а просто глазами пробежал, тогда это не дело конечно. Но все равно, можно же взять и сейчас разобрать детально пару уже пройденных примеров, их там не так много к тому же.
Я ручкой писал на бумаге эти примеры. Но блядь, я не прыгал вверх-вниз по строчкам, а тупо шел вниз, подставляя значение, выполняя команды. А оказалось, что эта ебаная рекурсия не так работает. Вот сейчас буду разбираться.
>Чтобы понять, как работает интерпретатор, нужно самому стать интерпретатором
На самом деле это так и есть, по-другому никак.
>>234981
Так ты вот лучше вместо ворда прямо в схеме это все и пиши. Там же есть комментарии. То есть например для car ты можешь написать что-то такое:
;; car - возвращает первый элемент списка
(car '(1 2 3)) ;=> 1
(car '((1 2) (3 4)) ;=> (3 4), а не 3!!!
И так далее. И сможешь прямо сразу эти все примеры выполнять и проверять, что все понимаешь правильно. Если прям не хочешь себе скачивать drRacket - можешь онлайн все это делать: https://repl.it/languages/scheme
Ну вот опять же, в том же drRacket есть дебаггер, который тебе прям по шагам покажет, как выполняется выражение. То есть ты можешь прикинуть в голове\на листочке, а потом сравнить.
Алсо, ты можешь как бы и "вниз" идти (на самом деле извне внутрь как бы, к самому глубокому вызову), просто когда встречаешь рекурсивный вызов оставляй место и расписывай его рядом, например. Ну то есть вот попробуй для начала для простой функции дерево рекурсии расписать:
(define (sum lst) (+ (car lst) (sum (cdr lst))))
И заодно исправь ошибку в ней ;)
У меня нет значения sum. Ладно, няша, давай я пока с интерпретатором разберусь, посредством зеленого слоника, потом это попробую. А то и так навалилось всего и сразу. Головой понимаю, что там списки урезаются, потом плюсуются и идут левее, но давай пока отложим.
>У меня нет значения sum.
Так это имя функции, которое я тебе предлагаю определить.
А, понял! Ты ж сокращенной формы не видел, лол. Это то же самое, что (define sum (lambda (lst) ...))
>давай пока отложим.
Ок.
Важно понять, что есть глубокая связь между рекурсией и списком в лиспе.
Список - это и есть рекурсия.
А рекурсия - это список (который в лиспе, а не вообще).
Т.е. список - рекурсивная структура данных.
Например, тебе нужно превратить список чисел в список чисел, каждое из которых на 1 больше исходного.
Т.е. '(1 2 3) превратить в '(2 3 4).
(define (add1 lst)
....(cond ((null? lst) '())
........(else (cons (+ 1 (car lst)) (add1 (cdr lst))))))
Здесь проход по списку совпадает со структурой списка.
И построение списка-результата точно такое же, как если бы ты просто строил список сам по себе.
Что такое список '(1 2 3) на самом деле:
(cons 1 (cons 2 (cons 3 '())))
Т..е. чтобы вычислить (создать) список надо последовательно углубиться в него до самого конца, и затем собрать результат в обратном порядке (в смысле - конец списка будет вычислен первым).
А вот что делает функция add1:
(cons (+ 1 1) (cons (+ 1 2) (cons (+ 1 3) '())))
Попробуй, разбери этот пример досконально, чтобы вообще не осталось недопонимания.
Важно понять, что есть глубокая связь между рекурсией и списком в лиспе.
Список - это и есть рекурсия.
А рекурсия - это список (который в лиспе, а не вообще).
Т.е. список - рекурсивная структура данных.
Например, тебе нужно превратить список чисел в список чисел, каждое из которых на 1 больше исходного.
Т.е. '(1 2 3) превратить в '(2 3 4).
(define (add1 lst)
....(cond ((null? lst) '())
........(else (cons (+ 1 (car lst)) (add1 (cdr lst))))))
Здесь проход по списку совпадает со структурой списка.
И построение списка-результата точно такое же, как если бы ты просто строил список сам по себе.
Что такое список '(1 2 3) на самом деле:
(cons 1 (cons 2 (cons 3 '())))
Т..е. чтобы вычислить (создать) список надо последовательно углубиться в него до самого конца, и затем собрать результат в обратном порядке (в смысле - конец списка будет вычислен первым).
А вот что делает функция add1:
(cons (+ 1 1) (cons (+ 1 2) (cons (+ 1 3) '())))
Попробуй, разбери этот пример досконально, чтобы вообще не осталось недопонимания.
>>235070
Да, это хороший пример.
Если разложить, то получится, для (n 3):
(+ 1 (+ 1 (+ 1 0)))
Что весьма напоминает список '(1 1 1) по структуре.
Изменилась функция (+ вместо cons), изменился терминатор (0 вместо пустого списка), но идея та же самая.
Т.е. снова нужно дойти до конца (до терминатора), и собрать результат в обратном порядке.
Есть хорошая метафора для рекурсии:
Представьте, что вам нужно попасть в запертый дом.
Дверь слишком крепкая, чтобы её взломать.
А ключ находится в доме поменьше, дальше по улице.
Но, следующий дом хотя и меньше, но дверь всё ещё трудно взломать.
А ключ от неё находится в доме поменьше, дальше по улице.
И т.д., размеры домов всё уменьшаются.
И вот, последний дом - совсем маленький, и вы уже можете взломать его, и взять ключ.
И этим ключом вы открываете предыдущий дом, берёте ключ, открываете предыдущий, снова берёте ключ, открываете предыдущий, ... PROFIT.
(Это из книги How To Think About Algorithms)
>Что весьма напоминает список '(1 1 1) по структуре.
Списки и натуральные числа - это один и тот же объект, шутка как бы про это была
Ты какую-то дичь пишешь.
Если всё это троллинг, то очень изобретательный.
Если ты не хочешь, как все нормальные люди, взять питон или даже javascript и научиться программировать, то возьми SICP.
И прочти начало первой главы, где описаны основы (до пункта 1.2.2).
Оно не сложное, весь пиздец там потом начинается.
И после этого - вернись к ебучему слонику, если он тебе так запал в душу.
И поставь уже, блядь, Racket.
И выполни там вот эту функцию, например: >>235028
И вообще, почитай, что тут тебе вчера понаписали, это познавательно.
Рекомендую сохранить.
Пока не поставишь Racket (с пруфами) - комментировать больше не буду.
И да, все эти вещи точно так же можно делать на джаваскрипте.
Есть даже мнение, что JS - это схема с сишным синтаксисом, лол.
А ещё на JS можно потом найти работу.
>Есть даже мнение, что JS - это схема с сишным синтаксисом, лол.
Ещё есть вполне обоснованное мнение, что рынок труда в области жабаскрипт-макакинга перегрет.
Да.
Я серьёзно.
Важно понимать, что это всё - нихуя не догма, а руководство к действию.
Взял, сколько было нужно, и сколько смог - и хорошо.
Алсо, знаю пример, когда взрослый и успешный дядя, уехавший на тракторе, работающий по профилю (хаскель-хуяскель etc) и имеющий хорошую математическую подготовку, решал этот ваш сикп около года (весь).
Это серьёзный труд, и нужно иметь серьёзные причины для этого.
А нахуя всем ньюфагам тогда его советуют, если готовый спец целый год ебался, ньюфагу минимум 2, если не 3 потребуется.
Ну, он целый год ебался в свободное от работы и отдыха время.
А ньюфагам советуют тролли, очевидно же.
Нормально - это взять питон.
Выучить основы.
Потом - взять книжку по алгоритмам, их именно для питона дохуя и больше + онлайн ресурсы, типа http://interactivepython.org/runestone/static/pythonds/index.html
Потом (или параллельно) - ООП, которое в питоне тоже нормально и понятно сделано.
И т.д. и т.п.
А потом, если захочется странного - рекурсию задрочить как следует, Y-комбинатор, и прочее, то вот тогда уже взять слоника, например. Или, даже сикп.
>А потом, если захочется странного - рекурсию задрочить как следует, Y-комбинатор, и прочее, то вот тогда уже взять слоника, например. Или, даже сикп.
Т.е. даже олдфагам совсем не обязательно? А вы тогда зачем тут собрались? Просто "странного" захотелось?
Олдфагам желательно.
До определённой степени.
Это всё реально делает тебя более годным программистом.
1280x720, 0:05
Сикп он уже пробовал читать, не зашло, поэтому читает слоника в качестве подготовительного курса. Если ему сейчас начать с жс разбираться, он просто на месте сразу умрет, потому что там пиздец сколько всего ньюфагу надо в голове держать. Коммент про работу вообще не в тему - по такой логике надо запретить детям в школе паскаль изучать, ведь можно изучать ЭЙЧТИМЭЛЬ и СИЭСЭС И ПОТОМ НАЙТИ РАБОТУ!!11 Со схемы на жс перекатиться как раз несложно, когда разберешься с основами. А вот разбираться с основами на жс сложно, потому что это сложный язык (а схема - простой).
Лол, я ждал этого комментария!
Сколько времени нужно потратить на изучение схемы, чтобы потом на js перекатиться?
>А ньюфагам советуют тролли, очевидно же.
Вуефорсер, так это ты?
>>235468
Ньюфагам обычно достаточно прочитать первые две главы, и потом потихоньку в зависимости от желания добивать остатки (параллельно с другими активитис).
Ну и подразумевается, что ньюфаги будут регулярно заниматься, а не два часа по субботам. Сам курс рассчитан на полгода как бы.
>>235509
Малаца. Там вроде choose language -> sicp как раз есть.
Ну, часа два.
Ты чё, с языком изображений самый фан. Самый пиздец там в последних двух главах, в которых пишется сначала свой интерпретатор, а потом свой компилятор.
Жс и уж тем более пайтон проще и синтаксисом, и нахождением практического применения
Ты не знаешь ни жс, ни пайтона, но что-то подпердываешь в тред, поздравляю.
Ну мне там осталось всего 3-4 задания с языком изображения. Еще добавился баттхерт, что нигде не указывается и не показывается, что нужно подключать сторонние библиотеки, более того, до этого я делал все через консоль и mit-scheme/scheme, а теперь нужно было ставить drracket. Еще одна функция из примера в книге, окзывается уже не являются частью той библиотеки (не помню как называется), и ее нужно либо было писать самому (могу уточнить, но что-то связано с графикой, но вообщем для моего уровня это нереально), либо искать в документации новую версию.
Вроде draw-line, но я не уверен.
stepper, вверху нажми
Могу для тебя скопипастить бойлерплейт, который я использовал в ракетке, когда решал.
>Все говорили начать с sicp, когда он не пошел
Если у тебя "не пошёл" SICP, значит, твои умственные способности ниже, чем у первокурсника, и стоит всерьёз задуматься о том, подходит ли тебе весь этот путь, связанный с программированием. Слоник здесь не поможет.
Это он так The Little Schemer называет.
>Все говорили начать с sicp
Вроде тебе с самого начала говорили sicp ИЛИ htdp (второй проще), но ты хотел на русском, а потом уже забил на это и последовал совету анона со слоником (или это не ты был). В любом случае, забей на них и ХУЯРЬ КОД, тебе тут до скончания веков будут взаимоисключающие советы давать. Закончишь слоника - потом выберешь, что делать дальше.
640x360, 3:38
У первокурсника живой препод и рядом 20 таких же ньюфагов, а я сам по себе, один на один с книгой. Ну разве что вы помогаете, так вообще давно бы нахуй все это забросил.
>>235607
Да, это все я был. У тебя хорошая память. Слоник-то идет потихоньку, вчера ткнули, что не так делаю, сейчас начал потихоньку переделывать и вроде получается.
Вот вам прикольная песня про слоника, кстати.
>У первокурсника живой препод и рядом 20 таких же ньюфагов, а я сам по себе, один на один с книгой.
Тоже верно. Ну наверни видеокурсов, что ли: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/
Ну я пока слоника мучаю, вроде получается, перескакивать пока не хочу.
Нету блядь у меня этой хуйни, Там другая надпись, нажимаю ее и в выборе нет того, что у тебя. Если сверху нажать отмеченную тобой хуйню выдает пик, который я выше отправлял. Блядь, заебало, то-ли я долбоеб, то-ли программу не той версии скачал, то-ли вы тролллите. Ебаное говно, сраную развертку двух скобок не могу бляьд полчаса разобраться.
Спасибо, все получилось. Для тебя есть отдельное место в раю, а для создателя интерфейса этой проги отдельное место в аду.
Ну мне уже ткнули, как правильно сделать, чтобы он показывал, мне большего-то наверно и не нужно будет, дальше только интерпретатор дальше у слоняры дрочить.
теперь забудь про #lang racket, желаю тебе начать с 0 htdp second edition
аналитически мыслить надо, а не что аноны посоветуют тупо, слоник даже не по Racket вроде, а именно по Scheme
Ну блядь упражнения слоника делать в этой программе, если я все верно понял. Кстати сколько памяти там поставить максимум? Было 128, поставил сначала бесконечно, так он очень долго стал грузиться, теперь поставил 350, вроде быстрее, но вначале еще быстрее было. Вернуть 128 и не выебываться?
вероятно да, не думал над этим
у меня чуть тормозит ток под косарь строчек кода когда, поэтому не жалуюсь со 128
Ок, вернул на 128.
Держи. ХОтя как мне тут помогают, я должен сесть на поезд, приехать и сам за тебя мышкой нажать, лол.
Да тут только один даун я про лисп пиздит, остальные нормально сикп решают. Но я с азами вроде разобрался и непонятки если будут, по постам в этом итт доразбираюсь, а слоняру закончу, тоже сикп начну.
Зелеееный слониик тута в тред пришел
Зелеееный слоонииик скобок нам прииинес
Пока ребятаа все толстили
Зеленныыый слооник тута в тред писаал
Писал о том как надо лисп учить
О том как вызывать проклятую лямбду
О том как трудно всем, особенно ему
ему, зеленому слонику
Ну сикп ведь тоже по лиспу. Да и меня-дурачка вроде как пригрели и не сильно уже хуесосят за дебильные вопросы. А я туда перекачусь и опять меня пидарасить будут. Ну я изначально-то вкатился, т.к. сикп читал, дошел до 40 страницы и понял, что не тяну, вот на слоняру зеленого и переобулся, чтобы потом опять к сикпу вернуться.
/lisp/-тред про коммон лисп по большому счету, а этот тред для вкатывальщиков, все норм
Постил бы прогресс в тред, епт. Ну вторая глава уже посложнее, но если в первой для тебя все было легко, то вторая пойдет нормально
До него вообще даже паскаль\бейсик в школе не тыкал? Что параллельно\сразу после читал и делал? Сколько тебе лет было?
Так опа вроде нет пока, тут за полчаса 50 постов настрочили, может он придет перекатит
Не тыкал. Ничего параллельно не делал, ну может пару задач на си сделал, английский учил. 18
Есть в 30 начинают и ничего
Сделал все задания из первой главы, немного из второй. Потом перекатился на кресты ¯\_(ツ)_/¯
Я думал ты это от части написал из-за поста анона, который почему-то считает, что это одно и тоже
(Вернее агрессивного долбоёба из /b/, а не анона)
^_^
Ну кресты нетрендово же, я думал ты скажешь "прочитал первые три главы, потом запилил криптостартап на изоморфик жс и го", а ты походу laba1.cpp пошел делать((
meh
Лол. Открыл, и правда там это обсуждают. Да хуй знает, проветривать или нюхать, третьего-то не дано. Ну не привязывать же датчик дыма к жопе каждого участника.
Вторая примерно такая же по нудоте, но чуть повеселее, поразнообразнее и картиночки предлагают подрочить.
Какие комнаты?
>Вуефорсер, так это ты?
В каком-то смысле можно так сказать, лол.
Я вообще склонен форсить практичные вещи, но без фанатизма.
Был тут ещё долбоёб, который тупо форсил Vue не в тему и без аргументов, так это не я.
>Сам курс рассчитан на полгода как бы.
В процессе обучения всё решает мотивация. Вообще всё.
И мир сильно изменился с тех пор, как был создан этот курс.
Сейчас люди по-другому воспринимают программирование.
У них другие ожидания. Сикп в них не вписывается, и умственные способности тут ни при чём.
Так что, я продолжаю настаивать, что этот курс не годится для ньюфагов в 2018.
А слоник создаёт иллюзию простоты.
Это именно иллюзия, но ньюфагу это непонятно, пока он не дойдёт до определённого места.
Так что и слоник не годится для ньюфага.
Но, ничего страшного не случится, если ньюфаг попробует.
И да, речь идёт о полном ньюфаге, который никогда раньше не программировал.
>приходит в сикп-тред
>начинает доказывать, что сикп ненужен
Не очень-то ПРАКТИЧНО.
>И мир сильно изменился с тех пор
Какая-то вода и демагогия. По делу есть чо?
>А слоник создаёт иллюзию простоты.
Не создает. Не особо простая книжка, учит думать головой и решать проблемы.
>И да, речь идёт о полном ньюфаге, который никогда раньше не программировал.
А математикой занимался? А физикой? Может он поэтом был, ну или грузчиком? А цели у него какие? И т.п. Вода, короче, и демагогия.
Есть ньюфаг, т.е. я, который затупил на сикпе и перекатился на слоняру. Слоняра вроде получается, ну пройду я целиком всего слоника, потом обратно на сикп перекачусь. Прорешаю пару глав, как советовали выше и буду учить js или что-то непосредственно связанное с будущим трудоустройством. Это нормальный план?
Да, это нормальный план.
По крайней мере, он не выглядит невыполнимым.
В конце концов, все люди разные, и как оно тебе - знаешь только ты.
Здесь большое значение имеет восприятие тобой компьютерных технологий.
Какую картинку ты себе представляешь, когда думаешь об этом.
Что именно тебе интересно, от чего ты получаешь удовольствие.
>>235867
>приходит в сикп-тред
>начинает доказывать, что сикп ненужен
>Не очень-то ПРАКТИЧНО.
Наоборот, это весьма практично.
Потому, что за пределами сикп-треда все и так это знают, лол.
>Потому, что за пределами сикп-треда все и так это знают, лол.
Ну прочитай шапку раздела, http://teachyourselfcs.com/ или ту пасту на луркморе. Ты сейчас выглядишь как долбоеб, который пришел посрать просто потому что может.
Ты сейчас выглядишь как долбоеб, у которого нет чувства юмора.
И который не умеет и не любит читать, но думает, что овладел телепатией.
Во-первых, не думаю, а овладел.
Во-вторых, за этот навык мне, apparently, пришлось кое-чем поплатиться.
Нахуя ты эту книгу для детей читаешь? Будь мужиком блядь, читай сицп.
Да идите нахуй со своими конфами. Я блядь сотни раз в телеге создавал конфы по сицп, в итоге дегенераты с двача начинали обсуждать бизнес, тян, и кидаться аниме стикерами. Все в итоге забросили сицп. Просто блядь читайте и отписывайтесь в тред.
Например выебать твою мамашу шлюху. Идити нахуй со своим питоном и бытом блядь, программирование не изучается путем изучения синтаксиса питона.
Мы - элита подводных интернетов, очевидно же.
Нахуй на главном ссылка сюда?
я тоже как раз!
НИКАК не могу понять, чем отличается аппликативный порядок от нормального, объясните задание 1.5, буду благодарен, но с меня как обычно
погугли
(define (sine angle)
(if (not (> (abs angle) 0.1))
angle
(p (sine (/ angle 3.0)))))
define: found a definition that is not at the top level
Это копия, сохраненная 14 сентября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.