Продолжаем обсуждение лучшей книги всех времен и народов, а так же одноименных лекций. Приглашаются сюда как новички, ломающие над ней голову, так и опытные ребята, прошедшие ее всю (или большую ее часть).
Где я могу писать свой код, для выполнения заданий? Онлайн редактор, с поддержкой Scheme: https://repl.it/languages/scheme IDE для racket подобных языков(но есть и поддержка Scheme, но её нужно включить) - https://racket-lang.org/
>>1272060 Да, он самый перекатил. А я тогда уперся, что с базами не смог разобраться, так хуй и положил. Но я все советы и разжевывания сохранил себе в документ, думаю разберусь. А пока не до обучения, так что в этом плане нихуя не делаю. Но не забросил в целом, просто некогда. >>1272078 Ну я в яндексе просто написал "sicp аниме", мне и выдало несколько вариантов. Кстати в прошлый раз в другом поисковике похожее вбивал и картинки другие были, так что думаю треда до 30 там пикч точно хватит разнообразных, лол.
>>1272060 Решил я погуглить Картинку с прошлого треда, начал с Гугла, поиск по картинкам, вставляю ссылку на картинку, жму "поиск", оно мне выдаёт Изображение удалено либо доступ к нему ограничен. Бля думаю какого хуя. Хуй с ним, пробую ещё и нихуя не опять пишет что изображение удалено. Решил поискать в Яндексе, по картинкам, и оно мне всё нашло, откуда эта картинка. Ёбаный гугл.
Малость подзавяз на задачах с языком описания изображений. Какого хуя в книге не приводятся конкретные примеры с использованием графической библиотеки? Как я тогда могу быть уверенным в правильности решения, если мне не на чем проверить задачу? Короче, нагуглил графические функции для mit-scheme, но почему нельзя было это вставить в книгу?
>>1274392 Школьная математика за 10-11 класс по сути.
>>1274717 О, свежая кровь, добро пожаловать :3 Ну смотри, допустим у тебя 10 рублей надо разменять монетами по 1, 2 и 5 рублей. Просто возьми и распиши на листке все возможные варианты. То есть это будет: все способы разменять монетой в 1 рубль, в 2, в 5, в 1 и 2, в 1 и 5, в 2 и 5 - и все это просуммировать. Теперь разделим все варианты на две группы: с использованием 5-рублевой монеты и без. То есть общее число способов - это сумма числа способов а) без 5-рублевой монеты и б) с ней довольно очевидно. Это - первое подчеркнутое предложение с твоего пика. Теперь второе. Если мы используем 5-рублевую монету, то мы ее должны употребить хотя бы один раз. Но тогда у нас получается, что 10 рублей мы размениваем 5-рублевой монетой, и у нас остается еще 5 рублей. И эти оставшиеся 5 рублей мы можем разменять еще сколькими-то способами, и каждый такой способ соответствует способы размена всех 10 рублей, если к нему добавить 5-рублевую монету. То есть допустим мы размениваем 5 рублей как 2+2+1, тогда 10 рублей - это 5+(2+2+1). И так далее, для каждого способа разменять 5 рублей у нас получается способ разменять 10 рублей: 5+(...). А если у нас этой первой 5-ки нет, то это значит, что мы вообще не используем 5-ки - а число способов разменять сумму без учета монет первого типа (то есть 5-рублевых) мы уже посчитали ранее. Makes sense?
>>1274717 Поддвачну вопрос. Сам дорешал сикп почти до конца, остались последние два задания самые ебучие, но вот монеты эти сраные никогда не понимал. Алё, призёры олимпиад по математике с задачками на сообразительность)))0)) тут есть? Поясните по хардкору за монеты.
>>1274717 Подозреваю, что переводчик, который написал такой перевод как минимум педофил, а то и собакоеб-зоофил, натирающийся собачьим говном и делающим подобные вещи целыми днями.
Количество вариантов размена суммы n (в данном случае 10) равно количеству способов разменять сумму n (10) без использования монет х (в данном случае 5), а изначально монеты могут быть номиналом 1, 2 и 5.
Вот хотя бы таким языком, чтобы ты сразу прочитал и понял. А не сидел и тупил, как долбоеб, что это за набор слов и что эта хуета означает.
>>1274717 >>1274758 >>1274987 Я пока древо рекурсий в пейнте не нарисовал, тоже нихуя не мог понять эту херотень. Алсо, как раз после этой задачки понял, что советовать эту книгу нулевому вкатавальшику - ТРОЛЛИНГ.
>>1274987 В твоем варианте мало того, что ВООБЩЕ НИХУЯ НЕ ПОНЯТНО, так он еще и некорректный тащем-та.
>>1274995 Ага, вместо "первый тип монет" писать "монеты наибольшего номинала из имеющихся". Ну хуй знает, то же самое, только букв больше.
>>1275010 В каждом треде вроде по 10 раз все повторяют, что если учился в плохой школе без уроков программирования, не очень сообразительный, не можешь в математику и т.д. и т.п. - то для тебя есть htdp, книжка специально для школьников (а сикп - для студентов). Даже в факе написано "хтдп+сикп".
Почти месяц у меня был перерыв, когда я тупил с базами. Сейчас нужно описать для себя функции, которые не являются базовыми, ну и разобраться с подключением баз. Продложим :) оп
Процедура memv принимает два аргумента, объект и список. Он возвращает первый подсписок или хвост списка, car которого равен объекту, или #f, если объект не найден в списке. Значение memv может использоваться как список или как значение истинности в условном выражении.
Объясните долбоебу, что делает эта функция. Русским, блядь, языком. Если объект в списке не найден, выводит #f, это я понял.
Что делает эта функция? Ну хорошо, первым car берет первый объект списка. При раскрытии скобки единственный элемент берет еще раз? Или учет на то, что изначально в q будет список из списков, первый car возьмет первый список, а второй car из этого списка возьмет первый элемент?
В догонку эту функцию. Она тоже изначально, что q это список списков, потом от первого списка берет cdr ? Просто других вариантов не вижу. дебильный оп, как вы уже догадались
Короче все функции переписал расшифровку (было около 15), ну кроме двух последних. Завтра буду опять подключение базы штурмовать, ваши посты у меня сохранены. Ну, чует сердце, приду завтра с дебильными вопросами, лол.
>>1277478 > Или учет на то, что изначально в q будет список из списков, первый car возьмет первый список, а второй car из этого списка возьмет первый элемент? Да.
>>1277483 >В догонку эту функцию. Она тоже изначально, что q это список списков, потом от первого списка берет cdr ? Да. Ну или не список списков, а список с парами (cons'ами). Список - это, как ты наверняка уже знаешь, частый случай cons'а, у которого cdr'ом хвост списка, а не просто какой-то рандомный скалярный элемент (т.е. число там какое-нибудь или строка). Вот видишь, уже начинаешь шарить и без нас. > Она тоже изначально, что q это список А ещё ты случайно бутылку колы.
>>1277577 Ок, сейчас пойду почитаю. >>1277579 >начинаешь шарить без нас Ну дорогу осилит идущий, хуле делать. Там выше ссылку кинули, с одной функцией доразбираюсь, да буду базы мучать, подключать их. А так 2 главы книжки разобрал, базы подключить, да дальше идти.
>>1277617 Да не, функции, которые изначально в ракете не прописаны. Нужно куда-то там закинуть, че-то там сделать, чтобы каждый раз их не расписывать. Голову ебал месяц назад, так хуй осилил и бросил. Теперь с новыми силами и мыслями буду опять пробовать.
>>1277447 Ну то есть она просто ищет элемент в списке, а когда находит его, возвращает и этот элемент, и все оставшиеся элементы (в отличие от memq, которая возвращает только сам элемент). Иными словами, она выкидывает начало списка до искомого элемента, и возвращает все что после него.
>>1277712 Почему бы тебе не взять и не проверить самому? Практика - критерий истины же. Алсо, на твоём видеорелейтед самый пассионарный персонаж всего русского кинематографа. Когда вырасту, я хочу стать как он.
Короче сидел, разбирался с модулями сегодня. Не целый день, но так, наскоками. Читал ваши советы в прошлом итт. Один из советов был, прежде чем модуль сохранять, нужно нажать "run" и посмотреть, все ли функции работают. Блядь, пришлось многие удалить, Т.к. почему-то в залупу ракета лезла, че-то не нравилось. Ну да хуй с ним. Уж чисто ради результата оставил одну самую простую функцию про возведение в квадрат. Главное разобраться, как подключить, а потом докинуть проблем не будет, равно как и разобраться с тем, какого хуя ему расшифровка не нравилась. В общем почитал, что-то понял, завтра буду добивать. Ну и наверно с разрывом жопы сюда припрусь, Т.к. опять че-нибудь не склеится :)
Два дня пытался решить упражнение 1.28, частично решил (не полностью), потом посмотрел решение в инете, и теперь нахлынула депрессия, что сам не решил, и хочется вообще все нахуй бросить, пытаюсь забыть решение, чтобы начать превозмогать заново. Как с этим бороться?
Давайте по порядку, как с конченным дебилом, разберемся с этими модулями. Создал два файла с одной функцией - другие докинуть потом не будет проблемой, сейчас бы все подключить. Внутрянка у них правильная, не надо ничего дописывать? И это нормально, что ракета на #lang ругается?
>>1278098 А ты делай, как я - смирись с тем, что ты дебил, и все будет заебись :З
Ладно, взял себя в руки и допилил 1.28, правда конечно, с подсказками.
>>1278120 Няша, я перед sicp немного clojure делал (рекомендую Living Clojure, там интересные упражнения), и постоянно были проблемы с подключениям репла/проектов в редактор. В итоге плюнул на всё, и решил попытаться в emacs, который до этого три раза бросал. Так вот, переключение между scheme/clojure/racket/любым лиспом делается в несколько клавиш, очень удобно, рекомендую. Буквально за два дня настроил и разобрался в основах, после этого никакие мануалы вообще не читал (мне этого хватает пока, и да, многие конфиги я скачал готовые).
>>1278128 Да мне бы с этим одним разобраться, а то переключение какие-то между языками. Тут-то оно уже как родное, уже и силы были потрачены, советов дана хуева гора. Мне кажется уже на самом пороге решения всей этой хуйни. Ну и люди тут знают, что куда, так что пока буду пробовать это домучать. Но за совет спасибо.
>>1278130 Понимаю, у меня emacs всегда ассоциировался с HEXом, над которым нужно танцевать день и ночь. В общем, нужно время и интерес/мотивация, чтобы начать.
>>1278131 А нужное, это какое? >>1278139 У меня ни с чем не ассоциируется, Т.к. я не знаю, что это такое и пытаюсь хотя бы с чем-то одним до конца разобраться.
>>1278098 Ну если ты посмотрел решение и разобрался, то на следующий день просто по памяти напиши рабочий алгоритм - и все, двигайся дальше, с этого упражнения ты получил все, что нужно. Суть же не в том, чтобы выебываться перед кем? перед собой? тем, сколько упражнений ты решил и какой ты охуенно умный, суть в обучении.
>>1278120 Ты создал? Что ты создал? Пиши полные пути к своим файлам, телепаты все в отпуске как бы. Алсо, не используй на всякий случай пробелы в именах файлов, в венде постоянно с этим какая-нибудь хуйня вылазит. Ну это так, общие соображения.
У тебя же >Language: Beginning Student стоит, включи обратно полноценный рэкет (ты ж вроде включал уже), student-языки - это для тех, кто по хтдп занимается.
Алсо, нахуя ты ОДНУ И ТУ ЖЕ ФУНКЦИЮ в обоих файлах написал? Ты что, ебанутый? Тебе нужно из одного модуля импортировать (переиспользовать) функцию в другой, чтобы два раза ее не писать, але блядь, привет. Ух бля, ну-ка создал lib.rkt и main.rkt, быстраблядь! В либ.ркт положил свой скваре, в мейн.ркт написал (require ...) и какую-нибудь хуйню навроде (define foo (x) (square (+ x 1)), запустил кабанчиком, проверил циферки, хуль ты смотришь? Делай давай, блядь!
>>1278128 Ты ебанутый? Нахуй ты ему имакс советуешь? И алсо у тебя на пике ты репл внутрь модуля перемещаешь, а ему надо разобраться с подключением модулей (и самой концепцией модуля, кек).
>>1278146 Ну вот, не зря я в прошлом посте написал про пробелы и попросил запостить полные пути к обоим файлам, лол.
Адрес файлов просили, вот он C:\Program Files (x86)\Racket\моя библиотека\пробный Опять пиздец и не там? Просто была непонятка еще с первого итт, там то папка db от слова дебил, который оп то еще какая-то, которой и в директории нет. >>1278164 Ну оба файла у меня в одной папке, если ты об этом.
Переименовал первый файл в lib.rkt, дописал в него строчку (provide square), появилось какое-то окно блядь голубое, как его убрать?
Переименовал второй файл в main.rkt, удалил из него функцию, дописал строчку (define (foo x) ...). На первый файл ругаться перестало, видать правда дело в пробеле было. НАчал на многоточие ругаться.
>>1278170 >Просто была непонятка еще с первого итт, там то папка db Тебе твои файлы совсем не обязательно хранить там же, куда установлен сам рэкет. Обычно их кладут куда-нибудь в мои документы, или как там у вас на венде это называется. И пиши на латинице (маленькими буквами), типа projects/mylib/main.rkt
>>1278197 Блядь, ну ты сам разве не видишь, что там опечатка со скобкой?
>>1278198 А, ну вот, видишь. Только теперь подумай, что ты написал.
(define (foo x) (square (+ x 1))) (display (foo 1))
>>1278200 Перенес в мои документы, теперь адрес такой C:\Users\1\Documents\projects\mylib\lib.rkt Ну второй файл в той же папке. Вот, перенес скобку, вычислило 4. Ну ок, дальше что делать?
>>1278204 Ну все, ты разобрался, как работать с модулями: разносить функции по разным файлам и импортировать эти функции в другие файлы.
>Ну ок, дальше что делать? Ну видимо попробовать осознать, что ты сейчас сделал, прочитать еще раз первый параграф https://docs.racket-lang.org/guide/module-basics.html - ну и что ты там изначально хотел сделать, засунуть все свои воспомогательные функции в lib.rkt, не?
>>1278207 У тебя два рэкета что ли открыто? Подозреваю, что нужно нажать замочек, кек.
>>1278208 Я нажимал замок, он то открывается, То закрывается, но окно висит. Но сейчас открыл тот файл, уже нет этой хуйни. Да и хуй с ним. ушло и в рот ебать. Такой вопрос, вот у меня ракета на рабочем столе ссылка. Вот я захожу в нее и вся эта хуйня сразу работать начинает, что сейчас наляпал? Ну хотябы эту функцию "зашквар", в квадрат которая возводит. Или блядь нужно теперь каждый раз в документы ползать и оттуда заходить в файл main ?
Короче с рабочего стола зашел, зашквару он нихуя не хочет видеть. И почему-то в первой строке теперь автоматом появилось #lang racket, а раньше не было
>>1278210 Ну так у тебя же может быть сколько угодно файлов и проектов. Откуда ракетка знает, над каким ты сейчас хочешь работать? Нажимаешь ctrl+O (или open file через меню) и выбираешь нужный файл. Ну как в ворде, блин. Не знаю как в венде, в линуксе там по умолчанию показываются все файлы, которые ты недавно открывал.
Алсо, там же в настройках можно включить табы, ну чтобы было одно окно с несколькими табами, а не по окну на каждый файл, имхо так удобнее.
>>1278215 Я открыл сейчас через опен файл, высветилось второе окно, ну открывал lib.rkt, в нем написал зашквар 3, он их зашкварил в 9. Но блядь я файл переделаю, будет простыня огромная из всех этих расшифровок и всегда будет висеть она сверху? Тогда смысл всего этого, когда можно было тупо копипастить и не ебсти голову с модулями?
>>1278219 Она у тебя будет в другом файле, простыня твоя. В lib.rkt у тебя будет простыня, а использовать эту простыню ты будешь во всех остальных файлах. Будет у тебя файл chapter1.rkt для упражнений из первой главы той книги, которую ты сейчас читаешь. Там ты сделаешь require и тебе будут доступны все функции из lib.rkt. Потом у тебя будет файл chapter2.rkt для упражнений из второй главы. Там ты тоже напишешь одну строчку с require и у тебя тоже будут доступны все функции из lib.rkt. Тебе не придется копипастить все в два разных файла. Потом если вдруг найдешь ошибку в какой-нибудь функции в lib.rkt, то ты ее один раз исправишь, в одном месте, и она (уже исправленная) сразу будет доступна и в chapter1.rkt, и в chapter2.rkt. А если бы ты копипастил, тебе бы пришлось в каждом файле ее исправлять (и в каждый файл копипастить все функции).
>>1278220 Я сейчас не sicp и не htdp читаю, а книгу для полных даунов. Ну смотри, у меня первое окно открывается, когда я программу запускаю. С него открыл lib.rkt, с этого уже открыл новый файл, в нем попытался вбить (require lib.rkt), ну чтобы в нем работало. Блядь, мне опять это говно с замком вылезло, на этот раз уже вообще нахуй на весь экран блядь.
Растянул на весь экран, ебаное синее окно осталось справа висеть. Вбил-таки рекуру с либом, ниже зашквар. Он гавкает, мол lib.rkt не понимает, что такое. Блядь, как оно заебало.
>>1278229 >Я сейчас не sicp и не htdp читаю Без разницы, там ведь тоже главы наверное есть, не? Ты же вроде книжку про scheme от самих авторов scheme читал, емнип.
>у меня первое окно открывается На всякий случай еще раз скажу, что там в настройках есть "open files in tabs instead of new windows", или как-то так, чтобы первое окно было и единственным, а файлы открывались в табах. Имхо так гораздо удобнее, хотя дело вкуса конечно (особенно если у тебя монитор большой).
>С него открыл lib.rkt Ну можешь не открывать, если ты там ничего менять не собираешься.
>>1278235 Увидел, что кавычек не хватает, но не помогло, значит что-то другое. Ладно, пойду чайку заварю, да буду статью читать. Спасибо за терпение, няша.
>>1278239 >Увидел, что кавычек не хватает, но не помогло, значит что-то другое. Ладно, пойду чайку заварю, да буду статью читать. Спасибо за терпение, няша. Файл должен в той же директории находится, что и файл из которого ты делаешь require. Ты реквайреш из утилитед3, ты уверен что на диск его сохранил?
>>1278241 Ну файлы lib и main сохранены. Просто у меня на рабочем столе значок ракеты, я его открываю и пытаюсь это сделать. Грубо говоря нужно пустой файл создать в той же папке, где два вышеуказанных, открывать его, в нем прописывать (рекурва либ) и все будет ок?
>>1278243 > Грубо говоря нужно пустой файл создать в той же папке, где два вышеуказанных Просто открой main.rkt и там пиши. Но если прям нужен еще один файл - то да, создаешь в той же папке и делаешь require. Про относительные пути я даже не заикаюсь пока.
>>1278249 C:\Users\1\lib.rkt не удается найти файл либ по вышеуказанному адресу. Короче я сейчас на тот адрес те два файла скопирую и должно все полететь. >>1278250 Ну как вариант в той же папке я создам файл, ярлык от него размещу на рабочем столе и все будет заебца.
ПОЛУЧИЛОСЬ, ЕБАНЫЙ БЛЯДЬ В РОТ Сколько, сука, времени и нервов было потрачено на это говно, пиздец. Короче создал пустой файл в той же папке, ярлык скинул на рабочий стол, с ярлыка зашел, записал пикрилейтед и все сработало, осталось только другие функции туда захуячить, некоторые из них поправить, т.к. почему-то ракета ругается. Последний вопрос на сегодня как это говно ебаное справа убрать? Приходится на весь экран программу растягивать. >>1278253 Чтобы заходить в два щелчка мышки, а не ползать в документы и куда там еще.
Хотя да, удалил нахуй этот ярлык, просто захожу в прогу с рабочего стола, а в ней через файл открываю тот файл. Сохранил сразу в нем фразу (рекурва либ), теперь заебись, можно сразу заходить и печатать, что нужно.
>как это говно ебаное справа убрать? Я ж тебе уже говорил - на замочек нажми (ты ж его сам и закрепил там, лол, по умолчанию оно скрыто).
>Чтобы заходить в два щелчка мышки, а не ползать в документы и куда там еще. Ну просто будет у тебя больше файлов - все их тащить на рабочий стол будешь? Имхо, дурацкая привычка, во всем должен быть порядок. Хотя у тебя-то кучи проектов на машине нет, так что в принципе конечно похуй...
>>1278257 Да, вот так все-таки правильнее всего :3
>>1278254 >Последний вопрос на сегодня как это говно ебаное справа убрать? Приходится на весь экран программу растягивать. С кофемолки пишешь? Нажми на замочек, чтобы он открытым стал. После этого окошечко будет само собой прятаться, когда мышкой на него не наводишь .
>Сколько, сука, времени и нервов было потрачено на это говно, пиздец. Я конечно же восхищаюсь твоим стремленеием изучать Ракет, но у тебя очевидно недостаток общей компутерной грамотности. Так то тебе будет сложно без этого. Читнул бы какую нибудь книжку типа виндовс для чайников \командная строка виндовс или что-то тому подобное. Ты же тян?
>>1278257 >Хотя да, удалил нахуй этот ярлык, просто захожу в прогу с рабочего стола, а в ней через файл открываю тот файл. Сохранил сразу в нем фразу (рекурва либ), теперь заебись, можно сразу заходить и печатать, что нужно. Сделай ярлык НА ПАПКУ со своими файлами.
>>1278259 >Можешь открывать пивас Да у меня че-то аллергия в последнее время на темное пиво, пятнами блядь покрылся, придется клюквенную настойку пить. А пиво-то люблю, как наберу всякой хуйни - сухарики, чипсы, орешки, рыбку, пиццу закажу..ммм, а тут блядь настойку придется. Но не сегодня, хотя сегодня предлагал пацану бухнуть, тот че-то в залупу залез. Ну зато здесь разобрался, как и что, это дорогого стоит. НАчинал-то голову ломать месяц назад и только сейчас понял. И то с вашей помощью, сам по себе еще дня 3 потупил бы, да пошел кому-нибудь деньги платить, чтобы разжевали, как долбоебу. >на замочек нажми Я нажимал, оно хуй куда уходило. Сейчас нажал, а оказалось нужно было мышку сдвинуть с программы, тогда эта хуета сворачивается. Короче тоже победил. Спасибо еще раз, без вас бы правда за деньги пошел бы куда-нибудь узнавать, уже правда бесить начинало.
Итак, будем двигаться дальше. Сейчас все функции нужно будет скинуть в тот файл, но некоторые из них еще разобраться, почему работать отказываются, хотя копипастил с учебника и не менял. После разбора функций буду дальше учебник штурмовать, 2 главы осилил, осталось еще 10. А потом, глядишь, на хтдп и сикп переключусь и уже побыстрее пройду, тупо зная команды языка и хоть как-то понимая всю эту логику, а то с нуля начинал, там просто пиздец. Ну вы и сами видите, насколько я интеллектуал, лол.
>А потом, глядишь, на хтдп и сикп переключусь Мне кажется тебе необязательно все 12 глав заканчивать, чтобы хтдп начать проходить. Скинь еще раз ту книжку, которую читаешь, - у меня просто подозрение, что там ближе к концу идет уже описание всяких сложных штук типа макросов, которые логичнее как раз после хтдп (и сикпа) разбирать.
>>1278265 >доска вроде не та Тут каждая доска та, если ты понимаешь, о чем я ;););) ( ° ʖ °)
>>1278271 https://www.scheme.com/tspl4/ Вот эта книжка. не, тему пидоров все-таки не хотелось бы развивать, а то мои посты, в т.ч. оп-пост потрут и пиздец
Ну в принципе да, тебе первые 5 глав надо прочитать. После этого думаю хтдп норм пойдет, и с оставшимися главами можно будет консультироваться по ходу дела в качестве справочника. Ну и еще части про continuations могут быть ОЧЕ мозголомными, лол, их можно для начала пропустить. Хотя даже не, реально прочитать и разобраться нужно с первыми двумя главами, и потом уже хтдп, используя эту книжку как справочник, чтоб если что-то непонятно - взял и посмотрел в ней подробное описание и примеры.
>>1278277 Ну первые 2 я уже осилил. Правда упражнения во второй половине второй главы уже не осиливал. Ну попробую 3 почитать, там посмотрю уже, как и что. Все-таки это уже пятая книга, которую я начал и бросать ее в тот момент, когда она идет вроде бы неплохо, не хотелось бы.
>>1278279 >осилил >Правда упражнения во второй половине второй главы уже не осиливал ))
>бросать ее в тот момент, когда она идет вроде бы неплохо, не хотелось бы. Ну я бы не назвал это "бросанием". Просто это же реально не учебник по программированию, который надо читать последовательно, а справочник по языку (с примерами и объяснениями). То есть она сразу охватывает все возможности языка (третья глава начинается с макросов), которые тебе пока не особо нужны и скорее тебя только запутают. Ну посмотри, но не забывай, что самое важное - это упражнения.
>>1278282 Я так понял, что упражнения не мог осилить, Т.к. толком не мог разобраться, что делают функции. Сейчас они описаны у меня и наверно уже получилось бы их решать. Короче попробую дальше пойти, пока такой план, а там, если что обратно на хтдп перекачусь. В любом случае я иду вперед, стремлюсь, ебу голову, собираю инфу, короче продвигаюсь. Сегодня реально прорыв произошел, т.к. подключил эти ебаные модули. насчет дебила - ну должно же быть в человеке что-то хорошее, вот у меня самооценка здоровая :)
>>1278284 Ну то есть что например вот эти строки значат? (define (sqrt-iter guess x) (if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)))
>>1278285 Ну там в конце второй главы тоже относительно сложные упражнения в принципе. Я бы на твоем месте прорешал или хотя бы просто разобрался в решениях (быть может с помощью джвачика) до упражнения 2.8.7 включительно, и дальше пошел бы уже самостоятельно делать хтдп.
ну вот, а ты говорил, что второго нету, лол
>>1278290 >Объяви функцию "квдртнкрнь" от двух аргументов ("догадка" и "икс"): если наша догадка достаточно-хороша, то ее и вернуть; в противном случае, вызвать квдртнкрнь с новой (улучшенной) догадкой и тем же иксом.
>>1278291 Ну я тогда отредактирую функции, которые работать не хотят, а потом прорешаю 2 главу. не, до его уровня мне далеко. Ну хотя если по ходу его книги те функции расписывались, то может и правда мы с ним одного поля ягоды
>>1278291 Спасибо за объяснение, но объясните ещё плиз: была функция с названием sqrt-iter и формальными аргументами guess, x. Потом в случае неудачи выполняется эта же функция, но уже с аргументами improve, guess, x. Я так понял, что guess меняется на improve, а почему по той же логике x из первой скобки не меняется на guess из второй, получается, замена идёт только для первого аргумента? И зачем в конце x? Извиняюсь за такие нубские вопросы если что.
У меня к Вам небольшой вопрос. Не сочтите его как какую-нибудь агрессию, я Вам правда буду благодарен за ответ. Я занимаюсь разработкой БД, параллельно учусь на четвёртом курсе в тех. вузе. В этом вузе появился предмет, связанный с языком lisp. Я уверен, что смогу сдать этот предмет не прилагая усилий. Например, я могу купить решенные задачки и скатать со шпор на экзамене, но могу подойти с другой стороны, например, осилить эту книжку. В чём, собственно говоря, вопрос? Какие преимущества, связанные с моей будущей карьерой, я смогу получить, если вложу усилия в работу с этой книгой? Может я стану умнее и смогу решать задачки на собеседованиях? Или я смогу ответить на большинство вопросов связанные со структурами данных? Может ли дать эта книга хоть какой-то продуктив?
>Вам >Не сочтите его как какую-нибудь агрессию >буду благодарен
> > наивные вопросы "студента 4-го курса" > > намеренное занижение интеллекта > > подчеркнутое "незнание" темы вопросов > > :
>преимущества, связанные с моей будущей карьерой >Может я стану умнее и смогу решать задачки на собеседованиях >смогу ответить на большинство вопросов связанные со структурами >данных >хоть какой-то продуктив
Если бы ты был студентом 4-го курса, ты бы не задавал такие вопросы, а на большинством из них знал бы ответ. Если все же правда, то советую сменить карьеру.
Ну а это вообще пушка: > появился предмет, связанный с языком lisp > осилить эту книжку Это в каком вузе в 2018 году преподают лисп, да ещё, где требуется читать SICP.
> я могу купить решенные задачки и скатать со шпор на экзамене Как уже написал выше, подумай над тем, чтобы поменять направление в жизни. Спасибо, я кончил.
>>1278713 >Это в каком вузе в 2018 году преподают лисп, да ещё, где требуется читать SICP. У нас на первом и 2ром курсах преподавали в рамках общего знакомства с AI. Но это было конечно 10 лет назад.
>>1278713 >>1278726 Судя по тому как Вы меня полили дерьмом, я могу сделать вывод, что профитов нет. Но все равно, спасибо. шарага мтуси, если кому интересно
>>1278691 Хуй знает, по-моему студенты делятся на тех, кто покупает лабы, и на тех, кто эти лабы продает. Так как ты относишься к первой категории еще и на 4 курсе, никакие лиспы, сикпы, алгоритмы и задачки на собеседованиях тебе не нужны.
>>1278954 Одну секунду. Как я уже писал, у меня на данный момент уже есть работа, с доходом выше чем у тех, кто продает вузовские задачки. И конечно же, я знаю алгоритмы. Просто я хочу тратить свое время рационально, по этому и задаю такие вопросы.
>>1278972 Смотри, условно я получаю удовольствие от миньета проститутки и скуриванием косяка кококо не программист. Если я вложу усилия в эту книгу, какой фитбэк я получу?
>>1278994 Никакого. Но лучше тебе было бы научиться получать удовольствие от таких вещей, потому что иначе ты быстро выдохнешься и станешь несчастным - типа, как бы побыстрее с работы быстрее убежать косяк покурить. SICP это очень философская книжка, и это отличает раба от гражданина.
Если в Racket с помощью 2htdp/image нарисовать 2 идентичных внешне изображения, но разных по структуре (к примеру, на одном ещё расположить пустое изображение), и потом применить к ним "eq?", то результат будет false Есть ли какой-то аналог "eq?", который будет сравнивать изображения не по их структуре, а именно как они выглядят?
>>1279019 по совместительству вопрос, никто не знает, есть какой-нибудь простой способ сделать заливку в изображении? Ну, как в Paint Чтобы через big-bang, к примеру, кликал на квадрат и он менял цвет на нужный (именно квадрат, не заходя за пределы)
>>1278960 Ну анон, тебе как-то яснее выражаться надо. Алсо, я понятия не имею, какой у тебя уровень, чем ты собираешься по жизни заниматься, и вообще ты не предоставил никакой информации для ответа на твой вопрос. Раз ты на 4 курсе и работаешь, то ты наверное уже должен давным-давно знать и алгоритмы, и структуры данных, и задачки на собеседованиях уметь решать? Если нет - то непонятно, чем ты все это время занимался, см. предыдущий пост про покупающих студентов (но опять же, ты вроде говоришь, что ты не такой). Книжка-то вообще-то для первокурсников (ладно, очень сообразительных первокурсников). Подавляющее большинство отзывов о ней от уже опытных разработчиков, читавших ее далеко не на заре карьеры, - да, интересно и полезно, стал более лучше одеваться писать код. С другой стороны, раз ты БД делаешь, то ты байтоеб - может тебе это и не нужно и не интересно, может ты вообще потом в ебмеддед хочешь. А может и нужно и интересно - я не знаю, а ты не говоришь. В любом случае, ты ведь можешь прочитать оглавление и сам сделать какие-то выводы, не?
>>1279019 Напиши сам. Переведи в битмап, сравни попиксельно.
>>1279022 Гугли алгоритмы поиска пути, например. Для квадрата тебе достаточно просто идти во все стороны от данной точки и перекрашивать пиксель, пока он того же цвета, что и изначальная точка.
>>1279081 с квадратом всё понятно, мне нужен универсальный вариант
а как сравнить попиксельно? то есть, как выделить определённый пиксель изображения? я хочу сделать таким образом: допустим кликаю внутри квадрата, незакрашенного там, к примеру, белый цвет внутри дальше от каждого пикселя всего изображения поочерёдно рисую линию белого цвета до того пикселя, на который кликнул, если старое и новое изображение равны, значит преграды в виде другого цвета, в данном случае грани квадрата, нет, и можно заменить пиксель на нужный цвет и так со всеми пикселями
>>1279079 Послушай, формулировка как нужно для кого-то не совсем верная. Я сам не знаю, что меня ударит в голову и кем я захочу стать. Я хочу понять, зачем она нужна вообще?
>>1279081 и что ты имел ввиду под "переведи в битмап", зачем? я сохраняю в bmp, открываю в bmp, всё равно изображение тоже (в структурном плане, внешне понятно, что тоже самое)
>>1279090 Эта книга лучшее что может быть из Introduction to Computer Science, она дает фундаментальные знания с точки зрения архитектора систем, а не просто потребителя фреймворков; она - это начало пути, который займет годы, а не этап, после которого можно говорить о каких-то конкретных результатах.
>>1279115 Другими словами - если ты хочешь быть виртуозо в программировании, то эта книга обязательна в твоей толстой библиотеке судя по всему нет, и это твой выбор. Если тебе нужно рубить бабло - ищи способы рубить бало.
>>1279086 >мне нужен универсальный вариант Ну я ж говорю, в общем случае - гугли поиск пути, это практически то же самое. У тебя ведь есть точка и некая область вокруг нее того же цвета, а все пиксели другого цвета - это как бы "стены", и тебе нужно найти все точки в изображении, в которые есть путь из начальной точки. Смекаешь?
>рисую линию белого цвета до того пикселя, на который кликнул А с чего ты взял, что у тебя по прямой путь должен быть путь до твоего пикселя? Смотри, представь у тебя белое изображение, и посередине черная горизонтальная полоска почти на всю ширину (но не до конца, по бокам проход остается). С твоим алгоритмом если кликнуть в нижней части и потом взять пиксель в правой части и провести между ними прямую линию, она наткнетяс на черную полоску, и ты ничего не закрасишь. А на самом деле тебе надо закрасить все изображение. Хинт: ты описал алгоритм освещения (рэйкастинг), в 2д играх часто такой используют для отрисовки области видимости персонажа: пускаем из персонажа прямые линии во все стороны и рисуем сцену там, где эти линии не пересекаются со стенками. Смотри: https://srdja.github.io/raycaster-demo/ (на кложе)
>>1279090 >Я хочу понять, зачем она нужна вообще? Ну это хорошее введение в алгоритмы, дизайн программ, функциональное программирование и компьютер сайенс. Там много неплохих упражнений (уровня задачек на сообразительность с собеседований), плюс тебя систематически обучают именно дизайну алгоритмов и программ, плюс тебе рассказывают, как работают сами языки программирования (какие есть модели вычислений, какие есть распространенные оптимизации, как написать интерпретатор\компилятор, и т.п.)
То есть это введение в программирование и дизайн программ, где в качестве предметной области сами программы, как-то так. Не уверен правда, что это понятное объяснение, кек
Есть вариант сделать так, чтобы всё не шло пиздой при больших рисунках? Чем проще делаю код, как-то хитрю, тем более большие рисунки обрабатывает моя заливка Но всё равно есть предел, при котором "Interactions disabled"
>>1280212 Конечно есть, попробуй помолиться ктулху, есть еще вариант приложить подорожник к монитору. Телепаты ушли настойку пить, твой код не видно как бы
>>1280311 Нахуя ты все в лямбду обернул? Что за ебанутые имена с миксом из заглавных и нормальных букв? Нормально оформить код аллах запрещает, хотя бы пустые строки между дефайнами поставить? Что вот это за пиздец:
>>1280924 у меня там функция в этом коде, которая любой элемент возвращает, нахуй мне твои cadr, долбоёбище если мне так удобнее, значит мне так удобнее а твоё ебаное мнение я не спрашивал
>>1281131 >если мне так удобнее, значит мне так удобнее Анон, если ты устроишься на работу, накодишь первый таск, а потом на код-ревью в ответ на справедливые претензии лида, что у тебя ебаный говнокод, в котором не разобраться, скажешь "если мне так удобнее, значит мне так удобнее, пошел нахуй", то тебя скорее всего уволят. Рефактори свой код, там совершенная лапша. Алсо, тормозит у тебя скорее всего из-за того, что ты налево и направо используешь reverse, и в коде наверняка куча мест с квадратичной сложностью - но, как я уже сказал, никто в таком адовом говне разбираться не будет, как минимум оформи код по правилам и убери эти наркоманские цепочки (car (car (car (cdr x...
>>1281132 >Cut и UnCut В scheme используется kebab-case, а не CamelCase.
>>1281142 я разобрался с той проблемой лимит памяти маленький был очень ну а за reverse спасибо, буду стараться меньше его юзать про то, что код говно, я знаю я же не на заказ пишу, а для себя
>>1281143 > деструктуринг В схемке разве есть? SICP дорешал почти до конца последнее упражнение осталось, про деструктуринг в нём вроде ничего не было. Гуглинг выдаёт только CL-евский loop.
>>1281154 Лол, два чаю этому. За деньги наебошу любую парашу, лишь бы заработало, а пет-проекты вылизываю, как кот яйца.
Какая-то странная в книге заготовка решения задачи о восьми ферзях (2.42). Они зачем-то сначала добавляют очередную вертикаль ко всем существующим расстановкам ферзей и затем проходят по ним всем, чтобы отфильтровать не правильные. Мой вариант решения сразу идет по списку текущих расстановок и пытается к каждой из них добавить очередную позицию.
Вечер в хату, лол. Решил чутка разбавить ваши обсуждения дебильным вопросом. В прошлый раз мне помогали модули подключить. Успешно создали два файла и пр. Теперь я решил расширить библиотеку и в файл lib.rkt докинул другие функции, а то изначально у меня там только square была. Докинул, сохранил, а в рабочем файле только square работает, а остальное нихуя не определяет. Может во второй файл нужно что-то дописать?
>>1281960 Да, есть гейзер, и по-моему есть еще какая-то более новая штука, которая эмулирует слайм (но гейзера в принципе достаточно для написал-запустил).
>Измените apply-generic так, чтобы она не пыталась применить приведение, если у обоих аргументов один и тот же тип.
Но зачем? Если оба типа приводимы к другому - мы успешно отработаем. Если такого приведения нет или операция не определена для приводимых типов тоже - будем ошибка. Это же нормальное поведение, нет?
Оп продолжает ебсти голову. Есть функция, которая меняет местами аргументы. В ебанутом учебнике она написана как-то так. Но дальше по тексту там откровенная дичь, мол программа не будет ругаться и нормально сработает до того, как мы определили proc2, хотя по тексту касаемо proc2 там инфы нихуя и нет. Суть вопроса - как подкорректировать программу proc1, чтобы она просто адекватно меняла местами аргументы?
>>1282507 у тебя всё и так правильно типо если ты подставляешь в proc2, к примеру пусть она будет такая (define (proc2 a b) (+ (* a 2) (- b 2))) подставляешь короче, например (proc2 5 10) то возвращается определённый результат а через proc1 ты меняешь местами аргументы прежде, чем подставить их в proc2 (proc1 10 5) она вызовет (proc2 5 10) всё
>>1282509 Спасибо, я понял. Ну а если я просто хочу местами поменять два аргумента? Ну блядь пришло у меня с какой-то функции Х У, а я хочу, чтобы дальше пошло У Х, как бы мне описать? Просто то, что ты пишешь, для меня пока сложновато, мне бы с чем-то более простым пока разобраться. Грубо говоря от того, что ты написал, я какой-то пользы не вижу, в смысле не представляю задачу, которая мне будет поставлена и это все пригодится.
А, в учебнике точно, есть. В глаза я проебался. ИЗвиняюсь. Просто я переписывал каждую функцию и описания для proc2 не нашел, потому ее не описал и получилось, что ее нет. А оказалось, что они вместе с proc1 работают и друг без друга не существуют. Короче вопрос с повестки дня снимается. Спасибо.
>>1282514 cons - это для списков и пар (cons 1 '()) - список с элементом 1 (cons 1 (cons 2 '())) - список с элементами 1 и 2 (cons 1 2) - пара с 1 и 2 и всё такое типо у тебя просто вместо cons сделали ему другое название вдобавок к старому - proc2
Вот и разберись, блядь, без стакана, че там происходит и что они сказать хотели. И больше нихуя нет по этим функциям, по крайней мере до конца второй главы.
>>1282516 Хорошо, спасибо, попробую это как-то переварить и описать в своем документе. Но наркомания однозначная, как я считаю. Там пикча выше, это описания proc1 и proc2, все блядЬ. больше ничего сказано не было.
>>1271806 (OP) Аноны, хочу прорешать книгу, но без ебли со схемой. Можно ли для этих заданий использовать например js? Или задания специально заточены под схему?
>>1282517 Ты можешь описать proc1 не имея proc2 в области видимости - это не будет ошибкой, но ты не можешь вызывать proc1 если у тебя не задан proc2. Введи код с картинки в той же последовательности - все будет работать пока ты не уберешь 4 строку.
Можешь, в принципе, на любом языке решать сикп, но тут есть нюанс: схема дает тебе определенный уровень абстракции, уже поддерживаемый языком (функции, как объекты первого порядка, S-expression, динамическая типизация и т.п.), эти абстракции используются, как строительные блоки. Если в выбранном тобой языке их не будет, тебе придется реализовать их самому, или как-то изъебываться иначе. Поэтому, зависит от того, какой у тебя опыт программирования вообще и опыт на языке, которым ты хочешь решать сикп, в частности. Конкретно с JS, вроде, особых проблем быть не должно, даже если ты новичок в нем. Но вот если бы ты захотел решать сикп на Си, возникла бы куча лишних сложностей.
>>1282552 >>1282594 Спасибо что ответили! Мельком читал тред и в принципе задачки не особо сложные. Против схемы ничего не имею, просто готовлюсь на вакансию жс джуниора и хотел бы набить руку именно на жс. Еще меня пугает, что охуею разбираться со схемой, про которую до этого треда вообще не слышал.
>>1282517 Тут написано, что ты можешь определить proc1 до того, как определена proc2. То есть ты можешь определять свои функции в любом порядке. Если g использует f, то необязательно определять сперва f, а потом g. Можно и наоборот, если тебе кажется, что так другим людям потом проще будет читать твой код. Хотя тебе лучше этим не злоупотреблять, определяй всегда все в том порядке, в котором оно используется. Кроме того, это позволяет тебе определять взаимно-рекурсивные функции. Вот представь, что у тебя есть какой-то очень хитрый алгоритм, в котором proc1 вызывает proc2, а proc2 в свою очередь вызывает proc1. То есть они обе друг друга вызывают, получается как бы кольцевая зависимость (уроборос эдакий). И вот то, что описано у тебя на пикрелейтед, как раз и позволяет такие функции\алгоритмы определять. А если бы схемка требовала, чтобы все используемые символы и функции были определены через define до того, как они используются, то такой алгоритм ты бы написать не смог в принципе. Смекаешь?
>>1282625 >охуею разбираться со схемой Если ты знаком с жс, то тебе часа два понадобится, чтобы разобраться со схемой на уровне, достаточно для сикпа. Блядь, да какие два часа?
f(x, y, z) -> (f x y z) function(x, y) { return f(x, y) } -> (lambda (x y) (f x y)) var x = 42; -> (define x 42)
>>1282719 Ну в жс как бы тоже префиксная: ты же пишешь f(x,y), а не x f y. Тут просто все униформно и нет никаких исключений для арифметики и прочей хуйни, все эти плюсы-минусы-умножения - это обычные функции. Так что арифметика записывается в префиксной нотации, да хотя одно из первых упражнений на работу с макросами - это как раз добавить инфиксную арифметику в язык, кек. Ну то есть сделать это легко, просто никому нахуй ненужно.
Ну почему упражнения 2.49-2.52 такая боль ебаная, почему в современном издании не добавлены пояснения, какие библиотеки подлючать. Например, у меня все работает, кроме сраного draw-line. В итоге из 3-х часов, которые у меня занял раздел Picture language, 2 часа ушло на танцы с бубном вокруг библиотек и костылей для segments->painter.
Двачую, бро. К сожалению, дальше там не лучше - десятка два упражнений в конце 2-й главы построены вокруг двух функций (put и get), которые не определяются и без них проверять решения очень неудобно или вообще невозможно. Хз зачем так делать, это пока единственный для меня минус книги.
Но я не знаю, как их описать. Они должны работать с неким глобальным пространством имен. В книге на момент конца второй главы, ничего не говорится о том, как реализовать нечто подобное.
Оп опять возвращается. Не могу понять, что делают функции. Вроде внутрянка-то несложная, а что-то не так.
(define count (let ([next 0]) (lambda () (let ([v next]) (set! next (+ next 1)) v))))
Там еще с описанием залупа какая-то непонятная. Максимум, что смог вытащить из книги, что это какой-то счетчик. Скажите по русски, что он делает и как вводить переменные, чтобы проверить, работает ли. Есть подозрение, что считает, сколько раз значение возвращалось, но это не точно.
Пикрилейтед функция. Во-первых я так и не понял, что она делает, Вообще блядь не понял. Во-вторых копипастил из учебника в ракету функцию - не работает, копипастил красный шрифт в яндекс-переводчик, тоже ёбань какую-то выдает и не понятно, что не понравилось.
>>1283091 Ну попробуй открыть другие главы и через поиск на странице поискать эти два ебаных слова, может дальше будут. Я в своем учебнике порыл, нихуя не нашел, может чисто сикповская функция, составленная авторами книги, я хуй знает.
Да не в этом дело. Они определяются в 3-й главе. Даже если бы не определялись вообще, естественно, я бы нагуглил, как их реализовать. Претензия именно в странном подходе - давать упражнения и скрывать часть информации, которая нужна для их выполнения.
Вот как-то так, через жопу, все и проходит. Нарыл этот учебник, который в принципе хорошо пошел. Потом уперся с подключением модулей, выебал блядь всю голову - месяц к этому не подходил. Подключили модули, спасибо анонам, начались проблемы с функциями, упрешься блядь опять в какое-то говно, пару дней не подходишь. Надеюсь на то, что сейчас эти две функции разберем, потом еще пару функций нужно будет, но там есть пару мыслей и думаю сам разберусь. Потом проверить работу тех функций, которые ошибки не выдавали, нормально ли они работают. И только потом, наконец-то, идти дальше.
>>1283103 Чем-то слоника сейчас напомнил, лол. Но там вообще ебаная наркомания, от которой я обблевался. Сикп начинал в самом начале читать, тяжелая книга и даже дело не в том, чтобы я тупой и с нуля, с дуру, начал ее читать. Были моменты, типа одна из функций шмонает список выражений, пока не встретит отличный от #t и выводит #f, в противном случае выводит значение последнего выражения. Вот блядь можно было расписать, что функция сама по себе обязана вывести какое-то значение и если из большого списка все истинны, то выводит значение последнего, т.к. какое-то значение все-таки должно быть. Это логика, блядь, которую можно понять и очень легко запомнить. А у них в той фразе нет логики, а тупое наставление, которое нужно зазубрить. ЭТо сейчас мне очевидно и хуй с ним, подобную фразу я смогу понять, но с нуля это невозможно, как я думаю.
И сразу, в догонку, где взять ебаные описания для выражений set-car! и set-cdr! ? По логике вводим список списков, а выводит в первом случае список из первых элементов, а во втором список хвостов списков. Только блядь у меня две ебаные функции на них упираются, а описания нет нихуя. Пошмонал 2 и 3 главы, нихуя нет.
>>1283095 >Не могу понять, что делают функции. Ну так прочитай по частям. Смотри, ты определяешь count. Это функция, потому что у тебя там лямбда возвращается, так? Но вокруг этой лямбды есть еще let. И внутри лямбды тоже есть let, так? Разберись сперва, что происходит внутри лямбды. Ты сохраняешь текущее значение next в переменную v, потом увеличиваешь next на единицу, и возвращаешь v. То есть ты возвращаешь текущее значение next, а потом увеличиваешь next на единицу. Так? Вот смотри, а теперь вся суть: фишка в том, что твой next определен вне лямбды, точнее вокруг нее. То есть это как бы глобальная переменная (как если бы ты ее через define определил), состояние в ней сохраняется между вызовами функции. Попробуй прямо переписать код с (define next 0), и проверь, что все работает так же. То есть count - это функция, которая увеличивает глобальный счетчик. При каждом вызове она возвращает текущее значение счетчика и увеличивает его на единицу. НО из-за того, что в коде next определен не через define, а через let, ты никак не можешь его изменить, кроме как через вызов count. Если бы next был определен через define, ты бы еще в какой-нибудь другой функции мог написать (set! next 42), например, или просто в репле изменить его значение, потому что это глобальная переменная. А когда ты определяешь его через let (вокруг лямбды), ты никак не можешь его изменить, кроме как через вызов этой самой лямбды. То есть у тебя получается уже не глобальное (которое можно изменять хоть откуда), а локальное состояние, и четкий интерфейс, через который с ним можно взаимодействовать (только через твою функцию и никак иначе). Это называется инкапсуляция.
>>1283105 >И только потом, наконец-то, идти дальше. Ну, тебе уже на хтдп пора переключаться, если ты первые две главы прошел. Дальше ты там тупо не поймешь ничего, ибо это справочник (с коротким туториалом в первых главах), а не учебник.
>>1283461 Ну вот смотри, у меня есть две функции. Эта добавляет элемент в конце очереди - хуй знает, что имели в виду в учебнике, но описание такое. (define putq! (lambda (q v) (let ([end (cons 'ignored '())]) (set-car! (cdr q) v) (set-cdr! (cdr q) end) (set-cdr! q end))))
Вторая функция удаляет первый элемент. ТАк понял, что есть список списков, он берет первый список и возвращает cdr его. И описание сет-кар
Ладно, давай так. Мне может на эти две функции хуй положить и на set-car!, set-cdr! вместе с ними?
Сейчас я выписал функции, которые были в первых двух главах. Стремлюсь к тому, чтобы они нормально работали и чтобы идти дальше, вот и туплю, Блядь. Третью главу не открывал еще, но если там правда тупой справочник дальше по книге будет - смысл в ней и правда сомнительный.
>>1283515 Ну перепиши эти функции без set-car!, используя просто set! и обычные операции над списками. После этого переходи на хтдп, держа под рукой эту книжку в качестве справочника. Ты предыдущие задачи из первой+второй главы прорешал же?
>>1283582 Я из первой все прорешал, из второй половину. Но это было месяца 2 назад. Вот думал добить эти функции, да перерешать вторую главу. Еще надо будет переосмыслить и осилить вот это -> >>1283452 Сейчас краем глаза в итт сижу, пока некогда.
Короче вариантов два: настраивал игру и отключил журнал событий винды; лисаблядь обновлялась. Сейчас журнал обратно включил, если галка не появится, значит виной ебаное обновление. уже протрезвел, но еще спать не ложился, лол
>>1284388 >>1271806 (OP) Я скачал IDE по ссылке с оп поста. Установил. Но судя по всему нужно настроить его, даже оп пост на это намекает. >есть и поддержка Scheme, но её нужно включить Поэтому и спрашиваю тут >>1284282 > Аноны, подскажите что там нужно поменять в настройках DrRacket чтобы схема запускалась?
Итак, оп опять вкатывается. галка ОР поди опять не поставится, по ходу виной обновление лисабляди Решил перерешать все задания 2 главы. Столкнулся с проблемой, сразу оговорюсь, было чувство, что эту хуйню уже приносил, но прошмонал предыдущий итт - не нашел. Есть функция length, которая считает количество аргументов, т.е. length (a b c) выводит цифру 3. Дали задание определить функцию shorter, с помощью функции length, которая принимает два списка и выводит меньший из них; если списки одинаковы по количеству аргументов, выводит первый. Собственно, пикрилейтед. Нихуя не понял, почему работает криво, ткните тупым ебалом, что там не так. Да, в ответах посмотрел, там решение через if - мол если больше, то одно значение, во всех остальных другое. Так намного проще, базара ноль. Просто интересно, почему мое определение работает через жопу. Причем первые два вычислило не правильно, а третье правильно. Сейчас сообразил, что можно было в две строки написать, просто в одной из них сразу поставить меньше или равно.
>>1285185 Там вроде разные скобки-то используются тупо для наглядности, не более. И поймал себя на мысли, что он всегда именно Y возвращал. Может просто cond не может возвращать какое-то значение, а его роль возвращать #t/#f, поэтому такая хуйня вышла?
>>1285270 как можно быть настолько тупым? ну это прям пиздец у тебя скобок не хватает блять у тебя условие езде > = < а не (> (length x) (length y)) и т.д. поэтому > ~ #t и выполняется всегда возврат y
>>1285270 ты на вряд ли настолько тупой, скорее всего тебе не хватает концентрации, внимания и всего такого сходи что ли к врачу, может что пропишет без обид, ничего личного
>>1285286 Да, дело правда было в скобках, спасибо. >>1285295 Я плюю на несколько дней, потом с головой ухожу, многое забываю за эти дни. Плюю, т.к. бывает упрусь в такую залупу, что все желание нахуй пропадает; другой вариант - просто некогда погромированием заниматься. Я в принципе задачи в последний раз решал месяца 1.5 назад, до того, как с модулями начал голову ебсти. Позабылось по ходу. Ну ничего, надеюсь без таблеток все-таки обойдется, лол. хочешь, чтобы меня опять положили? не-не, к докторам не пойду
Нид хелп. Мне нужно сделать аналог функции bytes<? Берем два байтстринга и проверяем в лексиграфическом они порядке или нет.
Хочется сделать это поптимально, по памяти и времени, чтобы быстро оче.
пришел к такому варианту - пик. Но не уверен относительно того, как будет выделятся память в let выражении. Не высрет ли оно это в кучу вместо стека? Не вызовет ли лишнею манипуляцию со стеком?
А если я буду вначале a-val и b-val объявлять а потом делать set! не вызовет ли это каких-то странных побочных эффектов?
Оп на связь выходит. Короче вторую главу по возможности прорешал - последние 10 заданий не осилил, да и тут писали, что они уже сложные. Пошмонал учебник дальше, правда там разбор функций идет, а именно обучения нет. ВОЗВРАЩАЕМСЯ НА ХТДП, ЕБАНЫЙ В РОТ Добро пожаловать, снова, лол. Поглядим, что на этот раз выйдет.
Ньюфаг тред привел сюда. Два вопроса. Можно ли на вашем языке и удобно ли будет сделать две игры - одну типо цивилизации, а другую - визуальную новеллу?
>>1285757 SICP это троллинг ньюфагов типа боку но пико в анимаче. Возьми гейммейкер лучше (на нем целый андертейл сделан), и начни с визуальной новеллы. Цивилизацию ты не потянешь.
>>1285757 >из депрессии хочу выйти, врач посоветовал заняться программированием Лол, это еще более крутой троллинг. Я как хуями в монитор ложил, когда не получалось, так ну его нахуй. ЧЕТЫРЕ ЕБАНЫЕ КНИГИ БРОСАЛ прежде чем нашел ту, которая более-менее пошла. оп
>>1284397 Racket (язык, который там по умолчанию) - это разновидность scheme. Ну типа как жаваскрип и es6. То есть тебе необязательно даже выбирать специальный язык для сикпа, там в любом случае отличия будут минимальные, типа какая-то функция по-другому названа или еще в таком стиле.
>>1284610 Не просто честно, а так и нужно делать. И еще давать им понятные дескриптивные имена. За функции, которые не вмещаются на один экран, следует сжигать заживо. А большинство функций должны быть 5-10 строчек в высоту.
>>1285707 >Не высрет ли оно это в кучу вместо стека? >Не вызовет ли лишнею манипуляцию со стеком? Анон, ты не на си пишешь. Я сходу не помню, но мне кажется, что стандарт не дает вообще никаких гарантий по поводу того, где размещаются объекты, и оставляет все это на усмотрение компилятора. Считай, что у тебя все boxed, короче. Если хочешь ебаться в байты, бери chicken scheme - оно генерит си-код, можешь потом сам открыть и посмотреть, куда оно аллоцирует, кек.
По факту, у тебя твои a\b-val будут просто поинтерами в кучу на стеке, инфа 99%.
Кстати, у тебя для двух пустых строк возвращает #f, хотя они в лексикографическом порядке, не?
>вначале a-val и b-val объявлять а потом делать set! Говнокод же.
>>1285722 Нормас. Не забывай весь код, который ты там видишь, пробовать в репле, ну и упражнения все решать. Алсо, кидай свои решения на гитхаб\пастебин, типа отчеты о прогрессе ну и хуями тебе покладут заодно если код хуевый, кек
>>1285741 Лучше поиграй в spacechem или factorio. Для визуальной новеллы нужно рисовать, программирование тут не при чем.
>>1285894 >Кстати, у тебя для двух пустых строк возвращает #f, хотя они в лексикографическом порядке, не? Не, если строки равны должно возвращать фулсе. В самой ракетке есть 3 операции bytes<? bytes<? bytes=?
Но для пустых таки все 3 должны фулсе вернуть. Если по логике, но ракетка таки для (bytes=? #"" #"") выдает #t Это может логично если рассматривать строки как строки, элемент текста. Но у нас же программные строки, да и не строки, и массивы байт, пустой массив байт как бы особый объект должен быть, сравнивать то мы хотим содержимое, а если содержимого нет, так и сравнивать нечего.
>Анон, ты не на си пишешь. Да, но...
>Считай, что у тебя все boxed, короче. Ну нафиг.
>По факту, у тебя твои a\b-val будут просто поинтерами в кучу на стеке, инфа 99%. Поинтерами не хотелось бы, хотелось бы чтобы просто в калл стеке.
>Говнокод же. Прости меня, мама, хорошего борщехлеба. Не понимаю, как можно кодить практично, и чтобы не было лютого дерьмокода. Как начнешь эксепшоны ловить - всё, код поехавшим становится.
>>1285915 >Не, если строки равны должно возвращать фулсе. А, тьфу, не меньше-или-равно же, а просто меньше, ты прав.
>Поинтерами не хотелось бы, В смысле? Твой байтстринг в любом случае будет в куче лежать, если только компилятор не заинлайнит все что ни попадя. Опять же, я не знаю деталей реализации ракетки, но даже если бы и знал, думать о таких вещах в высокоуровневом коде не совсем правильно. Если хочешь контролировать каждый байт, пиши на расте, тут это просто splitting hairs получается.
>Как начнешь эксепшоны ловить М О Н А Д Ы М О Н А Д Ы
Оп выходит на связь. Начал читать хтдп, в принципе сейчас я в том месте, с какого бросил в прошлый раз. Так-то продвигается и вполне осознанно, даже на 100% осознаю, что пишут, как это все работает и пр. По сути это только начало, но, в то же время, в прошлый раз это было осознанно процентов на 50, а потом вообще бросил, но сейчас иду вперед. Небольшой вопрос возник про функцию image-width. Собственно расшифровка пикрилейтед и больше нихуя не сказано. Вот для себя в текстовом документе я написал такое описание
image-width – принимает изображение (ширину, цвет и пр), а возвращает только ширину одним числом. если ввести несколько изображений, он складывает ширину всех и выводит общую одним числом. если внутри него overlay(несколько наложенных друг на друга), выводит бОльшую ширину, но не складывает, т.к. изображение-то одно
Просто это домыслы, что-ли, которые пришли в голову, глядя на примеры. Там именно текста с объяснением нет. Я все правильно описал?
И самый прикол в том, что я книжку-то дропнул, осилив только третью часть пролога, ебаный в рот. Но тут подача тоже такая, своеобразная. Сразу хуярят пример, в нем 3 функции, ни одну из них я не знаю и сложновато было. После бросания этой книги, я слоняру ебаного вроде бы на треть прошел, потом две главы учебника другого прорешал и вернулся. Причем тот учебник действительно понравился, там полноценное объяснение функций, как они работают, примеры нормальные, потом сразу же задачи есть. Короче огромный лойс тому учебнику, он очень многое дал. А теперь и хтдп (по крайней мере пролог) идет вполне нормально. оп
>>1286506 >если ввести несколько изображений, он складывает ширину всех и выводит общую одним числом. Чо? (imagewidth i) возвращает ширину изображения i, в пикселях. Все.
Каким именно образом ты это изображение получишь - это вообще нерелейтед, ее это не ебет. Она просто возвращает ширину и все, как и написано на твоем пике.
>Просто это домыслы, что-ли, которые пришли в голову, глядя на примеры. Ну так ты не просто гляди на примеры, а открой дррэкет да поэкспериментируй.
>>1286550 Понял, спасибо. Там про сложение я функцию beside че-то мимо глаз пропустил, а она-то в ширину изображения слепляет и получилось, мол сложение. Хорошо, понял все.
Оп на связи. Продолжаю воевать с прологом htdp. Дали задание посадить ракету на бетонный блок, который находится на 10 пикселей от края. Вчера весь вечер ебался и сегодня часа 2 убил, чтобы все-таки сделать, как надо. Понял, что все было проще, чем я думал, но все-таки сделал. Заебись, успех.
Оп рапортует. Пролог успешно осилил, все заебись. Начал 1 часть штурмовать, все хорошо, расписываю какие-то функции. Вопрос возник: что делает функция (numerator x) ? Переводчик говорит "вычисляет числитель рационального". Поначалу подумал, что числитель дроби возвращает, методом тыка понял, что это не так. 34/443262 он возвращает 17 почему-то. а 34/443263 возвращает 34
>>1289053 Числитель выводит, очевидно 34/443262 это 0.00007670407, что эквивалентно 17/221631 Нахуй тебе сикп, читай лучше школьный учебник по арифметике
>>1289063 Короче если можно сократить числитель и знаменатель, он их сокращает и выводит числитель. А если они не сокращаются, он просто выводит числитель. Так? Дело не в арифметике, а в попытке понять логику, методом тыка не удалось, вот сюда и принес. Насчет сикпа - я хтдп читаю, лол.
Тупой хочет стать программистом.Аноним03/11/18 Суб 19:41:28#310№1289365
Здраствуйте, аноны. Я очень тупой человек, который не знает простейшие элементы математики, которые люди проходят в 5-9 классах в школе, но хочу попробовать себя в программировании. Так же прочитал где-то, что для программирования ещё важна физика, чего я раньше не слышал, физику я тоже не знаю от слова совсем. Возможно ли с такими знаниями суметь в кодинг? Пока что почитываю SICP.
>>1271806 (OP) Аноны, помогите понять смысл решения задачи про монетки. Я не прошу объяснять мне код, он простой. Мне скорее интересна логика почему >the number of ways to change amount a using all but the first kind of coin, плюс > the number of ways to change amount a - d using all n kinds of coins, where d is the denomination of the first kind of coin Заранее извините если с разметкой намудрил
>>1290491 Спасибо, хорошее объяснение. Итеративные решения к некоторым заданиям довольно сложно подобрать. Даже с 1.11 где все довольно просто и то пришлось рисовать на листке прежде чем понял. А для того же count-change пока не получается, так что оставлю его на потом, через какое то время вернусь и появятся идеи.
Работаю джава-программистом уже 5 лет, сразу после универа устроился. Мидл, зп 130к в Питере. Скачал сикп и не осилил первую главу. Почитал тред и увидел, как все пишут, мол, это книга для студентов. Улетел на жопной тяге на орбиту. Вы меня затроллили, молодцы.
ОП рапортует. Короче читаю хтдп, первую главу прошел на 40%, энтузиазм закончился. В принципе все получается и идет нормально, но заебался я что-то. Возьму перерыв неделю-две, как получится, может месяц. Потом дальше пойду.
>>1295196 Да, по объему если посчитать, то это я за 2 недели столько изучил. Если провести какую-то параллель, грубо говоря к апрелю я должен книгу добить. Есть мысли, что дальше сложнее и медленнее, но корректировку на этот случай я сделал. Короче поглядим.
>>1295196 ОП, так как ты обе книги читал и решал, скажи в чем принципиальная разница между ними? То что одна "легкая" а вторая "сложная" это я знаю, но чем-то еще они отличаются? Пока решаю 3 главу сиспа, впечатление довольно двоякое. Не сказал бы что сложно, но заебывает.
>>1295203 Я сикп начал читать и решать, в результате бросил, т.к. не пошло. Потом хтдп начал решать, тоже не пошло и бросил. Дальше было пару книг, которые более-менее пошли, теперь на хтдп вернулся и все-таки пошло, блядь. Мне сложно судить, т.к. я их не прорешал же. Ну и да, для себя вывел, что одна сложнее другой, причем намного сложнее. А больше мне сказать нечего, извиняй.
>>1295207 Я хочу стать программистом. Отзывы в интернете говорят о том, что язык-схема хорош для начинающего. Плюс хтдп охуенная книжка, чтобы понять логику программирования. Она же на том же языке и написана. Плюс сикп одна из лучших книг, которая делает код охуенно чистым и пр., опять же сикп на том же языке программирования. А на любой другой язык можно переучиться за 3 месяца. Вот и думаю по такому пути пройти - изучить эти две книги, потом изучить вакансии, выбрать язык, выучить его и идти на работку. Хотя есть мысли, что сикп может не потяну или будет много сложных задач, на которые просто время будет жалко тратить. Даже сейчас в хтдп сталкивался с задачами, которые я прекрасно понимаю, как сделать, но просто время тратить не хотел, путь даже это были бы сраные 5 минут. Хотя таких задач было мало, и 90% я все-таки прорешивал.
>>1295208 >схема хорош для начинающего С самого начала задаюсь вопросом, зачем автор выбрал схему? Почему не хаскель, на котором даже сайты можно писать, а также графические интерфейсы и многое другое?
>>1295212 Хуй его знает, нам-то, простым смертным, остается только гадать. Ну еще так можно сказать, автор-то явно свое дело знает куда лучше, чем мы с тобой. Ему виднее, наверное.
>>1296772 >>1271806 (OP) На самом деле сисп переоценен. Хз зачем его тут форсят, но если хотите подтянуть уровень читайте Кормена. Он объясняет всё на псевдокоде, который очень легко перенести на питон, жаву, жаваскрипт и почти любой другой яп. Сисп не плохая книга, но он устарел лет так на 30. В 2к18 есть гораздо лучше, современнее и актуальнее. Хотя борщехлебам без разницы что учить, хоть сисп на схеме 70 годов прошлого века, хоть хаскель где даже с опытом фп хуй найдешь работу.
>>1297679 Кормен - это книга про алгоритмы, а Сикп – про некоторые идеи, которые стоят за компьютерными программами вообще. Как одно может заменить другое? Если есть задача освоить популярный ЯП, нужно брать книжку по этому ЯП.
>>1299110 Двачую этого, нахуй луа вообще нужна? Скриптики всякие на змее заходят, по скоростям луа тоже сосать не даёт, плюс какие-то ебанутые загоны типа индексации массивов с единицы.
>>1300952 1) "Text" 2) (require 2htdp/image) (text "Text" 18 "black") 3) (require 2htdp/image) (text/font ... (подробнее ищи на официальном сайте языка)) 4) и т.д. --- (define (f x) (list (+ x 5) (+ x 10))) То есть либо через список, либо через структуру (define-struct a (b c))
(define (f x) (make-a (+ x 5) (+ x 10)))
Ну и по идее различные более изощрённые варианты, к примеру, запихать их в строку и вывести как текст, смотря что тебе нужно Возвращать у тебя функция всегда 1 параметр будет
Я обычно пропускаю, если сильно долго не могу сообразить и иду дальше. Потом просто время от времени возвращаюсь. Ответы на нерешенные задачи смотрел очень редко, что-то из первой главы, где нужна была математика, не помню уже точно.
>>1297679 >Сисп не плохая книга, но он устарел лет так на 30. Это книга про программирование вообще. Такое никогда не устаревает. Два чудика, начитавшись СИКПа, изобрели язык R.
Дошел до реализации дека. Че-то мой энтузиазм по поводу лиспа поугас. Дек - элементарная вещь, которая реализуется обычным двусвязным списком на си за 10 минут. Тут я уже 2 часа сижу, рисую долбаные стрелочные диаграммы и пытаюсь понять, как же сделать дек с O(1) вставкой/извлечением с обоих концов на этих car и cdr. С введением присваивания лисп мигом утратил свое очарование и стало видно, насколько он не пригоден для программирования в императивном стиле. Хотя я пока не проникся или чего-то не понял.
>>1307832 На Лиспе тоже элементарно, просто нудно. Если тебе это сложно, то ты еще чего-то не понимаешь. Но это все баловство. Настоящий дек на массивe делается.
Видимо, вчера я слишком поздно сел за сикп и голова уже не варила. Сегодня дек никаких проблем не вызвал. Реализация не совсем красивая - в идеале надо выделить двусвязный список как полностью самостоятельный объект, создавать его в deque и хранить дополнительно два указателя на первый и последний элементы для обеспечения O(1). Но мне сейчас лень. https://pastebin.com/cwAz6j3L
Приветствую, аноны. Подойдёт ли данная книга совсем для новичка? Планирую комплексно вкатываться в программирование, интересно всё, что с ним связано, однако на данный момент являюсь полным дубом. Пойму ли я хоть что-то? Или нужно начинать с чего-то более простого?
>>1311766 Да, живой, только нихуя не делаю. Точнее другим все занят, но думаю на следующей неделе домучаю все свои дела и вернусь к изучению htdp. Короче перерыв себе сделал месяц+неделя. >>1311995 Ну мне не подошла, во втором посте лично от себя совет давал, с чего начать. >>1312041 Я тоже инглиша не знаю, сижу с переводчиком. Бытует мнение, что для вката инглиш не сильно и нужен, а если вкатишься, параллельно выучишь. оп
Я не понимаю, зачем нужны кадры в модели вычислений с окружениями. Ведь значения переменных и так содержаться в окружениях. Допустим, пример из 3.2.3: >Для начала мы конструируем кадр, в котором amount, формальный параметр W1, связывается со значением 50
Зачем? Мы ведь уже сконструировали окружение (при вызове функции), в котором amount связан с 50. Зачем нужна сущность "кадр", если есть сущность "окружение"?
Можно от противного: покажите мне пример, где в окружении присутствует несколько кадров и в этом есть необходимость.
>>1312118 https://ideone.com/oKdSCx Пример простой и надуманный, но, я надеюсь, ты уловишь суть, подумав, чем отличается x как аргумент func от того x, который внутри let, и от того x, который должен быть после let (оставляю тебе последнее в качестве самостоятельного упражнения).
Но ведь при вызове let будет создано новое окружение, в котором x связан со значением "аргумента" let (вообще, насколько я помню, let - это синтаксический сахар для вызовы lambda). Код let связан со своим окружением, код func - со своим. Когда код let закончит выполнение, мы вернемся в код func и будем пользоваться значением x из его окружения. Кадр в каждом из окружении по-прежнему один. Или я не прав?
>>1312118 Можно рассматривать make... как создание новой процедуры с ее собственным окружением, а можно как создание нового окружения с ссылкой на процедуру, и вот это второе называется кадром.
Тут скорее вопрос конкретной реализации, видимо, их лисп был так устроен.
>>1295212 >С самого начала задаюсь вопросом, зачем автор выбрал схему? Почему не хаскель, на котором даже сайты можно писать, а также графические интерфейсы и многое другое? На Racket можно писать тоже самое.
>>1297679 >На самом деле сисп переоценен. Хз зачем его тут форсят, но если хотите подтянуть уровень читайте Кормена. >Он объясняет всё на псевдокоде, который очень легко перенести на питон, жаву, жаваскрипт и почти любой другой яп. СИКП - построение абстракций, архитектура, и немного алгоритмы. Кормен - только алгоритмы. Алгоритмы без абстракций - это дырка от бублика.
>>1297679 >Сисп не плохая книга, но он устарел лет так на 30. Рассмешил. До сих пор никто не создал лучшего языка и руководства.
>>1297679 >В 2к18 есть гораздо лучше, современнее и актуальнее. А тут по подробнее. Покажи ка нам что есть лучше.
>>1312118 >Я не понимаю, зачем нужны кадры в модели вычислений с окружениями. Ведь значения переменных и так содержаться в окружениях. Почитай про стек и стековый кадр
>>1314297 >ОП рапортует. Доделал все свои дела, с завтрашнего дня с отдохнувшей головой продолжу обучение. Завтра скажешь себе, что завтра начнешь. И так до бесконечности. Рекурсия.
>>1312488 >есть возможность переложить материал из SICP на BASH и кресты? Лисп (Scheme, Racket) - может выступать как псевдокод. По сути он и есть псевдокод. Поэтому его код легко переводить в любой другой. Только проблема в том, что в баше нет функций высшего порядка (а может и есть, я не в курсе).
>>1314955 Ничего не скажу на этот счет, я не спец. Единственное, что команды-то выучить удастся-ли за такой короткий срок. Но поглядим, время покажет. Хотя начал склоняться к тому, чтобы htdp изучить, а sicp может и нахуй послать. Или в свободное время потихоньку прорешивать. Все-таки жизнь идет и саморазвиванство тоже должно иметь какие-то пределы и не в ущерб зарабатыванию денег. >>1314965 Да почему, я 3 недели тогда ебашил без выходных и праздников, за это время мозг закипел и дел накопилось. Сейчас все разгреб и мозги отдохнули. Если бы ты читал предыдущие треды, ты бы понял, что я упертый мудак и сдаваться это не про меня.
>>1315012 В СИКП сложно только задачи решать. Темы первых 2 глав не сложные. Работа с функциями. Без этого сам не научишься из функций строить абстракции. А без этого не научишься строить модульные программы. Так какое тогда может быть зарабатывание денег.
>>1315081 Не читал, не знаю. Скорее всего нет. Тем более СИКП есть на русском. Можно лучше понять идеи, которые авторы туда вложили. Идеи эти на самом деле простые, но мощные. Например интерпретатор в 100-200 строк в 4 главе.
HTDP как мне кажется уже не то. Все современные идеи глуповатые, чрезмерно переусложненные. Код ради кода. Сейчас такое время, инженеры уже не те, они думают, что чем сложнее тем круче. Но все ведь наоборот. Самые крутые решения это простые. Простое легко изменять, оно надежное, мощное, не подверженное крушению. В СИКП простые и мощные решения.
Это видно по современным языкам программирования. Java, C#, C++, Rust, Python, - все они чрезмерное неоправдано переусложнены. То есть их навороты не решают задач, а только приносят лишнюю сложность. Получается что инженеры не решают проблемы, а создают. Где это видано чтобы было так. Инженеры должны бороться со сложностью, с проблемами, а они наоборот их создают.
Поэтому Лисп всегда будет мощнейшим из языков. Ни один язык не достиг такой мощи при такой простоте. СИКП придерживается той же философии что и создатели Лиспа. Что-то подобное сейчас найти почти невозможно.
>>1315081 сикп начал, много нравится из того, что там дают, но матана слишком много, поэтому пока остановился, мб забью, мб продолжу, от такого кол-ва математики воротит можно же рекурсии различных типов объяснить без матана, как в хтдп том же
>>1315104 Я сикп пробовал, для меня он слишком сложный, поэтому пока htdp. >>1315124 Ну я первую пока процентов на 40 прошел, поглядим, что дальше будет. >>1315126 Ну я сикп бросал, Т.к. вообще что-то не шло, абсолютно. С математикой по жизни проблем вроде не было, но позабылось уже; одним словом поглядим.
>>1315149 У меня тоже не было проблем с математикой, но сикп с первого раза тоже на зашел. Его вообще нужно перечитывать регулярно. Как писал Пол Грэм, что перечитывает сикп уже 15 лет, и до сих пор находит новые знания.
Я знаю, что такое стек и стековый кадр. Ты хочешь сказать, что под кадром они имели в виду просто кадр стека? Почему, блин, тогда нельзя было так и написать?
Что SICP подразумевает под словом "абстракция"? Она упоминается на протяжении всей 2 главы, но я все никак не могу в полной мере понять, что это такое. Может мои знания из других ООП языков мне мешают понять?
>>1315937 Абстракция - это сокрытие деталей реализации: Петян может использовать программный модуль Васяна, не зная как он устроен, только зная АПИ. А Васян может как угодно перепелить реализацию своего модуля в любой момент, скажем, на более быструю, и на коде Петяна это никак не отразится, если, конечно, Васян не долбоёб и не закомитит баг.
>>1315937 >means of abstraction, by which compound elements can be named and manipulated as units
В самом первом пункте первой главы написано. Проще говоря, тебе не придется каждый раз писать код для совершения какого-либо действия. Например, извлечения квадратного корня.
>>1316013 >>1315945 То есть инкапсуляция. Это я понимаю. Но слово мелькает в каждой второй строчке, от чего мозг начинает немного плавиться. А может это я тупой и нужно читать более вдумчиво. В любом случае спасибо
>>1315937 Смотря в каком контексте применяется. В общем случае абстракция это способность представлять сущности в формальном виде. Программирование как и математика это система абстракций. Сущности, процессы, модели, - представляются в них в формальном виде, в котором можно рассуждать о них. Бывают уровни абстракции. О каждом предмете или явлении можно рассуждать на разных уровнях абстракции.
>>1316045 >инкапсуляция Нет, инкапсуляция - это простое объединение данных и кода в единый компонент. Что, вобщем-то не обязательно обеспечивает сокрытие деталей реализации.
Еще один рапорт от ОПа. Ну че, 2 дня более-менее упорно сижу и разбираюсь, дело идет. Многие вещи начинаю вспоминать, ну не сильно-то и позабылись, но тем не менее. Полон энергии и энтузиазма, все заебись :З
Итак, ОП вкатывается опять. Как заставить этого ебаного кота двигаться слева направо с помощью big-bang? Я поначалу сделал через cond и animate, в принципе получилось. Но по заданию надо именно через ебаный big-bang написать. Нажимаю run - выделяет черным функции, мол все верно. Пытался задать переменную ws, ну мол, чтобы изначальное положение этого блохастого выбрать, тоже нихуя. Проблема в приципе в том, что образца готовой программы по тексту не было. Объясняли только, что может этот ебаный big-bang в себе содержать, а как в общем сдружить его с программой - нихуя нет. Ну или я правда тупой и чего-то не понимаю.
Да, я понимаю, что там чушь написана и нужно прописать, сколько пикселей в так двигается, но это пробовал, хуй там. Пытался формулу выше куда-то засунуть, ну мол чтобы возвращало с измененным числом пикселей и постоянно отнимало, тем самым двигая кота, тоже не получалось. КОроче шаблон для работы пока такой.
Итак, разобрался я, как это делать. Конечно в тексте учебника как-то то-ли непонятно описано, то-ли я туповатый. Ну в любом случае начало этого big-bang положено и к нему допиливать еще какие-то функции, будь то реакция на мышку или клаву, думаю труда не составит. Пытался эти 2 течпака отключить, перестает читать функции big-bang и прочие, хотя в предустановленных, в среднем экране настроек они висят. Да и хуй с ним, работает, да и ладно. Еще раз спасибо, что бы я без вас делал. Хотя оглядываясь назад, вспоминаю, как хуесосили, что я троллю, мол тупым таким нельзя быть, когда простых вещей не понимал. А тут уже хотя бы что-то соображаю, значит труды, в т.ч. и ваши, не пропадают и приносят пользу.
>>1317385 Здоров. Да, все превозмогаю. Я не ОП самого первого треда, я ОП второго и последующих. Сейчас примерно в середине 1 главы, все идет хорошо. Правда предыдущие 1.5 месяца ничего не делал, т.к. мозги закипели, когда 3 недели каждый день изучал. Вот несколько дней назад опять приступил к обучению. Насчет того, кто хотел за месяц осилить, что-то не видно его.
>>1317530 check-expect – тестировщик написанной программы, в конце пишем (check-expect (имя написанной программы 32) 0) после имени переменную ввода, вторая переменная, это сколько должно получиться (уже готовые значения писать) и он выдаст, правильно ли программа сработала Ну у меня есть в конспекте вот такая хуйня, не знаю, поможет ли в твоем случае. оп
ОП опять со своими говнопроблемами. Не могу сделать этот светофор ебаный. Задал полотно, задал размер, прозрачность и цвет этих ебаных цветных кругов. Написал функцию рекурсии через cond, чтобы если цвета совпали, перешло дальше и включило другой цвет. Прописал время 2 секунды для тика. НИхуя блядь, требует функцию для on-tick. Поясните долбоебу, какую функцию я там могу написать? Ладно с котом в предыдущем примере я все понял, там пиксели прибавляем или отнимаем, а как заставить его картинку поменять? Пробовал целиком cond скопировать - хуй на рыло, перерыл все функции big-bang, тоже нихуя путевого не увидел. Блядь, я не знаю. Причем самое обидное в том, что по тексту сейчас разжевывали принцип работы cond, просто как для конченных долбоебов и все было абсолютно ясно изначально, т.к. раньше все это было и давно уже с его участием примеры решал. А в упражнении заставляют делать то, что хуй знает, с какой стороны подойти. Вот сидел реально не один час, прежде чем сюда это тащить. https://pastebin.com/9dhT58qB на всякий сюда скинул
Короче сижу и до сих пор ебусь, блядь. Уже методом тыка тупо все перепробовал, что можно было. По-идее переменная это Х, т.е. текущее состояние, грубо говоря цвет круга на дополнительном экране. Пытался сделать формулу в on-tick, чтобы сравнить состояние экрана с каким-то положением cond, а хуй на рыло. Получается так, что сравниваю "red" и yellow (обозначения сейчас с потолка взял, не в этом суть). Пытался сравнить через string=? - не дает, т.к. yellow это изображение, со строкой "red" сравнить не выйдет, грубо говоря разные типы данных. По тому же принципу пытался сравнить через image=? - та же хуйня, разные типы, теперь yellow подходит, а "red" не подходит, т.к. это строка. Думал хоть если сравню, если выведет #t или #f, будет ясно, скакнет на следующий круг или нет, а тут даже сравнить не выходит. Заебало, блядь, реально бесить начинает. Там вот настолько подробно cond перед этой задачей расписали, просто для долбоебов конченных, собственно пикрилейтед, хотя и так оно очевидно изначально. Но зато сразу после этого примера предлагают ВЫСРАТЬ ФОРМУЛУ и даже образца нет никакого, за счет чего будет сцену переключать - а хуй его маму знает. Ладно, пойду я спать, всю ночь просидел, блядь, уже бошка нихуя не варит и нервов никаких нет.
ПОЛУЧИЛОСЬ БЛЯДЬ!!! Сука, методом тыка. Ладно, потом буду разбираться, почему именно так. Отбой тревоги, короче говоря. Ну и да, дорогу осилит идущий, лол.
>>1317409 Да я сам из-за завала на работе остановился на 3 главе SICP. Вот, думаю, с нового года засесть за него снова. Мне лиспы нравятся. Хоть какое-то отвлечение от js-рутины.
Только запамятовал, у тебя какие цели-то? Вот пройдешь ты HTDP, дальше что? Стремишься куда? На работу устроиться или так, просто для себя?
>>1317764 Хочу на работу устроиться, вроде логика программирования одна на всех языках и судя по отзывам htdp и sicp лучше всего ей обучат. Первоначальный план был прорешать thdp, потом sicp, а уже потом месяца за 3 переучиться на любой другой язык и пойти трудоустраиваться. Сейчас правда мысли htdp прорешать и возможно начать учить язык для трудоустройства, т.к. прорешивание sicp может еще оттянуть на полгода-год устройство на работу, что не есть хорошо. Кстати на твой js наверно обучаться буду, вроде по вакансиям проще всего найти работу.
Только учитывай, что js часто - это frontend, а там некоторые хотят, чтобы не только логику на фреймворке (react/vue/angular) писал, но еще и верстал им. Бывает, конечно, что в штате держат отдельно версталу. Чисто backend (node.js) вакансии чуть реже, но тоже есть.
SICP отодвинет не на год, а больше.
Хоть основы программирования HTDP и даст, но с экосистемой (либы всякие, бандлеры, фреймворк и т.д.) придется попердолиться знатно. Вряд ли 3 месяца хватит (ну если только совсем как трейни идти). Так что расчитывай где-то на пол-года минимум.
>>1318039 Ну хорошо, буду иметь в виду, спасибо за советы. Терпение и труд, как говорится. Вчера вон всю ночь просидел, хуями в монитор ложил, но ебаный светофор все-таки сделал. Сейчас разобрался, что куда идет и почему именно так должно быть. Как говорил великий филосов Кама Пуля - не главное, с какой скоростью ты двигаешья, главное не останавливаться :З
Почитал тредик про рекурсию, получается в СИКПе пиздят, когда говорят, что хвостовая рекурсия = цикл? Ну допустим оптимизация хвостовой рекурсии имеется, но цикл сам себя не вызывает таки, всё равно разные вещи
>>1318097 Хвостовая рекурсия это скорее goto, а не цикл. Можно и цикл запилить, можно и не цикл. По читаемости примерно эквивалент goto. Поэтому собственно в ФП эту рекурсию прячут под плинтус, выставляя на фасад комбинаторы.
>>1318108 это всё понятно, но ведь цикл сам себя не вызывает всё равно, то есть именно с этой точки зрения цикл запилить всё равно не получится через хвостовую рекурсию?
>>1318115 >вызовы в стеке не остаются и в принципе тоже самое получится Именно, получится goto в начало функции. А на базе goto уже легко делается цикл while, из него можно сделать и for.
>>1318097 >Почитал тредик про рекурсию, получается в СИКПе пиздят, когда говорят, что хвостовая рекурсия = цикл? Где там такое написано?
>Ну допустим оптимизация хвостовой рекурсии имеется, но цикл сам себя не вызывает таки, всё равно разные вещи Это уже особенности реализации транслятора. Рекурсивная функция все равно рекурсивная, даже если транслируется в цикл. В машинных кодах вообще функций и циклов нет. Но это же не значит, что в высокоуровневом коде нет функций и циклов.
"Как следствие, эти языки способны описывать процессы только с помощью специальных циклических конструкций вроде do, repeat, until, for и while."
Теперь понятно, циклические конструкции это конструкции языка. Хвостовая рекурсия это способ написания рекурсивной функции, которая порождает итеративный процесс. Оптимизация хвостовой рекурсии, это когда хвостовой вызов транслируется в нечто не потребляющее стек.
>>1318296 Кинул ссылку перед прочтением, потом прочитал и увидел некоторые несостыковки в ней. Например написано, что хвостовая рекурсия никогда не потребляет стек, но это не так, если нет оптимизации в языке, то потребляет. И еще некоторые неточности. Но в целом можно прочитать. Есть конечно более фундаментальные статьи на эту тему. А еще лучше почитать книги.
>>1318299 Да я со всем этим знаком давно, только про уточнение с оптимизацией хвостовой рекурсии услышал впервые, я думал, что везде вызовы в стек не помещаются, а оказывается только если оптимизация имеется. Мне просто хочется получше понять, как устроен цикл на более низком уровне. С рекурсией и её видами мне всё понятно, и как работает, и все фишки со стеком, и что это такое. С циклами я тоже умею работать, но не совсем понимаю, как это устроено изнутри. Ну в хвостовой рекурсии увеличили аргумент, к примеру, затем вызвали ту же функцию с этим изменённым аргументом, и так пока какое-то условие всё не остановит. А как в цикле все эти итерации проходят, если не процесс сам себя не вызывает?
>>1318301 >А как в цикле все эти итерации проходят, если не процесс сам себя не вызывает? Чтобы это понять нужно самому написать интерпретатор. И процессы бывают разные, есть процессы операционной системы, есть процессы реализующиеся языками, а в СИКПе говорится о процессе вычисления. То есть не о живом процессе в программе, а об абстрактном.
>>1317530 Потому что cons-stream - это особая форма, а не функция, и свой аргумент она не вычисляет, сразу по крайней мере, а вычисляет только в тот момент, когда нужен очередной элемент последовательности. Лисповские стримы - это то, что сейчас принято называть "ленивыми списками", гугли.
>>1318189 >В машинных кодах вообще функций и циклов нет Здравствуй, приехали, а инструкции call, ret и префикс инструкций rep тебе говрит о чём-нибудь?
>>1318362 call вызывает функцию - кладёт на стек адрес возврата, а в регистр rip - адрес функции. ret возвращается из функции, делает то же, что и call, но в обратной последовательности. rep - префикс для повторения следующей инструкции до тех пор, пока значение в rcx не станет равным нулю, такой себе рудиментарный for.
> Вообще то, машинный код состоит из двоичного кода, и в нем нет никаких инструкций. Машинный код состоит из ассемблерных инструкций, хватит троллить тупостью. В png-файле из оп-поста тоже двоичный код, но попробуй-ка ты его выполни, как исполнимый.
>>1318365 Не функцию, а процедуру. Это не такие же функции как в высокоуровневых языках. Нельзя переписать функцию из высокоуровнего языка в одну функцию на ассемблере.
До ассемблера тоже были компьютеры, и естественно был машинный код.
Аноны, читал в паре статей, что в самом MIT от SICPa уже отказываются, да и вообще, книгу на пистон перевели\хотели перевести. Однако гугл выдаёт какую-то сильно урезанную версию книги на питоне. Есть ли где-то полноценная версия на питоне или на чём нибудь поновее, чем лисп? А то даже смотря на код, чувствую, что перед глазами laba2.
>>1318613 Ну, это он конечно же загнул. Сейчас это никому не нужно. Сейчас бизнес заинтересован в том, чтобы программист смог накидать рест контроллер на спринг буте (Аннтоация @Controller) и набросать сервис (аннотация @Service), которая расширяет единственный интерфейс MyServiceImpl extends Service, в котором будет реализован доступ к базе данных через дао (аннотация @Repository). Сам хайбернейт даже не нужно знать, а только уметь пользоваться Spring Data. Т.е. по-сути ты пишешь всякие findByName, а умный спринг фрамеворк за тебя гененирует высокооптимизированный запрос в базу.
>>1318679 Найс явамакака порвалась. Сикп не для тех, кто из говна, фреймворков и палок собирает БИЗНИСУНУЖНОБИСТРО. Сикп для тех, кто проектирует и пишет те же самые базы, например. По забавному совпадению прямо сейчас пишу на Scheme индексы для рудиментарной базы данных в пет-проекте - производительность почти как у C, кода на порядок меньше, а читабельность кода на порядок выше.
Ну что, антоши, с наступающим вас. Благодаря вам я вкатился в обучение программированию; немало труда было в это вложено, но успехи есть - половину первой главы htdp (даже чуть больше) я уже осилил. Сейчас уже полноценно продвигаюсь по книге и уже не думаю, что стану ее бросать. Добра вам и няшек, всего самого в наступающем году. Вот вам песенка про новогоднюю ночь :З ваш опнадеюсь после переката галка ОР все-таки начнет работать
>>1319755 Ну двощи ты читаешь каждый день, что мешает полистать книгу. Я вот повёлся на форчанский форс книги, понял что вроде общие идеи понимаю и интересно весьма, но математика уровня школьника и недостаточная сообразительность мешают выполнять упражнения, поэтому попробую вкуривать английские лекции. Всё равно больше нечем заняться.
>>1319774 Ты не один такой. Честно говоря, не знаю что за люди традиционно обитают /pr/, но я на своём этапе деградации уже не надеюсь сделать это своей профессией и воспринимаю как хобби.
>>1319851 Не ебу о чем ваш тред, но я перекатился в питонотред, мне там вполне уютно, даже чувствую прогресс всем двачем пытаемся сделать брут цифрового кода
Где скачать SICP?
На русском: http://newstar.rinet.ru/~goga/sicp/sicp.pdf
ориджинал: http://web.mit.edu/alexmv/6.037/sicp.pdf
https://github.com/sarabander/sicp-pdf/raw/master/sicp.pdf
Где я могу писать свой код, для выполнения заданий?
Онлайн редактор, с поддержкой Scheme: https://repl.it/languages/scheme
IDE для racket подобных языков(но есть и поддержка Scheme, но её нужно включить) - https://racket-lang.org/
Где посмотреть ответы на задачи?
http://community.schemewiki.org/?SICP-Solutions
https://github.com/qiao/sicp-solutions
https://wizardbook.wordpress.com/solutions-index/
Где посмотреть видео про книгу?
https://www.youtube.com/watch?v=a0YrCABCOEY