Продолжаем обсуждение лучшей книги всех времен и народов, а так же одноименных лекций. Приглашаются сюда как новички, ломающие над ней голову, так и опытные ребята, прошедшие ее всю (или большую ее часть). Где скачать SICP?На русском: http://newstar.rinet.ru/~goga/sicp/sicp.pdfориджинал: http://web.mit.edu/alexmv/6.037/sicp.pdfhttps://github.com/sarabander/sicp-pdf/raw/master/sicp.pdfГде я могу писать свой код, для выполнения заданий?Онлайн редактор, с поддержкой Scheme: https://repl.it/languages/schemeIDE для racket подобных языков(но есть и поддержка Scheme, но её нужно включить) - https://racket-lang.org/Где посмотреть ответы на задачи?http://community.schemewiki.org/?SICP-Solutionshttps://github.com/qiao/sicp-solutionshttps://wizardbook.wordpress.com/solutions-index/Где посмотреть видео про книгу?https://www.youtube.com/watch?v=a0YrCABCOEYПредыдущий тред https://2ch.hk/pr/res/1320096.html
Так же полезная информация.Где я ещё могу пообсуждать любимый SICP, кроме двача?https://www.reddit.com/r/compsci/https://www.reddit.com/r/learnprogrammingПолезные ресурсы:https://teachyourselfcs.com/https://github.com/ossu/computer-sciencehttps://sicp.neocities.org/Книжки по ФПhttps://www.dropbox.com/sh/ugtfwgfilgr0ebu/AABVDeYpTvcqcg22XZnYT8Eca?dl=0Заодно еще пара ссылок (на онлайн-версию, видосы и сикп на кложе):clj: http://www.sicpdistilled.com/1986: https://www.youtube.com/playlist?list=PL8FE88AA54363BC462004: https://www.youtube.com/playlist?list=PL7BcsI5ueSNFPCEisbaoQ0kXIDX9rR5FFharvey: https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorterhtml: http://sarabander.github.io/sicp/По просьбам трудящихся еще 3 ссылкиhttps://htdp.org/2018-01-06/Book/part_prologue.html - как работает ракетаhttp://sicp.sergeykhenkin.com/https://docs.racket-lang.org/sicp-manual/#(part._.Installation)Для изучения языка-схемы порекомендую первые две главы https://www.scheme.com/tspl4/Слоником в итт называют книгу The little schemer (но мне он не зашел из-за слишком своеобразной подачи материала).
вкатываюсь, наслаждаюсь первыми победами над задачами, проникаюсьСначала читал оригинал, потом переключился на русский перевод и натолкнулся на различия в русской и оригинальной книгах, когда проверял ответы к задаче 1.11В русском переводе:f(n) = n, если n < 3, и f(n) = f(n−1)+f(n−2)+f(n−3), если n ≥ 3.в оригинале f (n - 1) + 2f (n - 2) + 3f (n - 3) if n ≥ 3.Различия не принципиальные сейчас, всего-то коэффициентов добавили в формулу убрали, но настораживает, что будет дальше?
>>1404803Да, там есть такие хуй-пойми-к-какой-телеге различия. Лучше читать оригинал, а если что-то непонятно - перечитывать на русском, например.
>>1404803>Сначала читал оригинал, потом переключился на русский перевод и натолкнулся на различия в русской и оригинальной книгах, когда проверял ответы к задаче 1.11>В русском переводе:>f(n) = n, если n < 3, и f(n) = f(n−1)+f(n−2)+f(n−3), если n ≥ 3.>в оригинале>f (n - 1) + 2f (n - 2) + 3f (n - 3) if n ≥ 3.Ничего подобного. В обеих книгах все одинаково. Приложил скрин английского 2-го издания. Русское 2-е издание держу в руках...
>>1404820>>1404803>f (n - 1) + 2f (n - 2) + 3f (n - 3) if n ≥ 3.Не туда смотрел. Подумал что ты про то, что в английской версии нет условия f(n) = n, если n < 3. Ты же это не написал. И незаметил, что в русской версии нет 2f и 3f.
>>1404803Да, это опечатка/ошибка набора, каковых в русском переводе дохуя. Сам перевод хорош, но вот эти тупые опечатки всё портят. Иногда мне кажется, что финальный текст русского перевода заставили набирать пучок студентов за зачёт по ЯПМТ.
>>1405314Уась, большинство мейнстримных языков являются типа ООП-языками (Java, C#, Python, Ruby, PHP, C++). Хочу найти пособие как на них писать, используя классы, интерфейсы, - вот это вот всё. Только руководство хочу в духе СИКП и HTDP.
>>1405347Ну в хтдп есть целая глава про это, например. Little typer еще какой-нибудь наверни, если от MIT Press хочется.
>>1405354>Ну в хтдп есть целая глава про этоПро что? Я просто не читал, читал только СИКП.Мне нужно не просто теорию ООП, а то как писать на языках вроде C#. Именно практическое руководство. И чтобы авторы были адекватные инженеры, с опытом и в ФП и в ООП. Не читаю авторов, которые пишут "ООП это абстракция, наследование, полиморфизм". Скорее всего такие авторы не понимают ООП, и не понимают как писать на языках с классами, а просто повторяют заученные слова.В СИКП к примеру отсутствует такое, нет аксиоматизма, догматизма, фанатизма, вместо этого просто показывают как можно элегантно решать задачи без лишних абстракций. В большинстве книг по ООП все наоборот. Стараются слепо верить догмам, вводить как можно больше абстракций, смещая фокус с решения задачи на следование глупым догмам. Такой фанатизм меня раздражает.Адекватный автор должен показывать как решать задачи используя классы, какие задачи так лучше решаются, в каких случаях такой подход неудобен, и показывать альтернативу, сравнивать с ФП.
>>1405288Не знаю, но от чувака, который настоятельно рекомендовал SICP можно было услышать, что вторая обязательная для прочтения книга - Code Complete. Только в начале там много воды и не стоит забрасывать ее из-за этого.
>>1405373>Про что?Про состояние и объекты: https://htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#node_toc_start>просто показывают как можно элегантно решать задачи без лишних абстракций. В большинстве книг по ООП все наоборотНу как бы ООП - это чисто маркетолухная шешура, кроме этих самых догм там ничего как бы и нет. Анон, очнись, 95% кодеров на джаве генерируют в своей идешечке геттеры и сеттеры для каждого дата-класса, потому что "ну бля инкапсуляция епта ооп это же инкапсуляция я на рсдн так прочитал а ты кто воще такой".>показывать альтернативу, сравнивать с ФП.Предлагаю тебе прочитать книжки Егора Бугаенко - там нет никаких альтернатив и никакого сравнения, там как раз максимально фанатичный (и весьма неортодоксальный) взгляд на ООП. А потом самому сравнить и сделать выводы (цель книги именно такая) - раз ты сикп прочитал, то у тебя достаточно знаний и навыков для этого.
Ну что, второй день подряд занимаюсь. В данный момент остановился на 89 странице из 565, лол; что равняется примерно 16% книги. Утешает то, что первые 10% я прошел за 4 дня, т.к. темы были схожие с htdp второй версии и темы идут в другом порядке, т.е. еще будут темы, которые я раньше полноценно прорешивал и разбирался, но в этой книге их еще не было, т.е. быстрые рывки будут. А так продвигается все, даже тупых вопросов сюда не задаю, как вы видите. Структуры просто охуительно расписаны в сравнении со второй частью книги. Так что рекомендую всем начинающим не ебсти голову, не лезть в сикп или зеленого слоника, а просто брать первую версию htdp и прорешивать ее. Такие дела.
>>1409547Все задачи решаешь? Я немного и не понял: ты читаешь SICP, а советуешь HTDP?Алсо, тоже начал сегодня читать. В ленивом темпе 17 задачек прорешал(немного вру, ибо половину "устных" задач пропустил), это 59 страница из 596.
>>1409573Нет, он пробовал sicp, little schemer (слоник) и еще что-то - ему не зашло. Теперь занимается по htdp.Раз пошла пьянка с отчетами, напишу и я свой, который никому нахер не вперся.Прорешал первые 3 главы SICP. Вцелом неплохо, местами интересно, местами материал был и так известен (формо-крудошлеп я), местами упражнения подзаебывали. Могу поставить за эти главы 4 звезды из 5 (так как не понял от чего весь этот культ вокруг книги, возможно были просто завышенные ожидания). Но для вправки мозгов годится.Пока откладываю ее в сторонку и буду дочитывать оставшиеся книги из списка, который Кирюша-хекслет составлял. Потом надо будет работку сменить, и уже после, возможно , вернусь и буду писать свой интерпретатор, проходя 4 и 5 главы.
>>1409583Я же после SICP'а хочу Кострикина прочитать, хотя бы первые две книжки, как в ШАДе советуют, а помимо него Зорича с Демидовичем. Зорича немного читал, как и Кострикина. В принципе, ничего сложного нет, но на это нужно много свободного времени.После хочу плотно заняться алгоритмами. "Грокаем Алгоритмы" я практически всего осилил, мне даже было скучновато, а вот с Корменом уже посложнее, там тупняки на пару часов. Можно параллелить всё это дело, конечно же.А интерпретатор/компилятор я скорее всего тоже не буду писать, если я захочу его запилить - я открою магическую книгу дракона.
>>1409573Я решаю первую версию htdp; вторая версия не пошла, т.к. структуры там слишком по уебански объясняют, точнее вообще почти не объясняют. sicp совсем не пошел, т.к. я вообще с полного нуля пытался ее решать. Задачи решаю все, некоторые не получаются, но не из-за моей тупости, а то, что просто не могу понять, что от меня хотят - сложности перевода с инглиша.>>1409592Первая версия htdp. Говорю это как человек, который до нее пытался сначала sicp, потом зеленый слоник, потом книжка со второго поста в этом треде - в самом конце поста, потом htdp второй версии и только после них, пятой книгой была htdp первой версии, которую тебе и советую.
>>1409599Да, для самого начала можно первые 2 главы той книги, со второго поста прочитать. А дальше там идет углубление в сам язык, а не в обучение программированию.
Тред порадовал, молодцы ребята. Радует, что дело живет и не загибается.Мимо ОП вот этого корявого треда: https://2ch.hk/pr/arch/2017-04-25/res/903354.html
>>1409697Звучит прикольно, согласен. Я к тому, что не из-за тупости в программировании, а из-за тупости немного в другом :З
>>1404382 (OP)>Где я могу писать свой код, для выполнения заданий?А есть смысл брать упражнения сикп и выполнять их на другом языке программирования?
>>1404382 (OP)Где-то натыкался на такое мнение, что SICP идет очень тяжело потому, что с определенного момента требует знаний по теме (в частности математику). Что там еще желательно параллельно осиливать чтобы освоить книгу?
>>1409926Мало смысла. Делай на Racket/Scheme>>1409945Математика там особо не нужна, более того некоторые упражнения (например на доказательство можно пропускать), так как практического смысла для разработчика они не несут. Остальные формулы, которые будут нужны, даются по ходу книги.Осилить надо документацию по установке Racket и пакета sicp к нему. Все остальное в книге рассказывается прежде чем дать задание.Вот гайд https://guides.hexlet.io/how-to-learn-sicp/
>>1409960Может тебе и не плох, я ведь не знаю что тебе больше подходит.У меня есть необходимость держать код на локалке, трекать гитом, заниматься иногда в оффлайн-моде.
>>1410011Стоят в очереди в столовой джавист, питонист и php-шник. Первой пришла очередь джависта, и он говорит:- Дайте мне Борщ борщ нью Борщ.Питонист как начал над ним угарать, и заказывает громко:- Мне борщ - и шепотом прибавил - еще деф пюрешка (селф, котлетки).Взял свой заказ и ушел. Последний подходит php-шник и говорит:- А у меня с собой - достаёт контейнер с говном и начинает жрать.
>>1409926Есть реализацияНа питоне: https://wizardforcel.gitbooks.io/sicp-in-python/content/На JS: https://www.comp.nus.edu.sg/~cs1101s/sicp/Может еще на каких языках есть, хз.
>>1410015Нет, не остались. Читай пейперы микрософтовской команды по модульным компиляторам. В драконе вообще парсер полкниги пишут, meh.
Ребята, кто читал Lisp in small pieces aka интерпретация Лиспа и Scheme? Как запустить код из первой главы? Не хватает нескольких функций как я понял, atom? и еще несколько, но в книге о них не слова. Как быть?
>>1410762Я по диагонали прочитал, но охуел от сложности, попытки запускать код бросил после первых же провальных попыток. Схема, в конце концов, простой язык, её можно в голове "запускать".По идее, atom? тебе должна предоставлять нижележащая лисп-система, на которой ты всё пишешь.А вообще, нахуя ты эту книжку читаешь? Собираешься свой компилятор Scheme писать?
Бля, прорешаю htdp, куплю себе гитару. Правда чувствую это не раньше нового года будет. ебать я нажрался сейчас...
>>1411086Да не, и так много соблазнов, да отвлекающих факторов. ITAOTS - шо цэ за хуйня? Гугл молчит.>>1411172Сикп слишком сложно, да и хтдп нихера не легкая, но все-таки продвигаюсь и получается. И просветление как раз получаю в каждой теме глаза открываются на что-то новое.>>1411179Я английскую читаю, с переводчиком.
Представим, что мы дефайним функцию с переменным числом аргументов:(define (dvach oldfag . newfags))(dvach anon slavik karasik)Почему когда я вызываю (cdr newfags), то результатом получаю ((karasik)), а не (karasik) проверено в отладчике?Код: https://pastebin.com/g6UedM37
>>1412208> Почему когда я вызываю (cdr newfags), то результатом получаю ((karasik)), а не (karasik)Потому что ты вызываешь свою parity криво. У тебя вторым аргументом становятся не значения из списка l, а сам список. Если хочешь передавать произвольный список аргументов, надо юзать apply: https://docs.racket-lang.org/reference/procedures.html?q=apply#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._apply%29%29Пофиксил твой кот: https://pastebin.com/4gTT8RgB
>>1409945SICP руинит программирование для многих как область деятельности. More generally, SICP doesn’t state how to program and how to manage the design of a program. It leaves these things implicit and implies that students can discover a discipline of design and programming on their own. The course presents the various uses and roles of programming ideas with a series of examples. Some exercises then ask students to modify this code basis, requiring students to read and study code; others ask them to solve similar problems, which means they have to study the construction and to change it to the best of their abilities. In short, SICP students learn by copying and modifying code, which is barely an improvement over typical programming text books.SICP’s second major problem concerns its selection of examples and exercises. All of these use complex domain knowledge. ... Some early sections and the last two chapters cover topics from computer science ...While these topics are interesting to students who use computing in electrical engineering and to those who already have significant experience of programming and computing, they assume too much understanding from students who haven’t understood programming yet and they assume too much domain knowledge from any beginning student who needs to acquire program design skills. On the average, beginners are not interested in mathematics and electrical engineering, and they do not have ready access to the domain knowledge necessary for solving the domain problems. As a result, SICP students must spend a considerable effort on the domain knowledge and often end up confusing domain knowledge and program design knowledge. They may even come to the conclusion that programming is a shallow activity and that what truly matters is an understanding of domain knowledge. Similarly, many students lack an understanding of the role of compilers, logical models of program execution, and so on. While first-semester students should definitely find out about these ideas, they should do so in a context that reaffirms the program design lessons.In summary, while SICP does an excellent job shifting the focus of the first course to challenging computer science topics, it fails to recognize the role of the first course in the overall curriculum. In particular, SICP’s implicit approach to program design ideas and its emphasis on complex domains obscures the goal of the first course as seen from the perspective of a typical four-year curriculum.Он вреден как опыт для тотальных нубов. Поэтому то его даже в MITе изучают далеко не сразу, а лишь с пункта 6.037 курса.
>>1412260> SICP doesn’t state how to program and how to manage the design of a program.Wat> SICP students learn by copying and modifying codeWat> They may even come to the conclusion that programming is a shallow activity and that what truly matters is an understanding of domain knowledge.WatЛично для меня, прочитавшего пока что сотню с лишним страниц, главной пользой книги оказалось то, что я научился адекватнее выстраивать иерархию кода и куда реже пишу одни и те же куски по много раз.
>>1412260>programming is a shallow activity and that what truly matters is an understanding of domain knowledgeАбсолютно верно, что не так-то?Алсо, шизанутая какая-то паста, физику блядь учить для сикпа, ну-ну.
>>1412416Тоже прикололо. Как они собрались прогать не зная доменной области. "Типа ну мен тимлид сказал тут кнопку прихуярить - ща ебана подожжи".
>>1412260Computer Science is a terrible name for this business. First of all, it's not a science. It's also not really very much about computers. Это всё магия.
Не знаю как обстоят дела в мите, а в беркли все еще учат ентот ваш сикп с питухономhttps://cs61a.org/
Тут решил более четко следить за своим образованием, посчитал страницы и прочую хуйню. Короче вторую версию хтдп я прошел на 21% и бросил, т.к. ебаные структуры описывались очень плохо. Сейчас прорешиваю первую версию хтдп и прорешал ее на 20%. Но темы идут в другом порядке, допустим к этим 20% структуры разобрали, а к тем 21% второй версии структуры только начинаются. Сейчас по рекурсии и спискам не было ничего, с биг-бангом еще не сталкивался. Одним словом будут еще быстрые рывки в этой книге, когда будут темы, которые я проходил и полноценно разобрался, к слову сейчас списки с намеками на рекурсию начались. А так если тема незнакомая то 0.5% книги в день прохожу, если знакомая то до 3% в день доходит. Такие вот дела.
>>1404382 (OP)Блин, у меня есть фетиш, если это можно так назвать, коллекционировать книги связанные с технологиями/программированием. Но дочитывать я их не дочитываю нихуя. Просто приятно наблюдать как на полке находятся
>>1413705Для этого даже термин есть, "полочное порно".Тоже этим грешу, особенно когда речь идет о комиксах.
>>1413761Я обожаю заходить на двачи, чтобы видеть таких вот гениев. Когда я вижу существование подобных людей практически вживую, я понимаю, что мне еще есть куда расти.Анон, расскажи мне, как ты учишься, если тебе не трудно.
>>1413755Первую, обязательную, половину книги (главы 1-3) можно в неспешном темпе прорешать за 2-3 месяца (по 3 часа в день).
>>1413856Первые 3 главы это 225 упражнений. Допустим, ты прорешиваешь не все, оставим 200. Возьмем срок 2 недели - это 14 дней. Тогда в день надо решать около 14 упражнений. В среднем программист может продуктивно работать часов 6 в день, но возьмем 8 (и это без учета перерывов). 8 часов - это 480 минут. 480 / 14 - что выходит около 34 минут на упражнение. И это только упражнения, без прочитывания теории или просмотра лекции. Так что крайне маловероятно.
>>1413888Там куча упражнений, которые делаются за менее чем 5 минут устно или на листочке, а в первой главе так вообще нет ничего стоящего, можно потратить день на нее для ознакомления с языком.
>>1413900>в первой главе так вообще нет ничего стоящего, можно потратить день на нее для ознакомления с языком. Твое ебало, когда даже половины первой главы не осилил и бросил :З
Вот мне интересно, например упражнение 1.10, есть те, кто расписывал на листочке вызовы (A 3 3)? Просто, иногда возникает вопрос, авторы хотят чтобы я вбил это в терминал, или, как в 1980-х, чтобы сам прорешал на листочке.
>>1413937Зря. Тебе просто нужно было поставить срок (2 дня например) на решение задача и если не решил, то залезть в ответы.
>>1414768Да я в самом начале обучения пытался его читать. Вообще не понимал, что происходит, пытался решать на бумаге, а не в программе и т.д. Сейчас-то скорее всего первую главу вытяну, если решать начну, но прорешиваю хтдп и бросать пока не планирую.
>>1414792Попробуй реализацию на другом языке посмотреть. Схема уебская, черт ногу сломит с этими скобками, а синтаксис этот тебе нигде больше не пригодится все равно. Там все равно вся фишка книги не в схемолиспах.
Аноны поясните почему repl.it не выполняет вычисление модуля числа. Я просто совсем начинающий и не знаю даже как может не работать даже код из учебника. Заранее спасибо.
Рапортую. Занимался я понемногу в мае и по сегодняшний день июня. Был перерыв с января, когда хтдп я прорешал на 10%. Сейчас делаю очередной перерыв, т.к. мозги закипели. Сейчас книга прорешана на 25% - ЧЕТВЕРТЬ КНИГИ. Радует то, что все вполне получается. Думаю к началу-середине июля вернусь в обучение.
>>1415239Вон человек выше даже не знает, как вернуть две переменные на этом языке, а вот в питоне бы сразу написал:> return x, yи все бы заработало
>>1414852>Там все равно вся фишка книги не в схемолиспахПока что не удалось доказать, что использование неучебных языков способно как-то обогатить сикп или хотя бы не обеднить его.
Кстати, написав игруньку для геймджема на Scheme в 1.5 килостроки, и продолжая заниматься этим б-гоугодным делом, я наконец могу сформулировать, почему лиспы ну, схема, по крайней мере на голову выше других языков: волшебное число Миллера никто не отменял даже для погромистов, держать в голове несколько нетривиальных объектов очень сложно для N>5. Погромисты на более других, "промышленных" языках вынуждены, помимо предметной области, держать в голове инфу о выебонах своего языка - о классах, методах, суперклассах, типах, позиционных и кейворд аргументах, эстэдэмапах, кофейных бобах и прочей хуете, за счёт чего разработка на таких языках крайне часто скатывается в суходроч на инструменты и написание болейрплейта вместо решения актуальных проблем бизнеса. На лиспе у тебя почти нихуя нет, кроме скобок и функций, приходится думать не обо всякой хуйне, которую понавыдумывали для тебя создатели языка (типа "ох, что бы мне тут применить, наследование, композицию через указатель, или может абстрактный proxyfactorybeanwrapper"), тебе не остаётся ничего другого, кроме как думать об актуальной задаче у тебя на руках. После 10+ лет дрочьбы на более распространённых языках это вообще волшебное чувство, у меня никогда такого раньше не было.
>>1415430На ракете. Не знаю, у меня всё быстро. Хотя время запуска долгое, прямо как у явы, потому что там в стандартной библиотеке дохуя всего. А щас к лету в ракетке окончательно перепилят ядро на Chez, и будет вообще n1 в бенчмарках.
В русской версии страниц меньше чем в английской потому что она 2006 года, а английская 2016? Или еще почему? И важно ли это?
>>1415706Я дропнул русскую после неточности в одном из заданий. В английской к тому же и шрифт и вцелом оформление поприятнее.
>>1415706>потому что она 2006 года, а английская 2016?Нет.> И важно ли это?Если не владеешь ангельским, русский перевод пойдёт.
>>1415954В Яндекс, мэйл, 2гис или подобное?Тогда могу и поверить.В остальные - нет. Может как самый максимум у версталы спросят сортировку пузырьком и то чисто поржать. Никто балансировать дерево не заставит.
>>1415961 Я хуй знает, я пока только анонов спрашиваю. Выучу алгоритмы, матан, дифгеом, мехмат, молекулярку, сделаю свою копию двача и лицокниги, потом устраиваться буду.Ну не верстальщиком ладно, js-программистом, реакто-дрочилой. Там спрашивают. Вы все равно уже все прочитали и просто на аниме-девочек тут дрочите. Давайте сделаем тред.
>>1416075Меня не спрашивали, а я работаю js-макакой. Но, правда, далеко не в топ компании. Да и давненько на собеседованиях не был.P.S. вместо Кормена лучше бы Скину читал. Тут к примеру его рекомендуют https://teachyourselfcs.com/
>>1415954>уже у верстальщиков спрашиваютА то верстальщик не формошлеп, занимающийся тупой неинтересной хуйней.
>>1416520Чисто так, с потолка, по-идее у тебя будет сравнение двух чисел. Ну и отними от большего меньшее. Потом большее подели на 100 и полученное число умножь на разницу этих чисел.( (- х у) (/ х 100))Хотя скорее всего я хуйню написал, т.к. не вникал в задачу.оп*
(* (- х у) (/ х 100)) ебаный бб-код. если окажется так, что допустим У меньше икса, там через модуль можешь сделать, чтобы положительный ответ был, ну разница эта ебаная
>>1416520Открыл своё решение двухгодичной давности, и увидел вот такое:код не смотри, намёк ниже(define (good-enough? guess new-guess) (< (abs (- guess new-guess)) 0.000001))т.е. я просто сравниваю модуль разницы guess и нового x с очень маленьким числом.
>>1416520>>1416530newGuess/guess - получается процент от 100% (где 100% = 1), смотрите когда это процент меньше epsilon
>>1416530как бы способ определения я итак понимаю. А как подобную вещь интегрировать к код? как интерпретатор будет определять когда возникается new-guess если изначально он оперирует с guess и x.
>>1416612Она уже "интегрирована", в коде из книги вызывается функция good-enough?. Зачем ты ввёл новую функцию compare, непонятно, тех функций, которые были в данном тебе коде, достаточно для решения задачи.> изначально он оперирует с guess и xИнтерпретатор кстати, может быть и компилятор "оперирует" с тем, чем ты ему указываешь. Назовёшь переменную x - будет переменная по имени x, назовёшь new-guess - будет new-guess.Подсказка для тебя: в теле функции sqrt-iter значение следующей итерации (то самое new-guess) понадобится два раза, поэтому логично положить его сначала в переменную, чтобы два раза не считать. Переменные в Scheme можно определить с помощью define, дальше, надеюсь, сам справишься.> возникаетсяУуу, братюнь, тебе не сикп надо читать, а учебник по русскому для начала. А вообще, норм троллинг тупостью, я аж чуть не порвался.
>>1416653>троллинг тупостьюСколько раз я слышал в день я слышал эту фразу, когда только начинал обучение.. прям на душе потеплело от ностальгии :Змимо оп
>>1416653Ну ебана я если семь лет в чехии живу то это явно искажает мой русский немногоВаще конечно спасибо. Я не троллю, просто для меня всё программирование это вообще темный лес. Наверное программистам это трудно понять...
>>1417298алсо сикп не про лиспы а про идею создания абстракций по большей части, поэтому круды на лиспе будут такие же унылые, просто синтаксис другой
>>1417273> Бля не читайте букварь, потом с картиночек с мемасиками орать не сможете. А ничего другого нет.
Упражнение 1.5. Бен Битобор придумал тест для проверки интерпретатора на то, с каким порядком вычислений он работает, аппликативным или нормальным. Бен определяет такие две процедуры:(define (p) (p))(define (test x y) (if (= x 0) 0 y))Затем он вычисляет выражение(test 0 (p))Какое поведение увидит Бен, если интерпретатор использует аппликативный порядок вычислений? Какое поведение он увидит, если интерпретатор использует нормальный порядок? Объясните Ваш ответ. (Предполагается, что правило вычисления особой формы if одинаково независимо от того, какой порядок вычислений используется. Сначала вычисляется выражение-предикат, и результат определяет, нужно ли вычислять выражение-следствие или альтернативу.)Бле чёт я не догоняю нафига в р р в скобки берёт и что это должно значить?И так же непонятно как тест будет работать. Компилятор у меня тупо виснет, когда я этот код забиваю.Решил посмотреть что в оригинале и задание не нашёл. Чё столько отличий-то??? Я думал это просто перевод, а тут какая-то адаптация для йоддефицитных. Какая из книг более актуальна? С учётом слабого английского.
>>1422189>Решил посмотреть что в оригинале и задание не нашёлЕсть оно там точно под таким же номером. Открой в конце книги указатель на все упражнения и перейди по нему, если так найти не можешь.Если p - процедура, то тогда (p) - вызов процедуры, очевидно же> И так же непонятно как тест будет работать. Компилятор у меня тупо виснет, когда я этот код забиваю.Ну все верно. В нашем случае с апликативным порядком оно и будет зацикливаться, т.к. будет бесконечный вызов процедуры, а вот при нормальном - оно бы просто выдало 0Вникай лучше в текст перед упражнениями
>>1422189Если порядок аппликативный то кал застрянет в бесконечном цикле определения функции p потому что в строке (test x y) (if (= x 0) 0 y) сразу подставит ноль и p, а потом полезет в p (надо ж её раскрыть, мы же у мамы аппликативные) и там задохнётся.А если нормальный то он сначала проверит равен ли икс нулю (а он равен), перейдёт к возврату нуля и в рот он хотел ебать что там за p такое дальше стояло.Это по сути иллюстрация фразы "не лезь бля дебил сука ебаный" только на схеме.
>>1422203>>1422207с тестом понятно.Но при дефане р вызывает саму себя? А компилятор не должен уже тогда сдохнуть?
>>1422210Нет, это ведь просто объявление процедуры, а вызовет она саму себя только после того как ее кто-нибудь вызовет.
>>1422210>Но при дефане р вызывает саму себя?Это хороший вопрос. Поразмыслим логически. Во-первых если бы он вызывал, то могла ли программа работать так, как задумано? Во-вторых (хотя это самое главное), а зачем и самое главное КАК ему вызывать функцию в дефиниции? Чтобы её вызвать. нужны аргументы, верно? А где ты возьмёшь аргументы, если ты пытаешься функцию вычислить прямо в определении? Нигде. Следовательно и делать этого не нужно.На самом деле есть такая штука как "синтаксический анализ", и компилятор может анализировать синтаксис кода до его выполнения, НО обрати внимание что чисто синтаксически выражение (define (p) (p)) совершенно легитимно.
>>1422215Не знаю. У меня средний-выше среднего. Мне русскую версию не так комфортно было читать (шрифт, оформление), поэтому занимался по той, что с гитхаба от sarabander.
Закончил 11 класс, по проге знаю мало, писал только регер, парсер и спамер. Но очень хочется подрочиться в сикпе, что нужно знать для норм входа?
Упражнение 1.6. Лиза П. Хакер не понимает, почему if должна быть особой формой. «Почему нельзя просто определить ее как обычную процедуру с помощью cond?» — спрашивает она. Лизина подруга Ева Лу Атор утверждает, что, разумеется, можно, и определяет новую версию if:(define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause)))Ева показывает Лизе новую программу:(new-if (= 2 3) 0 5) 5(new-if (= 1 1) 0 5) 0Обрадованная Лиза переписывает через new-if программу вычисления квадратного корня:(define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)))Что получится, когда Лиза попытается использовать эту процедуру для вычисления квадратных корней? Объясните.Да объясните плз. Этож вроде нормально для липса использовать процедуры в процедурах в которых используются процедуры и т.д. Все параметры вроде как определены вполне конкретно чё он сука виснет то??? Эт вообще нормально что у меня сложности возникают на таком этапе?
>>1422365нашёл ответ. Я так понял что в обычном иф компил не доходит доскрт. Но что меня больше интересует главная проблема в том что процедура в своём теле вызывает саму себя, и еслиб не особенности иф она бы нифига не работала. Насколько вообще это справедливо в общем случае? То есть насколько удачная идея вызывать процедуру в собственном теле?
>>1422333HTDP - это типа упрощенный вариант SICP для тех, кто не хочет задачки связанные с математикой. Обычно рекомендуется попробовать SICP, если совсем не идет, то можешь браться за HTDP
>>1422364Уметь читать.Дальше берешь книгу, устанавливаешь racket и пакет sicp к нему и все. Читаешь, выполняешь упражнения.вот "гайд" https://guides.hexlet.io/how-to-learn-sicp/там есть репозиторий для старта
>>1422388>насколько удачная идея вызывать процедуру в собственном телеЭто рекурсия - нормальная вещь, если есть условия выхода из нееВ книге все описано
>>1422388> и еслиб не особенности иф она бы нифига не работалаВангую там загвоздка в порядке вычислений, ты же выше постил про нормальный и аппликативный порядок, вот при аппликативном сначала раскрываются все аргументы, и если на каком-то моменте пойдёт бесконечная рекурсия, то она пойдёт.Возможно если бы эта хуйня в нормальном порядке вызывалась то и норм было бы ("возможно" потому что не помню книжного контекста и в книжку лень лезть)
>>1422207>Это по сути иллюстрация фразы "не лезь бля дебил сука ебаный" только на схеме.Потерпел сокрушительное поражение.
>>1422413>>1422473дык понятно что рекурсия интересная практика использовать метод до того как раскрыта его суть, еслиб я был корзиночкой с бостона то после первой же лекции отправился толкать дурь в бронксе. Правильно ли я понял что при рекурсии в лиспе не считая родных процедур типа if и cond если я условия выхода из цикла ставлю ДО вызова процедуры то ничего кроме аутофелляции я не получу? Т.е. если я сейчас подшаманю в проге из примера и смогу сделать условия выхода после вызова процедуры то она заработает?>>1422468>>1422469ясненько
>>1422547Я тебе отвечал именно на вопрос про рекурсию> насколько удачная идея вызывать процедуру в собственном телекасаемо же упражнение тут не только в рекурсии же дело, а как написали выше в порядке вычислений. В данном случае new-if сделана как процедура и поскольку у нас апликативный порядок, то с начала будут вычисляться передаваемые аргументы. Вот тут она и зациклиться из-за вызова sqrt-iter в else-clause нашего new-if.
как в лиспе задать цикл с фиксированным числом повторений?Я уже просто ору, переменные так неочевидно реализованы, что ебучий счётчик сделать не могу то есть могу, но тогда надо количество интераций при вызове процедуры вбивать.
>>1422655> как в лиспе задать цикл с фиксированным числом повторений?Эмм… вызвать функцию из другой функции и передать ей количество повторений аргументом, а она будет в конце рекурсивно вызывать себя опять с аргументом на единицу меньшим? Ну так, просто первое что в голову пришло.
>>1422862Я сегодня делал цикл в sqlite рекурсией, в итоге не осилил как надо было мне нужно было n уникальных случайных чисел, я получал меньше чем нужно и сделал на питоне в одну строчку, но любопытно, что там есть такая возможность.
>>1422876Мой подход был совсем неверным, надо было всего лишь рекурсивно сгенерировать числа от 1 до n, пример чего есть в доках, далее просто order by random() limit k;А я пытался проверять на каждом шаге рекурсии получил ли я новое число.
>>1422905>>1422659>>1422862Мне вот просто интересно мы вообще тут сидим с какой-то же целью не думаю, что двачеры стремятся к сферическому самосовершенствованию. Собственно если вдруг я научусь программировать на этом это хоть поможет при использовании других языков?
>>1422961>мы вообще тут сидим с какой-то же цельюРазумеется, лично я например с целью убить всех людей
>>1422961>если вдруг я научусь программировать на этом это хоть поможет при использовании других языков?Не, тебе уже ничего не поможет с такими формулировками.А если серьезно, то да (но не французского, лол).Первые 3 главы - это основы, которые пригодятся с любом случае. Проблема в том, что люди у которых нет опыта это не могут понять и не верят остальным, а те, у которых уже много опыта должны были перерости основы, данные в этих главах. В итоге две категории людей считают, что книга не нужна, только по разным причинам.
>>1422996Без языка только алгоритмы, дискретка, бд и всякие рефакторинги с паттернами.Как тут писали "ну и толку что ты можешь массив отсортировать десятью способами если вывод в файл не осилишь"
>>1422974Ты работаешь программистом? Если нет - выбирай сферу деятельности и изучай языки и экосистему для того, чем хочешь заниматься. Ну и можешь заглянуть в этот список книг https://ru.hexlet.io/pages/recommended-booksЕсли уже работаешь - странный вопрос, ты уже должен был понять, что ты хочешь изучать помимо работы.Но пару собственных вещей могу подкинуть.что-нибудь эдакое? - Теория Категорий (Бартош Милевски)а по прогать? - haskell (LYHFGG, Haskell Programming From First Principles)а что-нибудь похожее на лиспы? - clojure (Clojure for brave)а по хардкору? - TAPLа еще варианты? - Erlang/Elixir (Learn You Some Erlang for Great Good), Prolog (Learn Prolog now)
>>1423007Да не за что. Ну в таком случае те книги по ссылке подойдут лучше, то что я написал уже опосля можешь смотреть.
>>1423015Посмотрел, но большая часть из них у меня уже есть. Просто думал, может есть что-то такое же фундаментальное и похожее на СИКП. Но после него советуют обычно "Чистый код" или "Совершенный код".
>>1422655Если не надо передавать состояние между вызовами тела цикла https://pastebin.com/MZvEMGnMЕсли надо, то используй reduce, или пиши рекурсивную функцию под конкретный случай.
>>1423875Нахуй ты тут пишешь об этом? Всем похуй. Будут результаты - показывай, будут вопросы - спрашивай.
>>1423890Вкатываюсь в комьюнити, завожу друзей. Тебя ебет вообще? Иди одноклассникам рассказывай что им делать.
>>1423017Кстати смотрел скептически на этот совет ещё пару дней назад, но открыл чистый код и и поменял своё мнение.
>>1423900Да я вот тоже, посмотрел недавно обзор на "Совершенный код" и преисполнился в своем познании.
>>1424577Ссылка отклеилась.https://www.youtube.com/watch?v=Eo-aSAgDFd0&list=PLNLaWkCrcvw6qEIMQWBhnfV7Hed-39rXd
>>1422547>не считая родных процедур типа if и condif и cond - не процедуры, а особые формы. Если дочитаешь до четвёртой главы, на глубоком уровне поймёшь, что это такое, реализовав их вручную.
А можно я буду использовать не лисп, а питухон например или даже С при изучении сикпа? Мне ентот ваш лисп вообще не заходит, у меня есть опыт вката на С.
>>1425905 я так понял там весь прикол как раз в том чтоб запилить программу в 3 строки. Большинство заданий в сикпе элементарны если их реализовывать не в лиспе. А так хоть просрёшся маленько
>>1424579Более хуёвого обзора я в жизни ни на что не встречал, надо на этого типа в суд подать.>>1425316Найс байт на чтение
>>1426310> Большинство заданий в сикпе элементарны если их реализовывать не в лиспеНихуя. Из подобного могу вспомнить только дек, который на обычных указателях в каком-нибудь Си действительно проще реализовать, но и то, когда ты врубаешься, как использовать мутабельные пары вместо указателей, все встает на свои места.>>1425905Если с Си у тебя только опыт вката, то я бы не советовал его использовать. Часть заданий СИКПа подразумевает наличие уже готовых фич в языке (замыканий или динамической типизации, например), без которых полноценные решения будет сделать сложнее. Половину третьей главы ты на Си уже не сделаешь (там, где начинаются потоки, реализованные через ленивые вычисления), 4-ю целиком придется пропускать (если только ты не готов сразу написать на сишке полноценный интерпретатор лиспа).Короче, не мучай себя, выбирай питон.
Сверх люди подскажите плз как от>нам требуется доказать, что Fib(n) – это ближайшее целое число к φn/√5, где φ=(1+√5)/2Приходят к >Fib(n) = (φn-ψn)/√5, где ψ=(1-√5)/2;Что ψn вообще такое и откуда оно берётся?Я думал я программирование учить буду, а не матан.
>>1427968Это не матан, это примитивная довольно алгебра. Вот, почитай в научно-популярном журнале для школьников не троллинг: http://kvant.mccme.ru/pdf/1997/06/kv0697kaleid.pdf
>>1428161давай порассказывай мне про то что в школе учат. Хотя хз мб в каких-нить московских лицеях детишек и задрачивают.Мы даж на математической кафедре в нашей шараге золотое сечение и ряды фибоначи мельком проходили и ооооооочень редко оно потом ещё встречалось.
>>1404382 (OP)Пока вы дрочите друг друга в жопы в этом треде, я зарабатываю деньги на веб- и мобильной разработке.
>>1428841еслиб я хотел зарабатывать деньги поехал бы хуячить по вахте на севера или на завод к дяде пете. Всё лучше чем пилить говносайты и никому ненужные приложения на сосифон.>>1404382 (OP)Ктонить знает как remainder работает? Что он делает я знаю а вот как он это делает?
>>1428541>Программирую 30 лет, из них 20 - за деньги.>Книгу не читалА мог бы из них 25, а то и 28 — за деньги
>>1429003>Что он делает я знаю а вот как он это делает?Как он находит остаток? Ты же про остаток от деления говоришь?Ну подумай, а как лично ты находишь остаток? Делишь делимое на делитель, а потом отбрасываешь дробную часть, умножаешь результат на делитель, вычитаешь полученное из делимого. Это первое, что приходит в голову. А соответствует ли это процессу, проходящему в компьютере, мне лично остаётся только догадываться. Но если в языках (например в пистоне) есть т.н. "целочисленное деление", то можно предположить что как-то так всё и происходит.
>>1429294>а потом отбрасываешь дробную часть>Делишь делимое на делитель, а потом отбрасываешь дробную часть, умножаешь результат на делитель, вычитаешь полученное из делимого.чёт как-то не сходится. Да и отбросить дробь без ремаиндера не получится. Меня интересовала реализация именно на лиспе, не думаю что она прям на асмблере написана как сложение ну или как там на чём там кампилятор пишут
>>1429341Почему я должен был подразумевать твоё место жительства, основываясь на одном только языке (ты пишешь по-русски), если в сшп том же русскоговорящих пруд пруди? А если бы ты оказался сыном / дочерью эмигрантов, и обиделся бы?
>>1429394>Да и отбросить дробь без ремаиндера не получитсяЧто-то мне подсказывает, что floor это всё таки низкоуровневая операция, но наверняка ты прав и есть какая-то лисповская её реализация, недаром же компиляторы лиспа умеют компилировать сами себя и недаром же были лисп-машины.Читай дальше, наверняка там потом будет. Заодно и мне расскажешь.
>>1429479Мне тоже лень разбираться, но как я понял, remainder и quotient реализованы на си или асме, а более высокоуровневые функции (floor, round ...) уже на лиспе.
>>1429479Про let дальше в книге объясняется, не помню, то ли в первой главе, то ли во второй.Многие низкоуровневые операции в лиспах реализованы на нижележащем системном языке, читай - на C. Вот, например, низкоуровневая реализация remainder в Racket: https://github.com/racket/racket/blob/b133bea92e34f3e316711a51a8c485ff3715cbf1/racket/src/racket/src/numarith.c#L936В четвёртой и пятой главах будет описано, как, имея произвольные примитивы для работы со списками, которые без разницы где и как реализованы, можно написать реализацию интерпретатора и компилятора соответственно. Дочитай до конца, базарю, ещё захочешь.
>>1429518>>1429482спс анончикиВсё таки хотелось бы узнать на чём вы прогаете. Пользовался https://repl.it/languages/schemeпока не встретился с remainder который он не распознаёт, список его собственных процедур не нашёл. Пересел на racket и чёт ахуел. Вначале от того что там надо выбрать язык. А потом от того что он 4 строки 30 секунд обрабатывает. Затем начались неприятности посерьёзней без begin он отказывался включать в тело несколько процедур. Теперь я столкнулся с проблемой, что он не даёт определить процедуру в теле другой процедуры и вот это уже пздц т.к. чтоб это обойти мне приходится писать в два раза больше.
>>1429596> без begin он отказывался включать в тело несколько процедурНе может быть, ты, скорее всего, что-то не так понял, см. рис. 1.> не даёт определить процедуру в теле другой процедурыНе может быть, ты, скорее всего, что-то не так понял, см. рис. 2.> А потом от того что он 4 строки 30 секунд обрабатывает.У тебя там что, пентиум два? Даже на моём некрожелезе 2012 года ракетка быстро шевелится.
>>1429649А че так ракетная иде так много памяти жрет?ето ж пизда, боюсь представить сколько ей надо, когда строк кода будет побольше 10
>>1429685> 521.55M> многоКек, интересно послушать, что ты скажешь про новомодную электронохуету типа vscode или atom.
>>1429690Так vscode жрет столько же при куче дополнений лол>новомодная>атомподелил на 0 так сказатьладно иди на хуй, дебил.
>>1429649ну ок может не 30сек может 15-20простоhttps://repl.it/languages/schemeмгновенно всё считалкомп асасина последнего на максималках 1080 30 фпс тянет
>>1429685Ты думаешь, что занимаемая ide память заисит от количества строчек в твоем файле?>>1429692Атом определенно относится к поколению "новомодных иде на электроне", которое до сих пор является новомодным. До этого были "новомодные иде на джаве", но сейчас они уже не новомодные.Нормальные же люди, разумеется, юзают имакс.
>>1429703Поставь поддержку sicp в своём racket, продвинутый студент: https://docs.racket-lang.org/sicp-manual/Installation.html> ну ок может не 30сек может 15-20Друг, у тебя скорее всего жёсткий диск помирает.
>>1430054Да быть такого не может. Я вышел в интернет с данным вопросом, така проблема не только у меня. Получше стало когда 86 версию поставил, но всёравнодолго
>>1430047>Ты думаешь, Все ясно, очередной дебил, решающий за других. больше строчек, больше данных, больше операций, больше памяти. Объяснил для имбецила.
>>1430729Нет, в книге язык объяснят по ходу дела. Всё, что тебе нужно, в шапке треда а ещё точнее, вот по этой ссылке https://docs.racket-lang.org/sicp-manual/Installation.html
>>1404382 (OP)Двощ, на собеседовании сказали пиздовать читать SICP. Собеседовался на JS-макакена.Вопрос: нахуя? Зачем нужна эта книга и чему она меня научит?
>>1430813>Двощ, на собеседовании сказали пиздовать читать SICP.Ебать у меня брови поднялись щас до потолка.Не врёшь, не троллишь?
>>1430832в том что это основы основ.И если у анона есть диплом по данной специальности то он может его смело выбросить.
>>1431017Не верится просто что жс макакам неиронично советуют эти самые основы основ, такое ощущение что анона слегонца тральнули на собесе.
>>1430813>чему она меня научитПрограммировать. и это тонкий намек на то, что ты сейчас это делать не умеешь
>>1431033причём я уверен что антуан на самом деле не очень то и заслуживал подобного, но хрюша не хрюша если не козырнёт хотя бы зачатками знаний.
>>1431119А вот я думаю, что заслуживал. Он же наверняка даже русскую версию открыл после того собеседования, пробежался глазами и понимай он, что там пишут - стал бы хуесосить хрюшу, мол там нихуя интересного в книге нет, я все это умею, хуле он доебался? Но нет, он задает вопросы по книге, значит все-таки рыльце в пушку, ну или в говне, лол.
https://sicp.comp.nus.edu.sg/index.htmlПосоветовали как более внятную современную версию SICP на JavaScript. Как думаете стоит изучать на нем? Книга полная более менее? Хотя бы основные главы полные? Пройдитесь пожалуйста глазами кому не сложно. Или идея максимально тупая? Просто прошелся глазами и охуел от оттого что на инглише мне более понятно о чем пишут чем в русском переводе оригинала.
>>1431427>We need an appropriate language for describing processes, and we will use for this purpose the programming language JavaScript. Just as our everyday thoughts are usually expressed in our natural language (such as English, French, or Japanese), and descriptions of quantitative phenomena are expressed with mathematical notations, our process descriptions will be expressed in JavaScript.Блядь, они просто прошлись поиском и заменой?
>>1431427>Хотя бы основные главы полные? Основные главы на месте, но я бы всё-таки взялся бы на твоём месте за оригинал, чтобы не пришлось потом рот мылом от JSговна отмывать
>>1431493Ну там хотя бы изначально авторы книги под лисп писали, а как качественно под js интегрировали - большой вопрос.
>>1431492JS просто единственный язык который я знаю более менее хорошо. Ну еще Java но на нем писать пытка. И палкой не заставишь.
>>1431313Так и представляю, как корзиночка, закончивший зажопинский колледж с отличием по специальности оператор ЭВМ, с ноги открывает дверь в московской гарант и с гордостью вываливает на стол свой диплом.
>>1431511Ещё и понты гнуть начинает: в совершенстве владеют бэйсиком, владею Паскалем и делфой, знаю синтаксис асмы. Вы такого спеца хер где найдете ещё.
>>1431493В моём рту знание элементарной хуиты уровня "ну карочи в скобках список из элементов чериз прабел, там ищё аператар впирёд можна паставеть" занимает очень мало места.
>>143153221 век. Сейчас вышку даже на курсере можно получить. Выйдет не сильно дороже чем в рашковузе
>>1431532>>1431536Какие запросы такая и вышка, у нас от фактических знаний почти везде ничего не зависит нужна либо корочка либо опыт работы и корочка либо знакомства.
>>1431588Добрый вечер, а кто? Еслиб наш рынок реально бы требовал квалифицированных специалистов, то вузы бы их готовили никто бы просто не ходил в вузы, которые дают недостаточно для устройства на нормальную работу. Сейчас же пофиг куда ты пойдешь учится лиж бы корочку дали, а остальному на работе научат.В принципе я не считаю что это что-то плохое когда человек приходит на работу и его надо учить работать. Особенно сейчас когда постоянно все меняется. Как раз и нужно чтобы вузы делали человека максимально обучаемым. И с этим у нас в стране всё не так уж плохо. У технарей разумеется. Гораздо хуже то что кроме ит и менеджмента высшего звена у нас практически нет сфер где реально бы ценили специалистов.
>>1431720>Добрый вечер, а кто?Ты не в курсе кто финансирует вузы в РФ?>б наш рынок реально бы требовал квалифицированных специалистов, то вузы бы их готовилиОдно не следует из другого. Вот если бы заинтересованные лица лично лили деньги в этот процесс, тогда да.К остальному у меня нет вопросов.
ЗНАКОМОЙ ТРОПОЙ ВЕРНУСЬ Я ДОМОЙНу шо, был перерыв месяц, возвращаюсь к обучению. Прорешиваю хтдп первой версии, прорешал 25% вполне успешно, сейчас буду двигаться дальше.
>>1432522А ты тот оп, что примерно год назад вкатывался и менял сикп на слоников и т.д.?Давно за тредом не слежу
>>1432597Да, он самый. Сменил сикп на слоника, потом слоника на книжку с серой обложкой (в оп-посте есть ссылка), потом хтдп второе издание прошел на 20% и пришлось дропнуть, т.к. уперся в структуры и их очень плохо объясняли, теперь хтдп первое издание прошел на 25%.
>>1432605Хотя еще пропустил, что после сикпа я хтдп 2 издание пробовал, но на введении дропнул, т.к. тоже не пошло.
>>1432605Я уж думал, ты уже весь сикп прорешал и поднимаешь 300 к/сек. Ну удачи тебе, ОП. Надеюсь, теперь хдтп пойдёт. Твоему упорству можно позавидовать.
>>1432608Видишь, я полгода только врубался и вникал, что такое программирование и с какой стороны в принципе подходить к обучению, метался от книги к книге и пр. Другие полгода уже более-менее учился и прорешивал, но с перерывами по месяцу-полтора, т.к. то мозги закипят, то своих дел накопится. Но дело не бросаю и сейчас все вполне получается.>Ну удачи тебе, ОП. Надеюсь, теперь хдтп пойдёт. Твоему упорству можно позавидовать.Спасибо, думаю не подведу :З
Приветик, ньюфаг и немного продвинутый в компах в треде. Решил вкатиться в программирование, ухнал про этот ваш SICP. Английский знаю на приличном уровне, поэтому думаю осилю.Собсна, в чём вопрос. Обязательно ли решать задачи на Scheme? Можно ли читать SICP параллельно с документацией какого-нибудь питона/жабы/си? Или, может, тут нужен конкретно Scheme или конкретно функциональное программирование?
Бле всё я сдаюсь. За последние две темы не смог решить ни одной задачи самостоятельно. В лучшем случае я формировал решение на листочке, но не мог его сделать на шеме, тупа чего-то не хватает я думаю преподавателя, что б подсказывал и направлял. тупым я себя есно не считаю 212 по егэ не так уж плохо. И что за сверхразумы без образования тут самостоятельно всё это прорешивают мне не понятноПопробую хтдп чёт мне кажется я там ещё больше пососу т.к. английский слабовато знаю, а на русском не нашёл. Если не получится пойду смотреть видеогайды как сделать сайт.
>>1434019Видимо стараешься хреново, раз на листочке всё нормас. На какой теме то хоть остановился? Совсем новичок в программировании? Просто мог бы на каком-нибудь другом языке тогда писать, если схема сложной кажется( хотя из всех функциональных легче неё не видел вообще). Ну или сюда в тред посрал бы.> 212 лмао> Попробую хтдп там не легче уже точно, возьми яйца в рот и продолжай sicp ,сука.
>>1434154Не рекомендую HTDP и SICP. Код в обоих книгах представляет собой помои, написанные по бэд практисам. В продакшен такие портянки с дрисней не пошли бы. Обе книги расчитаны на скриптовых макак, в то время как программист должен изучать архитектуру компьютера и операционных систем, режимы работы процессора, работу программ на низком урове, PE формат и уметь пропатчить программу в hex-редакторе.
>>1434495>В продакшен такие портянки с дрисней не пошли быКак раз потому, что код чересчур "умный", в продакшене нужен код в который не надо вникать по три часа. А в обучении заебись.Нахуй не нужны человеку на начальном этапе бест практисы и паттерны.Реверансв сторону жс вообще ни к селу ни к городу.
>>1434495Чушь собачья. Основная проблема в разработке ПО - это сложность больших программ. СИКП учит справляться со сложностью разными способами - начиная с абстрагирования элементов программы и заканчивая разработкой языков, на которых решение и формулировка задачи оказывается проще и понятнее.Какие у тебя претензии к коду в СИКПе вообще не очень понятно. Код там предельно ясный. Единственная претензия, которую к нему можно предъявить - местами он не оптимален, но авторы и сами об этом говорят.
>>1434209>раз на листочке всё нормасЕсли бы, вот за последних 2 темы было 12 заданий "на листочке" я смог сделать 2 или 3>На какой теме то хоть остановился?Процедуры в качестве аргументовСамое херовое, что код для меня минимум читабелен, даже чтоб просто разобрать решение у меня уходит дохера времени. Что бы понять что делает строка надо держать в уме весь код потому что постоянно ссылается одно на другое и что либо упустить очень легко. И при таком раскладе сделать что-либо самому без тупой копипасты для меня становиться нетривиальной задачей.Упражнение 1.29. Вроде элементарная задача. Я блядь даже несколько способов придумал, но пытался реализовать в первую очередь те что были максимально близки к примеру из темы. И вот на элементарный пример угрохано ДЖВА часа и хуй, а потом ещё минут 30 разбирал пример. Непонятно толи моё решение в принципе не правильное то ли просто где-то зарылась ошибка в понимании работы самого языка. И спросить негде. Тоесть я конечно могу засирать топик по каждой мелочи или там найти какойнить форум или канал для этого. Но блджадь этож всё столько времени. Насколько легче было еслиб я подошёл к кому-нибудь, показал что я сделаль и он бы хотяб сказал давай по новой вообще мимо или бля норм ты только не там процедуру определяешь. А так какой смысл от это сикпа будет если я его осилю только лет через 5?Ладно чёт неосилятор разнылся.>>1434154А в чём разница?
>>1434523>А в чём разница? Они сначала первую версию выпустили, а несколько лет спустя переиздали. Так вот я вторую прорешивал, уперся в структуры - их откровенно по уебанскому описывают. А первую сейчас решаю, прям очень сильно сложилось впечатление, что намного подробнее и лучше объясняют материал.оп
>>1434523>надо держать в уме весь код потому что постоянно ссылается одно на другое и что либо упустить очень легко. Добро пожаловать в бытие программистом, таким на работе ты будешь заниматься по 8 часов в день 5 дней в неделю, и ещё начальник будет стоять над душой и орать, хули ещё не готово.> Тоесть я конечно могу засирать топик по каждой мелочи или там найти какойнить форум или канал для этого.Нутк пиши сюда в тред, тут всё равно почти никого нет, кроме опа и залётных троллей. Или в тележке пиши в @scheme_ru, там будут рады любой активности.
>>1434679>имплаинг не ясныйСначала гуглю что значат квадратные скобки, узнаю что это псевдоним для обычных скобок.Функция под названием small, принимает на ввод l и tесли l пустой вернуть пустой списокиначе если первый элемент l (уже понятно что l значит list) меньще t Гуглю что значит cons, узнаю что оно строит пары (пары != списки)сделать пару из первого элемента l и результатов функции small, которой передан список l но без первого элемента и tиначе (если первый элемент l больше t) просто вызвать small как в первом условии, только без создания пары.На выходе должен получиться список (не уверен, но википедия намекает что именно список), состоящий из всех элементов l меньших tЕсли бы я читал книгу, а не мимо проходил, то и гуглёж бы наверное не понадобился (если книга хорошая)
>>1435055https://htdp.org/2019-02-24/part_three.html#%28counter._%28figure._fig~3acmp-above-below%29%29
>>1434523Ты не осилил предыдущие темы. Помню K&R читал разбирал каждую букву. Потом сам себе придумывал задачи, в итоге я решал сам прорешалто что приводилось в каждой главе в конце не подглядывая и часто залезал в последующие главы если мне чего-то не хватало. Что-то упустил.
Блин, а этот недетерминистский интерпретатор не так прост. Т.е. я разобрался и понимаю, как он работает, но не уверен, что смог бы сам додуматься до такого же простого и красивого дизайна.
Тред не читай, сразу пиши. Привет, двач. Мамкин вкатывальщик в треде. В ближайшее время хочу начать вкатывание, отрубить телефон со старой работы, съебать в деревню (энторнет там ловит) месяца на 3, взяв с собой томик Кнута и СИКП. Планирую задрачивать в режиме сон-еда-учеба. Есть ли смысл покупать платный акк на codeacademy? Когда из меня выйдет что-либо подобное на junior'а? В какой язык следует вкатываться - C++, Python или наоборот следует брать какие-то экзотические вещи типа Haskell? Как восполнить дефицит матана и прочей хуйни (у кореша нашел книгу некого Зельдовича "Высшая матетматика для начинающих")? Английский шарю свободно.
>>1438318Можешь столкнуться с такой проблемой, как у меня, когда через месяц активного обучения просто мозг закипит и следующий месяц не сможешь заниматься. По языкам не проконсультирую, т.к. сам еще не вкатился. Платные аккаунты считаю полной хуйней.оп
>>1438487Да, еще допишу, когда с полным погружением в дело уходил, я спал 2 раза в день, часов по 5. Потому что если спишь один раз, проснулся, несколько часов позанимался, мозг устал и уже до отбоя половину дня ты не занимаешься. А когда спишь 2 раза в день - 5 часов поспал, несколько часов позанимался, мозг закипел, может часок хуетой позанимался и спать лег, во сне мозг отдохнул ну и так далее. Короче максимальное погружение, но, повторюсь, что мозг потом сдается и месяц, а то и полтора просто не подходишь к обучению.
>>1438318Выбери технологию, Почитай Петцольд "Код" потом или паралельно когда уже что-то поймешь приступай к основам языка и постоянно практикуйся двигаясь вперед, не пытаясь понять все сразу, книгу по языку как худ. лит. не читай, юзай как справочник.
>>1438506Т.е. learning через doing? Писать helloworld и постепенно усложнять или поставить задачу по написанию желаемой программы (например бот в телеге) и постепенно въезжать как он пишется? Книгу начал читать - до чего люблю американских авторов, пишут, чтобы ты понял, а не для того, чтобы "ой какой я умный, какую пиздатую книгу написал".
>>1438487Ну я планирую поставить себя в безвыходную ситуацию. Отрубить телефон и контакты с внешним миром. Будут заканчиваться деньги и это станет стимулом лопатить дальше. В принципе - у меня и сейчас такая работа, что иной раз мозги в трубочку сворачиваются, много информации, сложные гуманитарные абстракции (я юрист лол).
>>1404382 (OP)Посоны, поясните что за SCIP и кому он полезен. Я начал читать книжку, там все примеры на языке lisp. Что я знаю про lisp? Что это древний язык, который ни где не используется. Очевидно, у этого языка, как и у любого другого, есть свои особенности синтаксиса и заточен он под что-то определенное. Возникает вопрос: можно ли извлечь из SCIP пользу программисту независимо от используемого языка и области разработки?
>>1438942Да, примерно так. После прочтения книги Петцольда начинай учить основы программирования и лучше всего начать с С, потом С++ только классы что бы понять ООП, а дальше переходить на желаемую технологию делать что-то более реальное.
>>1438943Попробуй, только отпишись потом, не поставил ли мозг тебя в безвыходную ситуацию - "пиздуй дворником мудило, но в ближайший месяц по программированию меня не трогай".
>>1439108Обоснуй. >>1439094 Ок, но почему все говорят про SICP, хотя там, как выше указывалось - используется ЛИСП, в котором как я понял нет такой хуйни как "переменная", но вроде как есть целая глава ООП. >>1439106Ок, отпишусь в тред про итоги что и как.
>>1439113Нахуй не нужен этот си. Убогое говно, которое костылями допиливали до си+, в котором тоже было дохуя говна и допилили до крестов, кресты из-за массы костылей и допиливаний тоже является уебанским и тупорылым говном.
>>1439152И тем не менее основы (циклы, условия, функции, переменные) лучше изучать на примере С, а не Джавы, где сразу непонятные классы и не дай Бог JS.
>>1439155То, что Джава говно для пидоров - я давно понял. >>1439152А в чем убожество С, что реализовали в + и ++? И почему + и ++ говно?
>>1439155Вроде тред про лисп, а ты чешешь про яву и js>>1439163Сходи в их тред, там почитай. И определись уже, что делать будешь. Сикп решать или си изучать.
>>1438973>Очевидно, у этого языка, как и у любого другого, есть свои особенности синтаксисаУ этого языка особенностей синтаксиса намного меньше, чем у любого другого существующего языка, потому что почти весь синтаксис лиспа - это ( (открывающая круглая скобка) и ( (закрывающая круглая скобка), что, в общем-то, и позволяет сконцентрироваться на изучении фундаментальных вещей, не отвлекаясь на разную синтаксическую мишуру.> ни где не используетсяТы, мягко говоря, ошибаешься.https://lisp-lang.org/success/https://common-lisp.net/lisp-companieshttps://clojure.org/community/companieshttps://news.ycombinator.com/item?id=9813111
>>1439229Я думал главный профит скобочек в том, что это по сути AST, из-за чего код можно воспринимать как данные и вертеть его как пожелаешь.
>>1439230Да, гетерогенность - это то самое, что мейнстримные языки пока ещё не осилили спиздить из лиспов. Разве что в Ruby что-то такое смутно есть, но вроде как извращённое.
>>1438318Хоть и поздно, но вставлю свои 5 копеек.Покупать платный акк смысла нет.И вообще, прежде чем покупать какой-то курс хорошо поищи нет ли его уже в открытом доступе слитого. Сейчас очень много курсов можно смотреть бесплатно.У каждой компании понимание лычек (джун/мидл/синьер) разное. Некоторые могут взять и совсем начинающего, если заметят что способный к обучению и тебе нравится то, чем занимаешься. Но в любом случае надо хоть что-нибудь уметь в выбранной сфере. Изучаешь основы - идешь штурмовать собеседования. Минимум по срокам я бы сказал 6 месяцев. Максимум, наверное, года 1,5 из того, что лично знаю.Язык - это инструмент. Выбрав первый язык программирования не обязательно потом на нем сидеть всю жизнь. Поэтому я бы порекомендовал, чтобы не было проблем найти работу, брать что-нибудь мейнстримовое на первое время (JS, PHP, Python). Это для работы.Для обучения - СИКП с схемой самое то. Проходишь первые 3 главы. Дальше садишься за книги "Код", "Идеальный программист" и выбираешь чем будешь заниматься.Я сам js разработчик, поэтому по php, python не подскажу. Но, если это веб, то независимо от языка проще будет начать с курсов той же html academy по верстке - там будут базовые знания по html/css. JS лучше разбирать не у них, а по learn.javascript.info. Как будешь на этой стадии проблем что разбирать дальше не возникнет, думаю. Если все же будут вопросы - пиши.На начальной стадии матан практически не нужен. Уже когда разберешься с базой можешь засесть за алгоритмы (лучше начать с "Грокаем алгоритмы", а не Кнута).За английский большой + тебе. Некоторые могут взять средненького кандидата только из-за того, что он неплохо прокачан в инглише.P.S если еще не умеешь печатать вслепую - научись
>>1440339Спасибо тебе, анон. Я не ухожу с треда, т.к. планирую описывать свой процесс вкатывания, чтобы другие аноны могли это наблюдать в режиме рил-тайм. В общем начинаю разрабатывать план своего обучения, очень много дельных советов поступило. Чуть позднее сброшу, как я себе описал детальный план вкатывания. Слепая печать у меня развита. Я пишу тебе сейчас с MacBook на котором нет русских клавиш.
>>1440368Как узнать, что у человека техника эпл? Он сам тебе об этом скажет в первые минуты разговораха классика блять.
>>1441402Открою тебе тайну, только никому не говори. У всех самых крупных IT-компаний есть собственные исследовательские лаборатории. И у всех есть секретный исследовательский отдел, который днями и ночами пытается написать на Scheme интерпретатор языка Бога.Абельсон и Сасман закодировали в СИКПе ключ к созданию такого интерпретатора и вот уже 40 лет тайное общество программистов пытается его расшифровать. Истоки уходят корнями в Ветхий Завет. Создав такой интерпретатор, мы сможем напрямую говорить с Богом. Получим огромную власть.Но даже сейчас у нас все схвачено. В любой крупной компании руководящие места давно занимают лисперы. Приняв обет и вступив в общество тебе открываются все двери. В любом городе тебе дадут лучшую гостиницу. Любые женщины будут твоими. Счета в банках с десятью нулями на конце.Но ты должен прорешать СИКП целиком и посвятить свою жизнь служению великой ЛИСП-машине и построению интерпретатора языка Бога. В качестве вступительного экзамена попросят доказать, почему алгоритм решения задачи о размене монет (SICP 1.2.2) корректен. Потом надо будет придумать язык для работы в заданной предметной области и написать его интерпретатор - ты должен быть металингвистическим программистом. Наконец, надо принести клятву верности: я отдаю свою жизнь служению ЛИСП-машине и созданию интерпретатора языка Бога. Вечная слава пророку Маккарти!
>>1441402Только с ним - будет трудновато. Читай пасту "высшее образование в IT своими руками v2", там подробно описано про то, как вкатиться хоть на 300к+.
А я напоминаю, что ваша книга говно и не имеет ничего общего с реальным коммерческим программированием. Уже жду ваших проекций и поисков формошлепов-вебмакак под кроватью.
>>1442490> поисков формошлепов-вебмакак под кроватьюЧе их искать? Я формошлеп-вебмакака. На работе есть кадры, которым бы не помешало прорешать половину книги, т.к. строить нормальные абстракции они так и не научились.И с реальным коммерческим программированием на том же js она имеет точки соприкосновения.Но в плане того, что из нее сделали культ (типа книга книг) - тут я не согласен. Эта книга всего лишь часть обучающего процесса, а не вещь, которая заменяет собой все другие источники.
>>1443206>Можешь все задачи из книги делать на любом функциональном языкеВ прямом смысле? Допустим если я хочу выучить в будущем С или питона какого нибуть, мне поможет эта книга?
>>1443206Вот только нахуя, лисп простой как мой хуй, там из всего сахара только скобачки блядь. Для ньюфагов больше и не надо.
>>1443210Эта книга не для изучения языков, а для тех, кто уже осилил хоть 1 функциональный язык. Я бы рекомендовал любой ML по вкусу, окамл, хачкель и т.д.>>1443211Лисп это простой язык для парсинга компилятором, а в реальности люди не мыслят стековой архитектурой и ломают глаза на кучи скобок.
>>1443212>Эта книга не для изучения языков, а для тех, кто уже осилил хоть 1 функциональный языкСпасибо, мне почему то казалось что эта книга наоборот для абсолютных новичков что бы познать фундамент програмирования.
>>1443212Это книга для вкатывающихся блядь, ее на первом курсе читали нахуй сходу всем долбоящерам поступившим. Все основы погромача в ней.
>>1443213Не слушай этого долбоеба, удивлен вообще почему он до сих пор не притащил пасту про хаскель.
>>1443221Лол, ну раз вы не можете определится то я все таки прочитаю ее, все равно много свободного времени есть.
>>1443348Ты возвращайся, когда ознакомишься с логикой и поймешь, что аргумент по аналогии не состоятелен.Сука, нахуя вас крестьян читать и писать учили, чтобы вы такую хуйню писали, ничего в жизни не прочитав достойного? Жаль впустую потраченные часы твоего учителя по родному языкумимо
>>1443763Да соси хуй щекан. Если ты в своей шараге логику учил, это тебя и твои высеры нихуя компетентнее не сделает.
Ну что, 11 июля я вернулся в обучение после месячного перерыва. Собственно через 2 дня из обучения обратно выкатился, лол. И до сих пор нихуя не делаю. Но тупо времени нет, исключительно поэтому. Такая вот хуйня.
>>1446404Я вот таким же занимался как и ты. А потом понял, что важно как можно быстрее устроиться на работу, как можно скорее начать решать реальные задачи. СИКП можно и попутно изучать. Что толку от него, если не решаешь продакшн задач и не можешь программировать за деньги? Тебе не кажется, что ты тратишь время в пустую? Так можно и 10 лет обучаться, но так и не начать писать код за деньги.
>>1446444Я короче этого чувака посмотрел и прозрел.https://www.youtube.com/watch?v=nAJKFPijN9QКлассный инженер, с математическим образованием, пробовал разные языки, в том числе Haskell (что крайне редко встретишь среди пхпшников, тем более тех кто использует битрикс). При этом стремится к эффективности, простоте. Поэтому я тоже решил поумерить аппетиты, и писать хоть на чем, лишь бы за деньги, хоть вордпресс использовать. Поюзав немного пхп, поюзав го, таки понял, что самая быстрая и эффективная разработка будет с рельсами.Рельсы хороши тем, что руби простой, кроме рельс почти ничего не юзают, а это значит, что не нужно распыляться на разные фреймворки как в пхп. Рельсы работают за тебя, куча автогенераций, готового кода, что очень ускоряет и облегчает разработку. Все проекты на рельсах устроены одинаково, это значит, что изучив один проект на рельсах, будешь знать как устроены все другие проекты, и не составит труда влиться в любой новый проект. Руби сейчас не пиарят, говорят что умер, это еще один плюс, мало конкуренции. Ну и один из самых больших плюсов это отличное сообщество.P.S. На всякий случай, это я писал вот этот пост. >>1446424 Даю как бы отчет, что собираюсь делать я, чтобы начать писать за деньги вместо пустого академического программирования.
>>1446850(define (lower-bound x) (define mistake 0.4) (- x mistake))(define (upper-bound x) (define mistake 0.4) (+ x mistake))(define (mul-interval x y) ((let ((p1 (+ (lower-bound x) (lower-bound y))) (p2 (+ (lower-bound x) (upper-bound y))) (p3 (+ (upper-bound x) (lower-bound y))) (p4 (+ (upper-bound x) (lower-bound y)))) (make-interval (min p1 p2 p3 p4) (max p1 p2 p3 p4)))))(define (make-interval x y) (cons x y))
Пацаны, объясните, а чем полезна вся эта тема для человека, который будет всю жизнь кодить на питоне, на сях, на сях с плюсами, жабаскрпте и тому подобных?
>>1446835> СУКА ДА ЧТО Я ДЕЛАЮ НЕ ТАК!Ты то, что возвращает твой make-interval пару (13.2 . 14.0) пытаешься вызвать, как функцию, что, конечно, невозможно: 13.2 - это число, а не функция. Присмотрись, вокруг let одна пара круглых скобок лишняя.
>>1405373Domain driven design и Applying domain driven designКажется это то что ты просишь, посмотри.
>>1446424Да нет, вроде бы не в пустую трачу время. Просто есть такие дела, что нихуя не отложишь, а там уже сикп решать (хтдп, как в моем случае), js или еще что, какая разница, если один хуй времени нет.
>>1446960Это база, не зависящая от языка, понимание которой в начале пути облегчит жизнь в дальнейшем тебе и твоим товарищам по работе.
>>1447261> облегчит жизнь в дальнейшем тебеА в чем конкретно? Хотелось бы примера, а лучше нескольких для более целостного понимания картины.
>>1447270Ты начнешь строить хорошие абстракции в коде, что сэкономит много времени и нервов, особенно тем, кто будет твой код читать и поддерживать. Еще книга заложит понимание функционального программирования, расскажет про основу объекто-ориентированного подхода, объяснит тебе в чем сложность программ и как с ней бороться.Это первые 3 главы. Если продолжишь читать дальше, то поймешь как и с какой целью создаются интерпретаторы языков программирования.
Вести с полей, снова. Решаю задачу 2.18. Пытаюсь зделать так, чтобы обратный список выстраивался путем вычленения каждого элемента списка.Где я объебался?(define (reverse sample) ( (define count (length sample)) (define (iter-reverse count) (if (= count 0) (list-ref sample 0) (cons (list-ref sample (- count 1) (iter-reverse (- count 1))))))))
>>1447361(define (list-ref sample-list n) (if (= n 0) (car sample-list) (list-ref (cdr sample-list) (- n 1))))(define squares-list (list 2 4 8 16))(define list1 (list 4 3 2 6 3 4 1 3 54 3 2234))(define emptylist (list ))(define (length items) (if (null? items) 0 (+ 1 (length (cdr items)))))(define (last-pair sample) (if (= (length sample) 0) "error" (list-ref sample (- (length sample ) 1))))(define (reverse sample) ( (define count (length sample)) (define (iter-reverse count) (if (= count 0) (list-ref sample 0) (cons (list-ref sample (- count 1) (iter-reverse (- count 1))))))))
>>1447580Ну работает он в компании где пилят Битрикс, что с того? Чувак закончил физмат, имеет большой опыт программирования на разных языках (в том числе Хаскель и т.п.), шарит в парадигмах, реализовал много крупных проектов. А чего добился ты? Дрочишь хеллоуворлды небось за бесплатно.
>>1404382 (OP)Как создавать и импортировать модули в scheme?Знаю (load "filename"), но он просто добавляет код из файла в область видимости, а было бы хорошо импортировать функции и давать имя.
>>1448085Не понял, чем тебя не устраивает load. У тебя и будут доступны все функции загруженного модуля по их именам. Или ты хотел, чтобы к ним можно было обратиться через имя модуля?
>>1448139Ну да, либо при импорте можно было задавать имена функциям, чтобы не было конфликтов имен и сразу было видно, что именно импортируетя. Ну как import в javascript.
>>1447363Не копипасть код в тред, выковыривать из твоих постов его никто не будет. Отправь на repl.it лучше и сюда ссылку.
>>1448085Сильно зависит от используемой тобой реализации. Если она поддерживает стандарт r7rs, то смотри тут http://www.larcenists.org/Documentation/Documentation0.98/r7rs.pdf пункты 5.1 и 5.6.Если используешь Racket, в нём довольно много расширений относительно стандарта, у модулей там своя, особая атмосфера: https://docs.racket-lang.org/guide/module-basics.html
Умные вопросы. a = 3 b = 4 if (and (> b a) (< b ( a b)))(if (and (> b a) (< b ( a b))) b a)Правильно ли я понимаю, что на русский язык выражение переводится как: - если одновременно является верным, что ("в" больше "а") И (В меньше произведения АВ) то В получается значение А? В это случае я не догоняю - почему компиллятор на компе вычисляет выражение этой хуйни как 16: cond ((= a 4) 6) (cond ((= a 4) 6)((= b 4) (+ 6 7 a))(else 25))Ведь cond дает в качестве ответа последнего вычисленного выражения, т.е. он считает ((= b 4) (+ 6 7 a)), где значение a= b = 4.Где я не прав блэт?
Ссылка: https://repl.it/@ArtiemAlieksiei/LightgreyFrightenedNumericalanalysis-1Правильно ли я понимаю, что на русский язык выражение переводится как: если одновременно является верным, что ("в" больше "а") И (В меньше произведения АВ) то В получается значение А? В это случае я не догоняю - почему компиллятор на компе вычисляет выражение этой хуйни как 16. Почему он использует значение А = 3, если в строке с if мы дали ему значение B, которое равно 4?
>>1448396Тебе важно понять, что в лиспах нет болезненного деления на statement и expression, как в других языках, в лиспах всё - выражение, даже небо, даже аллах, даже if на третьей строчке по твоей ссылке, который никуда не возвращает своё значение (a или b, в зависимости от условий), и, как следствие, бесполезен.
Заняло три часа, чтобы прочитать предисловие. Такого количества жаргона и заумных слов я не встречал еще ни в одной книге. Как люди в 90-х и 00-х это читали? Что, например, значит, "As in every other symbolic activity, we become convinced of program truth through argument."? Или "The discretionary exportable functionality entrusted to the individual Lisp programmer is more than an order of magnitude greater than that to be found within Pascal enterprises."? Может быть я просто слишком тупой?
Со вчерашнего дня ебусь на задачей со страницы 38. Условия: пользователь вводит 3 числовых значения, программа считает сумму квадратов двух наибольших. Вот мое решение: https://repl.it/@ArtiemAlieksiei/govnoebanoeМоя логика такая: + ответ1 ответ2 ответ1 = xx, если x>y>z yy, если y>x>z z*z, если еще что-тоответ2 = примерно то же самое только действий по сравнению 2. Вопросы: - какого хуя в ответе получается 162, а не 81+25=106- как можно использовать cond в этой случае, ведь нужды сравнивать 2 раза нет, мы уже выяснили самое большое число, получив ответ1.
http://sicp.sergeykhenkin.com/sicp-exercise-solutions/и пиши код, а то не оч понятно что ты имеешь в виду.
>>1449038Код по ссылке был в реплите: (define x 3) (define y 5)(define z 9)(+(if (>= z x y) ( z z) (if (>= y x z) ( y y) ( z z))) (if (>= z x y (and (>= y x z))) ( x x)(if (>= y z x (and (>= x z y))) ( y y) ( z z))))
>>1449045https://repl.it/@ArtiemAlieksiei/govnoebanoeну у меня норм посчиталможет ты не так процедуру вызываешь?
>>1449038Вот решение для этой задачи - мне в целом понятно, что написано, но есть вопросы, ответов на которых в начале глав книги я не увидел. Можно ли попросить о помощи в ответе на них: http://sicp.sergeykhenkin.com/2007/08/14/sicp-exercise-solution-1-3/(define (square a) ( a a)) (define (sum-of-squares a b) (+ (square a) (square b)))// почему не нужен отдельный (define (square b) ( b b)? (define (sum-of-biggest-squares a b c) // вот здесь он вводит выражение, смысла которого я вообще не понимаю, но попробую перевести на человечий язык: - "я ввожу переменную sum-of-biggest-squares", но почему он пишет "a b c", по моей логике - он должен еще до этого сделать (define c), а после sumofsquares должна открыться скобка и сразу cond (cond ((and (>= a c) (>= b c)) (sum-of-squares a b)) ((and (>= a b) (>= c b)) (sum-of-squares a c)) (else (sum-of-squares b c))))Что я не так понимаю?
>>1449062мдэм... если конечно я правильно понял твои вопросыВначале он пишет процедуру квадрата, которую потом вызывает в процедуре sum-of-squares. В лиспе переменных нету, есть формальные параметры, которые используются в процедуре и перечисляются после имени процедуры.
>>1449062ещё замечу что я это задание писал одной процедурой. Эт уже там профессиональная деформация у автора пошла он всё готов на процедуры разложить что вообщет является полезным навыком одним из-за которых мы эту книгу и открываем
>>1448872Ты просто хуёво английский знаешьsymbolic activity - активность, связанная с манипуляцией символами/текстомargument здесь - глагол"Как и в любой другой активности, связанной с символами, мы убеждаемся в истинности программ с помощью рассуждений"Ну и так далее. Читай русский перевод, он хороший только опечаток в нём дохуя
>>1449062>- "я ввожу переменную sum-of-biggest-squares", но почему он пишет "a b c"Потому что это не определение переменной, а определение функции. NOTE THE DIFFERENCE IT COULD SAVE YOUR LIFE(define test 42) ;; переменная, изначально равная 42(define (test) 42) ;; функция без аргументов, которая всегда возвращает 42Камон братюнь, ты первую главу, где основы синтаксиса объясняют, жопой читал?
>>1449199 Перечитал первую главу, он об этом в одном месте лишь вскользь упоминает, точнее использует операторы функции таким образом. Таким образом: define (test a b c) (y) - означает "я определяю функцию "test" со значениями a b c способом y" и вместо y может быть уже что угодно. Спасибо, братюнь.
>>1449754>define (test a b c) (y) >- означает "я определяю функцию "test" со значениями a b c способом y" и вместо y может быть уже что угодно. Сорян, но нет. Во-первых, не "со значениями", а "с аргументами". Во-вторых, то, что ты написал, это(define (test a b c) (y))с учётом того, что "способом y" означает "вызвать функцию `y` без аргументов и вернуть её результат".Не за что, обращайся, если что.
Пизда, как же сложно его решать, пиздец. Примерно по 2 задачи в день получается, с учетом того, что еще и работаю.Если таки прорешать всю книгу, что это даст? Достигну просветления, стану сверхпрограммистом или что?
>>1450155>Примерно по 2 задачиТы погоди, там еще будут задачи над которыми можешь на несколько дней зависнуть.
>>1404382 (OP)Ускоряет ли лисп скорость/качество разработки? Пишу для себя хуйню на node.js, есть вариант поставить clojurescript.
>>1450468clojurescript - для браузеровон в сравнении с реактом не ускорит, т.к. в нем лишь обертки + дебаг не слишком удобенесли замена ноды, то clojure просто, а она уже на jvm работает.говорят, строк кода выходит меньше и типа за счет этого проще
>>1450468Ну, если ты пишешь хуйню, то лисп может очень сильно ускорить этот процесс.И резко повысить качество хуйни.Есть даже шанс получить в результате не простую, а ёбаную хуйню.>>1450509>говорят, строк кода выходит меньше и типа за счет этого прощеКак-то толсто выходит.Хотя, это же лиспотред.
(define (cont-frac n d k) (if (= k 1) 0 (/(n k) (+ (d k) (cont-frac n d (- k 1))))))как эта хуйня работает?ротебал этот лисп до него у меня не было такого чтоб я писал код и не понимал как он работает. Сука я это почти наугад писал ебаны врот
>>1452576(n k) и (d k) - вызовы функций n и d с аргументом k.Если к=1, то верни 0. Иначе n(k) / (d(k) + cont-frac(n, d, k-1)). Так понятнее?
>>1453231Зачем ты берешься за программирование, если не можешь расставить запятые?Твой вопрос сложнее понять, чем код, который ты привел
Накатил префэс и дальше не читал, ибо нахуй не надоБлять какие-то абсракции, эстетика погромирования нахуй, живые организмы и пирамиды... пизздос какойта чё за ебанаш писал всё это?Вернулся к КерРитчи - лучшей хрестоматии для современного программиста
>>1453231Вчитайся в условие задачи. Там цепная дробь. Распиши на бумаге, что будет скажем для k=2, k=3 и поймешь, почему там возвращается 0.
(cond ( (and (< a b) (< a c)) (define x a) ) ( (and (< b a) (< b c)) (define x b) ) ( (and (< c a) (< c b)) (define x c) ) (else (define x 0) ) )define: found a definition that is not at the top levelЧто плохого в объявление в бранче? Почему это говно мамонта ругается на меня?
>>1453566(define x (cond ( (and (< a b) (< a c)) a ) ( (and (< b a) (< b c)) b ) ( (and (< c a) (< c b)) c ) (else 0 ) )) Сорян, разобрался но всеравно хуита какаято
>>1453566>Что плохого в объявление в бранче? Почему это говно мамонта ругается на меня? Откуда вы вообще такие беретесь.Половина треда вопросов по задачам уровня средней школы, один не осилил функцию в две строки, еще один возвращает определение переменной в функции, еще и в ветвлении, лолТы в плюсах и джавах тоже после return объявляешь переменные?Весь тред хуйни из первой главы, какой же пиздец
>>1453570Я же извинился что тебе ещё нужно?>объявляешь переменные?А предположим, я имел в виду присвоение? Ведь в контексте лиспа это разве не одно и тоже?
>>1453574>Я же извинилсяЯ уже после увидел>А предположим, я имел в виду присвоение? Ведь в контексте лиспа это разве не одно и тоже?Я даже хз, что на это ответитьМало того, что объявляя переменную в операторе ветвления ты неявно подразумеваешь, что ее вообще может не существовать, так она еще и не будет доступна вне cond, потому что есть такая вещь как область видимостиНу и третье: функция в лиспе должна возвращать какое-то значение, define не возвращает ничего - он связывает какое-то значение с каким-то именемИ это справедливо что для этого говна мамонта, что для любого другого яп высокого уровня
>>1453542блин эта процедура работает не так как надо по крайней мере, для других задач мне пришлось другую написать потому что эта давала неверный результат, ну или я где-то наконясячил, но когда переписал эту процедуру всё заработало . Но почему то даёт верный результат в данном упражнении. Больше всего меня добило что ответ не зависит от того будет там 0 или мамка вот этого токсика >>1453416>>1453570
>>1447593Он конечно долбоёб-толстяк, но и ты тоже даун с аргументацией "а чего добился ты" заметь прямая цитата. Вы друг другу подходите.>>1439569Каждой задаче свой язык. Зачем применять схему "где-то в реальности", если она уже занимает свою нишу как учебный язык? Вот и я не знаю.
>>1458733Ты же понимаешь, что не все, что стоящее становится популярным. Как и не все, что популярное - офигенное.Причем в любой сфере. Программирование - не исключение.
Лиспобояре, помогите разобраться с аппликативным порядком. Если его суть в том, что сначала вычисляются аргументы функции, а потом уже вызывается сама функция, то понятно, почему виснет пример с рекурсивным вызовом (p). Но совершенно непонятно, почему в обоих моих примерах не вычисляется деление на ноль.
>>1460305> Но совершенно непонятно, почему в обоих моих примерах не вычисляется деление на ноль.c чего ты взял, что оно не вычисляется? Оно вычисляется, просто интерпретатор которым ты пользуешься скорее всего не кидает ошибку при делении на ноль, я думаю, что в y просто лежит +бесконечность. Хотя конечно стоит заметить, что в дефолтной реализации схемы от мита при делении на ноль кидалось исключение.
>>1404382 (OP)До чего же интересно решать, наконец дошел до 2й главы, блин как жаль, что работы нет на лиспоподобных языках.
>>1458733Каждой задаче свой язык. Зачем применять схему "где-то в реальности", если она уже занимает свою нишу как учебный язык? Вот и я не знаю.
Ведь достаточно просто ограничиваться фреймворком и функциональщиной.Эту хуйню придумали шизойды, которым просто кодинг уже не упарывает. Миру нужны решения, а не этот книжный онанизм.Я все)
>>1463886>(define make-point cons)Ты через минуту после того как ошибку словил бежишь на двачах спрашивать?
>>1405373ООП -- это надстройка над императивщиной, и иначе ее воспринимать не стоит. Вот взять, например, плюсы.Что можно сделать в плюсах, чего нельзя сделать в си? Методы? Есть функции на указатели. Наследование? Можно засунуть тип A в структуру B, это почти что наследование. Инкапсуляция -- всего лишь защита от дурака, которая не работает, потому что язык слабо типизированный (хотя это конкретно проблема плюсов, а не ООП).Полиморфизм -- не уникальная для ООП фича, но это единственное, что фундаментально отличает ООП от ИП.Так что мой безусловно дилетантский совет -- относись ко всему, кроме полиморфизма, как к синтаксическому сахару над ИП, это сильно упростит тебе понимание ООП.
>>1466555Это как раз проявления полиморфизма в ООП. Я не говорил, что в Си можно запилить полиморфизм.
>>1466548>Что можно сделать в плюсах, чего нельзя сделать в си?Блядь, но это же какой-то позор...А что можно сделать в плюсах, чего нельзя сделать в ебаном автокоде?Бери прям в экзешник в 16ричном коде хуячь.Охуеть, с такими мощными аргументами еще и не стесняются с умным видом на двач писать.
>>1466566Да так то ничего, просто плюсы это набор костылей над байтоебством, которые вместо того, чтобы решать проблемы байтоебов, создают еще больше проблем.А если серьезно, это была просто неудачная формулировка, если бы ты дочитал мое сообщение, ты бы понял, что я не считаю, что ИП может заменить все фичи ООП. Не все, но многие.
>>1466548>Что можно сделать в плюсах, чего нельзя сделать в си? RAII-контейнеры, рекурсивные шаблоны. Твое самое большое заблуждение, что ты считаешь кресты ОО-языком. А кресты переросли ООП примерно тогда, когда в них добавили STL, автор которой противник ООП. Т.е. в начале 90-х.>Инкапсуляция -- всего лишь защита от дурака, которая не работает, потому что язык слабо типизированный Инкапсуляция делается на си элементарно, более того, она есть в стандартной библиотеке. Структура FILE существует, но у тебя к ней нет доступа, потому что экспортируется она только в виде указателя и доступна в виде "методов" с "конструктором" fopen.Другой вопрос, что это приводит к тому, что без обязательной аллокации в куче ты хуй что инкапсулируешь, это тебе не private в хедере написать.>потому что язык слабо типизированный Щито.>Полиморфизм -- не уникальная для ООП фича, но это единственное, что фундаментально отличает ООП от ИП.Если отвечать в твоем стиле (когда ты хуйню методом десятка костылей называешь "нууу, можно зделоть"), то полиморфизм на си делается подобным же образом.Другой вопрос, что с подобным петушением ты помощи от системы типов не дождешься, поэтому это и не ООП.>>1466575>Да так то ничего, просто плюсы это набор костылей над байтоебством, которые вместо того, чтобы решать проблемы байтоебов, создают еще больше проблем.Это от си была куча проблем, включая buffer overflow и format strings в любом сетевом приложении в нулевых.
катитесь :Зhttps://2ch.hk/pr/res/1466889.htmlhttps://2ch.hk/pr/res/1466889.htmlhttps://2ch.hk/pr/res/1466889.html